PBitArray Class Reference

This class represents a dynamic bit array. More...

#include <array.h>

Inheritance diagram for PBitArray:

PBYTEArray PBaseArray< T > PAbstractArray PContainer PObject List of all members.

Public Member Functions

Construction
 PBitArray (PINDEX initialSize=0)
 Construct a new dynamic array of bits.
 PBitArray (const void *buffer, PINDEX length, PBoolean dynamic=true)
 Construct a new dynamic array of elements of the specified type.
Overrides from class PObject
virtual PObjectClone () const
 Clone the object.
Overrides from class <code>PContainer</code>
virtual PINDEX GetSize () const
 Get the current size of the container.
virtual PBoolean SetSize (PINDEX newSize)
 Set the size of the array in bits.
PBoolean SetAt (PINDEX index, PBoolean val)
 Set the specific bit in the array.
PBoolean GetAt (PINDEX index) const
 Get a bit from the array.
void Attach (const void *buffer, PINDEX bufferSize)
 Attach a pointer to a static block to the bit array type.
BYTE * GetPointer (PINDEX minSize=0)
 Get a pointer to the internal array and assure that it is of at least the specified size.
New functions for class
PBoolean operator[] (PINDEX index) const
 Get a value from the array.
PBitArrayoperator+= (PINDEX index)
 Set a bit to the array.
PBitArrayoperator-= (PINDEX index)
 Set a bit to the array.
PBoolean Concatenate (const PBitArray &array)
 Concatenate one array to the end of this array.

Detailed Description

This class represents a dynamic bit array.


Constructor & Destructor Documentation

PBitArray::PBitArray ( PINDEX  initialSize = 0  ) 

Construct a new dynamic array of bits.

Parameters:
initialSize  Initial number of bits in the array.

PBitArray::PBitArray ( const void *  buffer,
PINDEX  length,
PBoolean  dynamic = true 
)

Construct a new dynamic array of elements of the specified type.

Parameters:
buffer  Pointer to an array of the elements of type T.
length  Number of bits (not bytes!) pointed to by buffer.
dynamic  Buffer is copied and dynamically allocated.


Member Function Documentation

void PBitArray::Attach ( const void *  buffer,
PINDEX  bufferSize 
)

Attach a pointer to a static block to the bit array type.

The pointer is used directly and will not be copied to a dynamically allocated buffer. If the SetSize() function is used to change the size of the buffer, the object will be converted to a dynamic form with the contents of the static buffer copied to the allocated buffer.

Any dynamically allocated buffer will be freed.

Parameters:
buffer  Pointer to an array of elements.
bufferSize  Number of bits (not bytes!) pointed to by buffer.

Reimplemented from PAbstractArray.

virtual PObject* PBitArray::Clone (  )  const [virtual]

Clone the object.

Reimplemented from PBaseArray< T >.

PBoolean PBitArray::Concatenate ( const PBitArray array  ) 

Concatenate one array to the end of this array.

This function will allocate a new array large enough for the existing contents and the contents of the parameter. The paramters contents is then copied to the end of the existing array.

Note this does nothing and returns false if the target array is not dynamically allocated.

Returns:
true if the memory allocation succeeded.
Parameters:
array  Other array to concatenate

PBoolean PBitArray::GetAt ( PINDEX  index  )  const

Get a bit from the array.

If index is beyond the end of the allocated array then false is returned.

Returns:
Value at the array position.
Parameters:
index  Position on the array to get value from.

Reimplemented from PBaseArray< T >.

BYTE* PBitArray::GetPointer ( PINDEX  minSize = 0  ) 

Get a pointer to the internal array and assure that it is of at least the specified size.

This is useful when the array contents are being set by some external or system function eg file read.

It is unsafe to assume that the pointer is valid for very long after return from this function. The array may be resized or otherwise changed and the pointer returned invalidated. It should be used for simple calls to atomic functions, or very careful examination of the program logic must be performed.

Returns:
Pointer to the array memory.
Parameters:
minSize  Minimum size in bits (not bytes!) for returned buffer pointer.

Reimplemented from PBaseArray< T >.

virtual PINDEX PBitArray::GetSize (  )  const [virtual]

Get the current size of the container.

This represents the number of things the container contains. For some types of containers this will always return 1.

Returns:
Number of objects in container.

Reimplemented from PContainer.

PBitArray& PBitArray::operator+= ( PINDEX  index  )  [inline]

Set a bit to the array.

This is functionally identical to the PContainer::SetAt(index, true) function.

Parameters:
index  Position on the array to get value from.

PBitArray& PBitArray::operator-= ( PINDEX  index  )  [inline]

Set a bit to the array.

This is functionally identical to the PContainer::SetAt(index, true) function.

Parameters:
index  Position on the array to get value from.

PBoolean PBitArray::operator[] ( PINDEX  index  )  const [inline]

Get a value from the array.

If the index is beyond the end of the allocated array then a zero value is returned.

This is functionally identical to the PContainer::GetAt() function.

Returns:
Value at the array position.
Parameters:
index  Position on the array to get value from.

Reimplemented from PBaseArray< T >.

PBoolean PBitArray::SetAt ( PINDEX  index,
PBoolean  val 
)

Set the specific bit in the array.

The array will automatically expand, if necessary, to fit the new element in.

Returns:
true if new memory for the array was successfully allocated.
Parameters:
index  Position in the array to set the new value.
val  Value to set in the array.

virtual PBoolean PBitArray::SetSize ( PINDEX  newSize  )  [virtual]

Set the size of the array in bits.

A new array may be allocated to accomodate the new number of bits. If the array increases in size then the new bytes are initialised to zero. If the array is made smaller then the data beyond the new size is lost.

Returns:
true if the memory for the array was allocated successfully.
Parameters:
newSize  New size of the array in bits, not bytes.

Reimplemented from PAbstractArray.


The documentation for this class was generated from the following file:
Generated on Fri Oct 14 01:44:11 2011 for PTLib by  doxygen 1.4.7