casacore
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Public Member Functions | Private Attributes | Friends | List of all members
casacore::BitVector Class Reference

Bit vectors of any size. More...

#include <BitVector.h>

Public Member Functions

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

Private Attributes

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

Friends

class BitVectorHelper
 BitVectorHelper is a helper class. More...
 
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. More...
 

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

Definition at line 112 of file BitVector.h.

Constructor & Destructor Documentation

casacore::BitVector::BitVector ( )

Create a bit vector of length 0.

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

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

casacore::BitVector::BitVector ( const BitVector that)

Copy constructor (copy semantics).

casacore::BitVector::~BitVector ( )

Delete the bit vector.

Member Function Documentation

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 290 of file BitVector.h.

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

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.

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[]().

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

Return the number of bits in the bitvector.

Definition at line 302 of file BitVector.h.

References size_p.

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.

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.

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.

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

Assignment (copy semantics).

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

Set all bits to the given state.

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.

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 297 of file BitVector.h.

References getBit().

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

Definition at line 313 of file BitVector.h.

References BitVectorHelper.

BitVector casacore::BitVector::operator^ ( const BitVector that) const
void casacore::BitVector::operator^= ( const BitVector that)
BitVector casacore::BitVector::operator| ( const BitVector that) const
void casacore::BitVector::operator|= ( const BitVector that)
BitVector casacore::BitVector::operator~ ( ) const
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.

Referenced by casacore::BitVectorHelper::operator=().

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.

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

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

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.

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 283 of file BitVector.h.

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

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 Function Documentation

friend class BitVectorHelper
friend

BitVectorHelper is a helper class.

Definition at line 116 of file BitVector.h.

Referenced by 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.

Member Data Documentation

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 231 of file BitVector.h.

Referenced by clearBit(), and setBit().

uInt casacore::BitVector::size_p
private

Number of bits in the BitVector object.

Definition at line 227 of file BitVector.h.

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


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