theKernel 10.0
Loading...
Searching...
No Matches
LibMkKernel_tcl.c File Reference

tag: nhi1-release-250425 More...

#include "LibMkKernel_private_tcl.h"
#include <limits.h>
#include <float.h>
#include <math.h>
#include <ctype.h>
#include "mk_check_tcl.h"
#include "MkRegistry_tcl.h"
#include "tmpl/mk_misc_ObjAs_lng.h"
#include "tmpl/mk_misc_check_lng.h"
+ Include dependency graph for LibMkKernel_tcl.c:

Go to the source code of this file.

Data Structures

struct  MkAtlClassDefS
 

Macros

#define META_FILE_NAME   "MkKernel_tcl.c"
 
#define VER   TCL_OO_METHOD_VERSION_CURRENT
 
#define OtClass_ARGS   OBJCMD_ARGS
 
#define OT_SETUP_hdl_static
 
#define MkSetupTmpl()
 
#define MkCleanupTmpl()
 
#define regTclObj(str)
 
#define regTclObj2(def, str)
 
#define ErrorE_FromInt_doc   "MkErrorE [MkKernel ErrorE_FromInt value:int32]"
 
#define IdSE_FromInt_doc   "MkIdSE [MkKernel IdSE_FromInt value:int32]"
 
#define TimeoutE_FromInt_doc   "MkTimeoutE [MkKernel TimeoutE_FromInt value:int32]"
 
#define TypeE_FromInt_doc   "MkTypeE [MkKernel TypeE_FromInt value:int32]"
 
#define ErrorE_ToInt_doc   "int32 [MkKernel ErrorE_ToInt value:MkErrorE]"
 
#define ErrorE_ToString_doc   "string [MkKernel ErrorE_ToString value:MkErrorE]"
 
#define IdSE_ToInt_doc   "int32 [MkKernel IdSE_ToInt value:MkIdSE]"
 
#define IdSE_ToString_doc   "string [MkKernel IdSE_ToString value:MkIdSE]"
 
#define TimeoutE_ToInt_doc   "int32 [MkKernel TimeoutE_ToInt value:MkTimeoutE]"
 
#define TimeoutE_ToString_doc   "string [MkKernel TimeoutE_ToString value:MkTimeoutE]"
 
#define TypeE_ToInt_doc   "int32 [MkKernel TypeE_ToInt value:MkTypeE]"
 
#define TypeE_ToString_doc   "string [MkKernel TypeE_ToString value:MkTypeE]"
 
#define Cleanup_doc   "MkKernel Cleanup"
 
#define Setup_doc   "MkKernel Setup"
 
#define FRAME_UPDATE
 
#define FRAME_GET(key)
 
#define Get_Call_Cmd__SIZE   100
 
#define OT_LNG_STRING(o)
 
#define OT_LNG_STRING_BYTES(o)
 
#define OT_LNG_STRING_LENGTH(o)
 
#define OT_LNG_SKIP_TYPE   int
 
#define SIZE   20
 
#define objF   "[type<%s>, refCount<MQ=%i,TCL=%i,SHARED=%i>, ptr<MQ=%p,TCL=%p>]"
 
#define objA   type, (retObj?retObj->refCount:-1),Obj->refCount, Tcl_IsShared(Obj), retObj, (retObj?retObj->self:NULL)
 
#define regTclObj(str)
 
#define regTclObj2(def, str)
 

Functions

OT_SELF_T tclmkkernel_ClassDef (OT_ENV_T interp, OT_NS_T ns, MK_TYP classM)
 
OT_OBJ_T tclmkkernel_GetMyFromObject (OT_ENV_T interp, OT_SELF_T object)
 
MK_STRN tclmkkernel_Get_Call_Proc (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T *frameP)
 
MK_STRN tclmkkernel_Get_Call_Cmd (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T *frameP)
 
MK_STRN tclmkkernel_InfoScript (MK_RT mkrt, OT_ENV_T interp, MK_STRN script)
 
MK_STRN tclmkkernel_Get_Call_File (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T *frameP)
 
MK_I32 tclmkkernel_Get_Call_Line (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T *frameP)
 
bool tclmkkernel_Get_Call_Stack (MK_RT mkrt, OT_ENV_T interp, MK_ERR const err, int level)
 
int tclmkkernel_EnumFlagWorker (MK_RT mkrt, OT_ENV_T interp, const struct LookupEnumE *keys, OT_OBJ_T enumE, int *ret)
 
OT_SELF_T tclmkkernel_GetClassObjectFromObj (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T selfO)
 
static MK_MNG tclmkkernel_GetMNG (OT_ENV_T interp, OT_OBJ_T tclO)
 
static MkTestClassE tclmkkernel_sCheckClass (OT_ENV_T interp, OT_SELF_T tclObj, OT_CLS_T clazz, MkTestClassE def)
 
bool tclmkkernel_TestObject (OT_Prefix_ARGS OT_OBJ_T lngO, OT_CLS_T clazz, MK_OBJ *objP, MkTestClassE *flagP)
 
MK_STRN tclmkkernel_GetClassNameFromObject (OT_Prefix_ARGS OT_SELF_T object)
 
MK_STRN tclmkkernel_GetTypeFromObj (OT_Prefix_ARGS OT_OBJ_T Obj, bool *isObject)
 helper to print the type-name of a Tcl_Obj tclmkkernel::print type $RET
 
MK_STRN tclmkkernel_ClassName (OT_Prefix_ARGS OT_OBJ_T lngO, bool doShort)
 
static void tclmkkernel_LngTupleToMkBufferListS (SETUP_ARGS, int *skipP, MK_BFL *retP)
 
enum MkErrorE tclmkkernel_LngListToMkBufferListS (OT_Prefix_ARGS OT_OBJ_T argsO, MK_BFL *retP)
 
enum MkErrorE tclmkkernel_Obj_AsSTRN (OT_Check_ARGS, MK_STRN *retP)
 
enum MkErrorE tclmkkernel_Obj_AsSTR_COPY (OT_Check_ARGS, MK_STR ret, size_t size)
 
int tclmkkernel_EvalObjvVA (OT_ENV_T interp, int flags,...)
 
OT_OBJ_T tclmkkernel_EvalObjvAR (OT_VARFRAME_ARGS, OT_ENV_T interp, int flags, int objc, OT_OBJ_T *objv)
 
int tclmkkernel_FillNamespace (OT_ENV_T interp, OT_NS_T ns, const OtObjProcDefS type[], ClientData clientData)
 
MK_STRN tclmkkernel_ObjvToString (MK_RT mkrt, MK_STRN cls, TCL_ARGS)
 
MK_STR tclmkkernel_PrintLngObj (OT_Prefix_ARGS MK_STRN header, OT_OBJ_T Obj)
 helper to print a Tcl_Obj tclmkkernel::print object $RET
 
static void tclmkkernel_AtomMetaDelete (MK_MNG mng)
 
static int tclmkkernel_AtomMetaClone (OT_ENV_T interp, ClientData clientData, ClientData *out)
 
static int tclmkkernel_Print_Class_Cmd (OtClass_ARGS)
  tclmkkernel::print object|type tclObj
 
static int tclmkkernel_Const_Class_Cmd (OtClass_ARGS)
  tclObj [tclmkkernel::const maxY|minY|maxS|minS|maxI|minI|maxF|minF|maxW|minW|maxD|minD]
 
static OT_ProcRet tclmkkernel_MkKernel_ErrorE_FromInt (OtClass_ARGS)
  Tcl: (static) MkErrorE [MkKernel ErrorE_FromInt value:int32] C-API
return the MkErrorE from integer …
 
static OT_ProcRet tclmkkernel_MkKernel_IdSE_FromInt (OtClass_ARGS)
  Tcl: (static) MkIdSE [MkKernel IdSE_FromInt value:int32] C-API
return the MkIdSE from integer …
 
static OT_ProcRet tclmkkernel_MkKernel_TimeoutE_FromInt (OtClass_ARGS)
  Tcl: (static) MkTimeoutE [MkKernel TimeoutE_FromInt value:int32] C-API
return the MkTimeoutE from integer …
 
static OT_ProcRet tclmkkernel_MkKernel_TypeE_FromInt (OtClass_ARGS)
  Tcl: (static) MkTypeE [MkKernel TypeE_FromInt value:int32] C-API
return the MkTypeE from integer …
 
static OT_ProcRet tclmkkernel_MkKernel_ErrorE_ToInt (OtClass_ARGS)
  Tcl: (static) int32 [MkKernel ErrorE_ToInt value:MkErrorE] C-API
return the MkErrorE as integer …
 
static OT_ProcRet tclmkkernel_MkKernel_ErrorE_ToString (OtClass_ARGS)
  Tcl: (static) string [MkKernel ErrorE_ToString value:MkErrorE] C-API
return the MkErrorE as string …
 
static OT_ProcRet tclmkkernel_MkKernel_IdSE_ToInt (OtClass_ARGS)
  Tcl: (static) int32 [MkKernel IdSE_ToInt value:MkIdSE] C-API
return the MkIdSE as integer …
 
static OT_ProcRet tclmkkernel_MkKernel_IdSE_ToString (OtClass_ARGS)
  Tcl: (static) string [MkKernel IdSE_ToString value:MkIdSE] C-API
return the MkIdSE as string …
 
static OT_ProcRet tclmkkernel_MkKernel_TimeoutE_ToInt (OtClass_ARGS)
  Tcl: (static) int32 [MkKernel TimeoutE_ToInt value:MkTimeoutE] C-API
return the MkTimeoutE as integer …
 
static OT_ProcRet tclmkkernel_MkKernel_TimeoutE_ToString (OtClass_ARGS)
  Tcl: (static) string [MkKernel TimeoutE_ToString value:MkTimeoutE] C-API
return the MkTimeoutE as string …
 
static OT_ProcRet tclmkkernel_MkKernel_TypeE_ToInt (OtClass_ARGS)
  Tcl: (static) int32 [MkKernel TypeE_ToInt value:MkTypeE] C-API
return the MkTypeE as integer …
 
static OT_ProcRet tclmkkernel_MkKernel_TypeE_ToString (OtClass_ARGS)
  Tcl: (static) string [MkKernel TypeE_ToString value:MkTypeE] C-API
return the MkTypeE as string …
 
static OT_ProcRet tclmkkernel_MkKernel_Cleanup (OtClass_ARGS)
  Tcl: (static) MkKernel Cleanup C-API
cleanup tclmkkernel internal memory …
 
static OT_ProcRet tclmkkernel_MkKernel_Setup (OtClass_ARGS)
  Tcl: (static) MkKernel Setup C-API
setup tclmkkernel internal memory …
 
OT_TCL_EXTERN int Tclmkkernel_Unload (OT_ENV_T interp, int flags)
 
Enum From Obj
int tclmkkernel_Get_MkErrorE_FromObj (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T enumE, enum MkErrorE *ret)
 
int tclmkkernel_Get_MkIdSE_FromObj (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T enumE, enum MkIdSE *ret)
 
int tclmkkernel_Get_MkTimeoutE_FromObj (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T enumE, enum MkTimeoutE *ret)
 
int tclmkkernel_Get_MkTypeE_FromObj (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T enumE, enum MkTypeE *ret)
 
Enum To String
OT_OBJ_T tclmkkernel_MkBoolE_ToString (const enum MkBoolE type)
 
OT_OBJ_T tclmkkernel_MkErrorE_ToString (const enum MkErrorE type)
 
OT_OBJ_T tclmkkernel_MkIdSE_ToString (const enum MkIdSE type)
 
OT_OBJ_T tclmkkernel_MkNativeIsE_ToString (const enum MkNativeIsE type)
 
OT_OBJ_T tclmkkernel_MkTimeoutE_ToString (const enum MkTimeoutE type)
 
OT_OBJ_T tclmkkernel_MkTypeE_ToString (const enum MkTypeE type)
 

Variables

const Tcl_ObjType * tclmkkernel_tcl_LONG = NULL
 
const Tcl_ObjType * tclmkkernel_tcl_WIDE = NULL
 
const Tcl_ObjType * tclmkkernel_tcl_DOUBLE = NULL
 
const Tcl_ObjType * tclmkkernel_tcl_BOOLEAN = NULL
 
const Tcl_ObjType * tclmkkernel_tcl_INDEX = NULL
 
__thread OT_OBJ_T tclmkkernel_reggv [100] = {0}
 
const Tcl_ObjectMetadataType tclmkkernel_AtomMeta
 
static const OtObjProcDefS tclmkkernel_sOtClassDef []
 
static const OtObjProcDefS tclmkkernel_sInstanceDef []
 

Detailed Description

tag: nhi1-release-250425

Definition in file LibMkKernel_tcl.c.

Macro Definition Documentation

◆ Cleanup_doc

#define Cleanup_doc   "MkKernel Cleanup"

Definition at line 180 of file LibMkKernel_tcl.c.

◆ ErrorE_FromInt_doc

#define ErrorE_FromInt_doc   "MkErrorE [MkKernel ErrorE_FromInt value:int32]"

Definition at line 164 of file LibMkKernel_tcl.c.

◆ ErrorE_ToInt_doc

#define ErrorE_ToInt_doc   "int32 [MkKernel ErrorE_ToInt value:MkErrorE]"

Definition at line 170 of file LibMkKernel_tcl.c.

◆ ErrorE_ToString_doc

#define ErrorE_ToString_doc   "string [MkKernel ErrorE_ToString value:MkErrorE]"

Definition at line 171 of file LibMkKernel_tcl.c.

◆ FRAME_GET

#define FRAME_GET ( key)
Value:
OT_OBJ_T key = NULL; \
Tcl_DictObjGet(interp,*frameP,RG(key),&key); \
#define RG(_key)
Tcl_Obj * OT_OBJ_T

Definition at line 293 of file LibMkKernel_tcl.c.

293#define FRAME_GET(key) \
294 OT_OBJ_T key = NULL; \
295 Tcl_DictObjGet(interp,*frameP,RG(key),&key); \
296

◆ FRAME_UPDATE

#define FRAME_UPDATE
Value:
if (*frameP == NULL) { \
RL_init( RL_O(0,RG(infoFrameCmd)) RL_NewC(1,0) ) \
OT_OBJ_T ret = MK(EvalObjvAR)(MK_RT_CALL NULL,interp,0,RL_objv(2)); \
/* check_NULL(ret) OT_ERROR_ABNORMAL(MK_ERROR_PANIC); */ \
Tcl_IncrRefCount(ret); \
*frameP = ret; \
}
#define MK(n)
#define RL_objv(num)
#define RL_NewC(num, str)
#define RL_O(num, obj)
#define MK_RT_CALL

Definition at line 284 of file LibMkKernel_tcl.c.

284#define FRAME_UPDATE \
285 if (*frameP == NULL) { \
286 RL_init( RL_O(0,RG(infoFrameCmd)) RL_NewC(1,0) ) \
287 OT_OBJ_T ret = MK(EvalObjvAR)(MK_RT_CALL NULL,interp,0,RL_objv(2)); \
288 /* check_NULL(ret) OT_ERROR_ABNORMAL(MK_ERROR_PANIC); */ \
289 Tcl_IncrRefCount(ret); \
290 *frameP = ret; \
291 }

◆ Get_Call_Cmd__SIZE

#define Get_Call_Cmd__SIZE   100

◆ IdSE_FromInt_doc

#define IdSE_FromInt_doc   "MkIdSE [MkKernel IdSE_FromInt value:int32]"

Definition at line 165 of file LibMkKernel_tcl.c.

◆ IdSE_ToInt_doc

#define IdSE_ToInt_doc   "int32 [MkKernel IdSE_ToInt value:MkIdSE]"

Definition at line 172 of file LibMkKernel_tcl.c.

◆ IdSE_ToString_doc

#define IdSE_ToString_doc   "string [MkKernel IdSE_ToString value:MkIdSE]"

Definition at line 173 of file LibMkKernel_tcl.c.

◆ META_FILE_NAME

#define META_FILE_NAME   "MkKernel_tcl.c"

Definition at line 11 of file LibMkKernel_tcl.c.

◆ MkCleanupTmpl

#define MkCleanupTmpl ( )

Definition at line 35 of file LibMkKernel_tcl.c.

◆ MkSetupTmpl

#define MkSetupTmpl ( )

Definition at line 34 of file LibMkKernel_tcl.c.

◆ objA

#define objA   type, (retObj?retObj->refCount:-1),Obj->refCount, Tcl_IsShared(Obj), retObj, (retObj?retObj->self:NULL)

◆ objF

#define objF   "[type<%s>, refCount<MQ=%i,TCL=%i,SHARED=%i>, ptr<MQ=%p,TCL=%p>]"

◆ OT_LNG_SKIP_TYPE

#define OT_LNG_SKIP_TYPE   int

Definition at line 709 of file LibMkKernel_tcl.c.

◆ OT_LNG_STRING

#define OT_LNG_STRING ( o)
Value:
Tcl_GetString(o)

Definition at line 705 of file LibMkKernel_tcl.c.

◆ OT_LNG_STRING_BYTES

#define OT_LNG_STRING_BYTES ( o)
Value:
o->bytes

Definition at line 707 of file LibMkKernel_tcl.c.

◆ OT_LNG_STRING_LENGTH

#define OT_LNG_STRING_LENGTH ( o)
Value:
o->length

Definition at line 708 of file LibMkKernel_tcl.c.

◆ OT_SETUP_hdl_static

#define OT_SETUP_hdl_static
Value:
int __skip=1;\
/* printAry2("cmd",objc,objv); */ \
__attribute__((unused)) MK_RT mkrt = MkRT; \
__attribute__((unused)) MK_ERR hdl = &MkERROR;
#define MkERROR
#define MkRT
The data-type to store and handle the error-condition …
The MkRuntimeS provide a per-thread environment for tclmkkernel …

Definition at line 19 of file LibMkKernel_tcl.c.

19#define OT_SETUP_hdl_static \
20 int __skip=1;\
21 /* printAry2("cmd",objc,objv); */ \
22 __attribute__((unused)) MK_RT mkrt = MkRT; \
23 __attribute__((unused)) MK_ERR hdl = &MkERROR;

◆ OtClass_ARGS

#define OtClass_ARGS   OBJCMD_ARGS

Definition at line 17 of file LibMkKernel_tcl.c.

◆ regTclObj [1/2]

#define regTclObj ( str)
Value:
int MK(str);
#define str(s)

Definition at line 153 of file LibMkKernel_tcl.c.

◆ regTclObj [2/2]

#define regTclObj ( str)
Value:
MK(reggv)[MK(str)=key++] = Tcl_NewStringObj(#str,-1);Tcl_IncrRefCount(MK(reggv)[MK(str)]);

Definition at line 153 of file LibMkKernel_tcl.c.

◆ regTclObj2 [1/2]

#define regTclObj2 ( def,
str )
Value:
int MK(def);

Definition at line 154 of file LibMkKernel_tcl.c.

◆ regTclObj2 [2/2]

#define regTclObj2 ( def,
str )
Value:
MK(reggv)[MK(def)=key++] = Tcl_NewStringObj(str,-1);Tcl_IncrRefCount(MK(reggv)[MK(def)]);

Definition at line 154 of file LibMkKernel_tcl.c.

◆ Setup_doc

#define Setup_doc   "MkKernel Setup"

Definition at line 181 of file LibMkKernel_tcl.c.

◆ SIZE

#define SIZE   20

◆ TimeoutE_FromInt_doc

#define TimeoutE_FromInt_doc   "MkTimeoutE [MkKernel TimeoutE_FromInt value:int32]"

Definition at line 166 of file LibMkKernel_tcl.c.

◆ TimeoutE_ToInt_doc

#define TimeoutE_ToInt_doc   "int32 [MkKernel TimeoutE_ToInt value:MkTimeoutE]"

Definition at line 174 of file LibMkKernel_tcl.c.

◆ TimeoutE_ToString_doc

#define TimeoutE_ToString_doc   "string [MkKernel TimeoutE_ToString value:MkTimeoutE]"

Definition at line 175 of file LibMkKernel_tcl.c.

◆ TypeE_FromInt_doc

#define TypeE_FromInt_doc   "MkTypeE [MkKernel TypeE_FromInt value:int32]"

Definition at line 167 of file LibMkKernel_tcl.c.

◆ TypeE_ToInt_doc

#define TypeE_ToInt_doc   "int32 [MkKernel TypeE_ToInt value:MkTypeE]"

Definition at line 176 of file LibMkKernel_tcl.c.

◆ TypeE_ToString_doc

#define TypeE_ToString_doc   "string [MkKernel TypeE_ToString value:MkTypeE]"

Definition at line 177 of file LibMkKernel_tcl.c.

◆ VER

#define VER   TCL_OO_METHOD_VERSION_CURRENT

Definition at line 12 of file LibMkKernel_tcl.c.

Function Documentation

◆ tclmkkernel_AtomMetaClone()

static int tclmkkernel_AtomMetaClone ( OT_ENV_T interp,
ClientData clientData,
ClientData * out )
static

Definition at line 1139 of file LibMkKernel_tcl.c.

1140{
1141 *out = clientData;
1142 return TCL_OK;
1143}

◆ tclmkkernel_AtomMetaDelete()

static void tclmkkernel_AtomMetaDelete ( MK_MNG mng)
static

ATOM API

Definition at line 1128 of file LibMkKernel_tcl.c.

1129{
1130 check_NULL(mng) return;
1131 MK_OBJ obj = MkObj(mng);
1132 check_NULL(obj) return;
1133 MkRtSetup_ON(obj);
1134//printObjO(obj);
1135 // SELF is alredy "dead"
1137}
#define check_NULL(code)
static MK_OBJ MkObj(MK_MNG mng)
cast a unknown-object into an MkObjectS pointer or NULL if not possible
#define MkRefDecrWithoutSelf(...)
#define MkRtSetup_ON(o)
object header …

◆ tclmkkernel_ClassDef()

OT_SELF_T tclmkkernel_ClassDef ( OT_ENV_T interp,
OT_NS_T ns,
MK_TYP classM )

Definition at line 193 of file LibMkKernel_tcl.c.

