theConfig 10.0
Loading...
Searching...
No Matches
LcCall_atl.c
Go to the documentation of this file.
1
9/* LABEL-NO */
10
12
13/*****************************************************************************/
14/* */
15/* Proc-Call */
16/* */
17/*****************************************************************************/
18
19
20#if 0
21 #define dbgMsg(fmt,...) printV(fmt,__VA_ARGS__)
22 #define dbgObj(obj) printLngObj(obj)
23#else
24 #define dbgMsg(fmt,...)
25 #define dbgObj(obj)
26#endif
27
28
29/*
30[ConfigIncludeCall signature]
31 callback-args := inclDir:String[in] path:String[in] ret:MkBufferListC[inout]
32 [proc] proc callback { callback-args ?additional-args...? } ...
33 LcConfigC::SetIncludeFunc $cfgNs callback
34 [instance] myooX::ClassN ::XXX {
35 proc callback { xxxNs callback-args ?additional-args...? } ...
36 }
37 LcConfigC::SetIncludeFunc $cfgNs [list callback $xxxNs]
38 [class] myooX::ClassN ::YYY {
39 proc callback { callback-args ?additional-args...? } ...
40 }
41 LcConfigC::SetIncludeFunc $cfgNs ::YYY::callback
42[ConfigIncludeCall signature]
43*/
44
45enum MkErrorE NS(ConfigIncludeCall) ( LcConfigIncludeCallF_ARGS )
46{
48
49 // 1. setup arguments
50 struct MkCallS *call = cfg->fConfigIncludeData ;
51 assert(call->signature == MkCallS_SIG);
52
53//MkCallLog(call);
54
55 // 2. prolog
56 CallProlog(cfg);
57
58 // 3. setup args
59 objv[objc++] = STR2VAL(incDir);
60 objv[objc++] = STR2VAL(path);
61 objv[objc++] = OT_TMP_BFL_OBJ(ret_inout);
62
63 // 4. setup user args
64 if (call->args) MK(ProcResolveAppendArgs)(call,&objc,objv);
65
66 // 5. call the callback
67 int ret = MK(EvalObjv) (interp, objc, objv, 0); /* "MK(EvalObjv)" IS required !! */
68 if (ret != TCL_OK) goto error;
69
70 Tcl_ResetResult(interp);
71 return MkErrorGetCode_0E();
72
73error:
75
76error_mq:
77 return MkErrorStack_0E();
78}
79
80void NS(ConfigIncludeFree) ( LcConfigIncludeFreeF_ARGS )
81{
82 MkCallFree(cfg->fConfigIncludeData);
83
84 //OT_REF_DECR_AND_NULL(cfg->fConfigIncludeHook);
85
86 cfg->fConfigIncludeCall = NULL;
87 cfg->fConfigIncludeFree = NULL;
88}
89
90// =====================================================================================================================
91
92/*
93[SettingDeleteCall signature]
94 callback-args := hdl:EXPORT-HANDLE[in]
95 [static] proc callback { callback-args ?additional-args...? } ...
96 ::LcConfigC::SetSettingDeleteFunc $cfgNs callback
97 [instance] myooX::ClassN ::XXX {
98 proc callback { myNs callback-args ?additional-args...? } ...
99 }
100 ::LcConfigC::SetSettingDeleteFunc $cfgNs [list callback someNs]
101 [class] myooX::ClassN ::YYY {
102 proc callback { callback-args ?additional-args...? } ...
103 }
104 ::LcConfigC::SetSettingDeleteFunc $cfgNs ::YYY::callback
105[SettingDeleteCall signature]
106*/
107
108enum MkErrorE NS(SettingDeleteCall) ( LcSettingDeleteCallF_ARGS )
109{
111
112 // test on recursion
113 static MkThreadLocal bool onCall = false;
114 if (onCall) {
115printSTACK_1(cfg)
116 return MkErrorSetC_2M(cfg,"REKURSIVE call on LcSettingC -> delete handler");
117 }
118 onCall=true;
119
120 // 1. setup environment
121 struct MkCallS *call = cfg->fSettingDeleteData;
122 assert(call->signature == MkCallS_SIG);
123
124 // 2. prolog
125 CallProlog(cfg);
126
127 // 3. setup args
128 objv[objc++] = LONG2VAL(MkObjectHandleGet_1X(cfs));
129
130 // 4. setup user args
131 if (call->args) MK(ProcResolveAppendArgs)(call,&objc,objv);
132
133 // 5. call the callback
134 int ret = MK(EvalObjv) (interp, objc, objv, 0); /* "MK(EvalObjv)" IS required !! */
135 if (ret != TCL_OK) goto error;
136
137 Tcl_ResetResult(interp);
138 onCall = false;
139 return MkErrorGetCode_0E();
140
141error:
143
144error_mq:
145 onCall = false;
146 return MkErrorStack_0E();
147}
148
149void NS(SettingDeleteFree) ( LcSettingDeleteFreeF_ARGS )
150{
151 MK(CallFree) (&cfg->fSettingDeleteData);
152
153 //OT_REF_DECR_AND_NULL(cfg->fSettingDeleteHook);
154
155 cfg->fSettingDeleteData = NULL;
156 cfg->fSettingDeleteCall = NULL;
157 cfg->fSettingDeleteFree = NULL;
158}
#define NS(n)
tag: nhi1-release-250425
#define CallProlog(m)
#define MK(n)
#define LONG2VAL(nat)
#define STR2VAL(ptr)
#define MkCallS_SIG
#define OT_ERROR_LNG_2_META(m)
#define OT_TMP_BFL_OBJ(nat)
#define LcSettingDeleteFreeF_ARGS
#define LcSettingDeleteCallF_CHECK
#define LcConfigIncludeCallF_CHECK
#define LcConfigIncludeFreeF_ARGS
#define LcConfigIncludeCallF_ARGS
#define LcSettingDeleteCallF_ARGS
#define MkErrorGetCode_0E()
#define MkErrorStack_0E()
#define MkErrorSetC_2M(err, message)
MkErrorE
#define MkObjectHandleGet_1X(x)
#define MkThreadLocal
#define MkCallFree(cb)
OT_OBJ_T args
MK_SIG signature