|
|
|
|
@ -37,13 +37,13 @@ TYPED_GQUEUE(str, str)
|
|
|
|
|
#define STR_NULL ((str) { NULL, 0 })
|
|
|
|
|
#define STR_EMPTY ((str) { "", 0 })
|
|
|
|
|
#define STR_CONST(s) ((str) { s, sizeof(s)-1 })
|
|
|
|
|
#define STR(s) ((str) { (char *) (s), (s) ? strlen(s) : 0 })
|
|
|
|
|
#define STR(s) ({ const char *__s = (s); (str) { (char *) (__s), (__s) ? strlen(__s) : 0 }; })
|
|
|
|
|
#define STR_PTR(s) (&((str) { (char *) (s), (s) ? strlen(s) : 0 }))
|
|
|
|
|
#define STR_NC(s) ((str) { (char *) (s), strlen(s) })
|
|
|
|
|
#define STR_GS(s) ((str) { (s)->str, (s)->len })
|
|
|
|
|
#define STR_LEN(s, len) ((str) { (char *) (s), len })
|
|
|
|
|
#define STR_LEN_ASSERT(s, len) ({ assert(sizeof(s) >= len); (str) { (char *) (s), len }; })
|
|
|
|
|
#define STR_DUP(s) ({ size_t __l = strlen(s); (str) { __g_memdup(s, __l + 1), __l }; })
|
|
|
|
|
#define STR_DUP(s) ({ const char *__s = (s); size_t __l = strlen(__s); (str) { __g_memdup(__s, __l + 1), __l }; })
|
|
|
|
|
#define STR_CONST_BUF(buf) ((str) { (char *) &buf, sizeof(buf) })
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|