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

tag: nhi1-release-250425 More...

#include <tcl.h>
#include <tclOO.h>
#include "LibMkKernel_mk.h"
#include "tmpl/mk_type_S_lng.h"
#include "MkRegistry_tcl.h"
#include "tmpl/mk_misc_check_lng.h"
#include "tmpl/mk_misc_ObjAs_lng.h"
+ Include dependency graph for LibMkKernel_tcl.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  MkCallS
 
struct  LookupEnumE
 
struct  LookupClassS
 
struct  OtUnknownS
 
struct  MkVarFrameS
 
struct  OtObjProcDefS
 

Macros

#define HEADER
 
#define MK_TCL_EXTERN
 static library
 
#define MK_TCL_EXTERN_DATA   extern
 
#define MK(n)
 
#define NS(n)
 
#define META_CONTEXT_S   hdl
 
#define OT_ProcRet   int
 
#define TCL_ARGS   OT_ENV_T interp, int objc, OT_OBJ_T const *objv
 
#define TCL_ARGS_CALL   interp, objc, objv
 
#define OBJECT_ARGS
 
#define OBJECT_ARGS_CALL   hdl, interp, objCtx, objc, objv
 
#define OBJCMD_ARGS   ClientData clientData, OT_ENV_T interp, int objc, OT_OBJ_T const *objv
 
#define OBJCMD_ARGS_CALL   clientData, interp, objc, objv
 
#define CONSTR_ARGS   OBJECT_ARGS
 
#define SKIP_ARGS   TCL_ARGS, int __skip
 
#define SKIP_ARGS_CALL   TCL_ARGS_CALL, __skip
 
#define OtClass_ARGS   OBJECT_ARGS
 
#define OtClass_ARGS_CALL   OBJECT_ARGS_CALL
 
#define MkBufferListC_ARGS   OBJECT_ARGS
 
#define MkBufferListC_ARGS_CALL   OBJECT_ARGS_CALL
 
#define MkBufferC_ARGS   OBJECT_ARGS
 
#define MkBufferC_ARGS_CALL   OBJECT_ARGS_CALL
 
#define MkBufferStreamC_ARGS   OBJECT_ARGS
 
#define MkBufferStreamC_ARGS_CALL   OBJECT_ARGS_CALL
 
#define MkErrorC_ARGS   OBJECT_ARGS
 
#define MkErrorC_ARGS_CALL   OBJECT_ARGS_CALL
 
#define MkLogFileC_ARGS   OBJECT_ARGS
 
#define MkLogFileC_ARGS_CALL   OBJECT_ARGS_CALL
 
#define MkObjectC_ARGS   OBJECT_ARGS
 
#define MkObjectC_ARGS_CALL   OBJECT_ARGS_CALL
 
#define MkRuntimeC_ARGS   OBJECT_ARGS
 
#define MkRuntimeC_ARGS_CALL   OBJECT_ARGS_CALL
 
#define OT_SETUP_ARGS_ALL(d)
 
#define OT_FRAME_CLEANUP   if (frame != NULL) { Tcl_DecrRefCount(frame); frame = NULL; }
 
#define OT_SETUP_VARARGS(min, max, d)
 
#define OT_SETUP_CONSTRUCTOR_ARGS(...)
 
#define OT_SETUP_ONEARG(d)
 
#define OT_SETUP_NOARG(d)
 
#define OT_SETUP_obj   MK_OBJ obj = OBJ;
 
#define OT_SETUP_doc   __attribute__((unused)) const MK_STRN __doc = __func__;
 
#define SETUP_ARGS   MK_RT_ARGS TCL_ARGS
 
#define SETUP_ARGS_CALL   MK_RT_CALL TCL_ARGS_CALL
 
#define OT_retObj_CONSTR(x)
 
#define OT_CONSTRUCTOR_POST(x)
 
#define OT_retObj_SET(val)
 
#define OT_retObj_SET_None   retObj = RG(noneObj);
 
#define OT_retObj_SET_Error
 
#define OT_retObj_SET_List   retObj = Tcl_NewListObj(0,NULL);
 
#define OT_retObj_APPEND(var)
 
#define OT_retObj_RETURN
 
#define OT_retObj_SET_BOL(nat)
 
#define OT_retObj_SET_I8(nat)
 
#define OT_retObj_SET_I16(nat)
 
#define OT_retObj_SET_U16(nat)
 
#define OT_retObj_SET_I32(nat)
 
#define OT_retObj_SET_I64(nat)
 
#define OT_retObj_SET_LLG(nat)
 
#define OT_retObj_SET_FLT(nat)
 
#define OT_retObj_SET_DBL(nat)
 
#define OT_retObj_SET_BIN(nat, len)
 
#define OT_retObj_SET_STR(nat)
 
#define OT_retObj_SET_STRN(nat)
 
#define OT_retObj_SET_LONG(nat)
 
#define OT_retObj_SET_HDL(nat)
 
#define OT_MK_CALL_0(hdl, cls, meth, ret)
 
#define OT_LNG_NULL   NULL
 
#define OT_LNG_UNDEF   NULL
 
#define OT_LNG_RETURN(ret, cmd)
 
#define OT_LNG_FULLNAME_FROM_OBJECT(_obj)
 
#define OT_LNG_NAME_FROM_OBJECT(_obj)
 
#define OT_LNG_NAME_FROM_CLASS(_cls)
 
#define OT_LNG_NAME_FROM_OBJ(_obj)
 
#define OT_LNG_OBJ_CLASSNAME(obj)
 
#define OT_LNG_OBJ_CLASSNAME_SHORT(obj)
 
#define OT_OBJ_TYPE_STRING(obj)
 
#define OT_LNG_NAME_CLASS_FROM_CONTEXT(ox)
 
#define OT_LNG_OBJV(__skip)
 
#define OT_OBJ_TO_CLASS(str)
 
#define OT_OBJ_TO_ENUM(str)
 
#define OT_LNG_SET_VAR(var, val)
 
#define OT_REGISTRY_AS_TLS
 
#define RG(_key)
 
#define regTclObj(str)
 
#define regTclObj2(def, str)
 
#define RL(num)
 
#define RL_init(code)
 
#define RL_NewC(num, str)
 
#define RL_NewS(num, str)
 
#define RL_NewI(num, itg)
 
#define RL_O(num, obj)
 
#define RL_objv(num)
 
#define RL_Free(num)
 
#define OT_ERROR_LNG_RETURN   return TCL_ERROR
 
#define OT_ERROR_TYPE(str)
 
#define OT_ERROR_SOFT_CONSTRUCTOR(class)
 
#define OT_ERROR_CONSTRUCTOR(class)
 
#define OT_ERROR_NUMARGS(...)
 
#define OT_ERROR_ABNORMAL(mng)
 
#define OT_ERROR_LNG_RETURN_HDL_NAT_NULL(_hdl)
 
#define OT_ERROR_VAR_DEFAULT(...)
 
#define OT_ERROR_LNG_RETURN_VAR_ERROR(...)
 
#define OT_Prefix_ARGS   OT_ENV_T interp, MK_RT_ARGS
 
#define OT_Prefix_CALL   interp, MK_RT_CALL
 
#define OT_Check_ARGS   MK_RT_ARGS MK_MNG hdl, MK_STRN const arg, TCL_ARGS, int *skipP
 
#define OT_Check_CALL(arg)
 
#define OT_Check_CALL2(arg)
 
#define OT_CHECK_OPTIONAL(val)
 
#define OT_CHECK_REQUIRED(val)
 
#define OT_CHECK_NUM_ARGS(min, max)
 
#define OT_CHECK_NOARGS
 
#define OT_GET_CONSTR_NAME(ctor)
 
#define OT_CHECK_BNP(val, len)
 
#define OT_CHECK_BCP(val)
 
#define OT_CHECK_BCPN(val)
 
#define MkErrorC_Check(mng, PROC)
 
#define MkErrorC_CheckD(PROC)
 
#define OT_ERROR_META_2_LNG(m)
 
#define OT_ERROR_LNG_2_META(m)
 
#define OtErrorCheckLng(cmd)
 
#define OtErrorCheckLngGoto(cmd)
 
#define OtErrorCheckLngGoto1(cmd)
 
#define OtErrorCheckLngGoto2(cmd)
 
#define check_LNG(code)
 
#define check_NULL(code)
 
#define check_META(code)
 
#define OT_TMP_BOL_OBJ(val)
 
#define OT_TMP_I8_OBJ(val)
 
#define OT_TMP_I16_OBJ(val)
 
#define OT_TMP_I32_OBJ(val)
 
#define OT_TMP_I64_OBJ(val)
 
#define OT_TMP_FLT_OBJ(val)
 
#define OT_TMP_DBL_OBJ(val)
 
#define OT_TMP_BIN_OBJ(val, len)
 
#define OT_TMP_STR_OBJ(val)
 
#define OT_TMP_CST_OBJ(val)
 
#define OT_OBJECT_DELETE_SOFT(O)
 
#define OT_OBJECT_DELETE_HARD(O)
 
#define OT_OBJECT_DISPOSE(O)
 
#define OT_OBJECT_DELETE(O)
 
#define OT_REF_INCR(_obj)
 
#define OT_REF_DECR(_obj)
 
#define OT_REF_INCR_AND_RETURN(_obj)
 
#define OT_REF_DECR_AND_NULL(_obj)
 
#define SETUP_interp   MK_UNUSED OT_ENV_T const interp = (OT_ENV_T const) MK_RT_REF.mkThreadData.ptr;
 
#define SETUP_mqctx   struct MqContextS * const mqctx = (struct MqContextS * const) hdl;
 
#define SETUP_tclctx   struct TclContextS * const tclctx = (struct TclContextS * const) hdl;
 
#define SETUP_selfO   OT_SELF_T selfO = OT_SELF_X(hdl);
 
#define SETUP_selfX(x)
 
#define MQCTX   (hdl)
 
#define TCLCTX   ((struct TclContextS * const)hdl)
 
#define OT_SELF_O(o)
 
#define OT_SELF_X(x)
 
#define OT_SELF   selfO
 
#define OT_SELF_NAME_O(o)
 
#define OT_SELF_CMD_O(o)
 
#define SetupHdlFromMetaData_init_2(_CLS, _SHORT)
 
#define SetupHdlFromMetaData_2(_CLS, _SHORT)
 
#define SetupHdlFromMetaData__null_allow_2(_CLS, _SHORT)
 
#define MkCallS_SIG   0x82335642
 
#define MkProcResolve_maxArgsLen   16
 
#define OT_OBJ_COPY(o)
 
#define NO_OtCheckEnum
 
#define NO_OtCheckEnumFlag
 
#define NO_TestObject
 
#define OT_CHECK_ENUM(ename, val)
 
#define OT_CHECK_ENUM_FLAG(ename, val)
 
#define OT_CHECK_LNGTMPL(val, func)
 
#define OT_CHECK_bool(val)
 
#define OT_CHECK_NB1(val)
 
#define OT_CHECK_NI1(val)
 
#define OT_CHECK_NI2(val)
 
#define OT_CHECK_U2N(val)
 
#define OT_CHECK_NI4(val)
 
#define OT_CHECK_U4N(val)
 
#define OT_CHECK_NI8(val)
 
#define OT_CHECK_IXN(val)
 
#define OT_CHECK_NF4(val)
 
#define OT_CHECK_NF8(val)
 
#define OT_CHECK_STRN(val)
 
#define OT_CHECK_NIL(val)
 
#define OT_CHECK_NIH(val)
 
#define OT_CHECK_STRN_NULL(val)
 
#define OT_CHECK_C_COPY(val, size)
 
#define OT_GET_CALL_PROC   MK(Get_Call_Proc)(MK_RT_CALL interp,&frame)
 
#define OT_GET_CALL_FILE   MK(Get_Call_File)(MK_RT_CALL interp,&frame)
 
#define OT_GET_CALL_LINE   MK(Get_Call_Line)(MK_RT_CALL interp,&frame)
 
#define WNA(min, max, txt)
 
#define OT_VARFRAME_CREATE
 
#define OT_VARFRAME_DELETE
 
#define OT_VARFRAME_ARGS   MK_RT_ARGS OT_VARFRAME varframe
 
#define OT_VARFRAME_CALL   MK_RT_CALL varframe
 
#define OT_VARFRAME_OBJ_RESULT(itp)
 
#define OT_NEW_Mk_enum_OBJ(typ, val)
 
#define Get_MkErrorE_FromObj_path   MK(Get_MkErrorE_FromObj)
 
#define Get_MkIdSE_FromObj_path   MK(Get_MkIdSE_FromObj)
 
#define Get_MkTimeoutE_FromObj_path   MK(Get_MkTimeoutE_FromObj)
 
#define Get_MkTypeE_FromObj_path   MK(Get_MkTypeE_FromObj)
 
#define PTR2VAL(nat)
 
#define SELF2VAL(slf)
 
#define META2VAL_X(x)
 
#define META2VAL_O(o)
 
#define I82VAL(nat)
 
#define BOL2VAL(nat)
 
#define I162VAL(nat)
 
#define U162VAL(nat)
 
#define INT2VAL(nat)
 
#define I642VAL(nat)
 
#define HDL2VAL(nat)
 
#define LLG2VAL(nat)
 
#define FLT2VAL(nat)
 
#define DBL2VAL(nat)
 
#define STRN2VAL(nat)
 
#define BIN2VAL(ptr, len)
 
#define STR2VAL(ptr, len)
 
#define LONG2VAL(nat)
 
#define VAL2STR(obj)
 
#define VAL2SELF(obj)
 
#define SELF2MNG(slf)
 
#define OT_TCL_EXTERN   __attribute__ ((visibility("default")))
 
#define OT_TMP_BAC_OBJ(val)
 
#define MkBufferListC_lngO   MK(MkBufferListC)
 
#define OT_retObj_SET_BFL(nat)
 
#define OT_TMP_BFL_OBJ(val)
 
#define MkBufferC_lngO   MK(MkBufferC)
 
#define OT_retObj_SET_BUF(nat)
 
#define OT_TMP_BUF_OBJ(val)
 
#define MkBufferStreamC_lngO   MK(MkBufferStreamC)
 
#define OT_retObj_SET_BUS(nat)
 
#define OT_TMP_BUS_OBJ(val)
 
#define MkErrorC_lngO   MK(MkErrorC)
 
#define OT_retObj_SET_ERR(nat)
 
#define OT_TMP_ERR_OBJ(val)
 
#define MkLogFileC_lngO   MK(MkLogFileC)
 
#define OT_retObj_SET_LFL(nat)
 
#define OT_TMP_LFL_OBJ(val)
 
#define MkObjectC_lngO   MK(MkObjectC)
 
#define OT_retObj_SET_OBJ(nat)
 
#define OT_TMP_OBJ_OBJ(val)
 
#define MkRuntimeC_lngO   MK(MkRuntimeC)
 
#define OT_retObj_SET_RT(nat)
 
#define OT_TMP_RT_OBJ(val)
 
#define ME_REF_MkBinaryR   MkBinaryR
 
#define OT_GET__ME_REF_MkBinaryR(b)
 
#define VAL2MkBinaryR(obj)
 
#define OT_CHECK__ME_REF_MkBinaryR(val)
 
#define ME_REF_MkStringR   MkStringR
 
#define OT_GET__ME_REF_MkStringR(s)
 
#define VAL2MkStringR(obj)
 
#define OT_CHECK__ME_REF_MkStringR(val)
 
#define ot_fixstr(_s)
 
#define ot_fixstrobj(_s)
 
#define ot_enum_append(_o, _s)
 
#define printLng(var)
 
#define printXLng(x, var)
 
#define printLngObj(var)
 
#define printXLngObj(x, var)
 
#define printLLngObj(var)
 
#define printLngErrorCode()
 
#define printLngErrorInfo()
 
#define printObjv   printV( "__skip=%i, objc=%i",__skip,objc) ; printAry3( " ",objc,objv)
 
#define printXObjv(x)
 
#define printAry(c, o)
 
#define printAryDetail(c, o)
 
#define printXAry(x, pre, c, o)
 
#define printXAry4(x, pre, c, o)
 
#define printXAryDetail(x, c, o)
 
#define printAry3(txt, c, o)
 
#define printAryX(x, t, c, o)
 
#define printAryL(t, c, o)
 
#define xstr(s)
 
#define str(s)
 
#define printLngClass(clsC)
 
#define printLngObject(objO)
 
#define __doc   "AtomObjNew"
 
#define BUFLEN   127
 

Typedefs

typedef Tcl_Obj * OT_OBJ_T
 
typedef MK_STRN OT_ENUM_T
 
typedef Tcl_Class OT_CLS_T
 
typedef Tcl_Interp * OT_ENV_T
 
typedef Tcl_Namespace * OT_NS_T
 
typedef Tcl_Object OT_SELF_T
 
typedef struct MkCallS MkCallS
 
typedef int(* LookupClassF) (SKIP_ARGS)
 
typedef struct MkVarFrameSOT_VARFRAME
 

Enumerations

enum  OtUnknownE { OT_UNKNOWN_CLASS , OT_UNKNOWN_INSTANCE }
 

Functions

MK_TCL_EXTERN OT_SELF_T tclmkkernel_GetClassObjectFromObj (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T selfO)
 
static OT_SELF_T tclmkkernel_AtomInit (MK_RT mkrt, OT_ENV_T, OT_SELF_T, MK_OBJ)
 
static OT_SELF_T tclmkkernel_AtomCreate (MK_RT mkrt, OT_ENV_T, MK_OBJ, OT_CLS_T, MK_STRN, MK_STRN)
 
static OT_OBJ_T tclmkkernel_AtomObjNew (MK_RT mkrt, OT_ENV_T, MK_OBJ)
 
static bool tclmkkernel_AtomDeleteHard (MK_RT mkrt, OT_ENV_T, OT_SELF_T)
 
static void tclmkkernel_AtomUnlink (MK_RT mkrt, OT_ENV_T, OT_SELF_T)
 
static void tclmkkernel_AtomDispose (MK_RT mkrt, OT_SELF_T)
 
MK_TCL_EXTERN enum MkErrorE tclmkkernel_ProcResolve (MK_RT mkrt, OT_ENV_T, MK_MNG, struct MkCallS *)
 
static void tclmkkernel_ProcResolveAppendArgs (struct MkCallS *call, int *objcP, OT_OBJ_T objv[])
 
static void tclmkkernel_CallFree (MK_CBP *dataP)
 
static void tclmkkernel_CallFreeOnce (MK_CBP *dataP)
 
static void tclmkkernel_CallCopy (MK_RT mkrt, MK_OBJ obj, MK_CBP *dataP)
 
MK_TCL_EXTERN enum MkErrorE tclmkkernel_Obj_AsSTR_COPY (OT_Check_ARGS, MK_STR, size_t)
 
MK_TCL_EXTERN MK_STRN tclmkkernel_InfoScript (MK_RT mkrt, OT_ENV_T, MK_STRN)
 
MK_TCL_EXTERN MK_STRN tclmkkernel_Get_Call_Proc (MK_RT mkrt, OT_ENV_T, OT_OBJ_T *)
 
MK_TCL_EXTERN MK_STRN tclmkkernel_Get_Call_File (MK_RT mkrt, OT_ENV_T, OT_OBJ_T *)
 
MK_TCL_EXTERN MK_I32 tclmkkernel_Get_Call_Line (MK_RT mkrt, OT_ENV_T, OT_OBJ_T *)
 
MK_TCL_EXTERN bool tclmkkernel_Get_Call_Stack (MK_RT mkrt, OT_ENV_T, MK_ERR const, int)
 
MK_TCL_EXTERN int tclmkkernel_EnumFlagWorker (MK_RT mkrt, OT_ENV_T, const struct LookupEnumE *, OT_OBJ_T, int *)
 
MK_TCL_EXTERN int tclmkkernel_MkBufferC_ToObject (MkBufferC_ARGS)
  Tcl: obj [$buf ToObject] C-API
return the native language object from a MkBufferC
 
MK_TCL_EXTERN int tclmkkernel_MkBufferC_GetBFL (MkBufferC_ARGS)
  Tcl: MkBufferListC [$buf GetBFL ?val_inout:MkBufferListC="MK_NULL"?] C-API
function to read an MkBufferListC from an MkBufferC object …
 
MK_TCL_EXTERN int tclmkkernel_MkBufferC_Temp (MkBufferC_ARGS)
  Tcl: MkBufferC [$buf Temp] C-API
create a temporary copy of the MkBufferC buf …
 
MK_TCL_EXTERN int tclmkkernel_MkBufferListC_ToList (MkBufferListC_ARGS)
  Tcl: [list...] [$bfl ToList] C-API
get a target-language list representation of the bfl
 
MK_TCL_EXTERN bool tclmkkernel_TestObject (OT_Prefix_ARGS OT_OBJ_T, OT_CLS_T, MK_OBJ *, MkTestClassE *)
 
MK_TCL_EXTERN MK_STRN tclmkkernel_ClassName (OT_Prefix_ARGS OT_OBJ_T, bool)
 
MK_TCL_EXTERN MK_STRN tclmkkernel_GetTypeFromObj (OT_Prefix_ARGS OT_OBJ_T, bool *)
 helper to print the type-name of a Tcl_Obj tclmkkernel::print type $RET
 
MK_TCL_EXTERN MK_STRN tclmkkernel_GetClassNameFromObject (OT_Prefix_ARGS OT_SELF_T)
 
MK_TCL_EXTERN OT_SELF_T tclmkkernel_ClassDef (OT_ENV_T, OT_NS_T, MK_TYP)
 
MK_TCL_EXTERN int tclmkkernel_UnknownSetup (OT_ENV_T, OT_SELF_T, const Tcl_MethodType[], OtUnknownS *)
 
static OT_OBJ_T tclmkkernel_OT_VARFRAME_ADD (OT_VARFRAME_ARGS, OT_OBJ_T add)
 
MK_TCL_EXTERN MK_STR tclmkkernel_PrintLngObj (OT_Prefix_ARGS const char *, OT_OBJ_T)
 
MK_TCL_EXTERN int tclmkkernel_EvalObjvVA (OT_ENV_T, int,...)
 
MK_TCL_EXTERN OT_OBJ_T tclmkkernel_EvalObjvAR (OT_VARFRAME_ARGS, OT_ENV_T, int, int, OT_OBJ_T *)
 
MK_TCL_EXTERN MK_STRN tclmkkernel_ObjvToString (MK_RT mkrt, MK_STRN cls, TCL_ARGS)
 
MK_TCL_EXTERN OT_OBJ_T tclmkkernel_GetMyFromObject (OT_ENV_T, OT_SELF_T)
 
MK_TCL_EXTERN enum MkErrorE tclmkkernel_LngListToMkBufferListS (OT_Prefix_ARGS OT_OBJ_T, MK_BFL *)
 
static int tclmkkernel_EvalObjv (OT_ENV_T interp, int objc, OT_OBJ_T const objv[], int flags)
 
MK_TCL_EXTERN int tclmkkernel_FillNamespace (OT_ENV_T, OT_NS_T, const OtObjProcDefS[], ClientData)
 
MK_TCL_EXTERN MK_ERR tclmkkernel_MkExceptionC_Catch (OT_Prefix_ARGS MK_MNG const, MK_EXP const, MK_STRN const)
 convert an Target-Programming-Language (TPL) exception into an MkErrorC
 
MK_TCL_EXTERN void tclmkkernel_MkExceptionC_Raise (OT_Prefix_ARGS MK_MNGN const, MK_STRN const, MK_STRN const, MK_I32)
 convert an MkErrorC into a Target-Programming-Language (TPL) exception …
 
void tclmkkernel_ObjectDeleteFree (MkObjectDeleteFreeF_ARGS)
 
enum MkErrorE tclmkkernel_ObjectDeleteCall (MK_RT mkrt, MK_OBJN const obj, MK_STRN const typeName, MK_HDL const typeHdl, MK_HDL const objHdl, MK_CBP const __data__)
 
MK_TCL_EXTERN OT_OBJ_T tclmkkernel_MkErrorE_ToString (const enum MkErrorE)
 
MK_TCL_EXTERN OT_OBJ_T tclmkkernel_MkIdSE_ToString (const enum MkIdSE)
 
MK_TCL_EXTERN OT_OBJ_T tclmkkernel_MkTimeoutE_ToString (const enum MkTimeoutE)
 
MK_TCL_EXTERN OT_OBJ_T tclmkkernel_MkTypeE_ToString (const enum MkTypeE)
 
MK_TCL_EXTERN int tclmkkernel_Get_MkErrorE_FromObj (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T enumE, enum MkErrorE *ret)
 
MK_TCL_EXTERN int tclmkkernel_Get_MkIdSE_FromObj (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T enumE, enum MkIdSE *ret)
 
MK_TCL_EXTERN int tclmkkernel_Get_MkTimeoutE_FromObj (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T enumE, enum MkTimeoutE *ret)
 
MK_TCL_EXTERN int tclmkkernel_Get_MkTypeE_FromObj (MK_RT mkrt, OT_ENV_T interp, OT_OBJ_T enumE, enum MkTypeE *ret)
 
static OT_OBJ_T tclmkkernel_STRN2VAL (MK_STRN val)
 
int tclmkkernel_pMkBufferListC_Init (MK_RT mkrt, OT_ENV_T, OT_NS_T)
 
static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkBufferListC_ObjNew (MK_RT mkrt, OT_ENV_T interp, MkBufferListC_type hdl)
 
int tclmkkernel_pMkBufferC_Init (MK_RT mkrt, OT_ENV_T, OT_NS_T)
 
static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkBufferC_ObjNew (MK_RT mkrt, OT_ENV_T interp, MkBufferC_type hdl)
 
int tclmkkernel_pMkBufferStreamC_Init (MK_RT mkrt, OT_ENV_T, OT_NS_T)
 
static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkBufferStreamC_ObjNew (MK_RT mkrt, OT_ENV_T interp, MkBufferStreamC_type hdl)
 
int tclmkkernel_pMkErrorC_Init (MK_RT mkrt, OT_ENV_T, OT_NS_T)
 
static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkErrorC_ObjNew (MK_RT mkrt, OT_ENV_T interp, MkErrorC_type hdl)
 
int tclmkkernel_pMkLogFileC_Init (MK_RT mkrt, OT_ENV_T, OT_NS_T)
 
static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkLogFileC_ObjNew (MK_RT mkrt, OT_ENV_T interp, MkLogFileC_type hdl)
 
int tclmkkernel_pMkObjectC_Init (MK_RT mkrt, OT_ENV_T, OT_NS_T)
 
static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkObjectC_ObjNew (MK_RT mkrt, OT_ENV_T interp, MkObjectC_type hdl)
 
int tclmkkernel_pMkRuntimeC_Init (MK_RT mkrt, OT_ENV_T, OT_NS_T)
 
static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkRuntimeC_ObjNew (MK_RT mkrt, OT_ENV_T interp, MkRuntimeC_type hdl)
 
static MkStringR Ot_GetStringFromObj (OT_OBJ_T tclO)
 

Variables

MK_TCL_EXTERN_DATA const Tcl_ObjectMetadataType tclmkkernel_AtomMeta
 
MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_reggv [100]
 
MK_TCL_EXTERN_DATA const Tcl_ObjType * tclmkkernel_tcl_LONG
 
MK_TCL_EXTERN_DATA const Tcl_ObjType * tclmkkernel_tcl_WIDE
 
MK_TCL_EXTERN_DATA const Tcl_ObjType * tclmkkernel_tcl_DOUBLE
 
MK_TCL_EXTERN_DATA const Tcl_ObjType * tclmkkernel_tcl_BOOLEAN
 
MK_TCL_EXTERN_DATA const Tcl_ObjType * tclmkkernel_tcl_INDEX
 
MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkBufferListC
 
MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkBufferListC_MK_NULL
 
MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkBufferC
 
MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkBufferC_MK_NULL
 
MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkBufferStreamC
 
MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkBufferStreamC_MK_NULL
 
MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkErrorC
 
MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkErrorC_MK_NULL
 
MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkLogFileC
 
MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkLogFileC_MK_NULL
 
MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkObjectC
 
MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkObjectC_MK_NULL
 
MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkRuntimeC
 
MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkRuntimeC_MK_NULL
 

Detailed Description

tag: nhi1-release-250425

Definition in file LibMkKernel_tcl.h.

Macro Definition Documentation

◆ __doc

#define __doc   "AtomObjNew"

◆ BIN2VAL

#define BIN2VAL ( ptr,
len )
Value:
Tcl_NewByteArrayObj((const unsigned char*)ptr,(int)len)

Definition at line 879 of file LibMkKernel_tcl.h.

◆ BOL2VAL

#define BOL2VAL ( nat)
Value:
Tcl_NewBooleanObj(nat)

Definition at line 869 of file LibMkKernel_tcl.h.

◆ BUFLEN

#define BUFLEN   127

◆ check_LNG

#define check_LNG ( code)
Value:
if ((code) != TCL_OK)

Definition at line 418 of file LibMkKernel_tcl.h.

◆ check_META

#define check_META ( code)
Value:
if (MkErrorCheckI(code))
#define MkErrorCheckI(err)

Definition at line 420 of file LibMkKernel_tcl.h.

◆ check_NULL

#define check_NULL ( code)
Value:
if ((code) == NULL)

Definition at line 419 of file LibMkKernel_tcl.h.

◆ CONSTR_ARGS

#define CONSTR_ARGS   OBJECT_ARGS

Definition at line 102 of file LibMkKernel_tcl.h.

◆ DBL2VAL

#define DBL2VAL ( nat)
Value:
Tcl_NewDoubleObj(nat)

Definition at line 877 of file LibMkKernel_tcl.h.

◆ FLT2VAL

#define FLT2VAL ( nat)
Value:
Tcl_NewDoubleObj(nat)

Definition at line 876 of file LibMkKernel_tcl.h.

◆ Get_MkErrorE_FromObj_path

#define Get_MkErrorE_FromObj_path   MK(Get_MkErrorE_FromObj)

Definition at line 844 of file LibMkKernel_tcl.h.

◆ Get_MkIdSE_FromObj_path

#define Get_MkIdSE_FromObj_path   MK(Get_MkIdSE_FromObj)

Definition at line 847 of file LibMkKernel_tcl.h.

◆ Get_MkTimeoutE_FromObj_path

#define Get_MkTimeoutE_FromObj_path   MK(Get_MkTimeoutE_FromObj)

Definition at line 850 of file LibMkKernel_tcl.h.

◆ Get_MkTypeE_FromObj_path

#define Get_MkTypeE_FromObj_path   MK(Get_MkTypeE_FromObj)

Definition at line 853 of file LibMkKernel_tcl.h.

◆ HDL2VAL

#define HDL2VAL ( nat)
Value:
Tcl_NewIntObj(nat)

Definition at line 874 of file LibMkKernel_tcl.h.

◆ HEADER

#define HEADER

Definition at line 31 of file LibMkKernel_tcl.h.

◆ I162VAL

#define I162VAL ( nat)
Value:
Tcl_NewIntObj(nat)

Definition at line 870 of file LibMkKernel_tcl.h.

◆ I642VAL

#define I642VAL ( nat)
Value:
Tcl_NewWideIntObj(nat)

Definition at line 873 of file LibMkKernel_tcl.h.

◆ I82VAL

#define I82VAL ( nat)
Value:
Tcl_NewIntObj(nat)

Definition at line 868 of file LibMkKernel_tcl.h.

◆ INT2VAL

#define INT2VAL ( nat)
Value:
Tcl_NewIntObj(nat)

Definition at line 872 of file LibMkKernel_tcl.h.

◆ LLG2VAL

#define LLG2VAL ( nat)
Value:
Tcl_NewWideIntObj(nat)

Definition at line 875 of file LibMkKernel_tcl.h.

◆ LONG2VAL

#define LONG2VAL ( nat)
Value:
Tcl_NewLongObj(nat)

Definition at line 881 of file LibMkKernel_tcl.h.

◆ ME_REF_MkBinaryR

#define ME_REF_MkBinaryR   MkBinaryR

Definition at line 1056 of file LibMkKernel_tcl.h.

◆ ME_REF_MkStringR

#define ME_REF_MkStringR   MkStringR

Definition at line 1067 of file LibMkKernel_tcl.h.

◆ META2VAL_O

#define META2VAL_O ( o)
Value:
#define OT_SELF_O(o)
#define SELF2VAL(slf)

Definition at line 866 of file LibMkKernel_tcl.h.

◆ META2VAL_X

#define META2VAL_X ( x)
Value:
#define OT_SELF_X(x)

Definition at line 865 of file LibMkKernel_tcl.h.

◆ META_CONTEXT_S

#define META_CONTEXT_S   hdl

Definition at line 88 of file LibMkKernel_tcl.h.

◆ MK

#define MK ( n)
Value:
tclmkkernel_ ## n

Definition at line 82 of file LibMkKernel_tcl.h.

◆ MK_TCL_EXTERN

#define MK_TCL_EXTERN

static library

Definition at line 55 of file LibMkKernel_tcl.h.

◆ MK_TCL_EXTERN_DATA

#define MK_TCL_EXTERN_DATA   extern

Definition at line 78 of file LibMkKernel_tcl.h.

◆ MkBufferC_ARGS

#define MkBufferC_ARGS   OBJECT_ARGS

Definition at line 116 of file LibMkKernel_tcl.h.

◆ MkBufferC_ARGS_CALL

#define MkBufferC_ARGS_CALL   OBJECT_ARGS_CALL

Definition at line 117 of file LibMkKernel_tcl.h.

◆ MkBufferC_lngO

#define MkBufferC_lngO   MK(MkBufferC)

Definition at line 943 of file LibMkKernel_tcl.h.

◆ MkBufferListC_ARGS

#define MkBufferListC_ARGS   OBJECT_ARGS

Definition at line 114 of file LibMkKernel_tcl.h.

◆ MkBufferListC_ARGS_CALL

#define MkBufferListC_ARGS_CALL   OBJECT_ARGS_CALL

Definition at line 115 of file LibMkKernel_tcl.h.

◆ MkBufferListC_lngO

#define MkBufferListC_lngO   MK(MkBufferListC)

Definition at line 925 of file LibMkKernel_tcl.h.

◆ MkBufferStreamC_ARGS

#define MkBufferStreamC_ARGS   OBJECT_ARGS

Definition at line 118 of file LibMkKernel_tcl.h.

◆ MkBufferStreamC_ARGS_CALL

#define MkBufferStreamC_ARGS_CALL   OBJECT_ARGS_CALL

Definition at line 119 of file LibMkKernel_tcl.h.

◆ MkBufferStreamC_lngO

#define MkBufferStreamC_lngO   MK(MkBufferStreamC)

Definition at line 961 of file LibMkKernel_tcl.h.

◆ MkCallS_SIG

#define MkCallS_SIG   0x82335642

Definition at line 504 of file LibMkKernel_tcl.h.

◆ MkErrorC_ARGS

#define MkErrorC_ARGS   OBJECT_ARGS

Definition at line 120 of file LibMkKernel_tcl.h.

◆ MkErrorC_ARGS_CALL

#define MkErrorC_ARGS_CALL   OBJECT_ARGS_CALL

Definition at line 121 of file LibMkKernel_tcl.h.

◆ MkErrorC_Check

#define MkErrorC_Check ( mng,
PROC )
Value:
if (unlikely(MkErrorCheckI(PROC))) { \
OT_ERROR_META_2_LNG(mng); goto error; \
}
#define unlikely(x)

Definition at line 400 of file LibMkKernel_tcl.h.

400#define MkErrorC_Check(mng,PROC) \
401 if (unlikely(MkErrorCheckI(PROC))) { \
402 OT_ERROR_META_2_LNG(mng); goto error; \
403 }

◆ MkErrorC_CheckD

#define MkErrorC_CheckD ( PROC)
Value:
if (unlikely(MkErrorCheckI(PROC))) { \
OT_ERROR_META_2_LNG(hdl); goto error; \
}

Definition at line 405 of file LibMkKernel_tcl.h.

