nngn
Loading...
Searching...
No Matches
nngn::Flags< T > Struct Template Reference

Wrapper for an unsigned integral representing flags. More...

#include <flags.h>

Public Types

using UT = std::underlying_type_t< T >
 
using AT = std::conditional_t< scoped_enum< T >, T, UT >
 
using UT = std::underlying_type_t< T >
 Value type stored in the object.
 
using AT = std::conditional_t< scoped_enum< T >, T, UT >
 Accepted type for integral arguments.
 
using PT = std::common_type_t< UT, int >
 Promoted type after an operation involving Ts.
 

Public Member Functions

constexpr Flags (void)=default
 
constexpr Flags (UT u)
 
constexpr Flags (AT a)
 
constexpr bool is_set (AT a) const
 
constexpr Flagsflip ()
 
constexpr Flagsset (AT a)
 
constexpr Flagsset (AT a, bool b)
 
constexpr Flagsclear (AT a)
 
constexpr Flags check_and_clear (AT a)
 
constexpr operator bool () const
 
constexpr Flags operator~ () const
 
constexpr Flags operator- () const
 
constexpr Flags operator& (AT a) const
 
constexpr Flags operator| (AT a) const
 
constexpr Flags operator^ (AT a) const
 
constexpr Flagsoperator&= (AT a)
 
constexpr Flagsoperator|= (AT a)
 
constexpr Flagsoperator^= (AT a)
 
constexpr Flags operator& (const Flags &f) const
 
constexpr Flags operator| (const Flags &f) const
 
constexpr Flags operator^ (const Flags &f) const
 
constexpr Flagsoperator&= (const Flags &f)
 
constexpr Flagsoperator|= (const Flags &f)
 
constexpr Flagsoperator^= (const Flags &f)
 
constexpr Flags (void)=default
 
constexpr Flags (UT u)
 
constexpr Flags (AT a)
 
constexpr operator T (void) const
 
constexpr T operator* (void) const
 
constexpr Flags operator~ (void) const
 
constexpr Flags operator- (void) const
 
constexpr Flags operator& (AT rhs)
 
constexpr Flags operator| (AT rhs)
 
constexpr Flags operator^ (AT rhs)
 
constexpr Flagsoperator&= (Flags rhs)
 
constexpr Flagsoperator|= (Flags rhs)
 
constexpr Flagsoperator^= (Flags rhs)
 
constexpr bool is_set (AT a) const
 
constexpr Flagscomp (void)
 
constexpr Flagsset (AT a)
 
constexpr Flagsset (AT a, bool b)
 
constexpr Flagsclear (AT a)
 
constexpr Flags check_and_clear (AT a)
 
template<typename U >
constexpr auto cast (U u) -> Flags
 

Static Public Member Functions

template<typename U >
static constexpr Flags cast (U u)
 
static constexpr Flags cast (PT x)
 Creates an object from the result of an expression.
 

Public Attributes

UT t = {}
 
UT v = {}
 

Detailed Description

template<typename T>
struct nngn::Flags< T >

Wrapper for an unsigned integral representing flags.

Wrapper for a small unsigned integral representing flags.

Operations cast the result back to the underlying type to remove the need for explicit casts when it is converted to int.

Member Typedef Documentation

◆ AT [1/2]

template<typename T >
using nngn::Flags< T >::AT = std::conditional_t<scoped_enum<T>, T, UT>

◆ AT [2/2]

template<typename T >
using nngn::Flags< T >::AT = std::conditional_t<scoped_enum<T>, T, UT>

Accepted type for integral arguments.

◆ PT

template<typename T >
using nngn::Flags< T >::PT = std::common_type_t<UT, int>

Promoted type after an operation involving Ts.

◆ UT [1/2]

template<typename T >
using nngn::Flags< T >::UT = std::underlying_type_t<T>

◆ UT [2/2]

template<typename T >
using nngn::Flags< T >::UT = std::underlying_type_t<T>

Value type stored in the object.

Constructor & Destructor Documentation

◆ Flags() [1/6]

template<typename T >
constexpr nngn::Flags< T >::Flags ( void  )
constexprdefault

◆ Flags() [2/6]

template<typename T >
constexpr nngn::Flags< T >::Flags ( UT  u)
inlineconstexpr

◆ Flags() [3/6]

template<typename T >
constexpr nngn::Flags< T >::Flags ( AT  a)
inlineconstexpr
Here is the call graph for this function:

◆ Flags() [4/6]

template<typename T >
constexpr nngn::Flags< T >::Flags ( void  )
constexprdefault

◆ Flags() [5/6]

template<typename T >
constexpr nngn::Flags< T >::Flags ( UT  u)
inlineconstexpr

◆ Flags() [6/6]

template<typename T >
constexpr nngn::Flags< T >::Flags ( AT  a)
inlineconstexpr
Here is the call graph for this function:

Member Function Documentation

◆ cast() [1/3]

template<typename T >
static constexpr Flags nngn::Flags< T >::cast ( PT  x)
inlinestaticconstexpr

Creates an object from the result of an expression.

◆ cast() [2/3]

template<typename T >
template<typename U >
static constexpr Flags nngn::Flags< T >::cast ( u)
staticconstexpr
Here is the caller graph for this function:

◆ cast() [3/3]

template<typename T >
template<typename U >
constexpr auto nngn::Flags< T >::cast ( u) -> Flags
constexpr

◆ check_and_clear() [1/2]

template<typename T >
constexpr auto nngn::Flags< T >::check_and_clear ( AT  a)
constexpr
Here is the caller graph for this function:

◆ check_and_clear() [2/2]

template<typename T >
constexpr Flags nngn::Flags< T >::check_and_clear ( AT  a)
constexpr

◆ clear() [1/2]

template<typename T >
constexpr Flags & nngn::Flags< T >::clear ( AT  a)
inlineconstexpr
Here is the caller graph for this function:

◆ clear() [2/2]

template<typename T >
constexpr Flags & nngn::Flags< T >::clear ( AT  a)
inlineconstexpr

◆ comp()

template<typename T >
constexpr Flags & nngn::Flags< T >::comp ( void  )
inlineconstexpr

◆ flip()

template<typename T >
constexpr Flags & nngn::Flags< T >::flip ( )
inlineconstexpr

◆ is_set() [1/2]

template<typename T >
constexpr bool nngn::Flags< T >::is_set ( AT  a) const
inlineconstexpr
Here is the caller graph for this function:

◆ is_set() [2/2]

template<typename T >
constexpr bool nngn::Flags< T >::is_set ( AT  a) const
inlineconstexpr

◆ operator bool()

template<typename T >
constexpr nngn::Flags< T >::operator bool ( ) const
inlineexplicitconstexpr

◆ operator T()

template<typename T >
constexpr nngn::Flags< T >::operator T ( void  ) const
inlineconstexpr

◆ operator&() [1/3]

template<typename T >
constexpr auto nngn::Flags< T >::operator& ( AT  a) const
constexpr
Here is the call graph for this function:

◆ operator&() [2/3]

template<typename T >
constexpr Flags nngn::Flags< T >::operator& ( AT  rhs)
inlineconstexpr

◆ operator&() [3/3]

template<typename T >
constexpr Flags nngn::Flags< T >::operator& ( const Flags< T > &  f) const
inlineconstexpr
Here is the call graph for this function:

◆ operator&=() [1/3]

template<typename T >
constexpr Flags & nngn::Flags< T >::operator&= ( AT  a)
inlineconstexpr

◆ operator&=() [2/3]

template<typename T >
constexpr Flags & nngn::Flags< T >::operator&= ( const Flags< T > &  f)
inlineconstexpr
Here is the call graph for this function:

