PTLib  Version 2.14.3
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PBitArray Class Reference

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

#include <array.h>

Inheritance diagram for PBitArray:
Collaboration diagram for PBitArray:

Public Member Functions

Construction
 PBitArray (PINDEX initialSize=0)
 Construct a new dynamic array of bits. More...
 
 PBitArray (const void *buffer, PINDEX length, PBoolean dynamic=true)
 Construct a new dynamic array of elements of the specified type. More...
 
Overrides from class PObject
virtual PObjectClone () const
 Clone the object. More...
 
Overrides from class <code>PContainer</code>
virtual PINDEX GetSize () const
 Get the current size of the container. More...
 
virtual PBoolean SetSize (PINDEX newSize)
 Set the size of the array in bits. More...
 
PBoolean SetAt (PINDEX index, PBoolean val)
 Set the specific bit in the array. More...
 
PBoolean GetAt (PINDEX index) const
 Get a bit from the array. More...
 
void Attach (const void *buffer, PINDEX bufferSize)
 Attach a pointer to a static block to the bit array type. More...
 
BYTE * GetPointer (PINDEX minSize=0)
 Get a pointer to the internal array and assure that it is of at least the specified size. More...
 
New functions for class
PBoolean operator[] (PINDEX index) const
 Get a value from the array. More...
 
PBitArrayoperator+= (PINDEX index)
 Set a bit to the array. More...
 
PBitArrayoperator-= (PINDEX index)
 Set a bit to the array. More...
 
PBoolean Concatenate (const PBitArray &array)
 Concatenate one array to the end of this array. More...
 
- Public Member Functions inherited from PBYTEArray
template<typename T >
const T & GetAs (PINDEX offset=0)
 Function to cast block of memory in PBYTEArray to another structure. More...
 
 PBYTEArray (PINDEX initialSize=0)
 Construct a new dynamic array of unsigned chars. More...
 
 PBYTEArray (BYTE const *buffer, PINDEX length, PBoolean dynamic=true)
 Construct a new dynamic array of unsigned chars. More...
 
 PBYTEArray (PContainerReference &reference_)
 
virtual void PrintOn (ostream &strm) const
 Print the array. More...
 
virtual void ReadFrom (istream &strm)
 Read the array. More...
 
- Public Member Functions inherited from PBaseArray< BYTE >
 PBaseArray (PINDEX initialSize=0)
 Construct a new dynamic array of elements of the specified type. More...
 
 PBaseArray (BYTEconst *buffer, PINDEX length, PBoolean dynamic=true)
 Construct a new dynamic array of elements of the specified type. More...
 
PBoolean SetAt (PINDEX index, BYTEval)
 Set the specific element in the array. More...
 
BYTE GetAt (PINDEX index) const
 Get a value from the array. More...
 
void Attach (const BYTE *buffer, PINDEX bufferSize)
 Attach a pointer to a static block to the base array type. More...
 
BYTE * GetPointer (PINDEX minSize=0)
 Get a pointer to the internal array and assure that it is of at least the specified size. More...
 
BYTE operator[] (PINDEX index) const
 Get a value from the array. More...
 
BYTE & operator[] (PINDEX index)
 Get a reference to value from the array. More...
 
 operator BYTEconst * () const
 Get a pointer to the internal array. More...
 
PBoolean Concatenate (const PBaseArray &array)
 Concatenate one array to the end of this array. More...
 
- Public Member Functions inherited from PAbstractArray
 PAbstractArray (PINDEX elementSizeInBytes, PINDEX initialSize=0)
 Create a new dynamic array of initalSize elements of elementSizeInBytes bytes each. More...
 
 PAbstractArray (PINDEX elementSizeInBytes, const void *buffer, PINDEX bufferSizeInElements, PBoolean dynamicAllocation)
 Create a new dynamic array of bufferSizeInElements elements of elementSizeInBytes bytes each. More...
 
virtual Comparison Compare (const PObject &obj) const
 Get the relative rank of the two arrays. More...
 
void Attach (const void *buffer, PINDEX bufferSize)
 Attach a pointer to a static block to the base array type. More...
 
void * GetPointer (PINDEX minSize=1)
 Get a pointer to the internal array and assure that it is of at least the specified size. More...
 
PBoolean Concatenate (const PAbstractArray &array)
 Concatenate one array to the end of this array. More...
 
