Github User Fetcher 1.0.0
C Application with Server and GUI
Loading...
Searching...
No Matches
op.h File Reference

Go to the source code of this file.

Macros

#define CRI_AS_GETTYPE(...)   CRI_ASSERT_TYPE_TAG(CR_VA_HEAD(__VA_ARGS__))
 
#define CRI_MKNODE_DEF   (CRI_MKNODE_STR, CRI_MKNODE_STR_ARR)
 
#define CRI_ASSERT_TEST_SPECIFIER_eq(...)   ,
 
#define CRI_ASSERT_SPECIFIER_eq(...)
 
#define CRI_ASSERT_TEST_SPECIFIER_ne(...)   ,
 
#define CRI_ASSERT_SPECIFIER_ne(...)
 
#define CRI_ASSERT_TEST_SPECIFIER_lt(...)   ,
 
#define CRI_ASSERT_SPECIFIER_lt(...)
 
#define CRI_ASSERT_TEST_SPECIFIER_le(...)   ,
 
#define CRI_ASSERT_SPECIFIER_le(...)
 
#define CRI_ASSERT_TEST_SPECIFIER_gt(...)   ,
 
#define CRI_ASSERT_SPECIFIER_gt(...)
 
#define CRI_ASSERT_TEST_SPECIFIER_ge(...)   ,
 
#define CRI_ASSERT_SPECIFIER_ge(...)
 
#define CRI_ASSERT_TEST_SPECIFIER_zero(...)   ,
 
#define CRI_ASSERT_SPECIFIER_zero(...)
 
#define CRI_ASSERT_SPECIFIER_OP(OpTag, OpTagless, OpName, Params, ...)
 
#define CRI_ASSERT_SPECIFIER_OPN__(Macro, Len)   Macro ## Len
 
#define CRI_ASSERT_SPECIFIER_OPN_(Len)    CRI_ASSERT_SPECIFIER_OPN__(CRI_ASSERT_SPECIFIER_OP, Len)
 
#define CRI_ASSERT_SPECIFIER_OPN(Params, Va)    CRI_ASSERT_SPECIFIER_OPN_(CRI_ASSERT_SPEC_OPLEN(Params, Va))
 
#define CRI_ASSERT_SPECIFIER_OP0(OpTag, OpTagless, OpName, Params, Va)
 
#define CRI_ASSERT_IT_MERGEVALS(Def, Val)   , CR_EXPAND((CR_EAT Def, Val))
 
#define CRI_ASSERT_SPECIFIER_OP1(OpTag, OpTagless, OpName, Params, Va)
 
#define CRI_ASSERT_CHECK_TAG(Tag, Content)    CR_EXPAND(CRI_ASSERT_CHECK_TAG_(Tag, Content))
 
#define CRI_ASSERT_CHECK_TAG_(Tag, Content)
 
#define CRI_ASSERT_CHECK_TAG_CONTENT(Content)    CRI_DEFER1(CRI_ASSERT_SPECIFIER_OPTAG) CR_EAT Content
 
#define CRI_ASSERT_CHECK_TAG_UNKNOWN(Tag)   (0 CR_COMPILE_ERROR(Unknown tag #Tag.))
 
#define CRI_BINOP(Op, Actual, Ref)   Actual Op Ref
 
#define CRI_BINOP_EQ(Actual, Ref)   CRI_BINOP(==, Actual, Ref)
 
#define CRI_BINOP_NE(Actual, Ref)   CRI_BINOP(!=, Actual, Ref)
 
#define CRI_BINOP_LE(Actual, Ref)   CRI_BINOP(<=, Actual, Ref)
 
#define CRI_BINOP_LT(Actual, Ref)   CRI_BINOP(<, Actual, Ref)
 
#define CRI_BINOP_GE(Actual, Ref)   CRI_BINOP(>=, Actual, Ref)
 
#define CRI_BINOP_GT(Actual, Ref)   CRI_BINOP(>, Actual, Ref)
 
#define CRI_BINOP_EQ_TAG(Tag, Op, Actual, Ref)   (Op (CRI_USER_TAG_ID(eq, Tag)(&(Actual), &(Ref))))
 
#define CRI_BINOP_LT_TAG(Tag, Op, Actual, Ref)   (Op (CRI_USER_TAG_ID(lt, Tag)(&(Actual), &(Ref))))
 
#define CRI_BINOP_T_EQ(Tag, Actual, Ref)   (CRI_BINOP_EQ_TAG(Tag, , Actual, Ref))
 
#define CRI_BINOP_T_NE(Tag, Actual, Ref)   (CRI_BINOP_EQ_TAG(Tag, !, Actual, Ref))
 
#define CRI_BINOP_T_LE(Tag, Actual, Ref)   (CRI_BINOP_LT_TAG(Tag, , Actual, Ref) || CRI_BINOP_EQ_TAG(Tag, , Actual, Ref))
 
#define CRI_BINOP_T_LT(Tag, Actual, Ref)   (CRI_BINOP_LT_TAG(Tag, , Actual, Ref))
 
#define CRI_BINOP_T_GE(Tag, Actual, Ref)   (CRI_BINOP_LT_TAG(Tag, !, Actual, Ref))
 
#define CRI_BINOP_T_GT(Tag, Actual, Ref)   (CRI_BINOP_LT_TAG(Tag, !, Actual, Ref) && CRI_BINOP_EQ_TAG(Tag, !, Actual, Ref))
 
#define CRI_UNOP_ZERO(X)   !(X)
 
#define CRI_UNOP_T_ZERO(Tag, X)   CRI_USER_TAG_ID(zero, Tag)(&(X))
 
#define CRI_ASSERT_OPGET___(What, Kind)   What ## Kind
 
#define CRI_ASSERT_OPGET__(What, Kind)   CRI_ASSERT_OPGET___(What, Kind)
 
#define CRI_ASSERT_OPGET_(What, Kind)   CRI_ASSERT_OPGET__(What, Kind)
 
#define CRI_ASSERT_OPGET(What, Var)
 
#define CRI_ASSERT_OP_VAR_TAGGED(Type, Var, Name, MkNode, Val)   Var
 
#define CRI_ASSERT_OP_VAR_SINGLE(Type, Var, Name, MkNode, Val)   Var
 
#define CRI_ASSERT_OP_VAL_TAGGED(Type, Var, Name, MkNode, Val)   Val
 
#define CRI_ASSERT_OP_VAL_SINGLE(Type, Var, Name, MkNode, Val)   Val
 
#define CRI_ASSERT_OP_NAME_TAGGED(Type, Var, Name, MkNode, Val)   Name
 
#define CRI_ASSERT_OP_NAME_SINGLE(Type, Var, Name, MkNode, Val)   Name
 
#define CRI_ASSERT_OP_SUBSCRIPT_TAGGED(Type, Var, Name, MkNode, Val)   Var[cri_i]
 
#define CRI_ASSERT_OP_SUBSCRIPT_SINGLE(Type, Var, Name, MkNode, Val)   Var
 
#define CRI_ASSERT_OP_MKNODE_FIRST(First, Second)   First
 
#define CRI_ASSERT_OP_MKNODE_SECOND(First, Second)   Second
 
#define CRI_ASSERT_OP_MKNODE_TAGGED(Type, Var, Name, MkNode, Val)    CRI_ASSERT_OP_MKNODE_FIRST MkNode
 
#define CRI_ASSERT_OP_MKNODE_SINGLE(Type, Var, Name, MkNode, Val)    CRI_ASSERT_OP_MKNODE_FIRST MkNode
 
#define CRI_ASSERT_OP_MKNODE_ARR_TAGGED(Type, Var, Name, MkNode, Val)    CRI_ASSERT_OP_MKNODE_SECOND MkNode
 
#define CRI_ASSERT_OP_MKNODE_ARR_SINGLE(Type, Var, Name, MkNode, Val)    CRI_ASSERT_OP_MKNODE_FIRST MkNode
 
#define CRI_ASSERT_OP_TYPE_TAGGED(Type, Var, Name, MkNode, Val)   Type
 
