Loading...
Searching...
No Matches
ml::FlagManager< StateEnum > Class Template Reference

Enum-keyed boolean flag store. More...

#include <FlagManager.h>

Public Types

using State = StateEnum
 The enum type this manager stores flags for.

Public Member Functions

 FlagManager ()
 FlagManager (const FlagManager &stateful)
bool checkFlag (State state) const
 Return the current value of a flag.
void disableFlag (State state)
 Set a flag to false.
void enableFlag (State state)
 Set a flag to true.
void setFlag (State state, bool status)
 Set a flag to an explicit value.
void toggleFlag (State state)
 Flip a flag between true and false.

Detailed Description

template<typename StateEnum>
class ml::FlagManager< StateEnum >

Enum-keyed boolean flag store.

FlagManager<StateEnum> maintains a std::map from StateEnum values to bool and exposes the standard five-method flag API. It is the backing store for the Flaggable trait (ml::Flag) and is used directly by CustomFlaggable for manifest-declared flags.

All flags default to false on first access.

Typical use via Flaggable (system flags)

// System flags are available on every ml::Core object
myComponent.setFlag(ml::Flag::DRAGGABLE);
myComponent.checkFlag(ml::Flag::HOVERED);
myComponent.toggleFlag(ml::Flag::FOCUSED);
@ FOCUSED
Component has keyboard focus (set by ClickableDispatcher).
Definition Flag.h:65
@ HOVERED
Mouse is currently over this component (set by HoverableDispatcher).
Definition Flag.h:61
@ DRAGGABLE
Enables drag handling in ComponentCore.
Definition Flag.h:67

Typical use via ComponentWith (custom flags)

struct MyManifest {
enum class Flag { Selected, Disabled };
};
class MyWidget : public ml::ComponentWith<MyManifest> {};
MyWidget w;
w.enableFlag(MyManifest::Flag::Selected);
if (w.checkFlag(MyManifest::Flag::Selected)) { ... }
Component< M, Traits... > ComponentWith
Alias for Component<M, Traits...>.
Definition Component.h:150
Flag
System-level boolean flags available on every ml::Core object.
Definition Flag.h:60
Template Parameters
StateEnumAn enum class type used as flag keys. Typically ml::Flag for system flags, or a manifest Flag enum for custom flags.
See also
Flaggable, CustomFlaggable, MultiCustomFlaggable, ml::Flag

FlagManager.

Definition at line 58 of file FlagManager.h.

Member Typedef Documentation

◆ State

template<typename StateEnum>
using ml::FlagManager< StateEnum >::State = StateEnum

The enum type this manager stores flags for.

Definition at line 62 of file FlagManager.h.

Constructor & Destructor Documentation

◆ FlagManager() [1/2]

template<typename StateEnum>
ml::FlagManager< StateEnum >::FlagManager ( )

◆ FlagManager() [2/2]

template<typename StateEnum>
ml::FlagManager< StateEnum >::FlagManager ( const FlagManager< StateEnum > & stateful)

Member Function Documentation

◆ checkFlag()

template<typename StateEnum>
bool ml::FlagManager< StateEnum >::checkFlag ( State state) const

Return the current value of a flag.

Returns false for any flag that has never been explicitly set.

Parameters
stateThe flag to query.
Returns
true if the flag is enabled; false otherwise.

◆ disableFlag()

template<typename StateEnum>
void ml::FlagManager< StateEnum >::disableFlag ( State state)

Set a flag to false.

Parameters
stateThe flag to disable.

◆ enableFlag()

template<typename StateEnum>
void ml::FlagManager< StateEnum >::enableFlag ( State state)

Set a flag to true.

Parameters
stateThe flag to enable.

◆ setFlag()

template<typename StateEnum>
void ml::FlagManager< StateEnum >::setFlag ( State state,
bool status )

Set a flag to an explicit value.

Parameters
stateThe flag to modify.
statustrue to enable, false to disable.

◆ toggleFlag()

template<typename StateEnum>
void ml::FlagManager< StateEnum >::toggleFlag ( State state)

Flip a flag between true and false.

Parameters
stateThe flag to toggle.

The documentation for this class was generated from the following file: