RWTBitVec(3C++) RWTBitVec(3C++)
Name
RWTBitVec<size> - Rogue Wave library class
Synopsis
#include <rw/tbitvec.h>
RWTBitVec<22> // A 22 bit long vector
Description
RWTBitVec<size> is a parameterized bit vector of fixed length size.
Unlike class RWBitVec, its length cannot be changed at run time. The
advantage of RWBitVec is its smaller size, and one less level of
indirection, resulting in a slight speed advantage. Bits are numbered
from 0 through size-1, inclusive. The copy constructor and assignment
operator use copy semantics.
Persistence
None
Example
In this example, a bit vector 24 bits long is exercised:
#include <rw/tbitvec.h>
main() {
RWTBitVec<24> a, b; // Allocate two vectors.
a(2) = TRUE; // Set bit 2 (the third bit) of a on.
b(3) = TRUE; // Set bit 3 (the fourth bit) of b on.
RWTBitVec<24> c = a ^ b; // Set c to the XOR of a and b.
}
Public Constructor
RWTBitVec<size>();
Constructs an instance with all bits set to FALSE.
RWTBitVec<size>(RWBoolean val);
Page 1
RWTBitVec(3C++) RWTBitVec(3C++)
Constructs an instance with all bits set to val.
Assignment Operators
RWTBitVec<size>&
operator=(const RWTBitVec<size>& v);
Sets self to a copy of v.
RWTBitVec&
operator=(RWBoolean val);
Sets all bits in self to the value val.
RWTBitVec&
operator&=(const RWTBitVec& v);
RWTBitVec&
operator^=(const RWTBitVec& v);
RWTBitVec&
operator|=(const RWTBitVec& v);
Logical assignments. Sets each bit of self to the logical AND, XOR, or
OR, respectively, of self and the corresponding bit in v.
RWBitRef
operator[](size_t i);
Returns a reference to the ith bit of self. This reference can be used
as an lvalue. The index i must be between 0 and size-1, inclusive.
Bounds checking will occur.
RWBitRef
operator()(size_t i);
Returns a reference to the ith bit of self. This reference can be used
as an lvalue. The index i must be between 0 and size-1, inclusive. No
bounds checking is done.
Logical Operators
RWBoolean
operator==(RWBoolean b) const;
Returns TRUE if every bit of self is set to the value b. Otherwise,
returns FALSE.
Page 2
RWTBitVec(3C++) RWTBitVec(3C++)
RWBoolean
operator!=(RWBoolean b) const;
Returns TRUE if any bit of self is not set to the value b. Otherwise,
returns FALSE.
RWBoolean
operator==(const RWTBitVec& v) const;
Returns TRUE if each bit of self is set to the same value as the
corresponding bit in v. Otherwise, returns FALSE.
RWBoolean
operator!=(const RWTBitVec& v) const;
Returns TRUE if any bit of self is not set to the same value as the
corresponding bit in v. Otherwise, returns FALSE.
void
clearBit(size_t i);
Clears (i.e., sets to FALSE) the bit with index i. The index i must be
between 0 and size-1. No bounds checking is performed. The following
two lines are equivalent, although clearBit(size_t) is slightly smaller
and faster than using operator()(size_t):
a(i) = FALSE;
a.clearBit(i);
const RWByte*
data() const;
Returns a const pointer to the raw data of self. Should be used with
care.
size_t
firstFalse() const;
Returns the index of the first OFF (False) bit in self. Returns RW_NPOS
if there is no OFF bit.
Page 3
RWTBitVec(3C++) RWTBitVec(3C++)
size_t
firstTrue() const;
Returns the index of the first ON (True) bit in self. Returns RW_NPOS if
there is no ON bit.
void
setBit(size_t i);
Sets (i.e., sets to TRUE) the bit with index i. The index i must be
between 0 and size-1. No bounds checking is performed. The following
two lines are equivalent, although setBit(size_t) is slightly smaller and
faster than using operator()(size_t)
a(i) = TRUE;
a.setBit(i);
RWBoolean
testBit(size_t i) const;
Tests the bit with index i. The index i must be between 0 and size-1.
No bounds checking is performed. The following are equivalent, although
testBit(size_t) is slightly smaller and faster than using
operator()(size_t):
if( a(i) ) doSomething();
if( a.testBit(i) ) doSomething();
Related Global FunctionsRWTBitVec operator&(const RWTBitVec& v1, const RWTBitVec& v2);
RWTBitVec operator^(const RWTBitVec& v1, const RWTBitVec& v2);
RWTBitVec operator|(const RWTBitVec& v1, const RWTBitVec& v2);
Return the logical AND, XOR, and OR, respectively, of vectors v1 and v2.
Page 4