summaryrefslogtreecommitdiff
path: root/src/common/synchronized_wrapper.h
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/common/synchronized_wrapper.h22
1 files changed, 15 insertions, 7 deletions
diff --git a/src/common/synchronized_wrapper.h b/src/common/synchronized_wrapper.h
index 07105a198..8dc4ddeac 100644
--- a/src/common/synchronized_wrapper.h
+++ b/src/common/synchronized_wrapper.h
@@ -12,14 +12,14 @@ namespace Common {
12/** 12/**
13 * Wraps an object, only allowing access to it via a locking reference wrapper. Good to ensure no 13 * Wraps an object, only allowing access to it via a locking reference wrapper. Good to ensure no
14 * one forgets to lock a mutex before acessing an object. To access the wrapped object construct a 14 * one forgets to lock a mutex before acessing an object. To access the wrapped object construct a
15 * SyncronizedRef on this wrapper. Inspired by Rust's Mutex type (http://doc.rust-lang.org/std/sync/struct.Mutex.html). 15 * SyncronizedRef on this wrapper. Inspired by Rust's Mutex type
16 * (http://doc.rust-lang.org/std/sync/struct.Mutex.html).
16 */ 17 */
17template <typename T> 18template <typename T>
18class SynchronizedWrapper { 19class SynchronizedWrapper {
19public: 20public:
20 template <typename... Args> 21 template <typename... Args>
21 SynchronizedWrapper(Args&&... args) : 22 SynchronizedWrapper(Args&&... args) : data(std::forward<Args>(args)...) {
22 data(std::forward<Args>(args)...) {
23 } 23 }
24 24
25private: 25private:
@@ -58,11 +58,19 @@ public:
58 return *this; 58 return *this;
59 } 59 }
60 60
61 T& operator*() { return wrapper->data; } 61 T& operator*() {
62 const T& operator*() const { return wrapper->data; } 62 return wrapper->data;
63 }
64 const T& operator*() const {
65 return wrapper->data;
66 }
63 67
64 T* operator->() { return &wrapper->data; } 68 T* operator->() {
65 const T* operator->() const { return &wrapper->data; } 69 return &wrapper->data;
70 }
71 const T* operator->() const {
72 return &wrapper->data;
73 }
66 74
67private: 75private:
68 SynchronizedWrapper<T>* wrapper; 76 SynchronizedWrapper<T>* wrapper;