Base module

Stateful

State machine implementation.

#include <icy/stateful.h>

template<typename T>
class Stateful

Defined in src/base/include/icy/stateful.h:97

For an example See also: PacketStream

Template Parameters

  • The derived State type.

Public Attributes

ReturnNameDescription
Signal< void(void *, T &, const T &)>StateChangeSignals when the state changes.

StateChange

Signal< void(void *, T &, const T &)> StateChange

Type: Signal< void(void *, T &, const T &)>

Defined in src/base/include/icy/stateful.h:130

Signals when the state changes.

Public Methods

ReturnNameDescription
Stateful inline
~Stateful virtual inline
boolstateEquals virtual const inlineReturns true if the current state ID equals the given ID.
boolstateBetween virtual const inlineReturns true if the current state ID is in the inclusive range [lid, rid].
T &state virtual inlineReturns a mutable reference to the current state.
const Tstate virtual const inlineReturns a copy of the current state.

Stateful

inline

inline Stateful()

Defined in src/base/include/icy/stateful.h:100


~Stateful

virtual inline

virtual inline ~Stateful()

Defined in src/base/include/icy/stateful.h:102


stateEquals

virtual const inline

virtual inline bool stateEquals(typename T::ID id) const

Defined in src/base/include/icy/stateful.h:107

Returns true if the current state ID equals the given ID.

Returns

True if the current state matches.

Parameters

ParameterTypeDescription
idtypename T::IDState ID to compare against.

stateBetween

virtual const inline

virtual inline bool stateBetween(typename T::ID lid, typename T::ID rid) const

Defined in src/base/include/icy/stateful.h:116

Returns true if the current state ID is in the inclusive range [lid, rid].

Returns

True if lid <= state.id() <= rid.

Parameters

ParameterTypeDescription
lidtypename T::IDLower bound state ID.
ridtypename T::IDUpper bound state ID.

state

virtual inline

virtual inline T & state()

Defined in src/base/include/icy/stateful.h:123

Returns a mutable reference to the current state.

Returns

Reference to the internal state object.


state

virtual const inline

virtual inline const T state() const

Defined in src/base/include/icy/stateful.h:127

Returns a copy of the current state.

Returns

Current state value.

Protected Attributes

ReturnNameDescription
T_state

_state

T _state

Defined in src/base/include/icy/stateful.h:170

Protected Methods

ReturnNameDescription
boolbeforeStateChange virtual inlineOverride to handle pre state change logic. Return false to prevent state change.
voidonStateChange virtual inlineOverride to handle post state change logic.
boolsetState virtual inlineSets the state and sends the state signal if the state change was successful.
boolsetState virtual inlineSets the state and sends the state signal if the state change was successful.

beforeStateChange

virtual inline

virtual inline bool beforeStateChange(const T & state)

Defined in src/base/include/icy/stateful.h:135

Override to handle pre state change logic. Return false to prevent state change.


onStateChange

virtual inline

virtual inline void onStateChange(T &, const T &)

Defined in src/base/include/icy/stateful.h:143

Override to handle post state change logic.

Reimplemented by


setState

virtual inline

virtual inline bool setState(void * sender, typename T::ID id)

Defined in src/base/include/icy/stateful.h:147

Sets the state and sends the state signal if the state change was successful.


setState

virtual inline

virtual inline bool setState(void * sender, const T & state)

Defined in src/base/include/icy/stateful.h:156

Sets the state and sends the state signal if the state change was successful.