TMCCountedPtrArray< T > Class Template Reference
[MCCore]

Inheritance diagram for TMCCountedPtrArray< T >:
TMCObject

List of all members.

Public Types

typedef T TTemplateType
typedef T * TValueType
 The template type on which the array is based.
typedef TMCPtrIterator< T,
TMCCountedPtrArray< T > > 
iterator
typedef TMCConstPtrIterator< T,
TMCCountedPtrArray< T > > 
const_iterator

Public Member Functions

 TMCCountedPtrArray (void)
 A type that represents the data type stored in the array.
 TMCCountedPtrArray (uint32 initialCount)
 TMCCountedPtrArray (uint32 initialCount, uint32 initialSpace, uint32 initialGrowSize)
 TMCCountedPtrArray (const TMCCountedPtrArray< T > &inFromArray)
 TMCCountedPtrArray (const TMCPtrArray< T > &inFromPtrArray)
 TMCCountedPtrArray (T **const &baseAddress, boolean inAquireMemory, uint32 elemCount, uint32 elemSpace)
 TMCCountedPtrArray (TMCCountedPtrArray< T > &array, uint32 elemStart, uint32 elemCount)
 ~TMCCountedPtrArray (void)
template<class TArray2 >
void QueryArray (const MCIID &iid, TArray2 &outArray) const
 Fills outArray.
void ArrayFree (void)
boolean IsValid (void) const
int8BaseAddress (void)
const int8BaseAddress (void) const
uint32 GetElemSize (void) const
uint32 GetGrowSize (void) const
uint32 GetElemSpace (void) const
uint32 GetElemCount (void) const
boolean ExternalMemory ()
boolean GetSmartGrow (void) const
T ** ArrayData (void)
T **const ArrayData (void) const
void SetValid (boolean valid)
void SetGrowSize (uint32 g)
void SetSmartGrow ()
boolean SetElemSpace (uint32 n)
boolean SetElemCount (uint32 n)
boolean AddElemCount (uint32 n)
const_iterator Begin (void) const
iterator Begin (void)
const_iterator End (void) const
iterator End (void)
void FirstElem (T **data)
T * FirstElemNoAddRef (void)
const T * FirstElemNoAddRef (void) const
void LastElem (T **data)
T * LastElemNoAddRef (void)
const T * LastElemNoAddRef (void) const
void Erase (const iterator &elementToErase)
void Erase (const iterator &start, const iterator &end)
boolean CopyElems (const TMCCountedPtrArray< T > &fromArray, uint32 startIndex, uint32 nbItems, uint32 insertIndex)
boolean Append (const TMCCountedPtrArray< T > &fromArray)
TMCCountedPtrArray< T > & operator= (const TMCCountedPtrArray< T > &fromArray)
TMCCountedPtrArray< T > & operator= (const TMCPtrArray< T > &fromPtrArray)
T * operator[] (uint32 i)
T * operator[] (uint32 i) const
boolean SetElem (uint32 index, T *data)
boolean GetElem (uint32 index, T **data) const
boolean AddElem (T *data)
boolean InsertElem (uint32 index, T *data)
boolean RemoveElem (uint32 index, uint32 count)
void RemoveElem (T *elemToRemove)
boolean CompactArray (void)
uint32 FindElem (const T *item) const
void CheckLastRefs ()
T ** Pointer (uint32 i)
const T ** Pointer (uint32 i) const
void Swap (TMCCountedPtrArray< T > &fromArray)

Protected Member Functions

boolean ArrayAlloc (uint32 initialCount, uint32 initialSpace, uint32 initialGrowSize)
boolean ArrayAllocFromBuffer (T **baseAddress, boolean inAquireMemory, uint32 elemCount, uint32 elemSpace)
void UpdateDataPointer (void)
void ZeroInternals (void)

Protected Attributes

friend iterator
friend const_iterator
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.

Detailed Description

template<class T>
class TMCCountedPtrArray< T >

TMCCountedPtrArray is an array used to store pointers to counted objects. It ensures that the refcount of all the objects is properly and automatically updated.

Indexes to access the Array classes are ZERO based (array[0] gives you the first element)

Arrays grows dynamically as you add elements. 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: TMCArray, TMCPtrArray, TMCClassArray and TMCExtensibleArray.


Member Typedef Documentation

Declare iterator types for this array

template<class T>
typedef TMCPtrIterator<T, TMCCountedPtrArray<T> > TMCCountedPtrArray< T >::iterator

Declare iterator types for this array

template<class T>
typedef T TMCCountedPtrArray< T >::TTemplateType
template<class T>
typedef T* TMCCountedPtrArray< T >::TValueType

The template type on which the array is based.


Constructor & Destructor Documentation

template<class T >
TMCCountedPtrArray< T >::TMCCountedPtrArray ( void   )  [inline]

A type that represents the data type stored in the array.

Creates an empty array

template<class T >
TMCCountedPtrArray< T >::TMCCountedPtrArray ( uint32  initialCount  )  [inline, explicit]

Constructs an array with a certain number of elements already accessible (and initialized to NULL).

Parameters:
initialCount initial number of array elements.
template<class T >
TMCCountedPtrArray< T >::TMCCountedPtrArray ( uint32  initialCount,
uint32  initialSpace,
uint32  initialGrowSize 
) [inline]

Constructs an array with a certain number of elements already accessible (and constructed), and/or some extra space to extend the array without reallocating it.

Note:
This constructor turns off eSmartGrow, so the grow size is constant
Parameters:
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
template<class T>
TMCCountedPtrArray< T >::TMCCountedPtrArray ( const TMCCountedPtrArray< T > &  inFromArray  )  [inline]

Copy constructor: Construct an array from an existing array.

template<class T>
TMCCountedPtrArray< T >::TMCCountedPtrArray ( const TMCPtrArray< T > &  inFromPtrArray  )  [inline]

Copy constructor: Construct an array from an existing array.

template<class T>
TMCCountedPtrArray< T >::TMCCountedPtrArray ( T **const &  baseAddress,
boolean  inAquireMemory,
uint32  elemCount,
uint32  elemSpace 
) [inline]

Constructs an array from existing memory.

Note:
: If you pass inAquireMemory = false then this array CANNOT grow past elemSpace, and will not free the memory passed in.
Parameters:
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.
template<class T>
TMCCountedPtrArray< T >::TMCCountedPtrArray ( TMCCountedPtrArray< T > &  array,
uint32  elemStart,
uint32  elemCount 
) [inline]

Constructs an alias to an existing array.

Note:
: This array CANNOT grow past elemSpace, and will not free the memory passed in. Also this array is an alias to the array passed in NOT a copy so be carefull.
Parameters:
array Alias elements from this array.
elemStart Start alias here.
elemCount Alias this many elements.
template<class T >
TMCCountedPtrArray< T >::~TMCCountedPtrArray ( void   )  [inline]

Releases all the elements of the array and frees the memory (if the array owns it).


Member Function Documentation

template<class T>
boolean TMCCountedPtrArray< T >::AddElem ( T *  data  )  [inline]

Add an element to the end of the array and assign it the data reference that is passed in.

template<class T >
boolean TMCCountedPtrArray< T >::AddElemCount ( uint32  n  )  [inline]

Add the passed in number of elemens to the array.

template<class T>
boolean TMCCountedPtrArray< T >::Append ( const TMCCountedPtrArray< T > &  fromArray  )  [inline]

Append one array on to the end of another.

template<class T >
boolean TMCCountedPtrArray< T >::ArrayAlloc ( uint32  initialCount,
uint32  initialSpace,
uint32  initialGrowSize 
) [inline, protected]

!!! DO NOT CALL THIS !!!

template<class T>
boolean TMCCountedPtrArray< T >::ArrayAllocFromBuffer ( T **  baseAddress,
boolean  inAquireMemory,
uint32  elemCount,
uint32  elemSpace 
) [inline, protected]

!!! DO NOT CALL THIS !!!

template<class T>
T** const TMCCountedPtrArray< T >::ArrayData ( void   )  const [inline]

Returns a pointer to the first element

template<class T>
T** TMCCountedPtrArray< T >::ArrayData ( void   )  [inline]

Returns a pointer to the first element

template<class T >
void TMCCountedPtrArray< T >::ArrayFree ( void   )  [inline]

Releases all the elements of the array and frees the memory (if the array owns it) And sets the element count to 0.

template<class T>
const int8* TMCCountedPtrArray< T >::BaseAddress ( void   )  const [inline]

Returns the address at which the elements of the array begin

template<class T>
int8* TMCCountedPtrArray< T >::BaseAddress ( void   )  [inline]

Returns the address at which the elements of the array begin

template<class T>
iterator TMCCountedPtrArray< T >::Begin ( void   )  [inline]

Returns a reference to the begining iterator for the array.

template<class T>
const_iterator TMCCountedPtrArray< T >::Begin ( void   )  const [inline]

Returns a reference to the begining iterator for the array.

template<class T >
void TMCCountedPtrArray< T >::CheckLastRefs (  )  [inline]

In debug, verifies that the refcount of every object in the array is 1 (ie they'll be deleted when the array is destroyed)

template<class T>
boolean TMCCountedPtrArray< T >::CompactArray ( void   )  [inline]

Gets rid of any space that has been allocated to the array and isn't being used.

template<class T>
boolean TMCCountedPtrArray< T >::CopyElems ( const TMCCountedPtrArray< T > &  fromArray,
uint32  startIndex,
uint32  nbItems,
uint32  insertIndex 
) [inline]

Copy elements from one array to another.

template<class T>
iterator TMCCountedPtrArray< T >::End ( void   )  [inline]
template<class T>
const_iterator TMCCountedPtrArray< T >::End ( void   )  const [inline]
template<class T >
void TMCCountedPtrArray< T >::Erase ( const iterator start,
const iterator end 
) [inline]

Erases a range of elements in the array from the startIterator to the endIterator.

template<class T>
void TMCCountedPtrArray< T >::Erase ( const iterator elementToErase  )  [inline]

Erases a single element in the array that is referenced by the iterator.

template<class T>
boolean TMCCountedPtrArray< T >::ExternalMemory (  )  [inline]

Returns true if the array doesn't own its memory

template<class T>
uint32 TMCCountedPtrArray< T >::FindElem ( const T *  item  )  const [inline]

Finds the index in this array of the given element

Parameters:
item the element to search for
Returns:
kUnusedIndex if elemToFind is not in the array, otherwise a valid index
template<class T>
void TMCCountedPtrArray< T >::FirstElem ( T **  data  )  [inline]

Returns the first element in the array (addrefs it).

template<class T >
const T * TMCCountedPtrArray< T >::FirstElemNoAddRef ( void   )  const [inline]

Returns the first element in the array (without calling addref on it).

template<class T >
T * TMCCountedPtrArray< T >::FirstElemNoAddRef ( void   )  [inline]

Returns the first element in the array (without calling addref on it).

template<class T>
boolean TMCCountedPtrArray< T >::GetElem ( uint32  index,
T **  data 
) const [inline]

Get the contents of arrray index into the passed in data reference.

template<class T>
uint32 TMCCountedPtrArray< T >::GetElemCount ( void   )  const [inline]

Returns the actual number of (valid) elements in the array. Those elements can be accessed with the operator []

template<class T>
uint32 TMCCountedPtrArray< T >::GetElemSize ( void   )  const [inline]

Returns the size of one element (sizeof(T*))

template<class T>
uint32 TMCCountedPtrArray< T >::GetElemSpace ( void   )  const [inline]

Returns the number of elements that can be stored in the array (before the next reallocation)

template<class T>
uint32 TMCCountedPtrArray< T >::GetGrowSize ( void   )  const [inline]

Returns the size by which the array grows

template<class T>
boolean TMCCountedPtrArray< T >::GetSmartGrow ( void   )  const [inline]

Returns true if the grow size is dynamic

template<class T>
boolean TMCCountedPtrArray< T >::InsertElem ( uint32  index,
T *  data 
) [inline]

Inserts one element at the given index

Parameters:
index where to insert
data the data to insert
template<class T>
boolean TMCCountedPtrArray< T >::IsValid ( void   )  const [inline]

IsValid(): Check to see if the class is valid.

template<class T>
void TMCCountedPtrArray< T >::LastElem ( T **  data  )  [inline]
template<class T >
const T * TMCCountedPtrArray< T >::LastElemNoAddRef ( void   )  const [inline]

Returns the last element in the array (without calling addref on it).

template<class T >
T * TMCCountedPtrArray< T >::LastElemNoAddRef ( void   )  [inline]

Returns the last element in the array (without calling addref on it).

template<class T>
TMCCountedPtrArray< T > & TMCCountedPtrArray< T >::operator= ( const TMCPtrArray< T > &  fromPtrArray  )  [inline]

operator=: Assignment operator copies all the data from one array to another.

template<class T>
TMCCountedPtrArray< T > & TMCCountedPtrArray< T >::operator= ( const TMCCountedPtrArray< T > &  fromArray  )  [inline]

operator=: Assignment operator copies all the data from one array to another.

template<class T>
T* TMCCountedPtrArray< T >::operator[] ( uint32  i  )  const [inline]

Returns the data at the passed in index.

Note:
the returned value is not a reference to the array element, so you cannot assign into an array with these operators (not an lvalue, and if it was we couldn't automatically update the refcount).
Parameters:
i the index of the element to return
template<class T>
T* TMCCountedPtrArray< T >::operator[] ( uint32  i  )  [inline]

Returns the data at the passed in index.

Note:
the returned value is not a reference to the array element, so you cannot assign into an array with these operators (not an lvalue, and if it was we couldn't automatically update the refcount).
Parameters:
i the index of the element to return
template<class T>
const T** TMCCountedPtrArray< T >::Pointer ( uint32  i  )  const [inline]

Returns a pointer to the data at the passed in index.

template<class T>
T** TMCCountedPtrArray< T >::Pointer ( uint32  i  )  [inline]

Returns a pointer to the data at the passed in index.

template<class T>
template<class TArray2 >
void TMCCountedPtrArray< T >::QueryArray ( const MCIID iid,
TArray2 &  outArray 
) const [inline]

Fills outArray.

template<class T>
void TMCCountedPtrArray< T >::RemoveElem ( T *  elemToRemove  )  [inline]

Removes one element from the array starting from the passed in index.

template<class T >
boolean TMCCountedPtrArray< T >::RemoveElem ( uint32  index,
uint32  count 
) [inline]

Removes one or more elements from the array starting from the passed in index.

Reimplemented in TTimeBasedList.

template<class T>
boolean TMCCountedPtrArray< T >::SetElem ( uint32  index,
T *  data 
) [inline]

Set the contents of array index to the passed in data reference.

template<class T >
boolean TMCCountedPtrArray< T >::SetElemCount ( uint32  n  )  [inline]

Set the number of elements in the array.

template<class T >
boolean TMCCountedPtrArray< T >::SetElemSpace ( uint32  n  )  [inline]

Set the number of elements to have memory allocated for.

Note:
: This memory is unconstructed, uninitialied and isn't considered part of the array until the element count reaches the memory.
template<class T>
void TMCCountedPtrArray< T >::SetGrowSize ( uint32  g  )  [inline]

Sets the growSize (and sets the eSmartGrow flag to false)

template<class T>
void TMCCountedPtrArray< T >::SetSmartGrow (  )  [inline]

Sets the eSmartGrow flag and computes the maximum grow size (in elements count)

template<class T>
void TMCCountedPtrArray< T >::SetValid ( boolean  valid  )  [inline]

Sets the valid flag to true

template<class T>
void TMCCountedPtrArray< T >::Swap ( TMCCountedPtrArray< T > &  fromArray  )  [inline]
template<class T>
void TMCCountedPtrArray< T >::UpdateDataPointer ( void   )  [inline, protected]
template<class T>
void TMCCountedPtrArray< T >::ZeroInternals ( void   )  [inline, protected]

Member Data Documentation

template<class T>
friend TMCCountedPtrArray< T >::const_iterator [protected]
template<class T>
T** TMCCountedPtrArray< T >::fArrayData [protected]

The memory block used by the array.

template<class T>
uint32 TMCCountedPtrArray< T >::fArrayFlags [protected]

Flags that control the behavior of the array.

template<class T>
uint32 TMCCountedPtrArray< T >::fElemCount [protected]

The number of elements in use.

template<class T>
uint32 TMCCountedPtrArray< T >::fElemSpace [protected]

The number of elements allocated (unconstructed).

template<class T>
friend TMCCountedPtrArray< T >::iterator [protected]

The documentation for this class was generated from the following file:
Generated on Mon Apr 26 22:48:02 2010 for Carrara SDK Doc by  doxygen 1.6.3