CBitArray Class Reference
This class encapsulates an array of binary values represented as booleans, where true indicates a bit set to ON and false indicates a bit set to OFF. More...#include <xsi_bitarray.h>
List of all members.
Detailed Description
This class encapsulates an array of binary values represented as booleans, where true indicates a bit set to ON and false indicates a bit set to OFF. CBitArray is suitable for dealing with large arrays of boolean values in a compact way. Because CBitArray uses much less memory than CBoolArray would use to represent the same number of bits, it is strongly recommended to use it when a large set of flags are needed.
- Since:
- 5.0
- Example:
-
using namespace XSI;
Application app;
CBitArray myFlags(10);
CBitArray myOtherFlags(20);
myOtherFlags.SetAll(0, true);
myFlags.Or( myOtherFlags );
for (LONG i=0; i<myFlags.GetCount(); i++)
{
app.LogMessage( L"myFlags[" + CString(i) + L"] = " + CString(myFlags[i]) );
}
Constructor & Destructor Documentation
Constructs a CBitArray object of a specified size. The values are initially set to false. If a size is not supplied, the object is created with no bit values, we must then use CBitArray::Resize to initialize the object.
- Parameters:
-
|
|
in_size |
Number of bit values in the new CBitArray. |
Constructs a CBitArray object that contains bit values copied from another CBitArray object.
- Parameters:
-
Constructs a CBitArray object and initializes it with the values coming from a CBoolArray object.
- Parameters:
-
|
|
in_boolArray |
Constant CBoolArray reference object. |
Member Function Documentation
Assignment operator. Copies the bit values of a specified CBitArray to this CBitArray object. This CBitArray is resized to fit the size of the specified CBitArray object.
- Parameters:
-
|
|
in_array |
CBitArray object that we want to assign. |
- Returns:
- A reference to this CBitArray after it has been modified.
| bool operator== |
( |
const CBitArray & |
in_array |
) |
const |
Equality operator. Tests if one CBitArray has the same contents as another.
- Parameters:
-
|
|
in_array |
CBitArray with which we want to compare. |
- Returns:
- True if all elements are the same; false if some or all elements are different.
| bool operator!= |
( |
const CBitArray & |
in_array |
) |
const |
InEquality operator. Tests if two CBitArrays have different contents.
- Parameters:
-
|
|
in_array |
CBitArray with which we want to compare. |
- Returns:
- True if all elements are different; false if some or all elements are the same.
| const bool operator[] |
( |
LONG |
in_pos |
) |
const |
Accessor to bit values at a given position. This function can only be called by constant objects, the returned value is read-only.
- Parameters:
-
|
|
in_pos |
Position in this zero-based array. The position must be smaller than the number of elements in the array, otherwise the results are unpredicted. |
- Returns:
- A read-only bit value.
| bool operator[] |
( |
LONG |
in_pos |
) |
|
Array element operator. Gets the bit value at a specified position.
- Parameters:
-
|
|
in_pos |
0-based position in the array. The result is unpredicted if the position is invalid. |
- Returns:
- A bit value.
| CStatus Add |
( |
const bool & |
in_bVal |
) |
|
Adds a bit value at the end of this array.
- Parameters:
-
|
|
in_bVal |
New bit value to be added at the end of the array. |
- Returns:
- CStatus::OK success
| CStatus Set |
( |
LONG |
in_pos, |
|
|
|
bool |
in_bVal |
|
|
|
) |
|
|
|
Sets a bit value to true or false at the specified position.
- Parameters:
-
|
|
in_pos |
0-based position in the array. The result is unpredicted if the position is invalid. |
|
|
in_bVal |
The boolean value to assign to the bit value. |
- Returns:
- CStatus::OK success
CStatus::InvalidArgument Position is out of bound
Sets all bit values to true or false.
- Parameters:
-
|
|
in_bVal |
The boolean value to assign to the bit values. |
- Returns:
- CStatus::OK success
| CStatus Resize |
( |
LONG |
in_size, |
|
|
|
bool |
in_bVal = false |
|
|
|
) |
|
|
|
Reallocates memory for the array, preserves its contents if new size is larger than existing size. The new elements are set to false by default.
- Parameters:
-
|
|
in_size |
New size of the array. |
|
|
in_bVal |
If true the new bit values are set to true (ON) or are set to false (OFF) if the value is false. |
- Returns:
- CStatus::OK success
CStatus::Fail failure
Clears the memory and set the number of bit values to 0.
- Returns:
- CStatus::OK success
Returns the number of bit values in the array.
- Returns:
- The number of bit values.
| LONG GetTrueCount |
( |
|
) |
const |
Returns the number of bit values in the array set to true.
- Returns:
- The number of bit values set to true.
Returns true if at least one bit value is set to true.
- Returns:
- True if at least one bit value is set to true.
Performs the bitwise AND operation on the bit values in the CBitArray against the corresponding elements in the specified CBitArray. Two bits combined by the AND operator return true if each bit is true; otherwise, their combination returns false. If the input array is smaller, then it is temporarily padded with zeros; otherwise, if the input array is of equal or greater length, the operation is performed up to the length of the object's array.
- Parameters:
-
|
|
in_array |
CBitArray that is to be used to perform the bitwise AND operation. |
- Returns:
- Reference to this CBitArray object.
Performs the bitwise OR operation on the bit values in the CBitArray against the corresponding elements in the specified CBitArray. Two bits combined by the OR operator return true if at least one of the bits is true; if both bits are false, their combination returns false. If the input array is smaller, then it is temporarily padded with zeros; otherwise, if the input array is of equal or greater length, the operation is performed up to the length of the object's array.
- Parameters:
-
|
|
in_array |
CBitArray that is to be used to perform the bitwise OR operation. |
- Returns:
- Reference to this CBitArray object.
Performs the bitwise XOR operation on the bit values in the CBitArray against the corresponding elements in the specified CBitArray. Two bits combined by the XOR operator return true if at least one, but not both, of the bits is true; otherwise, their combination returns false. If the input array is smaller, then it is temporarily padded with zeros; otherwise, if the input array is of equal or greater length, the operation is performed up to the length of the object's array.
- Parameters:
-
|
|
in_array |
CBitArray that is to be used to perform the bitwise OR operation. |
- Returns:
- Reference to this CBitArray object.
Inverts all bit values of this CBitArray object.
- Returns:
- Reference to this CBitArray object.
| bool Flip |
( |
LONG |
in_pos |
) |
|
Inverts the value of a bit value at a specified position.
- Parameters:
-
|
|
in_pos |
0-based position in the array. The result is unpredicted if the position is invalid. |
- Returns:
- The new bit value.
| LONG GetIterator |
( |
LONG |
in_pos = 0 |
) |
const |
Returns an iterator used by the fast bit-lookup functions. This function must be used for getting the right iterator, don't use the bit value position directly as the resulting lookup operations can be unpredictable.
- Parameters:
-
|
|
in_pos |
The position in the array where to start the fast lookup. |
- Returns:
- A start iterator.
- See also:
- CBitArray::GetNextTrueBit, CBitArray::GetNextFalseBit
| bool GetNextTrueBit |
( |
LONG & |
in_Iterator |
) |
const |
Allows fast bit-lookup operations. It starts at the current iterator position, and looks for the next bit set to true. If the lookup is successful, the bit value position in the array is returned. This position can then be used to access the bit value.
- Parameters:
-
|
|
in_Iterator |
The iterator where the lookup starts. The function sets the iterator with the position of the next bit set to true. If the end of the array is reached, the iterator is set with the total number of bit values in the array. |
- Returns:
- True if the end of array is reached, false otherwise.
- See also:
- CBitArray::GetNextFalseBit, CBitArray::GetIterator
- Example:
-
using namespace XSI;
Application app;
CBitArray bits(512);
bits.Set( 0, true );
bits.Set( 32, true );
bits.Set( 44, true );
bits.Set( 65, true );
bits.Set( 312, true );
LONG it = bits.GetIterator();
while (bits.GetNextTrueBit(it))
{
app.LogMessage( L"bits[" + CString(it) + L"] = " + CString(bits[it]) );
}
| bool GetNextFalseBit |
( |
LONG & |
in_Iterator |
) |
const |
This function is similar to CBitArray::GetNextTrueBit, but looks up the bit values set to false instead.
- Parameters:
-
|
|
in_Iterator |
The iterator where the lookup starts. The function sets the iterator with the position of the next bit set to false. If the end of the array is reached, the iterator is set with the total number of bit values in the array. |
- Returns:
- True if the end of array is reached, false otherwise.
- See also:
- CBitArray::GetNextTrueBit, CBitArray::GetIterator
- Example:
-
using namespace XSI;
Application app;
CBitArray bits(512);
bits.SetAll(true);
bits.Set( 15, false );
bits.Set( 31, false );
bits.Set( 63, false );
bits.Set( 127, false );
bits.Set( 255, false );
bits.Set( 511, false );
LONG it = bits.GetIterator();
while (bits.GetNextFalseBit(it))
{
app.LogMessage( L"bits[" + CString(it) + L"] = " + CString(bits[it]) );
}
The documentation for this class was generated from the following file: