| #pragma once |
| |
| #ifndef TATOMICVAR_H |
| #define TATOMICVAR_H |
| |
| #undef DVAPI |
| #undef DVVAR |
| #ifdef TNZCORE_EXPORTS |
| #define DVAPI DV_EXPORT_API |
| #define DVVAR DV_EXPORT_VAR |
| #else |
| #define DVAPI DV_IMPORT_API |
| #define DVVAR DV_IMPORT_VAR |
| #endif |
| |
| #include <atomic> |
| |
| class DVAPI TAtomicVar { |
| public: |
| using value_type = long; |
| |
| public: |
| TAtomicVar() : m_var(0) {} |
| |
| public: |
| value_type operator++() { return ++m_var; } |
| value_type operator--() { return --m_var; } |
| |
| value_type operator+=(value_type value) { return m_var += value; } |
| |
| bool operator<=(value_type rhs) { return m_var <= rhs; }; |
| |
| operator value_type() const { return m_var; }; |
| |
| #if !defined(LINUX) || defined(LINUX) && (__GNUC__ == 3) && (__GNUC_MINOR__ > 1) |
| private: |
| #endif |
| TAtomicVar &operator=(const TAtomicVar &) = delete; |
| TAtomicVar(const TAtomicVar &v) = delete; |
| |
| private: |
| std::atomic<value_type> m_var; |
| }; |
| |
| #endif |