Skip to content

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 str structure
  • 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).