docs/Writerside/topics/string.h.md

Fri, 24 Jan 2025 21:12:09 +0100

author
Mike Becker <universe@uap-core.de>
date
Fri, 24 Jan 2025 21:12:09 +0100
branch
docs/3.1
changeset 1143
0559812df10c
parent 1142
9437530176bc
child 1146
151c057faf7c
permissions
-rw-r--r--

assign proper names to the documentation topics

relates to #451

# String

UCX strings come in two variants: immutable (`cxstring`) and mutable (`cxmutstr`).
The functions of UCX are designed to work with immutable strings by default but in situations where it is necessary,
the API also provides alternative functions that work directly with mutable strings.
Functions that change a string in-place are, of course, only accepting mutable strings.

When you are using UCX functions, or defining your own functions, you are sometimes facing the "problem",
that the function only accepts arguments of type `cxstring` but you only have a `cxmutstr` at hand.
In this case you _should not_ introduce a wrapper function that accepts the `cxmutstr`,
but instead you should use the `cx_strcast()` function to cast the argument to the correct type.

In general, UCX strings are **not** necessarily zero-terminated. If a function guarantees to return zero-terminated
string, it is explicitly mentioned in the documentation of the respective function.
As a rule of thumb, you _should not_ pass the strings of a UCX string structure to another API without explicitly
ensuring that the string is zero-terminated.

## Undocumented Symbols (TODO)
### cx_mutstr
### cx_mutstrn
### cx_str
### cx_strcasecmp
### cx_strcasecmp_p
### cx_strcaseprefix
### cx_strcasesuffix
### cx_strcat_ma
### cx_strchr
### cx_strchr_m
### cx_strcmp
### cx_strcmp_p
### cx_strdup_a_
### cx_strfree
### cx_strfree_a
### cx_strlen
### cx_strlower
### cx_strn
### cx_strprefix
### cx_strrchr
### cx_strrchr_m
### cx_strreplacen_a
### cx_strsplit
### cx_strsplit_a
### cx_strsplit_m
### cx_strsplit_ma
### cx_strstr
### cx_strstr_m
### cx_strstr_sbo_size
### cx_strsubs
### cx_strsubsl
### cx_strsubsl_m
### cx_strsubs_m
### cx_strsuffix
### cx_strtod_lc_
### cx_strtof_lc_
### cx_strtoi16_lc_
### cx_strtoi32_lc_
### cx_strtoi64_lc_
### cx_strtoi8_lc_
### cx_strtoi_lc_
### cx_strtok_
### cx_strtok_delim
### cx_strtok_next
### cx_strtok_next_m
### cx_strtol_lc_
### cx_strtoll_lc_
### cx_strtos_lc_
### cx_strtou16_lc_
### cx_strtou32_lc_
### cx_strtou64_lc_
### cx_strtou8_lc_
### cx_strtou_lc_
### cx_strtoul_lc_
### cx_strtoull_lc_
### cx_strtous_lc_
### cx_strtouz_lc_
### cx_strtoz_lc_
### cx_strtrim
### cx_strtrim_m
### cx_strupper

mercurial