Loading...
Searching...
No Matches
CustomFlaggable.h
Go to the documentation of this file.
1//
2// Created by Dave Smith on 10/4/25.
3//
4
5#ifndef CUSTOMFLAGGABLE_H
6#define CUSTOMFLAGGABLE_H
7
8#include <unordered_map>
9#include <iostream>
11
12namespace ml
13{
52 template<typename CustomFlagEnum>
54 {
55 std::conditional_t<
56 !std::is_void_v<CustomFlagEnum>,
57 std::unordered_map<CustomFlagEnum, bool, EnumClassHash>,
58 std::unordered_map<int, bool>
59 > _custom_states;
60
61 public:
70 template<typename T = CustomFlagEnum>
71 std::enable_if_t<!std::is_void_v<T>, bool>
72 checkFlag(T state) const;
73
80 template<typename T = CustomFlagEnum>
81 std::enable_if_t<!std::is_void_v<T>>
82 setFlag(T state, bool status);
83
89 template<typename T = CustomFlagEnum>
90 std::enable_if_t<!std::is_void_v<T>>
91 enableFlag(T state);
92
98 template<typename T = CustomFlagEnum>
99 std::enable_if_t<!std::is_void_v<T>>
100 disableFlag(T state);
101
107 template<typename T = CustomFlagEnum>
108 std::enable_if_t<!std::is_void_v<T>>
109 toggleFlag(T state);
110 };
111
120 template<>
121 class CustomFlaggable<void> {};
122
123} // namespace ml
124
125#include "../../../src/Traits/CustomFlaggable.tpp"
126#endif // CUSTOMSTATEFUL_H
Provides enum-keyed boolean flag storage for a single flag set.
std::enable_if_t<!std::is_void_v< T >, bool > checkFlag(T state) const
Return the current value of a flag.
std::enable_if_t<!std::is_void_v< T > > disableFlag(T state)
Set a flag to false.
std::enable_if_t<!std::is_void_v< T > > setFlag(T state, bool status)
Set a flag to an explicit value.
std::enable_if_t<!std::is_void_v< T > > toggleFlag(T state)
Flip a flag between true and false.
std::enable_if_t<!std::is_void_v< T > > enableFlag(T state)
Set a flag to true.
Definition Component.h:18