trdlocal.h

00001 #ifndef CRYPTOPP_TRDLOCAL_H
00002 #define CRYPTOPP_TRDLOCAL_H
00003 
00004 #include "config.h"
00005 
00006 #ifdef THREADS_AVAILABLE
00007 
00008 #include "misc.h"
00009 
00010 #ifdef HAS_WINTHREADS
00011 typedef unsigned long ThreadLocalIndexType;
00012 #else
00013 #include <pthread.h>
00014 typedef pthread_key_t ThreadLocalIndexType;
00015 #endif
00016 
00017 NAMESPACE_BEGIN(CryptoPP)
00018 
00019 //! thread local storage
00020 class CRYPTOPP_DLL ThreadLocalStorage : public NotCopyable
00021 {
00022 public:
00023         //! exception thrown by ThreadLocalStorage class
00024         class Err : public OS_Error
00025         {
00026         public:
00027                 Err(const std::string& operation, int error);
00028         };
00029 
00030         ThreadLocalStorage();
00031         ~ThreadLocalStorage();
00032 
00033         void SetValue(void *value);
00034         void *GetValue() const;
00035 
00036 private:
00037         ThreadLocalIndexType m_index;
00038 };
00039 
00040 NAMESPACE_END
00041 
00042 #endif  // #ifdef THREADS_AVAILABLE
00043 
00044 #endif

Generated on Sat Dec 23 02:07:11 2006 for Crypto++ by  doxygen 1.5.1-p1