Loading...
Searching...
No Matches
CustomFlaggable.h
Go to the documentation of this file.
1// Copyright (c) 2025 Dave R. Smith. All rights reserved.
2// Malena Framework — Proprietary Software. See LICENSE for terms.
3
4//
5// Created by Dave Smith on 10/4/25.
6//
7
8#ifndef MALENA_CUSTOMFLAGGABLE_H
9#define MALENA_CUSTOMFLAGGABLE_H
10
12#include <unordered_map>
13#include <iostream>
15
16namespace ml
17{
56 template<typename CustomFlagEnum>
58 {
59 std::conditional_t<
60 !std::is_void_v<CustomFlagEnum>,
61 std::unordered_map<CustomFlagEnum, bool, EnumClassHash>,
62 std::unordered_map<int, bool>
63 > _custom_states;
64
65 public:
74 template<typename T = CustomFlagEnum>
75 std::enable_if_t<!std::is_void_v<T>, bool>
76 checkFlag(T state) const;
77
84 template<typename T = CustomFlagEnum>
85 std::enable_if_t<!std::is_void_v<T>>
86 setFlag(T state, bool status);
87
93 template<typename T = CustomFlagEnum>
94 std::enable_if_t<!std::is_void_v<T>>
95 enableFlag(T state);
96
102 template<typename T = CustomFlagEnum>
103 std::enable_if_t<!std::is_void_v<T>>
104 disableFlag(T state);
105
111 template<typename T = CustomFlagEnum>
112 std::enable_if_t<!std::is_void_v<T>>
113 toggleFlag(T state);
114 };
115
124 template<>
125 class CustomFlaggable<void> {};
126
127} // namespace ml
128
129#include "../../../../src/Traits/State/CustomFlaggable.tpp"
130#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:22