Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/blenlib/intern/BLI_dynstr.c')
-rw-r--r--source/blender/blenlib/intern/BLI_dynstr.c404
1 files changed, 202 insertions, 202 deletions
diff --git a/source/blender/blenlib/intern/BLI_dynstr.c b/source/blender/blenlib/intern/BLI_dynstr.c
index ef45d7b2a47..c325c010330 100644
--- a/source/blender/blenlib/intern/BLI_dynstr.c
+++ b/source/blender/blenlib/intern/BLI_dynstr.c
@@ -22,7 +22,7 @@
* \ingroup bli
*/
-#include <stdlib.h> /* malloc */
+#include <stdlib.h> /* malloc */
#include <string.h>
#include "MEM_guardedalloc.h"
@@ -32,32 +32,32 @@
#include "BLI_dynstr.h"
#ifdef _WIN32
-#ifndef vsnprintf
-#define vsnprintf _vsnprintf
-#endif
+# ifndef vsnprintf
+# define vsnprintf _vsnprintf
+# endif
#endif
#ifndef va_copy
-# ifdef __va_copy
-# define va_copy(a, b) __va_copy(a, b)
-# else /* !__va_copy */
-# define va_copy(a, b) ((a) = (b))
-# endif /* __va_copy */
-#endif /* va_copy */
+# ifdef __va_copy
+# define va_copy(a, b) __va_copy(a, b)
+# else /* !__va_copy */
+# define va_copy(a, b) ((a) = (b))
+# endif /* __va_copy */
+#endif /* va_copy */
/***/
typedef struct DynStrElem DynStrElem;
struct DynStrElem {
- DynStrElem *next;
+ DynStrElem *next;
- char *str;
+ char *str;
};
struct DynStr {
- DynStrElem *elems, *last;
- int curlen;
- MemArena *memarena;
+ DynStrElem *elems, *last;
+ int curlen;
+ MemArena *memarena;
};
/***/
@@ -69,12 +69,12 @@ struct DynStr {
*/
DynStr *BLI_dynstr_new(void)
{
- DynStr *ds = MEM_mallocN(sizeof(*ds), "DynStr");
- ds->elems = ds->last = NULL;
- ds->curlen = 0;
- ds->memarena = NULL;
+ DynStr *ds = MEM_mallocN(sizeof(*ds), "DynStr");
+ ds->elems = ds->last = NULL;
+ ds->curlen = 0;
+ ds->memarena = NULL;
- return ds;
+ return ds;
}
/**
@@ -84,17 +84,17 @@ DynStr *BLI_dynstr_new(void)
*/
DynStr *BLI_dynstr_new_memarena(void)
{
- DynStr *ds = MEM_mallocN(sizeof(*ds), "DynStr");
- ds->elems = ds->last = NULL;
- ds->curlen = 0;
- ds->memarena = BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE, __func__);
+ DynStr *ds = MEM_mallocN(sizeof(*ds), "DynStr");
+ ds->elems = ds->last = NULL;
+ ds->curlen = 0;
+ ds->memarena = BLI_memarena_new(BLI_MEMARENA_STD_BUFSIZE, __func__);
- return ds;
+ return ds;
}
BLI_INLINE void *dynstr_alloc(DynStr *__restrict ds, size_t size)
{
- return ds->memarena ? BLI_memarena_alloc(ds->memarena, size) : malloc(size);
+ return ds->memarena ? BLI_memarena_alloc(ds->memarena, size) : malloc(size);
}
/**
@@ -105,21 +105,21 @@ BLI_INLINE void *dynstr_alloc(DynStr *__restrict ds, size_t size)
*/
void BLI_dynstr_append(DynStr *__restrict ds, const char *cstr)
{
- DynStrElem *dse = dynstr_alloc(ds, sizeof(*dse));
- int cstrlen = strlen(cstr);
+ DynStrElem *dse = dynstr_alloc(ds, sizeof(*dse));
+ int cstrlen = strlen(cstr);
- dse->str = dynstr_alloc(ds, cstrlen + 1);
- memcpy(dse->str, cstr, cstrlen + 1);
- dse->next = NULL;
+ dse->str = dynstr_alloc(ds, cstrlen + 1);
+ memcpy(dse->str, cstr, cstrlen + 1);
+ dse->next = NULL;
- if (!ds->last) {
- ds->last = ds->elems = dse;
- }
- else {
- ds->last = ds->last->next = dse;
- }
+ if (!ds->last) {
+ ds->last = ds->elems = dse;
+ }
+ else {
+ ds->last = ds->last->next = dse;
+ }
- ds->curlen += cstrlen;
+ ds->curlen += cstrlen;
}
/**
@@ -131,81 +131,81 @@ void BLI_dynstr_append(DynStr *__restrict ds, const char *cstr)
*/
void BLI_dynstr_nappend(DynStr *__restrict ds, const char *cstr, int len)
{
- DynStrElem *dse = dynstr_alloc(ds, sizeof(*dse));
- int cstrlen = BLI_strnlen(cstr, len);
-
- dse->str = dynstr_alloc(ds, cstrlen + 1);
- memcpy(dse->str, cstr, cstrlen);
- dse->str[cstrlen] = '\0';
- dse->next = NULL;
-
- if (!ds->last) {
- ds->last = ds->elems = dse;
- }
- else {
- ds->last = ds->last->next = dse;
- }
-
- ds->curlen += cstrlen;
+ DynStrElem *dse = dynstr_alloc(ds, sizeof(*dse));
+ int cstrlen = BLI_strnlen(cstr, len);
+
+ dse->str = dynstr_alloc(ds, cstrlen + 1);
+ memcpy(dse->str, cstr, cstrlen);
+ dse->str[cstrlen] = '\0';
+ dse->next = NULL;
+
+ if (!ds->last) {
+ ds->last = ds->elems = dse;
+ }
+ else {
+ ds->last = ds->last->next = dse;
+ }
+
+ ds->curlen += cstrlen;
}
void BLI_dynstr_vappendf(DynStr *__restrict ds, const char *__restrict format, va_list args)
{
- char *message, fixedmessage[256];
- int len = sizeof(fixedmessage);
- const int maxlen = 65536;
- int retval;
-
- while (1) {
- va_list args_cpy;
- if (len == sizeof(fixedmessage)) {
- message = fixedmessage;
- }
- else {
- message = MEM_callocN(sizeof(char) * len, "BLI_dynstr_appendf");
- }
-
- /* cant reuse the same args, so work on a copy */
- va_copy(args_cpy, args);
- retval = vsnprintf(message, len, format, args_cpy);
- va_end(args_cpy);
-
- if (retval == -1) {
- /* -1 means not enough space, but on windows it may also mean
- * there is a formatting error, so we impose a maximum length */
- if (message != fixedmessage) {
- MEM_freeN(message);
- }
- message = NULL;
-
- len *= 2;
- if (len > maxlen) {
- fprintf(stderr, "BLI_dynstr_append text too long or format error.\n");
- break;
- }
- }
- else if (retval >= len) {
- /* in C99 the actual length required is returned */
- if (message != fixedmessage) {
- MEM_freeN(message);
- }
- message = NULL;
-
- /* retval doesn't include \0 terminator */
- len = retval + 1;
- }
- else {
- break;
- }
- }
-
- if (message) {
- BLI_dynstr_append(ds, message);
-
- if (message != fixedmessage) {
- MEM_freeN(message);
- }
- }
+ char *message, fixedmessage[256];
+ int len = sizeof(fixedmessage);
+ const int maxlen = 65536;
+ int retval;
+
+ while (1) {
+ va_list args_cpy;
+ if (len == sizeof(fixedmessage)) {
+ message = fixedmessage;
+ }
+ else {
+ message = MEM_callocN(sizeof(char) * len, "BLI_dynstr_appendf");
+ }
+
+ /* cant reuse the same args, so work on a copy */
+ va_copy(args_cpy, args);
+ retval = vsnprintf(message, len, format, args_cpy);
+ va_end(args_cpy);
+
+ if (retval == -1) {
+ /* -1 means not enough space, but on windows it may also mean
+ * there is a formatting error, so we impose a maximum length */
+ if (message != fixedmessage) {
+ MEM_freeN(message);
+ }
+ message = NULL;
+
+ len *= 2;
+ if (len > maxlen) {
+ fprintf(stderr, "BLI_dynstr_append text too long or format error.\n");
+ break;
+ }
+ }
+ else if (retval >= len) {
+ /* in C99 the actual length required is returned */
+ if (message != fixedmessage) {
+ MEM_freeN(message);
+ }
+ message = NULL;
+
+ /* retval doesn't include \0 terminator */
+ len = retval + 1;
+ }
+ else {
+ break;
+ }
+ }
+
+ if (message) {
+ BLI_dynstr_append(ds, message);
+
+ if (message != fixedmessage) {
+ MEM_freeN(message);
+ }
+ }
}
/**
@@ -216,64 +216,64 @@ void BLI_dynstr_vappendf(DynStr *__restrict ds, const char *__restrict format, v
*/
void BLI_dynstr_appendf(DynStr *__restrict ds, const char *__restrict format, ...)
{
- va_list args;
- char *message, fixedmessage[256];
- int len = sizeof(fixedmessage);
- const int maxlen = 65536;
- int retval;
-
- /* note that it's tempting to just call BLI_dynstr_vappendf here
- * and avoid code duplication, that crashes on some system because
- * va_start/va_end have to be called for each vsnprintf call */
-
- while (1) {
- if (len == sizeof(fixedmessage)) {
- message = fixedmessage;
- }
- else {
- message = MEM_callocN(sizeof(char) * (len), "BLI_dynstr_appendf");
- }
-
- va_start(args, format);
- retval = vsnprintf(message, len, format, args);
- va_end(args);
-
- if (retval == -1) {
- /* -1 means not enough space, but on windows it may also mean
- * there is a formatting error, so we impose a maximum length */
- if (message != fixedmessage) {
- MEM_freeN(message);
- }
- message = NULL;
-
- len *= 2;
- if (len > maxlen) {
- fprintf(stderr, "BLI_dynstr_append text too long or format error.\n");
- break;
- }
- }
- else if (retval >= len) {
- /* in C99 the actual length required is returned */
- if (message != fixedmessage) {
- MEM_freeN(message);
- }
- message = NULL;
-
- /* retval doesn't include \0 terminator */
- len = retval + 1;
- }
- else {
- break;
- }
- }
-
- if (message) {
- BLI_dynstr_append(ds, message);
-
- if (message != fixedmessage) {
- MEM_freeN(message);
- }
- }
+ va_list args;
+ char *message, fixedmessage[256];
+ int len = sizeof(fixedmessage);
+ const int maxlen = 65536;
+ int retval;
+
+ /* note that it's tempting to just call BLI_dynstr_vappendf here
+ * and avoid code duplication, that crashes on some system because
+ * va_start/va_end have to be called for each vsnprintf call */
+
+ while (1) {
+ if (len == sizeof(fixedmessage)) {
+ message = fixedmessage;
+ }
+ else {
+ message = MEM_callocN(sizeof(char) * (len), "BLI_dynstr_appendf");
+ }
+
+ va_start(args, format);
+ retval = vsnprintf(message, len, format, args);
+ va_end(args);
+
+ if (retval == -1) {
+ /* -1 means not enough space, but on windows it may also mean
+ * there is a formatting error, so we impose a maximum length */
+ if (message != fixedmessage) {
+ MEM_freeN(message);
+ }
+ message = NULL;
+
+ len *= 2;
+ if (len > maxlen) {
+ fprintf(stderr, "BLI_dynstr_append text too long or format error.\n");
+ break;
+ }
+ }
+ else if (retval >= len) {
+ /* in C99 the actual length required is returned */
+ if (message != fixedmessage) {
+ MEM_freeN(message);
+ }
+ message = NULL;
+
+ /* retval doesn't include \0 terminator */
+ len = retval + 1;
+ }
+ else {
+ break;
+ }
+ }
+
+ if (message) {
+ BLI_dynstr_append(ds, message);
+
+ if (message != fixedmessage) {
+ MEM_freeN(message);
+ }
+ }
}
/**
@@ -284,7 +284,7 @@ void BLI_dynstr_appendf(DynStr *__restrict ds, const char *__restrict format, ..
*/
int BLI_dynstr_get_len(DynStr *ds)
{
- return ds->curlen;
+ return ds->curlen;
}
/**
@@ -297,18 +297,18 @@ int BLI_dynstr_get_len(DynStr *ds)
*/
void BLI_dynstr_get_cstring_ex(DynStr *__restrict ds, char *__restrict rets)
{
- char *s;
- DynStrElem *dse;
+ char *s;
+ DynStrElem *dse;
- for (s = rets, dse = ds->elems; dse; dse = dse->next) {
- int slen = strlen(dse->str);
+ for (s = rets, dse = ds->elems; dse; dse = dse->next) {
+ int slen = strlen(dse->str);
- memcpy(s, dse->str, slen);
+ memcpy(s, dse->str, slen);
- s += slen;
- }
- BLI_assert((s - rets) == ds->curlen);
- rets[ds->curlen] = '\0';
+ s += slen;
+ }
+ BLI_assert((s - rets) == ds->curlen);
+ rets[ds->curlen] = '\0';
}
/**
@@ -321,9 +321,9 @@ void BLI_dynstr_get_cstring_ex(DynStr *__restrict ds, char *__restrict rets)
*/
char *BLI_dynstr_get_cstring(DynStr *ds)
{
- char *rets = MEM_mallocN(ds->curlen + 1, "dynstr_cstring");
- BLI_dynstr_get_cstring_ex(ds, rets);
- return rets;
+ char *rets = MEM_mallocN(ds->curlen + 1, "dynstr_cstring");
+ BLI_dynstr_get_cstring_ex(ds, rets);
+ return rets;
}
/**
@@ -333,20 +333,20 @@ char *BLI_dynstr_get_cstring(DynStr *ds)
*/
void BLI_dynstr_clear(DynStr *ds)
{
- if (ds->memarena) {
- BLI_memarena_clear(ds->memarena);
- }
- else {
- for (DynStrElem *dse_next, *dse = ds->elems; dse; dse = dse_next) {
- dse_next = dse->next;
-
- free(dse->str);
- free(dse);
- }
- }
-
- ds->elems = ds->last = NULL;
- ds->curlen = 0;
+ if (ds->memarena) {
+ BLI_memarena_clear(ds->memarena);
+ }
+ else {
+ for (DynStrElem *dse_next, *dse = ds->elems; dse; dse = dse_next) {
+ dse_next = dse->next;
+
+ free(dse->str);
+ free(dse);
+ }
+ }
+
+ ds->elems = ds->last = NULL;
+ ds->curlen = 0;
}
/**
@@ -356,12 +356,12 @@ void BLI_dynstr_clear(DynStr *ds)
*/
void BLI_dynstr_free(DynStr *ds)
{
- if (ds->memarena) {
- BLI_memarena_free(ds->memarena);
- }
- else {
- BLI_dynstr_clear(ds);
- }
-
- MEM_freeN(ds);
+ if (ds->memarena) {
+ BLI_memarena_free(ds->memarena);
+ }
+ else {
+ BLI_dynstr_clear(ds);
+ }
+
+ MEM_freeN(ds);
}