summaryrefslogtreecommitdiff
path: root/src/util/tls.h.in
diff options
context:
space:
mode:
Diffstat (limited to 'src/util/tls.h.in')
-rw-r--r--src/util/tls.h.in50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/util/tls.h.in b/src/util/tls.h.in
index fc0b6932b..bb69e7c82 100644
--- a/src/util/tls.h.in
+++ b/src/util/tls.h.in
@@ -143,6 +143,56 @@ public:
}
};/* class ThreadLocal<T> */
+template <class T>
+class ThreadLocal<T*> : public ThreadLocalImpl<T*, sizeof(T*) <= sizeof(void*)> {
+ typedef ThreadLocalImpl<T*, sizeof(T*) <= sizeof(void*)> super;
+
+public:
+ ThreadLocal() : super() {}
+ ThreadLocal(T* t) : super(t) {}
+ ThreadLocal(const ThreadLocal<T*>& tl) : super(tl) {}
+
+ ThreadLocal<T*>& operator=(T* t) {
+ return static_cast< ThreadLocal<T*>& >(super::operator=(t));
+ }
+ ThreadLocal<T*>& operator=(const ThreadLocal<T*>& tl) {
+ return static_cast< ThreadLocal<T*>& >(super::operator=(tl));
+ }
+ // special operators for pointers
+ T& operator*() {
+ return *static_cast<T*>(*this);
+ }
+ const T& operator*() const {
+ return *static_cast<const T*>(*this);
+ }
+ T* operator->() {
+ return static_cast<T*>(*this);
+ }
+ const T* operator->() const {
+ return static_cast<const T*>(*this);
+ }
+ T* operator++() {
+ T* p = *this;
+ *this = ++p;
+ return p;
+ }
+ T* operator++(int) {
+ T* p = *this;
+ *this = p + 1;
+ return p;
+ }
+ T* operator--() {
+ T* p = *this;
+ *this = --p;
+ return p;
+ }
+ T* operator--(int) {
+ T* p = *this;
+ *this = p - 1;
+ return p;
+ }
+};/* class ThreadLocal<T*> */
+
}/* CVC4 namespace */
#endif /* @CVC4_TLS_SUPPORTED@ */
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback