Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
tag.h File Reference
#include <string.h>
#include <wchar.h>
#include <float.h>
#include "memory.h"

Go to the source code of this file.

Macros

#define CRI_ASSERT_SWALLOW_KEYWORD(Tag)   CRI_IF_DEFINED(CRI_ASSERT_TEST_KW_ ## Tag, CRI_ASSERT_SWALLOW_KW_ ## Tag, , Tag, )
 
#define CRI_ASSERT_TEST_KW_struct   ,
 
#define CRI_ASSERT_SWALLOW_KW_struct
 
#define CRI_ASSERT_TEST_KW_class   ,
 
#define CRI_ASSERT_SWALLOW_KW_class
 
#define CRI_ASSERT_TEST_KW_enum   ,
 
#define CRI_ASSERT_SWALLOW_KW_enum
 
#define CRI_ASSERT_TEST_KW_union   ,
 
#define CRI_ASSERT_SWALLOW_KW_union
 
#define CRI_ASSERT_TYPE_TAG(Tag)   CR_EXPAND(CRI_ASSERT_TYPE_TAG_(Tag))
 
#define CRI_ASSERT_TYPE_TAG_(Tag)   CRI_IF_DEFINED_NODEFER(CRI_ASSERT_TEST_TAG_ ## Tag, CR_VA_HEAD(CRI_ASSERT_TYPE_TAG_ ## Tag), , CRI_ASSERT_TYPE_TAG_UNKNOWN, (Tag))
 
#define CRI_USER_TAG_ID(Id, Tag)   CR_CONCAT(CR_CONCAT(cr_user_, CRI_ASSERT_TYPE_TAG_ID(Tag)), _ ## Id)
 
#define CRI_ASSERT_TYPE_TAG_ID(Tag)   CR_EXPAND(CRI_ASSERT_TYPE_TAG_ID_(Tag))
 
#define CRI_ASSERT_TYPE_TAG_ID_(Tag)   CRI_IF_DEFINED_NODEFER(CRI_ASSERT_TEST_TAG_ ## Tag, CR_VA_HEAD(CRI_ASSERT_TYPE_TAG_ID_ ## Tag), , CRI_ASSERT_SWALLOW_KEYWORD, (Tag))
 
#define CRI_ASSERT_TYPE_TAG_ARRLEN(Tag)   CR_EXPAND(CRI_ASSERT_TYPE_TAG_ARRLEN_(Tag))
 
#define CRI_ASSERT_TYPE_TAG_ARRLEN_(Tag)
 
#define CRI_ASSERT_TYPE_TAG_UNKNOWN(Tag)   COMPILE_ERROR(Unknown tag #Tag.)
 
#define CRI_ASSERT_TEST_TAG_i8   ,
 
#define CRI_ASSERT_TEST_TAGC_i8()   ,
 
#define CRI_ASSERT_TYPE_TAG_i8   int8_t,
 
#define CRI_ASSERT_TYPE_TAG_ID_i8   i8,
 
#define CRI_ASSERT_TEST_TAG_i16   ,
 
#define CRI_ASSERT_TEST_TAGC_i16()   ,
 
#define CRI_ASSERT_TYPE_TAG_i16   int16_t,
 
#define CRI_ASSERT_TYPE_TAG_ID_i16   i16,
 
#define CRI_ASSERT_TEST_TAG_i32   ,
 
#define CRI_ASSERT_TEST_TAGC_i32()   ,
 
#define CRI_ASSERT_TYPE_TAG_i32   int32_t,
 
#define CRI_ASSERT_TYPE_TAG_ID_i32   i32,
 
#define CRI_ASSERT_TEST_TAG_i64   ,
 
#define CRI_ASSERT_TEST_TAGC_i64()   ,
 
#define CRI_ASSERT_TYPE_TAG_i64   int64_t,
 
#define CRI_ASSERT_TYPE_TAG_ID_i64   i64,
 
#define CRI_ASSERT_TEST_TAG_u8   ,
 
#define CRI_ASSERT_TEST_TAGC_u8()   ,
 
#define CRI_ASSERT_TYPE_TAG_u8   uint8_t,
 
#define CRI_ASSERT_TYPE_TAG_ID_u8   u8,
 
#define CRI_ASSERT_TEST_TAG_u16   ,
 
#define CRI_ASSERT_TEST_TAGC_u16()   ,
 
#define CRI_ASSERT_TYPE_TAG_u16   uint16_t,
 
