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