1 /* These two macros are basicly Py_BEGIN_ALLOW_THREADS and Py_BEGIN_ALLOW_THREADS
2 * from the other direction. If a Python thread calls a C function
3 * Py_BEGIN_ALLOW_THREADS is used to allow other python threads to run because
4 * we don't intend to call any Python functions.
6 * These two macros are used whenever a C thread intends to call some Python
7 * function, usually because some registered callback was triggered.
8 * Just like Py_BEGIN_ALLOW_THREADS it opens a block so these macros have to be
9 * used in pairs. They aquire the GIL, create a new Python thread state and swap
10 * the current thread state with the new one. This means this thread is now allowed
11 * to execute Python code. */
13 #define CPY_LOCK_THREADS {\
14 PyGILState_STATE gil_state;\
15 gil_state = PyGILState_Ensure();
17 #define CPY_RELEASE_THREADS \
18 PyGILState_Release(gil_state);\
21 /* Python 2.4 has this macro, older versions do not. */
23 #define Py_VISIT(o) do {\
26 _vret = visit((o), arg);\
33 /* Python 2.4 has this macro, older versions do not. */
35 #define Py_CLEAR(o) do {\
43 PyObject_HEAD /* No semicolon! */
50 PyTypeObject ConfigType;