public:
ThreadLocalImpl();
virtual ~ThreadLocalImpl();
- void setInstance(void* d);
- void* getInstance();
+ void setInstance(const void* d);
+ const void* getInstance();
};
template<class T>
using namespace sys;
ThreadLocalImpl::ThreadLocalImpl() { }
ThreadLocalImpl::~ThreadLocalImpl() { }
-void ThreadLocalImpl::setInstance(void* d) { data = d; }
-void* ThreadLocalImpl::getInstance() { return data; }
+void ThreadLocalImpl::setInstance(const void* d) { data = const_cast<void*>(d);}
+const void* ThreadLocalImpl::getInstance() { return data; }
}
#else
delete key;
}
-void ThreadLocalImpl::setInstance(void* d) {
+void ThreadLocalImpl::setInstance(const void* d) {
pthread_key_t* key = static_cast<pthread_key_t*>(data);
int errorcode = pthread_setspecific(*key, d);
assert(errorcode == 0);
}
-void* ThreadLocalImpl::getInstance() {
+const void* ThreadLocalImpl::getInstance() {
pthread_key_t* key = static_cast<pthread_key_t*>(data);
return pthread_getspecific(*key);
}
delete tls;
}
-void* ThreadLocalImpl::getInstance() {
+const void* ThreadLocalImpl::getInstance() {
DWORD* tls = static_cast<DWORD*>(data);
return TlsGetValue(*tls);
}
-void ThreadLocalImpl::setInstance(void* d){
+void ThreadLocalImpl::setInstance(const void* d){
DWORD* tls = static_cast<DWORD*>(data);
int errorcode = TlsSetValue(*tls, d);
assert(errorcode == 0);