#define CRI_ASSERT_OP_TYPE_SINGLE(Type, Var, Name, MkNode, Val)   Type
 
#define CRI_ASSERT_OP_ARRTYPE_TAGGED(Type, Var, Name, MkNode, Val)   Type *
 
#define CRI_ASSERT_OP_ARRTYPE_SINGLE(Type, Var, Name, MkNode, Val)   Type
 
#define CRI_ASSERT_OPKIND(Kind, Type, Var, Name, MkNode, Val)   Kind
 
#define CRI_ASSERT_OPKIND_STRIP(Kind, Type, Var, Name, MkNode, Val)   (Type, Var, Name, MkNode, Val)
 
#define CRI_ASSERT_IT_VAR(T, Var)
 
#define CRI_ASSERT_IT_VAR_AUTO(_, Var)
 
#define CRI_ASSERT_IT_MKNODE(Tag, Var)
 
#define CRI_ASSERT_IT_MKNODE_ARR(Tag, Var)
 
#define CRI_ASSERT_IT_MKNODE_SUBSCRIPT(Tag, Var)
 
#define CRI_ASSERT_IT_MKNODE_AUTO(Tag, Var)    CRI_MKNODE_UNPRINTABLE(, CRI_ASSERT_OPGET(VAR, Var), CRI_ASSERT_OPGET(NAME, Var));
 
#define CRI_ASSERT_IT_UNPACK(_, Var)   , CRI_ASSERT_OPGET(VAR, Var)
 
#define CRI_ASSERT_IT_VUNPACK(_, Var)   , CRI_ASSERT_OPGET(VAL, Var)
 
#define CRI_ASSERT_IT_SUNPACK(_, Var)   , CRI_ASSERT_OPGET(SUBSCRIPT, Var)
 
#define CRI_ASSERT_OP_APPLY(Op, ...)   Op CR_EXPAND((__VA_ARGS__))
 
#define CRI_ASSERT_MKLIST_1(Macro, L1, L2)   Macro(CR_VA_HEAD L1, CR_VA_HEAD L2)
 
#define CRI_ASSERT_MKLIST_2(Macro, L1, L2)   Macro(CR_VA_HEAD L1, CR_VA_HEAD L2) CRI_ASSERT_MKLIST_1(Macro, (CR_VA_TAIL L1), (CR_VA_TAIL L2))
 
#define CRI_ASSERT_MKLIST_3(Macro, L1, L2)   Macro(CR_VA_HEAD L1, CR_VA_HEAD L2) CRI_ASSERT_MKLIST_2(Macro, (CR_VA_TAIL L1), (CR_VA_TAIL L2))
 
#define CRI_ASSERT_MKLIST_4(Macro, L1, L2)   Macro(CR_VA_HEAD L1, CR_VA_HEAD L2) CRI_ASSERT_MKLIST_3(Macro, (CR_VA_TAIL L1), (CR_VA_TAIL L2))
 
#define CRI_ASSERT_MKLIST__(Macro, n, L1, L2)   CRI_ASSERT_MKLIST_ ## n(Macro, L1, L2)
 
#define CRI_ASSERT_MKLIST_(Macro, n, L1, L2)   CRI_ASSERT_MKLIST__(Macro, n, L1, L2)
 
#define CRI_ASSERT_MKLIST(Macro, L1, L2)   CRI_ASSERT_MKLIST_(Macro, CRITERION_ARG_LENGTH L1, L1, L2)
 
#define CRI_MKNODE_STR(Tag, Var, Name)
 
#define CRI_MKNODE_STR_ARR(Tag, Var, Name)
 
#define CRI_MKNODE_UNPRINTABLE(_, Var, Name)
 
#define CRI_ASSERT_SPECIFIER_OPTAGLESS(Op, Name, ...)    1; CR_COMPILE_ERROR(Name without a tag parameter is unsupported on this compiler.)
 
#define CRI_ASSERT_SPECIFIER_OPTAG(Op, Name, Tag, ...)
 
#define CRI_ASSERT_SPECIFIER_OPTAG_SCALAR(Op, Name, Tag, ...)
 
#define CRI_ASSERT_SPECIFIER_OPTAG_ARRAY(Op, Name, Tag, ...)
 
#define CRI_ASSERT_SPECIFIER_OP_HELPER(Op, N, ...)    CR_DEFER(CR_CONCAT)(CRI_ASSERT_SPECIFIER_ ## Op, N)(__VA_ARGS__)
 
#define CRI_ASSERT_SPEC_OPLEN_1(...)
 
#define CRI_ASSERT_SPEC_OPLEN_2(...)
 
#define CRI_ASSERT_SPEC_OPLEN_3(...)
 
#define CRI_ASSERT_SPEC_OPLEN__(N, Va)    CR_EXPAND(CRI_ASSERT_SPEC_OPLEN_ ## N Va)
 
#define CRI_ASSERT_SPEC_OPLEN_(N, Va)    CRI_ASSERT_SPEC_OPLEN__(N, Va)
 
#define CRI_ASSERT_SPEC_OPLEN(Params, Va)    CRI_ASSERT_SPEC_OPLEN_(CRITERION_ARG_LENGTH Params, Va)
 

Macro Definition Documentation

◆ CRI_AS_GETTYPE

#define CRI_AS_GETTYPE ( ...)    CRI_ASSERT_TYPE_TAG(CR_VA_HEAD(__VA_ARGS__))

Definition at line 27 of file op.h.

◆ CRI_ASSERT_CHECK_TAG

#define CRI_ASSERT_CHECK_TAG ( Tag,
Content )    CR_EXPAND(CRI_ASSERT_CHECK_TAG_(Tag, Content))

Definition at line 114 of file op.h.

114#define CRI_ASSERT_CHECK_TAG(Tag, Content) \
115 CR_EXPAND(CRI_ASSERT_CHECK_TAG_(Tag, Content))

◆ CRI_ASSERT_CHECK_TAG_

#define CRI_ASSERT_CHECK_TAG_ ( Tag,
Content )
Value:
CRI_IF_DEFINED(CRI_ASSERT_TEST_TAG_ ## Tag, \
)
#define CRI_ASSERT_CHECK_TAG_CONTENT(Content)
Definition op.h:123
#define CRI_ASSERT_CHECK_TAG_UNKNOWN(Tag)
Definition op.h:126
#define CRI_IF_DEFINED(M, Then, ThenParams, Else, ElseParams)
Definition preprocess.h:101

Definition at line 117 of file op.h.

117#define CRI_ASSERT_CHECK_TAG_(Tag, Content) \
118 CRI_IF_DEFINED(CRI_ASSERT_TEST_TAG_ ## Tag, \
119 CRI_ASSERT_CHECK_TAG_CONTENT, (Content), \
120 CRI_ASSERT_CHECK_TAG_UNKNOWN, (Tag) \
121 )

◆ CRI_ASSERT_CHECK_TAG_CONTENT

#define CRI_ASSERT_CHECK_TAG_CONTENT ( Content)     CRI_DEFER1(CRI_ASSERT_SPECIFIER_OPTAG) CR_EAT Content

Definition at line 123 of file op.h.

123#define CRI_ASSERT_CHECK_TAG_CONTENT(Content) \
124 CRI_DEFER1(CRI_ASSERT_SPECIFIER_OPTAG) CR_EAT Content

◆ CRI_ASSERT_CHECK_TAG_UNKNOWN

#define CRI_ASSERT_CHECK_TAG_UNKNOWN ( Tag)    (0 CR_COMPILE_ERROR(Unknown tag #Tag.))

Definition at line 126 of file op.h.

◆ CRI_ASSERT_IT_MERGEVALS

#define CRI_ASSERT_IT_MERGEVALS ( Def,
Val )   , CR_EXPAND((CR_EAT Def, Val))

Definition at line 103 of file op.h.

◆ CRI_ASSERT_IT_MKNODE