◆ operator&=() [3/3]

template<typename T >
constexpr Flags & nngn::Flags< T >::operator&= ( Flags< T rhs)
inlineconstexpr

◆ operator*()

template<typename T >
constexpr T nngn::Flags< T >::operator* ( void  ) const
inlineconstexpr

◆ operator-() [1/2]

template<typename T >
constexpr Flags nngn::Flags< T >::operator- ( ) const
inlineconstexpr
Here is the call graph for this function:

◆ operator-() [2/2]

template<typename T >
constexpr Flags nngn::Flags< T >::operator- ( void  ) const
inlineconstexpr
Here is the call graph for this function:

◆ operator^() [1/3]

template<typename T >
constexpr auto nngn::Flags< T >::operator^ ( AT  a) const
constexpr
Here is the call graph for this function:

◆ operator^() [2/3]

template<typename T >
constexpr Flags nngn::Flags< T >::operator^ ( AT  rhs)
inlineconstexpr

◆ operator^() [3/3]

template<typename T >
constexpr Flags nngn::Flags< T >::operator^ ( const Flags< T > &  f) const
inlineconstexpr
Here is the call graph for this function:

◆ operator^=() [1/3]

template<typename T >
constexpr Flags & nngn::Flags< T >::operator^= ( AT  a)
inlineconstexpr

◆ operator^=() [2/3]

template<typename T >
constexpr Flags & nngn::Flags< T >::operator^= ( const Flags< T > &  f)
inlineconstexpr
Here is the call graph for this function:

◆ operator^=() [3/3]

template<typename T >
constexpr Flags & nngn::Flags< T >::operator^= ( Flags< T rhs)
inlineconstexpr

◆ operator|() [1/3]

template<typename T >
constexpr auto nngn::Flags< T >::operator| ( AT  a) const
constexpr
Here is the call graph for this function:

◆ operator|() [2/3]

template<typename T >
constexpr Flags nngn::Flags< T >::operator| ( AT  rhs)
inlineconstexpr

◆ operator|() [3/3]

template<typename T >
constexpr Flags nngn::Flags< T >::operator| ( const Flags< T > &  f) const
inlineconstexpr
Here is the call graph for this function:

◆ operator|=() [1/3]

template<typename T >
constexpr Flags & nngn::Flags< T >::operator|= ( AT  a)
inlineconstexpr

◆ operator|=() [2/3]

template<typename T >
constexpr Flags & nngn::Flags< T >::operator|= ( const Flags< T > &  f)
inlineconstexpr
Here is the call graph for this function:

◆ operator|=() [3/3]

template<typename T >
constexpr Flags & nngn::Flags< T >::operator|= ( Flags< T rhs)
inlineconstexpr

◆ operator~() [1/2]

template<typename T >
constexpr Flags nngn::Flags< T >::operator~ ( ) const
inlineconstexpr
Here is the call graph for this function:

◆ operator~() [2/2]

template<typename T >
constexpr Flags nngn::Flags< T >::operator~ ( void  ) const
inlineconstexpr
Here is the call graph for this function:

◆ set() [1/4]

template<typename T >
constexpr Flags & nngn::Flags< T >::set ( AT  a)
inlineconstexpr
Here is the caller graph for this function:

◆ set() [2/4]

template<typename T >
constexpr Flags & nngn::Flags< T >::set ( AT  a)
inlineconstexpr

◆ set() [3/4]

template<typename T >
constexpr auto nngn::Flags< T >::set ( AT  a,
bool  b 
)
constexpr
Here is the call graph for this function:

◆ set() [4/4]

template<typename T >
constexpr Flags & nngn::Flags< T >::set ( AT  a,
bool  b 
)
constexpr

Member Data Documentation

◆ t

template<typename T >
UT nngn::Flags< T >::t = {}

◆ v

template<typename T >
UT nngn::Flags< T >::v = {}

The documentation for this struct was generated from the following files: