SWC-DB  v0.5.12 C++ documentations
SWC-DB© (Super Wide Column Database) - High Performance Scalable Database (https://github.com/kashirin-alex/swc-db)
CompletionCounter.h
Go to the documentation of this file.
1 /*
2  * SWC-DB© Copyright since 2019 Alex Kashirin <kashirin.alex@gmail.com>
3  * License details at <https://github.com/kashirin-alex/swc-db/#license>
4  */
5 
6 #ifndef swcdb_core_CompletionCounter_h
7 #define swcdb_core_CompletionCounter_h
8 
9 
10 #include "swcdb/core/Compat.h"
11 
12 
13 namespace SWC { namespace Core {
14 
15 template<class CountT=uint32_t>
16 struct CompletionCounter final: private Core::Atomic<CountT> {
17 
18  constexpr SWC_CAN_INLINE
19  explicit CompletionCounter(CountT start=0) noexcept
20  : Core::Atomic<CountT>(start) {
21  };
22 
24 
26 
28 
29  ~CompletionCounter() noexcept { }
30 
31  constexpr SWC_CAN_INLINE
32  void increment(CountT v=1) noexcept {
34  }
35 
36  constexpr SWC_CAN_INLINE
37  bool is_last() noexcept {
38  return Core::Atomic<CountT>::fetch_sub(1) == 1;
39  }
40 
41  constexpr SWC_CAN_INLINE
42  CountT count() const noexcept {
44  }
45 
46  constexpr SWC_CAN_INLINE
47  CountT increment_and_count() noexcept {
49  }
50 
51  constexpr SWC_CAN_INLINE
52  CountT decrement_and_count() noexcept {
54  }
55 
56 };
57 
58 }} // namespace SWC::Core
59 
60 
61 
62 #endif // swcdb_core_CompletionCounter_h
SWC::Core::Atomic
Definition: Atomic.h:69
SWC::Core::CompletionCounter::CompletionCounter
constexpr SWC_CAN_INLINE CompletionCounter(CountT start=0) noexcept
Definition: CompletionCounter.h:19
SWC::Core::CompletionCounter::CompletionCounter
CompletionCounter(const CompletionCounter &)=delete
SWC::Core::Atomic::sub_rslt
constexpr SWC_CAN_INLINE T sub_rslt(T v) noexcept
Definition: Atomic.h:115
SWC::Core::Atomic::add_rslt
constexpr SWC_CAN_INLINE T add_rslt(T v) noexcept
Definition: Atomic.h:120
SWC_CAN_INLINE
#define SWC_CAN_INLINE
Definition: Compat.h:102
SWC
The SWC-DB C++ namespace 'SWC'.
Definition: main.cc:12
SWC::Core::CompletionCounter::CompletionCounter
CompletionCounter(const CompletionCounter &&)=delete
Compat.h
SWC::Core::CompletionCounter
Definition: CompletionCounter.h:16
SWC::Core::CompletionCounter::count
constexpr SWC_CAN_INLINE CountT count() const noexcept
Definition: CompletionCounter.h:42
SWC::Core::CompletionCounter::increment
constexpr SWC_CAN_INLINE void increment(CountT v=1) noexcept
Definition: CompletionCounter.h:32
SWC::Core::AtomicBase< T >::load
constexpr SWC_CAN_INLINE T load() const noexcept
Definition: Atomic.h:42
SWC::Core::CompletionCounter::operator=
CompletionCounter & operator=(const CompletionCounter &)=delete
SWC::Core::CompletionCounter::is_last
constexpr SWC_CAN_INLINE bool is_last() noexcept
Definition: CompletionCounter.h:37
SWC::Core::CompletionCounter::~CompletionCounter
~CompletionCounter() noexcept
Definition: CompletionCounter.h:29
SWC::Core::Atomic::fetch_sub
constexpr SWC_CAN_INLINE T fetch_sub(T v) noexcept
Definition: Atomic.h:88
SWC::Core::Atomic::fetch_add
constexpr SWC_CAN_INLINE T fetch_add(T v) noexcept
Definition: Atomic.h:93
SWC::Core::CompletionCounter::decrement_and_count
constexpr SWC_CAN_INLINE CountT decrement_and_count() noexcept
Definition: CompletionCounter.h:52
SWC::Core::CompletionCounter::increment_and_count
constexpr SWC_CAN_INLINE CountT increment_and_count() noexcept
Definition: CompletionCounter.h:47