#define CRI_ASSERT_IT_MKNODE ( Tag,
Var )
Value:
Tag, CRI_ASSERT_OPGET(VAR, Var), CRI_ASSERT_OPGET(NAME, Var) \
);
#define CRI_ASSERT_OPGET(What, Var)
Definition op.h:176
#define CRI_OBSTRUCT_N(...)
Definition preprocess.h:51

Definition at line 241 of file op.h.

241# define CRI_ASSERT_IT_MKNODE(Tag, Var) \
242 CRI_OBSTRUCT_N(CRI_ASSERT_OPGET(MKNODE, Var))( \
243 Tag, CRI_ASSERT_OPGET(VAR, Var), CRI_ASSERT_OPGET(NAME, Var) \
244 );

◆ CRI_ASSERT_IT_MKNODE_ARR

#define CRI_ASSERT_IT_MKNODE_ARR ( Tag,
Var )
Value:
CRI_OBSTRUCT_N(CRI_ASSERT_OPGET(MKNODE_ARR, Var))( \
Tag, CRI_ASSERT_OPGET(VAR, Var), CRI_ASSERT_OPGET(NAME, Var) \
);

Definition at line 245 of file op.h.

245# define CRI_ASSERT_IT_MKNODE_ARR(Tag, Var) \
246 CRI_OBSTRUCT_N(CRI_ASSERT_OPGET(MKNODE_ARR, Var))( \
247 Tag, CRI_ASSERT_OPGET(VAR, Var), CRI_ASSERT_OPGET(NAME, Var) \
248 );

◆ CRI_ASSERT_IT_MKNODE_AUTO

#define CRI_ASSERT_IT_MKNODE_AUTO ( Tag,
Var )    CRI_MKNODE_UNPRINTABLE(, CRI_ASSERT_OPGET(VAR, Var), CRI_ASSERT_OPGET(NAME, Var));

Definition at line 255 of file op.h.

255#define CRI_ASSERT_IT_MKNODE_AUTO(Tag, Var) \
256 CRI_MKNODE_UNPRINTABLE(, CRI_ASSERT_OPGET(VAR, Var), CRI_ASSERT_OPGET(NAME, Var));

◆ CRI_ASSERT_IT_MKNODE_SUBSCRIPT

#define CRI_ASSERT_IT_MKNODE_SUBSCRIPT ( Tag,
Var )
Value:
Tag, CRI_ASSERT_OPGET(VAR, Var)[cri_i], CRI_ASSERT_OPGET(NAME, Var) \
);

Definition at line 249 of file op.h.

249# define CRI_ASSERT_IT_MKNODE_SUBSCRIPT(Tag, Var) \
250 CRI_OBSTRUCT_N(CRI_ASSERT_OPGET(MKNODE, Var))( \
251 Tag, CRI_ASSERT_OPGET(VAR, Var)[cri_i], CRI_ASSERT_OPGET(NAME, Var) \
252 );

◆ CRI_ASSERT_IT_SUNPACK

#define CRI_ASSERT_IT_SUNPACK ( _,
Var )   , CRI_ASSERT_OPGET(SUBSCRIPT, Var)

Definition at line 260 of file op.h.

◆ CRI_ASSERT_IT_UNPACK

#define CRI_ASSERT_IT_UNPACK ( _,
Var )   , CRI_ASSERT_OPGET(VAR, Var)

Definition at line 258 of file op.h.

◆ CRI_ASSERT_IT_VAR

#define CRI_ASSERT_IT_VAR ( T,
Var )
Value:
CRI_ASSERT_OPGET(VAR, Var) = CRI_VALUE_ESCAPE( \
decltype (CRI_ASSERT_OPGET(VAR, Var)), CRI_ASSERT_OPGET(VAL, Var) \
);
#define CR_CHECKERROR(M)
Definition deprecation.h:52
#define CRI_VALUE_ESCAPE(T, X)
Definition tostr.h:286

Definition at line 214 of file op.h.

214#define CRI_ASSERT_IT_VAR(T, Var) \
215 CR_CHECKERROR(CRI_ASSERT_OPGET(T, Var)) \
216 CRI_ASSERT_OPGET(VAR, Var) = CRI_VALUE_ESCAPE( \
217 decltype (CRI_ASSERT_OPGET(VAR, Var)), CRI_ASSERT_OPGET(VAL, Var) \
218 );

◆ CRI_ASSERT_IT_VAR_AUTO

#define CRI_ASSERT_IT_VAR_AUTO ( _,
Var )
Value:
decltype (CRI_ASSERT_OPGET(VAL, Var)), CRI_ASSERT_OPGET(VAL, Var) \
);
#define CRI_AUTOTYPE

Definition at line 220 of file op.h.

220#define CRI_ASSERT_IT_VAR_AUTO(_, Var) \
221 CRI_AUTOTYPE CRI_ASSERT_OPGET(VAR, Var) = CRI_VALUE_ESCAPE( \
222 decltype (CRI_ASSERT_OPGET(VAL, Var)), CRI_ASSERT_OPGET(VAL, Var) \
223 );

◆ CRI_ASSERT_IT_VUNPACK

#define CRI_ASSERT_IT_VUNPACK ( _,
Var )   , CRI_ASSERT_OPGET(VAL, Var)

Definition at line 259 of file op.h.

◆ CRI_ASSERT_MKLIST

#define CRI_ASSERT_MKLIST ( Macro,
L1,
L2 )   CRI_ASSERT_MKLIST_(Macro, CRITERION_ARG_LENGTH L1, L1, L2)

Definition at line 271 of file op.h.

◆ CRI_ASSERT_MKLIST_

#define CRI_ASSERT_MKLIST_ ( Macro,
n,
L1,
L2 )   CRI_ASSERT_MKLIST__(Macro, n, L1, L2)

Definition at line 270 of file op.h.

◆ CRI_ASSERT_MKLIST_1

#define CRI_ASSERT_MKLIST_1 ( Macro,
L1,
L2 )   Macro(CR_VA_HEAD L1, CR_VA_HEAD L2)

Definition at line 264 of file op.h.

◆ CRI_ASSERT_MKLIST_2

#define CRI_ASSERT_MKLIST_2 ( Macro,
L1,
L2 )   Macro(CR_VA_HEAD L1, CR_VA_HEAD L2) CRI_ASSERT_MKLIST_1(Macro, (CR_VA_TAIL L1), (CR_VA_TAIL L2))

Definition at line 265 of file op.h.

◆ CRI_ASSERT_MKLIST_3

#define CRI_ASSERT_MKLIST_3 ( Macro,
L1,
L2 )   Macro(CR_VA_HEAD L1, CR_VA_HEAD L2) CRI_ASSERT_MKLIST_2(Macro, (CR_VA_TAIL L1), (CR_VA_TAIL L2))

Definition at line 266 of file op.h.

◆ CRI_ASSERT_MKLIST_4

#define CRI_ASSERT_MKLIST_4 ( Macro,
L1,
L2 )   Macro(CR_VA_HEAD L1, CR_VA_HEAD L2) CRI_ASSERT_MKLIST_3(Macro, (CR_VA_TAIL L1), (CR_VA_TAIL L2))

Definition at line 267 of file op.h.

◆ CRI_ASSERT_MKLIST__

#define CRI_ASSERT_MKLIST__ ( Macro,
n,
L1,
L2 )   CRI_ASSERT_MKLIST_ ## n(Macro, L1, L2)

Definition at line 269 of file op.h.

◆ CRI_ASSERT_OP_APPLY

#define CRI_ASSERT_OP_APPLY ( Op,
... )   Op CR_EXPAND((__VA_ARGS__))

Definition at line 262 of file op.h.

◆ CRI_ASSERT_OP_ARRTYPE_SINGLE

#define CRI_ASSERT_OP_ARRTYPE_SINGLE ( Type,
Var,
Name,
MkNode,
Val )   Type

Definition at line 209 of file op.h.

◆ CRI_ASSERT_OP_ARRTYPE_TAGGED

#define CRI_ASSERT_OP_ARRTYPE_TAGGED ( Type,
Var,
Name,
MkNode,
Val )   Type *

