theSq3Lite 10.0
Loading...
Searching...
No Matches
LibSq3Lite_private_tcl.h File Reference

tag: nhi1-release-250425 More...

#include "debug_mk.h"
#include "nhi1_config.h"
#include "LibSq3Lite_tcl.h"
+ Include dependency graph for LibSq3Lite_private_tcl.h:
+ This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

Sq3Fupu_Sq3LiteExec_callback_call_ret tclsq3lite_LiteExecCall (Sq3Fupu_Sq3LiteExec_callback_call_args)
 
Sq3LiteExecV2CB_ret tclsq3lite_LiteExecV2Call (Sq3LiteExecV2CB_args)
 

Detailed Description

tag: nhi1-release-250425

Definition in file LibSq3Lite_private_tcl.h.

Function Documentation

◆ tclsq3lite_LiteExecCall()

Definition at line 28 of file Sq3Call_tcl.c.

29{
31
32 // 1. setup environment
33 struct MkCallS * call = callV1 ;
34 SQ3_LITE lite = Sq3Lite(call->hdl);
35 OT_OBJ_T valsO=NULL;
36 OT_OBJ_T colsO=NULL;
37 OT_ENV_T interp = call->interp;
38 if (call->interp==NULL || Tcl_InterpDeleted(interp) || lite == NULL || OT_SELF_X(lite)==NULL) return 1;
39 MkRtSetup_RT(call->mkrt);
40
41 // 2. setup arguments
42 Tcl_Obj *objv[5+MkProcResolve_maxArgsLen] = {0};
43 int objc = 0;
44#if 0
45 MkBufferListCreateTLS_T(valsL,num);
46 MkBufferListAppendVC(valsL,num,(MK_STRN*)vals);
47 Tcl_Obj* valsO = MK(MkBufferListC_ObjNew)(MK_RT_CALL interp, valsL);
48 MkBufferListCreateTLS_T(colsL,num);
49 MkBufferListAppendVC(colsL,num,(MK_STRN*)cols);
50 Tcl_Obj* colsO = MK(MkBufferListC_ObjNew)(MK_RT_CALL interp, colsL);
51
52#else
53 valsO = Tcl_NewObj();
54 for (int i=0; i<num; i++) {
55 check_LNG(Tcl_ListObjAppendElement(interp,valsO,Tcl_NewStringObj(vals[i],-1))) goto error_lng;
56 }
57 colsO = Tcl_NewObj();
58 for (int i=0; i<num; i++) {
59 check_LNG(Tcl_ListObjAppendElement(interp,colsO,Tcl_NewStringObj(cols[i],-1))) goto error_lng;
60 }
61#endif
62
63 // 3. setup my
64rescan:
65 switch (call->type) {
66 case MkCallS_own_method: {
67 // this is a instance->method
68 objv[objc++] = OT_SELF_NAME_O(MkOBJ(lite));
69 break;
70 }
72 case MkCallS_static:
73 objv[objc++] = call->my;
74 break;
75 case MkCallS_proc:
76 break;
77 case MkCallS_init: {
78 check_META(MK(ProcResolve)(MK_RT_CALL call->interp, MkOBJ(lite), call)) goto error_mq;
79 goto rescan;
80 }
81 case MkCallS_error:
82 goto error_lng;
83 case MkCallS_null:
84 goto end;
85 }
86
87 // 4. setup methode
88 if (call->mth) objv[objc++] = call->mth;
89
90 if (call->args) MK(ProcResolveAppendArgs)(call,&objc,objv);
91
92 objv[objc++] = valsO;
93 objv[objc++] = colsO;
94
95//M1; printAryDetail(objc,objv);
96 // 3. call the callback
97 check_LNG (MK(EvalObjv) (interp, objc, objv, TCL_EVAL_GLOBAL)) goto error_lng;
98 //check_LNG (Tcl_EvalObjv (interp, objc, objv, TCL_EVAL_GLOBAL)) goto error_lng;
99//M2; printAryDetail(objc,objv);
100
101end:
102 Tcl_ResetResult(interp);
103 return 0;
104error_lng:
106error_mq:
108 return 1;
109}
#define MK(n)
#define OT_SELF_X(x)
#define check_META(code)
#define check_LNG(code)
#define OT_ERROR_LNG_2_META(m)
#define OT_SELF_NAME_O(o)
#define MkProcResolve_maxArgsLen
Tcl_Interp * OT_ENV_T
Tcl_Obj * OT_OBJ_T
#define MkBufferListAppendVC(...)
#define MkBufferListCreateTLS_T(name, num)
#define MkErrorStack_0E()
const MK_STRB * MK_STRN
#define MkOBJ(x)
#define MK_RT_CALL
#define MkRtSetup_RT(r)
static SQ3_LITE Sq3Lite(MK_MNG mng)
cast a unknown-object into an Sq3LiteS pointer or NULL if not possible
#define Sq3Fupu_Sq3LiteExec_callback_call_check
OT_OBJ_T mth
OT_ENV_T interp
OT_OBJ_T args
enum MkCallS::@5 type
OT_OBJ_T my
Struct to represent the data of the Sq3LiteC …

