Regina 7.4 Calculation Engine
|
A class representing a bitwise combination of flags defined by an enumeration type. More...
#include <utilities/flags.h>
Public Types | |
using | Enum = T |
The underlying enumeration type. | |
Public Member Functions | |
constexpr | Flags () |
Creates an empty flag set, with no flags set at all. | |
constexpr | Flags (T init) |
Creates a flag set initialised to the given value. | |
constexpr | Flags (const Flags< T > &)=default |
Creates a clone of the given flag set. | |
constexpr int | intValue () const |
Returns the integer representation of this set. | |
constexpr | operator bool () const |
Determines whether this flag set is non-empty. | |
constexpr bool | has (T flag) const |
Returns whether the given flag is set. | |
constexpr bool | has (const Flags< T > &rhs) const |
Returns whether all of the flags in the given set are set. | |
constexpr bool | operator== (T rhs) const |
Determines whether this set is precisely equal to the given flag. | |
constexpr bool | operator== (const Flags< T > &) const =default |
Determines whether this set is precisely equal to the given flag set. | |
constexpr Flags< T > & | operator= (T rhs) |
Sets this flag set to contain precisely the given flag only. | |
constexpr Flags< T > & | operator= (const Flags< T > &)=default |
Sets this flag set to contain a copy of the given flag set. | |
constexpr Flags< T > & | operator|= (T rhs) |
Changes this flag set by taking a bitwise OR with the given flag. | |
constexpr Flags< T > & | operator|= (const Flags< T > &rhs) |
Changes this flag set by taking a bitwise OR with the given flag set. | |
constexpr Flags< T > & | operator&= (T rhs) |
Changes this flag set by taking a bitwise AND with the given flag. | |
constexpr Flags< T > & | operator&= (const Flags< T > &rhs) |
Changes this flag set by taking a bitwise AND with the given flag set. | |
constexpr Flags< T > & | operator^= (T rhs) |
Changes this flag set by taking a bitwise XOR with the given flag. | |
constexpr Flags< T > & | operator^= (const Flags< T > &rhs) |
Changes this flag set by taking a bitwise XOR with the given flag set. | |
constexpr Flags< T > | operator| (T rhs) const |
Returns the bitwise OR of this set and the given flag. | |
constexpr Flags< T > | operator| (const Flags< T > &rhs) const |
Returns the bitwise OR of this and the given flag set. | |
constexpr Flags< T > | operator& (T rhs) const |
Returns the bitwise AND of this set and the given flag. | |
constexpr Flags< T > | operator& (const Flags< T > &rhs) const |
Returns the bitwise AND of this and the given flag set. | |
constexpr Flags< T > | operator^ (T rhs) const |
Returns the bitwise XOR of this set and the given flag. | |
constexpr Flags< T > | operator^ (const Flags< T > &rhs) const |
Returns the bitwise XOR of this and the given flag set. | |
constexpr void | clear (T rhs) |
Clears all bits from this set that appear in the given flag. | |
constexpr void | clear (const Flags< T > &rhs) |
Clears all bits from this set that appear in the given set. | |
constexpr void | ensureOne (T default_, T other) |
Adjust this set so that exactly one and only one of the two given flags are included. | |
constexpr void | ensureOne (T default_, T second, T last) |
Adjust this set so that exactly one and only one of the three given flags are included. | |
constexpr void | ensureOne (T default_, T second, T third, T last) |
Adjust this set so that exactly one and only one of the four given flags are included. | |
Static Public Member Functions | |
static constexpr Flags< T > | fromInt (int value) |
Returns the set corresponding to the given integer value. | |
A class representing a bitwise combination of flags defined by an enumeration type.
The enumeration type is given in the template parameter T. This class allows the user to form and test bitwise combinations of the individual enum values, without losing type safety.
There is usually no need for end users to refer to the type Flags<T>
explicitly by name. If a function takes an argument of type Flags<T>
, then you can pass a single flag of type T, or a bitwise combination of such flags (flag1 | flag2)
, or empty braces {}
to indicate no flags at all.
These objects are small enough to pass by value and swap with std::swap(), with no need for any specialised move operations or swap functions.
Flags_
; for instance, the C++ type Flags<NormalAlg>
will appear in Python as Flags_NormalAlg
.T | the enumeration type holding the individual flags that can be combined. This may be a scoped or unscoped enumeration; however, for now we do insist that the underlying native integer type is int . |
using regina::Flags< T >::Enum = T |
The underlying enumeration type.
|
inlineconstexpr |
Creates an empty flag set, with no flags set at all.
|
inlineconstexpr |
Creates a flag set initialised to the given value.
init | the initial value of this flag set. |
|
inlineconstexprdefault |
Creates a clone of the given flag set.
|
inlineconstexpr |
Clears all bits from this set that appear in the given set.
rhs | identifies the bits to clear from this set. |
|
inlineconstexpr |
Clears all bits from this set that appear in the given flag.
rhs | the flag to clear from this set. |
|
inlineconstexpr |
Adjust this set so that exactly one and only one of the two given flags are included.
If neither flag is present or both flags are present, this set will be adjusted so that default_ is present and other is not.
default_ | the flag that will be set if any adjustments need to be made. |
other | the flag that will be cleared if any adjustments need to be made. |
|
inlineconstexpr |
Adjust this set so that exactly one and only one of the three given flags are included.
If neither flag is present, then default_ will be used. If multiple flags are present, then the flag that appears earlier in the argument list for this routine will be used.
default_ | the highest-priority flag. |
second | the second-highest-priority flag. |
last | the lowest-priority flag. |
|
inlineconstexpr |
Adjust this set so that exactly one and only one of the four given flags are included.
If neither flag is present, then default_ will be used. If multiple flags are present, then the flag that appears earlier in the argument list for this routine will be used.
default_ | the highest-priority flag. |
second | the second-highest-priority flag. |
third | the third-highest-priority flag. |
last | the lowest-priority flag. |
|
inlinestaticconstexpr |
Returns the set corresponding to the given integer value.
This is suitable for file input and/or output.
|
inlineconstexpr |
Returns whether all of the flags in the given set are set.
This requires all of the bits of all of the flags in the given set to be present in this set. The test is equivalent to (*this & rhs) == rhs
.
rhs | the set whose presence will be tested. |
true
if and only if all of the bits of the given set are present in this set.
|
inlineconstexpr |
Returns whether the given flag is set.
This requires all of the bits of the given flag to be set. The test is equivalent to (*this & flag) == flag
.
flag | the flag whose presence will be tested. |
true
if and only if all of the bits of the given flag are set.
|
inlineconstexpr |
Returns the integer representation of this set.
This is suitable for file input and/or output.
|
inlineconstexpr |
Determines whether this flag set is non-empty.
An empty flag set has no bits set at all.
true
if and only if this flag set is non-empty.
|
inlineconstexpr |
Returns the bitwise AND of this and the given flag set.
This flag set is not changed.
rhs | the flag set to combine with this set. |
|
inlineconstexpr |
Returns the bitwise AND of this set and the given flag.
This flag set is not changed.
rhs | the flag to combine with this set. |
|
inlineconstexpr |
Changes this flag set by taking a bitwise AND with the given flag set.
rhs | the flag set to combine with this set. |
|
inlineconstexpr |
Changes this flag set by taking a bitwise AND with the given flag.
rhs | the flag to combine with this set. |
|
constexprdefault |
Sets this flag set to contain a copy of the given flag set.
|
inlineconstexpr |
Sets this flag set to contain precisely the given flag only.
rhs | the new value of this flag set. |
|
constexprdefault |
Determines whether this set is precisely equal to the given flag set.
true
if and only if this and the given flag set are identical.
|
inlineconstexpr |
Determines whether this set is precisely equal to the given flag.
rhs | the flag to test this against. |
true
if and only if this and the given flag are identical.
|
inlineconstexpr |
Returns the bitwise XOR of this and the given flag set.
This flag set is not changed.
rhs | the flag set to combine with this set. |
|
inlineconstexpr |
Returns the bitwise XOR of this set and the given flag.
This flag set is not changed.
rhs | the flag to combine with this set. |
|
inlineconstexpr |
Changes this flag set by taking a bitwise XOR with the given flag set.
rhs | the flag set to combine with this set. |
|
inlineconstexpr |
Changes this flag set by taking a bitwise XOR with the given flag.
rhs | the flag to combine with this set. |
|
inlineconstexpr |
Returns the bitwise OR of this and the given flag set.
This flag set is not changed.
rhs | the flag set to combine with this set. |
|
inlineconstexpr |
Returns the bitwise OR of this set and the given flag.
This flag set is not changed.
rhs | the flag to combine with this set. |
|
inlineconstexpr |
Changes this flag set by taking a bitwise OR with the given flag set.
rhs | the flag set to combine with this set. |
|
inlineconstexpr |
Changes this flag set by taking a bitwise OR with the given flag.
rhs | the flag to combine with this set. |