00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _DECAF_INTERNAL_UTIL_CONCURRENT_THREADLOCALIMPL_H_
00019 #define _DECAF_INTERNAL_UTIL_CONCURRENT_THREADLOCALIMPL_H_
00020
00021 #include <decaf/util/Config.h>
00022
00023 namespace decaf {
00024 namespace internal {
00025 namespace util {
00026 namespace concurrent {
00027
00028 class DECAF_API ThreadLocalImpl {
00029 private:
00030
00031 int tlsKey;
00032
00033 private:
00034
00035 ThreadLocalImpl(const ThreadLocalImpl&);
00036 ThreadLocalImpl& operator= (const ThreadLocalImpl&);
00037
00038 public:
00039
00040 ThreadLocalImpl();
00041
00042 virtual ~ThreadLocalImpl();
00043
00050 void* getRawValue() const;
00051
00060 void setRawValue(void* value);
00061
00068 void removeAll();
00069
00070 public:
00071
00081 virtual void doDelete(void* value) = 0;
00082
00083 };
00084
00085 }}}}
00086
00087 #endif