theKernel 10.0
Loading...
Searching...
No Matches
MkObjectC_py.c
Go to the documentation of this file.
1
9/* LABEL-INIT */
10
11#define SetupRtFromObj_X(hdl) MkRtSetup_O(hdl)
12#define SetupRtFromObj_XN(hdl) MkRtSetup_ON(hdl)
13
14/* LABEL-START */
15
16#define META_FILE_NAME "MkObjectC_py.c"
17
19
20// PY class
21#define OT_CLASS (&NS(MkObjectCR))
22#define OT_CLASS_NAME "MkObjectC"
23
24#define OT_LNG2META(O) MkObj(VAL2MNG(O))
25
26#define OT_retObj_CONSTR(mng) OT_retObj_SET(NS(MkObjectC_CTOR)(MK_RT_CALL (PyTypeObject*)class,mng))
27
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;
35
36#define OT_SETUP_hdl_static_constr OT_SETUP_hdl_static
37
38#if !defined(SetupRtFromObj_X)
39 #define SetupRtFromObj_X(hdl) AllRtSetup_X(hdl)
40 #define SetupRtFromObj_XN(hdl) AllRtSetup_XN(hdl)
41#endif
42
43// MO class
44#undef MkObjectCTT
45#define MkObjectCTT MK(MkKernelThreadState).MkObjectCTT
46/* MkObjectC_MK_NULL defined in LibMkKernel_py.h */
47
48__attribute__((unused)) mk_inline
49OT_OBJ_T NS(MkObjectC_CTOR) (MK_RT_ARGS OT_CLS_T type, MK_OBJ hdl) {
50 return MK(AtomCreate)(MK_RT_CALL type,MkObjectC_X2obj(hdl));
51}
52
53// helper: mk_dbg_color_ln(MK_COLOR_YELLOW,"hdl<%p>, self<%p>", obj, self);
54
55// META: ObjNew feature: selfCreate will be called from "ObjNew->MkSelfNew" if MkObj need a SELF pointer
56static MK_PTR NS(MkObjectC_selfCreate) (MK_RT_ARGS MK_OBJ const obj, MK_PTR const env) {
57 return MK(AtomCreate) (MK_RT_CALL OT_CLASS,obj);
58}
59// META: called if MkObj must be destroyed and if the SELF is still alive → goal: destroy the SELF
60static void NS(MkObjectC_selfDelete) (MK_RT_ARGS MK_PTR self, MK_PTR const env) {
61 MK(AtomDeleteHard) (MK_RT_CALL OT_SELF);
62}
63// META: called to destroy link from SELF to META
64static void NS(MkObjectC_selfUnlink) (MK_RT_ARGS MK_PTR self, MK_PTR const env) {
65 MkObjectC_Obj *selfO = (MkObjectC_Obj*) self;
66 selfO->hdl = NULL;
67}
68
69// initialize the PY and MO class specific object
70#define ClassInit \
71 /* if not already done, initialize NEW META type */ \
72 if (MkObjectCTT == NULL) MkObjectCTT = MkObjectSTT; \
73 \
74 /* protect against double call */ \
75 if (MkObjectCTT->selfCreate == NS(MkObjectC_selfCreate)) return MK_OK; \
76 \
77 /* add "selfCreate" and "selfDelete" feature to the META-Class */ \
78 MkObjectCTT->selfCreate = NS(MkObjectC_selfCreate); \
79 MkObjectCTT->selfDelete = NS(MkObjectC_selfDelete); \
80 MkObjectCTT->selfUnlink = NS(MkObjectC_selfUnlink); \
81 \
82 if (!PyType_HasFeature(OT_CLASS,Py_TPFLAGS_READY)) { \
83 NS(MkObjectCR).tp_base = MkObjectC_base; \
84 OtErrorCheckLng (PyType_Ready(OT_CLASS)); \
85 } \
86 OtErrorCheckLng(PyModule_AddObjectRef(m, "MkObjectC", (PyObject *)OT_CLASS)); \
87 \
88 /* define the "NULL" object */ \
89 MkObjectC_MK_NULL = Py_NewRef(MK(AtomCreate) (MK_RT_CALL OT_CLASS, NULL /*obj*/));
90
91/* LABEL-END */
92
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__ )
97
98static enum MkErrorE MK(DbgDumpTmpl)( MK_RT_ARGS MK_OBJ const obj, MK_STRN const message, MK_STRN const callfunc)
99{
100 MkBufferCreateLOCAL_T(MkBuffer256C,buf,512);
101 MkBufferAppendV(buf, "message = %s\n", message);
102 MkBufferAppendV(buf, formatObj("intern =", OT_SELF_O(obj)));
103 return MkDbgDump(obj, bufR.super.buf.storage.first.C, callfunc);
104}
105
111
112// BEGIN-DOC - created by 'py_MqS.tcl -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta' - DO NOT change
113
114// doc-key: MkObjectC,MkDbg,sm_,func
115#define DbgM_doc "MkObjectC.DbgM(message:string, ?debug:int32=0?, ?callfunc:string=\"MK_NULL\"?, ?lvl:int32=0?)"
116
117// doc-key: MkObjectC,MkDbg,om_,func
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)"
123
124// doc-key: MkObjectC,MkLog,om_,func
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)"
127
128// doc-key: MkObjectC,MkObj,om_,func
129#define RefGet_doc "int32 obj.RefGet()"
130
131// doc-key: MkObjectC,MkObject,sc_,func
132#define GetNull_doc "MkObjectC MkObjectC.GetNull()"
133#define HandleResolve_doc "MkObjectC MkObjectC.HandleResolve(netHdl:MK_HDL)"
134#define Instances_doc "MkObjectC MkObjectC.Instances()"
135
136// doc-key: MkObjectC,MkObject,sm_,func
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)"
140
141// doc-key: MkObjectC,MkObject,oD_,func
142#define Delete_doc "obj.Delete()"
143
144// doc-key: MkObjectC,MkObject,od_,func
145#define Dispose_doc "obj.Dispose()"
146
147// doc-key: MkObjectC,MkObject,oc_,func
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()"
152
153// doc-key: MkObjectC,MkObject,om_,func
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)"
168
169// doc-key: MkObjectC,MkSys,sm_,func
170#define SysHashI32_doc "int32 MkObjectC.SysHashI32(key:string, ?length:int32=-1?)"
171#define SysHashSTR_doc "string MkObjectC.SysHashSTR(key:string, ?length:int32=-1?)"
172
173// doc-key: MkObjectC,MkSys,om_,func
174#define SysKill_doc "fmtobj.SysKill(pid:int32, signal:int32) (const)"
175
176// doc-key: MkObjectC,MkSys,omo,func
177#define SysGetPid_doc "int32 fmtobj.SysGetPid() (const)"
178
179// END-DOC - created by 'py_MqS.tcl -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta' - DO NOT change
180
186
187// -----------------------------------------------------------------------------
188
189// vim: Marker(s)
190// BEGIN-MkObjectC - created by 'py_MqC.tcl -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta' - DO NOT change
191
195
196// doc-key: MkObjectC,MkObjectC-Class-Export,sc_
197
199static OT_ProcRet NS(MkObjectC_HandleResolve) (OtClass_ARGS) {
202 MK_HDL netHdl = 0;
205 MK_OBJ retVal = MkObjectHandleResolve (netHdl);
206 OT_retObj_SET_OBJ(retVal);
207 goto end;
208 error:
210 end:
212}
213
214// doc-key: MkObjectC,MkObjectC-Class-Export,om_
215
217static OT_ProcRet NS(MkObjectC_HandleDelete) (MkObjectC_ARGS) {
223 goto end;
224 error:
226 end:
228}
229
231static OT_ProcRet NS(MkObjectC_HandleExists) (MkObjectC_ARGS) {
236 goto end;
237 error:
239 end:
241}
242
244static OT_ProcRet NS(MkObjectC_HandleGet) (MkObjectC_ARGS) {
249 goto end;
250 error:
252 end:
254}
255
257static OT_ProcRet NS(MkObjectC_HandleGetOfType) (MkObjectC_ARGS) {
262 goto end;
263 error:
265 end:
267}
268
270static OT_ProcRet NS(MkObjectC_HandleGetOr0) (MkObjectC_ARGS) {
275 goto end;
276 error:
278 end:
280}
281
282// doc-key: MkObjectC,MkObjectC-Class-Export,sm_
283
285static OT_ProcRet NS(MkObjectC_HandleDeleteByNetHdl) (OtClass_ARGS) {
288 MK_HDL netHdl = 0;
293 goto end;
294 error:
296 end:
298}
299
301// MkObjectC_Class_PY_API
302
306
307// doc-key: MkObjectC,MkObjectC-Class-Introspection,oc_
308
310static OT_ProcRet NS(MkObjectC_Next) (MkObjectC_ARGS) {
314 MK_OBJ retVal = MkObjectNext (hdl);
315 OT_retObj_SET_OBJ(retVal);
316 goto end;
317 error:
319 end:
321}
322
324static OT_ProcRet NS(MkObjectC_Prev) (MkObjectC_ARGS) {
328 MK_OBJ retVal = MkObjectPrev (hdl);
329 OT_retObj_SET_OBJ(retVal);
330 goto end;
331 error:
333 end:
335}
336
337// doc-key: MkObjectC,MkObjectC-Class-Introspection,sc_
338
340static OT_ProcRet NS(MkObjectC_Instances) (OtClass_ARGS) {
344 MK_OBJ retVal = MkObjectInstances ();
345 OT_retObj_SET_OBJ(retVal);
346 goto end;
347 error:
349 end:
351}
352
354// MkObjectC_Class_PY_API
355
359
360// doc-key: MkObjectC,MkObjectC-Class-Misc,sc_
361
363static OT_ProcRet NS(MkObjectC_GetNull) (OtClass_ARGS) {
367 MK_OBJ retVal = MkObjectGetNull ();
368 OT_retObj_SET_OBJ(retVal);
369 goto end;
370 error:
372 end:
374}
375
377// MkObjectC_Class_PY_API
378
382
383// doc-key: MkObjectC,MkObjectC-Dbg,om_
384
386static OT_ProcRet NS(MkObjectC_DbgDump) (MkObjectC_ARGS) {
389 MK_STRN message = "var";
391 MK_STRN callfunc = NULL;
394 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
395 MkErrorC_Check(hdl,MkDbgDumpTmpl (hdl, message, callfunc));
397 goto end;
398 error:
400 end:
403}
404
406static OT_ProcRet NS(MkObjectC_DbgL) (MkObjectC_ARGS) {
409 MK_STRN message = 0;
411 MK_DBG debug = 0;
413 MK_STRN callfunc = NULL;
415 MK_I32 lvl = 0;
418 if (debug > MkRuntimeDebugGet()) {
420 goto end;
421 }
422 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
423 MkDbgL (hdl, message, debug, callfunc, lvl);
425 goto end;
426 error:
428 end:
431}
432
434static OT_ProcRet NS(MkObjectC_DbgLogC) (MkObjectC_ARGS) {
437 MK_STRN callfunc = NULL;
440 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
441 MkDbgLogC (hdl, callfunc);
443 goto end;
444 error:
446 end:
449}
450
452static OT_ProcRet NS(MkObjectC_DbgO) (MkObjectC_ARGS) {
455 MK_STRN callfunc = NULL;
458 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
459 MkDbgO (hdl, callfunc);
461 goto end;
462 error:
464 end:
467}
468
470static OT_ProcRet NS(MkObjectC_DbgSTACK) (MkObjectC_ARGS) {
473 MK_I32 skip = 0;
475 MK_I32 num = -1;
477 MK_STRN callfunc = NULL;
480 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
481 MkDbgSTACK (hdl, skip, num, callfunc);
483 goto end;
484 error:
486 end:
489}
490
491// doc-key: MkObjectC,MkObjectC-Dbg,sm_
492
494static OT_ProcRet NS(MkObjectC_DbgM) (OtClass_ARGS) {
497 MK_STRN message = 0;
499 MK_DBG debug = 0;
501 MK_STRN callfunc = NULL;
503 MK_I32 lvl = 0;
506 if (debug > MkRuntimeDebugGet()) {
508 goto end;
509 }
510 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
511 MkDbgM (message, debug, callfunc, lvl);
513 goto end;
514 error:
516 end:
519}
520
522// MkObjectC_Dbg_PY_API
523
527
528// doc-key: MkObjectC,MkObjectC-Log,om_
529
531static OT_ProcRet NS(MkObjectC_LogC) (MkObjectC_ARGS) {
534 MK_STRN message = 0;
536 MK_DBG debug = 0;
538 MK_STRN callfunc = NULL;
541 if (debug > MkRuntimeDebugGet()) {
543 goto end;
544 }
545 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
546 MkLogC (hdl, message, debug, callfunc);
548 goto end;
549 error:
551 end:
554}
555
557static OT_ProcRet NS(MkObjectC_LogHEX) (MkObjectC_ARGS) {
560 MK_STRN callfunc = NULL;
562 MkBinaryR data = {0};
565 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
566 MkLogHEX (hdl, callfunc, data);
568 goto end;
569 error:
571 end:
574}
575
577static OT_ProcRet NS(MkObjectC_Log) (MkObjectC_ARGS) {
580 MK_OBJN fmtobj = NULL;
582 MK_DBG debug = 0;
584 MK_STRN callfunc = NULL;
586 MK_I32 lvl = 0;
589 if (debug > MkRuntimeDebugGet()) {
591 goto end;
592 }
593 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
594 MkObjectLog (hdl, fmtobj, debug, callfunc, lvl);
596 goto end;
597 error:
599 end:
602}
603
605static OT_ProcRet NS(MkObjectC_LogLong) (MkObjectC_ARGS) {
608 MK_OBJN fmtobj = NULL;
610 MK_DBG debug = 0;
612 MK_STRN callfunc = NULL;
614 MK_I32 lvl = 0;
617 if (debug > MkRuntimeDebugGet()) {
619 goto end;
620 }
621 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
622 MkObjectLogLong (hdl, fmtobj, debug, callfunc, lvl);
624 goto end;
625 error:
627 end:
630}
631
633static OT_ProcRet NS(MkObjectC_LogShort) (MkObjectC_ARGS) {
636 MK_OBJN fmtobj = NULL;
638 MK_DBG debug = 0;
640 MK_STRN callfunc = NULL;
642 MK_I32 lvl = 0;
645 if (debug > MkRuntimeDebugGet()) {
647 goto end;
648 }
649 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
650 MkObjectLogShort (hdl, fmtobj, debug, callfunc, lvl);
652 goto end;
653 error:
655 end:
658}
659
661static OT_ProcRet NS(MkObjectC_LogType) (MkObjectC_ARGS) {
664 MK_OBJN fmtobj = NULL;
666 MK_DBG debug = 0;
668 MK_STRN callfunc = NULL;
670 MK_I32 lvl = 0;
673 if (debug > MkRuntimeDebugGet()) {
675 goto end;
676 }
677 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
678 MkObjectLogType (hdl, fmtobj, debug, callfunc, lvl);
680 goto end;
681 error:
683 end:
686}
687
689// MkObjectC_Log_PY_API
690
694
695// doc-key: MkObjectC,MkObjectC-Misc,oc_
696
698static OT_ProcRet NS(MkObjectC_ErrorCatch) (MkObjectC_ARGS) {
701 MK_EXP exception = NULL;
703 MK_STRN callfunc = NULL;
706 if (MkSysStringIsNULL(callfunc)) {callfunc = OT_GET_CALL_PROC;}
707 MK_ERR retVal = MkObjectErrorCatchTmpl (hdl, exception, callfunc);
708 OT_retObj_SET_ERR(retVal);
709 goto end;
710 error:
712 end:
715}
716
718static OT_ProcRet NS(MkObjectC_ToError) (MkObjectC_ARGS) {
722 MK_ERR retVal = MkObjectToError (hdl);
723 OT_retObj_SET_ERR(retVal);
724 goto end;
725 error:
727 end:
729}
730
731// doc-key: MkObjectC,MkObjectC-Misc,om_
732
734static OT_ProcRet NS(MkObjectC_IsNull) (MkObjectC_ARGS) {
739 goto end;
740 error:
742 end:
744}
745
747static OT_ProcRet NS(MkObjectC_ToName) (MkObjectC_ARGS) {
752 goto end;
753 error:
755 end:
757}
758
760static OT_ProcRet NS(MkObjectC_ToNameOfClass) (MkObjectC_ARGS) {
765 goto end;
766 error:
768 end:
770}
771
773static OT_ProcRet NS(MkObjectC_ToNameOfType) (MkObjectC_ARGS) {
778 goto end;
779 error:
781 end:
783}
784
786static OT_ProcRet NS(MkObjectC_ToString) (MkObjectC_ARGS) {
791 goto end;
792 error:
794 end:
796}
797
799// MkObjectC_Misc_PY_API
800
804
805// doc-key: MkObjectC,MkObjectC-Obj,om_
806
808static OT_ProcRet NS(MkObjectC_RefGet) (MkObjectC_ARGS) {
813 goto end;
814 error:
816 end:
818}
819
821// MkObjectC_Obj_PY_API
822
826
827// doc-key: MkObjectC,MkObjectC-Sys,om_
828
830static OT_ProcRet NS(MkObjectC_SysKill) (MkObjectC_ARGS) {
833 MK_I32 pid = 0;
835 MK_I32 signal = 0;
838 MkErrorC_Check(hdl,MkSysKill (hdl, pid, signal));
840 goto end;
841 error:
843 end:
845}
846
847// doc-key: MkObjectC,MkObjectC-Sys,omo
848
850static OT_ProcRet NS(MkObjectC_SysGetPid) (MkObjectC_ARGS) {
854 MK_I32 pid_out;
855 MkErrorC_Check(hdl,MkSysGetPid (hdl, &pid_out));
856 OT_retObj_SET_I32(pid_out);
857 goto end;
858 error:
860 end:
862}
863
864// doc-key: MkObjectC,MkObjectC-Sys,sm_
865
867static OT_ProcRet NS(MkObjectC_SysHashI32) (OtClass_ARGS) {
870 MK_STRN key = 0;
872 MK_NUM length = -1;
875 OT_retObj_SET_I32(MkSysHashI32 (key, length));
876 goto end;
877 error:
879 end:
881}
882
884static OT_ProcRet NS(MkObjectC_SysHashSTR) (OtClass_ARGS) {
887 MK_STRN key = 0;
889 MK_NUM length = -1;
892 OT_retObj_SET_STR(MkSysHashSTR (key, length));
893 goto end;
894 error:
896 end:
898}
899
901// MkObjectC_Sys_PY_API
902
906
907// doc-key: MkObjectC,MkObjectC-TOR,od_
908
910static OT_ProcRet NS(MkObjectC_Dispose) (MkObjectC_ARGS) {
916 goto end;
917 error:
919 end:
921}
922
923// doc-key: MkObjectC,MkObjectC-TOR,oD_
924
926static OT_ProcRet NS(MkObjectC_Delete) (MkObjectC_ARGS) {
932 goto end;
933 error:
935 end:
937}
938
939// doc-key: MkObjectC,MkObjectC-TOR,sm_
940
942static OT_ProcRet NS(MkObjectC_DeleteCallbackCleanup) (OtClass_ARGS) {
945 MK_STRN ident = 0;
950 goto end;
951 error:
953 end:
955}
956
958static OT_ProcRet NS(MkObjectC_DeleteCallbackSetup) (OtClass_ARGS) {
961 MK_STRN ident = 0;
963 OT_SETUP_CALLABLE(callback)
965 MK_STRN filter = NULL;
968 MkObjectDeleteCallF fCall = (callback == NULL ? NULL : NS(ObjectDeleteCall));
969 MkErrorC_Check(MK_ERROR_FORMAT,MkObjectDeleteCallbackSetup (ident, fCall, callback, NS(ObjectDeleteFree), filter));
971 goto end;
972 error:
974 end:
975 OT_CLEANUP_CALLABLE(callback)
977}
978
980// MkObjectC_TOR_PY_API
981
982// END-MkObjectC - created by 'py_MqC.tcl -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta' - DO NOT change
983
984// vim: Marker(o)
990
991static PyMethodDef NS(MkObjectC_Methods)[] = {
992
993 // BEGIN-CLASS - created by 'py_MqS.tcl -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta' - DO NOT change
994
995 // doc-key: MkObjectC,MkDbg,sm_
996 { "DbgM" , (PyCFunction) NS(MkObjectC_DbgM) , METH_VARARGS|METH_CLASS , DbgM_doc },
997
998 // doc-key: MkObjectC,MkObject,sc_
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 },
1002
1003 // doc-key: MkObjectC,MkObject,sm_
1004 { "DeleteCallbackCleanup" , (PyCFunction) NS(MkObjectC_DeleteCallbackCleanup) , METH_O|METH_CLASS , DeleteCallbackCleanup_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 },
1007
1008 // doc-key: MkObjectC,MkSys,sm_
1009 { "SysHashI32" , (PyCFunction) NS(MkObjectC_SysHashI32) , METH_VARARGS|METH_CLASS , SysHashI32_doc },
1010 { "SysHashSTR" , (PyCFunction) NS(MkObjectC_SysHashSTR) , METH_VARARGS|METH_CLASS , SysHashSTR_doc },
1011
1012 // END-CLASS - created by 'py_MqS.tcl -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta' - DO NOT change
1013 // BEGIN-OBJ - created by 'py_MqS.tcl -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta' - DO NOT change
1014
1015 // doc-key: MkObjectC,MkDbg,om_
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 },
1021
1022 // doc-key: MkObjectC,MkLog,om_
1023 { "LogC" , (PyCFunction) NS(MkObjectC_LogC) , METH_VARARGS , LogC_doc },
1024 { "LogHEX" , (PyCFunction) NS(MkObjectC_LogHEX) , METH_VARARGS , LogHEX_doc },
1025
1026 // doc-key: MkObjectC,MkObj,om_
1027 { "RefGet" , (PyCFunction) NS(MkObjectC_RefGet) , METH_NOARGS , RefGet_doc },
1028
1029 // doc-key: MkObjectC,MkObject,oD_
1030 { "Delete" , (PyCFunction) NS(MkObjectC_Delete) , METH_NOARGS , Delete_doc },
1031
1032 // doc-key: MkObjectC,MkObject,od_
1033 { "Dispose" , (PyCFunction) NS(MkObjectC_Dispose) , METH_NOARGS , Dispose_doc },
1034
1035 // doc-key: MkObjectC,MkObject,oc_
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 },
1040
1041 // doc-key: MkObjectC,MkObject,om_
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 },
1056
1057 // doc-key: MkObjectC,MkSys,om_
1058 { "SysKill" , (PyCFunction) NS(MkObjectC_SysKill) , METH_VARARGS , SysKill_doc },
1059
1060 // doc-key: MkObjectC,MkSys,omo
1061 { "SysGetPid" , (PyCFunction) NS(MkObjectC_SysGetPid) , METH_NOARGS , SysGetPid_doc },
1062
1063 // END-OBJ - created by 'py_MqS.tcl -i NHI1_HOME/theKernel/c/gen/c_mkkernel.meta' - DO NOT change
1064
1065 {NULL, NULL, 0, NULL} /* Sentinel */
1066};
1067
1068
1069/*
1070 if (MkRefIsLocked(obj)) {
1071 obj = MkObjMerge (obj);
1072 if (obj == NULL) {
1073 PyErr_Format(PyExc_RuntimeError, "MergeError: '%s.Merge()' return a NULL pointer",type->tp_name);
1074 return NULL;
1075 }
1076 } else if (MkRefGet(obj) > 0 && obj->self != NULL) {
1077 return Py_NewRef(obj->self);
1078 } else if (obj->self != NULL) {
1079//printSTACK0();
1080 PyErr_Format(PyExc_RuntimeError,
1081 "InternalError: '%s' 'obj->self != NULL' with 'obj->ref == 0'", type->tp_name
1082 );
1083 return NULL;
1084 }
1085 return NS(AtomCreate)(MK_RT_CALL type,obj,useSelf);
1086}
1087*/
1088
1089// ***********************************************************************************
1090
1091static void
1093{
1094 MK_MNG mng = VAL2MNG(self);
1095 if (mng) {
1096 MK_OBJ obj = MkObj(mng);
1097 check_NULL(obj) goto end;
1098 MkRtSetup_ON(obj);
1099
1100 #ifdef LOG_REF
1101 if (self) printLngObj(self)
1102 #endif
1103
1104 // delete link between MQ and PYTHON
1105 obj = MkRefDecrWithoutSelf(obj);
1106 }
1107end:
1108 Py_TYPE(self)->tp_free(self);
1109}
1110
1111PyObject *
1113{
1115 MK_STRN str = MkObjectToString(hdl);
1116 return STRN2VAL(str);
1117}
1118
1119int NS(sMkObjectC_init)(CONSTR_ARGS)
1120{
1121 return 0;
1122}
1123
1124// ########################################################################################
1125// OVERLOAD
1126
1132
1134{
1135 Py_INCREF(self);
1136}
1137
1139{
1140 Py_CLEAR(self);
1141}
1142
1144 PyVarObject_HEAD_INIT(NULL, 0)
1145 .tp_name = "pymkkernel.MkObjectC",
1146 .tp_doc = "PyMkKernel MkObjectC Type",
1147 .tp_basicsize = sizeof(MkObjectC_Obj),
1148 .tp_dealloc = MkObjectC_Dealloc,
1149 .tp_methods = NS(MkObjectC_Methods),
1150 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1151 .tp_str = (reprfunc) MkObjectC_Str,
1152 .tp_init = (initproc) NS(sMkObjectC_init)
1153 };
1154
1155int NS(pMkObjectC_Init) ( MK_RT_ARGS PyObject* m)
1156{
1157/*
1158 NS(MkObjectCR) = (PyTypeObject) {
1159 PyVarObject_HEAD_INIT(NULL, 0)
1160 .tp_name = "pymkkernel.MkObjectC",
1161 .tp_doc = "PyMkKernel MkObjectC Type",
1162 .tp_basicsize = sizeof(MkObjectC_Obj),
1163 .tp_dealloc = MkObjectC_Dealloc,
1164 .tp_methods = NS(MkObjectC_Methods),
1165 .tp_flags = Py_TPFLAGS_DEFAULT | Py_TPFLAGS_BASETYPE,
1166 .tp_str = (reprfunc) MkObjectC_Str,
1167 .tp_init = (initproc) NS(sMkObjectC_init)
1168 };
1169*/
1170
1171 // attention this is NOT thread-safe because pymkkernel is NOT thread-safe.
1172 // a threaded application require this PER THREAD and not once
1173 MK_RT_REF.fSelfIncr = MkObjectC_SelfIncr;
1174 MK_RT_REF.fSelfDecr = MkObjectC_SelfDecr;
1175 MK_RT_REF.MkSelfIncrOnCacheB = true;
1176
1177 ClassInit
1178
1179 return 0;
1180error:
1181 return -1;
1182}
1183
1184// vim: nowrap
tag: nhi1-release-250425
#define OT_SELF
#define MK(n)
#define OT_SETUP_VARARGS(min, max, d)
#define OT_retObj_SET_BOL(nat)
#define OT_SETUP_NOARG(d)
#define OT_SELF_O(o)
#define OT_SETUP_ONEARG(d)
#define OT_CHECK_NI4(val)
#define OT_retObj_SET_Error
#define OT_FRAME_CLEANUP
#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)
PyTypeObject * OT_CLS_T
#define NS(n)
#define VAL2MNG(val)
#define MkObjectC_ARGS
#define OT_retObj_RETURN
#define OT_GET_CALL_PROC
PyObject * OT_OBJ_T
#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 check_NULL(E)
#define OT_retObj_SET_ERR(nat)
#define OT_CHECK_NOARGS
#define MkErrorC_Check(mng, PROC)
#define OT_ProcRet
#define OT_OBJECT_DELETE(self)
#define CONSTR_ARGS
#define OtClass_ARGS
struct MkObjectC_Obj MkObjectC_Obj
#define printLngObj(o)
#define STRN2VAL(nat)
#define OT_CHECK_STRN(val)
#define formatObj(s, o)
#define Instances_doc
#define LogShort_doc
#define SysKill_doc
#define DbgLogC_doc
#define SysGetPid_doc
void MkObjectC_SelfDecr(MK_RT mkrt, MK_PTR self, MK_PTR const env)
#define LogType_doc
#define SysHashSTR_doc
#define HandleDeleteByNetHdl_doc
#define SysHashI32_doc
static void MkObjectC_Dealloc(OT_OBJ_T self)
#define OT_SETUP_hdl
#define ToString_doc
void MkObjectC_SelfIncr(MK_RT mkrt, MK_PTR self, MK_PTR const env)
#define ToName_doc
#define LogC_doc
#define Log_doc
#define OT_SETUP_hdl_destr
#define HandleExists_doc
#define IsNull_doc
#define LogHEX_doc
#define GetNull_doc
#define LogLong_doc
#define Next_doc
#define HandleResolve_doc
#define DbgM_doc
#define Prev_doc
#define MkDbgDumpTmpl(...)
#define ToError_doc
#define OT_CLASS
#define OT_SETUP_hdl_static
#define DeleteCallbackCleanup_doc
#define DbgO_doc
#define HandleGet_doc
#define ToNameOfType_doc
#define HandleDelete_doc
#define OT_SETUP_hdl__null_allow
#define MkObjectToNameOfClassTmpl(hdl)
#define DbgDump_doc
PyObject * MkObjectC_Str(OT_LNG_OBJ_T self)
#define MkObjectErrorCatchTmpl(...)
#define Delete_doc
#define DeleteCallbackSetup_doc
#define HandleGetOr0_doc
#define DbgL_doc
#define Dispose_doc
#define ErrorCatch_doc
#define ClassInit
#define DbgSTACK_doc
#define HandleGetOfType_doc
#define RefGet_doc
#define ToNameOfClass_doc
#define MkBufferAppendV(...)
#define MkBufferCreateLOCAL_T(cls, name, size)
create an new MkBufferC object as L)ocal S)torage…
#define MK_ERROR_FORMAT
#define mk_inline
#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 MkDbgDump(...)
#define MkDbgM(...)
#define MkDbgLogC(...)
#define MkDbgL(...)
#define MkDbgO(...)
#define MkDbgSTACK(...)
#define MkObjectLogLong(...)
#define MkObjectLogShort(...)
#define MkObjectLog(...)
#define MkLogC(...)
#define MkLogHEX(...)
#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 MkRtSetup_ON(o)
#define MK_RT_CALL
#define MK_RT_ARGS
#define MK_RT_REF
#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 …
PyObject_HEAD MK_OBJ hdl
object header …