regina::BitManipulator< T, size > Class Template Reference
Miscellaneous Utilities

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

`#include <utilities/bitmanip.h>`

Inheritance diagram for regina::BitManipulator< 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:

- utilities/bitmanip.h

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).