PTLib
Version 2.18.8
|
This class represents a dynamic bit array. More...
#include <array.h>
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 PObject * | Clone () 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... | |
PBitArray & | operator+= (PINDEX index) |
Set a bit to the array. More... | |
PBitArray & | operator-= (PINDEX index) |
Set a bit to the array. More... | |
PBoolean | Concatenate (const PBitArray &array) |
Concatenate one array to the end of this array. More... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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... | |
const void * | GetPointer () const |
virtual PINDEX | GetLength () const |
Retrun the length in bytes for the array. More... | |
PBoolean | Concatenate (const PAbstractArray &array) |
Concatenate one array to the end of this array. More... | |
![]() | |
PContainer (PINDEX initialSize=0) | |
Create a new unique container. More... | |
PContainer (const PContainer &cont) | |
Create a new refernce to container. More... | |
PContainer & | operator= (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... | |
![]() | |
__inline unsigned | GetTraceContextIdentifier () const |
Get PTRACE context identifier. More... | |
__inline void | SetTraceContextIdentifier (unsigned id) |
__inline void | SetTraceContextIdentifier (const PObject &obj) |
__inline void | SetTraceContextIdentifier (const PObject *obj) |
__inline void | CopyTraceContextIdentifier (PObject &obj) const |
__inline void | CopyTraceContextIdentifier (PObject *obj) const |
virtual | ~PObject () |
__inline const char * | GetClass () const |
__inline bool | IsClass (const char *name) const |
__inline const PObject * | PTraceObjectInstance () const |
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... | |
Additional Inherited Members | |
![]() | |
enum | Comparison { LessThan = -1, EqualTo = 0, GreaterThan = 1 } |
Result of the comparison operation performed by the Compare() function. More... | |
![]() | |
static __inline void | CopyTraceContextIdentifier (PObject &to, const PObject &from) |
static __inline void | CopyTraceContextIdentifier (PObject &to, const PObject *from) |
static __inline void | CopyTraceContextIdentifier (PObject *to, const PObject &from) |
static __inline void | CopyTraceContextIdentifier (PObject *to, const PObject *from) |
static __inline const char * | Class () |
static __inline const PObject * | PTraceObjectInstance (const char *) |
static __inline const PObject * | PTraceObjectInstance (const PObject *obj) |
template<typename T > | |
static Comparison | Compare2 (T v1, T v2) |
Compare two types, returning Comparison type. More... | |
static Comparison | InternalCompareObjectMemoryDirect (const PObject *obj1, const PObject *obj2, PINDEX size) |
Internal function caled from CompareObjectMemoryDirect() More... | |
![]() | |
PBaseArray (PContainerReference &reference_) | |
virtual void | PrintElementOn (ostream &stream, PINDEX index) const |
![]() | |
PBoolean | InternalSetSize (PINDEX newSize, PBoolean force) |
virtual void | PrintElementOn (ostream &stream, PINDEX index) const |
virtual void | ReadElementFrom (istream &stream, PINDEX index) |
PAbstractArray (PContainerReference &reference, PINDEX elementSizeInBytes) | |
![]() | |
PContainer (int dummy, const PContainer *cont) | |
Constructor used in support of the Clone() function. More... | |
PContainer (PContainerReference &reference) | |
Construct using static PContainerReference. More... | |
virtual void | DestroyContents ()=0 |
Destroy the container contents. More... | |
virtual void | AssignContents (const PContainer &c) |
Copy the container contents. More... | |
void | CopyContents (const PContainer &c) |
Copy the container contents. More... | |
void | CloneContents (const PContainer *src) |
Create a duplicate of the container contents. More... | |
void | Destruct () |
Internal function called from container destructors. More... | |
virtual void | DestroyReference () |
Destroy the PContainerReference instance. More... | |
![]() | |
PObject () | |
Constructor for PObject, made protected so cannot ever create one on its own. More... | |
![]() | |
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... | |
![]() | |
PContainerReference * | reference |
![]() | |
unsigned | m_traceContextIdentifier |
This class represents a dynamic bit array.
PBitArray::PBitArray | ( | PINDEX | initialSize = 0 | ) |
Construct a new dynamic array of bits.
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.
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. |
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.
buffer | Pointer to an array of elements. |
bufferSize | Number of bits (not bytes!) pointed to by buffer. |
|
virtual |
Clone the object.
Reimplemented from PBYTEArray.
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.
true
if the memory allocation succeeded. 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.
index | Position 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.
minSize | Minimum size in bits (not bytes!) for returned buffer pointer. |
|
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.
Reimplemented from PContainer.
|
inline |
Set a bit to the array.
This is functionally identical to the PContainer::SetAt(index, true) function.
index | Position on the array to get value from. |
References SetAt().
|
inline |
Set a bit to the array.
This is functionally identical to the PContainer::SetAt(index, true) function.
index | Position on the array to get value from. |
References SetAt().
|
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.
index | Position on the array to get value from. |
References GetAt().
Set the specific bit in the array.
The array will automatically expand, if necessary, to fit the new element in.
index | Position in the array to set the new value. |
val | Value to set in the array. |
Referenced by operator+=(), and operator-=().
|
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.
newSize | New size of the array in bits, not bytes. |
Reimplemented from PAbstractArray.