mirror of
https://github.com/nim-lang/Nim.git
synced 2026-06-06 03:44:14 +00:00
Clarify JS cstring len (#14184)
This commit is contained in:
@@ -82,7 +82,7 @@ available. This includes:
|
||||
* proper 64 bit integer arithmetic
|
||||
|
||||
To compensate, the standard library has modules `catered to the JS backend
|
||||
<https://nim-lang.org/docs/lib.html#pure-libraries-modules-for-js-backend>`_
|
||||
<lib.html#pure-libraries-modules-for-js-backend>`_
|
||||
and more support will come in the future (for instance, Node.js bindings
|
||||
to get OS info).
|
||||
|
||||
|
||||
@@ -69,7 +69,7 @@ proc cmpIgnoreStyle*(a, b: cstring): int {.noSideEffect,
|
||||
## | > 0 if a > b
|
||||
##
|
||||
## Not supported for JS backend, use `strutils.cmpIgnoreStyle
|
||||
## <https://nim-lang.org/docs/strutils.html#cmpIgnoreStyle%2Cstring%2Cstring>`_ instead.
|
||||
## <strutils.html#cmpIgnoreStyle%2Cstring%2Cstring>`_ instead.
|
||||
var i = 0
|
||||
var j = 0
|
||||
while true:
|
||||
@@ -91,7 +91,7 @@ proc cmpIgnoreCase*(a, b: cstring): int {.noSideEffect,
|
||||
## | > 0 if a > b
|
||||
##
|
||||
## Not supported for JS backend, use `strutils.cmpIgnoreCase
|
||||
## <https://nim-lang.org/docs/strutils.html#cmpIgnoreCase%2Cstring%2Cstring>`_ instead.
|
||||
## <strutils.html#cmpIgnoreCase%2Cstring%2Cstring>`_ instead.
|
||||
var i = 0
|
||||
while true:
|
||||
var aa = toLowerAscii(a[i])
|
||||
|
||||
@@ -692,6 +692,11 @@ proc len*(x: string): int {.magic: "LengthStr", noSideEffect.}
|
||||
proc len*(x: cstring): int {.magic: "LengthStr", noSideEffect.}
|
||||
## Returns the length of a compatible string. This is sometimes
|
||||
## an O(n) operation.
|
||||
##
|
||||
## **Note:** On the JS backend this currently counts UTF-16 code points
|
||||
## instead of bytes at runtime (not at compile time). For now, if you
|
||||
## need the byte length of the UTF-8 encoding, convert to string with
|
||||
## `$` first then call `len`.
|
||||
##
|
||||
## .. code-block:: Nim
|
||||
## var str: cstring = "Hello world!"
|
||||
@@ -2137,16 +2142,12 @@ when notJSnotNims:
|
||||
|
||||
when not defined(js):
|
||||
proc cmp(x, y: string): int =
|
||||
when defined(nimscript):
|
||||
when nimvm:
|
||||
if x < y: result = -1
|
||||
elif x > y: result = 1
|
||||
else: result = 0
|
||||
else:
|
||||
when nimvm:
|
||||
if x < y: result = -1
|
||||
elif x > y: result = 1
|
||||
else: result = 0
|
||||
else:
|
||||
when not defined(nimscript): # avoid semantic checking
|
||||
let minlen = min(x.len, y.len)
|
||||
result = int(nimCmpMem(x.cstring, y.cstring, cast[csize_t](minlen)))
|
||||
if result == 0:
|
||||
|
||||
Reference in New Issue
Block a user