405#define MkErrorC_CheckD(PROC) \
406 if (unlikely(MkErrorCheckI(PROC))) { \
407 OT_ERROR_META_2_LNG(hdl); goto error; \
408 }

◆ MkErrorC_lngO

#define MkErrorC_lngO   MK(MkErrorC)

Definition at line 979 of file LibMkKernel_tcl.h.

◆ MkLogFileC_ARGS

#define MkLogFileC_ARGS   OBJECT_ARGS

Definition at line 122 of file LibMkKernel_tcl.h.

◆ MkLogFileC_ARGS_CALL

#define MkLogFileC_ARGS_CALL   OBJECT_ARGS_CALL

Definition at line 123 of file LibMkKernel_tcl.h.

◆ MkLogFileC_lngO

#define MkLogFileC_lngO   MK(MkLogFileC)

Definition at line 997 of file LibMkKernel_tcl.h.

◆ MkObjectC_ARGS

#define MkObjectC_ARGS   OBJECT_ARGS

Definition at line 124 of file LibMkKernel_tcl.h.

◆ MkObjectC_ARGS_CALL

#define MkObjectC_ARGS_CALL   OBJECT_ARGS_CALL

Definition at line 125 of file LibMkKernel_tcl.h.

◆ MkObjectC_lngO

#define MkObjectC_lngO   MK(MkObjectC)

Definition at line 1015 of file LibMkKernel_tcl.h.

◆ MkProcResolve_maxArgsLen

#define MkProcResolve_maxArgsLen   16

Definition at line 527 of file LibMkKernel_tcl.h.

◆ MkRuntimeC_ARGS

#define MkRuntimeC_ARGS   OBJECT_ARGS

Definition at line 126 of file LibMkKernel_tcl.h.

◆ MkRuntimeC_ARGS_CALL

#define MkRuntimeC_ARGS_CALL   OBJECT_ARGS_CALL

Definition at line 127 of file LibMkKernel_tcl.h.

◆ MkRuntimeC_lngO

#define MkRuntimeC_lngO   MK(MkRuntimeC)

Definition at line 1033 of file LibMkKernel_tcl.h.

◆ MQCTX

#define MQCTX   (hdl)

Definition at line 468 of file LibMkKernel_tcl.h.

◆ NO_OtCheckEnum

#define NO_OtCheckEnum

Definition at line 600 of file LibMkKernel_tcl.h.

◆ NO_OtCheckEnumFlag

#define NO_OtCheckEnumFlag

Definition at line 601 of file LibMkKernel_tcl.h.

◆ NO_TestObject

#define NO_TestObject

Definition at line 602 of file LibMkKernel_tcl.h.

◆ NS

#define NS ( n)
Value:
tclmkkernel_ ## n

Definition at line 84 of file LibMkKernel_tcl.h.

◆ OBJCMD_ARGS

#define OBJCMD_ARGS   ClientData clientData, OT_ENV_T interp, int objc, OT_OBJ_T const *objv

Definition at line 99 of file LibMkKernel_tcl.h.

◆ OBJCMD_ARGS_CALL

#define OBJCMD_ARGS_CALL   clientData, interp, objc, objv

Definition at line 100 of file LibMkKernel_tcl.h.

◆ OBJECT_ARGS

#define OBJECT_ARGS
Value:
ClientData clientData, OT_ENV_T interp, Tcl_ObjectContext objCtx, \
int objc, OT_OBJ_T const *objv
Tcl_Interp * OT_ENV_T
Tcl_Obj * OT_OBJ_T

Definition at line 95 of file LibMkKernel_tcl.h.

95#define OBJECT_ARGS ClientData clientData, OT_ENV_T interp, Tcl_ObjectContext objCtx, \
96 int objc, OT_OBJ_T const *objv

◆ OBJECT_ARGS_CALL

#define OBJECT_ARGS_CALL   hdl, interp, objCtx, objc, objv

Definition at line 97 of file LibMkKernel_tcl.h.

◆ OT_CHECK__ME_REF_MkBinaryR

#define OT_CHECK__ME_REF_MkBinaryR ( val)
Value:
if (__skip >= objc) { \
OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
} else { \
val = VAL2MkBinaryR(objv[__skip++]); \
}
#define VAL2MkBinaryR(obj)

Definition at line 1060 of file LibMkKernel_tcl.h.

1060#define OT_CHECK__ME_REF_MkBinaryR(val) \
1061 if (__skip >= objc) { \
1062 OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
1063 } else { \
1064 val = VAL2MkBinaryR(objv[__skip++]); \
1065 }

◆ OT_CHECK__ME_REF_MkStringR

#define OT_CHECK__ME_REF_MkStringR ( val)
Value:
if (__skip >= objc) { \
OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
} else { \
val = VAL2MkStringR(objv[__skip++]); \
}
#define VAL2MkStringR(obj)

Definition at line 1071 of file LibMkKernel_tcl.h.

1071#define OT_CHECK__ME_REF_MkStringR(val) \
1072 if (__skip >= objc) { \
1073 OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
1074 } else { \
1075 val = VAL2MkStringR(objv[__skip++]); \
1076 }

◆ OT_Check_ARGS

#define OT_Check_ARGS   MK_RT_ARGS MK_MNG hdl, MK_STRN const arg, TCL_ARGS, int *skipP

Definition at line 347 of file LibMkKernel_tcl.h.

◆ OT_CHECK_BCP

#define OT_CHECK_BCP ( val)
Value:
if (__skip >= objc) { \
OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
} else { \
val = (MK_BIN) Tcl_GetByteArrayFromObj(objv[__skip++], NULL); \
}
MK_BINB * MK_BIN
byte-array pointer data-type with binary encoding (binary)

Definition at line 378 of file LibMkKernel_tcl.h.

378#define OT_CHECK_BCP(val) \
379 if (__skip >= objc) { \
380 OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
381 } else { \
382 val = (MK_BIN) Tcl_GetByteArrayFromObj(objv[__skip++], NULL); \
383 }

◆ OT_CHECK_BCPN

#define OT_CHECK_BCPN ( val)
Value:
if (__skip >= objc) { \
OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
} else { \
val = (MK_BINN) Tcl_GetByteArrayFromObj(objv[__skip++], NULL); \
}
MK_BINB const * MK_BINN
const byte-array pointer data-type

Definition at line 385 of file LibMkKernel_tcl.h.

385#define OT_CHECK_BCPN(val) \
386 if (__skip >= objc) { \
387 OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
388 } else { \
389 val = (MK_BINN) Tcl_GetByteArrayFromObj(objv[__skip++], NULL); \
390 }

◆ OT_CHECK_BNP

#define OT_CHECK_BNP ( val,
len )
Value:
if (__skip >= objc) { \
OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
} else { \
int i; \
val = (MK_BINN) Tcl_GetByteArrayFromObj(objv[__skip++], &i); \
len = (MK_SIZE)i; \
}
long MK_SIZE

Definition at line 369 of file LibMkKernel_tcl.h.

369#define OT_CHECK_BNP(val,len) \
370 if (__skip >= objc) { \
371 OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
372 } else { \
373 int i; \
374 val = (MK_BINN) Tcl_GetByteArrayFromObj(objv[__skip++], &i); \
375 len = (MK_SIZE)i; \
376 }

◆ OT_CHECK_bool

#define OT_CHECK_bool ( val)
Value:
#define MK(n)
#define OT_CHECK_LNGTMPL(val, func)
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsBOOL(OT_Check_ARGS, bool *)

Definition at line 626 of file LibMkKernel_tcl.h.

◆ OT_CHECK_C_COPY

#define OT_CHECK_C_COPY ( val,
size )
Value:
MkErrorC_CheckD (MK(Obj_AsSTR_COPY)(OT_Check_CALL(#val),val,size));
#define OT_Check_CALL(arg)
#define MkErrorC_CheckD(PROC)

Definition at line 644 of file LibMkKernel_tcl.h.

◆ OT_Check_CALL

#define OT_Check_CALL ( arg)
Value:
MK_RT_CALL hdl, arg, TCL_ARGS_CALL, &__skip
#define TCL_ARGS_CALL
#define MK_RT_CALL

Definition at line 348 of file LibMkKernel_tcl.h.

◆ OT_Check_CALL2

#define OT_Check_CALL2 ( arg)
Value:
MK_RT_CALL hdl, arg, TCL_ARGS_CALL, skipP

Definition at line 349 of file LibMkKernel_tcl.h.

◆ OT_CHECK_ENUM

#define OT_CHECK_ENUM ( ename,
val )
Value:
if (__skip >= objc) {\
OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
} else { \
OtErrorCheckLngGoto(Get_ ## ename ## _FromObj_path (MK_RT_CALL interp,objv[__skip++],&val)); \
}

Definition at line 605 of file LibMkKernel_tcl.h.

605#define OT_CHECK_ENUM(ename,val) \
606 if (__skip >= objc) {\
607 OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
608 } else { \
609 OtErrorCheckLngGoto(Get_ ## ename ## _FromObj_path (MK_RT_CALL interp,objv[__skip++],&val)); \
610 }

◆ OT_CHECK_ENUM_FLAG

#define OT_CHECK_ENUM_FLAG ( ename,
val )
Value:
if (__skip >= objc) {\
OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
} else { \
OtErrorCheckLngGoto(Get_ ## ename ## _FromObj_path (MK_RT_CALL interp,objv[__skip++],&val)); \
}

Definition at line 612 of file LibMkKernel_tcl.h.

612#define OT_CHECK_ENUM_FLAG(ename,val) \
613 if (__skip >= objc) {\
614 OT_ERROR_NUMARGS(hdl,__skip, objc, -999, +999, #val); \
615 } else { \
616 OtErrorCheckLngGoto(Get_ ## ename ## _FromObj_path (MK_RT_CALL interp,objv[__skip++],&val)); \
617 }

◆ OT_CHECK_IXN

#define OT_CHECK_IXN ( val)
Value:
OT_CHECK_LNGTMPL(val,MK(Obj_AsLLG))

Definition at line 634 of file LibMkKernel_tcl.h.

◆ OT_CHECK_LNGTMPL

#define OT_CHECK_LNGTMPL ( val,
func )
Value:
MkErrorC_CheckD (func(OT_Check_CALL(#val),&val));

Definition at line 624 of file LibMkKernel_tcl.h.

◆ OT_CHECK_NB1

#define OT_CHECK_NB1 ( val)
Value:
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsBOL(OT_Check_ARGS, MK_BOL *)

Definition at line 627 of file LibMkKernel_tcl.h.

◆ OT_CHECK_NF4

#define OT_CHECK_NF4 ( val)
Value:
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsFLT(OT_Check_ARGS, MK_FLT *)

Definition at line 635 of file LibMkKernel_tcl.h.

◆ OT_CHECK_NF8

#define OT_CHECK_NF8 ( val)
Value:
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsDBL(OT_Check_ARGS, MK_DBL *)

Definition at line 636 of file LibMkKernel_tcl.h.

◆ OT_CHECK_NI1

#define OT_CHECK_NI1 ( val)
Value:
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsI8(OT_Check_ARGS, MK_I8 *)

Definition at line 628 of file LibMkKernel_tcl.h.

◆ OT_CHECK_NI2

#define OT_CHECK_NI2 ( val)
Value:
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsI16(OT_Check_ARGS, MK_I16 *)

Definition at line 629 of file LibMkKernel_tcl.h.

◆ OT_CHECK_NI4

#define OT_CHECK_NI4 ( val)
Value:
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsI32(OT_Check_ARGS, MK_I32 *)

Definition at line 631 of file LibMkKernel_tcl.h.

◆ OT_CHECK_NI8

#define OT_CHECK_NI8 ( val)
Value:
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsI64(OT_Check_ARGS, MK_I64 *)

Definition at line 633 of file LibMkKernel_tcl.h.

◆ OT_CHECK_NIH

#define OT_CHECK_NIH ( val)
Value:
MK_HDL_REF_S3(OT_CHECK_) (val)
#define MK_HDL_REF_S3(__prefix)

Definition at line 639 of file LibMkKernel_tcl.h.

◆ OT_CHECK_NIL

#define OT_CHECK_NIL ( val)
Value:
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsLONG(OT_Check_ARGS, long *)

Definition at line 638 of file LibMkKernel_tcl.h.

◆ OT_CHECK_NOARGS

#define OT_CHECK_NOARGS
Value:
if (__skip != objc) { \
OT_ERROR_NUMARGS(hdl,objc, __skip, -999, +999, ""); \
}

Definition at line 360 of file LibMkKernel_tcl.h.

360#define OT_CHECK_NOARGS \
361 if (__skip != objc) { \
362 OT_ERROR_NUMARGS(hdl,objc, __skip, -999, +999, ""); \
363 }

◆ OT_CHECK_NUM_ARGS

#define OT_CHECK_NUM_ARGS ( min,
max )
Value:
if ((objc-__skip) < min || (objc-__skip) > max) { \
OT_ERROR_NUMARGS(hdl,__skip, objc, min, max, ""); \
}

Definition at line 354 of file LibMkKernel_tcl.h.

354#define OT_CHECK_NUM_ARGS(min,max) \
355 if ((objc-__skip) < min || (objc-__skip) > max) { \
356 OT_ERROR_NUMARGS(hdl,__skip, objc, min, max, ""); \
357 }

◆ OT_CHECK_OPTIONAL

#define OT_CHECK_OPTIONAL ( val)
Value:
if (__skip < objc) {val}

Definition at line 351 of file LibMkKernel_tcl.h.

◆ OT_CHECK_REQUIRED

#define OT_CHECK_REQUIRED ( val)
Value:
val

Definition at line 352 of file LibMkKernel_tcl.h.

◆ OT_CHECK_STRN

#define OT_CHECK_STRN ( val)
Value:
MK_ATTR_HOT MK_EXTERN enum MkErrorE MK_DECL MK Obj_AsSTRN(OT_Check_ARGS, MK_STRN *)

Definition at line 637 of file LibMkKernel_tcl.h.

◆ OT_CHECK_STRN_NULL

#define OT_CHECK_STRN_NULL ( val)
Value:
OT_CHECK_LNGTMPL(val,MK(Obj_AsCSTNull))

Definition at line 641 of file LibMkKernel_tcl.h.

◆ OT_CHECK_U2N

#define OT_CHECK_U2N ( val)
Value:
OT_CHECK_LNGTMPL(val,MK(Obj_AsU16))

Definition at line 630 of file LibMkKernel_tcl.h.

◆ OT_CHECK_U4N

#define OT_CHECK_U4N ( val)
Value:
OT_CHECK_LNGTMPL(val,MK(Obj_AsU32))

Definition at line 632 of file LibMkKernel_tcl.h.

◆ OT_CONSTRUCTOR_POST

#define OT_CONSTRUCTOR_POST ( x)

Definition at line 164 of file LibMkKernel_tcl.h.

◆ ot_enum_append

#define ot_enum_append ( _o,
_s )
Value:
Tcl_ListObjAppendElement(NULL,_o,ot_fixstrobj(_s))
#define ot_fixstrobj(_s)

Definition at line 1094 of file LibMkKernel_tcl.h.

◆ OT_ERROR_ABNORMAL

#define OT_ERROR_ABNORMAL ( mng)
Value:
{ \
MkErrorSetV_4M(mng,__func__,999,"AbnormalError: %s", Tcl_GetStringResult(interp));\
Tcl_ResetResult(interp); \
}

Definition at line 326 of file LibMkKernel_tcl.h.

326#define OT_ERROR_ABNORMAL(mng) { \
327 MkErrorSetV_4M(mng,__func__,999,"AbnormalError: %s", Tcl_GetStringResult(interp));\
328 Tcl_ResetResult(interp); \
329}

◆ OT_ERROR_CONSTRUCTOR

#define OT_ERROR_CONSTRUCTOR ( class)
Value:
{ \
Tcl_SetResult(interp, "InitError: '" #class "' constructor return 'NULL' pointer", TCL_STATIC); \
if (MkErrorCheckE_0E()) { \
Tcl_AppendResult(interp, "\nMqError: ", MkErrorGetText_0E(), NULL); \
MkErrorReset_0M(); \
} \
}
#define MkErrorCheckE_0E()
#define MkErrorGetText_0E()

Definition at line 314 of file LibMkKernel_tcl.h.

314#define OT_ERROR_CONSTRUCTOR(class) { \
315 Tcl_SetResult(interp, "InitError: '" #class "' constructor return 'NULL' pointer", TCL_STATIC); \
316 if (MkErrorCheckE_0E()) { \
317 Tcl_AppendResult(interp, "\nMqError: ", MkErrorGetText_0E(), NULL); \
318 MkErrorReset_0M(); \
319 } \
320}

◆ OT_ERROR_LNG_2_META

#define OT_ERROR_LNG_2_META ( m)
Value:
MK(MkExceptionC_Catch) (OT_Prefix_CALL m, NULL, __func__)
#define OT_Prefix_CALL

Definition at line 411 of file LibMkKernel_tcl.h.

◆ OT_ERROR_LNG_RETURN

#define OT_ERROR_LNG_RETURN   return TCL_ERROR

Definition at line 305 of file LibMkKernel_tcl.h.

◆ OT_ERROR_LNG_RETURN_HDL_NAT_NULL

#define OT_ERROR_LNG_RETURN_HDL_NAT_NULL ( _hdl)
Value:
{ \
Tcl_SetResult(interp, "NatIsNullError : ", TCL_STATIC); \
Tcl_AppendResult(interp, MkObjectToString(_hdl)); \
return TCL_ERROR; \
}
#define MkObjectToString(...)

Definition at line 332 of file LibMkKernel_tcl.h.

332#define OT_ERROR_LNG_RETURN_HDL_NAT_NULL(_hdl) { \
333 Tcl_SetResult(interp, "NatIsNullError : ", TCL_STATIC); \
334 Tcl_AppendResult(interp, MkObjectToString(_hdl)); \
335 return TCL_ERROR; \
336}

◆ OT_ERROR_LNG_RETURN_VAR_ERROR

#define OT_ERROR_LNG_RETURN_VAR_ERROR ( ...)
Value:
return ({ OT_ERROR_VAR_DEFAULT(__VA_ARGS__); TCL_ERROR; })
#define OT_ERROR_VAR_DEFAULT(...)

Definition at line 340 of file LibMkKernel_tcl.h.

◆ OT_ERROR_META_2_LNG

#define OT_ERROR_META_2_LNG ( m)
Value:
MK(MkExceptionC_Raise) (OT_Prefix_CALL m, __doc, __FILE__, __LINE__)
#define __doc

Definition at line 410 of file LibMkKernel_tcl.h.

◆ OT_ERROR_NUMARGS

#define OT_ERROR_NUMARGS ( ...)
Value:
#define WrongNumArgs(...)

Definition at line 323 of file LibMkKernel_tcl.h.

323#define OT_ERROR_NUMARGS(...) \
324 MkErrorC_CheckD(WrongNumArgs(__VA_ARGS__))

◆ OT_ERROR_SOFT_CONSTRUCTOR

#define OT_ERROR_SOFT_CONSTRUCTOR ( class)
Value:
{ \
Tcl_SetResult(interp, "InitSoftError: '" #class "' soft constructor return 'NULL' pointer", TCL_STATIC); \
}

Definition at line 310 of file LibMkKernel_tcl.h.

310#define OT_ERROR_SOFT_CONSTRUCTOR(class) { \
311 Tcl_SetResult(interp, "InitSoftError: '" #class "' soft constructor return 'NULL' pointer", TCL_STATIC); \
312}

◆ OT_ERROR_TYPE

#define OT_ERROR_TYPE ( str)
Value:
Tcl_SetObjResult(interp, Tcl_ObjPrintf("TYPE ERROR: %s", str));
#define str(s)

Definition at line 307 of file LibMkKernel_tcl.h.

307#define OT_ERROR_TYPE(str) \
308 Tcl_SetObjResult(interp, Tcl_ObjPrintf("TYPE ERROR: %s", str));

◆ OT_ERROR_VAR_DEFAULT

#define OT_ERROR_VAR_DEFAULT ( ...)
Value:
Tcl_SetObjResult(interp,Tcl_ObjPrintf(__VA_ARGS__));

Definition at line 338 of file LibMkKernel_tcl.h.

◆ ot_fixstr

#define ot_fixstr ( _s)
Value:
_s,strlen(_s)

Definition at line 1092 of file LibMkKernel_tcl.h.

◆ ot_fixstrobj

#define ot_fixstrobj ( _s)
Value:
Tcl_NewStringObj(_s,strlen(_s))

Definition at line 1093 of file LibMkKernel_tcl.h.

◆ OT_FRAME_CLEANUP

#define OT_FRAME_CLEANUP   if (frame != NULL) { Tcl_DecrRefCount(frame); frame = NULL; }

Definition at line 138 of file LibMkKernel_tcl.h.

◆ OT_GET__ME_REF_MkBinaryR

#define OT_GET__ME_REF_MkBinaryR ( b)
Value:
BIN2VAL(b.data,b.size)
#define BIN2VAL(ptr, len)

Definition at line 1057 of file LibMkKernel_tcl.h.

◆ OT_GET__ME_REF_MkStringR

#define OT_GET__ME_REF_MkStringR ( s)
Value:
STR2VAL(s.ptr,s.len)
#define STR2VAL(ptr, len)

Definition at line 1068 of file LibMkKernel_tcl.h.

◆ OT_GET_CALL_FILE

#define OT_GET_CALL_FILE   MK(Get_Call_File)(MK_RT_CALL interp,&frame)

Definition at line 649 of file LibMkKernel_tcl.h.

◆ OT_GET_CALL_LINE

#define OT_GET_CALL_LINE   MK(Get_Call_Line)(MK_RT_CALL interp,&frame)

Definition at line 650 of file LibMkKernel_tcl.h.

◆ OT_GET_CALL_PROC

#define OT_GET_CALL_PROC   MK(Get_Call_Proc)(MK_RT_CALL interp,&frame)

Definition at line 648 of file LibMkKernel_tcl.h.

◆ OT_GET_CONSTR_NAME

#define OT_GET_CONSTR_NAME ( ctor)
Value:
VAL2STR(ctor)
#define VAL2STR(obj)

Definition at line 365 of file LibMkKernel_tcl.h.

◆ OT_LNG_FULLNAME_FROM_OBJECT

#define OT_LNG_FULLNAME_FROM_OBJECT ( _obj)
Value:
Tcl_GetString(Tcl_GetObjectName(interp,_obj))

Definition at line 250 of file LibMkKernel_tcl.h.

◆ OT_LNG_NAME_CLASS_FROM_CONTEXT

#define OT_LNG_NAME_CLASS_FROM_CONTEXT ( ox)
Value:
OT_LNG_NAME_FROM_CLASS(Tcl_MethodDeclarerClass(Tcl_ObjectContextMethod(ox)))
#define OT_LNG_NAME_FROM_CLASS(_cls)

Definition at line 260 of file LibMkKernel_tcl.h.

260#define OT_LNG_NAME_CLASS_FROM_CONTEXT(ox) \
261 OT_LNG_NAME_FROM_CLASS(Tcl_MethodDeclarerClass(Tcl_ObjectContextMethod(ox)))

◆ OT_LNG_NAME_FROM_CLASS

#define OT_LNG_NAME_FROM_CLASS ( _cls)
Value:
OT_LNG_NAME_FROM_OBJECT(Tcl_GetClassAsObject(_cls))
#define OT_LNG_NAME_FROM_OBJECT(_obj)

Definition at line 252 of file LibMkKernel_tcl.h.

◆ OT_LNG_NAME_FROM_OBJ

#define OT_LNG_NAME_FROM_OBJ ( _obj)
Value:
OT_LNG_NAME_FROM_OBJECT(Tcl_GetObjectFromObj(interp,_obj))

Definition at line 253 of file LibMkKernel_tcl.h.

◆ OT_LNG_NAME_FROM_OBJECT

#define OT_LNG_NAME_FROM_OBJECT ( _obj)
Value:
Tcl_GetCommandName(interp,Tcl_GetObjectCommand(_obj))

Definition at line 251 of file LibMkKernel_tcl.h.

◆ OT_LNG_NULL

#define OT_LNG_NULL   NULL

Definition at line 244 of file LibMkKernel_tcl.h.

◆ OT_LNG_OBJ_CLASSNAME

#define OT_LNG_OBJ_CLASSNAME ( obj)
Value:
MK(ClassName)(OT_Prefix_CALL obj, false)

Definition at line 255 of file LibMkKernel_tcl.h.

◆ OT_LNG_OBJ_CLASSNAME_SHORT

#define OT_LNG_OBJ_CLASSNAME_SHORT ( obj)
Value:
MK(ClassName)(OT_Prefix_CALL obj, true)

Definition at line 256 of file LibMkKernel_tcl.h.

◆ OT_LNG_OBJV

#define OT_LNG_OBJV ( __skip)
Value:
objv[__skip]

Definition at line 263 of file LibMkKernel_tcl.h.

◆ OT_LNG_RETURN

#define OT_LNG_RETURN ( ret,
cmd )
Value:
ret = Tcl_GetObjResult(interp); \
#define OtErrorCheckLngGoto(cmd)

Definition at line 246 of file LibMkKernel_tcl.h.

246#define OT_LNG_RETURN(ret,cmd) \
247 OtErrorCheckLngGoto(cmd); \
248 ret = Tcl_GetObjResult(interp); \
249

◆ OT_LNG_SET_VAR

#define OT_LNG_SET_VAR ( var,
val )
Value:
if (Tcl_ObjSetVar2(interp, var, NULL, val, TCL_LEAVE_ERR_MSG) == NULL) goto error

Definition at line 268 of file LibMkKernel_tcl.h.

268#define OT_LNG_SET_VAR(var,val) \
269 if (Tcl_ObjSetVar2(interp, var, NULL, val, TCL_LEAVE_ERR_MSG) == NULL) goto error

◆ OT_LNG_UNDEF

#define OT_LNG_UNDEF   NULL

Definition at line 245 of file LibMkKernel_tcl.h.

◆ OT_MK_CALL_0

#define OT_MK_CALL_0 ( hdl,
cls,
meth,
ret )
Value:
{ \
OtErrorCheckLngGoto(MK(cls##_##meth)(hdl,interp, NULL, 0, NULL)); \
ret = Tcl_GetObjResult(interp); \
}

Definition at line 228 of file LibMkKernel_tcl.h.

228#define OT_MK_CALL_0(hdl,cls,meth,ret) { \
229 OtErrorCheckLngGoto(MK(cls##_##meth)(hdl,interp, NULL, 0, NULL)); \
230 ret = Tcl_GetObjResult(interp); \
231}

◆ OT_NEW_Mk_enum_OBJ

#define OT_NEW_Mk_enum_OBJ ( typ,
val )
Value:
MK(Mk ## typ ## _ToString(val))

Definition at line 829 of file LibMkKernel_tcl.h.

◆ OT_OBJ_COPY

#define OT_OBJ_COPY ( o)
Value:
({OT_OBJ_T t=(o); if (t) { t = Tcl_NewStringObj(Tcl_GetString(t),-1); OT_REF_INCR(t); }; t; })
#define OT_REF_INCR(_obj)

Definition at line 577 of file LibMkKernel_tcl.h.

◆ OT_OBJ_TO_CLASS

#define OT_OBJ_TO_CLASS ( str)
Value:

Definition at line 265 of file LibMkKernel_tcl.h.

◆ OT_OBJ_TO_ENUM

#define OT_OBJ_TO_ENUM ( str)
Value:
#str

Definition at line 266 of file LibMkKernel_tcl.h.

◆ OT_OBJ_TYPE_STRING

#define OT_OBJ_TYPE_STRING ( obj)
Value:
MK(ClassName)(OT_Prefix_CALL obj, false)

Definition at line 257 of file LibMkKernel_tcl.h.

◆ OT_OBJECT_DELETE

#define OT_OBJECT_DELETE ( O)
Value:
MK(AtomDeleteHard) (MK_RT_CALL interp, O)

Definition at line 452 of file LibMkKernel_tcl.h.

◆ OT_OBJECT_DELETE_HARD

#define OT_OBJECT_DELETE_HARD ( O)
Value:
MK(AtomDeleteHard) (MK_RT_CALL interp,O)

Definition at line 448 of file LibMkKernel_tcl.h.

◆ OT_OBJECT_DELETE_SOFT

#define OT_OBJECT_DELETE_SOFT ( O)
Value:
error: done in AtomMetaDelete

Definition at line 445 of file LibMkKernel_tcl.h.

◆ OT_OBJECT_DISPOSE

#define OT_OBJECT_DISPOSE ( O)
Value:
MK(AtomDispose) (MK_RT_CALL O)

Definition at line 451 of file LibMkKernel_tcl.h.

◆ OT_Prefix_ARGS

#define OT_Prefix_ARGS   OT_ENV_T interp, MK_RT_ARGS

Definition at line 345 of file LibMkKernel_tcl.h.

◆ OT_Prefix_CALL

#define OT_Prefix_CALL   interp, MK_RT_CALL

Definition at line 346 of file LibMkKernel_tcl.h.

◆ OT_ProcRet

#define OT_ProcRet   int

Definition at line 90 of file LibMkKernel_tcl.h.

◆ OT_REF_DECR

#define OT_REF_DECR ( _obj)
Value:
Tcl_DecrRefCount(_obj)

Definition at line 455 of file LibMkKernel_tcl.h.

◆ OT_REF_DECR_AND_NULL

#define OT_REF_DECR_AND_NULL ( _obj)
Value:
if (_obj) { Tcl_DecrRefCount (_obj) ; _obj = NULL; }

Definition at line 457 of file LibMkKernel_tcl.h.

◆ OT_REF_INCR

#define OT_REF_INCR ( _obj)
Value:
Tcl_IncrRefCount(_obj)

Definition at line 454 of file LibMkKernel_tcl.h.

◆ OT_REF_INCR_AND_RETURN

#define OT_REF_INCR_AND_RETURN ( _obj)
Value:
({ Tcl_IncrRefCount(_obj); _obj;})

Definition at line 456 of file LibMkKernel_tcl.h.

◆ OT_REGISTRY_AS_TLS

#define OT_REGISTRY_AS_TLS

Definition at line 273 of file LibMkKernel_tcl.h.

◆ OT_retObj_APPEND

#define OT_retObj_APPEND ( var)
Value:
OtErrorCheckLngGoto(Tcl_ListObjAppendElement(interp,retObj,var));

Definition at line 171 of file LibMkKernel_tcl.h.

◆ OT_retObj_CONSTR

#define OT_retObj_CONSTR ( x)
Value:
retObj = Tcl_GetObjectName(interp,MK(AtomInit)(MK_RT_CALL interp,selfO,MkOBJ(x)));
#define MkOBJ(x)
cast a known-object into an MkObjectS pointer

Definition at line 163 of file LibMkKernel_tcl.h.

◆ OT_retObj_RETURN

#define OT_retObj_RETURN
Value:
if (retObj != NULL) { \
Tcl_SetObjResult(interp,retObj); \
return TCL_OK; \
} else { \
return TCL_ERROR; \
}

Definition at line 172 of file LibMkKernel_tcl.h.

172#define OT_retObj_RETURN \
173 if (retObj != NULL) { \
174 Tcl_SetObjResult(interp,retObj); \
175 return TCL_OK; \
176 } else { \
177 return TCL_ERROR; \
178 }

◆ OT_retObj_SET

#define OT_retObj_SET ( val)
Value:
retObj = (val);

Definition at line 166 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_BFL

#define OT_retObj_SET_BFL ( nat)
Value:
retObj = MK(MkBufferListC_ObjNew) (MK_RT_CALL interp,nat)

Definition at line 931 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_BIN

#define OT_retObj_SET_BIN ( nat,
len )
Value:
retObj = BIN2VAL(nat,len);

Definition at line 206 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_BOL

#define OT_retObj_SET_BOL ( nat)
Value:
retObj = BOL2VAL(nat);
#define BOL2VAL(nat)

Definition at line 197 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_BUF

#define OT_retObj_SET_BUF ( nat)
Value:
retObj = MK(MkBufferC_ObjNew) (MK_RT_CALL interp,nat)

Definition at line 949 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_BUS

#define OT_retObj_SET_BUS ( nat)
Value:
retObj = MK(MkBufferStreamC_ObjNew) (MK_RT_CALL interp,nat)

Definition at line 967 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_DBL

#define OT_retObj_SET_DBL ( nat)
Value:
retObj = DBL2VAL(nat);
#define DBL2VAL(nat)

Definition at line 205 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_ERR

#define OT_retObj_SET_ERR ( nat)
Value:
retObj = MK(MkErrorC_ObjNew) (MK_RT_CALL interp,nat)

Definition at line 985 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_Error

#define OT_retObj_SET_Error
Value:
retObj = NULL; \
/*Tcl_AppendResult(interp,"\n -> found in: ", doc, NULL);*/

Definition at line 168 of file LibMkKernel_tcl.h.

168#define OT_retObj_SET_Error retObj = NULL; \
169 /*Tcl_AppendResult(interp,"\n -> found in: ", doc, NULL);*/

◆ OT_retObj_SET_FLT

#define OT_retObj_SET_FLT ( nat)
Value:
retObj = FLT2VAL(nat);
#define FLT2VAL(nat)

Definition at line 204 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_HDL

#define OT_retObj_SET_HDL ( nat)
Value:
retObj = HDL2VAL(nat);
#define HDL2VAL(nat)

Definition at line 210 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_I16

#define OT_retObj_SET_I16 ( nat)
Value:
retObj = I162VAL(nat);
#define I162VAL(nat)

Definition at line 199 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_I32

#define OT_retObj_SET_I32 ( nat)
Value:
retObj = INT2VAL(nat);
#define INT2VAL(nat)

Definition at line 201 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_I64

#define OT_retObj_SET_I64 ( nat)
Value:
retObj = I642VAL(nat);
#define I642VAL(nat)

Definition at line 202 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_I8

#define OT_retObj_SET_I8 ( nat)
Value:
retObj = I82VAL(nat);
#define I82VAL(nat)

Definition at line 198 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_LFL

#define OT_retObj_SET_LFL ( nat)
Value:
retObj = MK(MkLogFileC_ObjNew) (MK_RT_CALL interp,nat)

Definition at line 1003 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_List

#define OT_retObj_SET_List   retObj = Tcl_NewListObj(0,NULL);

Definition at line 170 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_LLG

#define OT_retObj_SET_LLG ( nat)
Value:
retObj = LLG2VAL(nat);
#define LLG2VAL(nat)

Definition at line 203 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_LONG

#define OT_retObj_SET_LONG ( nat)
Value:
retObj = LONG2VAL(nat);
#define LONG2VAL(nat)

Definition at line 209 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_None

#define OT_retObj_SET_None   retObj = RG(noneObj);

Definition at line 167 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_OBJ

#define OT_retObj_SET_OBJ ( nat)
Value:
retObj = MK(MkObjectC_ObjNew) (MK_RT_CALL interp,nat)

Definition at line 1021 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_RT

#define OT_retObj_SET_RT ( nat)
Value:
retObj = MK(MkRuntimeC_ObjNew) (MK_RT_CALL interp,nat)

Definition at line 1039 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_STR

#define OT_retObj_SET_STR ( nat)
Value:
retObj = STRN2VAL(nat);
#define STRN2VAL(nat)

Definition at line 207 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_STRN

#define OT_retObj_SET_STRN ( nat)
Value:
retObj = STRN2VAL(nat);

Definition at line 208 of file LibMkKernel_tcl.h.

◆ OT_retObj_SET_U16

#define OT_retObj_SET_U16 ( nat)
Value:
retObj = U162VAL(nat);
#define U162VAL(nat)

Definition at line 200 of file LibMkKernel_tcl.h.

◆ OT_SELF

#define OT_SELF   selfO

Definition at line 472 of file LibMkKernel_tcl.h.

◆ OT_SELF_CMD_O

#define OT_SELF_CMD_O ( o)
Value:
Tcl_GetObjectCommand(OT_SELF_O(o))

Definition at line 474 of file LibMkKernel_tcl.h.

◆ OT_SELF_NAME_O

#define OT_SELF_NAME_O ( o)
Value:
Tcl_GetObjectName(interp,OT_SELF_O(o))

Definition at line 473 of file LibMkKernel_tcl.h.

◆ OT_SELF_O

#define OT_SELF_O ( o)
Value:
((OT_SELF_T)(*o).self)
Tcl_Object OT_SELF_T

Definition at line 470 of file LibMkKernel_tcl.h.

◆ OT_SELF_X

#define OT_SELF_X ( x)
Value:

Definition at line 471 of file LibMkKernel_tcl.h.

◆ OT_SETUP_ARGS_ALL

#define OT_SETUP_ARGS_ALL ( d)
Value:
OT_OBJ_T retObj=NULL; \
MK_UNUSED static const MK_STRN __doc=d; \
MK_UNUSED OT_OBJ_T frame=NULL; \
#define MK_UNUSED
mark unnused variables and functions
const MK_STRB * MK_STRN
constant string pointer data-type

Definition at line 133 of file LibMkKernel_tcl.h.

133#define OT_SETUP_ARGS_ALL(d) \
134 OT_OBJ_T retObj=NULL; \
135 MK_UNUSED static const MK_STRN __doc=d; \
136 MK_UNUSED OT_OBJ_T frame=NULL; \
137

◆ OT_SETUP_CONSTRUCTOR_ARGS

#define OT_SETUP_CONSTRUCTOR_ARGS ( ...)
Value:
OT_SETUP_VARARGS(__VA_ARGS__)
#define OT_SETUP_VARARGS(min, max, d)

Definition at line 144 of file LibMkKernel_tcl.h.

◆ OT_SETUP_doc

#define OT_SETUP_doc   __attribute__((unused)) const MK_STRN __doc = __func__;

Definition at line 156 of file LibMkKernel_tcl.h.

◆ OT_SETUP_NOARG

#define OT_SETUP_NOARG ( d)
Value:
OT_CHECK_NUM_ARGS(0,0);
#define OT_SETUP_ARGS_ALL(d)

Definition at line 150 of file LibMkKernel_tcl.h.

150#define OT_SETUP_NOARG(d) \
151 OT_SETUP_ARGS_ALL(d); \
152 OT_CHECK_NUM_ARGS(0,0);

◆ OT_SETUP_obj

#define OT_SETUP_obj   MK_OBJ obj = OBJ;

Definition at line 155 of file LibMkKernel_tcl.h.

◆ OT_SETUP_ONEARG

#define OT_SETUP_ONEARG ( d)
Value:
OT_CHECK_NUM_ARGS(1,1);

Definition at line 146 of file LibMkKernel_tcl.h.

146#define OT_SETUP_ONEARG(d) \
147 OT_SETUP_ARGS_ALL(d); \
148 OT_CHECK_NUM_ARGS(1,1);

◆ OT_SETUP_VARARGS

#define OT_SETUP_VARARGS ( min,
max,
d )
Value:
OT_CHECK_NUM_ARGS(min,max);

Definition at line 140 of file LibMkKernel_tcl.h.

140#define OT_SETUP_VARARGS(min,max,d) \
141 OT_SETUP_ARGS_ALL(d); \
142 OT_CHECK_NUM_ARGS(min,max);

◆ OT_TCL_EXTERN

#define OT_TCL_EXTERN   __attribute__ ((visibility("default")))

Definition at line 909 of file LibMkKernel_tcl.h.

◆ OT_TMP_BAC_OBJ

#define OT_TMP_BAC_OBJ ( val)
Value:
MK(MkBufferListC_ObjNew) (MK_RT_CALL interp,val)

Definition at line 918 of file LibMkKernel_tcl.h.

◆ OT_TMP_BFL_OBJ

#define OT_TMP_BFL_OBJ ( val)
Value:
MK(MkBufferListC_ObjNew) (MK_RT_CALL interp,val)

Definition at line 933 of file LibMkKernel_tcl.h.

◆ OT_TMP_BIN_OBJ

#define OT_TMP_BIN_OBJ ( val,
len )
Value:
BIN2VAL(val,len)

Definition at line 431 of file LibMkKernel_tcl.h.

◆ OT_TMP_BOL_OBJ

#define OT_TMP_BOL_OBJ ( val)
Value:
BOL2VAL(val)

Definition at line 424 of file LibMkKernel_tcl.h.

◆ OT_TMP_BUF_OBJ

#define OT_TMP_BUF_OBJ ( val)
Value:
MK(MkBufferC_ObjNew) (MK_RT_CALL interp,val)

Definition at line 951 of file LibMkKernel_tcl.h.

◆ OT_TMP_BUS_OBJ

#define OT_TMP_BUS_OBJ ( val)
Value:
MK(MkBufferStreamC_ObjNew) (MK_RT_CALL interp,val)

Definition at line 969 of file LibMkKernel_tcl.h.

◆ OT_TMP_CST_OBJ

#define OT_TMP_CST_OBJ ( val)
Value:

Definition at line 433 of file LibMkKernel_tcl.h.

◆ OT_TMP_DBL_OBJ

#define OT_TMP_DBL_OBJ ( val)
Value:
DBL2VAL(val)

Definition at line 430 of file LibMkKernel_tcl.h.

◆ OT_TMP_ERR_OBJ

#define OT_TMP_ERR_OBJ ( val)
Value:
MK(MkErrorC_ObjNew) (MK_RT_CALL interp,val)

Definition at line 987 of file LibMkKernel_tcl.h.

◆ OT_TMP_FLT_OBJ

#define OT_TMP_FLT_OBJ ( val)
Value:
FLT2VAL(val)

Definition at line 429 of file LibMkKernel_tcl.h.

◆ OT_TMP_I16_OBJ

#define OT_TMP_I16_OBJ ( val)
Value:
I162VAL(val)

Definition at line 426 of file LibMkKernel_tcl.h.

◆ OT_TMP_I32_OBJ

#define OT_TMP_I32_OBJ ( val)
Value:
INT2VAL(val)

Definition at line 427 of file LibMkKernel_tcl.h.

◆ OT_TMP_I64_OBJ

#define OT_TMP_I64_OBJ ( val)
Value:
I642VAL(val)

Definition at line 428 of file LibMkKernel_tcl.h.

◆ OT_TMP_I8_OBJ

#define OT_TMP_I8_OBJ ( val)
Value:
I82VAL(val)

Definition at line 425 of file LibMkKernel_tcl.h.

◆ OT_TMP_LFL_OBJ

#define OT_TMP_LFL_OBJ ( val)
Value:
MK(MkLogFileC_ObjNew) (MK_RT_CALL interp,val)

Definition at line 1005 of file LibMkKernel_tcl.h.

◆ OT_TMP_OBJ_OBJ

#define OT_TMP_OBJ_OBJ ( val)
Value:
MK(MkObjectC_ObjNew) (MK_RT_CALL interp,val)

Definition at line 1023 of file LibMkKernel_tcl.h.

◆ OT_TMP_RT_OBJ

#define OT_TMP_RT_OBJ ( val)
Value:
MK(MkRuntimeC_ObjNew) (MK_RT_CALL interp,val)

Definition at line 1041 of file LibMkKernel_tcl.h.

◆ OT_TMP_STR_OBJ

#define OT_TMP_STR_OBJ ( val)
Value:

Definition at line 432 of file LibMkKernel_tcl.h.

◆ OT_VARFRAME_ARGS

#define OT_VARFRAME_ARGS   MK_RT_ARGS OT_VARFRAME varframe

Definition at line 735 of file LibMkKernel_tcl.h.

◆ OT_VARFRAME_CALL

#define OT_VARFRAME_CALL   MK_RT_CALL varframe

Definition at line 736 of file LibMkKernel_tcl.h.

◆ OT_VARFRAME_CREATE

#define OT_VARFRAME_CREATE
Value:
struct MkVarFrameS otVarFrame = {50, 0}; otVarFrame.data = otVarFrame.prealloc; \
OT_VARFRAME varframe = &otVarFrame;
OT_OBJ_T prealloc[50]
OT_OBJ_T * data

Definition at line 726 of file LibMkKernel_tcl.h.

726#define OT_VARFRAME_CREATE \
727 struct MkVarFrameS otVarFrame = {50, 0}; otVarFrame.data = otVarFrame.prealloc; \
728 OT_VARFRAME varframe = &otVarFrame;

◆ OT_VARFRAME_DELETE

#define OT_VARFRAME_DELETE
Value:
{ \
for (int i=0; i<varframe->num; i++) Tcl_DecrRefCount(varframe->data[i]); \
varframe = NULL; \
}

Definition at line 730 of file LibMkKernel_tcl.h.

730#define OT_VARFRAME_DELETE { \
731 for (int i=0; i<varframe->num; i++) Tcl_DecrRefCount(varframe->data[i]); \
732 varframe = NULL; \
733}

◆ OT_VARFRAME_OBJ_RESULT

#define OT_VARFRAME_OBJ_RESULT ( itp)
Value:
MK(OT_VARFRAME_ADD)(OT_VARFRAME_CALL,Tcl_GetObjResult(itp))
#define OT_VARFRAME_CALL

Definition at line 757 of file LibMkKernel_tcl.h.

◆ OtClass_ARGS

#define OtClass_ARGS   OBJECT_ARGS

Definition at line 107 of file LibMkKernel_tcl.h.

◆ OtClass_ARGS_CALL

#define OtClass_ARGS_CALL   OBJECT_ARGS_CALL

Definition at line 108 of file LibMkKernel_tcl.h.

◆ OtErrorCheckLng

#define OtErrorCheckLng ( cmd)
Value:
if (cmd != TCL_OK) return TCL_ERROR

Definition at line 413 of file LibMkKernel_tcl.h.

◆ OtErrorCheckLngGoto

#define OtErrorCheckLngGoto ( cmd)
Value:
if (cmd != TCL_OK) goto error

Definition at line 414 of file LibMkKernel_tcl.h.

◆ OtErrorCheckLngGoto1

#define OtErrorCheckLngGoto1 ( cmd)
Value:
if (cmd != TCL_OK) goto error1

Definition at line 415 of file LibMkKernel_tcl.h.

◆ OtErrorCheckLngGoto2

#define OtErrorCheckLngGoto2 ( cmd)
Value:
if (cmd != TCL_OK) goto error2

Definition at line 416 of file LibMkKernel_tcl.h.

◆ printAry

#define printAry ( c,
o )
Value:
printAry3(#o,c,o)
#define printAry3(txt, c, o)

Definition at line 1123 of file LibMkKernel_tcl.h.

◆ printAry3

#define printAry3 ( txt,
c,
o )
Value:
do { \
mk_dbg_Z_start(512,MK_COLOR_BLUE "%s : ",txt); \
for(int i=0;i<c;i++) { \
mk_dbg_Z_next(MK_COLOR_YELLOW "[%d:%p]" MK_COLOR_RESET "='%s' ",i,o[i],o[i]?Tcl_GetString(o[i]):"NULL"); \
} \
mk_dbg_Z_end(); \
} while (0)

Definition at line 1130 of file LibMkKernel_tcl.h.

1130#define printAry3(txt, c,o) do { \
1131 mk_dbg_Z_start(512,MK_COLOR_BLUE "%s : ",txt); \
1132 for(int i=0;i<c;i++) { \
1133 mk_dbg_Z_next(MK_COLOR_YELLOW "[%d:%p]" MK_COLOR_RESET "='%s' ",i,o[i],o[i]?Tcl_GetString(o[i]):"NULL"); \
1134 } \
1135 mk_dbg_Z_end(); \
1136} while (0)

◆ printAryDetail

#define printAryDetail ( c,
o )
Value:
for(int i=0;i<c;i++) { printLngObj(o[i]) }
#define printLngObj(var)

Definition at line 1124 of file LibMkKernel_tcl.h.

◆ printAryL

#define printAryL ( t,
c,
o )
Value:
#define printAryX(x, t, c, o)
#define META_CONTEXT_S

Definition at line 1145 of file LibMkKernel_tcl.h.

1145#define printAryL(t,c,o) printAryX(META_CONTEXT_S,t,c,o) \
1146

◆ printAryX

#define printAryX ( x,
t,
c,
o )
Value:
printXV(x, "%-15s = ",t); \
for(int i=0;i<c;i++) { \
fprintf(stderr, "'%s' ",o[i]?Tcl_GetString(o[i]):"NULL"); \
} \
fputc('\n', stderr);

Definition at line 1138 of file LibMkKernel_tcl.h.

1138#define printAryX(x,t,c,o) \
1139 printXV(x, "%-15s = ",t); \
1140 for(int i=0;i<c;i++) { \
1141 fprintf(stderr, "'%s' ",o[i]?Tcl_GetString(o[i]):"NULL"); \
1142 } \
1143 fputc('\n', stderr);

◆ printLLngObj

#define printLLngObj ( var)
Value:
if (var) {printXC2(META_CONTEXT_S,MK(PrintLngObj)(OT_Prefix_CALL #var,var))} else {printTxt(#var "=NULL")}

Definition at line 1108 of file LibMkKernel_tcl.h.

◆ printLng

#define printLng ( var)
Value:
printV(#var" = '%s' [ref=%i]",(var?VAL2STR(var):"NULL"),(var)?(var)->refCount:-1)

Definition at line 1104 of file LibMkKernel_tcl.h.

◆ printLngClass

#define printLngClass ( clsC)
Value:
printV(#clsC " name = %s\n", OT_LNG_NAME_FROM_CLASS(clsC))

Definition at line 1150 of file LibMkKernel_tcl.h.

◆ printLngErrorCode

#define printLngErrorCode ( )
Value:
do { \
OT_OBJ_T errorCode = Tcl_GetVar2Ex (interp, "errorCode", NULL, TCL_GLOBAL_ONLY); \
printLngObj(errorCode); \
} while (0); \

Definition at line 1110 of file LibMkKernel_tcl.h.

1110#define printLngErrorCode() do { \
1111 OT_OBJ_T errorCode = Tcl_GetVar2Ex (interp, "errorCode", NULL, TCL_GLOBAL_ONLY); \
1112 printLngObj(errorCode); \
1113} while (0); \
1114

◆ printLngErrorInfo

#define printLngErrorInfo ( )
Value:
do { \
OT_OBJ_T errorInfo = Tcl_GetVar2Ex (interp, "errorInfo", NULL, TCL_GLOBAL_ONLY); \
printLngObj(errorInfo); \
} while (0); \

Definition at line 1115 of file LibMkKernel_tcl.h.

1115#define printLngErrorInfo() do { \
1116 OT_OBJ_T errorInfo = Tcl_GetVar2Ex (interp, "errorInfo", NULL, TCL_GLOBAL_ONLY); \
1117 printLngObj(errorInfo); \
1118} while (0); \
1119

◆ printLngObj

#define printLngObj ( var)
Value:
if (var) {printTxt(MK(PrintLngObj)(OT_Prefix_CALL #var,var))} else {printTxt(#var "=NULL")}

Definition at line 1106 of file LibMkKernel_tcl.h.

◆ printLngObject

#define printLngObject ( objO)
Value:
printV(#objO " name = %s\n", OT_LNG_NAME_FROM_OBJECT(objO))

Definition at line 1151 of file LibMkKernel_tcl.h.

◆ printObjv

#define printObjv   printV( "__skip=%i, objc=%i",__skip,objc) ; printAry3( " ",objc,objv)

Definition at line 1120 of file LibMkKernel_tcl.h.

◆ printXAry

#define printXAry ( x,
pre,
c,
o )
Value:
printXAry4(x,"",c,o)
#define printXAry4(x, pre, c, o)

Definition at line 1126 of file LibMkKernel_tcl.h.

◆ printXAry4

#define printXAry4 ( x,
pre,
c,
o )
Value:
for(int i=0;i<c;i++) { printXV(x,"%2i= %s",i,o[i]?Tcl_GetString(o[i]):"NULL"); }

Definition at line 1127 of file LibMkKernel_tcl.h.

◆ printXAryDetail

#define printXAryDetail ( x,
c,
o )
Value:
for(int i=0;i<c;i++) { printXLngObj(x,o[i]) }
#define printXLngObj(x, var)

Definition at line 1128 of file LibMkKernel_tcl.h.

◆ printXLng

#define printXLng ( x,
var )
Value:
printXV(x,#var" = '%s' [ref=%i]",(var?VAL2STR(var):"NULL"),(var)?(var)->refCount:-1)

Definition at line 1105 of file LibMkKernel_tcl.h.

◆ printXLngObj

#define printXLngObj ( x,
var )
Value:
if (var) {printXC2(x,MK(PrintLngObj)(OT_Prefix_CALL #var,var))} else {printTxt(#var "=NULL")}

Definition at line 1107 of file LibMkKernel_tcl.h.

◆ printXObjv

#define printXObjv ( x)
Value:
printXV(x,"__skip=%i, objc=%i",__skip,objc) ; printXAry4(x, " ",objc,objv)

Definition at line 1121 of file LibMkKernel_tcl.h.

◆ PTR2VAL

#define PTR2VAL ( nat)
Value:
(OT_OBJ_T)(nat)

Definition at line 863 of file LibMkKernel_tcl.h.

◆ regTclObj

#define regTclObj ( str)
Value:
#define MK_TCL_EXTERN_DATA

Definition at line 282 of file LibMkKernel_tcl.h.

◆ regTclObj2

#define regTclObj2 ( def,
str )
Value:

Definition at line 283 of file LibMkKernel_tcl.h.

◆ RG

#define RG ( _key)
Value:
MK(reggv)[MK(_key)]

Definition at line 275 of file LibMkKernel_tcl.h.

◆ RL

#define RL ( num)
Value:
RL_data[num]

Definition at line 288 of file LibMkKernel_tcl.h.

◆ RL_Free

#define RL_Free ( num)
Value:
do {Tcl_DecrRefCount(RL_data[num]); RL_data[num]=NULL;} while (0);

Definition at line 295 of file LibMkKernel_tcl.h.

◆ RL_init

#define RL_init ( code)
Value:
static MkThreadLocal OT_OBJ_T RL_data[10] = {0}; if (RL_data[0] == NULL) { code; }
#define MkThreadLocal

Definition at line 289 of file LibMkKernel_tcl.h.

◆ RL_NewC

#define RL_NewC ( num,
str )
Value:
{ RL_data[num] = STRN2VAL(#str); Tcl_IncrRefCount(RL_data[num]); }

Definition at line 290 of file LibMkKernel_tcl.h.

◆ RL_NewI

#define RL_NewI ( num,
itg )
Value:
{ RL_data[num] = INT2VAL(itg); Tcl_IncrRefCount(RL_data[num]); }

Definition at line 292 of file LibMkKernel_tcl.h.

◆ RL_NewS

#define RL_NewS ( num,
str )
Value:
{ RL_data[num] = STRN2VAL(str); Tcl_IncrRefCount(RL_data[num]); }

Definition at line 291 of file LibMkKernel_tcl.h.

◆ RL_O

#define RL_O ( num,
obj )
Value:
{ RL_data[num] = obj; }

Definition at line 293 of file LibMkKernel_tcl.h.

◆ RL_objv

#define RL_objv ( num)
Value:
(num),RL_data

Definition at line 294 of file LibMkKernel_tcl.h.

◆ SELF2MNG

#define SELF2MNG ( slf)
Value:
Tcl_ObjectGetMetadata(slf, &MK(AtomMeta))

Definition at line 886 of file LibMkKernel_tcl.h.

◆ SELF2VAL

#define SELF2VAL ( slf)
Value:
Tcl_GetObjectName(interp,slf)

Definition at line 864 of file LibMkKernel_tcl.h.

◆ SETUP_ARGS

#define SETUP_ARGS   MK_RT_ARGS TCL_ARGS

Definition at line 158 of file LibMkKernel_tcl.h.

◆ SETUP_ARGS_CALL

#define SETUP_ARGS_CALL   MK_RT_CALL TCL_ARGS_CALL

Definition at line 159 of file LibMkKernel_tcl.h.

◆ SETUP_interp

#define SETUP_interp   MK_UNUSED OT_ENV_T const interp = (OT_ENV_T const) MK_RT_REF.mkThreadData.ptr;

Definition at line 463 of file LibMkKernel_tcl.h.

◆ SETUP_mqctx

#define SETUP_mqctx   struct MqContextS * const mqctx = (struct MqContextS * const) hdl;

Definition at line 464 of file LibMkKernel_tcl.h.

◆ SETUP_selfO

#define SETUP_selfO   OT_SELF_T selfO = OT_SELF_X(hdl);

Definition at line 466 of file LibMkKernel_tcl.h.

◆ SETUP_selfX

#define SETUP_selfX ( x)
Value:
OT_SELF_T selfO = OT_SELF_X(x);

Definition at line 467 of file LibMkKernel_tcl.h.

◆ SETUP_tclctx

#define SETUP_tclctx   struct TclContextS * const tclctx = (struct TclContextS * const) hdl;

Definition at line 465 of file LibMkKernel_tcl.h.

◆ SetupHdlFromMetaData_2

#define SetupHdlFromMetaData_2 ( _CLS,
_SHORT )
Value:
if (hdl == NULL) { \
OT_ERROR_LNG_RETURN_VAR_ERROR("'%s' hdl is NULL",OT_LNG_OBJ_CLASSNAME_SHORT(SELF2VAL(OT_SELF))); \
} \
SetupRtFromHdl_XN(hdl); \
#define OT_SELF
#define SetupHdlFromMetaData_init_2(_CLS, _SHORT)
#define OT_LNG_OBJ_CLASSNAME_SHORT(obj)
#define MkRtSetup_NULL

Definition at line 490 of file LibMkKernel_tcl.h.

490#define SetupHdlFromMetaData_2(_CLS,_SHORT) \
491 SetupHdlFromMetaData_init_2(_CLS,_SHORT) \
492 if (hdl == NULL) { \
493 MkRtSetup_NULL; \
494 OT_ERROR_LNG_RETURN_VAR_ERROR("'%s' hdl is NULL",OT_LNG_OBJ_CLASSNAME_SHORT(SELF2VAL(OT_SELF))); \
495 } \
496 SetupRtFromHdl_XN(hdl); \
497

◆ SetupHdlFromMetaData__null_allow_2

#define SetupHdlFromMetaData__null_allow_2 ( _CLS,
_SHORT )
Value:
SetupRtFromHdl_X(hdl); \

Definition at line 498 of file LibMkKernel_tcl.h.

498#define SetupHdlFromMetaData__null_allow_2(_CLS,_SHORT) \
499 SetupHdlFromMetaData_init_2(_CLS,_SHORT) \
500 SetupRtFromHdl_X(hdl); \
501

◆ SetupHdlFromMetaData_init_2

#define SetupHdlFromMetaData_init_2 ( _CLS,
_SHORT )
Value:
int __skip; OT_SELF_T selfO; _SHORT hdl; \
if (objCtx) { \
/* call method via TCL */ \
__skip = Tcl_ObjectContextSkippedArgs(objCtx); \
selfO = Tcl_ObjectContextObject(objCtx); \
hdl = OBJECT2##_CLS(selfO); \
} else { \
/* call method DIRECT */ \
__skip = 0; \
selfO = NULL; \
hdl = (_SHORT) clientData; \
} \

Definition at line 476 of file LibMkKernel_tcl.h.

476#define SetupHdlFromMetaData_init_2(_CLS,_SHORT) \
477 int __skip; OT_SELF_T selfO; _SHORT hdl; \
478 if (objCtx) { \
479 /* call method via TCL */ \
480 __skip = Tcl_ObjectContextSkippedArgs(objCtx); \
481 selfO = Tcl_ObjectContextObject(objCtx); \
482 hdl = OBJECT2##_CLS(selfO); \
483 } else { \
484 /* call method DIRECT */ \
485 __skip = 0; \
486 selfO = NULL; \
487 hdl = (_SHORT) clientData; \
488 } \
489

◆ SKIP_ARGS

#define SKIP_ARGS   TCL_ARGS, int __skip

Definition at line 104 of file LibMkKernel_tcl.h.

◆ SKIP_ARGS_CALL

#define SKIP_ARGS_CALL   TCL_ARGS_CALL, __skip

Definition at line 105 of file LibMkKernel_tcl.h.

◆ str

#define str ( s)
Value:
#s

Definition at line 1148 of file LibMkKernel_tcl.h.

◆ STR2VAL

#define STR2VAL ( ptr,
len )
Value:
Tcl_NewStringObj((const char*)ptr,(int)len)

Definition at line 880 of file LibMkKernel_tcl.h.

◆ STRN2VAL

#define STRN2VAL ( nat)
Value:
MK(STRN2VAL)(nat)

Definition at line 878 of file LibMkKernel_tcl.h.

◆ TCL_ARGS

#define TCL_ARGS   OT_ENV_T interp, int objc, OT_OBJ_T const *objv

Definition at line 92 of file LibMkKernel_tcl.h.

◆ TCL_ARGS_CALL

#define TCL_ARGS_CALL   interp, objc, objv

Definition at line 93 of file LibMkKernel_tcl.h.

◆ TCLCTX

#define TCLCTX   ((struct TclContextS * const)hdl)

Definition at line 469 of file LibMkKernel_tcl.h.

◆ U162VAL

#define U162VAL ( nat)
Value:
Tcl_NewIntObj((int)nat)

Definition at line 871 of file LibMkKernel_tcl.h.

◆ VAL2MkBinaryR

#define VAL2MkBinaryR ( obj)
Value:
({int size;unsigned char * bin =Tcl_GetByteArrayFromObj(obj,&size);MkBinaryCreate(size,bin);})
static MkBinaryR MkBinaryCreate(MK_SIZE size, MK_BINN data)
create a binary from data and size ...

Definition at line 1058 of file LibMkKernel_tcl.h.

1058#define VAL2MkBinaryR(obj) \
1059 ({int size;unsigned char * bin =Tcl_GetByteArrayFromObj(obj,&size);MkBinaryCreate(size,bin);})

◆ VAL2MkStringR

#define VAL2MkStringR ( obj)
Value:
({int len;char * str =Tcl_GetStringFromObj(obj,&len);MkStringCreate(len,str);})
static MkStringR MkStringCreate(MK_NUM len, MK_STRN str)
create a str from ptr and len ...

Definition at line 1069 of file LibMkKernel_tcl.h.

1069#define VAL2MkStringR(obj) \
1070 ({int len;char * str =Tcl_GetStringFromObj(obj,&len);MkStringCreate(len,str);})

◆ VAL2SELF

#define VAL2SELF ( obj)
Value:
Tcl_GetObjectFromObj(interp,obj)

Definition at line 884 of file LibMkKernel_tcl.h.

◆ VAL2STR

#define VAL2STR ( obj)
Value:
Tcl_GetString(obj)

Definition at line 883 of file LibMkKernel_tcl.h.

◆ WNA

#define WNA ( min,
max,
txt )
Value:
{ \
/* printObjV */ \
if (objc<(__skip+min) || objc>(__skip+max)) { \
Tcl_WrongNumArgs (interp, __skip, objv, txt); \
return TCL_ERROR; \
} \
}

Definition at line 687 of file LibMkKernel_tcl.h.

687#define WNA(min,max,txt) { \
688/* printObjV */ \
689 if (objc<(__skip+min) || objc>(__skip+max)) { \
690 Tcl_WrongNumArgs (interp, __skip, objv, txt); \
691 return TCL_ERROR; \
692 } \
693}

◆ xstr

#define xstr ( s)
Value:
str(s)

Definition at line 1147 of file LibMkKernel_tcl.h.

Typedef Documentation

◆ LookupClassF

typedef int(* LookupClassF) (SKIP_ARGS)

Definition at line 680 of file LibMkKernel_tcl.h.

◆ MkCallS

typedef struct MkCallS MkCallS

◆ OT_CLS_T

typedef Tcl_Class OT_CLS_T

Definition at line 239 of file LibMkKernel_tcl.h.

◆ OT_ENUM_T

typedef MK_STRN OT_ENUM_T

Definition at line 238 of file LibMkKernel_tcl.h.

◆ OT_ENV_T

typedef Tcl_Interp* OT_ENV_T

Definition at line 240 of file LibMkKernel_tcl.h.

◆ OT_NS_T

typedef Tcl_Namespace* OT_NS_T

Definition at line 241 of file LibMkKernel_tcl.h.

◆ OT_OBJ_T

typedef Tcl_Obj* OT_OBJ_T

Definition at line 237 of file LibMkKernel_tcl.h.

◆ OT_SELF_T

typedef Tcl_Object OT_SELF_T

Definition at line 242 of file LibMkKernel_tcl.h.

◆ OT_VARFRAME

typedef struct MkVarFrameS* OT_VARFRAME

Definition at line 724 of file LibMkKernel_tcl.h.

Enumeration Type Documentation

◆ OtUnknownE

enum OtUnknownE
Enumerator
OT_UNKNOWN_CLASS 
OT_UNKNOWN_INSTANCE 

Definition at line 697 of file LibMkKernel_tcl.h.

697 {
700} OtUnknownE;
OtUnknownE
@ OT_UNKNOWN_CLASS
@ OT_UNKNOWN_INSTANCE

Function Documentation

◆ Ot_GetStringFromObj()

static MkStringR Ot_GetStringFromObj ( OT_OBJ_T tclO)
inlinestatic

Definition at line 1078 of file LibMkKernel_tcl.h.

1079{
1080 int len = 0;
1081 char* str = Tcl_GetStringFromObj(tclO,&len);
1082 return MkStringCreate(len,str);
1083}

◆ tclmkkernel_AtomCreate()

static OT_SELF_T tclmkkernel_AtomCreate ( MK_RT mkrt,
OT_ENV_T interp,
MK_OBJ obj,
OT_CLS_T class,
MK_STRN name,
MK_STRN ns )
inlinestatic

Definition at line 1211 of file LibMkKernel_tcl.h.

1218 {
1219 // create name if not set
1220 #define BUFLEN 127
1221 char nameBuf[BUFLEN+1] = {0};
1222 int retLen = 0;
1223 if (name == NULL) {
1224 if (obj) {
1225 retLen = snprintf(nameBuf,BUFLEN,"%s::<%s-%p>",ns?ns:"",obj->type->type_name,obj);
1226 } else {
1227 MkLogV_1("SUSPICIOS WARNING[%s]: 'name' and 'obj' are NULL", OT_LNG_NAME_FROM_CLASS(class));
1228 retLen = snprintf(nameBuf,BUFLEN,"%s::<UNKNOWN>",ns?ns:"");
1229 }
1230 } else {
1231 retLen = snprintf(nameBuf,BUFLEN,"%s::%s",ns?ns:"",name);
1232 }
1233 if (retLen>=BUFLEN) {
1234 MkLogV_1("SUSPICIOS WARNING[%s]: 'name' truncate to '%s'", OT_LNG_NAME_FROM_CLASS(class), nameBuf);
1235 }
1236 #undef BUFLEN
1237
1238 OT_OBJ_T nameObj = STRN2VAL(nameBuf);
1239 OT_REF_INCR(nameObj);
1240 name = nameBuf;
1241
1242 // 1. with the "noSelf" feature no "self" pointer is saved into "obj->self" and
1243 // the "atomCreate" is always called -> BUT an object COULD be already available.
1244 // 2. multiple objects using the SAME name are possible, but not allowed.
1245 OT_SELF_T object = NULL;
1246 if (obj && Tcl_GetCommandFromObj(interp, nameObj) != NULL) {
1247 object = Tcl_GetObjectFromObj(interp,nameObj);
1248 // don't trust the name -> get REAL MQ-OBJ from TCL-OBJECT
1249 MK_OBJ object_hdl = MkObj(SELF2MNG(object));
1250 if (object_hdl == obj) {
1251 // OK: "reborn" self or stalled delete or something broken
1252
1253 // SUSPICIUS -> self == NULL but command is available
1254 // PROBLEM: MkAtomInit->Tcl_ObjectSetMetadata" will DECR the refCount from object_hdl.
1255 // With refCount <= 1 the "obj" will be deleted !!
1256 // restrict to "obj->isLocal" because this was the concret problem with "ReadBUF" reference
1257 //if (obj->self == NULL && obj->isLocal) MkRefIncr(obj);
1258 if (obj->self == NULL && obj->obj_protect.isLocal)
1259 MkPanicV_2(obj,"reuse tcl-command<%s> with mq-obj<%p>", name, object_hdl);
1260 } else {
1261 // ATTENTION: MkAtomInit->Tcl_ObjectSetMetadata will DECR the refCount from object_hdl
1262 MkLogV_2(object_hdl, "MANIPULATION WARNING[%s]: found tcl-command<%s> with wrong mq-obj<%p>\n",
1263 OT_LNG_NAME_FROM_CLASS(class), name, object_hdl);
1264 }
1265 }
1266
1267 // create object WITHOUT calling the CONSTR because the MK_OBJ is already available
1268 // tclOO.c: Run constructors, except when objc < 0, which is a special flag case
1269 // used for object cloning only.
1270 if (object==NULL) {
1271 object = Tcl_NewObjectInstance(interp, class, name, name, -1, NULL, 0);
1272 }
1273
1274//printV("class=%s(%p), object=%s(%p)\n", OT_LNG_NAME_FROM_CLASS(class), class, OT_LNG_FULLNAME_FROM_OBJECT(object), object)
1275
1276 check_NULL(object) {
1278 return NULL;
1279 }
1280
1281 if (nameObj) Tcl_DecrRefCount(nameObj);
1282 return MK(AtomInit)(MK_RT_CALL interp,object,obj);
1283}
#define OT_ERROR_ABNORMAL(mng)
#define check_NULL(code)
#define SELF2MNG(slf)
#define BUFLEN
#define MkPanicV_2(fmtobj, printfmt,...)
#define MK_ERROR_PANIC
static MK_OBJ MkObj(MK_MNG mng)
cast a unknown-object into an MkObjectS pointer or NULL if not possible
#define MkLogV_1(printfmt,...)
#define MkLogV_2(fmtobj, printfmt,...)
bool isLocal
has the object a local reference? - has been created by TLS or MkBufferCreateREF ?...
object header …
struct MkObjectProtectS obj_protect
the protect is used to "protect" data set by pAllocCreate if the new object is later initialized with...
MK_TYP type
link to the object type
MK_PTR self
link between the managed object and the object in the target-programming-language
MK_STRB type_name[MkTypeS_name_size]
public name of the type like TclMqContextC

◆ tclmkkernel_AtomDeleteHard()

static bool tclmkkernel_AtomDeleteHard ( MK_RT mkrt,
OT_ENV_T interp,
OT_SELF_T selfO )
inlinestatic

Definition at line 1288 of file LibMkKernel_tcl.h.

1288 {
1289 assert(interp!=NULL || selfO!=NULL);
1290 if (Tcl_InterpDeleted(interp) || Tcl_ObjectDeleted(selfO)) return false;
1291 check_LNG(Tcl_DeleteCommandFromToken (interp, Tcl_GetObjectCommand(selfO))) {
1293 return false;
1294 }
1295 return true;
1296}
#define check_LNG(code)
#define MK_ERROR_PRINT

◆ tclmkkernel_AtomDispose()

static void tclmkkernel_AtomDispose ( MK_RT mkrt,
OT_SELF_T selfO )
inlinestatic

Definition at line 1307 of file LibMkKernel_tcl.h.

1308{
1309 assert(selfO!=NULL);
1310 MK_MNG mng = SELF2MNG(selfO);
1311 check_NULL(mng) return;
1312 MK_OBJ obj = MkObj(mng);
1313 check_NULL(obj) return;
1314 // unlink TCL from META
1316 // unlink META from TCL → call: AtomMetaDelete, with disabled META
1317 Tcl_ObjectSetMetadata(selfO,&MK(AtomMeta),NULL);
1318}
MK_PTRB * MK_MNG
managed object pointer, datatype will be checked at runtime
#define MkRefDecrWithoutSelf(...)

◆ tclmkkernel_AtomInit()

static OT_SELF_T tclmkkernel_AtomInit ( MK_RT mkrt,
OT_ENV_T interp,
OT_SELF_T object,
MK_OBJ obj )
inlinestatic

