40#define OT_CHECK_LNG_T(val) \
41 if (__skip >= objc) { \
42 MkErrorC_CheckD(WrongNumArgs(hdl,__skip, objc, -999, +999, #val)); \
44 val = (typeof(val)) OT_LNG_OBJV(__skip++); \
47#define OT_CHECK_EXP(val) OT_CHECK_LNG_T(val)
48#define OT_CHECK_MXC(val) OT_CHECK_LNG_T(val)
52#define OT_CHECK_MK_OBJECT_C(val,nullB) \
53 MkErrorC_CheckD(MK(Check_MkObjectC) (OT_Check_CALL(#val), (MK_PTR*)&val, nullB));
55#define OT_CHECK_OBJ(val,nullB) OT_CHECK_MK_OBJECT_C(val,nullB)
56#define OT_CHECK_OBJN(val,nullB) OT_CHECK_MK_OBJECT_C(val,nullB)
57#define OT_CHECK_MNG(val) OT_CHECK_MK_OBJECT_C(val,0)
58#define OT_CHECK_ERC(val,nullB) OT_CHECK_MK_OBJECT_C(val,nullB)
61#define OT_CHECK_CLASS(val,classType,type,nullB) \
62 MkErrorC_CheckD(MK(CheckClass) (classType, type, OT_Check_CALL(#val), (MK_PTR*)&val, nullB));
64#define OT_CHECK_BUF(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkBufferC_lngO), MkBufferC_TT, nullB)
65#define OT_CHECK_BUS(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkBufferStreamC_lngO), MkBufferStreamC_TT, nullB)
66#define OT_CHECK_ERR(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkErrorC_lngO), MkErrorC_TT, nullB)
67#define OT_CHECK_LFL(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkLogFileC_lngO), MkLogFileC_TT, nullB)
68#define OT_CHECK_RT(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkRuntimeC_lngO), MkRuntimeC_TT, nullB)
70#define OT_CHECK_BUFN(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkBufferC_lngO), MkBufferC_TT, nullB)
71#define OT_CHECK_BUSN(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkBufferStreamC_lngO), MkBufferStreamC_TT, nullB)
72#define OT_CHECK_ERRN(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkErrorC_lngO), MkErrorC_TT, nullB)
73#define OT_CHECK_LFLN(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkLogFileC_lngO), MkLogFileC_TT, nullB)
74#define OT_CHECK_RTN(val,nullB) OT_CHECK_CLASS(val, OT_OBJ_TO_CLASS(MkRuntimeC_lngO), MkRuntimeC_TT, nullB)
77#define OT_CHECK_BAC(val) \
78 MkErrorC_CheckD(MK(CheckBAC(OT_Check_CALL(#val),&val,true)));
81#define OT_CHECK_BFL(val,nullB) \
82 MkErrorC_CheckD(MK(CheckBLC) (OT_Check_CALL(#val), &val, nullB));
83#define OT_CHECK_BFLN(val,nullB) \
84 MkErrorC_CheckD(MK(CheckBLC) (OT_Check_CALL(#val), &val, nullB));
86#if !defined(NO_OtCheckEnum)
88 #define OT_CHECK_ENUM(ename,val) { \
90 MkErrorC_CheckD(MK(CheckEnum)(OT_OBJ_TO_ENUM(ename),OT_Check_CALL(#val),&i)); \
91 MkErrorC_CheckD(ename##_FromInt(i,&val)); \
95#if !defined(NO_OtCheckEnumFlag)
97 #define OT_CHECK_ENUM_FLAG(ename,val) { \
99 MkErrorC_CheckD(MK(CheckEnumFlag)(OT_OBJ_TO_ENUM(ename),OT_Check_CALL(#val),&i)); \
100 val = (enum ename) i; \
104#if !defined(NO_OtCheckTimeT)
106 #define OT_CHECK_TIME_T(val) \
107 MkErrorC_CheckD(MK(CheckTimeT)(OT_Check_CALL(#val),&val));
110#if !defined(NO_OtCheckCallable)
112 #define OT_SETUP_CALLABLE(val) MK_CBP val = 0;
113 #define OT_SETUP_CALLABLE_ONCE(val) struct MkCallS val ## _ref = {0}; MK_CBP val = &val ## _ref;
114 #define OT_CLEANUP_CALLABLE(val)
116 #define OT_CLEANUP_CALLABLE_ONCE(val) MkCallFreeOnce(val);
117 #define OT_CHECK_CALLABLE(val) MkErrorC_CheckD(MK(CheckCallable)(OT_Check_CALL(#val), &val));
118 #define MkCallFree(cb) if (cb) MK(CallFree)(&(cb))
119 #define MkCallFreeOnce(cb) if (cb) MK(CallFreeOnce)(&(cb))
122#define NullNotAllowd(_cls) do { \
123 MkErrorVD("NullNotAllowedError", "'%s' hdl is NULL", OT_LNG_NAME_FROM_CLASS(_cls) ); \
127#define WrongTypeOfArgError(exp,got) do { \
128 MkErrorVD("WrongTypeOfArgError", "for argument '%s'...expect type '%s'...but got '%s'", arg, exp, got ); \
132#define WrongCallableError(got) do { \
133 MkErrorVD("WrongTypeOfArgError", "for argument '%s'...expect type 'Callable'...but got '%s'", arg, got ); \
137#define SignaturError(str) do { \
138 MkErrorVD("SignaturError", "%s", str); \
142#define InternalError(str) do { \
143 MkErrorVD("InternalError", "%s", str); \
156#if !defined(NO_TestObject)
158#define OT_LNG_OBJ_CLASS_IS_4(val,cls,objP,flagP) MK(TestObject)( OT_Prefix_CALL val,cls,objP,flagP)
159#define OT_LNG_OBJECT_IS_3(objV,obj,flag) MK(TestObject)( OT_Prefix_CALL objV,MkObjectC_lngO,obj,flag)
175 if ((*skipP) >= objc) {
216 if ((*skipP) >= objc) {
269 if ((objc-skip) == 0) {
271 }
else if ((objc-skip) == 1) {
280 if (OT_LNG_ARRAY_IS(argsO)) {
299 }
else if (OT_LNG_ARRAY_IS(argsO)) {
303 OT_LNG_STRN_PRE(cst,argsO);
305 OT_LNG_STRN_POST(cst,argsO);
323 if ((*skipP) >= objc) {
352 }
else if (OT_LNG_ARRAY_IS(objV)) {
362#if !defined(NO_OtCheckEnum)
369 if ((*skipP) >= objc) {
374 if (OT_LNG_I32_IS(objV)) {
376 }
else if (OT_LNG_OBJ_ENUM_IS(objV,enumType)) {
377 OT_ENUM_TO_I32(objV,enumType);
388#if !defined(NO_OtCheckEnumFlag)
395 if ((*skipP) >= objc) {
401 if (OT_LNG_OBJ_ENUM_IS(objV,enumType)) {
402 OT_ENUM_TO_I32(objV,enumType);
413#if !defined(NO_OtCheckTimeT)
418 if ((*skipP) >= objc) {
427 }
else if (OT_LNG_LONG_IS(objV)) {
429 }
else if (OT_LNG_OBJECT_IS(objV)) {
440#if !defined(NO_TestObject)
448 assert(lngO != NULL);
449 assert(typeO != NULL);
452 if (OT_LNG_IS_NULL(lngO)) {
455 if (!OT_LNG_OBJ_CLASS_IS(lngO,typeO)) {
463 if (objP) *objP = obj;
465 if (flagP) *flagP = flag;
468 default :
return true;
#define OT_OBJ_TYPE_STRING(val)
#define OT_OBJ_TO_ENUM(str)
#define OT_LNG_NAME_FROM_CLASS(_cls)
#define MkBufferListC_lngO
#define OT_LNG_OBJV(__skip)
#define OT_LNG_OBJ_CLASSNAME(val)
#define OT_OBJ_TO_CLASS(obj)
#define MkErrorCheck(err)
check return-code and goto error on error …
#define MkBufferListAppendSTR(...)
static MK_BFL MkBfl(MK_MNG mng)
cast a unknown-object into an MkBufferListS pointer or NULL if not possible
#define MkBufferListCreate(...)
#define MkBufferListDelete(x)
#define MK_EXTERN
static library
MkTimeoutE
Predefined Timeout values …
MkErrorE
collection for the different error-codes …
@ MK_OK
(persistent) everything is OK.
MK_PTRB * MK_PTR
generic pointer data-type
MK_PTRB * MK_MNG
managed object pointer, datatype will be checked at runtime
MK_PTRB * MK_CBP
generic pointer to call-back data
static MK_OBJ MkObj(MK_MNG mng)
cast a unknown-object into an MkObjectS pointer or NULL if not possible
struct MkTypeS * MK_TYP
class-shortcut for struct MkTypeS *, all shortcut using the XX_YYY syntax (only for public API) …
#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 *)
The CLASS used to store a list of MkBufferS items into a flat array…
MkTypeS - class known as typ or type is used as class-base for a Managed-Object-Technology (MOT) type...