10template<
typename Clock>
13 using rep =
typename clock::rep;
14 using time_point =
typename clock::time_point;
48 Trigger &
add(time_point time_point,
int level)
noexcept {
51 auto old_event =
event.load();
54 new_event = trigger_t{
55 std::min(old_event.time_point, time_point.time_since_epoch().count()),
62 parent->
add(time_point, level);
73 int check(time_point current_time)
noexcept {
74 auto old_event =
event.load();
77 if (old_event.time_point > current_time.time_since_epoch().count()) {
85 return old_event.level;
91 return add(time_point::min(), 1);
97 return add(time_point, 1);
102 template<
typename T, std::enable_if_t<std::is_arithmetic_v<T>,
int> = 0>
104 return add(time_point::min(),
static_cast<int>(level));
Information on when to trigger.
Definition Trigger.hpp:11
int check(time_point current_time) noexcept
Retrieve the trigger level at the current time.
Definition Trigger.hpp:73
Trigger & operator++() noexcept
Set to immediately trigger at level 1.
Definition Trigger.hpp:90
Trigger & add(time_point time_point, int level) noexcept
Add a time_point to the trigger.
Definition Trigger.hpp:48
Trigger & operator+=(time_point time_point) noexcept
Set to trigger at a specified time at level 1.
Definition Trigger.hpp:96
Trigger & operator+=(T level) noexcept
Set to immediately trigger with a specified level.
Definition Trigger.hpp:103
T compare_exchange_strong(T... args)