Definition at line 1179 of file LibMkKernel_tcl.h.

1184 {
1185 if (obj) MkRefIncrSelf (obj, (void*) object, interp);
1186 ClientData meta = Tcl_ObjectGetMetadata(object,&MK(AtomMeta));
1187 // a "reborn" object as result from a AtomMetaDelete→MkRefDecrWithoutSelf→self=NULL
1188 // BUG fix for LibLcConfig_lc_prv.c→pSettingDelete
1189 if (meta != (ClientData)obj) {
1190 if (meta) {
1191 MkDLogV_O(obj, 3, "WARNING: REBORN object[%s] REPLACE meta[%p -> %p]\n", \
1192 OT_LNG_FULLNAME_FROM_OBJECT(object), meta, obj);
1193 } else {
1194 MkDLogV_O(obj, 6, "INFO: BORN object[%s] with NEW meta[%p]\n", \
1195 OT_LNG_FULLNAME_FROM_OBJECT(object),obj);
1196 }
1197 Tcl_ObjectSetMetadata(object,&MK(AtomMeta),(ClientData)obj);
1198 } else {
1199 // This is a result of a DELETE & CREATE
1200 if (obj != NULL) {
1201 MkDLogV_O(obj, 3, "WARNING: REBORN object[%s] with SAME meta[%p]\n", \
1202 OT_LNG_FULLNAME_FROM_OBJECT(object),obj);
1203 }
1204 Tcl_ObjectSetMetadata(object,&MK(AtomMeta),(ClientData)obj);
1205 }
1206 return object;
1207}
#define OT_LNG_FULLNAME_FROM_OBJECT(_obj)
#define MkDLogV_O(fmtobj, _debug, printfmt,...)
static void MkRefIncrSelf(MK_OBJ const obj, MK_PTR const self, MK_PTR const env)
ATOMIC operation -> link self with reference-count.

◆ tclmkkernel_AtomObjNew()

static OT_OBJ_T tclmkkernel_AtomObjNew ( MK_RT mkrt,
OT_ENV_T interp,
MK_OBJ obj )
inlinestatic

ATOM API

Definition at line 1162 of file LibMkKernel_tcl.h.

1163{
1164 #define __doc "AtomObjNew"
1165 MK_PTR selfO = NULL;
1166 // force "class-NULL object → test done BEFORE "AtomObjNew" is called
1167 assert(obj != NULL);
1168 //if (obj == NULL) return RG(nullObj);
1169 MkErrorC_Check(obj, MkSelfNew(obj,&selfO,interp))
1170 OT_OBJ_T ret = Tcl_GetObjectName(interp,(OT_SELF_T)selfO);
1171 return ret;
1172 #undef __doc
1173error:
1174 return NULL;
1175}
#define MkErrorC_Check(mng, PROC)
MK_PTRB * MK_PTR
generic pointer data-type
#define MkSelfNew(...)

◆ tclmkkernel_AtomUnlink()

static void tclmkkernel_AtomUnlink ( MK_RT mkrt,
OT_ENV_T interp,
OT_SELF_T selfO )
inlinestatic

Definition at line 1300 of file LibMkKernel_tcl.h.

1300 {
1301 assert(interp!=NULL || selfO!=NULL);
1302 Tcl_ObjectSetMetadata(selfO,&MK(AtomMeta),NULL);
1303}

◆ tclmkkernel_CallCopy()

static void tclmkkernel_CallCopy ( MK_RT mkrt,
MK_OBJ obj,
MK_CBP * dataP )
inlinestatic

Definition at line 582 of file LibMkKernel_tcl.h.

583{
584 assert (dataP != NULL && *dataP != NULL);
585
586 MkCallS *call = MkSysMemDup(MK_ERROR_PANIC,*dataP,sizeof(*call));
587 call->isAlloc = true;
588
589 call->my = OT_OBJ_COPY (call->my) ;
590 call->mth = OT_OBJ_COPY (call->mth) ;
591 call->args = OT_OBJ_COPY (call->args) ;
592 call->nsO = OT_OBJ_COPY (call->nsO) ;
593 call->nsPtr = NULL;
594
595 *dataP = call;
596}
#define OT_OBJ_COPY(o)
MK_PTR MkSysMemDup(MK_OBJN fmtobj, MK_PTRN const blck, size_t const size)
memdup syscall with tclmkkernel error plugin
OT_OBJ_T mth
OT_OBJ_T args
OT_NS_T nsPtr
OT_OBJ_T nsO
OT_OBJ_T my

◆ tclmkkernel_CallFree()

static void tclmkkernel_CallFree ( MK_CBP * dataP)
inlinestatic

Definition at line 553 of file LibMkKernel_tcl.h.

554{
555 assert (dataP != NULL && *dataP != NULL);
556
557 MkCallS * call = *dataP;
558
559 call->signature = 0x0;
560
565 call->nsPtr = NULL;
566
567 if (call->isAlloc) MkSysFree(*dataP);
568 else *dataP = NULL;
569}
#define OT_REF_DECR_AND_NULL(_obj)
#define MkSysFree(pointer)
MK_SIG signature

◆ tclmkkernel_CallFreeOnce()

static void tclmkkernel_CallFreeOnce ( MK_CBP * dataP)
inlinestatic

Definition at line 571 of file LibMkKernel_tcl.h.

572{
573 MK(CallFree) (dataP);
574}

◆ tclmkkernel_ClassDef()

MK_TCL_EXTERN 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 RL_NewC(num, str)
#define RL_O(num, obj)
#define RL_init(code)
#define OT_REF_DECR(_obj)
#define MkOBJ_R(x)
cast a known-object into an MkObjectS reference
#define MkSelfSet_3X(x, self, env)
OT_OBJ_T ooRefC[100]
MK_TYP type_class
point to the instancesR linked list of the class-type
MK_TYP type_base
base type

◆ tclmkkernel_ClassName()

MK_TCL_EXTERN MK_STRN tclmkkernel_ClassName ( OT_Prefix_ARGS OT_OBJ_T,
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}
#define RL_objv(num)
Tcl_Class OT_CLS_T
#define RG(_key)

◆ tclmkkernel_EnumFlagWorker()

MK_TCL_EXTERN 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_EvalObjv()

static int tclmkkernel_EvalObjv ( OT_ENV_T interp,
int objc,
OT_OBJ_T const objv[],
int flags )
inlinestatic

Definition at line 776 of file LibMkKernel_tcl.h.

781 {
782 int i,ret;
783//printAry(objc,objv)
784 for (i=0;i<objc;i++) Tcl_IncrRefCount(objv[i]);
785 ret = Tcl_EvalObjv (interp, objc, objv, flags);
786 for (i=0;i<objc;i++) Tcl_DecrRefCount(objv[i]);
787 return ret;
788}

◆ tclmkkernel_EvalObjvAR()

MK_TCL_EXTERN 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()

MK_TCL_EXTERN 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()

MK_TCL_EXTERN 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_File()

MK_TCL_EXTERN 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}
#define FRAME_UPDATE
#define FRAME_GET(key)

◆ tclmkkernel_Get_Call_Line()

MK_TCL_EXTERN 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_TCL_EXTERN 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()

MK_TCL_EXTERN 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_TCL_EXTERN MK_STRN tclmkkernel_GetClassNameFromObject ( OT_Prefix_ARGS OT_SELF_T)

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()

MK_TCL_EXTERN 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_GetMyFromObject()

MK_TCL_EXTERN 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_TCL_EXTERN MK_STRN tclmkkernel_GetTypeFromObj ( OT_Prefix_ARGS OT_OBJ_T,
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}

◆ tclmkkernel_InfoScript()

MK_TCL_EXTERN 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()

MK_TCL_EXTERN enum MkErrorE tclmkkernel_LngListToMkBufferListS ( OT_Prefix_ARGS OT_OBJ_T,
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}
@ MK_ERROR
(persistent) raise an error-event, the calling-fucntion is interrupted.
@ MK_OK
(persistent) everything is OK.

◆ tclmkkernel_MkBufferC_ObjNew()

static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkBufferC_ObjNew ( MK_RT mkrt,
OT_ENV_T interp,
MkBufferC_type hdl )
inlinestatic

Definition at line 954 of file LibMkKernel_tcl.h.

954 {
955 return ( hdl ? MK(AtomObjNew) (MK_RT_CALL interp, MkBufferC_X2obj(hdl)) : MK(MkBufferC_MK_NULL) );
956 }
#define MkBufferC_X2obj(x)

◆ tclmkkernel_MkBufferC_ToObject()

OT_ProcRet tclmkkernel_MkBufferC_ToObject ( MkBufferC_ARGS )

Tcl: obj [$buf ToObject] C-API
return the native language object from a MkBufferC

◆ tclmkkernel_MkBufferListC_ObjNew()

static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkBufferListC_ObjNew ( MK_RT mkrt,
OT_ENV_T interp,
MkBufferListC_type hdl )
inlinestatic

Definition at line 936 of file LibMkKernel_tcl.h.

936 {
937 return ( hdl ? MK(AtomObjNew) (MK_RT_CALL interp, MkBufferListC_X2obj(hdl)) : MK(MkBufferListC_MK_NULL) );
938 }
#define MkBufferListC_X2obj(x)

◆ tclmkkernel_MkBufferListC_ToList()

OT_ProcRet tclmkkernel_MkBufferListC_ToList ( MkBufferListC_ARGS )

Tcl: [list...] [$bfl ToList] C-API
get a target-language list representation of the bfl

◆ tclmkkernel_MkBufferStreamC_ObjNew()

static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkBufferStreamC_ObjNew ( MK_RT mkrt,
OT_ENV_T interp,
MkBufferStreamC_type hdl )
inlinestatic

Definition at line 972 of file LibMkKernel_tcl.h.

972 {
973 return ( hdl ? MK(AtomObjNew) (MK_RT_CALL interp, MkBufferStreamC_X2obj(hdl)) : MK(MkBufferStreamC_MK_NULL) );
974 }
#define MkBufferStreamC_X2obj(x)

◆ tclmkkernel_MkErrorC_ObjNew()

static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkErrorC_ObjNew ( MK_RT mkrt,
OT_ENV_T interp,
MkErrorC_type hdl )
inlinestatic

Definition at line 990 of file LibMkKernel_tcl.h.

990 {
991 return ( hdl ? MK(AtomObjNew) (MK_RT_CALL interp, MkErrorC_X2obj(hdl)) : MK(MkErrorC_MK_NULL) );
992 }
#define MkErrorC_X2obj(x)

◆ tclmkkernel_MkLogFileC_ObjNew()

static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkLogFileC_ObjNew ( MK_RT mkrt,
OT_ENV_T interp,
MkLogFileC_type hdl )
inlinestatic

Definition at line 1008 of file LibMkKernel_tcl.h.

1008 {
1009 return ( hdl ? MK(AtomObjNew) (MK_RT_CALL interp, MkLogFileC_X2obj(hdl)) : MK(MkLogFileC_MK_NULL) );
1010 }
#define MkLogFileC_X2obj(x)

◆ tclmkkernel_MkObjectC_ObjNew()

static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkObjectC_ObjNew ( MK_RT mkrt,
OT_ENV_T interp,
MkObjectC_type hdl )
inlinestatic

Definition at line 1026 of file LibMkKernel_tcl.h.

1026 {
1027 return ( hdl ? MK(AtomObjNew) (MK_RT_CALL interp, MkObjectC_X2obj(hdl)) : MK(MkObjectC_MK_NULL) );
1028 }
#define MkObjectC_X2obj(x)

◆ tclmkkernel_MkRuntimeC_ObjNew()

static MK_ARTIFICIAL OT_OBJ_T tclmkkernel_MkRuntimeC_ObjNew ( MK_RT mkrt,
OT_ENV_T interp,
MkRuntimeC_type hdl )
inlinestatic

Definition at line 1044 of file LibMkKernel_tcl.h.

1044 {
1045 return ( hdl ? MK(AtomObjNew) (MK_RT_CALL interp, MkRuntimeC_X2obj(hdl)) : MK(MkRuntimeC_MK_NULL) );
1046 }
#define MkRuntimeC_X2obj(x)

◆ tclmkkernel_Obj_AsSTR_COPY()

MK_TCL_EXTERN 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}

◆ tclmkkernel_ObjectDeleteCall()

enum MkErrorE tclmkkernel_ObjectDeleteCall ( MK_RT mkrt,
MK_OBJN const obj,
MK_STRN const typeName,
MK_HDL const typeHdl,
MK_HDL const objHdl,
MK_CBP const __data__ )

Definition at line 378 of file MkCall_tcl.c.

379{
381
382 // if NO self object is available than NO callback is called
383 if (!MkSelfExists(obj)) return MK_OK;
384
385 // 1. setup environment
387 if (interp==NULL || Tcl_InterpDeleted(interp)) return MK_OK;
388
389 // 2. setup arguments
390 struct MkCallS *call = __data__;
392 int objc = 0;
393
394 //Tcl_ResetResult(interp);
395//printLLngObj(call->mth);
396
397 // 3. setup my
398rescan:
399 switch (call->type) {
401//printLTxt("MkCallS_own_method");
402 return MkErrorSetC_1E("MkCallS_own_method not supported");
403 break;
405 case MkCallS_static:
406//printLTxt("MkCallS_other_method OR MkCallS_static");
407 objv[objc++] = call->my;
408 break;
409 case MkCallS_proc:
410//printLTxt("MkCallS_proc");
411 break;
412 case MkCallS_init: {
413 check_META(MK(ProcResolve)(MK_RT_CALL interp, call->hdl, call)) goto error_mq;
414 goto rescan;
415 }
416 case MkCallS_error:
417//printLTxt("MkCallS_error");
418 goto error;
419 case MkCallS_null:
420//printLTxt("MkCallS_null");
421 return MK_OK;
422 }
423
424 // 4. setup methode
425 if (call->mth) objv[objc++] = call->mth;
426
427 // 5. setup OBJ arg
428 switch (call->type) {
430 case MkCallS_static:
431 case MkCallS_proc:
432 objv[objc++] = STR2VAL(typeName,-1);
433 objv[objc++] = HDL2VAL(typeHdl);
434 objv[objc++] = HDL2VAL(objHdl);
435 break;
437 case MkCallS_init:
438 break;
439 case MkCallS_error:
440 goto error;
441 case MkCallS_null:
442 return MK_OK;
443 }
444
445 if (call->args) MK(ProcResolveAppendArgs)(call,&objc,objv);
446
447 // 3. call the callback
448 // require "MK(EvalObjv)" to cleanup "objv"
449 int ret = MK(EvalObjv) (interp, objc, objv, TCL_EVAL_GLOBAL);
450
451//printV("ret=%i, code=%s\n", ret, MkLogErrorE(MkErrorGetCode_0E()))
452
453 if (ret == TCL_OK) {
454 Tcl_ResetResult(interp);
455 return MkErrorGetCode_0E();
456 }
457
458error:
460
461error_mq:
462 return MkErrorStack_0E();
463}
#define check_META(code)
#define OT_ERROR_LNG_2_META(m)
#define MkProcResolve_maxArgsLen
#define SETUP_interp
#define MkErrorGetCode_0E()
#define MkErrorStack_0E()
#define MkErrorSetC_1E(message)
static bool MkSelfExists(MK_OBJN obj)
Check if the MkObjectS::self exists …
#define MkObjectDeleteCallF_CHECK
validate call to MkObjectDeleteCallF
enum MkCallS::@0 type
OT_ENV_T interp

◆ tclmkkernel_ObjectDeleteFree()

void tclmkkernel_ObjectDeleteFree ( MkObjectDeleteFreeF_ARGS )

Definition at line 465 of file MkCall_tcl.c.

466{
467 if ( MK_RT_REF.mkThreadData.ptr == NULL || Tcl_InterpDeleted(MK_RT_REF.mkThreadData.ptr)) return;
468 MK(CallFree)(dataP);
469}
#define MK_RT_REF

◆ tclmkkernel_ObjvToString()

MK_TCL_EXTERN 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_OT_VARFRAME_ADD()

static OT_OBJ_T tclmkkernel_OT_VARFRAME_ADD ( OT_VARFRAME_ARGS ,
OT_OBJ_T add )
inlinestatic

Definition at line 738 of file LibMkKernel_tcl.h.

738 {
739 if (varframe != NULL) {
740 if (varframe->num >= varframe->max) {
741 void *tmp;
742 if (varframe->data == varframe->prealloc) {
743 tmp = MkSysCalloc(MK_ERROR_PANIC,(size_t)varframe->max*2,sizeof(OT_OBJ_T));
744 memcpy(tmp,varframe->data,(size_t)varframe->max*sizeof(OT_OBJ_T));
745 } else {
746 tmp = MkSysReCalloc(MK_ERROR_PANIC,varframe->data,varframe->max,varframe->max,sizeof(OT_OBJ_T));
747 }
748 varframe->data = tmp;
749 varframe->max *= 2;
750 }
751 varframe->data[varframe->num++] = add;
752 Tcl_IncrRefCount(add);
753 }
754 return add;
755}
MK_PTR MkSysCalloc(MK_OBJN fmtobj, size_t const nmemb, size_t const size)
calloc syscall with tclmkkernel error plugin
MK_PTR MkSysReCalloc(MK_OBJN fmtobj, MK_PTR const buf, MK_NUM const oldnum, MK_NUM const addnum, size_t const size)
realloc syscall with tclmkkernel error plugin

◆ tclmkkernel_pMkBufferC_Init()

int tclmkkernel_pMkBufferC_Init ( MK_RT mkrt,
OT_ENV_T interp,
OT_NS_T ns )

Public API

Definition at line 1509 of file MkBufferC_tcl.c.

