diff options
Diffstat (limited to 'src/Platform/SharedVal.h')
-rw-r--r-- | src/Platform/SharedVal.h | 130 |
1 files changed, 65 insertions, 65 deletions
diff --git a/src/Platform/SharedVal.h b/src/Platform/SharedVal.h index 1a1e98cc..ffdc7e84 100644 --- a/src/Platform/SharedVal.h +++ b/src/Platform/SharedVal.h @@ -8,68 +8,68 @@ and are governed by the Apache License 2.0 the full text of which is contained in the file License.txt included in VeraCrypt binary and source code distribution packages. -*/
-
-#ifndef TC_HEADER_Platform_SharedVal
-#define TC_HEADER_Platform_SharedVal
-
-#include "PlatformBase.h"
-#include "Mutex.h"
-
-namespace VeraCrypt
-{
- template <class T>
- class SharedVal
- {
- public:
- SharedVal () { }
- explicit SharedVal (T value) : Value (value) { }
- virtual ~SharedVal () { }
-
- operator T ()
- {
- return Get ();
- }
-
- T Decrement ()
- {
- ValMutex.Lock();
- T r = --Value;
- ValMutex.Unlock();
- return r;
- }
-
- T Get ()
- {
- ValMutex.Lock();
- T r = Value;
- ValMutex.Unlock();
- return r;
- }
-
- T Increment ()
- {
- ValMutex.Lock();
- T r = ++Value;
- ValMutex.Unlock();
- return r;
- }
-
- void Set (T value)
- {
- ValMutex.Lock();
- Value = value;
- ValMutex.Unlock();
- }
-
- protected:
- volatile T Value;
- Mutex ValMutex;
-
- private:
- SharedVal (const SharedVal &);
- SharedVal &operator= (const SharedVal &);
- };
-}
-
-#endif // TC_HEADER_Platform_SharedVal
+*/ + +#ifndef TC_HEADER_Platform_SharedVal +#define TC_HEADER_Platform_SharedVal + +#include "PlatformBase.h" +#include "Mutex.h" + +namespace VeraCrypt +{ + template <class T> + class SharedVal + { + public: + SharedVal () { } + explicit SharedVal (T value) : Value (value) { } + virtual ~SharedVal () { } + + operator T () + { + return Get (); + } + + T Decrement () + { + ValMutex.Lock(); + T r = --Value; + ValMutex.Unlock(); + return r; + } + + T Get () + { + ValMutex.Lock(); + T r = Value; + ValMutex.Unlock(); + return r; + } + + T Increment () + { + ValMutex.Lock(); + T r = ++Value; + ValMutex.Unlock(); + return r; + } + + void Set (T value) + { + ValMutex.Lock(); + Value = value; + ValMutex.Unlock(); + } + + protected: + volatile T Value; + Mutex ValMutex; + + private: + SharedVal (const SharedVal &); + SharedVal &operator= (const SharedVal &); + }; +} + +#endif // TC_HEADER_Platform_SharedVal |