ROSE 0.11.145.147
|
Stores a vector of enum bit flags.
This is a more self-documenting and terse way to use bit flags. For example, consider this original code:
Now rewritten to use this class:
Definition at line 60 of file Rose/BitFlags.h.
#include <Rose/BitFlags.h>
Public Types | |
typedef E | Enum |
typedef V | Vector |
Public Types inherited from Sawyer::BitFlags< E, V > | |
typedef E | Enum |
typedef V | Vector |
Public Member Functions | |
BitFlags () | |
Default constructor with all bits clear. | |
BitFlags (Vector v) | |
Construct bit vector from value or bit. | |
BitFlags (Sawyer::BitFlags< E, V > bf) | |
std::string | toString (std::vector< int64_t > constants, const char *(*stringifier)(int64_t)) const |
Convert to string. | |
Public Member Functions inherited from Sawyer::BitFlags< E, V > | |
BitFlags () | |
Default constructor with all bits clear. | |
BitFlags (Vector v) | |
Construct bit vector from value or bit. | |
BitFlags (E e) | |
BitFlags (const BitFlags &other) | |
Copy constructor. | |
Vector | vector () const |
Current value of the bit vector. | |
bool | isSet (Enum e) const |
Test whether a bit is set. | |
bool | isAllSet (BitFlags other) const |
True if all specified bits are set. | |
bool | isAnySet (BitFlags other) const |
True if any of the specified bits are set. | |
bool | isAnySet () const |
True if any bit is set. | |
bool | isEmpty () const |
True if no bits are set. | |
bool | isClear (Enum e) const |
Test whether a bit is clear. | |
BitFlags & | set (Enum e) |
Set the specified bit. | |
BitFlags & | set (BitFlags other) |
Set all bits that are set in other . | |
BitFlags & | clear (Enum e) |
Clear the specified bit. | |
BitFlags & | clear (BitFlags other) |
Clear all bits that are set in other . | |
BitFlags & | clear () |
Clear all bits. | |
bool | testAndClear (Enum e) |
Test whether a bit is set, then clear it. | |
bool | testAndSet (Enum e) |
Test whether a bit is set, then set it. | |
BitFlags & | operator= (Vector v) |
Set the vector to an exact value. | |
BitFlags & | operator= (BitFlags other) |
Set the vector to the same as another. | |
std::vector< Enum > | split (std::vector< int64_t > constants, Vector &leftovers) const |
Split a vector into the individual enum values. | |
std::vector< Enum > | split () const |
Split a vector into the individual bits values. | |
BitFlags | operator| (BitFlags other) const |
Create a new vector that's the union of two vectors. | |
BitFlags | operator| (Enum e) const |
Create a new vector that's the union of two vectors. | |
BitFlags | intersection (BitFlags other) const |
Create a new vector that's the intersection of two vectors. | |
BitFlags | intersection (Enum e) const |
Create a new vector that's the intersection of two vectors. | |
BitFlags | operator& (BitFlags other) const |
Create a new vector that's the intersection of two vectors. | |
BitFlags | operator& (Enum e) const |
Create a new vector that's the intersection of two vectors. | |
bool | operator== (BitFlags other) const |
Compare two vectors. | |
bool | operator!= (BitFlags other) const |
Compare two vectors. | |
bool | operator< (BitFlags other) const |
Compare two vectors. | |
bool | operator<= (BitFlags other) const |
Compare two vectors. | |
bool | operator> (BitFlags other) const |
Compare two vectors. | |
bool | operator>= (BitFlags other) const |
Compare two vectors. | |
typedef E Rose::BitFlags< E, V >::Enum |
Definition at line 62 of file Rose/BitFlags.h.
typedef V Rose::BitFlags< E, V >::Vector |
Definition at line 63 of file Rose/BitFlags.h.
|
inline |
Default constructor with all bits clear.
Definition at line 66 of file Rose/BitFlags.h.
|
inline |
Construct bit vector from value or bit.
Definition at line 70 of file Rose/BitFlags.h.
|
inline |
Definition at line 73 of file Rose/BitFlags.h.
|
inline |
Convert to string.
Converts a bit vector to a string of the form "NAME1|NAME2|...". The constants
are the individual enum flags, and the stringifier
is a function that converts each of those constants to strings.
Definition at line 80 of file Rose/BitFlags.h.
References Sawyer::BitFlags< E, V >::split(), and Sawyer::BitFlags< E, V >::vector().