X_STRBUILDER_VERSION_MAJOR
#define X_STRBUILDER_VERSION_MAJOR 1
STDX - Dynamic String Builder for C Part of the STDX General Purpose C Library by marciovmf License: MIT https://github.com/marciovmf/stdx
This header provides a simple interface for constructing strings efficiently: - Dynamic growth as data is appended - Append strings, characters, substrings, and formatted text - Convert to null-terminated C string - Clear or destroy the builder when done
To customize how this module allocates memory, define
X_STRBUILDER_ALLOC / X_STRBUILDER_REALLOC / X_STRBUILDER_FREE before including.
To compile the implementation define X_IMPL_STRBUILDER
in one source file before including this header.
#define X_STRBUILDER_VERSION_MAJOR 1
#define X_STRBUILDER_VERSION_MINOR 0
#define X_STRBUILDER_VERSION_PATCH 0
#define X_STRBUILDER_VERSION(X_STRBUILDER_VERSION_MAJOR *10000+X_STRBUILDER_VERSION_MINOR *100+X_STRBUILDER_VERSION_PATCH)
#define STRBUILDER_STACK_BUFFER_SIZE 255
typedef struct XStrBuilder{
char *data;
size_t capacity;
size_t length;
}XStrBuilder;
typedef struct XWStrBuilder{
wchar_t *data;
size_t capacity;
size_t length;
}XWStrBuilder;
#define x_strbuilder_append_cstr(sb, str) x_strbuilder_append((sb), (str))
Creates a XStrBuilder
XStrBuilder * x_strbuilder_create();
(none)Appends a C-string to the builder
void x_strbuilder_append(
XStrBuilder *sb,
const char *str
);
XStrBuilder *sbconst char *strAppends one character
void x_strbuilder_append_char(
XStrBuilder *sb,
char c
);
XStrBuilder *sbchar cAppends formatted text (printf-style)
void x_strbuilder_append_format(
XStrBuilder *sb,
const char *format,
...
);
XStrBuilder *sbconst char *formatAppends a substring
void x_strbuilder_append_substring(
XStrBuilder *sb,
const char *start,
size_t length
);
XStrBuilder *sbconst char *startsize_t lengthReturns internal buffer pointer
char * x_strbuilder_to_string(const XStrBuilder *sb);
const XStrBuilder *sbPointer to internal NUL-terminated buffer (invalidated by later appends)
Destroys the builder and frees memory
void x_strbuilder_destroy(XStrBuilder *sb);
XStrBuilder *sbClears the builder content
void x_strbuilder_clear(XStrBuilder *sb);
XStrBuilder *sbReturns current length in bytes
size_t x_strbuilder_length(XStrBuilder *sb);
XStrBuilder *sbLength in bytes (excluding the NUL)
Appends a UTF-8 substring by code-point range
void x_strbuilder_append_utf8_substring(
XStrBuilder *sb,
const char *utf8,
size_t start_cp,
size_t len_cp
);
XStrBuilder *sbconst char *utf8size_t start_cpsize_t len_cpCounts UTF-8 code points contained in the builder
size_t x_strbuilder_utf8_charlen(const XStrBuilder *sb);
const XStrBuilder *sbNumber of Unicode code points
Creates a wide-character string builder param (none)
XWStrBuilder * x_wstrbuilder_create();
Pointer to builder or NULL on failure
Appends a wide C-string
void x_wstrbuilder_append(
XWStrBuilder *sb,
const wchar_t *str
);
XWStrBuilder *sbconst wchar_t *strAppends one wide character
void x_wstrbuilder_append_char(
XWStrBuilder *sb,
wchar_t c
);
XWStrBuilder *sbwchar_t cAppends formatted wide text (printf-style)
void x_wstrbuilder_append_format(
XWStrBuilder *sb,
const wchar_t *format,
...
);
XWStrBuilder *sbconst wchar_t *formatClears the wide builder content
void x_wstrbuilder_clear(XWStrBuilder *sb);
XWStrBuilder *sbDestroys the wide builder and frees memory
void x_wstrbuilder_destroy(XWStrBuilder *sb);
XWStrBuilder *sbReturns internal wide buffer pointer param sb Builder to query return Pointer to internal NUL-terminated wide buffer (invalidated by later appends)
wchar_t * x_wstrbuilder_to_string(const XWStrBuilder *sb);
Returns current length in wide characters param sb Builder to query return Number of wchar_t (excluding the NUL)
size_t x_wstrbuilder_length(const XWStrBuilder *sb);
#define X_STRBUILDER_ALLOC(sz) malloc(sz)
#define X_STRBUILDER_REALLOC(p, sz) realloc((p), (sz))
#define X_STRBUILDER_FREE(p) free(p)
X_STRBUILDER_API void x_wstrbuilder_grow(
XWStrBuilder *sb,
size_t needed_len
);