◆ tclsq3lite_LiteExecV2Call()

Sq3LiteExecV2CB_ret tclsq3lite_LiteExecV2Call ( Sq3LiteExecV2CB_args )

Definition at line 126 of file Sq3Call_tcl.c.

127{
129
130 // 1. setup environment
131 struct MkCallS *call = callV2 ;
132 SQ3_LITE lite = Sq3Lite(call->hdl);
133 OT_OBJ_T valsO = NULL;
134 OT_OBJ_T colsO = NULL;
135 OT_ENV_T interp = call->interp;
136 if (call->interp==NULL || Tcl_InterpDeleted(interp) || lite == NULL || OT_SELF_X(lite)==NULL) return MK_ERROR;
137
138 // 2. setup arguments
139 Tcl_Obj *objv[5+MkProcResolve_maxArgsLen] = {0};
140 int objc = 0;
141 valsO = OT_TMP_BFL_OBJ(vals);
142 colsO = OT_TMP_BFL_OBJ(cols);
143
144 // 3. setup my
145rescan:
146 switch (call->type) {
147 case MkCallS_own_method: {
148 // this is a instance->method
149 objv[objc++] = OT_SELF_NAME_O(MkOBJ(lite));
150 break;
151 }
153 case MkCallS_static:
154 objv[objc++] = call->my;
155 break;
156 case MkCallS_proc:
157 break;
158 case MkCallS_init: {
159 check_META(MK(ProcResolve)(MK_RT_CALL call->interp, MkOBJ(lite), call)) goto error_mq;
160 goto rescan;
161 }
162 case MkCallS_error:
163 goto error_lng;
164 case MkCallS_null:
165 goto end;
166 }
167
168 // 4. setup methode
169 if (call->mth) objv[objc++] = call->mth;
170
171 MK(ProcResolveAppendArgs)(call,&objc,objv);
172
173 objv[objc++] = valsO;
174 objv[objc++] = colsO;
175
176 // 3. call the callback
177 check_LNG (MK(EvalObjv) (interp, objc, objv, TCL_EVAL_GLOBAL)) goto error_lng;
178 //check_LNG (Tcl_EvalObjv (interp, objc, objv, TCL_EVAL_GLOBAL)) goto error_lng;
179
180 Tcl_ResetResult(interp);
181end:
182 return MkErrorGetCode_0E();
183error_lng:
185error_mq:
187 return MK_ERROR;
188}
#define OT_TMP_BFL_OBJ(val)
#define MkErrorGetCode_0E()
MK_ERROR
#define Sq3Fupu_Sq3LiteExecV2CB_callback_call_check