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 ((_PyImport_AcquireLock)(void)()) \
91 ((_PyImport_ReleaseLock)(int)()) \
92 ((_Py_VaBuildValue_SizeT)(PY_PyObject *)((const char *)(va_list))) \
93 ((Py_AtExit)(int)((PY_AtExitFunc))) \
94 ((PyGILState_Release)(void)((PY_PyGILState_STATE))) \
95 ((PyRun_SimpleStringFlags)(int)((const char *)(PY_PyCompilerFlags *))) \
96 ((Py_CompileStringFlags)(PY_PyObject *) \
97 ((const char *)(const char *)(int)(PY_PyCompilerFlags *))) \
98 ((PyCFunction_NewEx)(PY_PyObject *) \
99 ((PY_PyMethodDef *)(PY_PyObject *)(PY_PyObject *))) \
100 ((PyConfig_Clear)(void)((PY_PyConfig *))) \
101 ((PyConfig_InitPythonConfig)(void)((PY_PyConfig *))) \
102 ((PyConfig_SetArgv)(PY_PyStatus)((PY_PyConfig *)(PY_Py_ssize_t)(wchar_t *const *))) \
103 ((PyEval_CallObjectWithKeywords)(PY_PyObject *) \
104 ((PY_PyObject *)(PY_PyObject *)(PY_PyObject *))) \
105 ((PyEval_GetFrame)(PY_PyFrameObject *)()) \
106 ((PyEval_EvalCode)(PY_PyObject *) \
107 ((PY_PyCodeObject *)(PY_PyObject *)(PY_PyObject *))) \
108 ((PyThread_get_thread_ident)(long)()) \
109 ((PyThreadState_SetAsyncExc)(int)((long)(PY_PyObject *))) \
110 PY_FUNC_SEQ_Py_Main \
111 ((Py_RunMain)(int)()) \
112 ((Py_IncRef)(void)((PY_PyObject *))) \
113 ((Py_InitializeFromConfig)(PY_PyStatus)((const PY_PyConfig *))) \
114 ((Py_DecRef)(void)((PY_PyObject *))) \
115 ((PyObject_GetAttr)(PY_PyObject *)((PY_PyObject *)(PY_PyObject *))) \
116 ((PyObject_GetAttrString)(PY_PyObject *)((PY_PyObject *)(const char *))) \
117 ((PyObject_SetAttr)(int)((PY_PyObject *)(PY_PyObject *)(PY_PyObject *))) \
118 ((PyObject_Repr)(PY_PyObject *)((PY_PyObject*))) \
119 ((PyObject_Str)(PY_PyObject *)((PY_PyObject *))) \
120 ((PyObject_IsTrue)(int)((PY_PyObject *))) \
121 ((PyObject_CallObject)(PY_PyObject *)((PY_PyObject *)(PY_PyObject *))) \
122 ((PyObject_Call)(PY_PyObject *) \
123 ((PY_PyObject *)(PY_PyObject *)(PY_PyObject *))) \
124 ((PyObject_GetIter)(PY_PyObject *)((PY_PyObject *))) \
125 ((PyObject_RichCompareBool)(int)((PY_PyObject *)(PY_PyObject *)(int))) \
126 ((PyObject_Print)(int)((PY_PyObject *)(FILE *)(int))) \
127 ((PyObject_Hash)(PY_Py_hash_t)((PY_PyObject *))) \
128 ((Py_VaBuildValue)(PY_PyObject *)((const char *)(va_list))) \
129 ((PyArg_VaParse)(int)((PY_PyObject *)(const char *)(va_list))) \
130 ((PyType_IsSubtype)(int)((PY_PyTypeObject *)(PY_PyTypeObject *))) \
131 ((PyType_Ready)(int)((PY_PyTypeObject *))) \
132 ((PyErr_Occurred)(PY_PyObject *)()) \
133 ((PyErr_ExceptionMatches)(int)((PY_PyObject *))) \
134 ((PyErr_Fetch)(void)((PY_PyObject **)(PY_PyObject **)(PY_PyObject **))) \
135 ((PyErr_Clear)(void)()) \
136 ((PyErr_NormalizeException)(void) \
137 ((PY_PyObject **)(PY_PyObject **)(PY_PyObject **))) \
138 ((PyErr_Print)(void)()) \
139 ((PyErr_SetInterrupt)(void)()) \
140 ((PyErr_SetString)(void)((PY_PyObject *)(const char *))) \
141 ((PyErr_SetNone)(void)((PY_PyObject *))) \
142 ((PyErr_SetObject)(void)((PY_PyObject *)(PY_PyObject *))) \
143 ((PyErr_CheckSignals)(int)()) \
144 ((PyLong_FromLongLong)(PY_PyObject *)((int64))) \
145 ((PyLong_FromLong)(PY_PyObject *)((long))) \
146 ((PyLong_AsLong)(long)((PY_PyObject *))) \
147 ((PyLong_AsLongLong)(int64)((PY_PyObject *))) \
148 ((PyLong_AsVoidPtr)(void*)((PY_PyObject *))) \
149 ((PyFloat_AsDouble)(double)((PY_PyObject *))) \
150 ((PyFloat_FromDouble)(PY_PyObject *)((double))) \
151 ((PySequence_Check)(int)((PY_PyObject *))) \
152 ((PySequence_Size)(PY_Py_ssize_t)((PY_PyObject *))) \
153 ((PySequence_GetItem)(PY_PyObject *)((PY_PyObject *)(PY_Py_ssize_t))) \
154 ((PySequence_GetSlice)(PY_PyObject *) \
155 ((PY_PyObject *)(PY_Py_ssize_t)(PY_Py_ssize_t))) \
156 ((PyList_New)(PY_PyObject *)((PY_Py_ssize_t))) \
157 ((PyList_Size)(PY_Py_ssize_t)((PY_PyObject *))) \
158 ((PyList_GetItem)(PY_PyObject *)((PY_PyObject *)(PY_Py_ssize_t))) \
159 ((PyList_SetItem)(int)((PY_PyObject *)(PY_Py_ssize_t)(PY_PyObject *))) \
160 ((PyList_Append)(int)((PY_PyObject *)(PY_PyObject *))) \
161 ((PyTuple_New)(PY_PyObject *)((PY_Py_ssize_t))) \
162 ((PyTuple_SetItem)(int)((PY_PyObject *)(PY_Py_ssize_t)(PY_PyObject *))) \
163 ((PyTuple_Size)(PY_Py_ssize_t)((PY_PyObject *))) \
164 ((PyDict_Copy)(PY_PyObject *)((PY_PyObject *))) \
165 ((PyDict_New)(PY_PyObject *)()) \
166 ((PyDict_Clear)(void)((PY_PyObject *))) \
167 ((PyDict_Next)(int) \
168 ((PY_PyObject *)(PY_Py_ssize_t *)(PY_PyObject **)(PY_PyObject **))) \
169 ((PyDict_GetItem)(PY_PyObject *)((PY_PyObject *)(PY_PyObject *))) \
170 ((PyDict_GetItemString)(PY_PyObject *)((PY_PyObject *)(const char *))) \
171 ((PyDict_SetItemString)(int) \
172 ((PY_PyObject *)(const char *)(PY_PyObject *))) \
173 ((PyDict_SetItem)(int)((PY_PyObject *)(PY_PyObject *)(PY_PyObject *))) \
174 ((PyDict_DelItemString)(PY_PyObject *)((PY_PyObject *)(const char *))) \
175 ((PyDict_Merge)(int)((PY_PyObject *)(PY_PyObject *)(int))) \
176 ((PyDict_Size)(int)((PY_PyObject *))) \
177 ((Py_ExitStatusException)(void)((PY_PyStatus))) \
178 ((PyIter_Next)(PY_PyObject *)((PY_PyObject *))) \
179 ((PyFunction_GetCode)(PY_PyObject *)((PY_PyObject *))) \
180 ((PyCallable_Check)(int)((PY_PyObject *))) \
181 ((PyImport_ImportModule)(PY_PyObject *)((const char *))) \
182 ((PyImport_ExecCodeModule)(PY_PyObject *)((char *)(PY_PyObject *))) \
183 ((PyImport_AddModule)(PY_PyObject *)((const char *))) \
184 ((PyImport_GetMagicNumber)(long)()) \
185 ((PyModule_GetDict)(PY_PyObject *)((PY_PyObject *))) \
186 ((PyModule_AddObject)(int)((PY_PyObject *)(const char *)(PY_PyObject *))) \
187 PY_FUNC_SEQ_PySys_SetArgv \
188 PY_FUNC_SEQ_PySys_SetArgvEx \
189 ((PySys_GetObject)(PY_PyObject *)((char *))) \
190 ((PyMarshal_ReadObjectFromString)(PY_PyObject *)((char *)(PY_Py_ssize_t))) \
191 ((PyMarshal_WriteObjectToString)(PY_PyObject *)((PY_PyObject *)(int))) \
192 ((PyPreConfig_InitPythonConfig)(void)((PY_PyPreConfig *))) \
193 ((Py_PreInitialize)(PY_PyStatus)((const PY_PyPreConfig *))) \
194 ((Py_PreInitializeFromArgs)(PY_PyStatus)((const PY_PyPreConfig *)(int)(wchar_t * const *))) \
195 ((PyRun_InteractiveLoopFlags)(int) \
196 ((FILE *)(const char *)(PY_PyCompilerFlags *))) \
197 ((PyStatus_Exception)(int)((PY_PyStatus))) \
200 #define PY_FUNC_PYSYS_ADDWARNOPTION \
201 ((PySys_AddWarnOption)(void)((const wchar_t *)))
210 #define PY_WRAPPED_UNCHECKED_FUNCTIONS \
211 ((Py_InitializeEx)(void)((int))) \
212 ((Py_IsInitialized)(int)()) \
213 ((Py_SetProgramName)(void)((char*))) \
214 ((Py_SetPythonHome)(void)((char*))) \
215 ((PyEval_InitThreads)(void)()) \
216 ((PyEval_RestoreThread)(void)((PY_PyThreadState *))) \
217 ((PyEval_SaveThread)(PY_PyThreadState *)()) \
218 ((PyGILState_Ensure)(PY_PyGILState_STATE)()) \
219 ((PyGILState_GetThisThreadState)(PY_PyThreadState *)()) \
220 PY_FUNC_PYSYS_ADDWARNOPTION \
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); }
540 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 11
541 int code_debug_ranges;
545 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 11
546 wchar_t *dump_refs_file;
573 int legacy_windows_stdio;
576 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 11
577 int use_frozen_modules;
591 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 11
620 #if PY_MAJOR_VERSION >= 3 && PY_MINOR_VERSION >= 11
622 int _is_python_build;
636 int legacy_windows_fs_encoding;
647 _PyStatus_TYPE_ERROR=1,
648 _PyStatus_TYPE_EXIT=2
659 #define PY_DECLARE_FUNCTION_FROM_SEQ(seq) \
660 PY_CALLBACK_SEQ_OF_3(_, PY_DECLARE_FUNCTION, seq)
664 #define PY_DECLARE_FUNCTION(function_name, return_type, parm_types) \
665 PY_API return_type HBOOST_PP_CAT(PY_, function_name)( \
666 PY_MAKE_PARM_LIST(parm_types));
670 #define PY_DECLARE_WRAPPED_CONSTANT(constant_name, type) \
671 PY_API type &HBOOST_PP_CAT(PY_, constant_name)();
694 PY_PyObject *o, const
char *name, const
char *format, ...);
697 #define PY_FUNC_SEQ_PyInt_AsLong (PyInt_AsLong)(long)((PY_PyObject *))
698 #define PY_FUNC_SEQ_PyInt_FromLong (PyInt_FromLong)(PY_PyObject *)((long))
699 #define PY_FUNC_SEQ_PyString_AsString \
700 (PyString_AsString)(char *)((PY_PyObject *))
701 #define PY_FUNC_SEQ_PyString_AsStringAndSize \
702 (PyString_AsStringAndSize)(int)((PY_PyObject *)(char **)(PY_Py_ssize_t *))
703 #define PY_FUNC_SEQ_PyString_FromString \
704 (PyString_FromString)(PY_PyObject *)((const char *))
705 #define PY_FUNC_SEQ_PyString_FromStringAndSize \
706 (PyString_FromStringAndSize)(PY_PyObject *)((const char *)(PY_Py_ssize_t))
707 #define PY_FUNC_SEQ_PyString_AsUTF8String \
708 (PyString_AsUTF8String)(PY_PyObject *)((PY_PyObject *))
709 #define PY_FUNC_SEQ_PyBytes_AsStringAndSize \
710 (PyBytes_AsStringAndSize)(int) \
711 ((PY_PyObject *)(char **)(PY_Py_ssize_t *))
712 #define PY_FUNC_SEQ_PyCObject_GetDesc \
713 (PyCObject_GetDesc)(void*)((PY_PyObject *))
714 #define PY_FUNC_SEQ_PyCObject_AsVoidPtr \
715 (PyCObject_AsVoidPtr)(void*)((PY_PyObject *))
716 #define PY_FUNC_SEQ_Py_DecodeLocale \
717 (Py_DecodeLocale)(wchar_t *)((const char *)(size_t *))
718 #define PY_FUNC_SEQ_PyMem_RawFree \
719 (PyMem_RawFree)(void)((void *))
720 #define PY_FUNC_SEQ_PyMem_RawMalloc \
721 (PyMem_RawMalloc)(void *)((size_t))
722 #define PY_FUNC_SEQ_PyModule_GetState \
723 (PyModule_GetState)(void *)((PY_PyObject *))
724 #define PY_FUNC_SEQ_PyOS_InitInterrupts \
725 (PyOS_InitInterrupts)(void)() \
749 static inline
int PY_Py_single_input() {
return 256; }
750 static inline int PY_Py_file_input() {
return 257; }
751 static inline int PY_Py_eval_input() {
return 258; }
752 static inline int PY_Py_MARSHAL_VERSION() {
return 2; }
753 static inline int PY_METH_VARARGS() {
return 0x0001; }
754 static inline int PY_Py_EQ() {
return 2; }
755 static inline int PY_PyGILState_LOCKED() {
return 0; }
756 static inline int PY_PyGILState_UNLOCKED() {
return 1; }
767 PY_DECLARE_WRAPPED_CONSTANT(_Py_FalseStruct,
PY_PyObject)
768 PY_DECLARE_WRAPPED_CONSTANT(_Py_ZeroStruct,
PY_PyObject)
776 PY_DECLARE_WRAPPED_CONSTANT(Py_TabcheckFlag,
int)
778 #define PY_PyInt_Check(op) PY_PyObject_TypeCheck(op, &PY_PyInt_Type())
779 #define PY_PyString_Check(op) PY_PyObject_TypeCheck(op, &PY_PyString_Type())
785 #define PY_Py_INCREF PY_Py_IncRef
786 #define PY_Py_DECREF PY_Py_DecRef
787 #define PY_Py_XDECREF(op) if ((op) == NULL) ; else PY_Py_DECREF(op)
789 #define PY_Py_False() (&PY__Py_ZeroStruct())
790 #define PY_Py_True() (&PY__Py_TrueStruct())
791 #define PY_Py_None() (&PY__Py_NoneStruct())
793 #define PY_Py_RETURN_NONE return PY_Py_INCREF(PY_Py_None()), PY_Py_None()
794 #define PY_PyMODINIT_FUNC extern "C" SYS_VISIBILITY_EXPORT void
796 #define PY_PyRun_SimpleString(s) PY_PyRun_SimpleStringFlags(s, NULL)
797 #define PY_Py_CompileString(str, p, s) PY_Py_CompileStringFlags(str, p, s, NULL)
798 #define PY_PyRun_InteractiveLoop(f, p) PY_PyRun_InteractiveLoopFlags(f, p, NULL)
800 #define PY_PyList_SET_ITEM(op, i, v) \
801 (((PY_PyListObject *)(op))->ob_item()[i] = (v))
802 #define PY_PyTuple_SET_ITEM(op, i, v) \
803 (((PY_PyTupleObject *)(op))->ob_item()[i] = (v))
805 #define PY_PyList_GET_ITEM(op, i, v) \
806 (((PY_PyListObject *)(op))->ob_item()[i])
807 #define PY_PyTuple_GET_ITEM(op, i) \
808 (((PY_PyTupleObject *)(op))->ob_item()[i])
811 #define PY_PyObject_TypeCheck(ob, tp) \
812 ((ob)->ob_type() == (tp) || PY_PyType_IsSubtype((ob)->ob_type(), (tp)))
813 #define PY_PyCObject_Check(op) (op->ob_type() == &PY_PyCObject_Type())
814 #define PY_PyFloat_Check(op) PY_PyObject_TypeCheck(op, &PY_PyFloat_Type())
815 #define PY_PyLong_Check(op) PY_PyObject_TypeCheck(op, &PY_PyLong_Type())
816 #define PY_PyBool_Check(op) PY_PyObject_TypeCheck(op, &PY_PyBool_Type())
817 #define PY_PyUnicode_Check(op) PY_PyObject_TypeCheck(op, &PY_PyUnicode_Type())
818 #define PY_PyTuple_Check(op) PY_PyObject_TypeCheck(op, &PY_PyTuple_Type())
819 #define PY_PyList_Check(op) PY_PyObject_TypeCheck(op, &PY_PyList_Type())
820 #define PY_PyDict_Check(op) PY_PyObject_TypeCheck(op, &PY_PyDict_Type())
821 #define PY_PyFunction_Check(op) ((op)->ob_type() == &PY_PyFunction_Type())
822 #define PY_PyBytes_Check(op) ((op)->ob_type() == &PY_PyBytes_Type())
828 #define PY_PyExceptionInstance_Check(op) \
829 PY_PyObject_TypeCheck(op, (PY_PyTypeObject *)&PY_PyExc_BaseException())
835 #define PY_PYFRAME_BACK(op) ((op)->f_back())
836 #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()
int _isolated_interpreter
#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
#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
#define PY_FUNC_SEQ_PyString_AsUTF8String
int install_signal_handlers