#define CRI_ASSERT_TYPE_TAG_ID_u16   u16,
 
#define CRI_ASSERT_TEST_TAG_u32   ,
 
#define CRI_ASSERT_TEST_TAGC_u32()   ,
 
#define CRI_ASSERT_TYPE_TAG_u32   uint32_t,
 
#define CRI_ASSERT_TYPE_TAG_ID_u32   u32,
 
#define CRI_ASSERT_TEST_TAG_u64   ,
 
#define CRI_ASSERT_TEST_TAGC_u64()   ,
 
#define CRI_ASSERT_TYPE_TAG_u64   uint64_t,
 
#define CRI_ASSERT_TYPE_TAG_ID_u64   u64,
 
#define CRI_ASSERT_TEST_TAG_chr   ,
 
#define CRI_ASSERT_TEST_TAGC_chr()   ,
 
#define CRI_ASSERT_TYPE_TAG_chr   char,
 
#define CRI_ASSERT_TYPE_TAG_ID_chr   chr,
 
#define CRI_ASSERT_TEST_TAG_int   ,
 
#define CRI_ASSERT_TEST_TAGC_int()   ,
 
#define CRI_ASSERT_TYPE_TAG_int   int,
 
#define CRI_ASSERT_TYPE_TAG_ID_int   int,
 
#define CRI_ASSERT_TEST_TAG_uint   ,
 
#define CRI_ASSERT_TEST_TAGC_uint()   ,
 
#define CRI_ASSERT_TYPE_TAG_uint   unsigned int,
 
#define CRI_ASSERT_TYPE_TAG_ID_uint   uint,
 
#define CRI_ASSERT_TEST_TAG_long   ,
 
#define CRI_ASSERT_TEST_TAGC_long()   ,
 
#define CRI_ASSERT_TYPE_TAG_long   long,
 
#define CRI_ASSERT_TYPE_TAG_ID_long   long,
 
#define CRI_ASSERT_TEST_TAG_ulong   ,
 
#define CRI_ASSERT_TEST_TAGC_ulong()   ,
 
#define CRI_ASSERT_TYPE_TAG_ulong   unsigned long,
 
#define CRI_ASSERT_TYPE_TAG_ID_ulong   ulong,
 
#define CRI_ASSERT_TEST_TAG_llong   ,
 
#define CRI_ASSERT_TEST_TAGC_llong()   ,
 
#define CRI_ASSERT_TYPE_TAG_llong   long long,
 
#define CRI_ASSERT_TYPE_TAG_ID_llong   llong,
 
#define CRI_ASSERT_TEST_TAG_ullong   ,
 
#define CRI_ASSERT_TEST_TAGC_ullong()   ,
 
#define CRI_ASSERT_TYPE_TAG_ullong   unsigned long long,
 
#define CRI_ASSERT_TYPE_TAG_ID_ullong   ullong,
 
#define CRI_ASSERT_TEST_TAG_ptr   ,
 
#define CRI_ASSERT_TEST_TAGC_ptr()   ,
 
#define CRI_ASSERT_TYPE_TAG_ptr   void *,
 
#define CRI_ASSERT_TYPE_TAG_ID_ptr   ptr,
 
#define CRI_ASSERT_TEST_TAG_str   ,
 
#define CRI_ASSERT_TEST_TAGC_str()   ,
 
#define CRI_ASSERT_TYPE_TAG_str   char *,
 
#define CRI_ASSERT_TYPE_TAG_ID_str   str,
 
#define CRI_ASSERT_TEST_TAG_wcs   ,
 
#define CRI_ASSERT_TEST_TAGC_wcs()   ,
 
#define CRI_ASSERT_TYPE_TAG_wcs   wchar_t *,
 
#define CRI_ASSERT_TYPE_TAG_ID_wcs   wcs,
 
#define CRI_ASSERT_TEST_TAG_tcs   ,
 
#define CRI_ASSERT_TEST_TAGC_tcs()   ,
 
#define CRI_ASSERT_TYPE_TAG_tcs   _TCHAR *,
 
#define CRI_ASSERT_TYPE_TAG_ID_tcs   tcs,
 
#define CRI_ASSERT_TEST_TAG_flt   ,
 
#define CRI_ASSERT_TEST_TAGC_flt()   ,
 
#define CRI_ASSERT_TYPE_TAG_flt   float,
 
#define CRI_ASSERT_TYPE_TAG_ID_flt   flt,
 