197 {
198
199 // save base-class "::oo::class" for later use
200 static MkThreadLocal struct MkAtlClassDefS def = {0};
201
202 Tcl_ResetResult(interp);
203
204 while (def.ooclassC == NULL) {
205 OT_OBJ_T objPtr = Tcl_NewStringObj("::oo::class", -1);
206 OT_SELF_T ooclassO = Tcl_GetObjectFromObj(interp, objPtr);
207 Tcl_DecrRefCount(objPtr);
208 check_NULL(ooclassO) goto error_ooclassC;
209 def.ooclassC = Tcl_GetObjectAsClass(ooclassO);
210 break;
211error_ooclassC:
212 Tcl_AppendResult(interp, "\nCLASS-SETUP-ERROR: unable to setup '::oo::class'", NULL);
213 return NULL;
214 }
215
216 OT_OBJ_T cmdO = Tcl_ObjPrintf("%s::%s", ns->fullName, classM->type_class->type_name);
217 OT_REF_INCR(cmdO);
218 const char* cmdbuf = Tcl_GetString(cmdO);
219
220//printC(cmdbuf)
221 OT_SELF_T classO = Tcl_NewObjectInstance(interp,def.ooclassC,cmdbuf,cmdbuf,0, NULL, 0);
222 check_NULL(classO) goto error;
223
224 OT_OBJ_T classObj = Tcl_GetObjectName(interp,classO);
225 Tcl_IncrRefCount(classObj);
226 def.ooRefC[def.count] = classObj;
227 MkSelfSet_3X(classM, (MK_PTR) def.count, interp); // save reference on Tcl-Class in MQ-Type-Self
228
229//printV("class=%-40s, pos=%ld", classM->type_name, def.count);
230
231 def.count++;
232
233//printV("name=%s, base=%p\n", classM->type_name, classM->type_base);
234
235 // If base was defined - create a "tcl superclass" from MQ-Type-Self
236 // > silent assume that "MkObjectC" is always FIRST !!
237 if (def.count != 1 && classM->type_base != NULL /* && classM->type_base != MkTypeDefSTT && classM->type_base != MqTypeCtxSTT */ ) {
238 OT_OBJ_T super = def.ooRefC[(long) (MkOBJ_R(classM->type_base).self ? MkOBJ_R(classM->type_base).self : 0)];
239//printV("cmdbuf=%s, type_name=%s, base=%s\n", cmdbuf, classM->type_name, Tcl_GetStringFromObj(super,NULL));
240/*
241 // PROBLEM: MK(pMkObjectC_Init) not called -< code down create an EMPTY class
242 check_NULL(super)
243 super = Tcl_GetObjectName(interp, MK(ClassDef)(interp, ns, classM->type_base));
244*/
245 check_NULL(super) {
246 Tcl_AppendResult(interp, "\nCLASS-SETUP-ERROR: class '", classM->type_base->type_name,
247 "' has EMPTY base SELF pointer", NULL);
248 goto error;
249 }
250//printV("class=%-40s, super=%s", VAL2STR(cmdO), VAL2STR(super))
251 RL_init( RL_NewS(0,"::oo::define") RL_NewC(2,superclass) ) ; RL_O(1,cmdO) ; RL_O(3,super)
252 check_LNG(Tcl_EvalObjv(interp, 4, RL_data, TCL_EVAL_GLOBAL)) goto error;
253 }
254
255 OT_REF_DECR(cmdO);
256 return classO;
257error:
258 Tcl_AppendResult(interp, "\nCLASS-SETUP-ERROR: found at '", __func__, "'", NULL);
259 OT_REF_DECR(cmdO);
260 return NULL;
261}
#define RL_NewS(num, str)
#define check_LNG(code)
Tcl_Object OT_SELF_T
#define RL_init(code)
#define OT_REF_DECR(_obj)
#define OT_REF_INCR(_obj)
MK_PTRB * MK_PTR
generic pointer data-type
#define MkOBJ_R(x)
cast a known-object into an MkObjectS reference
#define MkSelfSet_3X(x, self, env)
#define MkThreadLocal
OT_OBJ_T ooRefC[100]
MK_TYP type_class
point to the instancesR linked list of the class-type
MK_STRB type_name[MkTypeS_name_size]
public name of the type like TclMqContextC
MK_TYP type_base
base type

◆ tclmkkernel_ClassName()

MK_STRN tclmkkernel_ClassName ( OT_Prefix_ARGS OT_OBJ_T lngO,
bool doShort )

Definition at line 605 of file LibMkKernel_tcl.c.

610{
611 static MkThreadLocal char buffer[50] = {0};
612 strncpy(buffer,lngO->typePtr ? lngO->typePtr->name : "unknown", 50);
613 buffer[50-1] = '\0';
614 OT_OBJ_T classO = NULL;
615
616 OT_SELF_T objO = Tcl_GetObjectFromObj (interp, lngO);
617 if (objO == NULL) goto type;
618
619 OT_CLS_T cls = Tcl_GetObjectAsClass(objO);
620 if (cls) {
621 classO = Tcl_GetObjectName(interp, objO);
622 goto end;
623 }
624
625 RL_init( RL_O(0,RG(infoObjectClassCmd)) ) ; RL_O(1,lngO)
626 classO = MK(EvalObjvAR)(MK_RT_CALL NULL,interp,0,RL_objv(2));
627
628end:
629 if (classO != NULL) {
630 MK_STRN name = Tcl_GetString(classO);
631 if (doShort) {
632 // from: NamespaceTailCmd --------------------------
633 const char *p;
634 for (p = name; *p != '\0'; p++) {
635 /* empty body */
636 }
637 while (--p > name) {
638 if ((*p == ':') && (*(p-1) == ':')) {
639 p++; /* Just after the last "::" */
640 break;
641 }
642 }
643
644 if (p >= name) {
645 name = p;
646 }
647 // ------------------------------------------------
648 }
649 return name;
650 } else {
651 return "unknown";
652 }
653type:
654 if (strcmp(buffer,"cmdName")==0) {
655 return Tcl_GetString(lngO);
656 } else {
657 return buffer;
658 }
659}
Tcl_Class OT_CLS_T
const MK_STRB * MK_STRN
constant string pointer data-type

◆ tclmkkernel_EnumFlagWorker()

int tclmkkernel_EnumFlagWorker ( MK_RT mkrt,
OT_ENV_T interp,
const struct LookupEnumE * keys,
OT_OBJ_T enumE,
int * ret )

Definition at line 428 of file LibMkKernel_tcl.c.

429{
430 // read flag enum
431 int valI = 0;
432 int index = 0;
433 int objc = 0;
434 OT_OBJ_T *objv = NULL;
435 OtErrorCheckLng(Tcl_ListObjGetElements(interp,enumE,&objc,&objv));
436 for (int i=0; i<objc; i++) {
437 OtErrorCheckLng (Tcl_GetIndexFromObjStruct (interp, objv[i], keys,
438 sizeof(struct LookupClassS), "enum", TCL_EXACT, &index));
439 valI |= keys[index].val;
440 }
441//myprint(valI);
442 *ret = valI;
443 return TCL_OK;
444}
#define OtErrorCheckLng(cmd)

◆ tclmkkernel_EvalObjvAR()

OT_OBJ_T tclmkkernel_EvalObjvAR ( OT_VARFRAME_ARGS ,
OT_ENV_T interp,
int flags,
int objc,
OT_OBJ_T * objv )

Definition at line 838 of file LibMkKernel_tcl.c.

845{
846//printAry2("objv",objc,objv)
847 int ret = Tcl_EvalObjv (interp, objc, objv, flags);
848 //int ret = MK(EvalObjv) (interp, objc, objv, flags);
849 check_LNG(ret) return NULL;
850 OT_OBJ_T result = OT_VARFRAME_OBJ_RESULT(interp);
851//printLng(result)
852 return result;
853}
#define OT_VARFRAME_OBJ_RESULT(itp)

◆ tclmkkernel_EvalObjvVA()

int tclmkkernel_EvalObjvVA ( OT_ENV_T interp,
int flags,
... )

Definition at line 778 of file LibMkKernel_tcl.c.

782 {
783 #define SIZE 20
784 int objc;
785 OT_OBJ_T objv[SIZE];
786 va_list ap;
787 va_start(ap, flags);
788 for (objc=0; (objv[objc]=(OT_OBJ_T )va_arg(ap,OT_OBJ_T )) != NULL; objc++) {
789 //Tcl_IncrRefCount(objv[objc]);
790 if (objc >= (SIZE-1)) {
791 Tcl_SetResult(interp, "EVAL-ERROR: size in MkEvalObjvVA is limited to " xstr(SIZE), TCL_STATIC);
792 return TCL_ERROR;
793 }
794 }
795 va_end(ap);
796//printAry2(__func__,objc,objv)
797 int ret;
798 //for (i=0;i<objc;i++) Tcl_IncrRefCount(objv[i]);
799 ret = Tcl_EvalObjv (interp, objc, objv, flags);
800 //for (i=0;i<objc;i++) Tcl_DecrRefCount(objv[i]);
801 return ret;
802 #undef SIZE
803}
#define SIZE
#define xstr(s)

◆ tclmkkernel_FillNamespace()

int tclmkkernel_FillNamespace ( OT_ENV_T interp,
OT_NS_T ns,
const OtObjProcDefS type[],
ClientData clientData )

Definition at line 909 of file LibMkKernel_tcl.c.

