Mercurial > repos > rhope
diff string.rhope @ 105:43cc42df26cc
Various compiler improvements
author | Mike Pavone <pavone@retrodev.com> |
---|---|
date | Tue, 24 Aug 2010 23:22:17 -0400 |
parents | f51c4c17457c |
children | 439db471f595 |
line wrap: on
line diff
--- a/string.rhope Wed Aug 11 03:13:28 2010 -0400 +++ b/string.rhope Tue Aug 24 23:22:17 2010 -0400 @@ -543,7 +543,7 @@ { If[count] { - out <- [string]_Flatten[[dest]Append[ [[string]Buffer >>]Index[offset] ], [offset]+[1i32], [count]-[1i32]] + out <- [_internal_array_copychunk[[string]Buffer >>, offset, dest, [dest]Length, count]]Length <<[[[dest]Length]+[count]] }{ out <- dest } @@ -561,8 +561,13 @@ Flatten@String Slice[string:out] { - out <- [[Build[String()]]Buffer <<[ [[string]Source >>]_Flatten[Array[], [string]Offset >>, [string]ByteLen >>] ] - ]Length <<[[string]Length >>] + If[[string]ByteLen >>] + { + out <- [[Build[String()]]Buffer <<[ [[string]Source >>]_Flatten[_internal_array_allocnaked[[string]ByteLen >>, UInt8()], [string]Offset >>, [string]ByteLen >>] ] + ]Length <<[[string]Length >>] + }{ + out <- "" + } } Print@String Slice[string:out] @@ -665,12 +670,17 @@ Flatten@String Cat[string:out] { - out <- [[Build[String()] - ]Buffer << [ - [[string]Right >>]_Flatten[ - [[string]Left >>]_Flatten[Array[], 0i32, [[string]Left >>]Byte Length], - 0i32, [[string]Right >>]Byte Length]] - ]Length << [[string]Length >>] + If[[string]ByteLen >>] + { + out <- [[Build[String()] + ]Buffer << [ + [[string]Right >>]_Flatten[ + [[string]Left >>]_Flatten[_internal_array_allocnaked[[string]ByteLen >>, UInt8()], 0i32, [[string]Left >>]Byte Length], + 0i32, [[string]Right >>]Byte Length]] + ]Length << [[string]Length >>] + }{ + out <- "" + } } Print@String Cat[string:out]