// file : odb/details/posix/tls.hxx // copyright : Copyright (c) 2009-2012 Code Synthesis Tools CC // license : GNU GPL v2; see accompanying LICENSE file #ifndef ODB_DETAILS_POSIX_TLS_HXX #define ODB_DETAILS_POSIX_TLS_HXX #include #include namespace odb { namespace details { template class tls { public: tls (); T& get () const; void free (); private: tls (const tls&); tls& operator= (const tls&); private: static void key_init (); static void destructor (void*); private: static int error_; static pthread_once_t once_; static pthread_key_t key_; }; template class tls { public: tls (); T* get () const; void set (T* p); private: tls (const tls&); tls& operator= (const tls&); private: static void key_init (); private: static int error_; static pthread_once_t once_; static pthread_key_t key_; }; template inline T& tls_get (const tls& t) { return t.get (); } template inline void tls_free (tls& t) { t.free (); } template inline T* tls_get (const tls& t) { return t.get (); } template inline void tls_set (tls& t, T1* p1) { T* p (p1); t.set (p); } } } #include #include #include #endif // ODB_DETAILS_POSIX_TLS_HXX