Definition at line 208 of file op.h.

◆ CRI_ASSERT_OP_MKNODE_ARR_SINGLE

#define CRI_ASSERT_OP_MKNODE_ARR_SINGLE ( Type,
Var,
Name,
MkNode,
Val )    CRI_ASSERT_OP_MKNODE_FIRST MkNode

Definition at line 202 of file op.h.

202#define CRI_ASSERT_OP_MKNODE_ARR_SINGLE(Type, Var, Name, MkNode, Val) \
203 CRI_ASSERT_OP_MKNODE_FIRST MkNode

◆ CRI_ASSERT_OP_MKNODE_ARR_TAGGED

#define CRI_ASSERT_OP_MKNODE_ARR_TAGGED ( Type,
Var,
Name,
MkNode,
Val )    CRI_ASSERT_OP_MKNODE_SECOND MkNode

Definition at line 200 of file op.h.

200#define CRI_ASSERT_OP_MKNODE_ARR_TAGGED(Type, Var, Name, MkNode, Val) \
201 CRI_ASSERT_OP_MKNODE_SECOND MkNode

◆ CRI_ASSERT_OP_MKNODE_FIRST

#define CRI_ASSERT_OP_MKNODE_FIRST ( First,
Second )   First

Definition at line 192 of file op.h.

◆ CRI_ASSERT_OP_MKNODE_SECOND

#define CRI_ASSERT_OP_MKNODE_SECOND ( First,
Second )   Second

Definition at line 193 of file op.h.

◆ CRI_ASSERT_OP_MKNODE_SINGLE

#define CRI_ASSERT_OP_MKNODE_SINGLE ( Type,
Var,
Name,
MkNode,
Val )    CRI_ASSERT_OP_MKNODE_FIRST MkNode

Definition at line 197 of file op.h.

197#define CRI_ASSERT_OP_MKNODE_SINGLE(Type, Var, Name, MkNode, Val) \
198 CRI_ASSERT_OP_MKNODE_FIRST MkNode

◆ CRI_ASSERT_OP_MKNODE_TAGGED

#define CRI_ASSERT_OP_MKNODE_TAGGED ( Type,
Var,
Name,
MkNode,
Val )    CRI_ASSERT_OP_MKNODE_FIRST MkNode

Definition at line 195 of file op.h.

195#define CRI_ASSERT_OP_MKNODE_TAGGED(Type, Var, Name, MkNode, Val) \
196 CRI_ASSERT_OP_MKNODE_FIRST MkNode

◆ CRI_ASSERT_OP_NAME_SINGLE

#define CRI_ASSERT_OP_NAME_SINGLE ( Type,
Var,
Name,
MkNode,
Val )   Name

Definition at line 187 of file op.h.

◆ CRI_ASSERT_OP_NAME_TAGGED

#define CRI_ASSERT_OP_NAME_TAGGED ( Type,
Var,
Name,
MkNode,
Val )   Name

Definition at line 186 of file op.h.

◆ CRI_ASSERT_OP_SUBSCRIPT_SINGLE

#define CRI_ASSERT_OP_SUBSCRIPT_SINGLE ( Type,
Var,
Name,
MkNode,
Val )   Var

Definition at line 190 of file op.h.

◆ CRI_ASSERT_OP_SUBSCRIPT_TAGGED

#define CRI_ASSERT_OP_SUBSCRIPT_TAGGED ( Type,
Var,
Name,
MkNode,
Val )   Var[cri_i]

Definition at line 189 of file op.h.

◆ CRI_ASSERT_OP_TYPE_SINGLE

#define CRI_ASSERT_OP_TYPE_SINGLE ( Type,
Var,
Name,
MkNode,
Val )   Type

Definition at line 206 of file op.h.

◆ CRI_ASSERT_OP_TYPE_TAGGED

#define CRI_ASSERT_OP_TYPE_TAGGED ( Type,
Var,
Name,
MkNode,
Val )   Type

Definition at line 205 of file op.h.

◆ CRI_ASSERT_OP_VAL_SINGLE

#define CRI_ASSERT_OP_VAL_SINGLE ( Type,
Var,
Name,
MkNode,
Val )   Val

Definition at line 184 of file op.h.

◆ CRI_ASSERT_OP_VAL_TAGGED

#define CRI_ASSERT_OP_VAL_TAGGED ( Type,
Var,
Name,
MkNode,
Val )   Val

Definition at line 183 of file op.h.

◆ CRI_ASSERT_OP_VAR_SINGLE

#define CRI_ASSERT_OP_VAR_SINGLE ( Type,
Var,
Name,
MkNode,
Val )   Var

Definition at line 181 of file op.h.

◆ CRI_ASSERT_OP_VAR_TAGGED

#define CRI_ASSERT_OP_VAR_TAGGED ( Type,
Var,
Name,
MkNode,
Val )   Var

Definition at line 180 of file op.h.

◆ CRI_ASSERT_OPGET

#define CRI_ASSERT_OPGET ( What,
Var )
Value:
CRI_ASSERT_OPGET_(CRI_ASSERT_OP_ ## What ## _, CRI_ASSERT_OPKIND Var) \
CR_EXPAND(CRI_ASSERT_OPKIND_STRIP Var)
#define _(String)
Definition gi18n-lib.h:32
#define CRI_ASSERT_OPGET_(What, Kind)
Definition op.h:175
#define CRI_ASSERT_OPKIND(Kind, Type, Var, Name, MkNode, Val)
Definition op.h:211
#define CRI_ASSERT_OPKIND_STRIP(Kind, Type, Var, Name, MkNode, Val)
Definition op.h:212

Definition at line 176 of file op.h.

176#define CRI_ASSERT_OPGET(What, Var) \
177 CRI_ASSERT_OPGET_(CRI_ASSERT_OP_ ## What ## _, CRI_ASSERT_OPKIND Var) \
178 CR_EXPAND(CRI_ASSERT_OPKIND_STRIP Var)

◆ CRI_ASSERT_OPGET_

#define CRI_ASSERT_OPGET_ ( What,
Kind )   CRI_ASSERT_OPGET__(What, Kind)

Definition at line 175 of file op.h.

◆ CRI_ASSERT_OPGET__

#define CRI_ASSERT_OPGET__ ( What,
Kind )   CRI_ASSERT_OPGET___(What, Kind)

Definition at line 174 of file op.h.

◆ CRI_ASSERT_OPGET___

#define CRI_ASSERT_OPGET___ ( What,
Kind )   What ## Kind

Definition at line 173 of file op.h.

◆ CRI_ASSERT_OPKIND

#define CRI_ASSERT_OPKIND ( Kind,
Type,
Var,
Name,
MkNode,
Val )   Kind

Definition at line 211 of file op.h.

◆ CRI_ASSERT_OPKIND_STRIP

#define CRI_ASSERT_OPKIND_STRIP ( Kind,
Type,
Var,
Name,
MkNode,
Val )   (Type, Var, Name, MkNode, Val)

Definition at line 212 of file op.h.

◆ CRI_ASSERT_SPEC_OPLEN

#define CRI_ASSERT_SPEC_OPLEN ( Params,
Va )    CRI_ASSERT_SPEC_OPLEN_(CRITERION_ARG_LENGTH Params, Va)

Definition at line 423 of file op.h.

423#define CRI_ASSERT_SPEC_OPLEN(Params, Va) \
424 CRI_ASSERT_SPEC_OPLEN_(CRITERION_ARG_LENGTH Params, Va)

◆ CRI_ASSERT_SPEC_OPLEN_

#define CRI_ASSERT_SPEC_OPLEN_ ( N,
Va )    CRI_ASSERT_SPEC_OPLEN__(N, Va)

Definition at line 421 of file op.h.

421#define CRI_ASSERT_SPEC_OPLEN_(N, Va) \
422 CRI_ASSERT_SPEC_OPLEN__(N, Va)

◆ CRI_ASSERT_SPEC_OPLEN_1

