mirror of
https://git.sr.ht/~crc_/retroforth
synced 2024-11-16 19:48:56 +01:00
38cd29b8b2
FossilOrigin-Name: 498355a2edc0bc1a5d091583298bab8821a2df0bc217e90f9ab78925ce5dc0c4
38 lines
710 B
Forth
38 lines
710 B
Forth
# UTF-8 Strings
|
||
|
||
Strings in Retro have been C-style null terminated sequences of ASCII
|
||
characters. I'm seeking to change this as I'd like to support Unicode
|
||
(UTF-8) and to merge much of the string and array handling code.
|
||
|
||
This will be an ongoing process.
|
||
|
||
Temporary sigil.
|
||
|
||
~~~
|
||
:sigil:" (-a) a:from-string class:data ; immediate
|
||
~~~
|
||
|
||
Return the length (in utf8 characters or bytes) of a string.
|
||
|
||
~~~
|
||
:us:length (a-n) #0 swap [ #192 and #128 -eq? + ] a:for-each n:abs ;
|
||
:us:length/bytes (a-n) a:length ;
|
||
~~~
|
||
|
||
Fetch a character from a string.
|
||
|
||
~~~
|
||
~~~
|
||
|
||
Store a character into a string.
|
||
|
||
~~~
|
||
~~~
|
||
|
||
Tests.
|
||
|
||
```
|
||
"((V⍳V)=⍳⍴V)/V←,V us:length n:put nl
|
||
"((V⍳V)=⍳⍴V)/V←,V us:length/bytes n:put nl
|
||
```
|
||
|