retroforth/future/utf8.retro
crc 38cd29b8b2 start working on the utf8 strings vocabulary
FossilOrigin-Name: 498355a2edc0bc1a5d091583298bab8821a2df0bc217e90f9ab78925ce5dc0c4
2021-08-26 12:25:19 +00:00

38 lines
710 B
Forth
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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.
```
"((VV)=V)/V←,V us:length n:put nl
"((VV)=V)/V←,V us:length/bytes n:put nl
```