#define CRI_ASSERT_SPEC_OPLEN_1 ( ...)
Value:
1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 0, 0))
#define CR_VA_TAIL_SELECT64( _01, _02, _03, _04, _05, _06, _07, _08, _09, _10, _11, _12, _13, _14, _15, _16, _17, _18, _19, _20, _21, _22, _23, _24, _25, _26, _27, _28, _29, _30, _31, _32, _33, _34, _35, _36, _37, _38, _39, _40, _41, _42, _43, _44, _45, _46, _47, _48, _49, _50, _51, _52, _53, _54, _55, _56, _57, _58, _59, _60, _61, _62, _63, X,...)
Definition preprocess.h:85
#define CR_EXPAND(x)
Definition preprocess.h:35

Definition at line 389 of file op.h.

389#define CRI_ASSERT_SPEC_OPLEN_1(...) \
390 CR_EXPAND(CR_VA_TAIL_SELECT64(__VA_ARGS__, \
391 1, 1, 1, 1, \
392 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
393 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
394 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
395 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
396 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
397 1, 1, 1, 1, 1, 1, 1, 1, 0, 0))

◆ CRI_ASSERT_SPEC_OPLEN_2

#define CRI_ASSERT_SPEC_OPLEN_2 ( ...)
Value:
1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 0, 0, 0))

Definition at line 399 of file op.h.

399#define CRI_ASSERT_SPEC_OPLEN_2(...) \
400 CR_EXPAND(CR_VA_TAIL_SELECT64(__VA_ARGS__, \
401 1, 1, 1, 1, \
402 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
403 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
404 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
405 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
406 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
407 1, 1, 1, 1, 1, 1, 1, 0, 0, 0))

◆ CRI_ASSERT_SPEC_OPLEN_3

#define CRI_ASSERT_SPEC_OPLEN_3 ( ...)
Value:
1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
1, 1, 1, 1, 1, 1, 0, 0, 0, 0))

Definition at line 409 of file op.h.

409#define CRI_ASSERT_SPEC_OPLEN_3(...) \
410 CR_EXPAND(CR_VA_TAIL_SELECT64(__VA_ARGS__, \
411 1, 1, 1, 1, \
412 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
413 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
414 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
415 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
416 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
417 1, 1, 1, 1, 1, 1, 0, 0, 0, 0))

◆ CRI_ASSERT_SPEC_OPLEN__

#define CRI_ASSERT_SPEC_OPLEN__ ( N,
Va )    CR_EXPAND(CRI_ASSERT_SPEC_OPLEN_ ## N Va)

Definition at line 419 of file op.h.

419#define CRI_ASSERT_SPEC_OPLEN__(N, Va) \
420 CR_EXPAND(CRI_ASSERT_SPEC_OPLEN_ ## N Va)

◆ CRI_ASSERT_SPECIFIER_eq

#define CRI_ASSERT_SPECIFIER_eq ( ...)
Value:
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_actual, "actual", CRI_MKNODE_DEF), \
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_expected, "expected", CRI_MKNODE_DEF) \
), __VA_ARGS__)
#define CRI_BINOP_T_EQ(Tag, Actual, Ref)
Definition op.h:157
#define CRI_MKNODE_DEF
Definition op.h:31
#define CRI_BINOP_EQ(Actual, Ref)
Definition op.h:131
#define CRI_ASSERT_SPECIFIER_OP(OpTag, OpTagless, OpName, Params,...)
Definition op.h:85
#define CRI_AS_GETTYPE(...)
Definition op.h:27

Definition at line 34 of file op.h.

34#define CRI_ASSERT_SPECIFIER_eq(...) \
35 CRI_ASSERT_SPECIFIER_OP(CRI_BINOP_T_EQ, CRI_BINOP_EQ, eq, ( \
36 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_actual, "actual", CRI_MKNODE_DEF), \
37 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_expected, "expected", CRI_MKNODE_DEF) \
38 ), __VA_ARGS__)

◆ CRI_ASSERT_SPECIFIER_ge

#define CRI_ASSERT_SPECIFIER_ge ( ...)
Value:
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_actual, "actual", CRI_MKNODE_DEF), \
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_reference, "reference", CRI_MKNODE_DEF) \
), __VA_ARGS__)
#define CRI_BINOP_T_GE(Tag, Actual, Ref)
Definition op.h:161
#define CRI_BINOP_GE(Actual, Ref)
Definition op.h:135

Definition at line 69 of file op.h.

69#define CRI_ASSERT_SPECIFIER_ge(...) \
70 CRI_ASSERT_SPECIFIER_OP(CRI_BINOP_T_GE, CRI_BINOP_GE, ge, ( \
71 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_actual, "actual", CRI_MKNODE_DEF), \
72 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_reference, "reference", CRI_MKNODE_DEF) \
73 ), __VA_ARGS__)

◆ CRI_ASSERT_SPECIFIER_gt

#define CRI_ASSERT_SPECIFIER_gt ( ...)
Value:
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_actual, "actual", CRI_MKNODE_DEF), \
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_reference, "reference", CRI_MKNODE_DEF) \
), __VA_ARGS__)
#define gt(L)
#define CRI_BINOP_T_GT(Tag, Actual, Ref)
Definition op.h:162
#define CRI_BINOP_GT(Actual, Ref)
Definition op.h:136

Definition at line 62 of file op.h.

62#define CRI_ASSERT_SPECIFIER_gt(...) \
63 CRI_ASSERT_SPECIFIER_OP(CRI_BINOP_T_GT, CRI_BINOP_GT, gt, ( \
64 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_actual, "actual", CRI_MKNODE_DEF), \
65 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_reference, "reference", CRI_MKNODE_DEF) \
66 ), __VA_ARGS__)

◆ CRI_ASSERT_SPECIFIER_le

#define CRI_ASSERT_SPECIFIER_le ( ...)
Value:
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_actual, "actual", CRI_MKNODE_DEF), \
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_reference, "reference", CRI_MKNODE_DEF) \
), __VA_ARGS__)
#define CRI_BINOP_T_LE(Tag, Actual, Ref)
Definition op.h:159
#define CRI_BINOP_LE(Actual, Ref)
Definition op.h:133

Definition at line 55 of file op.h.

55#define CRI_ASSERT_SPECIFIER_le(...) \
56 CRI_ASSERT_SPECIFIER_OP(CRI_BINOP_T_LE, CRI_BINOP_LE, le, ( \
57 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_actual, "actual", CRI_MKNODE_DEF), \
58 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_reference, "reference", CRI_MKNODE_DEF) \
59 ), __VA_ARGS__)

◆ CRI_ASSERT_SPECIFIER_lt

#define CRI_ASSERT_SPECIFIER_lt ( ...)
Value:
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_actual, "actual", CRI_MKNODE_DEF), \
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_reference, "reference", CRI_MKNODE_DEF) \
), __VA_ARGS__)
#define CRI_BINOP_T_LT(Tag, Actual, Ref)
Definition op.h:160
#define CRI_BINOP_LT(Actual, Ref)
Definition op.h:134

Definition at line 48 of file op.h.

48#define CRI_ASSERT_SPECIFIER_lt(...) \
49 CRI_ASSERT_SPECIFIER_OP(CRI_BINOP_T_LT, CRI_BINOP_LT, lt, ( \
50 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_actual, "actual", CRI_MKNODE_DEF), \
51 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_reference, "reference", CRI_MKNODE_DEF) \
52 ), __VA_ARGS__)

◆ CRI_ASSERT_SPECIFIER_ne

#define CRI_ASSERT_SPECIFIER_ne ( ...)
Value:
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_actual, "actual", CRI_MKNODE_DEF), \
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_unexpected, "unexpected", CRI_MKNODE_DEF) \
), __VA_ARGS__)
#define CRI_BINOP_NE(Actual, Ref)
Definition op.h:132
#define CRI_BINOP_T_NE(Tag, Actual, Ref)
Definition op.h:158

Definition at line 41 of file op.h.

41#define CRI_ASSERT_SPECIFIER_ne(...) \
42 CRI_ASSERT_SPECIFIER_OP(CRI_BINOP_T_NE, CRI_BINOP_NE, ne, ( \
43 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_actual, "actual", CRI_MKNODE_DEF), \
44 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_unexpected, "unexpected", CRI_MKNODE_DEF) \
45 ), __VA_ARGS__)

◆ CRI_ASSERT_SPECIFIER_OP

#define CRI_ASSERT_SPECIFIER_OP ( OpTag,
OpTagless,
OpName,
Params,
... )
Value:
CRI_ASSERT_SPECIFIER_OPN(Params, (__VA_ARGS__))( \
OpTag, OpTagless, OpName, Params, (__VA_ARGS__) \
)
#define CRI_ASSERT_SPECIFIER_OPN(Params, Va)
Definition op.h:95

Definition at line 85 of file op.h.

85#define CRI_ASSERT_SPECIFIER_OP(OpTag, OpTagless, OpName, Params, ...) \
86 CRI_ASSERT_SPECIFIER_OPN(Params, (__VA_ARGS__))( \
87 OpTag, OpTagless, OpName, Params, (__VA_ARGS__) \
88 )

◆ CRI_ASSERT_SPECIFIER_OP0

#define CRI_ASSERT_SPECIFIER_OP0 ( OpTag,
OpTagless,
OpName,
Params,
Va )
Value:
))
#define CRI_ASSERT_SPECIFIER_OPTAGLESS(Op, Name,...)
Definition op.h:324
#define CRI_ASSERT_IT_MERGEVALS(Def, Val)
Definition op.h:103
#define CRI_ASSERT_MKLIST(Macro, L1, L2)
Definition op.h:271

Definition at line 98 of file op.h.

98#define CRI_ASSERT_SPECIFIER_OP0(OpTag, OpTagless, OpName, Params, Va) \
99 CRI_ASSERT_SPECIFIER_OPTAGLESS CR_EXPAND((OpTagless, OpName \
100 CRI_ASSERT_MKLIST(CRI_ASSERT_IT_MERGEVALS, Params, Va) \
101 ))

◆ CRI_ASSERT_SPECIFIER_OP1

#define CRI_ASSERT_SPECIFIER_OP1 ( OpTag,
OpTagless,
OpName,
Params,
Va )
Value:
CR_EXPAND((OpTag, OpName, CR_EXPAND(CR_VA_HEAD Va) \
)) \
) \
)
#define CRI_ASSERT_CHECK_TAG(Tag, Content)
Definition op.h:114
#define CR_VA_TAIL(...)
Definition preprocess.h:61
#define CR_VA_HEAD(...)
Definition preprocess.h:68

Definition at line 105 of file op.h.

105#define CRI_ASSERT_SPECIFIER_OP1(OpTag, OpTagless, OpName, Params, Va) \
106 CRI_ASSERT_CHECK_TAG(CR_EXPAND(CR_VA_HEAD Va), ( \
107 CR_EXPAND((OpTag, OpName, CR_EXPAND(CR_VA_HEAD Va) \
108 CRI_ASSERT_MKLIST(CRI_ASSERT_IT_MERGEVALS, Params, \
109 CR_EXPAND((CR_VA_TAIL Va))) \
110 )) \
111 ) \
112 )

◆ CRI_ASSERT_SPECIFIER_OP_HELPER

#define CRI_ASSERT_SPECIFIER_OP_HELPER ( Op,
N,
... )    CR_DEFER(CR_CONCAT)(CRI_ASSERT_SPECIFIER_ ## Op, N)(__VA_ARGS__)

Definition at line 386 of file op.h.

386#define CRI_ASSERT_SPECIFIER_OP_HELPER(Op, N, ...) \
387 CR_DEFER(CR_CONCAT)(CRI_ASSERT_SPECIFIER_ ## Op, N)(__VA_ARGS__)

◆ CRI_ASSERT_SPECIFIER_OPN

#define CRI_ASSERT_SPECIFIER_OPN ( Params,
Va )    CRI_ASSERT_SPECIFIER_OPN_(CRI_ASSERT_SPEC_OPLEN(Params, Va))

Definition at line 95 of file op.h.

95#define CRI_ASSERT_SPECIFIER_OPN(Params, Va) \
96 CRI_ASSERT_SPECIFIER_OPN_(CRI_ASSERT_SPEC_OPLEN(Params, Va))

◆ CRI_ASSERT_SPECIFIER_OPN_

#define CRI_ASSERT_SPECIFIER_OPN_ ( Len)     CRI_ASSERT_SPECIFIER_OPN__(CRI_ASSERT_SPECIFIER_OP, Len)

Definition at line 92 of file op.h.

92#define CRI_ASSERT_SPECIFIER_OPN_(Len) \
93 CRI_ASSERT_SPECIFIER_OPN__(CRI_ASSERT_SPECIFIER_OP, Len)

◆ CRI_ASSERT_SPECIFIER_OPN__

#define CRI_ASSERT_SPECIFIER_OPN__ ( Macro,
Len )   Macro ## Len

Definition at line 90 of file op.h.

◆ CRI_ASSERT_SPECIFIER_OPTAG

#define CRI_ASSERT_SPECIFIER_OPTAG ( Op,
Name,
Tag,
... )
Value:
CRI_IF_DEFINED_NODEFER(CR_EXPAND(CRI_ASSERT_TEST_TAGC_ ## Tag()), \
)(Op, Name, Tag, __VA_ARGS__)
#define CRI_ASSERT_SPECIFIER_OPTAG_ARRAY(Op, Name, Tag,...)
Definition op.h:356
#define CRI_ASSERT_SPECIFIER_OPTAG_SCALAR(Op, Name, Tag,...)
Definition op.h:338
#define CRI_IF_DEFINED_NODEFER(M, Then, ThenParams, Else, ElseParams)
Definition preprocess.h:107
struct VdbeOp Op
Definition sqlite3.c:20750

Definition at line 332 of file op.h.

332#define CRI_ASSERT_SPECIFIER_OPTAG(Op, Name, Tag, ...) \
333 CRI_IF_DEFINED_NODEFER(CR_EXPAND(CRI_ASSERT_TEST_TAGC_ ## Tag()), \
334 CRI_ASSERT_SPECIFIER_OPTAG_SCALAR, , \
335 CRI_ASSERT_SPECIFIER_OPTAG_ARRAY, \
336 )(Op, Name, Tag, __VA_ARGS__)

◆ CRI_ASSERT_SPECIFIER_OPTAG_ARRAY

#define CRI_ASSERT_SPECIFIER_OPTAG_ARRAY ( Op,
Name,
Tag,
... )
Value:
1; do { \
CRITERION_APPLY(CRI_ASSERT_IT_VAR, ARRTYPE, __VA_ARGS__) \
size_t cri_size = CRI_ASSERT_TYPE_TAG_ARRLEN(Tag); \
cri_assert_node_init(&cri_tmpn); \
const char *cri_repr = #Name "(" #Tag CR_STR CR_EXPAND( \
) ")"; \
cri_tmpn.repr = cri_repr; \
cri_tmpn.pass = 1; \
size_t cri_paramidx = 0; \
CRITERION_APPLY(CRI_ASSERT_IT_MKNODE_ARR, Tag, __VA_ARGS__) \
struct cri_assert_node *cri_tmp = cri_assert_node_add(cri_node, &cri_tmpn); \
struct cri_assert_node *cri_node = cri_tmp; \
for (size_t cri_i = 0; cri_i < cri_size; ++cri_i) { \
cri_assert_node_init(&cri_tmpn); \
cr_asprintf((char **) &cri_tmpn.repr, "%s [%" CRI_PRIuSIZE "]", \
cri_repr, cri_i); \
cri_tmpn.dynrepr = 1; \
cri_paramidx = 0; \
CRITERION_APPLY(CRI_ASSERT_IT_MKNODE_SUBSCRIPT, Tag, __VA_ARGS__) \
cri_tmpn.pass = !!(CRI_ASSERT_OP_APPLY(Op, \
Tag CRITERION_APPLY(CRI_ASSERT_IT_SUNPACK, , __VA_ARGS__))); \
cri_prevnode = cri_assert_node_add(cri_node, &cri_tmpn); \
cri_node->pass = cri_node->pass && cri_tmpn.pass; \
} \
cri_cond_un = cri_node->pass; \
} while (0)
#define CRI_PRIuSIZE
Definition common.h:99
#define CRITERION_APPLY(Macro,...)
CR_API struct cri_assert_node * cri_assert_node_add(struct cri_assert_node *tree, struct cri_assert_node *node)
#define CRI_ASSERT_IT_SUNPACK(_, Var)
Definition op.h:260
#define CRI_ASSERT_OP_APPLY(Op,...)
Definition op.h:262
#define CRI_ASSERT_IT_VAR(T, Var)
Definition op.h:214
#define CRI_ASSERT_IT_MKNODE_SUBSCRIPT(Tag, Var)
Definition op.h:249
#define CRI_ASSERT_IT_MKNODE_ARR(Tag, Var)
Definition op.h:245
#define CRI_ASSERT_IT_VUNPACK(_, Var)
Definition op.h:259
#define CR_STR(...)
Definition preprocess.h:58
#define CRI_ASSERT_TYPE_TAG_ARRLEN(Tag)
Definition tag.h:45
#define CRI_ASSERT_NAMESPACES
Definition tostr.h:289

Definition at line 356 of file op.h.

356#define CRI_ASSERT_SPECIFIER_OPTAG_ARRAY(Op, Name, Tag, ...) \
357 1; do { \
358 CRI_ASSERT_NAMESPACES; \
359 CRITERION_APPLY(CRI_ASSERT_IT_VAR, ARRTYPE, __VA_ARGS__) \
360 size_t cri_size = CRI_ASSERT_TYPE_TAG_ARRLEN(Tag); \
361 cri_assert_node_init(&cri_tmpn); \
362 const char *cri_repr = #Name "(" #Tag CR_STR CR_EXPAND( \
363 (CRITERION_APPLY(CRI_ASSERT_IT_VUNPACK, , __VA_ARGS__)) \
364 ) ")"; \
365 cri_tmpn.repr = cri_repr; \
366 cri_tmpn.pass = 1; \
367 size_t cri_paramidx = 0; \
368 CRITERION_APPLY(CRI_ASSERT_IT_MKNODE_ARR, Tag, __VA_ARGS__) \
369 struct cri_assert_node *cri_tmp = cri_assert_node_add(cri_node, &cri_tmpn); \
370 struct cri_assert_node *cri_node = cri_tmp; \
371 for (size_t cri_i = 0; cri_i < cri_size; ++cri_i) { \
372 cri_assert_node_init(&cri_tmpn); \
373 cr_asprintf((char **) &cri_tmpn.repr, "%s [%" CRI_PRIuSIZE "]", \
374 cri_repr, cri_i); \
375 cri_tmpn.dynrepr = 1; \
376 cri_paramidx = 0; \
377 CRITERION_APPLY(CRI_ASSERT_IT_MKNODE_SUBSCRIPT, Tag, __VA_ARGS__) \
378 cri_tmpn.pass = !!(CRI_ASSERT_OP_APPLY(Op, \
379 Tag CRITERION_APPLY(CRI_ASSERT_IT_SUNPACK, , __VA_ARGS__))); \
380 cri_prevnode = cri_assert_node_add(cri_node, &cri_tmpn); \
381 cri_node->pass = cri_node->pass && cri_tmpn.pass; \
382 } \
383 cri_cond_un = cri_node->pass; \
384 } while (0)

◆ CRI_ASSERT_SPECIFIER_OPTAG_SCALAR

#define CRI_ASSERT_SPECIFIER_OPTAG_SCALAR ( Op,
Name,
Tag,
... )
Value:
1; do { \
CRITERION_APPLY(CRI_ASSERT_IT_VAR, TYPE, __VA_ARGS__) \
cri_cond_un = CRI_ASSERT_OP_APPLY(Op, Tag \
if (cri_cond_un != cri_cond_expect) { \
cri_assert_node_init(&cri_tmpn); \
cri_tmpn.repr = #Name "(" #Tag CR_STR CR_EXPAND( \
) ")"; \
size_t cri_paramidx = 0; \
CRITERION_APPLY(CRI_ASSERT_IT_MKNODE, Tag, __VA_ARGS__) \
cri_tmpn.pass = !!cri_cond_un; \
cri_prevnode = cri_assert_node_add(cri_node, &cri_tmpn); \
} \
} while (0)
#define CRI_ASSERT_IT_UNPACK(_, Var)
Definition op.h:258
#define CRI_ASSERT_IT_MKNODE(Tag, Var)
Definition op.h:241

Definition at line 338 of file op.h.

338#define CRI_ASSERT_SPECIFIER_OPTAG_SCALAR(Op, Name, Tag, ...) \
339 1; do { \
340 CRI_ASSERT_NAMESPACES; \
341 CRITERION_APPLY(CRI_ASSERT_IT_VAR, TYPE, __VA_ARGS__) \
342 cri_cond_un = CRI_ASSERT_OP_APPLY(Op, Tag \
343 CRITERION_APPLY(CRI_ASSERT_IT_UNPACK,, __VA_ARGS__)); \
344 if (cri_cond_un != cri_cond_expect) { \
345 cri_assert_node_init(&cri_tmpn); \
346 cri_tmpn.repr = #Name "(" #Tag CR_STR CR_EXPAND( \
347 (CRITERION_APPLY(CRI_ASSERT_IT_VUNPACK,, __VA_ARGS__)) \
348 ) ")"; \
349 size_t cri_paramidx = 0; \
350 CRITERION_APPLY(CRI_ASSERT_IT_MKNODE, Tag, __VA_ARGS__) \
351 cri_tmpn.pass = !!cri_cond_un; \
352 cri_prevnode = cri_assert_node_add(cri_node, &cri_tmpn); \
353 } \
354 } while (0)

◆ CRI_ASSERT_SPECIFIER_OPTAGLESS

#define CRI_ASSERT_SPECIFIER_OPTAGLESS ( Op,
Name,
... )    1; CR_COMPILE_ERROR(Name without a tag parameter is unsupported on this compiler.)

Definition at line 324 of file op.h.

324# define CRI_ASSERT_SPECIFIER_OPTAGLESS(Op, Name, ...) \
325 1; CR_COMPILE_ERROR(Name without a tag parameter is unsupported on this compiler.)

◆ CRI_ASSERT_SPECIFIER_zero

#define CRI_ASSERT_SPECIFIER_zero ( ...)
Value:
(TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_value, "value", CRI_MKNODE_DEF) \
), __VA_ARGS__)
#define CRI_UNOP_T_ZERO(Tag, X)
Definition op.h:165
#define CRI_UNOP_ZERO(X)
Definition op.h:164

Definition at line 78 of file op.h.

78#define CRI_ASSERT_SPECIFIER_zero(...) \
79 CRI_ASSERT_SPECIFIER_OP(CRI_UNOP_T_ZERO, CRI_UNOP_ZERO, zero, ( \
80 (TAGGED, CRI_AS_GETTYPE(__VA_ARGS__), cri_value, "value", CRI_MKNODE_DEF) \
81 ), __VA_ARGS__)

◆ CRI_ASSERT_TEST_SPECIFIER_eq

#define CRI_ASSERT_TEST_SPECIFIER_eq ( ...)    ,

Definition at line 33 of file op.h.

◆ CRI_ASSERT_TEST_SPECIFIER_ge

#define CRI_ASSERT_TEST_SPECIFIER_ge ( ...)    ,

Definition at line 68 of file op.h.

◆ CRI_ASSERT_TEST_SPECIFIER_gt

#define CRI_ASSERT_TEST_SPECIFIER_gt ( ...)    ,

Definition at line 61 of file op.h.

◆ CRI_ASSERT_TEST_SPECIFIER_le

