250#define strNConcat(o, ...) _strNConcat(o, count_macro_args(__VA_ARGS__), (strref[]) { __VA_ARGS__ })
251bool _strNConcat(_Inout_
strhandle o,
int n, _In_ strref* _Nonnull stra);
277#define strNConcatC(o, ...) \
278 _strNConcatC(o, count_macro_args(__VA_ARGS__), (string*[]) { __VA_ARGS__ })
617int32
strSplit(_Inout_ sa_string* _Nonnull out, _In_opt_ strref s, _In_opt_ strref sep,
bool empty);
640int32
strSplitAny(_Inout_ sa_string* _Nonnull out, _In_opt_ strref s, _In_opt_ strref chars,
663int32
strSplitMax(_Inout_ sa_string* _Nonnull out, _In_opt_ strref s, _In_opt_ strref sep,
664 bool empty, int32 maxparts);
686int32
strSplitAnyMax(_Inout_ sa_string* _Nonnull out, _In_opt_ strref s, _In_opt_ strref chars,
687 bool empty, int32 maxparts);
713bool strSplitNext(_In_opt_ strref s, _Inout_ int32* _Nonnull pos, _In_opt_ strref sep,
736bool strSplitNextAny(_In_opt_ strref s, _Inout_ int32* _Nonnull pos, _In_opt_ strref chars,
string * strhandle
Pointer to a string variable.
int32 strSplitAny(sa_string *out, strref s, strref chars, bool empty)
bool strReplaceChar(strhandle o, strref s, char from, char to)
bool strAppend(strhandle io, strref s)
bool strAppendBytes(strhandle io, _In_reads_bytes_opt_(sz) const void *buf, uint32 sz)
uint8 strGetChar(strref str, int32 i)
bool strSubStrI(strhandle io, int32 b, int32 e)
bool strRTrim(strhandle o, strref s, strref chars)
bool strConcat(strhandle o, strref s1, strref s2)
bool strSplitNextAny(strref s, int32 *pos, strref chars, strhandle out)
bool strFillChar(strhandle o, uint8 ch, uint32 n)
int32 strSplit(sa_string *out, strref s, strref sep, bool empty)
bool strReplace(strhandle o, strref s, strref find, strref repl, int32 max)
bool strTrim(strhandle o, strref s, strref chars)
bool strConcatC(strhandle o, strhandle sc1, strhandle sc2)
bool strReplaceChari(strhandle o, strref s, char from, char to)
bool strErase(strhandle o, strref s, int32 b, int32 e)
bool strSubStr(strhandle o, strref s, int32 b, int32 e)
void strLower(strhandle io)
bool strPrepend(strref s, strhandle io)
bool strSplitNext(strref s, int32 *pos, strref sep, strhandle out)
int32 strSplitMax(sa_string *out, strref s, strref sep, bool empty, int32 maxparts)
bool strInsert(strhandle o, strref s, int32 off, strref ins)
bool strReplacei(strhandle o, strref s, strref find, strref repl, int32 max)
void strUpper(strhandle io)
bool strRepeat(strhandle o, strref s, uint32 n)
bool strJoin(strhandle out, sa_string arr, strref sep)
bool strSubStrC(strhandle o, strhandle sc, int32 b, int32 e)
void strAppendChar(strhandle io, uint8 ch)
void strSetChar(strhandle str, int32 i, uint8 ch)
int32 strSplitAnyMax(sa_string *out, strref s, strref chars, bool empty, int32 maxparts)
bool strLTrim(strhandle o, strref s, strref chars)
Dynamic arrays with type-safe generic programming.
Core string types and fundamental operations.