codgen refactoring: prepare for alternative string/seq implementations

This commit is contained in:
Andreas Rumpf 2018-06-29 11:34:39 +02:00
commit b5a96d28c7
5 changed files with 29 additions and 21 deletions

View file

@ -94,8 +94,8 @@ proc mnewString(len: int): NimString {.compilerProc.} =
result.len = len
proc copyStrLast(s: NimString, start, last: int): NimString {.compilerProc.} =
var start = max(start, 0)
var len = min(last, s.len-1) - start + 1
let start = max(start, 0)
let len = min(last, s.len-1) - start + 1
if len > 0:
result = rawNewStringNoInit(len)
result.len = len
@ -104,6 +104,10 @@ proc copyStrLast(s: NimString, start, last: int): NimString {.compilerProc.} =
else:
result = rawNewString(len)
proc nimToCStringConv(s: NimString): cstring {.compilerProc, inline.} =
if s == nil or s.len == 0: result = cstring""
else: result = cstring(addr s.data)
proc copyStr(s: NimString, start: int): NimString {.compilerProc.} =
result = copyStrLast(s, start, s.len-1)