30 #ifndef GDALPYTHON_H_INCLUDED
31 #define GDALPYTHON_H_INCLUDED
36 bool GDALPythonInitialize();
38 void GDALPythonFinalize();
46 typedef struct _object PyObject;
47 typedef size_t Py_ssize_t;
49 extern int (*Py_IsInitialized)(void);
50 extern void (*Py_SetProgramName)(
const wchar_t *);
51 extern void (*Py_SetPythonHome)(
const wchar_t *);
52 extern PyObject *(*PyObject_Type)(PyObject *);
53 extern int (*PyObject_IsInstance)(PyObject *, PyObject *);
54 extern PyObject *(*PyTuple_New)(size_t);
55 extern PyObject *(*PyBool_FromLong)(long);
56 extern PyObject *(*PyLong_FromLong)(long);
57 extern long (*PyLong_AsLong)(PyObject *);
58 extern PyObject *(*PyLong_FromLongLong)(
GIntBig);
59 extern GIntBig (*PyLong_AsLongLong)(PyObject *);
60 extern PyObject *(*PyFloat_FromDouble)(double);
61 extern double (*PyFloat_AsDouble)(PyObject *);
62 extern PyObject *(*PyObject_Call)(PyObject *, PyObject *, PyObject *);
63 extern PyObject *(*PyObject_GetIter)(PyObject *);
64 extern PyObject *(*PyIter_Next)(PyObject *);
65 extern void (*Py_IncRef)(PyObject *);
66 extern void (*Py_DecRef)(PyObject *);
67 extern PyObject *(*PyErr_Occurred)(void);
68 extern void (*PyErr_Print)(void);
70 extern PyObject *(*Py_CompileString)(
const char *,
const char *, int);
71 extern PyObject *(*PyImport_ExecCodeModule)(
const char *, PyObject *);
72 extern int (*PyObject_HasAttrString)(PyObject *,
const char *);
73 extern PyObject *(*PyObject_GetAttrString)(PyObject *,
const char *);
74 extern int (*PyObject_SetAttrString)(PyObject *,
const char *, PyObject *);
75 extern int (*PyTuple_SetItem)(PyObject *, size_t, PyObject *);
76 extern void (*PyObject_Print)(PyObject *, FILE *, int);
78 extern Py_ssize_t (*PyBytes_Size)(PyObject *);
79 extern const char *(*PyBytes_AsString)(PyObject *);
80 extern PyObject *(*PyBytes_FromStringAndSize)(
const void *, size_t);
82 extern PyObject *(*PyUnicode_FromString)(
const char *);
83 extern PyObject *(*PyUnicode_AsUTF8String)(PyObject *);
84 extern PyObject *(*PyImport_ImportModule)(
const char *);
85 extern int (*PyCallable_Check)(PyObject *);
86 extern PyObject *(*PyDict_New)(void);
87 extern int (*PyDict_SetItemString)(PyObject *p,
const char *key, PyObject *val);
88 extern int (*PyDict_Next)(PyObject *p,
size_t *, PyObject **, PyObject **);
89 extern PyObject *(*PyDict_GetItemString)(PyObject *p,
const char *key);
90 extern PyObject *(*PyList_New)(Py_ssize_t);
91 extern int (*PyList_SetItem)(PyObject *, Py_ssize_t, PyObject *);
92 extern int (*PyArg_ParseTuple)(PyObject *,
const char *, ...);
94 extern int (*PySequence_Check)(PyObject *o);
95 extern Py_ssize_t (*PySequence_Size)(PyObject *o);
96 extern PyObject *(*PySequence_GetItem)(PyObject *o, Py_ssize_t i);
98 extern void (*PyErr_Fetch)(PyObject **poPyType, PyObject **poPyValue,
99 PyObject **poPyTraceback);
100 extern void (*PyErr_Clear)(void);
101 extern const char *(*Py_GetVersion)(void);
106 char big_enough[256];
108 extern int (*PyBuffer_FillInfo)(Py_buffer *view, PyObject *obj,
void *buf,
109 size_t len,
int readonly,
int infoflags);
110 extern PyObject *(*PyMemoryView_FromBuffer)(Py_buffer *view);
112 typedef PyObject *(*PyCFunction)(PyObject *, PyObject *, PyObject *);
114 typedef struct PyMethodDef PyMethodDef;
118 PyCFunction
function;
122 extern PyObject *(*PyModule_Create2)(
struct PyModuleDef *, int);
124 #define PYTHON_API_VERSION 1013
127 #define METH_VARARGS 0x0001
128 #define METH_KEYWORDS 0x0002
130 #define _PyObject_HEAD_EXTRA
134 _PyObject_HEAD_EXTRA Py_ssize_t ob_refcnt;
138 #define PyObject_HEAD PyObject ob_base;
140 #define _PyObject_EXTRA_INIT
142 #define PyObject_HEAD_INIT(type) {_PyObject_EXTRA_INIT 1, type},
144 #define PyModuleDef_HEAD_INIT \
146 PyObject_HEAD_INIT(nullptr) nullptr, \
151 typedef struct PyModuleDef_Base
153 PyObject_HEAD PyObject *(*m_init)(void);
158 typedef void *traverseproc;
159 typedef void *inquiry;
160 typedef void *freefunc;
162 typedef struct PyModuleDef
164 PyModuleDef_Base m_base;
168 const PyMethodDef *m_methods;
169 struct PyModuleDef_Slot *m_slots;
170 traverseproc m_traverse;
175 #define Py_file_input 257
177 typedef int PyGILState_STATE;
180 bool m_bExclusiveLock;
181 PyGILState_STATE m_eState = 0;
184 explicit GIL_Holder(
bool bExclusiveLock);
185 virtual ~GIL_Holder();
188 CPLString GetString(PyObject *obj,
bool bEmitError =
true);
190 bool ErrOccurredEmitCPLError();