1 #if defined(SWIG_PYTHON_NO_THREADS) 2 # if defined(SWIG_PYTHON_THREADS) 3 # undef SWIG_PYTHON_THREADS 4 # endif 5 #endif 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 10 # endif 11 # endif 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() 15 # endif 16 # ifdef __cplusplus /* C++ code */ 17 class SWIG_Python_Thread_Block { 18 bool status; 19 PyGILState_STATE state; 20 public: 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(); } 24 }; 25 class SWIG_Python_Thread_Allow { 26 bool status; 27 PyThreadState *save; 28 public: 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(); } 32 }; 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() 37 # else /* C code */ 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) 42 # endif 43 # else /* Old thread way, not implemented, user must provide it */ 44 # if !defined(SWIG_PYTHON_INITIALIZE_THREADS) 45 # define SWIG_PYTHON_INITIALIZE_THREADS 46 # endif 47 # if !defined(SWIG_PYTHON_THREAD_BEGIN_BLOCK) 48 # define SWIG_PYTHON_THREAD_BEGIN_BLOCK 49 # endif 50 # if !defined(SWIG_PYTHON_THREAD_END_BLOCK) 51 # define SWIG_PYTHON_THREAD_END_BLOCK 52 # endif 53 # if !defined(SWIG_PYTHON_THREAD_BEGIN_ALLOW) 54 # define SWIG_PYTHON_THREAD_BEGIN_ALLOW 55 # endif 56 # if !defined(SWIG_PYTHON_THREAD_END_ALLOW) 57 # define SWIG_PYTHON_THREAD_END_ALLOW 58 # endif 59 # endif 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 66 #endif 67