914 {
915 Tcl_DString buffer;
916 // 2. create commands
917 for (int i=0; type[i].version != 0; i++) {
918 Tcl_DStringInit(&buffer);
919 Tcl_DStringAppend(&buffer,ns->fullName,-1);
920 Tcl_DStringAppend(&buffer,"::",-1);
921 Tcl_DStringAppend(&buffer,type[i].name,-1);
922 check_NULL ( Tcl_CreateObjCommand(interp, Tcl_DStringValue(&buffer),
923 type[i].callProc,clientData,type[i].deleteProc))
924 goto error;
925 }
926 return TCL_OK;
927error:
928 return TCL_ERROR;
929}

◆ tclmkkernel_Get_Call_Cmd()

MK_STRN tclmkkernel_Get_Call_Cmd ( MK_RT mkrt,
OT_ENV_T interp,
OT_OBJ_T * frameP )

Definition at line 309 of file LibMkKernel_tcl.c.

309 {
310#define Get_Call_Cmd__SIZE 100
311 static MkThreadLocal char buffer[Get_Call_Cmd__SIZE+10];
313 FRAME_GET(cmd)
314 if (cmd == NULL) goto error;
315 int len;
316 char* str = Tcl_GetStringFromObj(cmd, &len);
317 if (len > Get_Call_Cmd__SIZE) {
318 strncpy(buffer,str,Get_Call_Cmd__SIZE);
319 char* nl=strchr(buffer,'\n');
320 if (nl)
321 *nl='\0';
322 else
323 buffer[Get_Call_Cmd__SIZE] = '\0';
324 strcat(buffer," ...");
325 return buffer;
326 } else {
327 return str;
328 }
329error:
330 Tcl_ResetResult(interp);
331 FRAME_GET(type)
332 return Tcl_GetStringFromObj(type,NULL);
333#undef Get_Call_Cmd__SIZE
334}
#define Get_Call_Cmd__SIZE
#define FRAME_UPDATE
#define FRAME_GET(key)

◆ tclmkkernel_Get_Call_File()

MK_STRN tclmkkernel_Get_Call_File ( MK_RT mkrt,
OT_ENV_T interp,
OT_OBJ_T * frameP )

Definition at line 346 of file LibMkKernel_tcl.c.

346 {
348 FRAME_GET(file)
349 if (file == NULL) goto error;
350 return Tcl_GetStringFromObj(file,NULL);
351error: {
352 MK_STRN script = MK(InfoScript)(MK_RT_CALL interp,NULL);
353 check_NULL(script) goto error1;
354 return script;
355 }
356error1:
357 Tcl_ResetResult(interp);
358 FRAME_GET(type)
359 return Tcl_GetStringFromObj(type,NULL);
360}

◆ tclmkkernel_Get_Call_Line()

MK_I32 tclmkkernel_Get_Call_Line ( MK_RT mkrt,
OT_ENV_T interp,
OT_OBJ_T * frameP )

Definition at line 362 of file LibMkKernel_tcl.c.

362 {
364 FRAME_GET(line)
365 if (line == NULL) goto error;
366 MK_I32 lineI = -1;
367 if (Tcl_GetIntFromObj(NULL,line,&lineI)==TCL_ERROR) goto error;
368 return lineI;
369error:
370 Tcl_ResetResult(interp);
371 return -1;
372}
signed int MK_I32
4 byte integer data-type

◆ tclmkkernel_Get_Call_Proc()

MK_STRN tclmkkernel_Get_Call_Proc ( MK_RT mkrt,
OT_ENV_T interp,
OT_OBJ_T * frameP )

Definition at line 297 of file LibMkKernel_tcl.c.

297 {
298 OT_OBJ_T retObj = NULL;
300 FRAME_GET(method)
301 if (method != NULL) {retObj = method; goto end;}
302 FRAME_GET(proc)
303 if (proc != NULL) {retObj = proc; goto end;}
304 return "main";
305end:
306 return Tcl_GetStringFromObj(retObj,NULL);;
307}

◆ tclmkkernel_Get_Call_Stack()

bool tclmkkernel_Get_Call_Stack ( MK_RT mkrt,
OT_ENV_T interp,
MK_ERR const err,
int level )

Definition at line 375 of file LibMkKernel_tcl.c.

375 {
376 //Tcl_ResetResult(interp);
377 RL_init( RL_O(0,RG(infoFrameCmd)) ) ; RL_NewI(1,level)
378//printAryX(err,"Get_Call_Stack",3,RL_data)
379 OT_OBJ_T frame = MK(EvalObjvAR)(MK_RT_CALL NULL,interp, TCL_EVAL_NOERR, RL_objv(2));
380 check_NULL(frame) goto error;
381 Tcl_IncrRefCount(frame);
382 //MkErrorStackFormat(err,"mark","mark",-1);
384 MK(Get_Call_Cmd)(MK_RT_CALL interp,&frame),
385 MK(Get_Call_File)(MK_RT_CALL interp,&frame),
386 MK(Get_Call_Line)(MK_RT_CALL interp,&frame)
387 );
388 Tcl_DecrRefCount(frame);
389 RL_Free(1)
390 return true;
391error:
392 Tcl_ResetResult(interp);
393 return false;
394}
#define RL_Free(num)
#define RL_NewI(num, itg)
#define MkErrorStackFormat(...)

◆ tclmkkernel_GetClassNameFromObject()

MK_STRN tclmkkernel_GetClassNameFromObject ( OT_Prefix_ARGS OT_SELF_T object)

Definition at line 552 of file LibMkKernel_tcl.c.

555 {
556 OT_CLS_T cls = Tcl_GetObjectAsClass(object);
557 // the "type" of a "Class" is "Class"
558 //return OT_LNG_NAME_FROM_OBJECT(object);
559 if (cls != NULL) return "Class";
560/*
561 if (cls != NULL) {
562 // delete namespace
563 char * run = Tcl_GetString(Tcl_GetObjectName(interp,object));
564 char * last = run;
565 while (*run != '\0') {
566 if (*run == ':') last = run+1;
567 run++;
568 }
569 return last;
570 }
571*/
572
573 // only a real object
574 RL_init( RL_O(0,RG(infoObjectClassCmd)) ) ; RL_O(1,Tcl_GetObjectName(interp,object))
575 OT_OBJ_T classO = MK(EvalObjvAR)(MK_RT_CALL NULL,interp,0,RL_objv(2));
576 check_NULL(classO) return Tcl_GetStringResult(interp);
577 return OT_LNG_NAME_FROM_OBJ(classO);
578}
#define OT_LNG_NAME_FROM_OBJ(_obj)

◆ tclmkkernel_GetClassObjectFromObj()

OT_SELF_T tclmkkernel_GetClassObjectFromObj ( MK_RT mkrt,
OT_ENV_T interp,
OT_OBJ_T selfO )

Definition at line 451 of file LibMkKernel_tcl.c.

451 {
452 //MkRtSetup_NULL;
453 //printLngObj(selfO);
454 RL_init( RL_O(0,RG(infoObjectClassCmd)) ) ; RL_O(1,selfO)
455 OT_OBJ_T clsObj = MK(EvalObjvAR)(MK_RT_CALL NULL,interp,TCL_EVAL_GLOBAL, RL_objv(2));
456 check_NULL(clsObj) goto error;
457 return Tcl_GetObjectFromObj(interp, clsObj);
458error:
459 return NULL;
460}

◆ tclmkkernel_GetMNG()

static MK_MNG tclmkkernel_GetMNG ( OT_ENV_T interp,
OT_OBJ_T tclO )
inlinestatic

Definition at line 462 of file LibMkKernel_tcl.c.

466{
467 OT_SELF_T objO = Tcl_GetObjectFromObj (interp, tclO);
468 if (objO == NULL) return NULL;
469 return Tcl_ObjectGetMetadata(objO, &MK(AtomMeta));
470}

◆ tclmkkernel_GetMyFromObject()

OT_OBJ_T tclmkkernel_GetMyFromObject ( OT_ENV_T interp,
OT_SELF_T object )

