#include <array.h>
Inheritance diagram for PBaseArray< T >:
Public Member Functions | |
Overrides from class PObject | |
virtual PObject * | Clone () const |
Overrides from class PContainer | |
PBoolean | SetAt (PINDEX index, T val) |
T | GetAt (PINDEX index) const |
void | Attach (const T *buffer, PINDEX bufferSize) |
T * | GetPointer (PINDEX minSize=0) |
New functions for class | |
T | operator[] (PINDEX index) const |
T & | operator[] (PINDEX index) |
operator T const * () const | |
PBoolean | Concatenate (const PBaseArray &array) |
Protected Member Functions | |
virtual void | PrintElementOn (ostream &stream, PINDEX index) const |
Note that if templates are not used the PBASEARRAY macro will simulate the template instantiation.
The following classes are instantiated automatically for the basic scalar types:
PBaseArray< T >::PBaseArray | ( | PINDEX | initialSize = 0 |
) | [inline] |
Construct a new dynamic array of elements of the specified type. The array is initialised to all zero bytes. Note that this may not be logically equivalent to the zero value for the type, though this would be very rare.
initialSize | Initial number of elements in the array. |
PBaseArray< T >::PBaseArray | ( | T const * | buffer, | |
PINDEX | length, | |||
PBoolean | dynamic = PTrue | |||
) | [inline] |
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 elements pointed to by buffer . |
dynamic | Buffer is copied and dynamically allocated. |
PBaseArray< T >::PBaseArray | ( | PINDEX | initialSize = 0 |
) | [inline] |
Construct a new dynamic array of elements of the specified type. The array is initialised to all zero bytes. Note that this may not be logically equivalent to the zero value for the type, though this would be very rare.
initialSize | Initial number of elements in the array. |
PBaseArray< T >::PBaseArray | ( | T const * | buffer, | |
PINDEX | length, | |||
PBoolean | dynamic = PTrue | |||
) | [inline] |
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 elements pointed to by buffer . |
dynamic | Buffer is copied and dynamically allocated. |
virtual PObject* PBaseArray< T >::Clone | ( | ) | const [inline, virtual] |
Clone the object.
Reimplemented from PObject.
Reimplemented in PString, PCaselessString, and PGloballyUniqueID.
PBoolean PBaseArray< T >::SetAt | ( | PINDEX | index, | |
T | val | |||
) | [inline] |
Set the specific element 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. |
T PBaseArray< T >::GetAt | ( | 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.
index | Position on the array to get value from. |
void PBaseArray< T >::Attach | ( | const T * | buffer, | |
PINDEX | bufferSize | |||
) | [inline] |
Attach a pointer to a static block to the base 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 elements pointed to by buffer. |
T* PBaseArray< T >::GetPointer | ( | PINDEX | minSize = 0 |
) | [inline] |
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 for returned buffer pointer. |
Reimplemented from PAbstractArray.
T PBaseArray< T >::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.
index | Position on the array to get value from. |
T& PBaseArray< T >::operator[] | ( | PINDEX | index | ) | [inline] |
Get a reference to value from the array. If index
is beyond the end of the allocated array then the array is expanded. If a memory allocation failure occurs the function asserts.
This is functionally similar to the SetAt() function and allows the array subscript to be an lvalue.
index | Position on the array to get value from. |
PBaseArray< T >::operator T const * | ( | ) | const [inline] |
Get a pointer to the internal array. The user may not modify the contents of this pointer. This is useful when the array contents are required by some external or system function eg file write.
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.
PBoolean PBaseArray< T >::Concatenate | ( | const PBaseArray< T > & | array | ) | [inline] |
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 PFalse if the target array is not dynamically allocated.
array | Other array to concatenate |
virtual void PBaseArray< T >::PrintElementOn | ( | ostream & | stream, | |
PINDEX | index | |||
) | const [inline, protected, virtual] |
Reimplemented from PAbstractArray.