Řetězce¤
Řetězce v SP-Langu používají kódování UTF-8.
Reprezentace typu řetězce je str
.
Reprezentace řetězce¤
Řetězec je reprezentován P-Stringem příslušným záznamem s následujícími položkami:
- Délka řetězce v bajtech jako 64bitové číslo bez znaménka.
- Pointer na začátek řetězcových dat.
Řetězec je také pole bajtů
Hodnota str
je binárně kompatibilní s [ui8]
, seznamem ui8
.
Kompatibilita s řetězci ukončenými nulou¤
Hodnota str
NESMÍ končit znakem \0
(NULL).
Dodatečné \0
může být umístěno hned za údaji řetězce, ale nesmí být zahrnuto do délky řetězce.
Zajišťuje přímou kompatibilitu se systémy NULL-terminated string.
Není však implicitně zaručena pomocí str
.
NULL
ukončený řetězec lze "převést" na str
vytvořením nového str
pomocí strlen()
a skutečného ukazatele na data řetězce.
Alternativně lze vytvořit i úplnou kopii.
Data řetězce¤
Data řetězce je paměťový prostor, který obsahuje skutečnou hodnotu řetězce.
Řetězcová data mohou být:
- umístit hned za strukturu
str
- zcela samostatný řetězcový buffer ("string view")
Řetězcová data mohou být sdílena s mnoha strukturami str
, včetně odkazů na části řetězcových dat (tzv. podřetězce).