14#ifndef GDALPYTHON_H_INCLUDED
15#define GDALPYTHON_H_INCLUDED
20bool GDALPythonInitialize();
22void GDALPythonFinalize();
30typedef struct _object PyObject;
31typedef size_t Py_ssize_t;
33extern int (*Py_IsInitialized)(void);
34extern void (*Py_SetProgramName)(
const wchar_t *);
35extern void (*Py_SetPythonHome)(
const wchar_t *);
36extern PyObject *(*PyObject_Type)(PyObject *);
37extern int (*PyObject_IsInstance)(PyObject *, PyObject *);
38extern PyObject *(*PyTuple_New)(size_t);
39extern PyObject *(*PyBool_FromLong)(long);
40extern PyObject *(*PyLong_FromLong)(long);
41extern long (*PyLong_AsLong)(PyObject *);
42extern PyObject *(*PyLong_FromLongLong)(
GIntBig);
43extern GIntBig (*PyLong_AsLongLong)(PyObject *);
44extern PyObject *(*PyFloat_FromDouble)(double);
45extern double (*PyFloat_AsDouble)(PyObject *);
46extern PyObject *(*PyObject_Call)(PyObject *, PyObject *, PyObject *);
47extern PyObject *(*PyObject_GetIter)(PyObject *);
48extern PyObject *(*PyIter_Next)(PyObject *);
49extern void (*Py_IncRef)(PyObject *);
50extern void (*Py_DecRef)(PyObject *);
51extern PyObject *(*PyErr_Occurred)(void);
52extern void (*PyErr_Print)(void);
54extern PyObject *(*Py_CompileString)(
const char *,
const char *, int);
55extern PyObject *(*PyImport_ExecCodeModule)(
const char *, PyObject *);
56extern int (*PyObject_HasAttrString)(PyObject *,
const char *);
57extern PyObject *(*PyObject_GetAttrString)(PyObject *,
const char *);
58extern int (*PyObject_SetAttrString)(PyObject *,
const char *, PyObject *);
59extern int (*PyTuple_SetItem)(PyObject *, size_t, PyObject *);
60extern void (*PyObject_Print)(PyObject *, FILE *, int);
62extern Py_ssize_t (*PyBytes_Size)(PyObject *);
63extern const char *(*PyBytes_AsString)(PyObject *);
64extern int *(*PyBytes_AsStringAndSize)(PyObject *,
char **, Py_ssize_t *);
65extern PyObject *(*PyBytes_FromObject)(PyObject *);
66extern PyObject *(*PyBytes_FromStringAndSize)(
const void *, size_t);
68extern PyObject *(*PyUnicode_FromString)(
const char *);
69extern PyObject *(*PyUnicode_AsUTF8String)(PyObject *);
70extern PyObject *(*PyImport_ImportModule)(
const char *);
71extern int (*PyCallable_Check)(PyObject *);
72extern PyObject *(*PyDict_New)(void);
73extern int (*PyDict_SetItemString)(PyObject *p,
const char *key, PyObject *val);
74extern int (*PyDict_Next)(PyObject *p,
size_t *, PyObject **, PyObject **);
75extern PyObject *(*PyDict_GetItemString)(PyObject *p,
const char *key);
76extern PyObject *(*PyList_New)(Py_ssize_t);
77extern int (*PyList_SetItem)(PyObject *, Py_ssize_t, PyObject *);
78extern int (*PyArg_ParseTuple)(PyObject *,
const char *, ...);
80extern int (*PySequence_Check)(PyObject *o);
81extern Py_ssize_t (*PySequence_Size)(PyObject *o);
82extern PyObject *(*PySequence_GetItem)(PyObject *o, Py_ssize_t i);
84extern void (*PyErr_Fetch)(PyObject **poPyType, PyObject **poPyValue,
85 PyObject **poPyTraceback);
86extern void (*PyErr_Clear)(void);
87extern const char *(*Py_GetVersion)(void);
95extern int (*PyBuffer_FillInfo)(Py_buffer *view, PyObject *obj,
void *buf,
96 size_t len,
int readonly,
int infoflags);
97extern PyObject *(*PyMemoryView_FromBuffer)(Py_buffer *view);
99typedef PyObject *(*PyCFunction)(PyObject *, PyObject *, PyObject *);
101typedef struct PyMethodDef PyMethodDef;
106 PyCFunction function;
111extern PyObject *(*PyModule_Create2)(
struct PyModuleDef *, int);
113#define PYTHON_API_VERSION 1013
116#define METH_VARARGS 0x0001
117#define METH_KEYWORDS 0x0002
119#define _PyObject_HEAD_EXTRA
123 _PyObject_HEAD_EXTRA Py_ssize_t ob_refcnt;
127#define PyObject_HEAD PyObject ob_base;
129#define _PyObject_EXTRA_INIT
131#define PyObject_HEAD_INIT(type) {_PyObject_EXTRA_INIT 1, type},
133#define PyModuleDef_HEAD_INIT \
135 PyObject_HEAD_INIT(nullptr) nullptr, \
140typedef struct PyModuleDef_Base
142 PyObject_HEAD PyObject *(*m_init)(void);
147typedef void *traverseproc;
148typedef void *inquiry;
149typedef void *freefunc;
151typedef struct PyModuleDef
153 PyModuleDef_Base m_base;
157 const PyMethodDef *m_methods;
158 struct PyModuleDef_Slot *m_slots;
159 traverseproc m_traverse;
164#define Py_file_input 257
166typedef int PyGILState_STATE;
170 bool m_bExclusiveLock;
171 PyGILState_STATE m_eState = 0;
174 explicit GIL_Holder(
bool bExclusiveLock);
175 virtual ~GIL_Holder();
178CPLString GetString(PyObject *obj,
bool bEmitError =
true);
180bool ErrOccurredEmitCPLError();
Convenient string class based on std::string.
Definition: cpl_string.h:307
long long GIntBig
Large signed integer type (generally 64-bit integer type).
Definition: cpl_port.h:199
Various convenience functions for working with strings and string lists.