37 # define vsnprintf _vsnprintf
43 # define va_copy(a, b) __va_copy(a, b)
45 # define va_copy(a, b) ((a) = (b))
110 int cstrlen = strlen(cstr);
113 memcpy(dse->
str, cstr, cstrlen + 1);
117 ds->last = ds->elems = dse;
120 ds->last = ds->last->
next = dse;
123 ds->curlen += cstrlen;
139 memcpy(dse->
str, cstr, cstrlen);
140 dse->
str[cstrlen] =
'\0';
144 ds->last = ds->elems = dse;
147 ds->last = ds->last->
next = dse;
150 ds->curlen += cstrlen;
155 char *message, fixedmessage[256];
156 int len =
sizeof(fixedmessage);
157 const int maxlen = 65536;
162 if (
len ==
sizeof(fixedmessage)) {
163 message = fixedmessage;
171 retval = vsnprintf(message,
len,
format, args_cpy);
177 if (message != fixedmessage) {
184 fprintf(stderr,
"BLI_dynstr_append text too long or format error.\n");
188 else if (retval >=
len) {
190 if (message != fixedmessage) {
206 if (message != fixedmessage) {
221 char *message, fixedmessage[256];
222 int len =
sizeof(fixedmessage);
223 const int maxlen = 65536;
231 if (
len ==
sizeof(fixedmessage)) {
232 message = fixedmessage;
235 message =
MEM_callocN(
sizeof(
char) * (
len),
"BLI_dynstr_appendf");
239 retval = vsnprintf(message,
len,
format, args);
245 if (message != fixedmessage) {
252 fprintf(stderr,
"BLI_dynstr_append text too long or format error.\n");
256 else if (retval >=
len) {
258 if (message != fixedmessage) {
274 if (message != fixedmessage) {
304 for (s = rets, dse = ds->elems; dse; dse = dse->
next) {
305 int slen = strlen(dse->
str);
307 memcpy(s, dse->
str, slen);
312 rets[ds->curlen] =
'\0';
342 dse_next = dse->
next;
void BLI_dynstr_appendf(DynStr *__restrict ds, const char *__restrict format,...)
void BLI_dynstr_get_cstring_ex(DynStr *__restrict ds, char *__restrict rets)
void BLI_dynstr_free(DynStr *ds)
void BLI_dynstr_nappend(DynStr *__restrict ds, const char *cstr, int len)
char * BLI_dynstr_get_cstring(DynStr *ds)
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)
int BLI_dynstr_get_len(DynStr *ds)
void BLI_dynstr_vappendf(DynStr *__restrict ds, const char *__restrict format, va_list args)
DynStr * BLI_dynstr_new_memarena(void)
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)
#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 BLI_memarena_clear(MemArena *ma) ATTR_NONNULL(1)
struct MemArena * BLI_memarena_new(const size_t bufsize, const char *name) ATTR_WARN_UNUSED_RESULT ATTR_NONNULL(2) ATTR_MALLOC
size_t BLI_strnlen(const char *str, const 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)