Imt.Base C++ API V4.1.1.0
Loading...
Searching...
No Matches
imt::base::core::util::Flags< EnumType, LimitsType, BaseType > Class Template Referencefinal

A template to create a type safe flags type from an enum. More...

#include <Imt.Base.Core.Util/inc/Imt.Base.Core.Util/Flags.h>

Public Member Functions

 Flags () noexcept
 Default constructor.
 
 Flags (EnumType const flag) noexcept
 User defined constructor.
 
 Flags (BaseType const flags) noexcept
 User defined constructor.
 
void set (EnumType const flag)
 Sets the given flag.
 
void clear (EnumType const flag)
 Clears the given flag.
 
bool isSet (EnumType const flag) const
 Checks whether the given flag is set.
 
BaseType const & toInteger () const
 Returns the base type.
 
Flags combine (Flags const &other) const
 Combines the flags with another instance.
 
Flags intersect (Flags const &other) const
 Intersects the flags with another instance.
 

Detailed Description

template<typename EnumType, typename LimitsType, typename BaseType>
class imt::base::core::util::Flags< EnumType, LimitsType, BaseType >

A template to create a type safe flags type from an enum.

Parameters
EnumTypeAn enum class that contains the flags.
LimitsTypeA struct that provides the following features: MIN The lowest possible flag (equals to 0). MAX The highest possible flag (equals to COUNT - 1). COUNT A constant that contains the number of flags in the struct.
Note
The enum must not skip enumerators, if there are unused flags, add those but name them as unused.

Example for a well formed enum to pass as EnumType:

enum class MyFlagEnum : uint32_t { Bit1, _unused_Bit2, Bit3 };

enum class MyFlagEnumLimits { static constexpr uint32_t MIN {0U}; static constexpr uint32_t MAX {static_cast<uint32_t>(MyFlagEnum::Bit3)}; static constexpr uint32_t COUNT {MAX + 1U}; };

Definition at line 74 of file Flags.h.

Constructor & Destructor Documentation

◆ Flags() [1/3]

template<typename EnumType , typename LimitsType , typename BaseType >
imt::base::core::util::Flags< EnumType, LimitsType, BaseType >::Flags
noexcept

Default constructor.

Creates an instance with no flag set.

Definition at line 149 of file Flags.h.

◆ Flags() [2/3]

template<typename EnumType , typename LimitsType , typename BaseType >
imt::base::core::util::Flags< EnumType, LimitsType, BaseType >::Flags ( EnumType const  flag)
explicitnoexcept

User defined constructor.

Creates an instance with the given flag set.

Parameters
flagFlag.

Definition at line 160 of file Flags.h.

◆ Flags() [3/3]

template<typename EnumType , typename LimitsType , typename BaseType >
imt::base::core::util::Flags< EnumType, LimitsType, BaseType >::Flags ( BaseType const  flags)
explicitnoexcept

User defined constructor.

Creates an instance with the given base value.

Parameters
flagsFlags.

Definition at line 165 of file Flags.h.

Member Function Documentation

◆ clear()

template<typename EnumType , typename LimitsType , typename BaseType >
void imt::base::core::util::Flags< EnumType, LimitsType, BaseType >::clear ( EnumType const  flag)

Clears the given flag.

Parameters
flagFlag to clear.

Definition at line 175 of file Flags.h.

◆ combine()

template<typename EnumType , typename LimitsType , typename BaseType >
Flags< EnumType, LimitsType, BaseType > imt::base::core::util::Flags< EnumType, LimitsType, BaseType >::combine ( Flags< EnumType, LimitsType, BaseType > const &  other) const

Combines the flags with another instance.

This will return a flags instance that has all flags set which are set in any of the given instances.

Parameters
otherOther flags to combine with.
Returns
Flags object with the combined flags set.

Definition at line 191 of file Flags.h.

◆ intersect()

template<typename EnumType , typename LimitsType , typename BaseType >
Flags< EnumType, LimitsType, BaseType > imt::base::core::util::Flags< EnumType, LimitsType, BaseType >::intersect ( Flags< EnumType, LimitsType, BaseType > const &  other) const

Intersects the flags with another instance.

This will return a flags instance that has all flags set which are set in both of the given instances.

Parameters
otherOther flags to intersect with.
Returns
Flags object with the intersected flags set.

Definition at line 196 of file Flags.h.

◆ isSet()

template<typename EnumType , typename LimitsType , typename BaseType >
bool imt::base::core::util::Flags< EnumType, LimitsType, BaseType >::isSet ( EnumType const  flag) const

Checks whether the given flag is set.

Parameters
flagFlag to check.
Returns
True if flag is set.

Definition at line 180 of file Flags.h.

◆ set()

template<typename EnumType , typename LimitsType , typename BaseType >
void imt::base::core::util::Flags< EnumType, LimitsType, BaseType >::set ( EnumType const  flag)

Sets the given flag.

Parameters
flagFlag to set.

Definition at line 170 of file Flags.h.

◆ toInteger()

template<typename EnumType , typename LimitsType , typename BaseType >
BaseType const & imt::base::core::util::Flags< EnumType, LimitsType, BaseType >::toInteger

Returns the base type.

Returns
Reference to BaseType representing the flags.

Definition at line 186 of file Flags.h.


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