Regina Calculation Engine
Public Types | Static Public Member Functions | List of all members
regina::BitManipulator< T, size > Class Template Reference

An optimised class for bitwise analysis and manipulation of native data types. More...

#include <utilities/bitmanip.h>

Inheritance diagram for regina::BitManipulator< T, size >:
regina::GenericBitManipulator< T, size >

Public Types

enum  { specialised = 0 }
 

Static Public Member Functions

static int bits (T x)
 Returns the number of bits that are set in the given integer. More...
 
static int firstBit (T x)
 Returns the index of the first true bit in the given integer, or -1 if the given integer is zero. More...
 
static int lastBit (T x)
 Returns the index of the last true bit in the given integer, or -1 if the given integer is zero. More...
 

Detailed Description

template<typename T, unsigned size = sizeof(T)>
class regina::BitManipulator< T, size >

An optimised class for bitwise analysis and manipulation of native data types.

The class BitManipulator<T, size> is used to manipulate the lowest size bytes of type T, which must be an unsigned native integer type such as unsigned char, unsigned int, or unsigned long long.

The generic implementation of BitManipulator is here for completeness. All or most native types T have template specialisations that are carefully optimised (precisely what gets specialised depends upon properties of the compiler).

Like this class, all specialisations either inherit or override the default implementations from the base class GenericBitManipulator.

Precondition
Type T is an unsigned integral numeric type.
The argument size is a power of two, and is at most sizeof(T).
Python:\n Not present.

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

Copyright © 1999-2016, 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).