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
00020 class CRYPTOPP_DLL ThreadLocalStorage : public NotCopyable
00021 {
00022 public:
00023
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