Strings¤
Strings in SP-Lang uses UTF-8 encoding.
The string type representation is str.
String representation¤
String is represented by a P-String respective by the record with following items:
- Length of the string in bytes as 64bit unsigned number.
- Pointer to the start of a string data.
String is also an array of bytes
Value of str is binary compatible with [ui8], a list of ui8.
Compatibility with Null-terminated strings¤
Value of str MUST NOT end with \0 (NULL).
The additional \0 can be placed just after string data but not included in a string length.
It provides direct compatibility with NULL-terminated string systems.
It is however not guaranteed by str implicitly.
NULL terminated string can be "converted" into str by creating new str using strlen() and actual pointer to a string data.
Alternativelly, the complete copy can be created as well.
String data¤
String data is the memory space that contains the actual string value.
The string data could be:
- placed just after
strstructure - completely independent string buffer (“string view”)
The string data may be shared with many str structures, including references to the portions of the string data (aka substrings).