RayMarching  0.0.1
Simple 3D engine based on a ray marching rendering
controlnum.h
1 #ifndef RAYMARCHING_CONTROLNUM_H
2 #define RAYMARCHING_CONTROLNUM_H
3 
4 #include <mutex>
5 #include <condition_variable>
6 
7 namespace RayMarching {
8 
13  class ControlNum {
14  private:
15  unsigned int _num;
16  std::mutex _mutex;
17  std::condition_variable _cond;
18  public:
22  ControlNum() : _num(0), _mutex(), _cond() {};
23 
27  ~ControlNum() = default;
28 
33  unsigned int get();
34 
39  void set(unsigned int val);
40 
45  void await_for(unsigned int val);
46 
50  void operator--();
51 
55  void operator++();
56  };
57 }
58 
59 #endif //RAYMARCHING_CONTROLNUM_H
Atomic unsigned int with condition variable waiter.
Definition: controlnum.h:13
void operator++()
Definition: controlnum.cpp:27
ControlNum()
Definition: controlnum.h:22
void set(unsigned int val)
Definition: controlnum.cpp:10
void await_for(unsigned int val)
Definition: controlnum.cpp:16
unsigned int get()
Definition: controlnum.cpp:5
void operator--()
Definition: controlnum.cpp:21
Namespace containing all tools implemented within RayMarching package.
Definition: algebra.h:9