#define CRI_ASSERT_TEST_TAG_dbl   ,
 
#define CRI_ASSERT_TEST_TAGC_dbl()   ,
 
#define CRI_ASSERT_TYPE_TAG_dbl   double,
 
#define CRI_ASSERT_TYPE_TAG_ID_dbl   dbl,
 
#define CRI_ASSERT_TEST_TAG_ldbl   ,
 
#define CRI_ASSERT_TEST_TAGC_ldbl()   ,
 
#define CRI_ASSERT_TYPE_TAG_ldbl   long double,
 
#define CRI_ASSERT_TYPE_TAG_ID_ldbl   ldbl,
 
#define CRI_ASSERT_TEST_TAG_sz   ,
 
#define CRI_ASSERT_TEST_TAGC_sz()   ,
 
#define CRI_ASSERT_TYPE_TAG_sz   size_t,
 
#define CRI_ASSERT_TYPE_TAG_ID_sz   sz,
 
#define CRI_ASSERT_TEST_TAG_iptr   ,
 
#define CRI_ASSERT_TEST_TAGC_iptr()   ,
 
#define CRI_ASSERT_TYPE_TAG_iptr   intptr_t,
 
#define CRI_ASSERT_TYPE_TAG_ID_iptr   iptr,
 
#define CRI_ASSERT_TEST_TAG_uptr   ,
 
#define CRI_ASSERT_TEST_TAGC_uptr()   ,
 
#define CRI_ASSERT_TYPE_TAG_uptr   uintptr_t,
 
#define CRI_ASSERT_TYPE_TAG_ID_uptr   uptr,
 
#define CRI_ASSERT_TEST_TAG_type   ,
 
#define CRI_ASSERT_TEST_TAGC_type(x)   CRI_ASSERT_TEST_TAGC_type_
 
#define CRI_ASSERT_TEST_TAGC_type_()   ,
 
#define CRI_ASSERT_TYPE_TAG_type(T)   T,
 
#define CRI_ASSERT_TYPE_TAG_ID_type(T)   CRI_ASSERT_SWALLOW_KEYWORD(T),
 
#define CRI_ASSERT_DECLARE_NATIVE_CMP_FN(Tag)
 
#define CRI_ASSERT_DECLARE_NATIVE_FN(Tag, Fmt)
 
#define CRI_ASSERT_DECLARE_STR_FN(Tag, Prefix, Fmt)
 
#define CRI_PRIxPTR   PRIxPTR
 
#define CRI_FLT_DIG   "9"
 
#define CRI_DBL_DIG   "17"
 
#define CRI_LDBL_DIG   "21"
 

Functions

static char * CRI_USER_TAG_ID (tostr, iptr)(intptr_t *e)
 
static char * CRI_USER_TAG_ID (tostr, uptr)(uintptr_t *e)
 
static char * CRI_USER_TAG_ID (tostr, ptr)(void **e)
 

Macro Definition Documentation

◆ CRI_ASSERT_DECLARE_NATIVE_CMP_FN

#define CRI_ASSERT_DECLARE_NATIVE_CMP_FN ( Tag)
Value:
static inline int CRI_USER_TAG_ID(lt, Tag)( \
CRI_ASSERT_TYPE_TAG(Tag) *actual, \
CRI_ASSERT_TYPE_TAG(Tag) *expected) \
{ \
return *actual < *expected; \
} \
static inline int CRI_USER_TAG_ID(eq, Tag)( \
CRI_ASSERT_TYPE_TAG(Tag) *actual, \
CRI_ASSERT_TYPE_TAG(Tag) *expected) \
{ \
return *actual == *expected; \
} \
static inline int CRI_USER_TAG_ID(zero, Tag)( \
CRI_ASSERT_TYPE_TAG(Tag) *val) \
{ \
return !*val; \
}
#define CRI_USER_TAG_ID(Id, Tag)
Definition tag.h:40

Definition at line 196 of file tag.h.

196#define CRI_ASSERT_DECLARE_NATIVE_CMP_FN(Tag) \
197 static inline int CRI_USER_TAG_ID(lt, Tag)( \
198 CRI_ASSERT_TYPE_TAG(Tag) *actual, \
199 CRI_ASSERT_TYPE_TAG(Tag) *expected) \
200 { \
201 return *actual < *expected; \
202 } \
203 static inline int CRI_USER_TAG_ID(eq, Tag)( \
204 CRI_ASSERT_TYPE_TAG(Tag) *actual, \
205 CRI_ASSERT_TYPE_TAG(Tag) *expected) \
206 { \
207 return *actual == *expected; \
208 } \
209 static inline int CRI_USER_TAG_ID(zero, Tag)( \
210 CRI_ASSERT_TYPE_TAG(Tag) *val) \
211 { \
212 return !*val; \
213 }

