-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdotpython_abi3.h
More file actions
282 lines (256 loc) · 11 KB
/
Copy pathdotpython_abi3.h
File metadata and controls
282 lines (256 loc) · 11 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
#ifndef DOTPYTHON_ABI3_H
#define DOTPYTHON_ABI3_H
#include <stddef.h>
#include <stdint.h>
#ifdef _WIN32
#if defined(DOTPYTHON_ABI3_BUILD)
#define DP_ABI3_EXPORT __declspec(dllexport)
#else
#define DP_ABI3_EXPORT __declspec(dllimport)
#endif
#else
#define DP_ABI3_EXPORT __attribute__((visibility("default")))
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef intptr_t Py_ssize_t;
typedef intptr_t Py_hash_t;
typedef struct _typeobject PyTypeObject;
typedef struct _ts PyThreadState;
typedef int PyGILState_STATE;
typedef struct _object {
Py_ssize_t ob_refcnt;
PyTypeObject *ob_type;
} PyObject;
typedef PyObject *(*PyCFunction)(PyObject *, PyObject *);
typedef PyObject *(*PyCFunctionFast)(PyObject *, PyObject *const *, Py_ssize_t);
typedef PyObject *(*PyCFunctionWithKeywords)(PyObject *, PyObject *, PyObject *);
typedef PyObject
*(*PyCFunctionFastWithKeywords)(PyObject *, PyObject *const *, Py_ssize_t, PyObject *);
typedef PyObject
*(*PyCMethod)(PyObject *, PyTypeObject *, PyObject *const *, Py_ssize_t, PyObject *);
typedef PyObject *(*unaryfunc)(PyObject *);
typedef PyObject *(*binaryfunc)(PyObject *, PyObject *);
typedef int (*inquiry)(PyObject *);
typedef Py_ssize_t (*lenfunc)(PyObject *);
typedef PyObject *(*ssizeargfunc)(PyObject *, Py_ssize_t);
typedef int (*ssizeobjargproc)(PyObject *, Py_ssize_t, PyObject *);
typedef int (*objobjargproc)(PyObject *, PyObject *, PyObject *);
typedef void (*destructor)(PyObject *);
typedef PyObject *(*reprfunc)(PyObject *);
typedef Py_hash_t (*hashfunc)(PyObject *);
typedef PyObject *(*richcmpfunc)(PyObject *, PyObject *, int);
typedef PyObject *(*getiterfunc)(PyObject *);
typedef PyObject *(*iternextfunc)(PyObject *);
typedef PyObject *(*getattrofunc)(PyObject *, PyObject *);
typedef int (*setattrofunc)(PyObject *, PyObject *, PyObject *);
typedef PyObject *(*newfunc)(PyTypeObject *, PyObject *, PyObject *);
typedef PyObject *(*allocfunc)(PyTypeObject *, Py_ssize_t);
typedef void (*freefunc)(void *);
typedef PyObject *(*getter)(PyObject *, void *);
typedef int (*setter)(PyObject *, PyObject *, void *);
typedef struct PyMethodDef {
const char *ml_name;
PyCFunction ml_meth;
int ml_flags;
const char *ml_doc;
} PyMethodDef;
typedef struct PyGetSetDef {
const char *name;
getter get;
setter set;
const char *doc;
void *closure;
} PyGetSetDef;
typedef struct PyType_Slot {
int slot;
void *pfunc;
} PyType_Slot;
typedef struct PyType_Spec {
const char *name;
int basicsize;
int itemsize;
unsigned int flags;
PyType_Slot *slots;
} PyType_Spec;
typedef struct PyModuleDef_Base {
PyObject ob_base;
PyObject *(*m_init)(void);
Py_ssize_t m_index;
PyObject *m_copy;
} PyModuleDef_Base;
typedef struct PyModuleDef_Slot {
int slot;
void *value;
} PyModuleDef_Slot;
typedef struct PyModuleDef {
PyModuleDef_Base m_base;
const char *m_name;
const char *m_doc;
Py_ssize_t m_size;
PyMethodDef *m_methods;
PyModuleDef_Slot *m_slots;
void *m_traverse;
void *m_clear;
void (*m_free)(void *);
} PyModuleDef;
/* Keep Stable-ABI initializer spelling independent of the installed clang-format version. */
// clang-format off
#define PyObject_HEAD_INIT(type) {1, (type)}
#define PyModuleDef_HEAD_INIT {PyObject_HEAD_INIT(NULL), NULL, 0, NULL}
// clang-format on
#define Py_mod_create 1
#define Py_mod_exec 2
#define Py_mod_multiple_interpreters 3
#define Py_mod_gil 4
#define METH_VARARGS 0x0001
#define METH_KEYWORDS 0x0002
#define METH_NOARGS 0x0004
#define METH_O 0x0008
#define METH_CLASS 0x0010
#define METH_STATIC 0x0020
#define METH_COEXIST 0x0040
#define METH_FASTCALL 0x0080
#define METH_METHOD 0x0200
#define Py_mp_ass_subscript 3
#define Py_mp_length 4
#define Py_mp_subscript 5
#define Py_nb_bool 9
#define Py_sq_item 44
#define Py_sq_length 45
#define Py_tp_alloc 47
#define Py_tp_base 48
#define Py_tp_call 50
#define Py_tp_dealloc 52
#define Py_tp_getattro 58
#define Py_tp_hash 59
#define Py_tp_iter 62
#define Py_tp_iternext 63
#define Py_tp_methods 64
#define Py_tp_new 65
#define Py_tp_repr 66
#define Py_tp_richcompare 67
#define Py_tp_setattro 69
#define Py_tp_str 70
#define Py_tp_members 72
#define Py_tp_getset 73
#define Py_tp_free 74
#define DP_PY_LT 0
#define DP_PY_LE 1
#define DP_PY_EQ 2
#define DP_PY_NE 3
#define DP_PY_GT 4
#define DP_PY_GE 5
#define DP_ABI3_IMMORTAL_REFCNT ((Py_ssize_t)3 << 30)
DP_ABI3_EXPORT extern PyTypeObject PyBaseObject_Type;
DP_ABI3_EXPORT extern PyTypeObject PyDict_Type;
DP_ABI3_EXPORT extern PyTypeObject PyList_Type;
DP_ABI3_EXPORT extern PyTypeObject PyModule_Type;
DP_ABI3_EXPORT extern PyTypeObject PyTuple_Type;
DP_ABI3_EXPORT extern PyTypeObject PyType_Type;
DP_ABI3_EXPORT extern PyTypeObject PyUnicode_Type;
DP_ABI3_EXPORT extern PyObject _Py_FalseStruct;
DP_ABI3_EXPORT extern PyObject _Py_NoneStruct;
DP_ABI3_EXPORT extern PyObject _Py_NotImplementedStruct;
DP_ABI3_EXPORT extern PyObject _Py_TrueStruct;
DP_ABI3_EXPORT extern PyObject *PyExc_AttributeError;
DP_ABI3_EXPORT extern PyObject *PyExc_BaseException;
DP_ABI3_EXPORT extern PyObject *PyExc_IndexError;
DP_ABI3_EXPORT extern PyObject *PyExc_RuntimeError;
DP_ABI3_EXPORT extern PyObject *PyExc_SystemError;
DP_ABI3_EXPORT extern PyObject *PyExc_TypeError;
DP_ABI3_EXPORT extern PyObject *PyExc_ValueError;
/*
* Every exported Py* operation is confined to the thread that first activates the bridge.
* A call from another thread fails and records RuntimeError in that thread's bridge error state.
*/
DP_ABI3_EXPORT char *PyBytes_AsString(PyObject *value);
DP_ABI3_EXPORT Py_ssize_t PyBytes_Size(PyObject *value);
DP_ABI3_EXPORT PyObject *
PyCMethod_New(PyMethodDef *definition, PyObject *self, PyObject *module, PyTypeObject *class_type);
DP_ABI3_EXPORT PyObject *PyDict_GetItemWithError(PyObject *dictionary, PyObject *key);
DP_ABI3_EXPORT PyObject *PyDict_New(void);
DP_ABI3_EXPORT int
PyDict_Next(PyObject *dictionary, Py_ssize_t *position, PyObject **key, PyObject **value);
DP_ABI3_EXPORT int PyDict_SetItem(PyObject *dictionary, PyObject *key, PyObject *value);
DP_ABI3_EXPORT Py_ssize_t PyDict_Size(PyObject *dictionary);
DP_ABI3_EXPORT void PyErr_Fetch(PyObject **type, PyObject **value, PyObject **traceback);
DP_ABI3_EXPORT int PyErr_GivenExceptionMatches(PyObject *given, PyObject *expected);
DP_ABI3_EXPORT PyObject *
PyErr_NewExceptionWithDoc(const char *name, const char *doc, PyObject *base, PyObject *dictionary);
DP_ABI3_EXPORT void
PyErr_NormalizeException(PyObject **type, PyObject **value, PyObject **traceback);
DP_ABI3_EXPORT PyObject *PyErr_Occurred(void);
DP_ABI3_EXPORT void PyErr_PrintEx(int set_system_last_vars);
DP_ABI3_EXPORT void PyErr_Restore(PyObject *type, PyObject *value, PyObject *traceback);
DP_ABI3_EXPORT void PyErr_SetObject(PyObject *exception, PyObject *value);
DP_ABI3_EXPORT void PyErr_SetString(PyObject *exception, const char *message);
DP_ABI3_EXPORT void PyErr_WriteUnraisable(PyObject *value);
DP_ABI3_EXPORT void PyEval_RestoreThread(PyThreadState *thread_state);
DP_ABI3_EXPORT PyThreadState *PyEval_SaveThread(void);
DP_ABI3_EXPORT int PyException_SetCause(PyObject *exception, PyObject *cause);
DP_ABI3_EXPORT int PyException_SetTraceback(PyObject *exception, PyObject *traceback);
DP_ABI3_EXPORT PyGILState_STATE PyGILState_Ensure(void);
DP_ABI3_EXPORT void PyGILState_Release(PyGILState_STATE state);
DP_ABI3_EXPORT PyObject *PyImport_Import(PyObject *name);
DP_ABI3_EXPORT PyObject *PyIter_Next(PyObject *iterator);
DP_ABI3_EXPORT int PyList_Append(PyObject *list, PyObject *value);
DP_ABI3_EXPORT PyObject *PyList_GetItem(PyObject *list, Py_ssize_t index);
DP_ABI3_EXPORT PyObject *PyList_New(Py_ssize_t size);
/* Steals value on success and failure, matching CPython's Stable-ABI contract. */
DP_ABI3_EXPORT int PyList_SetItem(PyObject *list, Py_ssize_t index, PyObject *value);
DP_ABI3_EXPORT Py_ssize_t PyList_Size(PyObject *list);
DP_ABI3_EXPORT long PyLong_AsLong(PyObject *value);
DP_ABI3_EXPORT PyObject *PyLong_FromLong(long value);
DP_ABI3_EXPORT PyObject *PyLong_FromSsize_t(Py_ssize_t value);
DP_ABI3_EXPORT PyObject *PyLong_FromUnsignedLongLong(unsigned long long value);
DP_ABI3_EXPORT PyObject *PyModuleDef_Init(PyModuleDef *definition);
DP_ABI3_EXPORT int PyModule_AddIntConstant(PyObject *module, const char *name, long value);
DP_ABI3_EXPORT PyObject *PyModule_GetNameObject(PyObject *module);
DP_ABI3_EXPORT PyObject *PyObject_Call(PyObject *callable, PyObject *args, PyObject *kwargs);
DP_ABI3_EXPORT PyObject *PyObject_CallNoArgs(PyObject *callable);
DP_ABI3_EXPORT int PyObject_DelItem(PyObject *object, PyObject *key);
/* The experimental subset is reference-counted only; cyclic-GC-dependent packages are unsupported.
*/
DP_ABI3_EXPORT void PyObject_GC_UnTrack(void *object);
DP_ABI3_EXPORT PyObject *PyObject_GenericGetDict(PyObject *object, void *context);
DP_ABI3_EXPORT int PyObject_GenericSetDict(PyObject *object, PyObject *value, void *context);
DP_ABI3_EXPORT PyObject *PyObject_GetAttr(PyObject *object, PyObject *name);
DP_ABI3_EXPORT PyObject *PyObject_GetItem(PyObject *object, PyObject *key);
DP_ABI3_EXPORT PyObject *PyObject_GetIter(PyObject *object);
DP_ABI3_EXPORT PyObject *PyObject_Repr(PyObject *object);
DP_ABI3_EXPORT PyObject *
PyObject_RichCompare(PyObject *left, PyObject *right, int operation);
DP_ABI3_EXPORT int PyObject_SetAttr(PyObject *object, PyObject *name, PyObject *value);
DP_ABI3_EXPORT int PyObject_SetAttrString(PyObject *object, const char *name, PyObject *value);
DP_ABI3_EXPORT int PyObject_SetItem(PyObject *object, PyObject *key, PyObject *value);
DP_ABI3_EXPORT Py_ssize_t PyObject_Size(PyObject *object);
DP_ABI3_EXPORT PyObject *PyObject_Str(PyObject *object);
DP_ABI3_EXPORT int PySequence_Check(PyObject *object);
DP_ABI3_EXPORT int PyTraceBack_Print(PyObject *traceback, PyObject *file);
DP_ABI3_EXPORT PyObject *PyTuple_GetItem(PyObject *tuple, Py_ssize_t index);
DP_ABI3_EXPORT PyObject *PyTuple_New(Py_ssize_t size);
/* Steals value on success and failure, matching CPython's Stable-ABI contract. */
DP_ABI3_EXPORT int PyTuple_SetItem(PyObject *tuple, Py_ssize_t index, PyObject *value);
DP_ABI3_EXPORT Py_ssize_t PyTuple_Size(PyObject *tuple);
DP_ABI3_EXPORT PyObject *PyType_FromSpec(PyType_Spec *specification);
DP_ABI3_EXPORT unsigned long PyType_GetFlags(PyTypeObject *type);
DP_ABI3_EXPORT PyObject *PyType_GetName(PyTypeObject *type);
DP_ABI3_EXPORT PyObject *PyType_GetQualName(PyTypeObject *type);
DP_ABI3_EXPORT void *PyType_GetSlot(PyTypeObject *type, int slot);
DP_ABI3_EXPORT int PyType_IsSubtype(PyTypeObject *type, PyTypeObject *base);
DP_ABI3_EXPORT PyObject *
PyUnicode_AsEncodedString(PyObject *unicode, const char *encoding, const char *errors);
DP_ABI3_EXPORT const char *PyUnicode_AsUTF8AndSize(PyObject *unicode, Py_ssize_t *size);
DP_ABI3_EXPORT PyObject *PyUnicode_FromStringAndSize(const char *text, Py_ssize_t size);
DP_ABI3_EXPORT void PyUnicode_InternInPlace(PyObject **unicode);
DP_ABI3_EXPORT int Py_IsInitialized(void);
DP_ABI3_EXPORT PyObject *Py_NewRef(PyObject *object);
DP_ABI3_EXPORT void _Py_DecRef(PyObject *object);
DP_ABI3_EXPORT void _Py_IncRef(PyObject *object);
#define PyMODINIT_FUNC DP_ABI3_EXPORT PyObject *
#ifdef __cplusplus
}
#endif
#endif