10typedef struct str_ref {
17typedef struct str_empty_data {
24extern str_empty_data _emptyStringData;
25extern strref emptyString;
42typedef struct str_ref* _Nullable
string;
58typedef const struct str_ref* _Nullable
strref;
80#define strInit(o) *(o) = NULL
210_When_(s == NULL, _Post_equal_to_(0)) _Pure uint32
strLen(_In_opt_ strref s);
243_When_(s == NULL, _Post_equal_to_(true)) _Pure
bool strEmpty(_In_opt_ strref s);
284_Ret_valid_ const
char* _Nonnull
strC(_In_opt_ strref s);
355uint32
strCopyOut(_In_opt_ strref s, uint32 off, _Out_writes_bytes_(bufsz) uint8* _Nonnull buf,
377uint32
strCopyRaw(_In_opt_ strref s, uint32 off, _Out_writes_bytes_(maxlen) uint8* _Nonnull buf,
380_Pure uint32 _strStackAllocSize(uint32 maxlen);
381void _strInitStack(_Inout_ _Deref_pre_valid_ _Deref_post_opt_valid_
strhandle ps, uint32 maxlen);
411#define strTemp(ps, maxlen) \
412 (*(ps)) = (string)stackAlloc(_strStackAllocSize(maxlen)); \
413 _strInitStack(ps, maxlen);
void strSetLen(strhandle ps, uint32 len)
string * strhandle
Pointer to a string variable.
void strReset(strhandle o, uint32 sizehint)
struct str_ref * string
Opaque handle to a string object.
const char * strC(strref s)
void strDestroy(strhandle ps)
uint32 strCopyOut(strref s, uint32 off, uint8 *buf, uint32 bufsz)
const struct str_ref * strref
Borrowed reference to a string.
uint8 * strBuffer(strhandle ps, uint32 minsz)
void strDup(strhandle o, strref s)
void strClear(strhandle ps)
const char * strPC(strhandle ps)
uint32 strCopyRaw(strref s, uint32 off, uint8 *buf, uint32 maxlen)
void strCopy(strhandle o, strref s)
bool strFromBytes(strhandle o, _In_reads_bytes_opt_(sz) const void *buf, uint32 sz)
String literal prefix macros and compile-time constant declarations.