◆ CRI_ASSERT_DECLARE_NATIVE_FN

#define CRI_ASSERT_DECLARE_NATIVE_FN ( Tag,
Fmt )
Value:
static inline char *CRI_USER_TAG_ID(tostr, Tag)( \
CRI_ASSERT_TYPE_TAG(Tag) *e) \
{ \
char *str = NULL; \
cr_asprintf(&str, "%" Fmt, *e); \
return str; \
}
#define NULL
Definition gmacros.h:924
#define CRI_ASSERT_DECLARE_NATIVE_CMP_FN(Tag)
Definition tag.h:196

Definition at line 215 of file tag.h.

215#define CRI_ASSERT_DECLARE_NATIVE_FN(Tag, Fmt) \
216 CRI_ASSERT_DECLARE_NATIVE_CMP_FN(Tag) \
217 static inline char *CRI_USER_TAG_ID(tostr, Tag)( \
218 CRI_ASSERT_TYPE_TAG(Tag) *e) \
219 { \
220 char *str = NULL; \
221 cr_asprintf(&str, "%" Fmt, *e); \
222 return str; \
223 }

◆ CRI_ASSERT_DECLARE_STR_FN

#define CRI_ASSERT_DECLARE_STR_FN ( Tag,
Prefix,
Fmt )
Value:
CR_API int CRI_USER_TAG_ID(lt, Tag)( \
CRI_ASSERT_TYPE_TAG(Tag) *actual, \
CRI_ASSERT_TYPE_TAG(Tag) *expected); \
CR_API int CRI_USER_TAG_ID(eq, Tag)( \
CRI_ASSERT_TYPE_TAG(Tag) *actual, \
CRI_ASSERT_TYPE_TAG(Tag) *expected); \
CR_API int CRI_USER_TAG_ID(zero, Tag)(CRI_ASSERT_TYPE_TAG(Tag) *val); \
CR_API char *CRI_USER_TAG_ID(tostr, Tag)(CRI_ASSERT_TYPE_TAG(Tag) *e);
#define CR_API
Definition common.h:128
#define CRI_ASSERT_TYPE_TAG(Tag)
Definition tag.h:37

Definition at line 225 of file tag.h.

225#define CRI_ASSERT_DECLARE_STR_FN(Tag, Prefix, Fmt) \
226 CR_API int CRI_USER_TAG_ID(lt, Tag)( \
227 CRI_ASSERT_TYPE_TAG(Tag) *actual, \
228 CRI_ASSERT_TYPE_TAG(Tag) *expected); \
229 CR_API int CRI_USER_TAG_ID(eq, Tag)( \
230 CRI_ASSERT_TYPE_TAG(Tag) *actual, \
231 CRI_ASSERT_TYPE_TAG(Tag) *expected); \
232 CR_API int CRI_USER_TAG_ID(zero, Tag)(CRI_ASSERT_TYPE_TAG(Tag) *val); \
233 CR_API char *CRI_USER_TAG_ID(tostr, Tag)(CRI_ASSERT_TYPE_TAG(Tag) *e);

◆ CRI_ASSERT_SWALLOW_KEYWORD

#define CRI_ASSERT_SWALLOW_KEYWORD ( Tag)    CRI_IF_DEFINED(CRI_ASSERT_TEST_KW_ ## Tag, CRI_ASSERT_SWALLOW_KW_ ## Tag, , Tag, )

Definition at line 27 of file tag.h.

◆ CRI_ASSERT_SWALLOW_KW_class

#define CRI_ASSERT_SWALLOW_KW_class

Definition at line 31 of file tag.h.

◆ CRI_ASSERT_SWALLOW_KW_enum

#define CRI_ASSERT_SWALLOW_KW_enum

Definition at line 33 of file tag.h.

◆ CRI_ASSERT_SWALLOW_KW_struct

#define CRI_ASSERT_SWALLOW_KW_struct

Definition at line 29 of file tag.h.

◆ CRI_ASSERT_SWALLOW_KW_union

#define CRI_ASSERT_SWALLOW_KW_union

Definition at line 35 of file tag.h.