1510{
1511 ClassInit
1512
1513 MkBuffer64C_TT->selfCreate = NS(MkBufferC_selfCreate) ;
1514 MkBuffer64C_TT->selfDelete = NS(MkBufferC_selfDelete) ;
1515 MkBuffer64C_TT->selfUnlink = NS(MkBufferC_selfUnlink) ;
1516 MkBuffer256C_TT->selfCreate = NS(MkBufferC_selfCreate) ;
1517 MkBuffer256C_TT->selfDelete = NS(MkBufferC_selfDelete) ;
1518 MkBuffer256C_TT->selfUnlink = NS(MkBufferC_selfUnlink) ;
1519 MkBuffer1024C_TT->selfCreate = NS(MkBufferC_selfCreate) ;
1520 MkBuffer1024C_TT->selfDelete = NS(MkBufferC_selfDelete) ;
1521 MkBuffer1024C_TT->selfUnlink = NS(MkBufferC_selfUnlink) ;
1522
1523 return TCL_OK;
1524error:
1525 return TCL_ERROR;
1526}
#define NS(n)
#define ClassInit
#define MkBuffer1024C_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
#define MkBuffer256C_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
#define MkBuffer64C_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …

◆ tclmkkernel_pMkBufferListC_Init()

int tclmkkernel_pMkBufferListC_Init ( MK_RT mkrt,
OT_ENV_T interp,
OT_NS_T ns )

Definition at line 1456 of file MkBufferListC_tcl.c.

1457{
1458 ClassInit
1459
1460 return TCL_OK;
1461error:
1462 return TCL_ERROR;
1463}
#define ClassInit

◆ tclmkkernel_pMkBufferStreamC_Init()

int tclmkkernel_pMkBufferStreamC_Init ( MK_RT mkrt,
OT_ENV_T interp,
OT_NS_T ns )

Public API

Definition at line 1235 of file MkBufferStreamC_tcl.c.

1236{
1237 ClassInit
1238
1239 MkBufferStream16384C_TT->selfCreate = NS(MkBufferStreamC_selfCreate) ;
1240 MkBufferStream16384C_TT->selfDelete = NS(MkBufferStreamC_selfDelete) ;
1241 MkBufferStream16384C_TT->selfUnlink = NS(MkBufferStreamC_selfUnlink) ;
1242 MkBufferStream256C_TT->selfCreate = NS(MkBufferStreamC_selfCreate) ;
1243 MkBufferStream256C_TT->selfDelete = NS(MkBufferStreamC_selfDelete) ;
1244 MkBufferStream256C_TT->selfUnlink = NS(MkBufferStreamC_selfUnlink) ;
1245 MkBufferStream64C_TT->selfCreate = NS(MkBufferStreamC_selfCreate) ;
1246 MkBufferStream64C_TT->selfDelete = NS(MkBufferStreamC_selfDelete) ;
1247 MkBufferStream64C_TT->selfUnlink = NS(MkBufferStreamC_selfUnlink) ;
1248 MkBufferStream1024C_TT->selfCreate = NS(MkBufferStreamC_selfCreate) ;
1249 MkBufferStream1024C_TT->selfDelete = NS(MkBufferStreamC_selfDelete) ;
1250 MkBufferStream1024C_TT->selfUnlink = NS(MkBufferStreamC_selfUnlink) ;
1251
1252 return TCL_OK;
1253error:
1254 return TCL_ERROR;
1255}
#define ClassInit
#define MkBufferStream1024C_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
#define MkBufferStream16384C_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
#define MkBufferStream256C_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …
#define MkBufferStream64C_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …

◆ tclmkkernel_pMkErrorC_Init()

int tclmkkernel_pMkErrorC_Init ( MK_RT mkrt,
OT_ENV_T interp,
OT_NS_T ns )

TCL API Public API

Definition at line 981 of file MkErrorC_tcl.c.

982{
984
985 MkErrorDefaultC_TT->selfCreate = NS(MkErrorC_selfCreate);
986 MkErrorDefaultC_TT->selfDelete = NS(MkErrorC_selfDelete);
987 MkErrorDefaultC_TT->selfUnlink = NS(MkErrorC_selfUnlink);
988
989 // if (Tcl_Eval (interp, MkErrorC_tcl) != TCL_OK) goto error;
990
991 return TCL_OK;
992error:
993 return TCL_ERROR;
994}
#define ClassInit
#define MkErrorDefaultC_TT
class as MkTypeS-class-type, useable in a class-macro as: class##_TT …

◆ tclmkkernel_pMkLogFileC_Init()

int tclmkkernel_pMkLogFileC_Init ( MK_RT mkrt,
OT_ENV_T interp,
OT_NS_T ns )

Public API

Definition at line 389 of file MkLogFileC_tcl.c.

390{
392
393 return TCL_OK;
394error:
395 return TCL_ERROR;
396}
#define ClassInit

◆ tclmkkernel_pMkObjectC_Init()

int tclmkkernel_pMkObjectC_Init ( MK_RT mkrt,
OT_ENV_T interp,
OT_NS_T ns )

Public API

Definition at line 1283 of file MkObjectC_tcl.c.

1284{
1285 ClassInit
1286
1287 return TCL_OK;
1288error:
1289 return TCL_ERROR;
1290}
#define ClassInit

◆ tclmkkernel_pMkRuntimeC_Init()

int tclmkkernel_pMkRuntimeC_Init ( MK_RT mkrt,
OT_ENV_T interp,
OT_NS_T ns )

TCL API Public API

Definition at line 362 of file MkRuntimeC_tcl.c.

363{
365
366 return TCL_OK;
367error:
368 return TCL_ERROR;
369}
#define ClassInit

◆ tclmkkernel_PrintLngObj()

MK_TCL_EXTERN MK_STR tclmkkernel_PrintLngObj ( OT_Prefix_ARGS const char * ,
OT_OBJ_T  )

◆ tclmkkernel_ProcResolve()

MK_TCL_EXTERN enum MkErrorE tclmkkernel_ProcResolve ( MK_RT mkrt,
OT_ENV_T interp,
MK_MNG hdl,
struct MkCallS * call )

Definition at line 241 of file MkCall_tcl.c.

246 {
247//L0
249 enum MkErrorE ret = MK_OK;
250 OT_OBJ_T arg0 = NULL;
251 OT_OBJ_T arg1 = NULL;
252 OT_OBJ_T tstO = Tcl_DuplicateObj(call->mth);
253
254 if (call->nsPtr == NULL) {
255 call->nsPtr = Tcl_FindNamespace(interp,VAL2STR(call->nsO),NULL,TCL_GLOBAL_ONLY);
256 if (call->nsPtr == NULL) return MK_OK ; // instance namespace already deleted
257 }
258
259 Namespace * savedNsPtr = NULL;
260 Tcl_Command procCmd = NULL;
261 Interp *iPtr = (Interp *) interp;
262
263 // check if "arg0" is an object or class
264 arg0 = myListObjPop(interp,tstO);
265
266dbgMsg("nsPtr<%p>", call->nsPtr)
267
268 savedNsPtr = iPtr->varFramePtr->nsPtr;
269 iPtr->varFramePtr->nsPtr = (Namespace *) call->nsPtr;
270
271dbgObj(arg0);
272
273 //Tcl_Command procCmd = Tcl_FindCommand (interp,Tcl_GetString(arg0),call->ns,0);
274 procCmd = Tcl_GetCommandFromObj (interp,arg0);
275
276dbgMsg("procCmd<%p>", procCmd)
277
278 if (procCmd != NULL) {
279
280 OT_SELF_T obj0 = Tcl_GetObjectFromObj(interp,arg0);
281 Tcl_ResetResult(interp);
282
283 if (obj0 != NULL) {
284dbgMsg("%s","object")
285 // first is NON "proc" and "object" → interface, method (own or other)
286
287 arg1 = myListObjPop(interp,tstO);
288
289 // check if "arg0" is an "instance" or "class"
290 OT_CLS_T cls0 = Tcl_GetObjectAsClass(obj0);
291
292 if (cls0 != NULL) {
293dbgMsg("%s","class method")
294 // class method -> static
295 check_META(NS(sProcResolve_StaticMethod)( OT_VARFRAME_CALL,interp,hdl,call,arg0,&arg1,true,true)) goto error;
296 } else {
297dbgMsg("%s","instance method")
298 // instance method
299 OT_OBJ_T myCmdO = MK(GetMyFromObject)(interp,obj0);
300 check_NULL(myCmdO) {
302 goto error;
303 }
304
305 call->type = MkCallS_other_method;
306 call->my = myCmdO;
307 Tcl_IncrRefCount(myCmdO);
308 call->mth = arg1;
309 Tcl_IncrRefCount(arg1);
310 arg1 = NULL;
311 }
312
313 } else {
314
315dbgMsg("%s","proc")
316 call->type = MkCallS_proc;
317 call->mth = arg0;
318 Tcl_IncrRefCount(arg0);
319 arg0 = NULL;
320 }
321
322 } else {
323dbgMsg("%s","NON proc instance method")
324 // first is NON "proc" and NON "object" → method on OWN class
325 call->type = MkCallS_own_method;
326 call->my = NULL;
327 call->mth = arg0;
328 Tcl_IncrRefCount(arg0);
329 arg0 = NULL;
330 }
331
332 // resolve additional arguments
333 int tstOLen = myListObjLength(interp, tstO);
334 if (tstOLen > MkProcResolve_maxArgsLen) {
335 MkErrorSetV_2M(hdl, "expect max '%d' additional arguments to callback but got '%d' "
336 "with '%s'", MkProcResolve_maxArgsLen, tstOLen, Tcl_GetString(tstO));
337 goto error;
338 } else if (tstOLen > 0) {
339 call->args = tstO;
340 Tcl_IncrRefCount(tstO);
341 tstO = NULL;
342 } else {
343 call->args = NULL;
344 }
345
346end:
351 if (savedNsPtr) iPtr->varFramePtr->nsPtr = savedNsPtr;
352 return ret;
353
354error:
355 ret = MkErrorStack_1M(hdl);
356 if (savedNsPtr) iPtr->varFramePtr->nsPtr = savedNsPtr;
357 goto end;
358}
#define OT_VARFRAME_DELETE
#define OT_VARFRAME_CREATE
#define dbgObj(obj)
Definition MkCall_tcl.c:238
#define myListObjLength(itp, lst)
Definition MkCall_tcl.c:107
#define dbgMsg(fmt,...)
Definition MkCall_tcl.c:237
#define myListObjPop(itp, lst)
Definition MkCall_tcl.c:100
#define MkErrorStack_1M(err)
#define MkErrorSetV_2M(err, printfmt,...)
MkErrorE
collection for the different error-codes …

◆ tclmkkernel_ProcResolveAppendArgs()

static void tclmkkernel_ProcResolveAppendArgs ( struct MkCallS * call,
int * objcP,
OT_OBJ_T objv[] )
inlinestatic

Definition at line 530 of file LibMkKernel_tcl.h.

534 {
535 assert(call != NULL);
536 assert(objcP != NULL);
537 assert(objv != NULL);
538
539 if (call->args) {
540 int myobjc;
541 OT_OBJ_T *myobjv;
542 int objc = *objcP;
543 // call->args already checked to be a valid TCL-LIST
544 Tcl_ListObjGetElements(NULL,call->args,&myobjc,&myobjv);
545 for (int i=0; i<myobjc; i++) {
546//printLLngObj(objv[i])
547 objv[objc++] = myobjv[i];
548 }
549 *objcP = objc;
550 }
551}

◆ tclmkkernel_STRN2VAL()

static OT_OBJ_T tclmkkernel_STRN2VAL ( MK_STRN val)
inlinestatic

Definition at line 890 of file LibMkKernel_tcl.h.

890 {
891 // mark=MK_NULL
892 if (val==MK_NULL) {
893 return RG(MK_NULL_OBJ);
894 } else {
895 return Tcl_NewStringObj(val,-1);
896 }
897}
#define MK_NULL
The Programming-Language-Micro-Kernel (PLMK) NULL value as "MK_NULL" in Tcl …

◆ tclmkkernel_TestObject()

MK_TCL_EXTERN bool tclmkkernel_TestObject ( OT_Prefix_ARGS OT_OBJ_T,
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}
@ MkTestClassE_NONE_OBJECT
@ MkTestClassE_INTERNAL
@ MkTestClassE_OK
@ MkTestClassE_INVALID_SIGNATURE
@ MkTestClassE_NULL
@ MkTestClassE_WRONG_CLASS

◆ tclmkkernel_UnknownSetup()

MK_TCL_EXTERN int tclmkkernel_UnknownSetup ( OT_ENV_T interp,
OT_SELF_T classO,
const Tcl_MethodType methodsDefs[],
OtUnknownS * uknPtr )

Definition at line 1147 of file MkObjectC_tcl.c.

1152 {
1153 OT_CLS_T classC = Tcl_GetObjectAsClass(classO);
1154
1155//printTxt(OT_LNG_NAME_FROM_CLASS(classC))
1156
1157 // allready done?
1158 if (uknPtr->list != NULL) return TCL_OK;
1159
1160 // sort the methodsDefs -> required for "bsearch" in sUnknownObjCmd
1161 size_t num;
1162 for (num=0; methodsDefs[num].version != 0; num++) { };
1163 *uknPtr = (OtUnknownS) {uknPtr->what, num, methodsDefs, classO, classC};
1164
1165#ifdef ALL_INIT_AT_STARTUP
1166 NS(sUnknownAllMethods)(interp,uknPtr);
1167#else
1168 qsort(methodsDefs, num, sizeof(Tcl_MethodType), NS(sUnknownSort));
1169
1170 // MA; for (int i=0; i<num; i++) { printV("[%2i] %s\n", i, methodsDefs[i].name); } /* debugging */
1171
1172 const static Tcl_MethodType NS(sUnknownDef) = { VER, "unknown", NS(sUnknownObjCmd), NULL, NULL };
1173
1174 switch (uknPtr->what) {
1175
1176 case OT_UNKNOWN_CLASS: {
1177
1178 /* add the "unknown" */
1179 Tcl_NewInstanceMethod(interp, classO, Tcl_NewStringObj("unknown",-1), 1, &NS(sUnknownDef), uknPtr);
1180
1181 break;
1182 }
1183
1184 case OT_UNKNOWN_INSTANCE: {
1185 Tcl_MethodType* item;
1186
1187 // create MINIMUM required functions
1188 item = bsearch("<constructor>", uknPtr->list, uknPtr->nmemb, sizeof(Tcl_MethodType), NS(sUnknownSort2));
1189 if (item) {
1190 Tcl_Method mth = Tcl_NewMethod(interp, classC, NULL, 1, item, NULL);
1191 Tcl_ClassSetConstructor(interp,classC,mth);
1192 }
1193
1194/*
1195 // there are 2 destructors, FIRST from "MkAtomMeta" and SECOND the "<destructor>" from "MkObjectC"
1196 // -> BOTH call "MkAtomMetaDelete"
1197 // disable SECOND and wait for errors
1198 item = bsearch("<destructor>", uknPtr->list, uknPtr->nmemb, sizeof(Tcl_MethodType), NS(sUnknownSort2));
1199 if (item) {
1200 mth = Tcl_NewMethod(interp, classC, NULL, 1, item, clientData);
1201 Tcl_ClassSetDestructor(interp,classC,mth);
1202 }
1203*/
1204
1205 /* add the "unknown" */
1206 Tcl_NewMethod(interp, classC, Tcl_NewStringObj("unknown",-1), 1, &NS(sUnknownDef), uknPtr);
1207
1208 break;
1209 }
1210 }
1211
1212#endif /* ALL_INIT_AT_STARTUP */
1213
1214 return TCL_OK;
1215}
#define VER
const Tcl_MethodType * list
OtUnknownE what

Variable Documentation

◆ tclmkkernel_AtomMeta

MK_TCL_EXTERN_DATA const Tcl_ObjectMetadataType tclmkkernel_AtomMeta

Definition at line 161 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkBufferC

MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkBufferC

Definition at line 944 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkBufferC_MK_NULL

MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkBufferC_MK_NULL

Definition at line 945 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkBufferListC

MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkBufferListC

Definition at line 926 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkBufferListC_MK_NULL

MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkBufferListC_MK_NULL

Definition at line 927 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkBufferStreamC

MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkBufferStreamC

Definition at line 962 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkBufferStreamC_MK_NULL

MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkBufferStreamC_MK_NULL

Definition at line 963 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkErrorC

MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkErrorC

Definition at line 980 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkErrorC_MK_NULL

MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkErrorC_MK_NULL

Definition at line 981 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkLogFileC

MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkLogFileC

Definition at line 998 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkLogFileC_MK_NULL

MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkLogFileC_MK_NULL

Definition at line 999 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkObjectC

MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkObjectC

Definition at line 1016 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkObjectC_MK_NULL

MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkObjectC_MK_NULL

Definition at line 1017 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkRuntimeC

MK_TCL_EXTERN_DATA __thread OT_CLS_T tclmkkernel_MkRuntimeC

Definition at line 1034 of file LibMkKernel_tcl.h.

◆ tclmkkernel_MkRuntimeC_MK_NULL

MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_MkRuntimeC_MK_NULL

Definition at line 1035 of file LibMkKernel_tcl.h.

◆ tclmkkernel_reggv

MK_TCL_EXTERN_DATA __thread OT_OBJ_T tclmkkernel_reggv[100]

Definition at line 277 of file LibMkKernel_tcl.h.

◆ tclmkkernel_tcl_BOOLEAN

MK_TCL_EXTERN_DATA const Tcl_ObjType* tclmkkernel_tcl_BOOLEAN

Definition at line 300 of file LibMkKernel_tcl.h.

◆ tclmkkernel_tcl_DOUBLE

MK_TCL_EXTERN_DATA const Tcl_ObjType* tclmkkernel_tcl_DOUBLE

Definition at line 299 of file LibMkKernel_tcl.h.

◆ tclmkkernel_tcl_INDEX

MK_TCL_EXTERN_DATA const Tcl_ObjType* tclmkkernel_tcl_INDEX

Definition at line 301 of file LibMkKernel_tcl.h.

◆ tclmkkernel_tcl_LONG

MK_TCL_EXTERN_DATA const Tcl_ObjType* tclmkkernel_tcl_LONG

Definition at line 297 of file LibMkKernel_tcl.h.

◆ tclmkkernel_tcl_WIDE

MK_TCL_EXTERN_DATA const Tcl_ObjType* tclmkkernel_tcl_WIDE

Definition at line 298 of file LibMkKernel_tcl.h.