From 62ecf24b23c8085f4113cc240a82b0cf71ad37e8 Mon Sep 17 00:00:00 2001 From: Marcelo Matus Date: Wed, 28 Dec 2005 08:46:45 +0000 Subject: [PATCH] fix missing __PTHREAD__ git-svn-id: https://swig.svn.sourceforge.net/svnroot/swig/trunk@8109 626c5289-ae23-0410-ae9c-e8d60b6d4f22 --- SWIG/Lib/python/director_h.swg | 2 ++ SWIG/Lib/ruby/director.swg | 38 ++++++++++++++++++++++++---------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/SWIG/Lib/python/director_h.swg b/SWIG/Lib/python/director_h.swg index b8850b505..97cb64654 100644 --- a/SWIG/Lib/python/director_h.swg +++ b/SWIG/Lib/python/director_h.swg @@ -463,7 +463,9 @@ namespace Swig { private: typedef std::map ownership_map; mutable ownership_map owner; +#ifdef __PTHREAD__ static pthread_mutex_t swig_mutex_own; +#endif public: template diff --git a/SWIG/Lib/ruby/director.swg b/SWIG/Lib/ruby/director.swg index 5e7498c0d..e902919a4 100644 --- a/SWIG/Lib/ruby/director.swg +++ b/SWIG/Lib/ruby/director.swg @@ -244,19 +244,33 @@ namespace Swig { /* Simple thread abstraction for pthreads on win32 */ #ifdef __THREAD__ -#define __PTHREAD__ -#if defined(_WIN32) || defined(__WIN32__) -#define pthread_mutex_lock EnterCriticalSection -#define pthread_mutex_unlock LeaveCriticalSection -#define pthread_mutex_t CRITICAL_SECTION -#define MUTEX_INIT(var) CRITICAL_SECTION var -#else -#include -#define MUTEX_INIT(var) pthread_mutex_t var = PTHREAD_MUTEX_INITIALIZER -#endif +# define __PTHREAD__ +# if defined(_WIN32) || defined(__WIN32__) +# define pthread_mutex_lock EnterCriticalSection +# define pthread_mutex_unlock LeaveCriticalSection +# define pthread_mutex_t CRITICAL_SECTION +# define SWIG_MUTEX_INIT(var) var +# else +# include +# define SWIG_MUTEX_INIT(var) var = PTHREAD_MUTEX_INITIALIZER +# endif #endif #ifdef __PTHREAD__ + struct Guard + { + pthread_mutex_t *_mutex; + + Guard(pthread_mutex_t &mutex) : _mutex(&mutex) + { + pthread_mutex_lock(_mutex); + } + + ~Guard() + { + pthread_mutex_unlock(_mutex); + } + }; # define SWIG_GUARD(mutex) Guard _guard(mutex) #else # define SWIG_GUARD(mutex) @@ -371,7 +385,9 @@ namespace Swig { private: typedef std::map ownership_map; mutable ownership_map owner; - mutable pthread_mutex_t swig_mutex_own; +#ifdef __PTHREAD__ + static pthread_mutex_t swig_mutex_own; +#endif public: