Sparkle 0.0.1
Loading...
Searching...
No Matches
spk_activable_object.hpp
1#pragma once
2
3#include "structure/design_pattern/spk_stateful_object.hpp"
4#include "type/spk_activation_status.hpp"
5
6namespace spk
7{
19 class ActivableObject : public StatefulObject<ActivationStatus>
20 {
21 public:
26
27 private:
28 using StatefulObject<ActivationStatus>::addCallback;
29 using StatefulObject<ActivationStatus>::setState;
30
31 public:
36 StatefulObject<ActivationStatus>(ActivationStatus::Deactivated)
37 {
38 deactivate();
39 }
40
45 explicit ActivableObject(ActivationStatus p_initial) :
46 StatefulObject<ActivationStatus>(p_initial)
47 {
48 deactivate();
49 }
50
54 void activate()
55 {
56 StatefulObject<ActivationStatus>::setState(ActivationStatus::Activated);
57 }
58
62 {
63 StatefulObject<ActivationStatus>::setState(ActivationStatus::Deactivated);
64 }
65
68 void toggle()
69 {
71 }
72
77 bool isActive() const
78 {
79 return StatefulObject<ActivationStatus>::state() == ActivationStatus::Activated;
80 }
81
88 {
89 return std::move(StatefulObject<ActivationStatus>::addCallback(ActivationStatus::Activated, p_callback));
90 }
91
97 {
98 return std::move(StatefulObject<ActivationStatus>::addCallback(ActivationStatus::Deactivated, p_callback));
99 }
100 };
101}
void deactivate()
Sets the state to Deactivated.
Definition spk_activable_object.hpp:61
Contract addDeactivationCallback(const Job &p_callback)
Registers a callback executed when the object deactivates.
Definition spk_activable_object.hpp:96
ActivableObject()
Builds a deactivated object.
Definition spk_activable_object.hpp:35
Contract addActivationCallback(const Job &p_callback)
Registers a callback executed when the object activates.
Definition spk_activable_object.hpp:87
StatefulObject< ActivationStatus >::Contract Contract
Subscription handle controlling callback lifetime.
Definition spk_activable_object.hpp:23
void toggle()
Toggles between activated and deactivated states.
Definition spk_activable_object.hpp:68
ActivableObject(ActivationStatus p_initial)
Builds with a custom initial activation state.
Definition spk_activable_object.hpp:45
void activate()
Sets the state to Activated.
Definition spk_activable_object.hpp:54
StatefulObject< ActivationStatus >::Job Job
Callback signature executed on activation state changes.
Definition spk_activable_object.hpp:25
bool isActive() const
Checks whether the object is currently activated.
Definition spk_activable_object.hpp:77
ContractProvider::Job Job
Callable invoked when the object transitions to a state.
Definition spk_stateful_object.hpp:24
TType state() const
Returns the current state.
Definition spk_stateful_object.hpp:92
void setState(const ActivationStatus &p_newState)
Definition spk_stateful_object.hpp:77
Contract addCallback(const ActivationStatus &p_state, const Job &p_callback)
Definition spk_stateful_object.hpp:104
StatefulObject(const ActivationStatus &p_initialState)
Definition spk_stateful_object.hpp:36
ContractProvider::Contract Contract
Handle allowing subscribers to manage callback lifetimes.
Definition spk_stateful_object.hpp:22