Loading...
Searching...
No Matches
casacore::BitVector Class Reference
casa package (libcasa_casa) » Utilities_module

More...

`#include <BitVector.h>`

## Public Member Functions

| BitVector ()
| Create a bit vector of length 0.
| BitVector (uInt length, Bool state)
| Create a bit vector with length bits and set all bits to to the specified state.
| BitVector (const BitVector &that)
| Copy constructor (copy semantics).
| ~BitVector ()
| Delete the bit vector.
BitVector & | operator= (const BitVector &that)
| Assignment (copy semantics).
BitVector & | operator= (Bool state)
| Set all bits to the given state.
uInt | nbits () const
| Return the number of bits in the bitvector.
void | setBit (uInt pos)
| Set a bit at the given position (0-relative).
void | clearBit (uInt pos)
| Clear a bit at the given position (0-relative).
Bool | toggleBit (uInt pos)
| Toggle a bit at the given position (0-relative).
Bool | getBit (uInt pos) const
| Get a bit at the given position (0-relative).
void | putBit (uInt pos, Bool state)
| Set a bit at the given position (0-relative) to the given state.
Bool | operator[] (uInt pos) const
| Index operator to access the specified bit.
BitVectorHelper | operator[] (uInt pos)
BitVector | operator& (const BitVector &that) const
| Logical operations on whole bit vectors.
BitVector | operator| (const BitVector &that) const
BitVector | operator^ (const BitVector &that) const
BitVector | operator~ () const
void | operator&= (const BitVector &that)
| Logical in-place operations on whole bit vectors.
void | operator|= (const BitVector &that)
void | operator^= (const BitVector &that)
void | reverse ()
Bool | operator== (const BitVector &that) const
| Returns True if all bits are equal.
Bool | operator!= (const BitVector &that) const
| Returns True if a bit differs.
void | resize (uInt length, Bool state=False, Bool copy=True)
| Resize the bit vector to the new length.
void | set (Bool state)
| Set all bits of the bit vector to the specified state.
void | set (uInt start, uInt length, Bool state)
| Set length bits starting at the start position (0-relative) to the given state.
void | copy (uInt thisStart, uInt length, const BitVector &that, uInt thatStart)
| Copy length bits starting at thatStart in the other BitVector to this BitVector starting at thisStart.

## Private Attributes

uInt | size_p
| Number of bits in the BitVector object.
Block< uInt > | bits_p
| Pointer to the actual bit vector, stored as a contiguous sequence of one or more unsigned integers.

## Friends

class | BitVectorHelper
| BitVectorHelper is a helper class.
ostream & | operator<< (ostream &, const BitVector &vector)
| Write a representation of the bit vector (a list of zeros and ones enclosed in square parentheses) to ostream.

## Detailed Description

Bit vectors of any size

### Intended use:

Public interface

### Review Status

Reviewed By:
  Friso Olnon
Date Reviewed:
  1995/03/13
Test programs:
  tBitVector

### Etymology

A variable utilized as a discrete collection of bits is referred to as a bit vector.

### Synopsis

Bit vectors are an efficent method of keeping True/False information on a set of items or conditions. Class BitVector provides functions to manipulate individual bits in the vector and to perform logical operations on whole bit vectors.

### Example

