13#include "mk_check_atl.h"
16#define META_CONTEXT_S obj
27 if ((*skipP) >= objc) {
31 Tcl_ResetResult(interp);
36 check_LNG (Tcl_ListObjGetElements(interp, argsO, &myobjc, &myobjv))
goto tcl_error;
41 if (OT_LNG_NULL_IS(myobjv[0])) {
57 call->
nsO =
STRN2VAL(Tcl_GetCurrentNamespace(interp)->fullName);
92 OT_NS_T nsPtr = MoxResolveN(call->nsO);
93 if (nsPtr == NULL)
return MK_OK ;
96 MkErrorSetC_2M(
hdl,
"CallbackResolveError: INTERNAL ERROR -> callback is invalid");
100 check_LNG(Tcl_ListObjGetElements(interp,argsO,&objc,&objv)) {
105 Tcl_Command procCmd = NULL;
109 procCmd = Tcl_FindCommand (interp,
VAL2STR(arg0),nsPtr,0);
110 if (procCmd != NULL)
break;
113 if (objc == 1)
break;
115 MOX_NS_T myNsP = MoxResolveN(objv[1]);
116 if (myNsP == NULL)
break;
117 OT_OBJ_T clsNsO = MoxMy__CLASS__NN(myNsP,0);
118 if (clsNsO == NULL)
break;
119 OT_NS_T clsNsPtr = MoxResolveN(clsNsO);
120 if (clsNsPtr == NULL)
break;
121 procCmd = Tcl_FindCommand (interp,
VAL2STR(arg0),clsNsPtr,0);
122 if (procCmd == NULL)
break;
131 if (procCmd == NULL) {
133 MkErrorSetV_2M(
hdl,
"CallbackResolveError: unknown method \"%s\" in namespace \"%s\"", cbS, nsPtr->fullName);
141 call->mth = Tcl_NewObj();
142 Tcl_GetCommandFullName(interp,procCmd,call->mth);
147 if (procClass == NULL) {
173 MkErrorSetV_2M(
hdl,
"expect max '%d' additional arguments to callback but got '%d' "
176 }
else if (objc > 0) {
177 call->args = Tcl_NewListObj(objc,objv);
193 #define dbgMsg(fmt,...) printV(fmt,__VA_ARGS__)
194 #define dbgObj(obj) printLngObj(obj)
196 #define dbgMsg(fmt,...)
225 struct MkCallS *call = __data__;
234 objv[objc++] =
STR2VAL(typeName);
235 objv[objc++] =
HDL2VAL(typeHdl);
236 objv[objc++] =
HDL2VAL(objHdl);
239 if (call->
args)
MK(ProcResolveAppendArgs)(call,&objc,objv);
242 int ret =
MK(EvalObjv) (interp, objc, objv, 0);
243 if (ret != TCL_OK)
goto error;
245 Tcl_ResetResult(interp);
269 default :
return "INVALID";
279 MkLogV_3(NULL,caller,
"MkCallS[%p] : sig=%c, type=%s, isAlloc = %c\n",
281 if (call->my) {
MkLogV_3(NULL,caller,
" | my = %s\n", Tcl_GetString(call->my)); }
282 if (call->mth) {
MkLogV_3(NULL,caller,
" | mth = %s\n", Tcl_GetString(call->mth)); }
283 if (call->args) {
MkLogV_3(NULL,caller,
" | args = %s\n", Tcl_GetString(call->args)); }
286 if (obj == NULL) {
MkLogV_3(NULL,caller,
" | hdl = %p (INVALID)\n", call->hdl);
break; }
288 if (objO == NULL) {
MkLogV_3(NULL,caller,
" | hdl = %p (NO SELF)\n", call->hdl);
break; }
290 MkLogV_3(NULL,caller,
" | hdl = %s\n", Tcl_GetString(objO));
293 if (call->amkrt) {
MkLogV_3(NULL,caller,
" | amkrt = %p\n", call->amkrt); }
294 if (call->nsO) {
MkLogV_3(NULL,caller,
" | nsO = %s\n", Tcl_GetString(call->nsO)); }
#define OT_ERROR_LNG_2_META(m)
#define MkProcResolve_maxArgsLen
#define AtlGetClassFromProc(cmdT)
#define OT_REF_DECR_AND_NULL(_obj)
#define OT_REF_DECR(_obj)
#define OT_REF_INCR(_obj)
static MK_STRN sMkCallTypeEC(MkCallTypeE type)
#define MkErrorGetCode_0E()
#define MkErrorStack_1M(err)
#define MkErrorStack_0E()
#define MkErrorSetC_1E(message)
#define MkErrorAppendC_2M(m,...)
#define MkErrorSetV_2M(err, printfmt,...)
#define MkErrorSetC_2M(err, message)
MkErrorE
collection for the different error-codes …
@ MK_OK
(persistent) everything is OK.
const MK_STRB * MK_STRN
constant string 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
#define MkLogV_3(fmtobj, callfunc, printfmt,...)
static bool MkSelfExists(MK_OBJN obj)
Check if the MkObjectS::self exists …
MK_PTR MkSysCalloc(MK_OBJN fmtobj, size_t const nmemb, size_t const size)
calloc syscall with atlmkkernel error plugin
#define MkObjectDeleteCallF_CHECK
validate call to MkObjectDeleteCallF
#define MkObjectDeleteCallF_ARGS
the MkObjectDeleteCallF arguments with default names
#define MkObjectDeleteFreeF_ARGS
the MkObjectDeleteFreeF arguments with default names
#define MkRuntimeLogBufferPush()
#define MkRuntimeLogBufferPop()
#define WrongNumArgs(...)
MK_EXTERN enum MkErrorE MK_DECL MK CheckCallable(OT_Check_ARGS, MK_CBP *)