Regina 7.3 Calculation Engine
|
A set of booleans. More...
#include <utilities/boolset.h>
Public Member Functions | |
constexpr | BoolSet () |
Creates a new empty set. More... | |
constexpr | BoolSet (bool member) |
Creates a set containing a single boolean, which is passed as an argument. More... | |
constexpr | BoolSet (const BoolSet &src)=default |
Creates a clone of the given set. More... | |
constexpr | BoolSet (bool insertTrue, bool insertFalse) |
Creates a set specifying whether true and/or false should be a member. More... | |
constexpr bool | hasTrue () const |
Determines if true is a member of this set. More... | |
constexpr bool | hasFalse () const |
Determines if false is a member of this set. More... | |
constexpr bool | contains (bool value) const |
Determines if the given boolean is a member of this set. More... | |
void | insertTrue () |
Inserts true into this set if it is not already present. More... | |
void | insertFalse () |
Inserts false into this set if it is not already present. More... | |
void | removeTrue () |
Removes true from this set if it is present. More... | |
void | removeFalse () |
Removes false from this set if it is present. More... | |
void | empty () |
Removes all elements from this set. More... | |
void | fill () |
Places both true and false into this set if they are not already present. More... | |
constexpr bool | operator== (BoolSet other) const |
Determines if this set is equal to the given set. More... | |
constexpr bool | operator!= (BoolSet other) const |
Determines if this set is not equal to the given set. More... | |
constexpr bool | operator< (BoolSet other) const |
Determines if this set is a proper subset of the given set. More... | |
constexpr bool | operator> (BoolSet other) const |
Determines if this set is a proper superset of the given set. More... | |
constexpr bool | operator<= (BoolSet other) const |
Determines if this set is a subset of (possibly equal to) the given set. More... | |
constexpr bool | operator>= (BoolSet other) const |
Determines if this set is a superset of (possibly equal to) the given set. More... | |
BoolSet & | operator= (const BoolSet &cloneMe)=default |
Sets this set to be identical to the given set. More... | |
BoolSet & | operator= (bool member) |
Sets this set to the single member set containing the given element. More... | |
BoolSet & | operator|= (BoolSet other) |
Sets this set to be the union of this and the given set. More... | |
BoolSet & | operator&= (BoolSet other) |
Sets this set to be the intersection of this and the given set. More... | |
BoolSet & | operator^= (BoolSet other) |
Sets this set to be the symmetric difference of this and the given set. More... | |
constexpr BoolSet | operator| (BoolSet other) const |
Returns the union of this set with the given set. More... | |
constexpr BoolSet | operator& (BoolSet other) const |
Returns the intersection of this set with the given set. More... | |
constexpr BoolSet | operator^ (BoolSet other) const |
Returns the symmetric difference of this set and the given set. More... | |
constexpr BoolSet | operator~ () const |
Returns the complement of this set. More... | |
constexpr unsigned char | byteCode () const |
Returns the byte code representing this boolean set. More... | |
bool | setByteCode (unsigned char code) |
Sets this to be the boolean set represented by the given byte code. More... | |
const char * | stringCode () const |
Returns the string code representing this boolean set. More... | |
bool | setStringCode (const std::string &code) |
Sets this to be the boolean set represented by the given string code. More... | |
Static Public Member Functions | |
static constexpr BoolSet | fromByteCode (unsigned char code) |
Creates a boolean set from the given byte code. More... | |
Friends | |
std::ostream & | operator<< (std::ostream &out, BoolSet set) |
Writes the given boolean set to the given output stream. More... | |
A set of booleans.
Note that there are only four possible such sets.
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.
|
inlineconstexpr |
Creates a new empty set.
|
inlineconstexpr |
Creates a set containing a single boolean, which is passed as an argument.
member | the single element to include in this set. |
|
constexprdefault |
Creates a clone of the given set.
src | the set to clone. |
|
inlineconstexpr |
Creates a set specifying whether true
and/or false
should be a member.
insertTrue | should the new set include the element true ? |
insertFalse | should the new set include the element false ? |
|
inlineconstexpr |
Returns the byte code representing this boolean set.
The byte code is sufficient to reconstruct the set and is thus a useful means for passing boolean sets to and from the engine.
The lowest order bit of the byte code is 1 if and only if true
is in the set. The next lowest order bit is 1 if and only if false
is in the set. All other bits are 0. Therefore sets {}, {true}, {false} and {true, false} have byte codes 0, 1, 2 and 3 respectively.
|
inlineconstexpr |
Determines if the given boolean is a member of this set.
value | the boolean to search for in this set. |
true
if and only if the given boolean is a member of this set.
|
inline |
Removes all elements from this set.
|
inline |
Places both true
and false
into this set if they are not already present.
|
inlinestaticconstexpr |
Creates a boolean set from the given byte code.
See byteCode() for more information on byte codes.
code | the byte code from which the new set will be created. |
|
inlineconstexpr |
Determines if false
is a member of this set.
true
if and only if false
is a member of this set.
|
inlineconstexpr |
Determines if true
is a member of this set.
true
if and only if true
is a member of this set.
|
inline |
Inserts false
into this set if it is not already present.
|
inline |
Inserts true
into this set if it is not already present.
|
inlineconstexpr |
Determines if this set is not equal to the given set.
other | the set to compare with this. |
true
if and only if this and the given set are not equal. Returns the intersection of this set with the given set.
The result is a set containing precisely the elements that belong to both original sets. This set is not changed.
other | the set to intersect with this set. |
Sets this set to be the intersection of this and the given set.
The result is a set containing precisely the elements that belong to both original sets. Note that this set will be modified.
other | the set to intersect with this set. |
|
inlineconstexpr |
Determines if this set is a proper subset of the given set.
other | the set to compare with this. |
true
if and only if this is a proper subset of the given set.
|
inlineconstexpr |
Determines if this set is a subset of (possibly equal to) the given set.
other | the set to compare with this. |
true
if and only if this is a subset of the given set.
|
inline |
Sets this set to the single member set containing the given element.
member | the single element to include in this set. |
Sets this set to be identical to the given set.
cloneMe | the set whose value this set will take. |
|
inlineconstexpr |
Determines if this set is equal to the given set.
other | the set to compare with this. |
true
if and only if this and the given set are equal.
|
inlineconstexpr |
Determines if this set is a proper superset of the given set.
other | the set to compare with this. |
true
if and only if this is a proper superset of the given set.
|
inlineconstexpr |
Determines if this set is a superset of (possibly equal to) the given set.
other | the set to compare with this. |
true
if and only if this is a superset of the given set. Returns the symmetric difference of this set and the given set.
The result is a set containing precisely the elements that belong to one but not both of the original sets. This set is not changed.
other | the set whose symmetric difference with this set is to be found. |
Sets this set to be the symmetric difference of this and the given set.
The result is a set containing precisely the elements that belong to one but not both of the original sets. Note that this set will be modified.
other | the set whose symmetric difference with this set is to be found. |
Returns the union of this set with the given set.
The result is a set containing precisely the elements that belong to either of the original sets. This set is not changed.
other | the set to union with this set. |
Sets this set to be the union of this and the given set.
The result is a set containing precisely the elements that belong to either of the original sets. Note that this set will be modified.
other | the set to union with this set. |
|
inlineconstexpr |
Returns the complement of this set.
The result is a set containing precisely the elements that this set does not contain. This set is not changed.
|
inline |
Removes false
from this set if it is present.
|
inline |
Removes true
from this set if it is present.
|
inline |
Sets this to be the boolean set represented by the given byte code.
See byteCode() for more information on byte codes.
If code is not a value byte code, then this routine will do nothing and return false
.
code | the byte code that will determine the new value of this set. |
true
if and only if code
is a valid byte code. bool regina::BoolSet::setStringCode | ( | const std::string & | code | ) |
Sets this to be the boolean set represented by the given string code.
See stringCode() for more information on string codes.
If code is not a value string code, then this routine will do nothing and return false
.
code | the string code that will determine the new value of this set. |
true
if and only if code
is a valid string code.
|
inline |
Returns the string code representing this boolean set.
String codes are a more human-readable alternative to byte codes; in particular, they are used in XML data files.
Every string code contains precisely two characters (plus a terminating null). Sets {}, {true}, {false} and {true, false} have string codes --
, T-
, -F
and TF
respectively.
|
friend |
Writes the given boolean set to the given output stream.
The set will be written in the form { true, false }
, { true }
, { false }
or { }
.
out | the output stream to which to write. |
set | the boolean set to write. |