◆ CRI_ASSERT_TEST_KW_class

#define CRI_ASSERT_TEST_KW_class   ,

Definition at line 30 of file tag.h.

◆ CRI_ASSERT_TEST_KW_enum

#define CRI_ASSERT_TEST_KW_enum   ,

Definition at line 32 of file tag.h.

◆ CRI_ASSERT_TEST_KW_struct

#define CRI_ASSERT_TEST_KW_struct   ,

Definition at line 28 of file tag.h.

◆ CRI_ASSERT_TEST_KW_union

#define CRI_ASSERT_TEST_KW_union   ,

Definition at line 34 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_chr

#define CRI_ASSERT_TEST_TAG_chr   ,

Definition at line 93 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_dbl

#define CRI_ASSERT_TEST_TAG_dbl   ,

Definition at line 161 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_flt

#define CRI_ASSERT_TEST_TAG_flt   ,

Definition at line 156 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_i16

#define CRI_ASSERT_TEST_TAG_i16   ,

Definition at line 58 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_i32

#define CRI_ASSERT_TEST_TAG_i32   ,

Definition at line 63 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_i64

#define CRI_ASSERT_TEST_TAG_i64   ,

Definition at line 68 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_i8

#define CRI_ASSERT_TEST_TAG_i8   ,

Definition at line 53 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_int

#define CRI_ASSERT_TEST_TAG_int   ,

Definition at line 98 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_iptr

#define CRI_ASSERT_TEST_TAG_iptr   ,

Definition at line 180 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_ldbl

#define CRI_ASSERT_TEST_TAG_ldbl   ,

Definition at line 166 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_llong

#define CRI_ASSERT_TEST_TAG_llong   ,

Definition at line 118 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_long

#define CRI_ASSERT_TEST_TAG_long   ,

Definition at line 108 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_ptr

#define CRI_ASSERT_TEST_TAG_ptr   ,

Definition at line 128 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_str

#define CRI_ASSERT_TEST_TAG_str   ,

Definition at line 133 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_sz

#define CRI_ASSERT_TEST_TAG_sz   ,

Definition at line 175 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_tcs

#define CRI_ASSERT_TEST_TAG_tcs   ,

Definition at line 151 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_type

#define CRI_ASSERT_TEST_TAG_type   ,

Definition at line 190 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_u16

#define CRI_ASSERT_TEST_TAG_u16   ,

Definition at line 78 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_u32

#define CRI_ASSERT_TEST_TAG_u32   ,

Definition at line 83 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_u64

#define CRI_ASSERT_TEST_TAG_u64   ,

Definition at line 88 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_u8

#define CRI_ASSERT_TEST_TAG_u8   ,

Definition at line 73 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_uint

#define CRI_ASSERT_TEST_TAG_uint   ,

Definition at line 103 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_ullong

#define CRI_ASSERT_TEST_TAG_ullong   ,

Definition at line 123 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_ulong

#define CRI_ASSERT_TEST_TAG_ulong   ,

Definition at line 113 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_uptr

#define CRI_ASSERT_TEST_TAG_uptr   ,

Definition at line 185 of file tag.h.

◆ CRI_ASSERT_TEST_TAG_wcs

#define CRI_ASSERT_TEST_TAG_wcs   ,

Definition at line 142 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_chr

#define CRI_ASSERT_TEST_TAGC_chr ( )    ,

Definition at line 94 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_dbl

#define CRI_ASSERT_TEST_TAGC_dbl ( )    ,

Definition at line 162 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_flt

#define CRI_ASSERT_TEST_TAGC_flt ( )    ,

Definition at line 157 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_i16

#define CRI_ASSERT_TEST_TAGC_i16 ( )    ,

Definition at line 59 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_i32

#define CRI_ASSERT_TEST_TAGC_i32 ( )    ,

Definition at line 64 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_i64

#define CRI_ASSERT_TEST_TAGC_i64 ( )    ,

Definition at line 69 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_i8

#define CRI_ASSERT_TEST_TAGC_i8 ( )    ,

Definition at line 54 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_int

#define CRI_ASSERT_TEST_TAGC_int ( )    ,

Definition at line 99 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_iptr

#define CRI_ASSERT_TEST_TAGC_iptr ( )    ,

Definition at line 181 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_ldbl

#define CRI_ASSERT_TEST_TAGC_ldbl ( )    ,

Definition at line 167 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_llong

#define CRI_ASSERT_TEST_TAGC_llong ( )    ,

