RWTBitVec(3C++)

RWTBitVec<size> - Rogue Wave library class

As shipped in IRIX 6.5.7. Unchanged since IRIX 6.5.

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

     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.

              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.
              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 Functions
              RWTBitVec 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.