43#define OT_CHECK_LNG_T(val) \
44 if (__skip >= objc) { \
45 MkErrorC_CheckD(WrongNumArgs(hdl,__skip, objc, -999, +999, #val)); \
47 val = (typeof(val)) OT_LNG_OBJV(__skip++); \
50#define OT_CHECK_EXP(val) OT_CHECK_LNG_T(val)
51#define OT_CHECK_MXC(val) OT_CHECK_LNG_T(val)
55#define OT_CHECK_MK_OBJECT_C(val,nullB) \
56 MkErrorC_CheckD(MK(Check_MkObjectC) (OT_Check_CALL(#val), (MK_PTR*)&val, nullB));
58#define OT_CHECK_OBJ(val,nullB) OT_CHECK_MK_OBJECT_C(val,nullB)
59#define OT_CHECK_OBJN(val,nullB) OT_CHECK_MK_OBJECT_C(val,nullB)
60#define OT_CHECK_MNG(val) OT_CHECK_MK_OBJECT_C(val,0)
61#define OT_CHECK_ERC(val,nullB) OT_CHECK_MK_OBJECT_C(val,nullB)
64#define OT_CHECK_CLASS(val,classType,type,nullB) \
65 MkErrorC_CheckD(MK(CheckClass) (classType, type, OT_Check_CALL(#val), (MK_PTR*)&val, nullB));
67#define OT_CHECK_BUF(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkBufferC_lngO), MkBufferC_TT, nullB)
68#define OT_CHECK_BUS(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkBufferStreamC_lngO), MkBufferStreamC_TT, nullB)
69#define OT_CHECK_ERR(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkErrorC_lngO), MkErrorC_TT, nullB)
70#define OT_CHECK_LFL(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkLogFileC_lngO), MkLogFileC_TT, nullB)
71#define OT_CHECK_RT(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkRuntimeC_lngO), MkRuntimeC_TT, nullB)
73#define OT_CHECK_BUFN(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkBufferC_lngO), MkBufferC_TT, nullB)
74#define OT_CHECK_BUSN(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkBufferStreamC_lngO), MkBufferStreamC_TT, nullB)
75#define OT_CHECK_ERRN(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkErrorC_lngO), MkErrorC_TT, nullB)
76#define OT_CHECK_LFLN(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkLogFileC_lngO), MkLogFileC_TT, nullB)
77#define OT_CHECK_RTN(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkRuntimeC_lngO), MkRuntimeC_TT, nullB)
80#define OT_CHECK_BAC(val) \
81 MkErrorC_CheckD(MK(CheckBAC(OT_Check_CALL(#val),&val,true)));
84#define OT_CHECK_BFL(val,nullB) \
85 MkErrorC_CheckD(MK(CheckBLC) (OT_Check_CALL(#val), &val, nullB));
86#define OT_CHECK_BFLN(val,nullB) \
87 MkErrorC_CheckD(MK(CheckBLC) (OT_Check_CALL(#val), &val, nullB));
89#if !defined(NO_OtCheckEnum)
91 #define OT_CHECK_ENUM(ename,val) { \
93 MkErrorC_CheckD(MK(CheckEnum)(OT_OBJ_TO_ENUM(ename),OT_Check_CALL(#val),&i)); \
94 MkErrorC_CheckD(ename##_FromInt(i,&val)); \
98#if !defined(NO_OtCheckEnumFlag)
100 #define OT_CHECK_ENUM_FLAG(ename,val) { \
102 MkErrorC_CheckD(MK(CheckEnumFlag)(OT_OBJ_TO_ENUM(ename),OT_Check_CALL(#val),&i)); \
103 val = (enum ename) i; \
107#if !defined(NO_OtCheckTimeT)
109 #define OT_CHECK_TIME_T(val) \
110 MkErrorC_CheckD(MK(CheckTimeT)(OT_Check_CALL(#val),&val));
113#if !defined(NO_OtCheckCallable)
115 #define OT_SETUP_CALLABLE(val) MK_CBP val = 0;
116 #define OT_SETUP_CALLABLE_ONCE(val) struct MkCallS val ## _ref = {0}; MK_CBP val = &val ## _ref;
117 #define OT_CLEANUP_CALLABLE(val)
119 #define OT_CLEANUP_CALLABLE_ONCE(val) MkCallFreeOnce(val);
120 #define OT_CHECK_CALLABLE(val) MkErrorC_CheckD(MK(CheckCallable)(OT_Check_CALL(#val), &val));
121 #define MkCallFree(cb) if (cb) MK(CallFree)(&(cb))
122 #define MkCallFreeOnce(cb) if (cb) MK(CallFreeOnce)(&(cb))
125#define NullNotAllowd(_cls) do { \
126 MkErrorVD("NullNotAllowedError", "'%s' hdl is NULL", OT_LNG_NAME_FROM_CLASS(_cls) ); \
130#define WrongTypeOfArgError(exp,got) do { \
131 MkErrorVD("WrongTypeOfArgError", "for argument '%s'...expect type '%s'...but got '%s'", arg, exp, got ); \
135#define WrongCallableError(got) do { \
136 MkErrorVD("WrongTypeOfArgError", "for argument '%s'...expect type 'Callable'...but got '%s'", arg, got ); \
140#define SignaturError(str) do { \
141 MkErrorVD("SignaturError", "%s", str); \
145#define InternalError(str) do { \
146 MkErrorVD("InternalError", "%s", str); \
159#if !defined(NO_TestObject)
161#define OT_LNG_OBJ_CLASS_IS_4(val,cls,objP,flagP) MK(TestObject)( OT_Prefix_CALL val,cls,objP,flagP)
162#define OT_LNG_OBJECT_IS_3(objV,obj,flag) MK(TestObject)( OT_Prefix_CALL objV,MkObjectC_lngO,obj,flag)
178 if ((*skipP) >= objc) {
219 if ((*skipP) >= objc) {
258 OT_LNG_SKIP_TYPE skip = *skipP;
272 if ((objc-skip) == 0) {
274 }
else if ((objc-skip) == 1) {
283 if (OT_LNG_ARRAY_IS(argsO)) {
302 }
else if (OT_LNG_ARRAY_IS(argsO)) {
306 OT_LNG_STRN_PRE(cst,argsO);
308 OT_LNG_STRN_POST(cst,argsO);
326 if ((*skipP) >= objc) {
355 }
else if (OT_LNG_ARRAY_IS(objV)) {
365#if !defined(NO_OtCheckEnum)
372 if ((*skipP) >= objc) {
377 if (OT_LNG_I32_IS(objV)) {
379 }
else if (OT_LNG_OBJ_ENUM_IS(objV,enumType)) {
380 OT_ENUM_TO_I32(objV,enumType);
391#if !defined(NO_OtCheckEnumFlag)
398 if ((*skipP) >= objc) {
404 if (OT_LNG_OBJ_ENUM_IS(objV,enumType)) {
405 OT_ENUM_TO_I32(objV,enumType);
416#if !defined(NO_OtCheckTimeT)
421 if ((*skipP) >= objc) {
430 }
else if (OT_LNG_LONG_IS(objV)) {
432 }
else if (OT_LNG_OBJECT_IS(objV)) {
443#if !defined(NO_TestObject)
451 assert(lngO != NULL);
452 assert(typeO != NULL);
455 if (OT_LNG_IS_NULL(lngO)) {
458 if (!OT_LNG_OBJ_CLASS_IS(lngO,typeO)) {
461 MK_MNG objM = VAL2MNG(lngO);
466 if (objP) *objP = obj;
468 if (flagP) *flagP = flag;
471 default :
return true;
#define OT_LNG_OBJ_CLASSNAME(obj)
#define OT_OBJ_TO_ENUM(str)
#define OT_LNG_NAME_FROM_CLASS(_cls)
#define MkBufferListC_lngO
#define OT_LNG_OBJV(__skip)
#define OT_OBJ_TYPE_STRING(obj)
#define OT_OBJ_TO_CLASS(str)
#define MkBufferListAppendSTR(...)
static MK_BFL MkBfl(MK_MNG mng)
#define MkBufferListCreate(...)
#define MkBufferListDelete(x)
static MK_OBJ MkObj(MK_MNG mng)
#define WrongNumArgs(...)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK LngObj_AsLONG(OT_Prefix_ARGS MK_MNG, OT_OBJ_T, long *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK LngObj_AsI32(OT_Prefix_ARGS MK_MNG, OT_OBJ_T, MK_I32 *)
MK_EXTERN enum MkErrorE MK_DECL MK Check_MkObjectC(OT_Check_ARGS, MK_MNG *, bool)
MK_EXTERN enum MkErrorE MK_DECL MK CheckEnumFlag(OT_ENUM_T classType, OT_Check_ARGS, int *)
MK_EXTERN enum MkErrorE MK_DECL MK CheckClass(OT_CLS_T, MK_TYP, OT_Check_ARGS, MK_MNG *, bool)
#define NullNotAllowd(_cls)
bool MK TestObject(OT_Prefix_ARGS OT_OBJ_T lngO, OT_CLS_T typeO, MK_OBJ *objP, MkTestClassE *flagP)
#define OT_LNG_OBJ_CLASS_IS_4(val, cls, objP, flagP)
#define OT_LNG_OBJECT_IS_3(objV, obj, flag)
MK_EXTERN enum MkErrorE MK_DECL MK CheckCallable(OT_Check_ARGS, MK_CBP *)
MK_EXTERN enum MkErrorE MK_DECL MK CheckTimeT(OT_Check_ARGS, MK_TIME_T *)
#define InternalError(str)
MK_EXTERN enum MkErrorE MK_DECL MK CheckBLC(OT_Check_ARGS, MK_BFL *, bool)
#define WrongTypeOfArgError(exp, got)
#define SignaturError(str)
MK_EXTERN enum MkErrorE MK_DECL MK CheckBAC(OT_Check_ARGS, MK_BFL *, bool)
@ MkTestClassE_NONE_OBJECT
@ MkTestClassE_INVALID_SIGNATURE
@ MkTestClassE_WRONG_CLASS
MK_EXTERN enum MkErrorE MK_DECL MK CheckEnum(OT_ENUM_T classType, OT_Check_ARGS, int *)