Definition at line 267 of file LibMkKernel_tcl.c.

267 {
268 OT_NS_T ns = Tcl_GetObjectNamespace(object);
269 Tcl_Command myCmdC = Tcl_FindCommand(interp, "my", ns, TCL_NAMESPACE_ONLY|TCL_LEAVE_ERR_MSG);
270 check_NULL(myCmdC) goto error;
271
272 OT_OBJ_T myCmdO = Tcl_NewObj();
273 Tcl_GetCommandFullName(interp,myCmdC,myCmdO);
274
275 return myCmdO;
276error:
277 return NULL;
278}
Tcl_Namespace * OT_NS_T

◆ tclmkkernel_GetTypeFromObj()

MK_STRN tclmkkernel_GetTypeFromObj ( OT_Prefix_ARGS OT_OBJ_T Obj,
bool * isObject )

helper to print the type-name of a Tcl_Obj tclmkkernel::print type $RET

Definition at line 582 of file LibMkKernel_tcl.c.

587{
588 static MkThreadLocal char buf[50];
589 strncpy(buf, Obj->typePtr ? Obj->typePtr->name : "unknown", 50);
590 buf[50-1] = '\0';
591
592 if (strcmp(buf,"unknown")!=0 && strcmp(buf,"string")!=0 && strcmp(buf,"cmdName")!=0)
593 goto end;
594
595 OT_SELF_T object = Tcl_GetObjectFromObj(interp,Obj);
596 if (object) {
597 if (isObject) *isObject=true;
598 return MK(GetClassNameFromObject)(OT_Prefix_CALL object);
599 }
600end:
601 if (isObject) *isObject=false;
602 return buf;
603}
#define OT_Prefix_CALL

◆ tclmkkernel_InfoScript()

MK_STRN tclmkkernel_InfoScript ( MK_RT mkrt,
OT_ENV_T interp,
MK_STRN script )

Definition at line 336 of file LibMkKernel_tcl.c.

337{
338 RL_init( RL_O(0,RG(infoScriptCmd)) )
339 if (script) RL_NewS(1,script)
340 OT_OBJ_T ret = MK(EvalObjvAR)(MK_RT_CALL NULL, interp, 0, RL_objv(script?2:1));
341 if (script) Tcl_DecrRefCount(RL_data[1]);
342 check_NULL(ret) return NULL;
343 return Tcl_GetStringFromObj(ret,NULL);
344}

◆ tclmkkernel_LngListToMkBufferListS()

enum MkErrorE tclmkkernel_LngListToMkBufferListS ( OT_Prefix_ARGS OT_OBJ_T argsO,
MK_BFL * retP )

Definition at line 679 of file LibMkKernel_tcl.c.

684{
685 if (argsO == NULL) {
686 return MK_OK;
687 } else {
688 int __skip=0;
689 int listObjc;
690 OT_OBJ_T * listObjv;
691 OtErrorCheckLngGoto (Tcl_ListObjGetElements(interp,argsO,&listObjc,&listObjv));
692 MK(LngTupleToMkBufferListS)( MK_RT_CALL interp,listObjc,listObjv,&__skip,retP);
693 }
694 return MK_OK;
695error:
696 return MK_ERROR;
697}
#define OtErrorCheckLngGoto(cmd)
@ MK_ERROR
(persistent) raise an error-event, the calling-fucntion is interrupted.
@ MK_OK
(persistent) everything is OK.

◆ tclmkkernel_LngTupleToMkBufferListS()

static void tclmkkernel_LngTupleToMkBufferListS ( SETUP_ARGS ,
int * skipP,
MK_BFL * retP )
static

Definition at line 661 of file LibMkKernel_tcl.c.

665 {
666 MK_BFL retVal = *retP;
667 int __skip = *skipP;
668
669 if (retVal == NULL) retVal = MkBufferListCreate (objc-__skip);
670 else MkBufferListReserve(retVal,objc-__skip);
671 for (int i=__skip; i<objc; i++) {
672 MkBufferListIndexSetSTR(retVal, i-__skip, VAL2STR(objv[i]));
673 }
674
675 *skipP = objc;
676 *retP = retVal;
677}
#define VAL2STR(obj)
#define MkBufferListIndexSetSTR(...)
#define MkBufferListReserve(...)
#define MkBufferListCreate(...)
The CLASS used to store a list of MkBufferS items into a flat array…

◆ tclmkkernel_Obj_AsSTR_COPY()

enum MkErrorE tclmkkernel_Obj_AsSTR_COPY ( OT_Check_ARGS ,
MK_STR ret,
size_t size )

Definition at line 742 of file LibMkKernel_tcl.c.

742 {
743 if ((*skipP) >= objc) {
744 return WrongNumArgs(hdl, (*skipP), objc, -999, +999, arg);
745 }
746 strncpy(ret,Tcl_GetString(objv[(*skipP)++]),size);
747 return MK_OK;
748}
#define WrongNumArgs(...)

◆ tclmkkernel_Obj_AsSTRN()

enum MkErrorE tclmkkernel_Obj_AsSTRN ( OT_Check_ARGS ,
MK_STRN * retP )

Definition at line 716 of file LibMkKernel_tcl.c.

716 {
717 if ((*skipP) >= objc) {
718 return WrongNumArgs(hdl, (*skipP), objc, -999, +999, arg);
719 }
720 int len=0;
721 MK_STRN ret = Tcl_GetStringFromObj(objv[(*skipP)++], &len);
722 // mark=MK_NULL
723 if (MK_NULL_STR_CHECK(ret,len)) {
724 ret = NULL;
725 }
726 *retP = ret;
727 return MK_OK;
728}
static bool MK_NULL_STR_CHECK(char const *const __str, const long int __len)
check if __str is MK_NULL_STR return true or false …

◆ tclmkkernel_ObjvToString()

MK_STRN tclmkkernel_ObjvToString ( MK_RT mkrt,
MK_STRN cls,
TCL_ARGS  )

Definition at line 931 of file LibMkKernel_tcl.c.

931 {
932 MkBufferCreateTLS_T(MkBuffer64C,ret,50);
933 MkBufferAppendV(ret,"&%s ", cls);
934 for(int i=1;i<objc;i++) {
935 MkBufferAppendV(ret,"%s ", VAL2STR(objv[i]));
936 }
937 return MkBUF_R(&retR).storage.first.C;
938}
#define MkBufferAppendV(...)
#define MkBUF_R(x)
cast a known-object into an MkBufferS reference
#define MkBufferCreateTLS_T(cls, name, size)
create an new MkBufferC object as T)hread L)ocal S)torage…

◆ tclmkkernel_PrintLngObj()

MK_STR tclmkkernel_PrintLngObj ( OT_Prefix_ARGS MK_STRN header,
OT_OBJ_T Obj )

helper to print a Tcl_Obj tclmkkernel::print object $RET

Definition at line 942 of file LibMkKernel_tcl.c.

