PageRenderTime 22ms CodeModel.GetById 15ms app.highlight 3ms RepoModel.GetById 1ms app.codeStats 0ms

/trunk/Lib/python/pythreads.swg

#
Unknown | 66 lines | 66 code | 0 blank | 0 comment | 0 complexity | 2700a288947018aaa48a751e04b32fc3 MD5 | raw file
 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