OpenMS  3.0.0
FlagSet< ENUM > Class Template Reference

Stores and handles combinations of enum values, e.g. a set of flags as bits flipped in an UInt64. More...

#include <OpenMS/DATASTRUCTURES/FlagSet.h>

Public Member Functions

 FlagSet ()
 Constructors. More...
 
 FlagSet (const ENUM &en)
 C'tor from Enum. More...
 
 FlagSet (const FlagSet &stat)=default
 
FlagSetoperator= (const FlagSet &stat)=default
 Assignment. More...
 
FlagSetoperator= (const ENUM &en)=delete
 no Assignment from Enum (would allow implicit conversion) More...
 
 ~FlagSet ()=default
 Destructor (default) More...
 
bool operator== (const FlagSet &stat) const
 Equality. More...
 
FlagSet operator & (const ENUM &en) const
 bitwise AND More...
 
FlagSet operator & (const FlagSet &rhs) const
 bitwise AND More...
 
FlagSetoperator &= (const ENUM &en)
 bitwise AND= More...
 
FlagSetoperator &= (const FlagSet &rhs)
 bitwise AND= More...
 
FlagSet operator| (const ENUM &en) const
 bitwise OR More...
 
FlagSet operator| (const FlagSet &rhs) const
 bitwise OR More...
 
FlagSetoperator|= (const ENUM &en)
 bitwise OR= More...
 
FlagSetoperator|= (const FlagSet &rhs)
 bitwise OR= More...
 
FlagSet operator+ (const ENUM &en) const
 bitwise OR (same as |) More...
 
FlagSet operator+ (const FlagSet &en) const
 bitwise OR (same as |) More...
 
FlagSetoperator+= (const ENUM &rhs)
 bitwise OR= (same as |=) More...
 
FlagSetoperator+= (const FlagSet &rhs)
 bitwise OR= (same as |=) More...
 
FlagSet operator- (const FlagSet &rhs)
 remove all flags set in rhs from this More...
 
FlagSetoperator-= (const FlagSet &rhs)
 remove all flags set in rhs from this More...
 
FlagSet operator- (const ENUM &rhs)
 remove flag in rhs from this More...
 
FlagSetoperator-= (const ENUM &rhs)
 remove flag in rhs from this More...
 
bool isSuperSetOf (const FlagSet &required) const
 Check if this FlagSet has at least the active bits of another required FlagSet. More...
 
bool isSuperSetOf (const ENUM &required) const
 Check if this FlagSet has the bit for required. More...
 
bool empty () const
 checks if any bit is set More...
 
UInt64 value () const
 internal representation (mostly for illustrative purposes) More...
 

Private Member Functions

UInt64 getPow_ (const ENUM &en) const
 computes pow(2, r) More...
 

Private Attributes

UInt64 value_
 

Detailed Description

template<class ENUM>
class OpenMS::FlagSet< ENUM >

Stores and handles combinations of enum values, e.g. a set of flags as bits flipped in an UInt64.

Conversion from the enum is computed as `pow(2, r)`. Thus make sure that 0 <= 'r' <=63 for all enum values. Multiple enum values can be computed by bitwise 'or' (operator|=)

This class allows assignment and bit operations with itself and an object of type ENUM, i.e. not with any numeric types.

Constructor & Destructor Documentation

◆ FlagSet() [1/3]

FlagSet ( )
inline

◆ FlagSet() [2/3]

FlagSet ( const ENUM &  en)
inlineexplicit

C'tor from Enum.

◆ FlagSet() [3/3]

FlagSet ( const FlagSet< ENUM > &  stat)
default

◆ ~FlagSet()

~FlagSet ( )
default

Destructor (default)

Member Function Documentation

◆ empty()

bool empty ( ) const
inline

checks if any bit is set

◆ getPow_()

◆ isSuperSetOf() [1/2]

bool isSuperSetOf ( const FlagSet< ENUM > &  required) const
inline

Check if this FlagSet has at least the active bits of another required FlagSet.

◆ isSuperSetOf() [2/2]

bool isSuperSetOf ( const ENUM &  required) const
inline

Check if this FlagSet has the bit for required.

◆ operator &() [1/2]

FlagSet operator& ( const ENUM &  en) const
inline

bitwise AND

◆ operator &() [2/2]

FlagSet operator& ( const FlagSet< ENUM > &  rhs) const
inline

bitwise AND

◆ operator &=() [1/2]

FlagSet& operator&= ( const ENUM &  en)
inline

bitwise AND=

◆ operator &=() [2/2]

FlagSet& operator&= ( const FlagSet< ENUM > &  rhs)
inline

bitwise AND=

◆ operator+() [1/2]

FlagSet operator+ ( const ENUM &  en) const
inline

bitwise OR (same as |)

◆ operator+() [2/2]

FlagSet operator+ ( const FlagSet< ENUM > &  en) const
inline

bitwise OR (same as |)

◆ operator+=() [1/2]

FlagSet& operator+= ( const ENUM &  rhs)
inline

bitwise OR= (same as |=)

◆ operator+=() [2/2]

FlagSet& operator+= ( const FlagSet< ENUM > &  rhs)
inline

bitwise OR= (same as |=)

◆ operator-() [1/2]

FlagSet operator- ( const FlagSet< ENUM > &  rhs)
inline

remove all flags set in rhs from this

◆ operator-() [2/2]

FlagSet operator- ( const ENUM &  rhs)
inline

remove flag in rhs from this

◆ operator-=() [1/2]

FlagSet& operator-= ( const FlagSet< ENUM > &  rhs)
inline

remove all flags set in rhs from this

◆ operator-=() [2/2]

FlagSet& operator-= ( const ENUM &  rhs)
inline

remove flag in rhs from this

◆ operator=() [1/2]

FlagSet& operator= ( const FlagSet< ENUM > &  stat)
default

Assignment.

◆ operator=() [2/2]

FlagSet& operator= ( const ENUM &  en)
delete

no Assignment from Enum (would allow implicit conversion)

◆ operator==()

bool operator== ( const FlagSet< ENUM > &  stat) const
inline

Equality.

◆ operator|() [1/2]

FlagSet operator| ( const ENUM &  en) const
inline

bitwise OR

◆ operator|() [2/2]

FlagSet operator| ( const FlagSet< ENUM > &  rhs) const
inline

bitwise OR

◆ operator|=() [1/2]

FlagSet& operator|= ( const ENUM &  en)
inline

bitwise OR=

◆ operator|=() [2/2]

FlagSet& operator|= ( const FlagSet< ENUM > &  rhs)
inline

bitwise OR=

◆ value()

UInt64 value ( ) const
inline

internal representation (mostly for illustrative purposes)

Member Data Documentation

◆ value_