17#define OT_CHECK_BIN(val,len) OT_CHECK_BNP(val,len)
18#define OT_CHECK_BOL(val) OT_CHECK_NB1(val)
19#define OT_CHECK_I8(val) OT_CHECK_NI1(val)
20#define OT_CHECK_I16(val) OT_CHECK_NI2(val)
21#define OT_CHECK_I32(val) OT_CHECK_NI4(val)
22#define OT_CHECK_I64(val) OT_CHECK_NI8(val)
23#define OT_CHECK_FLT(val) OT_CHECK_NF4(val)
24#define OT_CHECK_DBL(val) OT_CHECK_NF8(val)
26#define OT_CHECK_L(val) OT_CHECK_BFL(val)
27#define OT_CHECK_STR(val) OT_CHECK_STRN(val)
28#define OT_CHECK_HDL(val) MK_HDL_REF_S3(OT_CHECK_) (val)
29#define OT_CHECK_NIH(val) MK_HDL_REF_S3(OT_CHECK_) (val)
35#define WrongNumArgs(...) MK(WrongNumArgs)(MK_RT_CALL __VA_ARGS__)
37#define OT_ERROR_STACK MkErrorStack_4M(hdl,__func__,__FILE__,__LINE__)
40#define LngObj_AsF MK(LngObj_AsFLT)
42#define LngObj_AsD MK(LngObj_AsDBL)
44#define LngObj_AsO MK(LngObj_AsBOL)
47#define LngObj_AsY MK(LngObj_AsI8)
49#define LngObj_AsS MK(LngObj_AsI16)
52#define LngObj_AsI MK(LngObj_AsI32)
55#define LngObj_AsW MK(LngObj_AsI64)
100 if (arg && *arg !=
'\0') {
102 }
else if ((objc-skip) < min) {
104 }
else if ((objc-skip) > max) {
106 }
else if (skip > objc) {
107 MkBufferSetV(buf,
"got '%li' additional argument(s)", skip-objc);
108 }
else if (skip <= objc) {
110 "skip=%li, objc=%li, min=%li, max=%li, arg=%s", skip, objc, min, max, arg);
112 return MkErrorVD(
"WrongNumerOfArgsError",
"%s", buf->storage.first.C);
154#ifndef OT_LNG_STRING_INIT
155 #define OT_LNG_STRING_INIT(o)
158#define Overflow_Error(type,min,max) Overflow_Error_Full(hdl,tmp,OT_LNG_STRING(obj),type,min,max)
160#define Type_Error(type) \
161 MkErrorVD("TypeError", \
162 "expect '%s' argument but got '%s' of type '%s'", \
163 type, OT_LNG_STRING(obj), OT_OBJ_TYPE_STRING(obj) \
167#define ARG3(WHAT,TYP) \
168 if (CHECK_##WHAT(obj)) { \
170 check_LNG(FUNC_##WHAT(obj)) return MK_ERROR; \
172 *retP = (MK_##TYP) tmp; \
173 } else if (CHECK_STRING(obj)) { \
174 OT_LNG_STRING_INIT(obj); \
175 MkErrorCheck(MkString2##TYP##_RT(MK_RT_CALL OT_LNG_STRING_BYTES(obj),OT_LNG_STRING_LENGTH(obj),retP)); \
177 Type_Error(MkType_##TYP); \
181 return OT_ERROR_STACK;
242#define ARG2(WHAT,TYP) \
243 if ((*skipP) >= objc) { \
244 return WrongNumArgs(hdl, (*skipP), objc, -999, +999, arg); \
246 OT_OBJ_T obj = OT_LNG_OBJV((*skipP)++); \
247 return MK(LngObj_As##TYP)(OT_Prefix_CALL hdl,obj,retP); \
#define MkBufferSetV(...)
#define MkBufferCreateTLS_T(cls, name, size)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsI32(OT_Check_ARGS, MK_I32 *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK LngObj_AsI8(OT_Prefix_ARGS MK_MNG, OT_OBJ_T, MK_I8 *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsBOL(OT_Check_ARGS, MK_BOL *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsFLT(OT_Check_ARGS, MK_FLT *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK LngObj_AsFLT(OT_Prefix_ARGS MK_MNG, OT_OBJ_T, MK_FLT *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK LngObj_AsI64(OT_Prefix_ARGS MK_MNG, OT_OBJ_T, MK_I64 *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK LngObj_AsBOOL(OT_Prefix_ARGS MK_MNG, OT_OBJ_T, bool *)
#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 Obj_AsI16(OT_Check_ARGS, MK_I16 *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK LngObj_AsDBL(OT_Prefix_ARGS MK_MNG, OT_OBJ_T, MK_DBL *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK LngObj_AsSTRN(OT_Prefix_ARGS MK_MNG, OT_OBJ_T, MK_STRN *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsI64(OT_Check_ARGS, MK_I64 *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK LngObj_AsBOL(OT_Prefix_ARGS MK_MNG, OT_OBJ_T, MK_BOL *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsDBL(OT_Check_ARGS, MK_DBL *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsBOOL(OT_Check_ARGS, bool *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK LngObj_AsI16(OT_Prefix_ARGS MK_MNG, OT_OBJ_T, MK_I16 *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsI8(OT_Check_ARGS, MK_I8 *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsLONG(OT_Check_ARGS, long *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsSTRN(OT_Check_ARGS, MK_STRN *)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK LngObj_AsI32(OT_Prefix_ARGS MK_MNG, OT_OBJ_T, MK_I32 *)
#define MkErrorVD(errcls, format,...)