Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
tostr.h File Reference
#include "tag.h"

Go to the source code of this file.

Macros

#define CRI_VALUE_ESCAPE(T, X)   X
 
#define CRI_USER_TOSTR(Tag, Var)   CRI_USER_TAG_ID(tostr, Tag)(&(Var))
 
#define CRI_ASSERT_UNPRINTABLE(Var)   "<unprintable>"
 
#define CRI_ASSERT_NAMESPACES   do {} while (0)
 
#define CRI_USER_TOSTR_ARR(Str, Arr, Tag)
 

Macro Definition Documentation

◆ CRI_ASSERT_NAMESPACES

#define CRI_ASSERT_NAMESPACES   do {} while (0)

Definition at line 289 of file tostr.h.

◆ CRI_ASSERT_UNPRINTABLE

#define CRI_ASSERT_UNPRINTABLE ( Var)    "<unprintable>"

Definition at line 288 of file tostr.h.

◆ CRI_USER_TOSTR

#define CRI_USER_TOSTR ( Tag,
Var )   CRI_USER_TAG_ID(tostr, Tag)(&(Var))

Definition at line 287 of file tostr.h.

◆ CRI_USER_TOSTR_ARR

#define CRI_USER_TOSTR_ARR ( Str,
Arr,
Tag )
Value:
do { \
size_t cri_off = 0; \
size_t cri_sz = 0; \
cri_fmt_bprintf(&(Str), &cri_off, &cri_sz, "(" \
CR_STR(CRI_ASSERT_TYPE_TAG(Tag)) "[%" CRI_PRIuSIZE "]) {\n", \
\
for (size_t cri_i = 0; cri_i < cri_size; ++cri_i) { \
char *cri_repr = CRI_USER_TAG_ID(tostr, Tag)(&(Arr)[cri_i]); \
char *cri_saveptr = NULL; \
char *cri_line = cri_strtok_r(cri_repr, "\n", &cri_saveptr); \
\
if (cri_line) { \
cri_fmt_bprintf(&(Str), &cri_off, &cri_sz, \
"\t[%" CRI_PRIuSIZE "] = %s", cri_i, cri_line); \
\
while ((cri_line = cri_strtok_r(NULL, "\n", &cri_saveptr))) { \
cri_fmt_bprintf(&(Str), &cri_off, &cri_sz, "\n\t%s", cri_line); \
} \
cri_fmt_bprintf(&(Str), &cri_off, &cri_sz, ",\n"); \
} \
cr_asprintf_free(cri_repr); \
} \
cri_fmt_bprintf(&(Str), &cri_off, &cri_sz, "}"); \
} while (0)
CR_API char * cri_strtok_r(char *str, const char *delim, char **saveptr)
#define CRI_PRIuSIZE
Definition common.h:99
#define NULL
Definition gmacros.h:924
#define CR_STR(...)
Definition preprocess.h:58
#define CRI_ASSERT_TYPE_TAG(Tag)
Definition tag.h:37
#define CRI_ASSERT_TYPE_TAG_ARRLEN(Tag)
Definition tag.h:45
#define CRI_USER_TAG_ID(Id, Tag)
Definition tag.h:40

Definition at line 291 of file tostr.h.

291# define CRI_USER_TOSTR_ARR(Str, Arr, Tag) \
292 do { \
293 size_t cri_off = 0; \
294 size_t cri_sz = 0; \
295 cri_fmt_bprintf(&(Str), &cri_off, &cri_sz, "(" \
296 CR_STR(CRI_ASSERT_TYPE_TAG(Tag)) "[%" CRI_PRIuSIZE "]) {\n", \
297 CRI_ASSERT_TYPE_TAG_ARRLEN(Tag)); \
298 \
299 for (size_t cri_i = 0; cri_i < cri_size; ++cri_i) { \
300 char *cri_repr = CRI_USER_TAG_ID(tostr, Tag)(&(Arr)[cri_i]); \
301 char *cri_saveptr = NULL; \
302 char *cri_line = cri_strtok_r(cri_repr, "\n", &cri_saveptr); \
303 \
304 if (cri_line) { \
305 cri_fmt_bprintf(&(Str), &cri_off, &cri_sz, \
306 "\t[%" CRI_PRIuSIZE "] = %s", cri_i, cri_line); \
307 \
308 while ((cri_line = cri_strtok_r(NULL, "\n", &cri_saveptr))) { \
309 cri_fmt_bprintf(&(Str), &cri_off, &cri_sz, "\n\t%s", cri_line); \
310 } \
311 cri_fmt_bprintf(&(Str), &cri_off, &cri_sz, ",\n"); \
312 } \
313 cr_asprintf_free(cri_repr); \
314 } \
315 cri_fmt_bprintf(&(Str), &cri_off, &cri_sz, "}"); \
316 } while (0)

◆ CRI_VALUE_ESCAPE

#define CRI_VALUE_ESCAPE ( T,
X )   X

Definition at line 286 of file tostr.h.