Definition at line 119 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_long

#define CRI_ASSERT_TEST_TAGC_long ( )    ,

Definition at line 109 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_ptr

#define CRI_ASSERT_TEST_TAGC_ptr ( )    ,

Definition at line 129 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_str

#define CRI_ASSERT_TEST_TAGC_str ( )    ,

Definition at line 134 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_sz

#define CRI_ASSERT_TEST_TAGC_sz ( )    ,

Definition at line 176 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_tcs

#define CRI_ASSERT_TEST_TAGC_tcs ( )    ,

Definition at line 152 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_type

#define CRI_ASSERT_TEST_TAGC_type ( x)    CRI_ASSERT_TEST_TAGC_type_

Definition at line 191 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_type_

#define CRI_ASSERT_TEST_TAGC_type_ ( )    ,

Definition at line 192 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_u16

#define CRI_ASSERT_TEST_TAGC_u16 ( )    ,

Definition at line 79 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_u32

#define CRI_ASSERT_TEST_TAGC_u32 ( )    ,

Definition at line 84 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_u64

#define CRI_ASSERT_TEST_TAGC_u64 ( )    ,

Definition at line 89 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_u8

#define CRI_ASSERT_TEST_TAGC_u8 ( )    ,

Definition at line 74 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_uint

#define CRI_ASSERT_TEST_TAGC_uint ( )    ,

Definition at line 104 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_ullong

#define CRI_ASSERT_TEST_TAGC_ullong ( )    ,

Definition at line 124 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_ulong

#define CRI_ASSERT_TEST_TAGC_ulong ( )    ,

Definition at line 114 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_uptr

#define CRI_ASSERT_TEST_TAGC_uptr ( )    ,

Definition at line 186 of file tag.h.

◆ CRI_ASSERT_TEST_TAGC_wcs

#define CRI_ASSERT_TEST_TAGC_wcs ( )    ,

Definition at line 143 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG

#define CRI_ASSERT_TYPE_TAG ( Tag)    CR_EXPAND(CRI_ASSERT_TYPE_TAG_(Tag))

Definition at line 37 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_

#define CRI_ASSERT_TYPE_TAG_ ( Tag)    CRI_IF_DEFINED_NODEFER(CRI_ASSERT_TEST_TAG_ ## Tag, CR_VA_HEAD(CRI_ASSERT_TYPE_TAG_ ## Tag), , CRI_ASSERT_TYPE_TAG_UNKNOWN, (Tag))

Definition at line 38 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ARRLEN

#define CRI_ASSERT_TYPE_TAG_ARRLEN ( Tag)    CR_EXPAND(CRI_ASSERT_TYPE_TAG_ARRLEN_(Tag))

Definition at line 45 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ARRLEN_