#define CRI_ASSERT_TEST_SPECIFIER_le ( ...)    ,

Definition at line 54 of file op.h.

◆ CRI_ASSERT_TEST_SPECIFIER_lt

#define CRI_ASSERT_TEST_SPECIFIER_lt ( ...)    ,

Definition at line 47 of file op.h.

◆ CRI_ASSERT_TEST_SPECIFIER_ne

#define CRI_ASSERT_TEST_SPECIFIER_ne ( ...)    ,

Definition at line 40 of file op.h.

◆ CRI_ASSERT_TEST_SPECIFIER_zero

#define CRI_ASSERT_TEST_SPECIFIER_zero ( ...)    ,

Definition at line 77 of file op.h.

◆ CRI_BINOP

#define CRI_BINOP ( Op,
Actual,
Ref )   Actual Op Ref

Definition at line 130 of file op.h.

◆ CRI_BINOP_EQ

#define CRI_BINOP_EQ ( Actual,
Ref )   CRI_BINOP(==, Actual, Ref)

Definition at line 131 of file op.h.

◆ CRI_BINOP_EQ_TAG

#define CRI_BINOP_EQ_TAG ( Tag,
Op,
Actual,
Ref )   (Op (CRI_USER_TAG_ID(eq, Tag)(&(Actual), &(Ref))))

Definition at line 154 of file op.h.

◆ CRI_BINOP_GE

#define CRI_BINOP_GE ( Actual,
Ref )   CRI_BINOP(>=, Actual, Ref)

Definition at line 135 of file op.h.

◆ CRI_BINOP_GT

#define CRI_BINOP_GT ( Actual,
Ref )   CRI_BINOP(>, Actual, Ref)

Definition at line 136 of file op.h.

◆ CRI_BINOP_LE

#define CRI_BINOP_LE ( Actual,
Ref )   CRI_BINOP(<=, Actual, Ref)

Definition at line 133 of file op.h.

◆ CRI_BINOP_LT

#define CRI_BINOP_LT ( Actual,
Ref )   CRI_BINOP(<, Actual, Ref)

Definition at line 134 of file op.h.

◆ CRI_BINOP_LT_TAG

#define CRI_BINOP_LT_TAG ( Tag,
Op,
Actual,
Ref )   (Op (CRI_USER_TAG_ID(lt, Tag)(&(Actual), &(Ref))))

Definition at line 155 of file op.h.

◆ CRI_BINOP_NE

#define CRI_BINOP_NE ( Actual,
Ref )   CRI_BINOP(!=, Actual, Ref)

Definition at line 132 of file op.h.

◆ CRI_BINOP_T_EQ

#define CRI_BINOP_T_EQ ( Tag,
Actual,
Ref )   (CRI_BINOP_EQ_TAG(Tag, , Actual, Ref))

Definition at line 157 of file op.h.

◆ CRI_BINOP_T_GE

#define CRI_BINOP_T_GE ( Tag,
Actual,
Ref )   (CRI_BINOP_LT_TAG(Tag, !, Actual, Ref))

Definition at line 161 of file op.h.

◆ CRI_BINOP_T_GT

#define CRI_BINOP_T_GT ( Tag,
Actual,
Ref )   (CRI_BINOP_LT_TAG(Tag, !, Actual, Ref) && CRI_BINOP_EQ_TAG(Tag, !, Actual, Ref))

Definition at line 162 of file op.h.

◆ CRI_BINOP_T_LE

#define CRI_BINOP_T_LE ( Tag,
Actual,
Ref )   (CRI_BINOP_LT_TAG(Tag, , Actual, Ref) || CRI_BINOP_EQ_TAG(Tag, , Actual, Ref))

Definition at line 159 of file op.h.

◆ CRI_BINOP_T_LT

#define CRI_BINOP_T_LT ( Tag,
Actual,
Ref )   (CRI_BINOP_LT_TAG(Tag, , Actual, Ref))

Definition at line 160 of file op.h.

◆ CRI_BINOP_T_NE

#define CRI_BINOP_T_NE ( Tag,
Actual,
Ref )   (CRI_BINOP_EQ_TAG(Tag, !, Actual, Ref))

Definition at line 158 of file op.h.

◆ CRI_MKNODE_DEF

#define CRI_MKNODE_DEF   (CRI_MKNODE_STR, CRI_MKNODE_STR_ARR)

Definition at line 31 of file op.h.

◆ CRI_MKNODE_STR

#define CRI_MKNODE_STR ( Tag,
Var,
Name )
Value:
do { \
char *cri_str = CRI_USER_TOSTR(Tag, Var); \
cri_tmpn.params[cri_paramidx].name = Name; \
cri_tmpn.params[cri_paramidx].type = CRI_ASSERT_RT_STR; \
cri_tmpn.params[cri_paramidx].data = cri_str; \
cri_paramidx++; \
} while (0)
@ CRI_ASSERT_RT_STR
#define CRI_USER_TOSTR(Tag, Var)
Definition tostr.h:287

Definition at line 273 of file op.h.

273#define CRI_MKNODE_STR(Tag, Var, Name) \
274 do { \
275 char *cri_str = CRI_USER_TOSTR(Tag, Var); \
276 cri_tmpn.params[cri_paramidx].name = Name; \
277 cri_tmpn.params[cri_paramidx].type = CRI_ASSERT_RT_STR; \
278 cri_tmpn.params[cri_paramidx].data = cri_str; \
279 cri_paramidx++; \
280 } while (0)

◆ CRI_MKNODE_STR_ARR

#define CRI_MKNODE_STR_ARR ( Tag,
Var,
Name )
Value:
do { \
char *cri_str = NULL; \
CRI_USER_TOSTR_ARR(cri_str, Var, Tag); \
cri_tmpn.params[cri_paramidx].name = Name; \
cri_tmpn.params[cri_paramidx].type = CRI_ASSERT_RT_STR; \
cri_tmpn.params[cri_paramidx].data = cri_str; \
cri_paramidx++; \
} while (0)
#define NULL
Definition gmacros.h:924

Definition at line 282 of file op.h.

282#define CRI_MKNODE_STR_ARR(Tag, Var, Name) \
283 do { \
284 char *cri_str = NULL; \
285 CRI_USER_TOSTR_ARR(cri_str, Var, Tag); \
286 cri_tmpn.params[cri_paramidx].name = Name; \
287 cri_tmpn.params[cri_paramidx].type = CRI_ASSERT_RT_STR; \
288 cri_tmpn.params[cri_paramidx].data = cri_str; \
289 cri_paramidx++; \
290 } while (0)

◆ CRI_MKNODE_UNPRINTABLE

#define CRI_MKNODE_UNPRINTABLE ( _,
Var,
Name )
Value:
do { \
char *cri_str = CRI_ASSERT_UNPRINTABLE(Var); \
cri_tmpn.params[cri_paramidx].name = Name; \
cri_tmpn.params[cri_paramidx].type = CRI_ASSERT_RT_STR; \
cri_tmpn.params[cri_paramidx].data = cri_str; \
cri_paramidx++; \
} while (0)
#define CRI_ASSERT_UNPRINTABLE(Var)
Definition tostr.h:288

Definition at line 292 of file op.h.

292#define CRI_MKNODE_UNPRINTABLE(_, Var, Name) \
293 do { \
294 char *cri_str = CRI_ASSERT_UNPRINTABLE(Var); \
295 cri_tmpn.params[cri_paramidx].name = Name; \
296 cri_tmpn.params[cri_paramidx].type = CRI_ASSERT_RT_STR; \
297 cri_tmpn.params[cri_paramidx].data = cri_str; \
298 cri_paramidx++; \
299 } while (0)

◆ CRI_UNOP_T_ZERO

#define CRI_UNOP_T_ZERO ( Tag,
X )   CRI_USER_TAG_ID(zero, Tag)(&(X))

Definition at line 165 of file op.h.

◆ CRI_UNOP_ZERO

#define CRI_UNOP_ZERO ( X)    !(X)

Definition at line 164 of file op.h.