946 {
947//printP(Obj)
948 MK_OBJ retObj = NULL;
949 bool isObject;
950 MK_STRN type = MK(GetTypeFromObj) (OT_Prefix_CALL Obj, &isObject);
951 if (isObject) OT_LNG_OBJECT_IS_3(Obj, &retObj, NULL);
952
953 #define objF "[type<%s>, refCount<MQ=%i,TCL=%i,SHARED=%i>, ptr<MQ=%p,TCL=%p>]"
954 #define objA type, (retObj?retObj->refCount:-1),Obj->refCount, Tcl_IsShared(Obj), retObj, (retObj?retObj->self:NULL)
955
956/*
957 printV("ObjName <%20s>, ObjPtr, <%p>, ObjRef <%i>\n", Tcl_GetString(Obj), Obj, Obj->refCount)
958if (retObj) {
959 OT_OBJ_T nameO = OT_SELF_NAME_O(retObj);
960 printV("NameStr <%20s>, NamePtr <%p>, NameRef <%i>\n", Tcl_GetString(nameO), nameO, nameO->refCount)
961
962 OT_OBJ_T cmdO = Tcl_NewObj();
963 Tcl_GetCommandFullName(interp,OT_SELF_CMD_O(retObj),cmdO);
964 printV("CmdStr <%20s>, CmdPtr <%p>, CmdRef <%i>\n", Tcl_GetString(cmdO), cmdO, cmdO->refCount)
965}
966*/
967
968 // fill the buf and get the len back
969 if (header) {
970 MkBufferSetV(MkBUF(&MK_RT_REF.tbuf), "%-20s: %s " objF, header, Tcl_GetString (Obj), objA);
971 } else if (retObj) {
972/*
973 MQ_CTX ctx = MqCtx(retObj);
974 if (ctx) {
975 MkBufferSetV(MkBUF(&MK_RT_REF.tbuf), "%s(%s) " objF, Tcl_GetString (Obj), MqConfigGetName(ctx), objA);
976 } else {
977 MkBufferSetV(MkBUF(&MK_RT_REF.tbuf), "%s " objF, Tcl_GetString (Obj), objA);
978 }
979*/
980 MkBufferSetV(MkBUF(&MK_RT_REF.tbuf), "%s " objF, Tcl_GetString (Obj), objA);
981
982 } else {
983 MkBufferSetV(MkBUF(&MK_RT_REF.tbuf), "%s " objF, Tcl_GetString (Obj), objA);
984
985 }
986
987 #undef objF
988 #undef objA
989
990 return MkBUF_R(&MK_RT_REF.tbuf).storage.first.S;
991}
#define objF
#define objA
#define MkBUF(x)
cast a known-object into an MkBufferS pointer
#define MkBufferSetV(...)
#define MK_RT_REF
#define OT_LNG_OBJECT_IS_3(objV, obj, flag)

◆ tclmkkernel_sCheckClass()

static MkTestClassE tclmkkernel_sCheckClass ( OT_ENV_T interp,
OT_SELF_T tclObj,
OT_CLS_T clazz,
MkTestClassE def )
inlinestatic

Definition at line 472 of file LibMkKernel_tcl.c.

477 {
478 // check if object belong to class
479 OT_OBJ_T objNameO = Tcl_GetObjectName(interp,tclObj);
480 OT_OBJ_T clsNameO = Tcl_GetObjectName(interp,Tcl_GetClassAsObject(clazz));
481 RL_init( RL_O(0,RG(infoObjectClassCmd)) ) ; RL_O(1,objNameO) ; RL_O(2,clsNameO)
482 check_LNG(Tcl_EvalObjv(interp, RL_objv(3), TCL_EVAL_GLOBAL)) {
484 }
485 int isClass = 0;
486 check_LNG(Tcl_GetBooleanFromObj(interp,Tcl_GetObjResult(interp),&isClass)) {
488 }
489 if (!isClass) {
491 }
492 return def;
493}
@ MkTestClassE_INTERNAL
@ MkTestClassE_WRONG_CLASS

◆ tclmkkernel_TestObject()

bool tclmkkernel_TestObject ( OT_Prefix_ARGS OT_OBJ_T lngO,
OT_CLS_T clazz,
MK_OBJ * objP,
MkTestClassE * flagP )

Definition at line 495 of file LibMkKernel_tcl.c.

501 {
502 assert(lngO != NULL);
504 MK_OBJ objM = NULL;
505
506 // BUG FIX → need name WITH namespace from "Tcl_GetObjectName"
507 OT_SELF_T tclObj = Tcl_GetObjectFromObj (interp, lngO);
508 if (tclObj == NULL) {
509 Tcl_ResetResult(interp);
510 // first check for "", "MK_NULL", ...
511 if (OT_LNG_NULL_IS(lngO)) {
512 flag=MkTestClassE_NULL; goto end;
513 } else {
514 flag=MkTestClassE_NONE_OBJECT; goto end;
515 }
516 };
517
518 objM = Tcl_ObjectGetMetadata(tclObj, &MK(AtomMeta));
519 /* NULL or wrong class */
520 if (objM == NULL) {
521 switch (flag = NS(sCheckClass)(interp,tclObj,clazz,flag)) {
523 case MkTestClassE_WRONG_CLASS: break;
524 default: flag=MkTestClassE_NULL;
525 }
526 goto end;
527 }
528
529 if (clazz != MK(MkObjectC)) {
530 // check if object belong to class
531 switch (flag = NS(sCheckClass)(interp,tclObj,clazz,flag)) {
533 case MkTestClassE_WRONG_CLASS: goto end;
534 default: break;
535 }
536 }
537
538 objM = MkObj(objM);
539 if (objM == NULL) { flag=MkTestClassE_INVALID_SIGNATURE ; goto end; };
540
541 flag = MkTestClassE_OK;
542 if (objP) *objP = objM;
543
544end:
545 if (flagP) *flagP = flag;
546 switch(flag) {
547 case MkTestClassE_NONE_OBJECT : return false;
548 default : return true;
549 }
550}
#define NS(n)
@ MkTestClassE_NONE_OBJECT
@ MkTestClassE_OK
@ MkTestClassE_INVALID_SIGNATURE
@ MkTestClassE_NULL

◆ Tclmkkernel_Unload()

OT_TCL_EXTERN int Tclmkkernel_Unload ( OT_ENV_T interp,
int flags )

Definition at line 1782 of file LibMkKernel_tcl.c.

1783{
1784 MkCleanup();
1785
1786 return TCL_OK;
1787}
void MkCleanup(void)
cleanup tclmkkernel internal memory …

Variable Documentation

◆ tclmkkernel_AtomMeta

const Tcl_ObjectMetadataType tclmkkernel_AtomMeta
Initial value:
= {
TCL_OO_METADATA_VERSION_CURRENT,
"MK_OBJ",
}
static int tclmkkernel_AtomMetaClone(OT_ENV_T interp, ClientData clientData, ClientData *out)
static void tclmkkernel_AtomMetaDelete(MK_MNG mng)

Definition at line 1145 of file LibMkKernel_tcl.c.

1145 {
1146 TCL_OO_METADATA_VERSION_CURRENT,
1147 "MK_OBJ",
1148 MK(AtomMetaDelete),
1149 MK(AtomMetaClone)
1150};

◆ tclmkkernel_reggv

__thread OT_OBJ_T tclmkkernel_reggv[100] = {0}

Definition at line 149 of file LibMkKernel_tcl.c.

149{0};

◆ tclmkkernel_sInstanceDef

const OtObjProcDefS tclmkkernel_sInstanceDef[]
static
Initial value:
= {
{0, NULL, NULL, NULL, NULL}
}

Definition at line 1688 of file LibMkKernel_tcl.c.

1688 {
1689// BEGIN-OBJ - created by 'tcl_MqS.tcl -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta' - DO NOT change
1690
1691// → no data
1692
1693// END-OBJ - created by 'tcl_MqS.tcl -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta' - DO NOT change
1694 {0, NULL, NULL, NULL, NULL}
1695};

◆ tclmkkernel_sOtClassDef