#define CRI_ASSERT_TYPE_TAG_ARRLEN_ ( Tag)
Value:
CRI_IF_DEFINED(CRI_ASSERT_TEST_TAG_ ## Tag, \
((intptr_t) &((*(char (*)[])((char volatile *) 0))CR_VA_TAIL(CRI_ASSERT_TYPE_TAG_ ## Tag))), , \
#define CR_VA_TAIL(...)
Definition preprocess.h:61
#define CRI_IF_DEFINED(M, Then, ThenParams, Else, ElseParams)
Definition preprocess.h:101
#define CRI_ASSERT_TYPE_TAG_(Tag)
Definition tag.h:38
#define CRI_ASSERT_TYPE_TAG_UNKNOWN(Tag)
Definition tag.h:51

Definition at line 46 of file tag.h.

46#define CRI_ASSERT_TYPE_TAG_ARRLEN_(Tag) \
47 CRI_IF_DEFINED(CRI_ASSERT_TEST_TAG_ ## Tag, \
48 ((intptr_t) &((*(char (*)[])((char volatile *) 0))CR_VA_TAIL(CRI_ASSERT_TYPE_TAG_ ## Tag))), , \
49 CRI_ASSERT_TYPE_TAG_UNKNOWN, (Tag))

◆ CRI_ASSERT_TYPE_TAG_chr

#define CRI_ASSERT_TYPE_TAG_chr   char,

Definition at line 95 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_dbl

#define CRI_ASSERT_TYPE_TAG_dbl   double,

Definition at line 163 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_flt

#define CRI_ASSERT_TYPE_TAG_flt   float,

Definition at line 158 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_i16

#define CRI_ASSERT_TYPE_TAG_i16   int16_t,

Definition at line 60 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_i32

#define CRI_ASSERT_TYPE_TAG_i32   int32_t,

Definition at line 65 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_i64

#define CRI_ASSERT_TYPE_TAG_i64   int64_t,

Definition at line 70 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_i8

#define CRI_ASSERT_TYPE_TAG_i8   int8_t,

Definition at line 55 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID

#define CRI_ASSERT_TYPE_TAG_ID ( Tag)    CR_EXPAND(CRI_ASSERT_TYPE_TAG_ID_(Tag))

Definition at line 42 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_

#define CRI_ASSERT_TYPE_TAG_ID_ ( Tag)    CRI_IF_DEFINED_NODEFER(CRI_ASSERT_TEST_TAG_ ## Tag, CR_VA_HEAD(CRI_ASSERT_TYPE_TAG_ID_ ## Tag), , CRI_ASSERT_SWALLOW_KEYWORD, (Tag))

Definition at line 43 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_chr

#define CRI_ASSERT_TYPE_TAG_ID_chr   chr,

Definition at line 96 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_dbl

#define CRI_ASSERT_TYPE_TAG_ID_dbl   dbl,

Definition at line 164 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_flt

#define CRI_ASSERT_TYPE_TAG_ID_flt   flt,

Definition at line 159 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_i16

#define CRI_ASSERT_TYPE_TAG_ID_i16   i16,

Definition at line 61 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_i32

#define CRI_ASSERT_TYPE_TAG_ID_i32   i32,

Definition at line 66 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_i64

#define CRI_ASSERT_TYPE_TAG_ID_i64   i64,

Definition at line 71 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_i8

#define CRI_ASSERT_TYPE_TAG_ID_i8   i8,

Definition at line 56 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_int

#define CRI_ASSERT_TYPE_TAG_ID_int   int,

Definition at line 101 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_iptr

#define CRI_ASSERT_TYPE_TAG_ID_iptr   iptr,

Definition at line 183 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_ldbl

#define CRI_ASSERT_TYPE_TAG_ID_ldbl   ldbl,

Definition at line 173 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_llong

#define CRI_ASSERT_TYPE_TAG_ID_llong   llong,

Definition at line 121 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_long

#define CRI_ASSERT_TYPE_TAG_ID_long   long,

Definition at line 111 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_ptr

#define CRI_ASSERT_TYPE_TAG_ID_ptr   ptr,

Definition at line 131 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_str

#define CRI_ASSERT_TYPE_TAG_ID_str   str,

Definition at line 140 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_sz

#define CRI_ASSERT_TYPE_TAG_ID_sz   sz,

Definition at line 178 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_tcs

#define CRI_ASSERT_TYPE_TAG_ID_tcs   tcs,

Definition at line 154 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_type

#define CRI_ASSERT_TYPE_TAG_ID_type ( T)    CRI_ASSERT_SWALLOW_KEYWORD(T),

Definition at line 194 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_u16

#define CRI_ASSERT_TYPE_TAG_ID_u16   u16,

Definition at line 81 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_u32

#define CRI_ASSERT_TYPE_TAG_ID_u32   u32,

Definition at line 86 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_u64

#define CRI_ASSERT_TYPE_TAG_ID_u64   u64,

Definition at line 91 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_u8

#define CRI_ASSERT_TYPE_TAG_ID_u8   u8,

Definition at line 76 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_uint

#define CRI_ASSERT_TYPE_TAG_ID_uint   uint,

Definition at line 106 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_ullong

#define CRI_ASSERT_TYPE_TAG_ID_ullong   ullong,

Definition at line 126 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_ulong

#define CRI_ASSERT_TYPE_TAG_ID_ulong   ulong,

Definition at line 116 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_uptr

#define CRI_ASSERT_TYPE_TAG_ID_uptr   uptr,

Definition at line 188 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ID_wcs

#define CRI_ASSERT_TYPE_TAG_ID_wcs   wcs,

Definition at line 149 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_int

#define CRI_ASSERT_TYPE_TAG_int   int,

Definition at line 100 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_iptr

#define CRI_ASSERT_TYPE_TAG_iptr   intptr_t,

Definition at line 182 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ldbl

#define CRI_ASSERT_TYPE_TAG_ldbl   long double,

Definition at line 171 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_llong

#define CRI_ASSERT_TYPE_TAG_llong   long long,

Definition at line 120 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_long

#define CRI_ASSERT_TYPE_TAG_long   long,

Definition at line 110 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ptr

#define CRI_ASSERT_TYPE_TAG_ptr   void *,

Definition at line 130 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_str

#define CRI_ASSERT_TYPE_TAG_str   char *,

Definition at line 138 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_sz

#define CRI_ASSERT_TYPE_TAG_sz   size_t,

Definition at line 177 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_tcs

#define CRI_ASSERT_TYPE_TAG_tcs   _TCHAR *,

Definition at line 153 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_type

#define CRI_ASSERT_TYPE_TAG_type ( T)    T,

Definition at line 193 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_u16

#define CRI_ASSERT_TYPE_TAG_u16   uint16_t,

Definition at line 80 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_u32

#define CRI_ASSERT_TYPE_TAG_u32   uint32_t,

Definition at line 85 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_u64

#define CRI_ASSERT_TYPE_TAG_u64   uint64_t,

Definition at line 90 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_u8

#define CRI_ASSERT_TYPE_TAG_u8   uint8_t,

Definition at line 75 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_uint

#define CRI_ASSERT_TYPE_TAG_uint   unsigned int,

Definition at line 105 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ullong

#define CRI_ASSERT_TYPE_TAG_ullong   unsigned long long,

Definition at line 125 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_ulong

#define CRI_ASSERT_TYPE_TAG_ulong   unsigned long,

Definition at line 115 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_UNKNOWN

#define CRI_ASSERT_TYPE_TAG_UNKNOWN ( Tag)    COMPILE_ERROR(Unknown tag #Tag.)

Definition at line 51 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_uptr

#define CRI_ASSERT_TYPE_TAG_uptr   uintptr_t,

Definition at line 187 of file tag.h.

◆ CRI_ASSERT_TYPE_TAG_wcs

#define CRI_ASSERT_TYPE_TAG_wcs   wchar_t *,

Definition at line 147 of file tag.h.

◆ CRI_DBL_DIG

#define CRI_DBL_DIG   "17"

Definition at line 332 of file tag.h.

◆ CRI_FLT_DIG

#define CRI_FLT_DIG   "9"

Definition at line 322 of file tag.h.

◆ CRI_LDBL_DIG

#define CRI_LDBL_DIG   "21"

Definition at line 344 of file tag.h.

◆ CRI_PRIxPTR

#define CRI_PRIxPTR   PRIxPTR

Definition at line 281 of file tag.h.

Referenced by CRI_USER_TAG_ID(), CRI_USER_TAG_ID(), and CRI_USER_TAG_ID().

◆ CRI_USER_TAG_ID

#define CRI_USER_TAG_ID ( Id,
Tag )   CR_CONCAT(CR_CONCAT(cr_user_, CRI_ASSERT_TYPE_TAG_ID(Tag)), _ ## Id)

Definition at line 40 of file tag.h.

Function Documentation

◆ CRI_USER_TAG_ID() [1/3]

static char * CRI_USER_TAG_ID ( tostr ,
iptr  )
inlinestatic

Definition at line 290 of file tag.h.

291{
292 uintptr_t absptr = (uintptr_t) *e;
293 if (absptr > (uintptr_t)INTPTR_MAX)
294 absptr = -absptr;
295
296 char *str = NULL;
297 cr_asprintf(&str, "%s0x%" CRI_PRIxPTR, *e < 0 ? "-" : "", absptr);
298 return str;
299}
CR_BEGIN_C_API CR_API int cr_asprintf(char **strp, const char *fmt,...)
#define CRI_PRIxPTR
Definition tag.h:281

References cr_asprintf(), CRI_PRIxPTR, and NULL.

◆ CRI_USER_TAG_ID() [2/3]

static char * CRI_USER_TAG_ID ( tostr ,
ptr  )
inlinestatic

Definition at line 308 of file tag.h.

309{
310 char *str = NULL;
311 cr_asprintf(&str, "0x%" CRI_PRIxPTR, (uintptr_t) *e);
312 return str;
313}

References cr_asprintf(), CRI_PRIxPTR, and NULL.

◆ CRI_USER_TAG_ID() [3/3]

static char * CRI_USER_TAG_ID ( tostr ,
uptr  )
inlinestatic

Definition at line 301 of file tag.h.

302{
303 char *str = NULL;
304 cr_asprintf(&str, "0x%" CRI_PRIxPTR, *e);
305 return str;
306}

References cr_asprintf(), CRI_PRIxPTR, and NULL.