11#define SetupRtFromObj_X(hdl) MkRtSetup_O(hdl)
12#define SetupRtFromObj_XN(hdl) MkRtSetup_ON(hdl)
16#define META_FILE_NAME "MkObjectC_py.c"
21#define OT_CLASS (&NS(MkObjectCR))
22#define OT_CLASS_NAME "MkObjectC"
24#define OT_LNG2META(O) MkObj(VAL2MNG(O))
26#define OT_retObj_CONSTR(mng) OT_retObj_SET(NS(MkObjectC_CTOR)(MK_RT_CALL (PyTypeObject*)class,mng))
28#define OT_SETUP_hdl OT_SETUP_hdl_tmpl(MkObjectC)
29#define OT_SETUP_hdl__null_allow OT_SETUP_hdl_tmpl__null_allow(MkObjectC)
30#define OT_SETUP_hdl_constr MK_RT_UNUSED AllRtSetup_NULL; \
31 MK_OBJ hdl = (MK_OBJ) OT_CLASS;
32#define OT_SETUP_hdl_destr OT_SETUP_hdl_tmpl__null_allow(MkObjectC)
33#define OT_SETUP_hdl_static MK_RT_UNUSED AllRtSetup_NULL; \
34 __attribute__((unused)) MK_TYP hdl = MkObjectC##_TT;
36#define OT_SETUP_hdl_static_constr OT_SETUP_hdl_static
38#if !defined(SetupRtFromObj_X)
39 #define SetupRtFromObj_X(hdl) AllRtSetup_X(hdl)
40 #define SetupRtFromObj_XN(hdl) AllRtSetup_XN(hdl)
45#define MkObjectCTT MK(MkKernelThreadState).MkObjectCTT
72 if (MkObjectCTT == NULL) MkObjectCTT = MkObjectSTT; \
75 if (MkObjectCTT->selfCreate == NS(MkObjectC_selfCreate)) return MK_OK; \
78 MkObjectCTT->selfCreate = NS(MkObjectC_selfCreate); \
79 MkObjectCTT->selfDelete = NS(MkObjectC_selfDelete); \
80 MkObjectCTT->selfUnlink = NS(MkObjectC_selfUnlink); \
82 if (!PyType_HasFeature(OT_CLASS,Py_TPFLAGS_READY)) { \
83 NS(MkObjectCR).tp_base = MkObjectC_base; \
84 OtErrorCheckLng (PyType_Ready(OT_CLASS)); \
86 OtErrorCheckLng(PyModule_AddObjectRef(m, "MkObjectC", (PyObject *)OT_CLASS)); \
89 MkObjectC_MK_NULL = Py_NewRef(MK(AtomCreate) (MK_RT_CALL OT_CLASS, NULL ));
93#define MqDbgO_O(hdl,frm) printXSObj(hdl,frm,OBJ2VAL(hdl))
94#define MkObjectErrorCatchTmpl(...) MK(MkExceptionC_Catch)(OT_Prefix_CALL __VA_ARGS__)
95#define MkObjectToNameOfClassTmpl(hdl) OT_LNG_OBJ_CLASSNAME(OBJ2VAL(hdl))
96#define MkDbgDumpTmpl(...) MK(DbgDumpTmpl)( MK_RT_CALL __VA_ARGS__ )
103 return MkDbgDump(obj, bufR.super.buf.storage.first.C, callfunc);
115#define DbgM_doc "MkObjectC.DbgM(message:string, ?debug:int32=0?, ?callfunc:string=\"MK_NULL\"?, ?lvl:int32=0?)"
118#define DbgDump_doc "obj.DbgDump(?message:string=\"var\"?, ?callfunc:string=\"MK_NULL\"?) (const)"
119#define DbgL_doc "fmtobj.DbgL(message:string, ?debug:int32=0?, ?callfunc:string=\"MK_NULL\"?, ?lvl:int32=0?) (const)"
120#define DbgLogC_doc "obj.DbgLogC(?callfunc:string=\"MK_NULL\"?) (const)"
121#define DbgO_doc "obj.DbgO(?callfunc:string=\"MK_NULL\"?) (const)"
122#define DbgSTACK_doc "fmtobj.DbgSTACK(?skip:int32=0?, ?num:int32=-1?, ?callfunc:string=\"MK_NULL\"?) (const)"
125#define LogC_doc "fmtobj.LogC(message:string, ?debug:int32=0?, ?callfunc:string=\"MK_NULL\"?) (const)"
126#define LogHEX_doc "fmtobj.LogHEX(callfunc:string, data:binary) (const)"
129#define RefGet_doc "int32 obj.RefGet()"
132#define GetNull_doc "MkObjectC MkObjectC.GetNull()"
133#define HandleResolve_doc "MkObjectC MkObjectC.HandleResolve(netHdl:MK_HDL)"
134#define Instances_doc "MkObjectC MkObjectC.Instances()"
137#define DeleteCallbackCleanup_doc "MkObjectC.DeleteCallbackCleanup(ident:string)"
138#define DeleteCallbackSetup_doc "MkObjectC.DeleteCallbackSetup(ident:string, ?callback:callable=None?, ?filter:string=\"None\"?)"
139#define HandleDeleteByNetHdl_doc "MkObjectC.HandleDeleteByNetHdl(netHdl:MK_HDL)"
142#define Delete_doc "obj.Delete()"
145#define Dispose_doc "obj.Dispose()"
148#define ErrorCatch_doc "MkErrorC obj.ErrorCatch(?exception:errorCode=None?, ?callfunc:string=\"MK_NULL\"?) (const)"
149#define Next_doc "MkObjectC obj.Next()"
150#define Prev_doc "MkObjectC obj.Prev()"
151#define ToError_doc "MkErrorC obj.ToError()"
154#define HandleDelete_doc "netObj.HandleDelete()"
155#define HandleExists_doc "bool obj.HandleExists()"
156#define HandleGet_doc "MK_HDL obj.HandleGet()"
157#define HandleGetOfType_doc "MK_HDL obj.HandleGetOfType()"
158#define HandleGetOr0_doc "MK_HDL obj.HandleGetOr0()"
159#define IsNull_doc "bool obj.IsNull()"
160#define Log_doc "obj.Log(?fmtobj:MkObjectC=None?, ?debug:int32=0?, ?callfunc:string=\"MK_NULL\"?, ?lvl:int32=0?) (const)"
161#define LogLong_doc "obj.LogLong(?fmtobj:MkObjectC=None?, ?debug:int32=0?, ?callfunc:string=\"MK_NULL\"?, ?lvl:int32=0?) (const)"
162#define LogShort_doc "obj.LogShort(?fmtobj:MkObjectC=None?, ?debug:int32=0?, ?callfunc:string=\"MK_NULL\"?, ?lvl:int32=0?) (const)"
163#define LogType_doc "obj.LogType(?fmtobj:MkObjectC=None?, ?debug:int32=0?, ?callfunc:string=\"MK_NULL\"?, ?lvl:int32=0?) (const)"
164#define ToName_doc "string obj.ToName() (const)"
165#define ToNameOfClass_doc "string obj.ToNameOfClass()"
166#define ToNameOfType_doc "string obj.ToNameOfType() (const)"
167#define ToString_doc "string inst.ToString() (const)"
170#define SysHashI32_doc "int32 MkObjectC.SysHashI32(key:string, ?length:int32=-1?)"
171#define SysHashSTR_doc "string MkObjectC.SysHashSTR(key:string, ?length:int32=-1?)"
174#define SysKill_doc "fmtobj.SysKill(pid:int32, signal:int32) (const)"
177#define SysGetPid_doc "int32 fmtobj.SysGetPid() (const)"
423 MkDbgL (hdl, message, debug, callfunc, lvl);
511 MkDbgM (message, debug, callfunc, lvl);
546 MkLogC (hdl, message, debug, callfunc);
991static PyMethodDef
NS(MkObjectC_Methods)[] = {
996 {
"DbgM" , (PyCFunction)
NS(MkObjectC_DbgM) , METH_VARARGS|METH_CLASS ,
DbgM_doc },
999 {
"GetNull" , (PyCFunction)
NS(MkObjectC_GetNull) , METH_NOARGS|METH_CLASS ,
GetNull_doc },
1000 {
"HandleResolve" , (PyCFunction)
NS(MkObjectC_HandleResolve) , METH_O|METH_CLASS ,
HandleResolve_doc },
1001 {
"Instances" , (PyCFunction)
NS(MkObjectC_Instances) , METH_NOARGS|METH_CLASS ,
Instances_doc },
1005 {
"DeleteCallbackSetup" , (PyCFunction)
NS(MkObjectC_DeleteCallbackSetup) , METH_VARARGS|METH_CLASS ,
DeleteCallbackSetup_doc },
1006 {
"HandleDeleteByNetHdl" , (PyCFunction)
NS(MkObjectC_HandleDeleteByNetHdl) , METH_O|METH_CLASS ,
HandleDeleteByNetHdl_doc },
1009 {
"SysHashI32" , (PyCFunction)
NS(MkObjectC_SysHashI32) , METH_VARARGS|METH_CLASS ,
SysHashI32_doc },
1010 {
"SysHashSTR" , (PyCFunction)
NS(MkObjectC_SysHashSTR) , METH_VARARGS|METH_CLASS ,
SysHashSTR_doc },
1016 {
"DbgDump" , (PyCFunction)
NS(MkObjectC_DbgDump) , METH_VARARGS ,
DbgDump_doc },
1017 {
"DbgL" , (PyCFunction)
NS(MkObjectC_DbgL) , METH_VARARGS ,
DbgL_doc },
1018 {
"DbgLogC" , (PyCFunction)
NS(MkObjectC_DbgLogC) , METH_VARARGS ,
DbgLogC_doc },
1019 {
"DbgO" , (PyCFunction)
NS(MkObjectC_DbgO) , METH_VARARGS ,
DbgO_doc },
1020 {
"DbgSTACK" , (PyCFunction)
NS(MkObjectC_DbgSTACK) , METH_VARARGS ,
DbgSTACK_doc },
1023 {
"LogC" , (PyCFunction)
NS(MkObjectC_LogC) , METH_VARARGS ,
LogC_doc },
1024 {
"LogHEX" , (PyCFunction)
NS(MkObjectC_LogHEX) , METH_VARARGS ,
LogHEX_doc },
1027 {
"RefGet" , (PyCFunction)
NS(MkObjectC_RefGet) , METH_NOARGS ,
RefGet_doc },
1030 {
"Delete" , (PyCFunction)
NS(MkObjectC_Delete) , METH_NOARGS ,
Delete_doc },
1033 {
"Dispose" , (PyCFunction)
NS(MkObjectC_Dispose) , METH_NOARGS ,
Dispose_doc },
1036 {
"ErrorCatch" , (PyCFunction)
NS(MkObjectC_ErrorCatch) , METH_VARARGS ,
ErrorCatch_doc },
1037 {
"Next" , (PyCFunction)
NS(MkObjectC_Next) , METH_NOARGS ,
Next_doc },
1038 {
"Prev" , (PyCFunction)
NS(MkObjectC_Prev) , METH_NOARGS ,
Prev_doc },
1039 {
"ToError" , (PyCFunction)
NS(MkObjectC_ToError) , METH_NOARGS ,
ToError_doc },
1042 {
"HandleDelete" , (PyCFunction)
NS(MkObjectC_HandleDelete) , METH_NOARGS ,
HandleDelete_doc },
1043 {
"HandleExists" , (PyCFunction)
NS(MkObjectC_HandleExists) , METH_NOARGS ,
HandleExists_doc },
1044 {
"HandleGet" , (PyCFunction)
NS(MkObjectC_HandleGet) , METH_NOARGS ,
HandleGet_doc },
1045 {
"HandleGetOfType" , (PyCFunction)
NS(MkObjectC_HandleGetOfType) , METH_NOARGS ,
HandleGetOfType_doc },
1046 {
"HandleGetOr0" , (PyCFunction)
NS(MkObjectC_HandleGetOr0) , METH_NOARGS ,
HandleGetOr0_doc },
1047 {
"IsNull" , (PyCFunction)
NS(MkObjectC_IsNull) , METH_NOARGS ,
IsNull_doc },
1048 {
"Log" , (PyCFunction)
NS(MkObjectC_Log) , METH_VARARGS ,
Log_doc },
1049 {
"LogLong" , (PyCFunction)
NS(MkObjectC_LogLong) , METH_VARARGS ,
LogLong_doc },
1050 {
"LogShort" , (PyCFunction)
NS(MkObjectC_LogShort) , METH_VARARGS ,
LogShort_doc },
1051 {
"LogType" , (PyCFunction)
NS(MkObjectC_LogType) , METH_VARARGS ,
LogType_doc },
1052 {
"ToName" , (PyCFunction)
NS(MkObjectC_ToName) , METH_NOARGS ,
ToName_doc },
1053 {
"ToNameOfClass" , (PyCFunction)
NS(MkObjectC_ToNameOfClass) , METH_NOARGS ,
ToNameOfClass_doc },
1054 {
"ToNameOfType" , (PyCFunction)
NS(MkObjectC_ToNameOfType) , METH_NOARGS ,
ToNameOfType_doc },
1055 {
"ToString" , (PyCFunction)
NS(MkObjectC_ToString) , METH_NOARGS ,
ToString_doc },
1058 {
"SysKill" , (PyCFunction)
NS(MkObjectC_SysKill) , METH_VARARGS ,
SysKill_doc },
1061 {
"SysGetPid" , (PyCFunction)
NS(MkObjectC_SysGetPid) , METH_NOARGS ,
SysGetPid_doc },
1065 {NULL, NULL, 0, NULL}
1108 Py_TYPE(self)->tp_free(self);
1144 PyVarObject_HEAD_INIT(NULL, 0)
1145 .tp_name =
"pymkkernel.MkObjectC",
1146 .tp_doc =
"PyMkKernel MkObjectC Type",
1149 .tp_methods =
NS(MkObjectC_Methods),
1150 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1152 .tp_init = (initproc)
NS(sMkObjectC_init)
#define OT_SETUP_VARARGS(min, max, d)
#define OT_retObj_SET_BOL(nat)
#define OT_SETUP_NOARG(d)
#define OT_SETUP_ONEARG(d)
#define OT_CHECK_NI4(val)
#define OT_retObj_SET_Error
#define OT_retObj_SET_HDL(nat)
#define OT_CHECK_REQUIRED(val)
#define OT_retObj_SET_None
#define OT_retObj_SET_I32(nat)
#define OT_retObj_SET_OBJ(nat)
#define OT_OBJECT_DISPOSE(self)
#define OT_CHECK__ME_REF_MkBinaryR(val)
#define OT_retObj_SET_STR(nat)
#define OT_CLASS_TYPE_REF
#define OT_CHECK_OPTIONAL(val)
#define OT_retObj_SET_ERR(nat)
#define MkErrorC_Check(mng, PROC)
#define OT_OBJECT_DELETE(self)
struct MkObjectC_Obj MkObjectC_Obj
#define OT_CHECK_STRN(val)
void MkObjectC_SelfDecr(MK_RT mkrt, MK_PTR self, MK_PTR const env)
#define HandleDeleteByNetHdl_doc
static void MkObjectC_Dealloc(OT_OBJ_T self)
void MkObjectC_SelfIncr(MK_RT mkrt, MK_PTR self, MK_PTR const env)
#define OT_SETUP_hdl_destr
#define HandleResolve_doc
#define MkDbgDumpTmpl(...)
#define OT_SETUP_hdl_static
#define DeleteCallbackCleanup_doc
#define OT_SETUP_hdl__null_allow
#define MkObjectToNameOfClassTmpl(hdl)
PyObject * MkObjectC_Str(OT_LNG_OBJ_T self)
#define MkObjectErrorCatchTmpl(...)
#define DeleteCallbackSetup_doc
#define HandleGetOfType_doc
#define ToNameOfClass_doc
#define MkBufferAppendV(...)
#define MkBufferCreateLOCAL_T(cls, name, size)
create an new MkBufferC object as L)ocal S)torage…
#define MK_NULL_YES
flag, allow NULL
MkErrorE
collection for the different error-codes …
int32_t MK_NUM
array size data-type ('num' items in array …
MK_PTRB * MK_PTR
generic pointer data-type
const MK_STRB * MK_STRN
constant string pointer data-type
MK_PTRB * MK_MNG
managed object pointer, datatype will be checked at runtime
MK_PTRB const * MK_EXP
exception object pointer
int32_t MK_HDL
4 byte int handle data-type
signed int MK_I32
4 byte integer data-type
int MK_DBG
debug-level data-type …
#define MkObjectHandleResolve(...)
#define MkObjectHandleGet(...)
static MK_HDL MkObjectHandleGetOfType(MK_OBJ const obj)
Export-Slot - returns typeHdl of the obj .
static MK_OBJ MkObjectGetNull(void)
Null-Slot - return a MkObjectC typed NULL instance …
#define MkObjectHandleDelete(...)
static MK_OBJ MkObjectPrev(MK_OBJ const obj)
get previous instance from linked-list of MkObjectS type
static MK_OBJ MkObjectNext(MK_OBJ const obj)
get next instance from linked-list of MkObjectS type
#define MkObjectInstances()
MK_HDL MkObjectHandleGetOr0(MK_OBJ const obj)
return export-hdl or 0 in not created…
bool MkObjectHandleExists(MK_OBJ const obj)
check if obj has already a handle defined…
#define MkObjectHandleDeleteByNetHdl(...)
#define MkObjectC_X2obj(x)
static MK_OBJ MkObj(MK_MNG mng)
cast a unknown-object into an MkObjectS pointer or NULL if not possible
#define MkObjectLogLong(...)
#define MkObjectLogShort(...)
#define MkObjectLogType(...)
static bool MkObjectIsNull(MK_OBJ const obj)
ckeck if the object is None
#define MkObjectToName(...)
#define MkObjectToString(...)
#define MkObjectToError(...)
#define MkObjectToNameOfType(...)
#define MkRefDecrWithoutSelf(...)
static MK_I32 MkRefGet(MK_OBJ const obj)
get the reference-count
enum MkErrorE MkSysKill(MK_OBJN fmtobj, MK_I32 pid, MK_I32 signal)
kill syscall with pymkkernel error plugin
enum MkErrorE MkSysGetPid(MK_OBJN fmtobj, MK_I32 *pid_out)
getpid syscall with pymkkernel error plugin
MK_STRN MkSysHashSTR(MK_STRN key, MK_NUM length)
compute the HASH from a string …
static bool MkSysStringIsNULL(MK_STRN str)
test if string is NULL or EMPTY …
MK_I32 MkSysHashI32(MK_STRN key, MK_NUM length)
same as MkSysHashSTR but return MK_I32 …
#define MkObjectDeleteCallbackCleanup(...)
#define MkObjectDeleteCallbackSetup(...)
enum MkErrorE(* MkObjectDeleteCallF)(MK_RT mkrt, MK_OBJN const obj, MK_STRN const typeName, MK_HDL const typeHdl, MK_HDL const objHdl, MK_CBP const __data__)
static callback to delete an obj …
static MK_I32 MkRuntimeDebugGet(void)
get the MkRuntimeS::debug value …
#define OT_CHECK_NIH(val)
#define OT_CHECK_CALLABLE(val)
#define OT_CLEANUP_CALLABLE(val)
#define OT_SETUP_CALLABLE(val)
#define OT_CHECK_OBJN(val, nullB)
#define OT_CHECK_EXP(val)
binary data default format …
The data-type to store and handle the error-condition …