- Public Member Functions inherited from PContainer
 PContainer (PINDEX initialSize=0)
 Create a new unique container. More...
 
 PContainer (const PContainer &cont)
 Create a new refernce to container. More...
 
PContaineroperator= (const PContainer &cont)
 Assign one container reference to another. More...
 
virtual ~PContainer ()
 Destroy the container class. More...
 
__inline size_t size () const
 
PBoolean SetMinSize (PINDEX minSize)
 Set the minimum size of container. More...
 
virtual PBoolean IsEmpty () const
 Determine if the container is empty. More...
 
__inline bool empty () const
 
PBoolean IsUnique () const
 Determine if container is unique reference. More...
 
virtual PBoolean MakeUnique ()
 Make this instance to be the one and only reference to the container contents. More...
 
- Public Member Functions inherited from PObject
unsigned GetTraceContextIdentifier () const
 Get PTRACE context identifier. More...
 
void SetTraceContextIdentifier (unsigned id)
 
void GetTraceContextIdentifier (PObject &obj)
 
void GetTraceContextIdentifier (PObject *obj)
 
void SetTraceContextIdentifier (const PObject &obj)
 
void SetTraceContextIdentifier (const PObject *obj)
 
virtual ~PObject ()
 
template<class CLS >
CLS * CloneAs () const
 As for Clone() but converts to specified type. More...
 
virtual PINDEX HashFunction () const
 This function yields a hash value required by the PDictionary class. More...
 
virtual Comparison CompareObjectMemoryDirect (const PObject &obj) const
 Determine the byte wise comparison of two objects. More...
 
bool operator== (const PObject &obj) const
 Compare the two objects. More...
 
bool operator!= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator< (const PObject &obj) const
 Compare the two objects. More...
 
bool operator> (const PObject &obj) const
 Compare the two objects. More...
 
bool operator<= (const PObject &obj) const
 Compare the two objects. More...
 
bool operator>= (const PObject &obj) const
 Compare the two objects. More...
 
virtual const char * GetClass (unsigned ancestor=0) const
 Get the current dynamic type of the object instance. More...
 
PBoolean IsClass (const char *cls) const
 
virtual PBoolean InternalIsDescendant (const char *clsName) const
 Determine if the dynamic type of the current instance is a descendent of the specified class. More...
 
__inline const PObjectPTraceObjectInstance () const
 

Additional Inherited Members

- Public Types inherited from PObject
enum  Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 }
 Result of the comparison operation performed by the Compare() function. More...
 
- Static Public Member Functions inherited from PObject
static Comparison InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size)
 Internal function caled from CompareObjectMemoryDirect() More...
 
static const char * Class ()
 Get the name of the class as a C string. More...
 
static __inline const PObjectPTraceObjectInstance (const char *)
 
static __inline const PObjectPTraceObjectInstance (const PObject *obj)
 
- Protected Member Functions inherited from PBaseArray< BYTE >
 PBaseArray (PContainerReference &reference_)
 
virtual void PrintElementOn (ostream &stream, PINDEX index) const
 
- Protected Attributes inherited from PAbstractArray
PINDEX elementSize
 Size of an element in bytes. More...
 
char * theArray
 Pointer to the allocated block of memory. More...
 
PBoolean allocatedDynamically
 Flag indicating the array was allocated on the heap. More...
 
- Friends inherited from PObject

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
initialSizeInitial 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
bufferPointer to an array of the elements of type T.
lengthNumber of bits (not bytes!) pointed to by buffer.
dynamicBuffer 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
bufferPointer to an array of elements.
bufferSizeNumber of bits (not bytes!) pointed to by buffer.
virtual PObject* PBitArray::Clone ( ) const
virtual

Clone the object.

Reimplemented from PBYTEArray.

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
arrayOther 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
indexPosition on the array to get value from.

Referenced by operator[]().

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
minSizeMinimum size in bits (not bytes!) for returned buffer pointer.
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
indexPosition on the array to get value from.

References SetAt().

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

Set a bit to the array.

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

Parameters
indexPosition on the array to get value from.

References SetAt().

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
indexPosition on the array to get value from.

References GetAt().

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
indexPosition in the array to set the new value.
valValue to set in the array.

Referenced by operator+=(), and operator-=().

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
newSizeNew size of the array in bits, not bytes.

Reimplemented from PAbstractArray.


The documentation for this class was generated from the following file: