CopperSpice API
1.9.2
|
Stores an array of bits. More...
Public Methods | |
QBitArray () | |
QBitArray (const QBitArray &other) | |
QBitArray (int size, bool value=false) | |
bool | at (int i) const |
void | clear () |
void | clearBit (int i) |
int | count () const |
int | count (bool on) const |
void | fill (bool value, int begin, int end) |
bool | fill (bool value, int size=-1) |
bool | isEmpty () const |
bool | isNull () const |
bool | operator!= (const QBitArray &other) const |
QBitArray & | operator&= (const QBitArray &other) |
QBitArray & | operator= (const QBitArray &other) |
QBitArray & | operator= (QBitArray &&other) |
bool | operator== (const QBitArray &other) const |
QBitRef | operator[] (int i) |
bool | operator[] (int i) const |
QBitRef | operator[] (uint i) |
bool | operator[] (uint i) const |
QBitArray & | operator^= (const QBitArray &other) |
QBitArray & | operator|= (const QBitArray &other) |
QBitArray | operator~ () const |
void | resize (int size) |
void | setBit (int i) |
void | setBit (int i, bool value) |
int | size () const |
void | swap (QBitArray &other) |
bool | testBit (int i) const |
bool | toggleBit (int i) |
void | truncate (int pos) |
Friends | |
QDataStream & | operator<< (QDataStream &stream, const QBitArray &bitArray) |
QDataStream & | operator>> (QDataStream &stream, QBitArray &bitArray) |
Related Functions | |
These are not member functions | |
QBitArray | operator& (const QBitArray &a1, const QBitArray &a2) |
QBitArray | operator^ (const QBitArray &a1, const QBitArray &a2) |
QBitArray | operator| (const QBitArray &a1, const QBitArray &a2) |
The QBitArray class stores an array of bits which provides access to individual bits and operators (AND, OR, XOR, and NOT) that work on entire arrays of bits. It uses implicit sharing (copy-on-write) to reduce memory usage and to avoid the needless copying of data.
The following code constructs a QBitArray containing 200 bits initialized to false (0):
To initialize the bits to true, either pass true as second argument to the constructor, or call fill() later on.
QBitArray uses 0 based indexes. To access the bit at a particular index position, you can use operator[](). On non-const bit arrays, operator[]() returns a reference to a bit that can be used on the left side of an assignment.
It is more efficient to use testBit() and setBit() to access bits in the array than operator[]().
QBitArray supports &
(AND), |
(OR), ^
(XOR), ~
(NOT), as well as &=
, |=
, and ^=
. These operators work in the same way as the built-in C++ bitwise operators of the same name.
QBitArray distinguishes between a null bit array and an empty bit array. A null bit array is a bit array that is initialized using QBitArray's default constructor. An empty bit array is any bit array with size 0. A null bit array is always empty however an empty bit array is not necessarily null.
The only method which distinguishes between null and empty is isNull(). For example, QBitArray() compares equal to QBitArray(0). You should normally use isEmpty() instead of isNull().
|
inline |
Constructs an empty bit array.
|
explicit |
Constructs a bit array containing size bits. The bits are initialized with value, which defaults to false (0).
|
inline |
Copy constructs a new QBitArray from other.
This operation takes constant time, because QBitArray is implicitly shared. This makes returning a QBitArray from a function very fast. If a shared instance is modified, it will be copied (copy-on-write), and that takes linear time.
|
inline |
Returns the value of the bit at index position i. The value for i must be a valid index position in the bit array.
|
inline |
|
inline |
Sets the bit at index position i to 0. The value for i must be a valid index position in the bit array.
|
inline |
Equivalent to calling size().
int QBitArray::count | ( | bool | on | ) | const |
If on is true, this function returns the number of 1 bits stored in the bit array, otherwise the number of 0 bits is returned.
void QBitArray::fill | ( | bool | value, |
int | begin, | ||
int | end | ||
) |
Sets bits at index positions begin up to and excluding end to value. The value for begin and end must be valid index positions in the bit array.
|
inline |
|
inline |
Returns true if this bit array has a size of 0, otherwise returns false.
|
inline |
Returns true if this bit array is null, otherwise returns false.
CopperSpice makes a distinction between null bit arrays and empty bit arrays. For most applications, what matters is whether or not a bit array contains any data and this can be determined using isEmpty().
|
inline |
Returns true if other is not equal to this bit array, otherwise returns false.
QBitArray & QBitArray::operator&= | ( | const QBitArray & | other | ) |
Performs the AND operation between all bits in this bit array and other. Assigns the result to this bit array, and returns a reference to it. The result has the length of the longest of the two bit arrays, with any missing bits (if one array is shorter than the other) taken to be 0.
|
inline |
Copy assigns from other and returns a reference to this object.
|
inline |
Move assigns from other and returns a reference to this object.
|
inline |
Returns true if other is equal to this bit array, otherwise returns false.
|
inline |
Returns a reference to the data at index position i. The value for i must be a valid index position in the bit array.
The return value is of type QBitRef, a helper class for QBitArray. When you get an object of type QBitRef, you can assign to it, and the assignment will apply to the bit in the QBitArray from which you got the reference.
The methods testBit(), setBit(), and clearBit() are slightly faster.
|
inline |
Refer to operator[]().
|
inline |
Refer to operator[]().
|
inline |
Refer to operator[]().
QBitArray & QBitArray::operator^= | ( | const QBitArray & | other | ) |
Performs the XOR operation between all bits in this bit array and other. Assigns the result to this bit array, and returns a reference to it. The result has the length of the longest of the two bit arrays, with any missing bits (if one array is shorter than the other) taken to be 0.
QBitArray & QBitArray::operator|= | ( | const QBitArray & | other | ) |
Performs the OR operation between all bits in this bit array and other. Assigns the result to this bit array, and returns a reference to it. The result has the length of the longest of the two bit arrays, with any missing bits (if one array is shorter than the other) taken to be 0.
QBitArray QBitArray::operator~ | ( | ) | const |
Returns a bit array that contains the inverted bits of this bit array.
void QBitArray::resize | ( | int | size | ) |
Resizes the bit array to size bits. If size is greater than the current size, the bit array is extended to make it size bits with the extra bits added to the end. The new bits are initialized to false (0). If size is less than the current size, bits are removed from the end.
|
inline |
Sets the bit at index position i to 1. The value for i must be a valid index position in the bit array.
|
inline |
Sets the bit at index position i to value.
|
inline |
Returns the number of bits stored in the bit array.
|
inline |
Swaps other with this object. This operation is very fast and never fails.
|
inline |
Returns true if the bit at index position i is 1, otherwise returns false. The value for i must be a valid index position in the bit array.
|
inline |
Inverts the value of the bit at index position i, returning the previous value of that bit as either true (if it was set) or false (if it was unset). The value for i must be a valid index position in the bit array.
If the previous value was 0 then the new value will be 1. If the previous value was 1, the new value will be 0.
|
inline |
Truncates the bit array at index position pos. If pos is beyond the end of the array, nothing happens.
|
related |
Returns a bit array that is the AND of the bit arrays a1 and a2. The result has the length of the longest of the two bit arrays, with any missing bits (if one array is shorter than the other) taken to be 0.
|
friend |
Writes the given bitArray to the stream. Returns a reference to the stream.
Refer to Serializing Data Types for additional information.
|
friend |
Reads from the stream into the given bitArray. Returns a reference to the stream.
Refer to Serializing Data Types for additional information.
|
related |
Returns a bit array that is the XOR of the bit arrays a1 and a2. The result has the length of the longest of the two bit arrays, with any missing bits (if one array is shorter than the other) taken to be 0.
|
related |
Returns a bit array that is the OR of the bit arrays a1 and a2. The result has the length of the longest of the two bit arrays, with any missing bits (if one array is shorter than the other) taken to be 0.