Public Types | |
typedef T | TTemplateType |
typedef T | TValueType |
The template type on which the array is based. | |
typedef TMCIterator< T, TMCArray< T > > | iterator |
typedef TMCConstIterator< T, TMCArray< T > > | const_iterator |
Public Member Functions | |
TMCArray (void) | |
A type that represents the data type stored in the array. | |
TMCArray (uint32 initialCount, boolean initialZeroMem) | |
TMCArray (uint32 initialCount, uint32 initialSpace, uint32 initialGrowSize, boolean initialZeroMem) | |
TMCArray (const TMCArray< T > &inFromArray) | |
TMCArray (T *const &baseAddress, boolean inAquireMemory, uint32 elemCount, uint32 elemSpace) | |
TMCArray (TMCArray< T > &array, uint32 elemStart, uint32 elemCount) | |
~TMCArray (void) | |
TMCArray< T > & | operator= (const TMCArray< T > &fromArray) |
void | ArrayAlias (T *baseAddress, uint32 elemCount) |
Frees existing Data, then references an existing array without taking ownership. | |
void | ArrayAlias (T *baseAddress, uint32 elemCount, uint32 elemSpace) |
The number of array elements in use in that memory. | |
void | ArrayAlias (void *baseAddress, uint32 elemCount, uint32 elemSpace) |
void | ArrayAlias (TMCArray< T > &sourceArray) |
void | ArrayFree (void) |
boolean | IsValid (void) const |
int8 * | BaseAddress (void) |
const int8 * | BaseAddress (void) const |
uint32 | GetElemSize (void) const |
uint32 | GetGrowSize (void) const |
uint32 | GetElemSpace (void) const |
uint32 | GetElemCount (void) const |
boolean | GetZeroMem (void) const |
boolean | ExternalMemory () |
boolean | GetSmartGrow (void) const |
T * | ArrayData (void) |
const T * | ArrayData (void) const |
boolean | IsInArray (const T *data) const |
void | SetZeroMem (boolean z) |
void | SetValid (boolean valid) |
void | SetGrowSize (uint32 g) |
void | SetSmartGrow () |
boolean | SetElemSpace (uint32 n) |
boolean | SetElemCount (MCSize nAsMCSize) |
boolean | AddElemCount (uint32 n) |
const_iterator | Begin (void) const |
iterator | Begin (void) |
const_iterator | End (void) const |
iterator | End (void) |
T & | FirstElem (void) |
const T & | FirstElem (void) const |
T & | LastElem (void) |
const T & | LastElem (void) const |
void | Erase (const iterator &elementToErase) |
void | Erase (const iterator &start, const iterator &end) |
boolean | CopyElems (const TMCArray< T > &fromArray, uint32 startIndex, uint32 nbItems, uint32 insertIndex) |
boolean | Append (const TMCArray< T > &fromArray) |
void | FillWithValue (const T &inValue, uint32 inStart=kBeginIndex, uint32 inLength=kUnusedIndex) |
void | Swap (TMCArray< T > &fromArray) |
T * | Pointer (MCSize i) |
const T * | Pointer (MCSize i) const |
T & | operator[] (MCSize i) |
const T & | operator[] (MCSize i) const |
void | Assign (int32 elemCount, const T &value) |
Sets the value of a number of elements of the array, grows the array if necessary. | |
void | AssignArithmeticalSuite (int32 elemCount, const T &u0, const T &a) |
void | SetElem (uint32 index, const T &data) |
void | GetElem (uint32 index, T &data) const |
boolean | AddElem (const T &data) |
boolean | InsertElem (uint32 index, const T &data) |
boolean | InsertElem (uint32 index, uint32 count, const T &data) |
void | RemoveElem (MCSize index, MCSize count) |
uint32 | FindElem (const T &item) const |
int32 | DichoSearch (const int32 beginIndex, const int32 endIndex, const T &item) const |
int32 | DichoSearch (const T &item) const |
boolean | CompactArray (void) |
void | ReorderArray (const TMCArray< int32 > &reoderedIndex) |
Protected Member Functions | |
boolean | ArrayAlloc (uint32 initialCount, uint32 initialSpace, uint32 initialGrowSize, boolean initialZeroMem) |
boolean | ArrayAllocFromBuffer (T *baseAddress, boolean inAquireMemory, uint32 elemCount, uint32 elemSpace) |
void | UpdateDataPointer (void) |
void | ZeroInternals (void) |
Protected Attributes | |
uint32 | fElemCount |
The number of elements in use. | |
uint32 | fElemSpace |
The number of elements allocated (unconstructed). | |
uint32 | fArrayFlags |
Flags that control the behavior of the array. | |
T * | fArrayData |
The memory block used by the array. |
TMCArray is an array used to store simple types, structs or classes that don't need a constructor nor a destructor. For example, you can use it with int32, TVector3, TMCString255, but not with TMCDynamicString (memory leaks on destruction).
Indexes to access the Array classes are ZERO based (array[0] gives you the first element)
Arrays grows dynamically as you add elements, so it is very dangerous to keep pointers to elements of the array: if the array is reallocated, your pointers will become invalid. In this case, you should use indexes. For better efficiency, preallocate the number of elements you'll need (or use an estimation of the space if possible).
In eSmartGrow mode (the default), the size of the extra space added when the array is reallocated (the grow size) depends on the number of elements already in the array. Otherwise, a constant grow size is used.
Other array classes are: TMCPtrArray, TMCCountedPtrArray, TMCClassArray and TMCExtensibleArray, TMCStaticArray and TMCStaticClassArray.
typedef TMCConstIterator<T, TMCArray<T> > TMCArray< T >::const_iterator |
typedef TMCIterator<T, TMCArray<T> > TMCArray< T >::iterator |
Declare iterator types for this array
typedef T TMCArray< T >::TTemplateType |
typedef T TMCArray< T >::TValueType |
The template type on which the array is based.
A type that represents the data type stored in the array.
Creates an empty array
Constructs an array with a certain number of elements already accessible
initialCount | initial number of array elements. | |
initialZeroMem | Zero the memory allocated for array storage ? |
TMCArray< T >::TMCArray | ( | uint32 | initialCount, | |
uint32 | initialSpace, | |||
uint32 | initialGrowSize, | |||
boolean | initialZeroMem | |||
) | [inline] |
Constructs an array with a certain number of elements already accessible, and/or some extra space to extend the array without reallocating it.
initialCount | Initial number of array elements. | |
initialSpace | Pre-allocate space for this many elements (must be bigger than initialCount). | |
initialGrowSize | How many elements to grow the array when we grow past the end | |
initialZeroMem | Zero the memory allocated for array storage ? |
Copy constructor: Construct an array from an existing array.
TMCArray< T >::TMCArray | ( | T *const & | baseAddress, | |
boolean | inAquireMemory, | |||
uint32 | elemCount, | |||
uint32 | elemSpace | |||
) | [inline] |
Constructs an array from existing memory.
baseAddress | External memory to use for this array. | |
inAquireMemory | Should we take possession this memory. | |
elemCount | The number of array elements in use in that memory. | |
elemSpace | The number of array elements that can be used in that memory. |
TMCArray< T >::TMCArray | ( | TMCArray< T > & | array, | |
uint32 | elemStart, | |||
uint32 | elemCount | |||
) | [inline] |
Constructs an alias to an existing array.
array | Alias elements from this array. | |
elemStart | Start alias here. | |
elemCount | Alias this many elements. |
Frees the memory used by the array (if it owns it).
Add an element to the end of the array and assign it the data reference that is passed in.
Adds the passed in number of elements to the array.
Append one array on to the end of another.
void TMCArray< T >::ArrayAlias | ( | void * | baseAddress, | |
uint32 | elemCount, | |||
uint32 | elemSpace | |||
) | [inline] |
The number of array elements in use in that memory.
elemCount | External memory to use for this array. |
void TMCArray< T >::ArrayAlias | ( | T * | baseAddress, | |
uint32 | elemCount, | |||
uint32 | elemSpace | |||
) | [inline] |
The number of array elements in use in that memory.
elemCount | External memory to use for this array. |
Frees existing Data, then references an existing array without taking ownership.
elemCount | External memory to use for this array. |
boolean TMCArray< T >::ArrayAlloc | ( | uint32 | initialCount, | |
uint32 | initialSpace, | |||
uint32 | initialGrowSize, | |||
boolean | initialZeroMem | |||
) | [inline, protected] |
!!! DO NOT CALL THIS !!!
boolean TMCArray< T >::ArrayAllocFromBuffer | ( | T * | baseAddress, | |
boolean | inAquireMemory, | |||
uint32 | elemCount, | |||
uint32 | elemSpace | |||
) | [inline, protected] |
!!! DO NOT CALL THIS !!!
const T* TMCArray< T >::ArrayData | ( | void | ) | const [inline] |
Returns a pointer to the first element
T* TMCArray< T >::ArrayData | ( | void | ) | [inline] |
Returns a pointer to the first element
void TMCArray< T >::ArrayFree | ( | void | ) | [inline] |
Frees all the memory held by this array (unless it uses external memory). And sets the element count to 0.
void TMCArray< T >::Assign | ( | int32 | elemCount, | |
const T & | value | |||
) | [inline] |
Sets the value of a number of elements of the array, grows the array if necessary.
Sets the value of a number of elements of the array.
void TMCArray< T >::AssignArithmeticalSuite | ( | int32 | elemCount, | |
const T & | u0, | |||
const T & | a | |||
) | [inline] |
Returns the address at which the elements of the array begin
Returns the address at which the elements of the array begin
Returns an iterator initialized to the beginning of the array.
const_iterator TMCArray< T >::Begin | ( | void | ) | const [inline] |
Returns an iterator initialized to the beginning of the array.
Get rid of any space that has been allocated by the array and isn't being used.
boolean TMCArray< T >::CopyElems | ( | const TMCArray< T > & | fromArray, | |
uint32 | startIndex, | |||
uint32 | nbItems, | |||
uint32 | insertIndex | |||
) | [inline] |
Copy elements from one array to another.
int32 TMCArray< T >::DichoSearch | ( | const T & | item | ) | const [inline] |
int32 TMCArray< T >::DichoSearch | ( | const int32 | beginIndex, | |
const int32 | endIndex, | |||
const T & | item | |||
) | const [inline] |
Finds the index of an instance of item in the array.
Returns an iterator initialized to the end of the array.
const_iterator TMCArray< T >::End | ( | void | ) | const [inline] |
Returns an iterator initialized to the end of the array.
void TMCArray< T >::Erase | ( | const iterator & | start, | |
const iterator & | end | |||
) | [inline] |
Erases a range of elements in the array from the startIterator to the endIterator.
Erases a single element in the array that is referenced by the iterator.
Returns true if the array doesn't own its memory
void TMCArray< T >::FillWithValue | ( | const T & | inValue, | |
uint32 | inStart = kBeginIndex , |
|||
uint32 | inLength = kUnusedIndex | |||
) | [inline] |
Fill an array range with the value passed in.
Finds the index of the first instance of item in the array (if it exists).
item | the item to serch for |
const T& TMCArray< T >::FirstElem | ( | void | ) | const [inline] |
Returns a reference to the first element in the array.
T& TMCArray< T >::FirstElem | ( | void | ) | [inline] |
Returns a reference to the first element in the array.
Get the contents of arrray index into the passed in data reference.
Returns the actual number of (valid) elements in the array. Those elements can be accessed with the operator []
Returns the size of one element
Returns the number of elements that can be stored in the array (before the next reallocation)
Returns the size by which the array grows
Returns true if the grow size is dynamic
Returns true if the newly allocated memory should be initialized with zero
boolean TMCArray< T >::InsertElem | ( | uint32 | index, | |
uint32 | count, | |||
const T & | data | |||
) | [inline] |
Inserts elements at the given index
index | where to insert | |
count | number to insert | |
data | the data to insert |
Inserts one element at the given index
index | where to insert | |
data | the data to insert |
Returns true if the element is in the array
IsValid(): Check to see if the class is valid.
const T& TMCArray< T >::LastElem | ( | void | ) | const [inline] |
Returns a reference to the last element in the array.
T& TMCArray< T >::LastElem | ( | void | ) | [inline] |
Returns a reference to the last element in the array.
TMCArray< T > & TMCArray< T >::operator= | ( | const TMCArray< T > & | fromArray | ) | [inline] |
operator= Assignment operator copies all the data from one array to another.
Returns a reference to the data at the passed in index.
Returns a reference to the data at the passed in index.
Returns a pointer to the data at the passed in index.
Returns a pointer to the data at the passed in index.
Remove one or more elements from the array starting from the passed in index.
void TMCArray< T >::ReorderArray | ( | const TMCArray< int32 > & | reoderedIndex | ) | [inline] |
Set the contents of arrray index to the passed in data reference.
Set the number of elements in the array.
Sets the number of elements to have memory allocated for.
Sets the growSize (and sets the eSmartGrow flag to false)
void TMCArray< T >::SetSmartGrow | ( | ) | [inline] |
Sets the eSmartGrow flag and computes the maximum grow size (in elements count)
Sets the valid flag to true
Sets whether the newly allocated memory should be initialized with zero
Swaps the contents of two arrays.
void TMCArray< T >::UpdateDataPointer | ( | void | ) | [inline, protected] |
void TMCArray< T >::ZeroInternals | ( | void | ) | [inline, protected] |
T* TMCArray< T >::fArrayData [protected] |
The memory block used by the array.
uint32 TMCArray< T >::fArrayFlags [protected] |
Flags that control the behavior of the array.
uint32 TMCArray< T >::fElemCount [protected] |
The number of elements in use.
uint32 TMCArray< T >::fElemSpace [protected] |
The number of elements allocated (unconstructed).