1 #if defined(SWIG_PYTHON_NO_THREADS)
2 # if defined(SWIG_PYTHON_THREADS)
3 # undef SWIG_PYTHON_THREADS
6 #if defined(SWIG_PYTHON_THREADS) /* Threading support is enabled */
7 # if !defined(SWIG_PYTHON_USE_GIL) && !defined(SWIG_PYTHON_NO_USE_GIL)
8 # if (PY_VERSION_HEX >= 0x02030000) /* For 2.3 or later, use the PyGILState calls */
9 # define SWIG_PYTHON_USE_GIL
12 # if defined(SWIG_PYTHON_USE_GIL) /* Use PyGILState threads calls */
13 # ifndef SWIG_PYTHON_INITIALIZE_THREADS
14 # define SWIG_PYTHON_INITIALIZE_THREADS PyEval_InitThreads()
16 # ifdef __cplusplus /* C++ code */
17 class SWIG_Python_Thread_Block {
19 PyGILState_STATE state;
21 void end() { if (status) { PyGILState_Release(state); status = false;} }
22 SWIG_Python_Thread_Block() : status(true), state(PyGILState_Ensure()) {}
23 ~SWIG_Python_Thread_Block() { end(); }
25 class SWIG_Python_Thread_Allow {
29 void end() { if (status) { PyEval_RestoreThread(save); status = false; }}
30 SWIG_Python_Thread_Allow() : status(true), save(PyEval_SaveThread()) {}
31 ~SWIG_Python_Thread_Allow() { end(); }
33 # define SWIG_PYTHON_THREAD_BEGIN_BLOCK SWIG_Python_Thread_Block _swig_thread_block
34 # define SWIG_PYTHON_THREAD_END_BLOCK _swig_thread_block.end()
35 # define SWIG_PYTHON_THREAD_BEGIN_ALLOW SWIG_Python_Thread_Allow _swig_thread_allow
36 # define SWIG_PYTHON_THREAD_END_ALLOW _swig_thread_allow.end()
38 # define SWIG_PYTHON_THREAD_BEGIN_BLOCK PyGILState_STATE _swig_thread_block = PyGILState_Ensure()
39 # define SWIG_PYTHON_THREAD_END_BLOCK PyGILState_Release(_swig_thread_block)
40 # define SWIG_PYTHON_THREAD_BEGIN_ALLOW PyThreadState *_swig_thread_allow = PyEval_SaveThread()
41 # define SWIG_PYTHON_THREAD_END_ALLOW PyEval_RestoreThread(_swig_thread_allow)
43 # else /* Old thread way, not implemented, user must provide it */
44 # if !defined(SWIG_PYTHON_INITIALIZE_THREADS)
45 # define SWIG_PYTHON_INITIALIZE_THREADS
47 # if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK)
48 # define SWIG_PYTHON_THREAD_BEGIN_BLOCK
50 # if !defined(SWIG_PYTHON_THREAD_END_BLOCK)
51 # define SWIG_PYTHON_THREAD_END_BLOCK
53 # if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW)
54 # define SWIG_PYTHON_THREAD_BEGIN_ALLOW
56 # if !defined(SWIG_PYTHON_THREAD_END_ALLOW)
57 # define SWIG_PYTHON_THREAD_END_ALLOW
60 #else /* No thread support */
61 # define SWIG_PYTHON_INITIALIZE_THREADS
62 # define SWIG_PYTHON_THREAD_BEGIN_BLOCK
63 # define SWIG_PYTHON_THREAD_END_BLOCK
64 # define SWIG_PYTHON_THREAD_BEGIN_ALLOW
65 # define SWIG_PYTHON_THREAD_END_ALLOW