// Create a bit vector with 20 bits (and set them all to False).
BitVector bv (20, False);
// Change some individual bits:
// Turn On (make True) bit 19.
bv.setBit (19);
// Turn Off (make False) bit 12 (superfluous here).
bv.clearBit (12);
// Toggle bit 5 (here: change value from 0 (False) to 1 (True)).
bv.toggleBit (5)
// Another way of setting a bit using the index operator.
bv[0] = True;
// Assign the value of bit 0 to bit 1 (in three ways).
bv[1] = bv.getBit(0);
bv[1] = bv[0];
bv.putBit (1, bv.getBit(0));
// Show the bit vector size and its value on standard output.
cout << "Size of bit vector: "<< b.nbits() <<"\n";
cout << "Value of bit vector: "<< bv <<"\n";
// Perform logical operations on bit vectors.
// Create two more bit vectors.
BitVector bv2 (40, False);
BitVector bv3 (40, True);
// bitwise OR
bv = bv2 | bv3;
// bitwise AND
bv = bv2 & bv3;
// bitwise XOR
bv = bv2 ^ bv3;
// bitwise NOT
bv = ~bv2;
// Reset all bits to False, and then to True
bv = False;
bv.set (True);
// Change the vector's size to 10 (and copy the old values).
bv.resize (10);
// Change back to original size and set all bits to True.
void bv.resize (size, True, False);
casacore::BitVector::BitVector
BitVector()
Create a bit vector of length 0.
casacore::False
const Bool False
Definition aipstype.h:42
casacore::size
size_t size() const
Definition Block.h:557
casacore::True
const Bool True
Definition aipstype.h:41

Definition at line 110 of file BitVector.h.

## Constructor & Destructor Documentation

## BitVector() [1/3]

casacore::BitVector::BitVector | ( |  | ) |

Create a bit vector of length 0.

Referenced by BitVector(), copy(), operator!=(), operator&(), operator&=(), operator<<, operator=(), operator=(), operator==(), operator^(), operator^=(), operator|(), operator|=(), and operator~().

## BitVector() [2/3]

casacore::BitVector::BitVector | ( | uInt | length,
|  | Bool | state )

Create a bit vector with length bits and set all bits to to the specified state.

References casacore::length().

## BitVector() [3/3]

casacore::BitVector::BitVector | ( | const BitVector & | that | ) |

Copy constructor (copy semantics).

References BitVector().

## ~BitVector()

casacore::BitVector::~BitVector | ( |  | ) |

Delete the bit vector.

## Member Function Documentation

## clearBit()

void casacore::BitVector::clearBit | ( | uInt | pos | ) |

inline

Clear a bit at the given position (0-relative).

In debug-mode an exception is thrown when the position is invalid.

Definition at line 288 of file BitVector.h.

References bits_p, DebugAssert, size_p, and casacore::WORDSIZE.

## copy()

void casacore::BitVector::copy | ( | uInt | thisStart,
|  | uInt | length,
|  | const BitVector & | that,
|  | uInt | thatStart )

Copy length bits starting at thatStart in the other BitVector to this BitVector starting at thisStart.

References BitVector(), and casacore::length().

Referenced by resize().

## getBit()

Bool casacore::BitVector::getBit | ( | uInt | pos | ) | const

Get a bit at the given position (0-relative).

In debug-mode an exception is thrown when the position is invalid.

Referenced by operator[]().

## nbits()

uInt casacore::BitVector::nbits | ( |  | ) | const

inline

Return the number of bits in the bitvector.

Definition at line 300 of file BitVector.h.

References size_p.

## operator!=()

Bool casacore::BitVector::operator!= | ( | const BitVector & | that | ) | const

Returns True if a bit differs.

An exception is thrown if the lengths of the vectors differ.

References BitVector().

## operator&()

BitVector casacore::BitVector::operator& | ( | const BitVector & | that | ) | const

Logical operations on whole bit vectors.

The binary operators & (bitwise AND), | (bitwise OR) and ^ (bitwise XOR), and the unary operator ~ (bitwise NOT) are provided. An exception is thrown if the lengths of the vectors differ.

References BitVector().

## operator&=()

void casacore::BitVector::operator&= | ( | const BitVector & | that | ) |

Logical in-place operations on whole bit vectors.

The binary operators & (bitwise AND), | (bitwise OR) and ^ (bitwise XOR), and the unary operator reverse (bitwise NOT) are provided. An exception is thrown if the lengths of the vectors differ.

References BitVector().

## operator=() [1/2]

BitVector & casacore::BitVector::operator= | ( | Bool | state | ) |

Set all bits to the given state.

References BitVector().

## operator=() [2/2]

