21 # define vsnprintf _vsnprintf
27 # define va_copy(a, b) __va_copy(a, b)
29 # define va_copy(a, b) ((a) = (b))
78 int cstrlen = strlen(cstr);
81 memcpy(dse->
str, cstr, cstrlen + 1);
85 ds->last = ds->elems = dse;
88 ds->last = ds->last->
next = dse;
91 ds->curlen += cstrlen;
100 memcpy(dse->
str, cstr, cstrlen);
101 dse->
str[cstrlen] =
'\0';
105 ds->last = ds->elems = dse;
108 ds->last = ds->last->
next = dse;
111 ds->curlen += cstrlen;
116 char *message, fixedmessage[256];
117 int len =
sizeof(fixedmessage);
118 const int maxlen = 65536;
123 if (
len ==
sizeof(fixedmessage)) {
124 message = fixedmessage;
132 retval = vsnprintf(message,
len,
format, args_cpy);
138 if (message != fixedmessage) {
145 fprintf(stderr,
"BLI_dynstr_append text too long or format error.\n");
149 else if (retval >=
len) {
151 if (message != fixedmessage) {
167 if (message != fixedmessage) {
176 char *message, fixedmessage[256];
177 int len =
sizeof(fixedmessage);
178 const int maxlen = 65536;
186 if (
len ==
sizeof(fixedmessage)) {
187 message = fixedmessage;
190 message =
MEM_callocN(
sizeof(
char) * (
len),
"BLI_dynstr_appendf");
194 retval = vsnprintf(message,
len,
format, args);
200 if (message != fixedmessage) {
207 fprintf(stderr,
"BLI_dynstr_append text too long or format error.\n");
211 else if (retval >=
len) {
213 if (message != fixedmessage) {
229 if (message != fixedmessage) {
245 for (s = rets, dse = ds->elems; dse; dse = dse->
next) {
246 int slen = strlen(dse->
str);
248 memcpy(s, dse->
str, slen);
253 rets[ds->curlen] =
'\0';
270 dse_next = dse->
next;
void BLI_dynstr_appendf(DynStr *__restrict ds, const char *__restrict format,...)
void BLI_dynstr_free(DynStr *ds)
void BLI_dynstr_nappend(DynStr *__restrict ds, const char *cstr, int len)
void BLI_dynstr_get_cstring_ex(const DynStr *__restrict ds, char *__restrict rets)
void BLI_dynstr_clear(DynStr *ds)
BLI_INLINE void * dynstr_alloc(DynStr *__restrict ds, size_t size)
void BLI_dynstr_append(DynStr *__restrict ds, const char *cstr)
char * BLI_dynstr_get_cstring(const DynStr *ds)
void BLI_dynstr_vappendf(DynStr *__restrict ds, const char *__restrict format, va_list args)
DynStr * BLI_dynstr_new_memarena(void)
int BLI_dynstr_get_len(const DynStr *ds)
DynStr * BLI_dynstr_new(void)
A dynamically sized string ADT.
void BLI_kdtree_nd_() free(KDTree *tree)
void BLI_memarena_free(struct MemArena *ma) ATTR_NONNULL(1)
struct MemArena * BLI_memarena_new(size_t bufsize, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_RETURNS_NONNULL ATTR_NONNULL(2) ATTR_MALLOC
#define BLI_MEMARENA_STD_BUFSIZE
void * BLI_memarena_alloc(struct MemArena *ma, size_t size) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(1) ATTR_MALLOC ATTR_ALLOC_SIZE(2)
void void BLI_memarena_clear(MemArena *ma) ATTR_NONNULL(1)
size_t BLI_strnlen(const char *str, size_t maxlen) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL()
Read Guarded memory(de)allocation.
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
void(* MEM_freeN)(void *vmemh)
void *(* MEM_callocN)(size_t len, const char *str)
void *(* MEM_mallocN)(size_t len, const char *str)