diff options
author | Araq <rumpf_a@web.de> | 2016-01-18 10:55:23 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2016-01-18 10:55:23 +0100 |
commit | 55c1f3d30ce5d2ab8745ab2b98a38a605c690a54 (patch) | |
tree | d729e8c0d7c929208c84450ad4a449e3eb32491e /lib/pure/parseutils.nim | |
parent | 68cbb4d2b4bc408e13fc27e6d054e3a0bb98bfb4 (diff) | |
parent | 2309975f782bf59b240e3874d5c31b4b299eca5d (diff) | |
download | Nim-55c1f3d30ce5d2ab8745ab2b98a38a605c690a54.tar.gz |
Merge branch 'devel' of https://github.com/nim-lang/Nim into devel
Diffstat (limited to 'lib/pure/parseutils.nim')
-rw-r--r-- | lib/pure/parseutils.nim | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/lib/pure/parseutils.nim b/lib/pure/parseutils.nim index b3708838a..698bde42a 100644 --- a/lib/pure/parseutils.nim +++ b/lib/pure/parseutils.nim @@ -25,7 +25,7 @@ const proc toLower(c: char): char {.inline.} = result = if c in {'A'..'Z'}: chr(ord(c)-ord('A')+ord('a')) else: c -proc parseHex*(s: string, number: var int, start = 0): int {. +proc parseHex*(s: string, number: var int, start = 0; maxLen = 0): int {. rtl, extern: "npuParseHex", noSideEffect.} = ## Parses a hexadecimal number and stores its value in ``number``. ## @@ -45,11 +45,14 @@ proc parseHex*(s: string, number: var int, start = 0): int {. ## discard parseHex("0x38", value) ## assert value == -200 ## + ## If 'maxLen==0' the length of the hexadecimal number has no + ## upper bound. Not more than ```maxLen`` characters are parsed. var i = start var foundDigit = false if s[i] == '0' and (s[i+1] == 'x' or s[i+1] == 'X'): inc(i, 2) elif s[i] == '#': inc(i) - while true: + let last = if maxLen == 0: s.len else: i+maxLen + while i < last: case s[i] of '_': discard of '0'..'9': |