BitVector & casacore::BitVector::operator= | ( | const BitVector & | that | ) |

Assignment (copy semantics).

References BitVector().

## operator==()

Bool casacore::BitVector::operator== | ( | const BitVector & | that | ) | const

Returns True if all bits are equal.

An exception is thrown if the lengths of the vectors differ.

References BitVector().

## operator[]() [1/2]

BitVectorHelper casacore::BitVector::operator[] | ( | uInt | pos | ) |

inline

Definition at line 311 of file BitVector.h.

References BitVectorHelper.

## operator[]() [2/2]

Bool casacore::BitVector::operator[] | ( | uInt | pos | ) | const

inline

Index operator to access the specified bit.

In debug-mode an exception is thrown when the position is invalid.

Definition at line 295 of file BitVector.h.

References getBit().

## operator^()

BitVector casacore::BitVector::operator^ | ( | const BitVector & | that | ) | const

References BitVector().

## operator^=()

void casacore::BitVector::operator^= | ( | const BitVector & | that | ) |

References BitVector().

## operator|()

BitVector casacore::BitVector::operator| | ( | const BitVector & | that | ) | const

References BitVector().

## operator|=()

void casacore::BitVector::operator|= | ( | const BitVector & | that | ) |

References BitVector().

## operator~()

BitVector casacore::BitVector::operator~ | ( |  | ) | const

References BitVector().

## putBit()

void casacore::BitVector::putBit | ( | uInt | pos,
|  | Bool | state )

Set a bit at the given position (0-relative) to the given state.

In debug-mode an exception is thrown when the position is invalid.

References BitVectorHelper.

## resize()

void casacore::BitVector::resize | ( | uInt | length,
|  | Bool | state = False,
|  | Bool | copy = True )

Resize the bit vector to the new length.

By default the original bits are copied. The remaining bits (or all bits in case of no copy) are set the the given state.

References copy(), casacore::False, casacore::length(), and casacore::True.

## reverse()

void casacore::BitVector::reverse | ( |  | ) |

## set() [1/2]

void casacore::BitVector::set | ( | Bool | state | ) |

Set all bits of the bit vector to the specified state.

## set() [2/2]

void casacore::BitVector::set | ( | uInt | start,
|  | uInt | length,
|  | Bool | state )

Set length bits starting at the start position (0-relative) to the given state.

An exception is thrown if start+length exceeds the length of the vector.

References casacore::length().

## setBit()

void casacore::BitVector::setBit | ( | uInt | pos | ) |

inline

Set a bit at the given position (0-relative).

In debug-mode an exception is thrown when the position is invalid.

Definition at line 281 of file BitVector.h.

References bits_p, DebugAssert, size_p, and casacore::WORDSIZE.

## toggleBit()

Bool casacore::BitVector::toggleBit | ( | uInt | pos | ) |

Toggle a bit at the given position (0-relative).

It returns the original state. In debug-mode an exception is thrown when the position is invalid.

## Friends And Related Symbol Documentation

## BitVectorHelper

friend class BitVectorHelper

friend

BitVectorHelper is a helper class.

Definition at line 114 of file BitVector.h.

References BitVectorHelper.

Referenced by BitVectorHelper, operator[](), and putBit().

## operator<<

ostream & operator<< | ( | ostream & | ,
|  | const BitVector & | vector )

friend

Write a representation of the bit vector (a list of zeros and ones enclosed in square parentheses) to ostream.

References BitVector().

## Member Data Documentation

## bits_p

Block<uInt> casacore::BitVector::bits_p

private

Pointer to the actual bit vector, stored as a contiguous sequence of one or more unsigned integers.

Definition at line 229 of file BitVector.h.

Referenced by clearBit(), and setBit().

## size_p

uInt casacore::BitVector::size_p

private

Number of bits in the BitVector object.

Definition at line 225 of file BitVector.h.

Referenced by clearBit(), nbits(), and setBit().

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

- casa/Utilities/BitVector.h