Regina Calculation Engine
Public Member Functions | Friends | List of all members
regina::Qitmask1< T > Class Template Reference

A small but extremely fast "base 4 bitmask" class that can store up to 8 * sizeof(T) "qits", each equal to 0, 1, 2 or 3. More...

#include <utilities/qitmask.h>

Public Member Functions

 Qitmask1 ()
 Creates a new qitmask with all qits set to 0. More...
 
 Qitmask1 (const Qitmask1< T > &cloneMe)=default
 Creates a clone of the given qitmask. More...
 
void reset ()
 Sets all qits of this qitmask to 0. More...
 
Qitmask1< T > & operator= (const Qitmask1< T > &other)=default
 Sets this qitmask to a copy of the given qitmask. More...
 
char get (unsigned index) const
 Returns the value of the given qit in this qitmask. More...
 
void set (unsigned index, char value)
 Sets the given qit of this qitmask to the given value. More...
 
bool empty () const
 Determines whether this qitmask contains all zeroes. More...
 
bool nonEmpty () const
 Determines whether this qitmask contains at least one non-zero qit. More...
 
bool has3 () const
 Determines whether this qitmask contains at least one qit with value 3. More...
 
Qitmask1< T > & operator+= (const Qitmask1< T > &rhs)
 Sets this to the sum of this and the given qitmask. More...
 
Qitmask1< T > & operator-= (const Qitmask1< T > &rhs)
 Sets this to the difference of this and the given qitmask. More...
 
bool operator== (const Qitmask1< T > &other) const
 Determines whether this and the given qitmask are identical. More...
 
bool hasNonZeroMatch (const Qitmask1< T > &other) const
 Determines whether there is some index at which both this and the given qitmask both have non-zero qits. More...
 

Friends

std::ostream & operator (std::ostream &out, const Qitmask1< T > &mask)
 

Detailed Description

template<typename T>
class regina::Qitmask1< T >

A small but extremely fast "base 4 bitmask" class that can store up to 8 * sizeof(T) "qits", each equal to 0, 1, 2 or 3.

This qitmask packs all of the qits together into two variables of type T. This means that operations on qitmasks are extremely fast, because all of the qits can be processed in just a few native CPU operations.

The downside of course is that the number of qits that can be stored is limited to 8 * sizeof(T), where T must be a native unsigned integer type (such as unsigned char, unsigned int, or unsigned long long).

For another extremely fast qitmask class that can store twice as many qits, see Qitmask2. At present there is no qitmask class in Regina that can store arbitrarily many qits.

Precondition
Type T is an unsigned integral numeric type.
Python
Not present.

The documentation for this class was generated from the following file:

Copyright © 1999-2021, The Regina development team
This software is released under the GNU General Public License, with some additional permissions; see the source code for details.
For further information, or to submit a bug or other problem, please contact Ben Burton (bab@maths.uq.edu.au).