Home | Namespaces | Hierarchy | Alphabetical List | Class list | Files | Namespace Members | Class members | File members | Tutorials
Public Member Functions | List of all members
irr::core::array< T, TAlloc > Class Template Reference

Self reallocating template array (like stl vector) with additional features. More...

#include <irrArray.h>

Public Member Functions

u32 allocated_size () const
 Get amount of memory allocated.
 array ()
 Default constructor for empty array.
 array (u32 start_count)
 Constructs an array and allocates an initial chunk of memory.
 array (const array< T, TAlloc > &other)
 Copy constructor.
s32 binary_search (const T &element)
 Performs a binary search for an element, returns -1 if not found.
s32 binary_search (const T &element) const
 Performs a binary search for an element if possible, returns -1 if not found.
s32 binary_search (const T &element, s32 left, s32 right) const
 Performs a binary search for an element, returns -1 if not found.
s32 binary_search_multi (const T &element, s32 &last)
void clear ()
 Clears the array and deletes all allocated memory.
const T * const_pointer () const
 Gets a const pointer to the array.
bool empty () const
 Check if array is empty.
void erase (u32 index)
 Erases an element from the array.
void erase (u32 index, s32 count)
 Erases some elements from the array.
T & getLast ()
 Gets last element.
const T & getLast () const
 Gets last element.
void insert (const T &element, u32 index=0)
 Insert item into array at specified position.
s32 linear_reverse_search (const T &element) const
 Finds an element in linear time, which is very slow.
s32 linear_search (const T &element) const
 Finds an element in linear time, which is very slow.
bool operator!= (const array< T, TAlloc > &other) const
 Inequality operator.
const array< T, TAlloc > & operator= (const array< T, TAlloc > &other)
 Assignment operator.
bool operator== (const array< T, TAlloc > &other) const
 Equality operator.
T & operator[] (u32 index)
 Direct access operator.
const T & operator[] (u32 index) const
 Direct const access operator.
T * pointer ()
 Gets a pointer to the array.
void push_back (const T &element)
 Adds an element at back of array.
void push_front (const T &element)
 Adds an element at the front of the array.
void reallocate (u32 new_size)
 Reallocates the array, make it bigger or smaller.
void set_free_when_destroyed (bool f)
 Sets if the array should delete the memory it uses upon destruction.
void set_pointer (T *newPointer, u32 size, bool _is_sorted=false, bool _free_when_destroyed=true)
 Sets pointer to new array, using this as new workspace.
void set_sorted (bool _is_sorted)
 Sets if the array is sorted.
void set_used (u32 usedNow)
 Sets the size of the array and allocates new elements if necessary.
void setAllocStrategy (eAllocStrategy newStrategy=ALLOC_STRATEGY_DOUBLE)
 set a new allocation strategy
u32 size () const
 Get number of occupied elements of the array.
void sort ()
 Sorts the array using heapsort.
void swap (array< T, TAlloc > &other)
 Swap the content of this array container with the content of another array.
 ~array ()
 Destructor.

Detailed Description

template<class T, typename TAlloc = irrAllocator<T>>
class irr::core::array< T, TAlloc >

Self reallocating template array (like stl vector) with additional features.

Some features are: Heap sorting, binary search methods, easier debugging.

Definition at line 22 of file irrArray.h.

Constructor & Destructor Documentation

template<class T, typename TAlloc = irrAllocator<T>>
irr::core::array< T, TAlloc >::array ( )
inline

Default constructor for empty array.

Definition at line 28 of file irrArray.h.

Referenced by irr::core::string< fschar_t >::operator<().

template<class T, typename TAlloc = irrAllocator<T>>
irr::core::array< T, TAlloc >::array ( u32  start_count)
inline

Constructs an array and allocates an initial chunk of memory.

Parameters
start_countAmount of elements to pre-allocate.

Definition at line 37 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
irr::core::array< T, TAlloc >::array ( const array< T, TAlloc > &  other)
inline

Copy constructor.

Definition at line 46 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
irr::core::array< T, TAlloc >::~array ( )
inline

Destructor.

Frees allocated memory, if set_free_when_destroyed was not set to

false by the user before.

Definition at line 55 of file irrArray.h.

Member Function Documentation

template<class T, typename TAlloc = irrAllocator<T>>
u32 irr::core::array< T, TAlloc >::allocated_size ( ) const
inline

Get amount of memory allocated.

\return Amount of memory allocated. The amount of bytes

allocated would be allocated_size() * sizeof(ElementTypeUsed);

Definition at line 368 of file irrArray.h.

Referenced by irr::scene::SMD3QuaternionTagList::set_used().

template<class T, typename TAlloc = irrAllocator<T>>
s32 irr::core::array< T, TAlloc >::binary_search ( const T &  element)
inline

Performs a binary search for an element, returns -1 if not found.

The array will be sorted before the binary search if it is not

already sorted. Caution is advised! Be careful not to call this on unsorted const arrays, or the slower method will be used.

Parameters
elementElement to search for.
Returns
Position of the searched element if it was found, otherwise -1 is returned.

Definition at line 400 of file irrArray.h.

Referenced by irr::core::array< IMesh * >::binary_search(), and irr::core::array< IMesh * >::binary_search_multi().

template<class T, typename TAlloc = irrAllocator<T>>
s32 irr::core::array< T, TAlloc >::binary_search ( const T &  element) const
inline

Performs a binary search for an element if possible, returns -1 if not found.

This method is for const arrays and so cannot call sort(), if the array is

not sorted then linear_search will be used instead. Potentially very slow!

Parameters
elementElement to search for.
Returns
Position of the searched element if it was found, otherwise -1 is returned.

Definition at line 413 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
s32 irr::core::array< T, TAlloc >::binary_search ( const T &  element,
s32  left,
s32  right 
) const
inline

Performs a binary search for an element, returns -1 if not found.

\param element: Element to search for.
Parameters
leftFirst left index
rightLast right index.
Returns
Position of the searched element if it was found, otherwise -1 is returned.

Definition at line 428 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
s32 irr::core::array< T, TAlloc >::binary_search_multi ( const T &  element,
s32 last 
)
inline

Performs a binary search for an element, returns -1 if not found. it is used for searching a multiset The array will be sorted before the binary search if it is not already sorted.

Parameters
elementElement to search for.
&lastreturn lastIndex of equal elements
Returns
Position of the first searched element if it was found, otherwise -1 is returned.

Definition at line 466 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::clear ( )
inline
template<class T, typename TAlloc = irrAllocator<T>>
const T* irr::core::array< T, TAlloc >::const_pointer ( ) const
inline
template<class T, typename TAlloc = irrAllocator<T>>
bool irr::core::array< T, TAlloc >::empty ( ) const
inline
template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::erase ( u32  index)
inline

Erases an element from the array.

May be slow, because all elements following after the erased

element have to be copied.

Parameters
index,:Index of element to be erased.

Definition at line 527 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::erase ( u32  index,
s32  count 
)
inline

Erases some elements from the array.

May be slow, because all elements following after the erased

element have to be copied.

Parameters
index,:Index of the first element to be erased.
count,:Amount of elements to be erased.

Definition at line 548 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
T& irr::core::array< T, TAlloc >::getLast ( )
inline

Gets last element.

Definition at line 324 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
const T& irr::core::array< T, TAlloc >::getLast ( ) const
inline

Gets last element.

Definition at line 333 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::insert ( const T &  element,
u32  index = 0 
)
inline

Insert item into array at specified position.

Please use this only if you know what you are doing (possible

performance loss). The preferred method of adding elements should be push_back().

Parameters
element,:Element to be inserted
index,:Where position to insert the new element.

Definition at line 126 of file irrArray.h.

Referenced by irr::core::array< IMesh * >::push_back(), and irr::core::array< IMesh * >::push_front().

template<class T, typename TAlloc = irrAllocator<T>>
s32 irr::core::array< T, TAlloc >::linear_reverse_search ( const T &  element) const
inline

Finds an element in linear time, which is very slow.

Use binary_search for faster finding. Only works if ==operator is

implemented.

Parameters
element,:Element to search for.
Returns
Position of the searched element if it was found, otherwise -1 is returned.

Definition at line 513 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
s32 irr::core::array< T, TAlloc >::linear_search ( const T &  element) const
inline

Finds an element in linear time, which is very slow.

Use binary_search for faster finding. Only works if ==operator is

implemented.

Parameters
elementElement to search for.
Returns
Position of the searched element if it was found, otherwise -1 is returned.

Definition at line 497 of file irrArray.h.

Referenced by irr::core::array< IMesh * >::binary_search(), irr::scene::SMD3QuaternionTagList::get(), and irr::scene::quake3::SVarGroup::get().

template<class T, typename TAlloc = irrAllocator<T>>
bool irr::core::array< T, TAlloc >::operator!= ( const array< T, TAlloc > &  other) const
inline

Inequality operator.

Definition at line 299 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
const array<T, TAlloc>& irr::core::array< T, TAlloc >::operator= ( const array< T, TAlloc > &  other)
inline

Assignment operator.

Definition at line 258 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
bool irr::core::array< T, TAlloc >::operator== ( const array< T, TAlloc > &  other) const
inline

Equality operator.

Definition at line 286 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
T& irr::core::array< T, TAlloc >::operator[] ( u32  index)
inline

Direct access operator.

Definition at line 306 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
const T& irr::core::array< T, TAlloc >::operator[] ( u32  index) const
inline

Direct const access operator.

Definition at line 315 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
T* irr::core::array< T, TAlloc >::pointer ( )
inline
template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::push_back ( const T &  element)
inline
template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::push_front ( const T &  element)
inline

Adds an element at the front of the array.

If the array is to small to add this new element, the array is

made bigger. Please note that this is slow, because the whole array needs to be copied for this.

Parameters
elementElement to add at the back of the array.

Definition at line 114 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::reallocate ( u32  new_size)
inline

Reallocates the array, make it bigger or smaller.

Parameters
new_sizeNew size of array.

Definition at line 63 of file irrArray.h.

Referenced by irr::scene::CMeshBuffer< T >::append(), irr::core::array< IMesh * >::array(), irr::core::array< IMesh * >::insert(), and irr::core::array< IMesh * >::set_used().

template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::set_free_when_destroyed ( bool  f)
inline

Sets if the array should delete the memory it uses upon destruction.

Also clear and set_pointer will only delete the (original) memory

area if this flag is set to true, which is also the default. The methods reallocate, set_used, push_back, push_front, insert, and erase will still try to deallocate the original memory, which might cause troubles depending on the intended use of the memory area.

Parameters
fIf true, the array frees the allocated memory in its destructor, otherwise not. The default is true.

Definition at line 238 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::set_pointer ( T *  newPointer,
u32  size,
bool  _is_sorted = false,
bool  _free_when_destroyed = true 
)
inline

Sets pointer to new array, using this as new workspace.

Make sure that set_free_when_destroyed is used properly.
Parameters
newPointer,:Pointer to new array of elements.
size,:Size of the new array.
_is_sortedFlag which tells whether the new array is already sorted.
_free_when_destroyedSets whether the new memory area shall be freed by the array upon destruction, or if this will be up to the user application.

Definition at line 219 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::set_sorted ( bool  _is_sorted)
inline

Sets if the array is sorted.

Definition at line 575 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::set_used ( u32  usedNow)
inline

Sets the size of the array and allocates new elements if necessary.

Please note: This is only secure when using it with simple types,

because no default constructor will be called for the added elements.

Parameters
usedNowAmount of elements now used.

Definition at line 248 of file irrArray.h.

template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::setAllocStrategy ( eAllocStrategy  newStrategy = ALLOC_STRATEGY_DOUBLE)
inline

set a new allocation strategy

if the maximum size of the array is unknown, you can define how big the

allocation should happen.

Parameters
newStrategyNew strategy to apply to this array.

Definition at line 94 of file irrArray.h.

Referenced by irr::scene::SMD3QuaternionTagList::SMD3QuaternionTagList(), irr::scene::quake3::SVarGroup::SVarGroup(), and irr::scene::quake3::SVarGroupList::SVarGroupList().

template<class T, typename TAlloc = irrAllocator<T>>
u32 irr::core::array< T, TAlloc >::size ( ) const
inline

Get number of occupied elements of the array.

Returns
Size of elements in the array which are actually occupied.

Definition at line 359 of file irrArray.h.

Referenced by irr::scene::SSkinMeshBuffer::convertTo2TCoords(), irr::scene::SSkinMeshBuffer::convertToTangents(), irr::scene::quake3::dumpShader(), irr::scene::quake3::dumpVarGroup(), irr::scene::quake3::getAsStringList(), irr::scene::SAnimatedMesh::getFrameCount(), irr::scene::quake3::IShader::getGroup(), irr::scene::quake3::IShader::getGroupSize(), irr::scene::SSharedMeshBuffer::getIndexCount(), irr::scene::CMeshBuffer< T >::getIndexCount(), irr::scene::SSkinMeshBuffer::getIndexCount(), irr::scene::SMesh::getMeshBuffer(), irr::scene::SMesh::getMeshBufferCount(), irr::scene::quake3::getTextures(), irr::scene::CMeshBuffer< T >::getVertexCount(), irr::scene::SSharedMeshBuffer::getVertexCount(), irr::scene::SSkinMeshBuffer::getVertexCount(), irr::scene::quake3::SVarGroup::isDefined(), irr::scene::SMesh::recalculateBoundingBox(), irr::scene::SAnimatedMesh::recalculateBoundingBox(), irr::scene::SSharedMeshBuffer::recalculateBoundingBox(), irr::scene::CMeshBuffer< T >::recalculateBoundingBox(), irr::scene::SSkinMeshBuffer::recalculateBoundingBox(), irr::core::array< IMesh * >::set_pointer(), irr::scene::SMesh::setDirty(), irr::scene::SAnimatedMesh::setDirty(), irr::scene::SMesh::setHardwareMappingHint(), irr::scene::SAnimatedMesh::setHardwareMappingHint(), irr::scene::SMesh::setMaterialFlag(), irr::scene::SAnimatedMesh::setMaterialFlag(), irr::scene::SMD3QuaternionTagList::size(), irr::scene::SAnimatedMesh::~SAnimatedMesh(), irr::scene::SMD3Mesh::~SMD3Mesh(), and irr::scene::SMesh::~SMesh().

template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::sort ( )
inline

Sorts the array using heapsort.

There is no additional memory waste and the algorithm performs

O(n*log n) in worst case.

Definition at line 385 of file irrArray.h.

Referenced by irr::core::array< IMesh * >::binary_search(), and irr::core::array< IMesh * >::binary_search_multi().

template<class T, typename TAlloc = irrAllocator<T>>
void irr::core::array< T, TAlloc >::swap ( array< T, TAlloc > &  other)
inline

Swap the content of this array container with the content of another array.

Afterwards this object will contain the content of the other object and the other

object will contain the content of this object.

Parameters
otherSwap content with this object

Definition at line 585 of file irrArray.h.

Referenced by irr::core::array< IMesh * >::swap().


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

The Irrlicht Engine
The Irrlicht Engine Documentation © 2003-2010 by Nikolaus Gebhardt. Generated on Fri Mar 21 2014 04:40:21 by Doxygen (1.8.1.2)