const OtObjProcDefS tclmkkernel_sOtClassDef[]
static
Initial value:
= {
{VER, "print" , tclmkkernel_Print_Class_Cmd , NULL, NULL},
{VER, "const" , tclmkkernel_Const_Class_Cmd , NULL, NULL},
{VER, "ErrorE_FromInt" , tclmkkernel_MkKernel_ErrorE_FromInt , NULL, NULL},
{VER, "IdSE_FromInt" , tclmkkernel_MkKernel_IdSE_FromInt , NULL, NULL},
{VER, "TimeoutE_FromInt" , tclmkkernel_MkKernel_TimeoutE_FromInt , NULL, NULL},
{VER, "TypeE_FromInt" , tclmkkernel_MkKernel_TypeE_FromInt , NULL, NULL},
{VER, "ErrorE_ToInt" , tclmkkernel_MkKernel_ErrorE_ToInt , NULL, NULL},
{VER, "ErrorE_ToString" , tclmkkernel_MkKernel_ErrorE_ToString , NULL, NULL},
{VER, "IdSE_ToInt" , tclmkkernel_MkKernel_IdSE_ToInt , NULL, NULL},
{VER, "IdSE_ToString" , tclmkkernel_MkKernel_IdSE_ToString , NULL, NULL},
{VER, "TimeoutE_ToInt" , tclmkkernel_MkKernel_TimeoutE_ToInt , NULL, NULL},
{VER, "TimeoutE_ToString" , tclmkkernel_MkKernel_TimeoutE_ToString , NULL, NULL},
{VER, "TypeE_ToInt" , tclmkkernel_MkKernel_TypeE_ToInt , NULL, NULL},
{VER, "TypeE_ToString" , tclmkkernel_MkKernel_TypeE_ToString , NULL, NULL},
{VER, "Cleanup" , tclmkkernel_MkKernel_Cleanup , NULL, NULL},
{VER, "Setup" , tclmkkernel_MkKernel_Setup , NULL, NULL},
{0, NULL, NULL, NULL, NULL}
}
#define VER
static OT_ProcRet tclmkkernel_MkKernel_IdSE_FromInt(OtClass_ARGS)
Tcl: (static) MkIdSE [MkKernel IdSE_FromInt value:int32] → C-API return the MkIdSE from integer ...
static OT_ProcRet tclmkkernel_MkKernel_TypeE_ToString(OtClass_ARGS)
Tcl: (static) string [MkKernel TypeE_ToString value:MkTypeE] → C-API return the MkTypeE as strin...
static OT_ProcRet tclmkkernel_MkKernel_TimeoutE_ToInt(OtClass_ARGS)
Tcl: (static) int32 [MkKernel TimeoutE_ToInt value:MkTimeoutE] → C-API return the MkTimeoutE as ...
static OT_ProcRet tclmkkernel_MkKernel_TimeoutE_FromInt(OtClass_ARGS)
Tcl: (static) MkTimeoutE [MkKernel TimeoutE_FromInt value:int32] → C-API return the MkTimeoutE f...
static OT_ProcRet tclmkkernel_MkKernel_TypeE_FromInt(OtClass_ARGS)
Tcl: (static) MkTypeE [MkKernel TypeE_FromInt value:int32] → C-API return the MkTypeE from integ...
static OT_ProcRet tclmkkernel_MkKernel_ErrorE_FromInt(OtClass_ARGS)
Tcl: (static) MkErrorE [MkKernel ErrorE_FromInt value:int32] → C-API return the MkErrorE from in...
static OT_ProcRet tclmkkernel_MkKernel_ErrorE_ToInt(OtClass_ARGS)
Tcl: (static) int32 [MkKernel ErrorE_ToInt value:MkErrorE] → C-API return the MkErrorE as intege...
static OT_ProcRet tclmkkernel_MkKernel_IdSE_ToString(OtClass_ARGS)
Tcl: (static) string [MkKernel IdSE_ToString value:MkIdSE] → C-API return the MkIdSE as string …
static OT_ProcRet tclmkkernel_MkKernel_TypeE_ToInt(OtClass_ARGS)
Tcl: (static) int32 [MkKernel TypeE_ToInt value:MkTypeE] → C-API return the MkTypeE as integer …
static OT_ProcRet tclmkkernel_MkKernel_IdSE_ToInt(OtClass_ARGS)
Tcl: (static) int32 [MkKernel IdSE_ToInt value:MkIdSE] → C-API return the MkIdSE as integer …
static OT_ProcRet tclmkkernel_MkKernel_ErrorE_ToString(OtClass_ARGS)
Tcl: (static) string [MkKernel ErrorE_ToString value:MkErrorE] → C-API return the MkErrorE as st...
static OT_ProcRet tclmkkernel_MkKernel_TimeoutE_ToString(OtClass_ARGS)
Tcl: (static) string [MkKernel TimeoutE_ToString value:MkTimeoutE] → C-API return the MkTimeoutE...
static OT_ProcRet tclmkkernel_MkKernel_Setup(OtClass_ARGS)
Tcl: (static) MkKernel Setup → C-API setup tclmkkernel internal memory …
static OT_ProcRet tclmkkernel_MkKernel_Cleanup(OtClass_ARGS)
Tcl: (static) MkKernel Cleanup → C-API cleanup tclmkkernel internal memory …
static int tclmkkernel_Const_Class_Cmd(OtClass_ARGS)
tclObj [tclmkkernel::const maxY|minY|maxS|minS|maxI|minI|maxF|minF|maxW|minW|maxD|minD]
static int tclmkkernel_Print_Class_Cmd(OtClass_ARGS)
tclmkkernel::print object|type tclObj

Definition at line 1656 of file LibMkKernel_tcl.c.

1656 {
1657 {VER, "print" , NS(Print_Class_Cmd) , NULL, NULL},
1658 {VER, "const" , NS(Const_Class_Cmd) , NULL, NULL},
1659// BEGIN-CLASS - created by 'tcl_MqS.tcl -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta' - DO NOT change
1660
1661// doc-key: MkKernel,EnumFunc,sco
1662 {VER, "ErrorE_FromInt" , NS(MkKernel_ErrorE_FromInt) , NULL, NULL},
1663 {VER, "IdSE_FromInt" , NS(MkKernel_IdSE_FromInt) , NULL, NULL},
1664 {VER, "TimeoutE_FromInt" , NS(MkKernel_TimeoutE_FromInt) , NULL, NULL},
1665 {VER, "TypeE_FromInt" , NS(MkKernel_TypeE_FromInt) , NULL, NULL},
1666
1667// doc-key: MkKernel,EnumFunc,sm_
1668 {VER, "ErrorE_ToInt" , NS(MkKernel_ErrorE_ToInt) , NULL, NULL},
1669 {VER, "ErrorE_ToString" , NS(MkKernel_ErrorE_ToString) , NULL, NULL},
1670 {VER, "IdSE_ToInt" , NS(MkKernel_IdSE_ToInt) , NULL, NULL},
1671 {VER, "IdSE_ToString" , NS(MkKernel_IdSE_ToString) , NULL, NULL},
1672 {VER, "TimeoutE_ToInt" , NS(MkKernel_TimeoutE_ToInt) , NULL, NULL},
1673 {VER, "TimeoutE_ToString" , NS(MkKernel_TimeoutE_ToString) , NULL, NULL},
1674 {VER, "TypeE_ToInt" , NS(MkKernel_TypeE_ToInt) , NULL, NULL},
1675 {VER, "TypeE_ToString" , NS(MkKernel_TypeE_ToString) , NULL, NULL},
1676
1677// doc-key: MkKernel,Setup,sm_
1678 {VER, "Cleanup" , NS(MkKernel_Cleanup) , NULL, NULL},
1679 {VER, "Setup" , NS(MkKernel_Setup) , NULL, NULL},
1680
1681// END-CLASS - created by 'tcl_MqS.tcl -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta' - DO NOT change
1682 {0, NULL, NULL, NULL, NULL}
1683};

◆ tclmkkernel_tcl_BOOLEAN

const Tcl_ObjType* tclmkkernel_tcl_BOOLEAN = NULL

Definition at line 145 of file LibMkKernel_tcl.c.

◆ tclmkkernel_tcl_DOUBLE

const Tcl_ObjType* tclmkkernel_tcl_DOUBLE = NULL

Definition at line 144 of file LibMkKernel_tcl.c.

◆ tclmkkernel_tcl_INDEX

const Tcl_ObjType* tclmkkernel_tcl_INDEX = NULL

Definition at line 146 of file LibMkKernel_tcl.c.

◆ tclmkkernel_tcl_LONG

const Tcl_ObjType* tclmkkernel_tcl_LONG = NULL

Definition at line 142 of file LibMkKernel_tcl.c.

◆ tclmkkernel_tcl_WIDE

const Tcl_ObjType* tclmkkernel_tcl_WIDE = NULL

Definition at line 143 of file LibMkKernel_tcl.c.