42 #ifndef __PY_CPythonAPI_h__
43 #define __PY_CPythonAPI_h__
49 #include <hboost/preprocessor/seq/for_each.hpp>
50 #include <hboost/preprocessor/seq/for_each_i.hpp>
51 #include <hboost/preprocessor/seq/seq.hpp>
52 #include <hboost/preprocessor/punctuation/comma_if.hpp>
53 #include <hboost/preprocessor/cat.hpp>
54 #include <hboost/preprocessor/stringize.hpp>
55 #include <patchlevel.h>
64 #pragma warning(disable:4003)
72 #define PY_FUNC_SEQ_Py_Main \
73 ((Py_Main)(int)((int)(wchar_t **)))
75 #define PY_FUNC_SEQ_PySys_SetArgv \
76 ((PySys_SetArgv)(void)((int)(wchar_t **)))
78 #define PY_FUNC_SEQ_PySys_SetArgvEx \
79 ((PySys_SetArgvEx)(void)((int)(wchar_t **)(int)))
81 class PY_PyFrameObject;
89 #define PY_WRAPPED_FUNCTIONS \
90 ((_Py_VaBuildValue_SizeT)(PY_PyObject *)((const char *)(va_list))) \
91 ((Py_AtExit)(int)((PY_AtExitFunc))) \
92 ((PyGILState_Release)(void)((PY_PyGILState_STATE))) \
93 ((PyRun_SimpleStringFlags)(int)((const char *)(PY_PyCompilerFlags *))) \
94 ((Py_CompileStringFlags)(PY_PyObject *) \
95 ((const char *)(const char *)(int)(PY_PyCompilerFlags *))) \
96 ((PyCFunction_NewEx)(PY_PyObject *) \
97 ((PY_PyMethodDef *)(PY_PyObject *)(PY_PyObject *))) \
98 ((PyConfig_Clear)(void)((PY_PyConfig *))) \
99 ((PyEval_CallObjectWithKeywords)(PY_PyObject *) \
100 ((PY_PyObject *)(PY_PyObject *)(PY_PyObject *))) \
101 ((PyEval_GetFrame)(PY_PyFrameObject *)()) \
102 ((PyEval_EvalCode)(PY_PyObject *) \
103 ((PY_PyCodeObject *)(PY_PyObject *)(PY_PyObject *))) \
104 ((PyThread_get_thread_ident)(long)()) \
105 ((PyThreadState_SetAsyncExc)(int)((long)(PY_PyObject *))) \
106 PY_FUNC_SEQ_Py_Main \
107 ((Py_RunMain)(int)()) \
108 ((Py_IncRef)(void)((PY_PyObject *))) \
109 ((Py_DecRef)(void)((PY_PyObject *))) \
110 ((PyObject_GetAttr)(PY_PyObject *)((PY_PyObject *)(PY_PyObject *))) \
111 ((PyObject_GetAttrString)(PY_PyObject *)((PY_PyObject *)(const char *))) \
112 ((PyObject_SetAttr)(int)((PY_PyObject *)(PY_PyObject *)(PY_PyObject *))) \
113 ((PyObject_Repr)(PY_PyObject *)((PY_PyObject*))) \
114 ((PyObject_Str)(PY_PyObject *)((PY_PyObject *))) \
115 ((PyObject_IsTrue)(int)((PY_PyObject *))) \
116 ((PyObject_CallObject)(PY_PyObject *)((PY_PyObject *)(PY_PyObject *))) \
117 ((PyObject_Call)(PY_PyObject *) \
118 ((PY_PyObject *)(PY_PyObject *)(PY_PyObject *))) \
119 ((PyObject_GetIter)(PY_PyObject *)((PY_PyObject *))) \
120 ((PyObject_RichCompareBool)(int)((PY_PyObject *)(PY_PyObject *)(int))) \
121 ((PyObject_Print)(int)((PY_PyObject *)(FILE *)(int))) \
122 ((PyObject_Hash)(PY_Py_hash_t)((PY_PyObject *))) \
123 ((Py_VaBuildValue)(PY_PyObject *)((const char *)(va_list))) \
124 ((PyArg_VaParse)(int)((PY_PyObject *)(const char *)(va_list))) \
125 ((PyType_IsSubtype)(int)((PY_PyTypeObject *)(PY_PyTypeObject *))) \
126 ((PyType_Ready)(int)((PY_PyTypeObject *))) \
127 ((PyErr_Occurred)(PY_PyObject *)()) \
128 ((PyErr_ExceptionMatches)(int)((PY_PyObject *))) \
129 ((PyErr_Fetch)(void)((PY_PyObject **)(PY_PyObject **)(PY_PyObject **))) \
130 ((PyErr_Clear)(void)()) \
131 ((PyErr_NormalizeException)(void) \
132 ((PY_PyObject **)(PY_PyObject **)(PY_PyObject **))) \
133 ((PyErr_Print)(void)()) \
134 ((PyErr_SetInterrupt)(void)()) \
135 ((PyErr_SetString)(void)((PY_PyObject *)(const char *))) \
136 ((PyErr_SetNone)(void)((PY_PyObject *))) \
137 ((PyErr_SetObject)(void)((PY_PyObject *)(PY_PyObject *))) \
138 ((PyErr_CheckSignals)(int)()) \
139 ((PyLong_FromLongLong)(PY_PyObject *)((int64))) \
140 ((PyLong_FromLong)(PY_PyObject *)((long))) \
141 ((PyLong_AsLong)(long)((PY_PyObject *))) \
142 ((PyLong_AsLongLong)(int64)((PY_PyObject *))) \
143 ((PyLong_AsVoidPtr)(void*)((PY_PyObject *))) \
144 ((PyFloat_AsDouble)(double)((PY_PyObject *))) \
145 ((PyFloat_FromDouble)(PY_PyObject *)((double))) \
146 ((PySequence_Check)(int)((PY_PyObject *))) \
147 ((PySequence_Size)(PY_Py_ssize_t)((PY_PyObject *))) \
148 ((PySequence_GetItem)(PY_PyObject *)((PY_PyObject *)(PY_Py_ssize_t))) \
149 ((PySequence_GetSlice)(PY_PyObject *) \
150 ((PY_PyObject *)(PY_Py_ssize_t)(PY_Py_ssize_t))) \
151 ((PyList_New)(PY_PyObject *)((PY_Py_ssize_t))) \
152 ((PyList_Size)(PY_Py_ssize_t)((PY_PyObject *))) \
153 ((PyList_GetItem)(PY_PyObject *)((PY_PyObject *)(PY_Py_ssize_t))) \
154 ((PyList_SetItem)(int)((PY_PyObject *)(PY_Py_ssize_t)(PY_PyObject *))) \
155 ((PyList_Append)(int)((PY_PyObject *)(PY_PyObject *))) \
156 ((PyTuple_New)(PY_PyObject *)((PY_Py_ssize_t))) \
157 ((PyTuple_SetItem)(int)((PY_PyObject *)(PY_Py_ssize_t)(PY_PyObject *))) \
158 ((PyTuple_Size)(PY_Py_ssize_t)((PY_PyObject *))) \
159 ((PyDict_Copy)(PY_PyObject *)((PY_PyObject *))) \
160 ((PyDict_New)(PY_PyObject *)()) \
161 ((PyDict_Clear)(void)((PY_PyObject *))) \
162 ((PyDict_Next)(int) \
163 ((PY_PyObject *)(PY_Py_ssize_t *)(PY_PyObject **)(PY_PyObject **))) \
164 ((PyDict_GetItem)(PY_PyObject *)((PY_PyObject *)(PY_PyObject *))) \
165 ((PyDict_GetItemString)(PY_PyObject *)((PY_PyObject *)(const char *))) \
166 ((PyDict_SetItemString)(int) \
167 ((PY_PyObject *)(const char *)(PY_PyObject *))) \
168 ((PyDict_SetItem)(int)((PY_PyObject *)(PY_PyObject *)(PY_PyObject *))) \
169 ((PyDict_DelItemString)(PY_PyObject *)((PY_PyObject *)(const char *))) \
170 ((PyDict_Merge)(int)((PY_PyObject *)(PY_PyObject *)(int))) \
171 ((PyDict_Size)(int)((PY_PyObject *))) \
172 ((PyIter_Next)(PY_PyObject *)((PY_PyObject *))) \
173 ((PyFunction_GetCode)(PY_PyObject *)((PY_PyObject *))) \
174 ((PyCallable_Check)(int)((PY_PyObject *))) \
175 ((PyImport_ImportModule)(PY_PyObject *)((const char *))) \
176 ((PyImport_ExecCodeModule)(PY_PyObject *)((char *)(PY_PyObject *))) \
177 ((PyImport_AddModule)(PY_PyObject *)((const char *))) \
178 ((PyImport_GetMagicNumber)(long)()) \
179 ((PyModule_GetDict)(PY_PyObject *)((PY_PyObject *))) \
180 ((PyModule_AddObject)(int)((PY_PyObject *)(const char *)(PY_PyObject *))) \
181 PY_FUNC_SEQ_PySys_SetArgv \
182 PY_FUNC_SEQ_PySys_SetArgvEx \
183 ((PySys_GetObject)(PY_PyObject *)((char *))) \
184 ((PyMarshal_ReadObjectFromString)(PY_PyObject *)((char *)(PY_Py_ssize_t))) \
185 ((PyMarshal_WriteObjectToString)(PY_PyObject *)((PY_PyObject *)(int))) \
186 ((PyRun_InteractiveLoopFlags)(int) \
187 ((FILE *)(const char *)(PY_PyCompilerFlags *))) \
190 #define PY_FUNC_PYSYS_ADDWARNOPTION \
191 ((PySys_AddWarnOption)(void)((const wchar_t *)))
200 #define PY_WRAPPED_UNCHECKED_FUNCTIONS \
201 ((PyConfig_InitPythonConfig)(void)((PY_PyConfig *))) \
202 ((PyConfig_SetArgv)(PY_PyStatus)((PY_PyConfig *)(int)(wchar_t *const *))) \
203 ((PyConfig_SetBytesArgv)(PY_PyStatus)((PY_PyConfig *)(int)(char *const *))) \
204 ((Py_ExitStatusException)(void)((PY_PyStatus))) \
205 ((Py_InitializeEx)(void)((int))) \
206 ((Py_InitializeFromConfig)(PY_PyStatus)((const PY_PyConfig *))) \
207 ((Py_IsInitialized)(int)()) \
208 ((Py_PreInitialize)(PY_PyStatus)((const PY_PyPreConfig *))) \
209 ((Py_PreInitializeFromArgs)(PY_PyStatus)((const PY_PyPreConfig *)(PY_Py_ssize_t)(wchar_t * const *))) \
210 ((Py_PreInitializeFromBytesArgs)(PY_PyStatus)((const PY_PyPreConfig *)(PY_Py_ssize_t)(char * const *))) \
211 ((Py_SetProgramName)(void)((char*))) \
212 ((Py_SetPythonHome)(void)((char*))) \
213 ((PyEval_InitThreads)(void)()) \
214 ((PyEval_RestoreThread)(void)((PY_PyThreadState *))) \
215 ((PyEval_SaveThread)(PY_PyThreadState *)()) \
216 ((PyGILState_Ensure)(PY_PyGILState_STATE)()) \
217 ((PyGILState_GetThisThreadState)(PY_PyThreadState *)()) \
218 PY_FUNC_PYSYS_ADDWARNOPTION \
219 ((PyPreConfig_InitPythonConfig)(void)((PY_PyPreConfig *))) \
220 ((PyStatus_Exception)(int)((PY_PyStatus))) \
224 #define PY_WRAPPED_MEMORY_FUNCTIONS \
225 ((PyMem_Malloc)(void *)((size_t))) \
226 ((PyMem_Free)(void)((void *))) \
232 typedef char *(*PY_PyOS_ReadlineFunctionPointerType)
233 (FILE *, FILE *,
const char *);
234 #define PY_WRAPPED_CONSTANTS \
235 ((_Py_NoneStruct)(PY_PyObject)) \
236 ((_PyOS_ReadlineTState)(PY_PyThreadState *)) \
237 ((PyOS_ReadlineFunctionPointer)(PY_PyOS_ReadlineFunctionPointerType)) \
238 ((PyExc_RuntimeError)(PY_PyObject *)) \
239 ((PyExc_IndexError)(PY_PyObject *)) \
240 ((PyExc_AttributeError)(PY_PyObject *)) \
241 ((PyExc_TypeError)(PY_PyObject *)) \
242 ((PyExc_KeyboardInterrupt)(PY_PyObject *)) \
243 ((PyExc_SystemExit)(PY_PyObject *)) \
244 ((PyExc_BaseException)(PY_PyObject *)) \
245 ((PyLong_Type)(PY_PyTypeObject)) \
246 ((PyBool_Type)(PY_PyTypeObject)) \
247 ((PyFloat_Type)(PY_PyTypeObject)) \
248 ((PyUnicode_Type)(PY_PyTypeObject)) \
249 ((PyTuple_Type)(PY_PyTypeObject)) \
250 ((PyList_Type)(PY_PyTypeObject)) \
251 ((PyDict_Type)(PY_PyTypeObject)) \
252 ((PyFunction_Type)(PY_PyTypeObject))
275 #define PY_FOR_EACH_SEQ_OF_2(macro, seq) \
276 HBOOST_PP_SEQ_FOR_EACH(PY_CALLBACK_SEQ_OF_2, macro, seq)
280 #define PY_CALLBACK_SEQ_OF_2(r, macro, seq) \
281 macro(PY_SEQ_ELEM_0(seq), PY_SEQ_ELEM_1(seq))
286 #define PY_FOR_EACH_SEQ_OF_3(macro, seq) \
287 HBOOST_PP_SEQ_FOR_EACH(PY_CALLBACK_SEQ_OF_3, macro, seq)
288 #define PY_CALLBACK_SEQ_OF_3(r, macro, seq) \
289 macro(PY_SEQ_ELEM_0(seq), PY_SEQ_ELEM_1(seq), PY_SEQ_ELEM_2(seq))
294 #define PY_SEQ_ELEM_0(seq) \
295 HBOOST_PP_SEQ_HEAD(seq)
296 #define PY_SEQ_ELEM_1(seq) \
297 HBOOST_PP_SEQ_HEAD(HBOOST_PP_SEQ_TAIL(seq))
298 #define PY_SEQ_ELEM_2(seq) \
299 HBOOST_PP_SEQ_HEAD(HBOOST_PP_SEQ_TAIL(HBOOST_PP_SEQ_TAIL(seq)))
306 #define PY_MAKE_PARM_LIST(parm_types) \
307 HBOOST_PP_SEQ_FOR_EACH_I(PY_MAKE_PARM, _, parm_types)
313 #define PY_MAKE_PARM(r, unused_data, i, elem) \
314 HBOOST_PP_COMMA_IF(i) elem HBOOST_PP_CAT(arg, i)
321 #define PY_MAKE_ARG_LIST(parm_types) \
322 HBOOST_PP_SEQ_FOR_EACH_I(PY_MAKE_ARG, _, parm_types)
324 #define PY_MAKE_ARG(r, unused_data, i, unused_elem) \
325 HBOOST_PP_COMMA_IF(i) HBOOST_PP_CAT(arg, i)
346 #if SIZEOF_VOID_P == 8
363 template <
typename RETURN_TYPE>
364 static inline RETURN_TYPE &
365 pyAccessStructMember(
void *c_struct,
int offset)
366 {
return *(RETURN_TYPE *)((
char *)c_struct +
offset); }
396 #define PY_ADD_SUBCLASS_1(subclass, base_class, member1_type, member1_name) \
397 class PY_API subclass : public base_class \
400 member1_type member1_name() \
401 { return pyAccessStructMember<member1_type>( \
402 this, base_class::theStructSize); } \
404 static void computeStructSize() \
405 { theStructSize = base_class::theStructSize + sizeof(member1_type); } \
407 static int theStructSize; \
411 #define PY_ADD_SUBCLASS_2(subclass, base_class, \
412 member1_type, member1_name, member2_type, member2_name) \
413 class PY_API subclass : public base_class \
416 member1_type member1_name() \
417 { return pyAccessStructMember<member1_type>( \
418 this, base_class::theStructSize); } \
420 member2_type member2_name() \
421 { return pyAccessStructMember<member2_type>( \
422 this, base_class::theStructSize + sizeof(member1_type)); } \
424 static void computeStructSize() \
425 { theStructSize = base_class::theStructSize + \
426 sizeof(member1_type) + sizeof(member2_type); } \
428 static int theStructSize; \
474 const
char *, tp_name)
477 PY_PyFrameObject *,
f_back,
481 PY_PyObject **, ob_item)
487 class PY_API PY_PyTupleObject : public PY_PyVarObject
490 PY_PyObject **ob_item()
491 {
return (PY_PyObject **)((
char *)
this + PY_PyVarObject::theStructSize); }
539 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
543 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 11
544 int code_debug_ranges;
548 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 11
549 wchar_t *dump_refs_file;
576 int legacy_windows_stdio;
579 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 11
580 int use_frozen_modules;
583 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
584 int int_max_str_digits;
587 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
588 #if defined(Py_GIL_DISABLED)
603 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 11
620 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
634 #if PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION < 13
637 int _isolated_interpreter;
640 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 11
642 int _is_python_build;
645 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 13
647 #if defined(Py_STATS)
652 #if defined(Py_DEBUG)
655 wchar_t *run_presite;
658 #endif // Python >= 3.13 check.
672 int legacy_windows_fs_encoding;
683 _PyStatus_TYPE_ERROR=1,
684 _PyStatus_TYPE_EXIT=2
695 #define PY_DECLARE_FUNCTION_FROM_SEQ(seq) \
696 PY_CALLBACK_SEQ_OF_3(_, PY_DECLARE_FUNCTION, seq)
700 #define PY_DECLARE_FUNCTION(function_name, return_type, parm_types) \
701 PY_API return_type HBOOST_PP_CAT(PY_, function_name)( \
702 PY_MAKE_PARM_LIST(parm_types));
706 #define PY_DECLARE_WRAPPED_CONSTANT(constant_name, type) \
707 PY_API type &HBOOST_PP_CAT(PY_, constant_name)();
730 PY_PyObject *o, const
char *name, const
char *format, ...);
733 #define PY_FUNC_SEQ_PyInt_AsLong (PyInt_AsLong)(long)((PY_PyObject *))
734 #define PY_FUNC_SEQ_PyInt_FromLong (PyInt_FromLong)(PY_PyObject *)((long))
735 #define PY_FUNC_SEQ_PyString_AsString \
736 (PyString_AsString)(char *)((PY_PyObject *))
737 #define PY_FUNC_SEQ_PyString_AsStringAndSize \
738 (PyString_AsStringAndSize)(int)((PY_PyObject *)(char **)(PY_Py_ssize_t *))
739 #define PY_FUNC_SEQ_PyString_FromString \
740 (PyString_FromString)(PY_PyObject *)((const char *))
741 #define PY_FUNC_SEQ_PyString_FromStringAndSize \
742 (PyString_FromStringAndSize)(PY_PyObject *)((const char *)(PY_Py_ssize_t))
743 #define PY_FUNC_SEQ_PyString_AsUTF8String \
744 (PyString_AsUTF8String)(PY_PyObject *)((PY_PyObject *))
745 #define PY_FUNC_SEQ_PyBytes_AsStringAndSize \
746 (PyBytes_AsStringAndSize)(int) \
747 ((PY_PyObject *)(char **)(PY_Py_ssize_t *))
748 #define PY_FUNC_SEQ_PyCObject_GetDesc \
749 (PyCObject_GetDesc)(void*)((PY_PyObject *))
750 #define PY_FUNC_SEQ_PyCObject_AsVoidPtr \
751 (PyCObject_AsVoidPtr)(void*)((PY_PyObject *))
752 #define PY_FUNC_SEQ_Py_DecodeLocale \
753 (Py_DecodeLocale)(wchar_t *)((const char *)(size_t *))
754 #define PY_FUNC_SEQ_PyMem_RawFree \
755 (PyMem_RawFree)(void)((void *))
756 #define PY_FUNC_SEQ_PyMem_RawMalloc \
757 (PyMem_RawMalloc)(void *)((size_t))
758 #define PY_FUNC_SEQ_PyModule_GetState \
759 (PyModule_GetState)(void *)((PY_PyObject *))
760 #define PY_FUNC_SEQ_PyOS_InitInterrupts \
761 (PyOS_InitInterrupts)(void)() \
785 static inline
int PY_Py_single_input() {
return 256; }
786 static inline int PY_Py_file_input() {
return 257; }
787 static inline int PY_Py_eval_input() {
return 258; }
788 static inline int PY_Py_MARSHAL_VERSION() {
return 2; }
789 static inline int PY_METH_VARARGS() {
return 0x0001; }
790 static inline int PY_Py_EQ() {
return 2; }
791 static inline int PY_PyGILState_LOCKED() {
return 0; }
792 static inline int PY_PyGILState_UNLOCKED() {
return 1; }
803 PY_DECLARE_WRAPPED_CONSTANT(_Py_FalseStruct,
PY_PyObject)
804 PY_DECLARE_WRAPPED_CONSTANT(_Py_ZeroStruct,
PY_PyObject)
812 PY_DECLARE_WRAPPED_CONSTANT(Py_TabcheckFlag,
int)
814 #define PY_PyInt_Check(op) PY_PyObject_TypeCheck(op, &PY_PyInt_Type())
815 #define PY_PyString_Check(op) PY_PyObject_TypeCheck(op, &PY_PyString_Type())
821 #define PY_Py_INCREF PY_Py_IncRef
822 #define PY_Py_DECREF PY_Py_DecRef
823 #define PY_Py_XDECREF(op) if ((op) == NULL) ; else PY_Py_DECREF(op)
825 #define PY_Py_False() (&PY__Py_ZeroStruct())
826 #define PY_Py_True() (&PY__Py_TrueStruct())
827 #define PY_Py_None() (&PY__Py_NoneStruct())
829 #define PY_Py_RETURN_NONE return PY_Py_INCREF(PY_Py_None()), PY_Py_None()
830 #define PY_PyMODINIT_FUNC extern "C" SYS_VISIBILITY_EXPORT PY_PyObject*
832 #define PY_PyRun_SimpleString(s) PY_PyRun_SimpleStringFlags(s, NULL)
833 #define PY_Py_CompileString(str, p, s) PY_Py_CompileStringFlags(str, p, s, NULL)
834 #define PY_PyRun_InteractiveLoop(f, p) PY_PyRun_InteractiveLoopFlags(f, p, NULL)
836 #define PY_PyList_SET_ITEM(op, i, v) \
837 (((PY_PyListObject *)(op))->ob_item()[i] = (v))
838 #define PY_PyTuple_SET_ITEM(op, i, v) \
839 (((PY_PyTupleObject *)(op))->ob_item()[i] = (v))
841 #define PY_PyList_GET_ITEM(op, i, v) \
842 (((PY_PyListObject *)(op))->ob_item()[i])
843 #define PY_PyTuple_GET_ITEM(op, i) \
844 (((PY_PyTupleObject *)(op))->ob_item()[i])
847 #define PY_PyObject_TypeCheck(ob, tp) \
848 ((ob)->ob_type() == (tp) || PY_PyType_IsSubtype((ob)->ob_type(), (tp)))
849 #define PY_PyCObject_Check(op) (op->ob_type() == &PY_PyCObject_Type())
850 #define PY_PyFloat_Check(op) PY_PyObject_TypeCheck(op, &PY_PyFloat_Type())
851 #define PY_PyLong_Check(op) PY_PyObject_TypeCheck(op, &PY_PyLong_Type())
852 #define PY_PyBool_Check(op) PY_PyObject_TypeCheck(op, &PY_PyBool_Type())
853 #define PY_PyUnicode_Check(op) PY_PyObject_TypeCheck(op, &PY_PyUnicode_Type())
854 #define PY_PyTuple_Check(op) PY_PyObject_TypeCheck(op, &PY_PyTuple_Type())
855 #define PY_PyList_Check(op) PY_PyObject_TypeCheck(op, &PY_PyList_Type())
856 #define PY_PyDict_Check(op) PY_PyObject_TypeCheck(op, &PY_PyDict_Type())
857 #define PY_PyFunction_Check(op) ((op)->ob_type() == &PY_PyFunction_Type())
858 #define PY_PyBytes_Check(op) ((op)->ob_type() == &PY_PyBytes_Type())
864 #define PY_PyExceptionInstance_Check(op) \
865 PY_PyObject_TypeCheck(op, (PY_PyTypeObject *)&PY_PyExc_BaseException())
871 #define PY_PYFRAME_BACK(op) ((op)->f_back())
872 #define PY_PYFRAME_CODE(op) ((op)->f_code())
#define PY_FUNC_SEQ_PyMem_RawFree
PY_PyWideStringList warnoptions
#define PY_FUNC_SEQ_PyString_AsString
#define PY_WRAPPED_FUNCTIONS
#define PY_FUNC_SEQ_PyString_FromStringAndSize
PY_API void PY_FreeWCharArgs(int argc, wchar_t **wargv)
wchar_t * filesystem_encoding
#define PY_FUNC_SEQ_PyOS_InitInterrupts
PY_PyObject *(* PY_PyCFunction)(PY_PyObject *, PY_PyObject *)
*get result *(waiting if necessary)*A common idiom is to fire a bunch of sub tasks at the and then *wait for them to all complete We provide a helper class
PY_API int PY_PyGILState_Check()
PY_API int PY_PyArg_ParseTuple(PY_PyObject *args, const char *format,...)
#define PY_FUNC_SEQ_Py_DecodeLocale
wchar_t * check_hash_pycs_mode
PY_API PY_PyObject * PY_Py_BuildValue(const char *format,...)
PY_API bool PYisHFSPythonLibraryLoaded()
#define PY_FOR_EACH_SEQ_OF_3(macro, seq)
PY_API int PYgetPythonVersion()
#define PY_FUNC_SEQ_PyCObject_AsVoidPtr
#define PY_FUNC_SEQ_PyCObject_GetDesc
PY_API int PYgetPythonMajorVersion()
class PY_API PY_PyCodeObject
#define PY_WRAPPED_MEMORY_FUNCTIONS
PY_API void PYgetHFSPythonSitePackagesPath(UT_WorkBuffer &site_packages_path)
#define PY_WRAPPED_CONSTANTS
#define PY_WRAPPED_UNCHECKED_FUNCTIONS
PY_PyWideStringList module_search_paths
#define PY_FUNC_SEQ_PyBytes_AsStringAndSize
PY_API wchar_t ** PY_AllocAndInitWCharArgs(int argc, char *argv[])
#define PY_FUNC_SEQ_PyInt_AsLong
wchar_t * base_executable
wchar_t * filesystem_errors
int skip_source_first_line
int warn_default_encoding
GLint GLint GLsizei GLint GLenum format
PY_API void PYloadPythonLibrary()
class PY_API PY_PyThreadState
class PY_API PY_PyTypeObject
#define PY_FUNC_SEQ_PyInt_FromLong
int module_search_paths_set
PY_API int PY__PyImport_ReleaseLock()
#define PY_ADD_SUBCLASS_1(subclass, base_class, member1_type, member1_name)
GLuint const GLchar * name
class PY_API PY_PyCompilerFlags
#define PY_ADD_SUBCLASS_2(subclass, base_class, member1_type, member1_name, member2_type, member2_name)
#define PY_DECLARE_FUNCTION_FROM_SEQ(seq)
#define PY_DECLARE_WRAPPED_CONSTANT(constant_name, type)
PY_API int PYgetPythonMinorVersion()
#define PY_FOR_EACH_SEQ_OF_2(macro, seq)
PY_PyWideStringList xoptions
#define PY_FUNC_SEQ_PyString_AsStringAndSize
PY_Py_ssize_t PY_Py_hash_t
PY_API PY_PyObject * PY_PyObject_CallMethod(PY_PyObject *o, const char *name, const char *format,...)
#define PY_FUNC_SEQ_PyMem_RawMalloc
#define PY_FUNC_SEQ_PyModule_GetState
PY_API PY_PyObject * PY_Py_InitModule(const char *name, PY_PyMethodDef *methods)
#define PY_DECLARE_FUNCTION(function_name, return_type, parm_types)
wchar_t * base_exec_prefix
**If you just want to fire and args
#define PY_FUNC_SEQ_PyString_FromString
ob_size PY_PyFrameObject f_back
PY_PyWideStringList orig_argv
PY_API void PY__PyImport_AcquireLock()
#define PY_FUNC_SEQ_PyString_AsUTF8String
int install_signal_handlers