2727// #define PyList_SET_ITEM PyList_SetItem
2828// #endif
2929
30- //TODO: reuse code from the new capi.h header
31-
32- typedef int32_t (* func_i32_ctx_i32 )(const void * ctx , int32_t value );
33- typedef int32_t (* func_i32_ctx_str )(const void * ctx , const char * value );
34- typedef int32_t (* func_i32_ctx )(const void * ctx );
35-
36- typedef double (* func_f64_ctx_i32 )(const void * ctx , int32_t value );
37- typedef double (* func_f64_ctx_str )(const void * ctx , const char * value );
38- typedef double (* func_f64_ctx )(const void * ctx );
39-
40- typedef uint16_t (* func_b16_ctx_i32 )(const void * ctx , int32_t value );
41- typedef uint16_t (* func_b16_ctx_i32_i32 )(const void * ctx , int32_t value , int32_t value2 );
42- typedef uint16_t (* func_b16_ctx_str )(const void * ctx , const char * value );
43- typedef uint16_t (* func_b16_ctx )(const void * ctx );
44-
45- typedef const char * (* func_str_ctx )(const void * ctx );
46- typedef const char * (* func_str_ctx_i32 )(const void * ctx , int32_t value );
47- typedef void (* func_void_ctx_strs )(const void * ctx , char * * * ResultPtr , int32_t * ResultDims );
48- typedef void (* func_void_ctx_strs_b16 )(const void * ctx , char * * * ResultPtr , int32_t * ResultDims , uint16_t value );
49- typedef void (* func_void_ctx_strs_i32 )(const void * ctx , char * * * ResultPtr , int32_t * ResultDims , int32_t value );
50- typedef void (* func_void_ctx_strs_str )(const void * ctx , char * * * ResultPtr , int32_t * ResultDims , const char * value );
51- typedef void (* gr_func_void_ctx )(const void * ctx );
52- typedef void (* gr_func_void_ctx_b16 )(const void * ctx , uint16_t value );
53- typedef void (* gr_func_void_ctx_i32 )(const void * ctx , int32_t value );
54- typedef void (* gr_func_void_ctx_f64_f64_i32 )(const void * ctx , double f1 , double f2 , int32_t value );
55-
56- typedef void (* func_void_ctx_i32 )(const void * ctx , int32_t value );
57- typedef void (* func_void_ctx_i32_i32 )(const void * ctx , int32_t value , int32_t value2 );
58- typedef void (* func_void_ctx_f64 )(const void * ctx , double value );
59- typedef void (* func_void_ctx_b16 )(const void * ctx , uint16_t value );
60- typedef void (* func_void_ctx_str )(const void * ctx , const char * value );
61- typedef void (* func_void_ctx )(const void * ctx );
62-
63- enum {
64- fastdss_types_void = 0 ,
65- fastdss_types_b16 ,
66- fastdss_types_f32 ,
67- fastdss_types_f64 ,
68- fastdss_types_f64_f64_i32 ,
69- fastdss_types_gr_f64s ,
70- fastdss_types_gr_i32s ,
71- fastdss_types_gr_i8s ,
72- fastdss_types_gr_z128 ,
73- fastdss_types_gr_z128s ,
74- fastdss_types_i32 ,
75- fastdss_types_i32_i32 ,
76- fastdss_types_str ,
77- fastdss_types_strs ,
78- fastdss_types_z64 ,
79- };
30+ #include "altdss/capi/fastdss_func_info.h"
8031
8132enum FastDSSSettings {
8233 FastDSSSettings_UseExceptions = 1 << 0 ,
@@ -192,14 +143,6 @@ typedef struct AltDSS_PyContextObject_
192143 #include "./_fastdss_struct_members.inc.c"
193144} AltDSS_PyContextObject ;
194145
195- typedef struct {
196- int resType ;
197- int argType ;
198- size_t c_funcOffset ;
199- size_t attrOffset ;
200- char const * fname ;
201- } FastDSSFuncInfo ;
202-
203146static int AltDSS_PyScalarSetter_init (AltDSS_PyScalarSetterObject * f , PyObject * Py_UNUSED (args_ignored ), PyObject * Py_UNUSED (kwargs_ignored ))
204147{
205148 f -> parent = NULL ;
@@ -258,7 +201,7 @@ static PyObject *AltDSS_PyScalarSetter_call(AltDSS_PyScalarSetterObject *f, PyOb
258201 return NULL ;
259202 }
260203 threadstate = PyEval_SaveThread ();
261- ((func_void_ctx_i32 )f -> func )(f -> dssCtx , cval_int );
204+ ((altdss_func_v_cvp_i32 )f -> func )(f -> dssCtx , cval_int );
262205 PyEval_RestoreThread (threadstate );
263206 break ;
264207 case fastdss_types_i32_i32 :
@@ -268,7 +211,7 @@ static PyObject *AltDSS_PyScalarSetter_call(AltDSS_PyScalarSetterObject *f, PyOb
268211 return NULL ;
269212 }
270213 threadstate = PyEval_SaveThread ();
271- ((func_void_ctx_i32_i32 )f -> func )(f -> dssCtx , cval_int , cval_int2 );
214+ ((altdss_func_v_cvp_i32_i32 )f -> func )(f -> dssCtx , cval_int , cval_int2 );
272215 PyEval_RestoreThread (threadstate );
273216 break ;
274217 case fastdss_types_f64 :
@@ -278,17 +221,17 @@ static PyObject *AltDSS_PyScalarSetter_call(AltDSS_PyScalarSetterObject *f, PyOb
278221 return NULL ;
279222 }
280223 threadstate = PyEval_SaveThread ();
281- ((func_void_ctx_f64 )f -> func )(f -> dssCtx , cval_float64 );
224+ ((altdss_func_v_cvp_f64 )f -> func )(f -> dssCtx , cval_float64 );
282225 PyEval_RestoreThread (threadstate );
283226 break ;
284- case fastdss_types_b16 :
227+ case fastdss_types_u16 :
285228 if (!PyArg_ParseTuple (args , "p" , & cval_int ))
286229 {
287230 PyErr_SetString (PyExc_TypeError , "Invalid arguments on AltDSS_PyScalarSetter call (expected a boolean value)" );
288231 return NULL ;
289232 }
290233 threadstate = PyEval_SaveThread ();
291- ((func_void_ctx_b16 )f -> func )(f -> dssCtx , cval_int ? (uint16_t )-1 : (uint16_t )0 );
234+ ((altdss_func_v_cvp_u16 )f -> func )(f -> dssCtx , cval_int ? (uint16_t )-1 : (uint16_t )0 );
292235 PyEval_RestoreThread (threadstate );
293236 break ;
294237 case fastdss_types_str :
@@ -298,12 +241,12 @@ static PyObject *AltDSS_PyScalarSetter_call(AltDSS_PyScalarSetterObject *f, PyOb
298241 return NULL ;
299242 }
300243 threadstate = PyEval_SaveThread ();
301- ((func_void_ctx_str )f -> func )(f -> dssCtx , cstr );
244+ ((altdss_func_v_cvp_cstr )f -> func )(f -> dssCtx , cstr );
302245 PyEval_RestoreThread (threadstate );
303246 break ;
304247 case fastdss_types_void :
305248 threadstate = PyEval_SaveThread ();
306- ((func_void_ctx )f -> func )(f -> dssCtx );
249+ ((altdss_func_v_cvp )f -> func )(f -> dssCtx );
307250 PyEval_RestoreThread (threadstate );
308251 break ;
309252 default :
@@ -369,20 +312,20 @@ static PyObject *AltDSS_PyScalarGetter_call(AltDSS_PyScalarGetterObject *f, PyOb
369312 threadstate = PyEval_SaveThread ();
370313 switch (f -> resType )
371314 {
372- case fastdss_types_b16 :
315+ case fastdss_types_u16 :
373316 switch (f -> funcArgSignature )
374317 {
375318 case fastdss_types_i32_i32 :
376- cval_int32 = ((func_b16_ctx_i32_i32 )f -> func )(f -> dssCtx , argValue , argValue2 );
319+ cval_int32 = ((altdss_func_u16_cvp_i32_i32 )f -> func )(f -> dssCtx , argValue , argValue2 );
377320 break ;
378321 case fastdss_types_i32 :
379- cval_int32 = ((func_b16_ctx_i32 )f -> func )(f -> dssCtx , argValue );
322+ cval_int32 = ((altdss_func_u16_cvp_i32 )f -> func )(f -> dssCtx , argValue );
380323 break ;
381324 case fastdss_types_str :
382- cval_int32 = ((func_b16_ctx_str )f -> func )(f -> dssCtx , cstr );
325+ cval_int32 = ((altdss_func_u16_cvp_cstr )f -> func )(f -> dssCtx , cstr );
383326 break ;
384327 case fastdss_types_void :
385- cval_int32 = ((func_b16_ctx )f -> func )(f -> dssCtx );
328+ cval_int32 = ((altdss_func_u16_cvp )f -> func )(f -> dssCtx );
386329 break ;
387330 default :
388331 PyEval_RestoreThread (threadstate );
@@ -394,13 +337,13 @@ static PyObject *AltDSS_PyScalarGetter_call(AltDSS_PyScalarGetterObject *f, PyOb
394337 switch (f -> funcArgSignature )
395338 {
396339 case fastdss_types_i32 :
397- cval_int32 = ((func_i32_ctx_i32 )f -> func )(f -> dssCtx , argValue );
340+ cval_int32 = ((altdss_func_i32_cvp_i32 )f -> func )(f -> dssCtx , argValue );
398341 break ;
399342 case fastdss_types_str :
400- cval_int32 = ((func_i32_ctx_str )f -> func )(f -> dssCtx , cstr );
343+ cval_int32 = ((altdss_func_i32_cvp_cstr )f -> func )(f -> dssCtx , cstr );
401344 break ;
402345 case fastdss_types_void :
403- cval_int32 = ((func_i32_ctx )f -> func )(f -> dssCtx );
346+ cval_int32 = ((altdss_func_i32_cvp )f -> func )(f -> dssCtx );
404347 break ;
405348 default :
406349 PyEval_RestoreThread (threadstate );
@@ -412,13 +355,13 @@ static PyObject *AltDSS_PyScalarGetter_call(AltDSS_PyScalarGetterObject *f, PyOb
412355 switch (f -> funcArgSignature )
413356 {
414357 case fastdss_types_i32 :
415- cval_float64 = ((func_f64_ctx_i32 )f -> func )(f -> dssCtx , argValue );
358+ cval_float64 = ((altdss_func_f64_vp_i32 )f -> func )(f -> dssCtx , argValue );
416359 break ;
417360 case fastdss_types_str :
418- cval_float64 = ((func_f64_ctx_str )f -> func )(f -> dssCtx , cstr );
361+ cval_float64 = ((altdss_func_f64_vp_cstr )f -> func )(f -> dssCtx , cstr );
419362 break ;
420363 case fastdss_types_void :
421- cval_float64 = ((func_f64_ctx )f -> func )(f -> dssCtx );
364+ cval_float64 = ((altdss_func_f64_cvp )f -> func )(f -> dssCtx );
422365 break ;
423366 default :
424367 PyEval_RestoreThread (threadstate );
@@ -443,7 +386,7 @@ static PyObject *AltDSS_PyScalarGetter_call(AltDSS_PyScalarGetterObject *f, PyOb
443386
444387 switch (f -> resType )
445388 {
446- case fastdss_types_b16 :
389+ case fastdss_types_u16 :
447390 result = (cval_int32 ? Py_True : Py_False );
448391 Py_INCREF (result );
449392 return result ;
@@ -482,7 +425,7 @@ static PyObject *AltDSS_PyGRGetter_call(AltDSS_PyGRGetterObject *f, PyObject *ar
482425 return NULL ;
483426 }
484427 threadstate = PyEval_SaveThread ();
485- ((gr_func_void_ctx_f64_f64_i32 )f -> func )(f -> dssCtx , float64Arg1 , float64Arg2 , argValue );
428+ ((altdss_func_v_cvp_f64_f64_i32 )f -> func )(f -> dssCtx , float64Arg1 , float64Arg2 , argValue );
486429 PyEval_RestoreThread (threadstate );
487430 break ;
488431 case fastdss_types_i32 :
@@ -492,22 +435,22 @@ static PyObject *AltDSS_PyGRGetter_call(AltDSS_PyGRGetterObject *f, PyObject *ar
492435 return NULL ;
493436 }
494437 threadstate = PyEval_SaveThread ();
495- ((gr_func_void_ctx_i32 )f -> func )(f -> dssCtx , argValue );
438+ ((altdss_func_v_cvp_i32 )f -> func )(f -> dssCtx , argValue );
496439 PyEval_RestoreThread (threadstate );
497440 break ;
498- case fastdss_types_b16 :
441+ case fastdss_types_u16 :
499442 if (!PyArg_ParseTuple (args , "p" , & argValue ))
500443 {
501444 PyErr_SetString (PyExc_TypeError , "Invalid arguments on AltDSS_PyGRSetter call (expected a boolean value)" );
502445 return NULL ;
503446 }
504447 threadstate = PyEval_SaveThread ();
505- ((gr_func_void_ctx_b16 )f -> func )(f -> dssCtx , argValue ? (uint16_t )-1 : (uint16_t )0 );
448+ ((altdss_func_v_cvp_u16 )f -> func )(f -> dssCtx , argValue ? (uint16_t )-1 : (uint16_t )0 );
506449 PyEval_RestoreThread (threadstate );
507450 break ;
508451 default :
509452 threadstate = PyEval_SaveThread ();
510- ((gr_func_void_ctx )f -> func )(f -> dssCtx );
453+ ((altdss_func_v_cvp )f -> func )(f -> dssCtx );
511454 PyEval_RestoreThread (threadstate );
512455 break ;
513456 }
@@ -737,12 +680,12 @@ static PyObject *AltDSS_PyStrGetter_call(AltDSS_PyStrGetterObject *f, PyObject *
737680 return NULL ;
738681 }
739682 threadstate = PyEval_SaveThread ();
740- cstr = ((func_str_ctx_i32 )f -> func )(f -> dssCtx , argValue );
683+ cstr = ((altdss_func_cstr_cvp_i32 )f -> func )(f -> dssCtx , argValue );
741684 PyEval_RestoreThread (threadstate );
742685 break ;
743686 default :
744687 threadstate = PyEval_SaveThread ();
745- cstr = ((func_str_ctx )f -> func )(f -> dssCtx );
688+ cstr = ((altdss_func_cstr_cvp )f -> func )(f -> dssCtx );
746689 PyEval_RestoreThread (threadstate );
747690 break ;
748691 }
@@ -785,14 +728,14 @@ static PyObject *AltDSS_PyStrListGetter_call(AltDSS_PyStrListGetterObject *f, Py
785728
786729 switch (f -> funcArgSignature )
787730 {
788- case fastdss_types_b16 :
731+ case fastdss_types_u16 :
789732 if (!PyArg_ParseTuple (args , "i" , & argIntValue ))
790733 {
791734 PyErr_SetString (PyExc_TypeError , "Invalid arguments on AltDSS_PyStrGetter call (expected a boolean value)" );
792735 return NULL ;
793736 }
794737 threadstate = PyEval_SaveThread ();
795- ((func_void_ctx_strs_i32 )f -> func )(f -> dssCtx , & cstr_list , & count [0 ], argIntValue ? 1 : 0 );
738+ ((altdss_func_v_cvp_strs_i32p_u16 )f -> func )(f -> dssCtx , & cstr_list , & count [0 ], argIntValue ? 1 : 0 );
796739 PyEval_RestoreThread (threadstate );
797740 break ;
798741 case fastdss_types_i32 :
@@ -802,7 +745,7 @@ static PyObject *AltDSS_PyStrListGetter_call(AltDSS_PyStrListGetterObject *f, Py
802745 return NULL ;
803746 }
804747 threadstate = PyEval_SaveThread ();
805- ((func_void_ctx_strs_i32 )f -> func )(f -> dssCtx , & cstr_list , & count [0 ], argIntValue );
748+ ((altdss_func_v_cvp_strs_i32p_i32 )f -> func )(f -> dssCtx , & cstr_list , & count [0 ], argIntValue );
806749 PyEval_RestoreThread (threadstate );
807750 break ;
808751 case fastdss_types_str :
@@ -812,12 +755,12 @@ static PyObject *AltDSS_PyStrListGetter_call(AltDSS_PyStrListGetterObject *f, Py
812755 return NULL ;
813756 }
814757 threadstate = PyEval_SaveThread ();
815- ((func_void_ctx_strs_str )f -> func )(f -> dssCtx , & cstr_list , & count [0 ], cstr );
758+ ((altdss_func_v_cvp_strs_i32p_cstr )f -> func )(f -> dssCtx , & cstr_list , & count [0 ], cstr );
816759 PyEval_RestoreThread (threadstate );
817760 break ;
818761 default :
819762 threadstate = PyEval_SaveThread ();
820- ((func_void_ctx_strs )f -> func )(f -> dssCtx , & cstr_list , & count [0 ]);
763+ ((altdss_func_v_cvp_strs_i32p )f -> func )(f -> dssCtx , & cstr_list , & count [0 ]);
821764 PyEval_RestoreThread (threadstate );
822765 break ;
823766 }
@@ -952,7 +895,8 @@ static struct PyModuleDef altdss_fast_def = {
952895
953896int AltDSS_Add_PyFunc (AltDSS_PyContextObject * self , FastDSSFuncInfo * finfo , PyObject * setObj , PyObject * fakeLib );
954897
955- #include "./_fastdss_func_info.inc.c"
898+ #define FASTDSS_FUNCINFO_FILL (funcname ) offsetof(AltDSSCAPI, funcname), NULL, offsetof(AltDSS_PyContextObject, f_##funcname), #funcname
899+ #include "altdss/capi/fastdss_func_info.inc.c"
956900
957901static int AltDSS_PyContext_init (AltDSS_PyContextObject * self , PyObject * args , PyObject * Py_UNUSED (kwargs_ignored ))
958902{
@@ -1160,7 +1104,7 @@ int AltDSS_PyScalarSetter_cinit(AltDSS_PyScalarSetterObject* f, AltDSS_PyContext
11601104 finfo -> argType != fastdss_types_i32_i32 &&
11611105 finfo -> argType != fastdss_types_i32 &&
11621106 finfo -> argType != fastdss_types_f64 &&
1163- finfo -> argType != fastdss_types_b16 &&
1107+ finfo -> argType != fastdss_types_u16 &&
11641108 finfo -> argType != fastdss_types_void &&
11651109 finfo -> argType != fastdss_types_str )
11661110 || (finfo -> resType != fastdss_types_void )
@@ -1187,7 +1131,7 @@ int AltDSS_PyScalarGetter_cinit(AltDSS_PyScalarGetterObject* f, AltDSS_PyContext
11871131{
11881132 if (finfo -> resType != fastdss_types_i32 &&
11891133 finfo -> resType != fastdss_types_f64 &&
1190- finfo -> resType != fastdss_types_b16 )
1134+ finfo -> resType != fastdss_types_u16 )
11911135 {
11921136 f -> dssCtx = NULL ;
11931137 f -> func = NULL ;
@@ -1276,7 +1220,7 @@ int AltDSS_Add_PyFunc(AltDSS_PyContextObject *self, FastDSSFuncInfo* finfo, PyOb
12761220 case fastdss_types_i32_i32 :
12771221 case fastdss_types_f64 :
12781222 case fastdss_types_i32 :
1279- case fastdss_types_b16 :
1223+ case fastdss_types_u16 :
12801224 case fastdss_types_str :
12811225 case fastdss_types_void :
12821226 * py_func = (PyObject * ) PyObject_New (AltDSS_PyScalarSetterObject , & AltDSS_PyScalarSetterType );
@@ -1312,7 +1256,7 @@ int AltDSS_Add_PyFunc(AltDSS_PyContextObject *self, FastDSSFuncInfo* finfo, PyOb
13121256 break ;
13131257 case fastdss_types_f64 :
13141258 case fastdss_types_i32 :
1315- case fastdss_types_b16 :
1259+ case fastdss_types_u16 :
13161260 * py_func = (PyObject * ) PyObject_New (AltDSS_PyScalarGetterObject , & AltDSS_PyScalarGetterType );
13171261 if ((* py_func ) == NULL )
13181262 {
0 commit comments