Module: Essential Tools Module Group: Generic Classes
Does not inherit
clearBit() data() operator&=() |
operator()() operator=() operator[]() |
operator^=() operator|=() RWGBitVec() |
setBit() testBit() |
#include <rw/gbitvec.h> declare(RWGBitVec,size) RWGBitVec(size) a;
RWGBitVec(size) is a bit vector of fixed length size. The length cannot be changed dynamically (see class RWBitVec if you need a bit vector whose length can be changed at run time). Objects of type RWGBitVec(size) are declared with macros defined in the standard C++ header file <generic.h>.
Bits are numbered from 0 through size-1, inclusive.
NOTE -- RWGBitVec is deprecated; please use RWTBitVec.
None
In this example, a bit vector 24 bits long is declared and exercised:
#include <rw/gbitvec.h> #include <iostream> const size_t VECSIZE = 8; declare(RWGBitVec, VECSIZE) // declare a 8 bit long vector implement(RWGBitVec, VECSIZE) // implement the vector int main () { RWGBitVec (VECSIZE) 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. RWGBitVec(VECSIZE) c = a ^ b; // Set c to the XOR of a and b. std::cout << "V1" << "\t" << "V2" << "\t" << "V1 XOR V2" << std::endl; for(size_t i = 0; i < VECSIZE; ++i) { std::cout << a[i] << "\t" << b[i] << "\t" << c[i] << std::endl; } return 0; }
Program Output:
V1 V2 V1 XOR V2 0 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0
RWGBitVec(size)();
Construct a bit vector size elements long, with all bits initialized to false.
RWGBitVec(size)(bool f);
Construct a bit vector size elements long, with all bits initialized to f.
RWGBitVec(sz)& operator=(const RWGBitVec(sz)& v);
Set each element of self to the corresponding bit value of v. Return a reference to self.
RWGBitVec(sz)& operator=(bool f);
Set all elements of self to the boolean value f.
RWGBitVec(sz)& operator&=(const RWGBitVec(sz)& v); RWGBitVec(sz)& operator^=(const RWGBitVec(sz)& v); RWGBitVec(sz)& operator|=(const RWGBitVec(sz)& v);
Logical assignments. Set each element 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.
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 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.
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 are equivalent, although setBit(size_t) is slightly smaller and faster than using operator()(size_t):
a(i) = true; a.setBit(i);
bool 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();
RWGBitVec(sz) operator&(const RWGBitVec(sz)& v1,const RWGBitVec(sz)& v2); RWGBitVec(sz) operator^(const RWGBitVec(sz)& v1,const RWGBitVec(sz)& v2); RWGBitVec(sz) operator|(const RWGBitVec(sz)& v1,const RWGBitVec(sz)& v2);
Return the logical AND, XOR, and OR, respectively, of vectors v1 and v2.
bool operator==(const RWGBitVec(sz)& v1,const RWGBitVec(sz)& v2) const;
Returns true if each bit of v1 is set to the same value as the corresponding bit in v2. Otherwise, returns false.
bool operator!= (const RWGBitVec(sz)& v1, const RWGBitVec(sz)& v2) const;
Returns false if each bit of v1 is set to the same value as the corresponding bit in v2. Otherwise, returns true.
© Copyright Rogue Wave Software, Inc. All Rights Reserved.
Rogue Wave and SourcePro are registered trademarks of Rogue Wave Software, Inc. in the United States and other countries. All other trademarks are the property of their respective owners.
Contact Rogue Wave about documentation or support issues.