ezEngine  Milestone 7
ezStaticArray< T, Capacity > Class Template Reference

Wraps a C-style array, which has a fixed size at compile-time, with a more convenient interface. More...

#include <StaticArray.h>

Inheritance diagram for ezStaticArray< T, Capacity >:

Public Member Functions

 ezStaticArray ()
 Creates an empty array.
 
 ezStaticArray (const ezStaticArray< T, Capacity > &rhs)
 Creates a copy of the given array.
 
template<ezUInt32 OtherCapacity>
 ezStaticArray (const ezStaticArray< T, OtherCapacity > &rhs)
 Creates a copy of the given array.
 
 ezStaticArray (const ezArrayPtr< const T > &rhs)
 Creates a copy of the given array.
 
 ~ezStaticArray ()
 Destroys all objects.
 
void operator= (const ezStaticArray< T, Capacity > &rhs)
 Copies the data from some other contiguous array into this one.
 
template<ezUInt32 OtherCapacity>
void operator= (const ezStaticArray< T, OtherCapacity > &rhs)
 Copies the data from some other contiguous array into this one.
 
void operator= (const ezArrayPtr< const T > &rhs)
 Copies the data from some other contiguous array into this one.
 
template<ezUInt32 OtherCapacity>
EZ_FORCE_INLINE void operator= (const ezStaticArray< T, OtherCapacity > &rhs)
 
- Public Member Functions inherited from ezArrayBase< T, ezStaticArray< T, Capacity > >
 ezArrayBase ()
 Constructor.
 
 ~ezArrayBase ()
 Destructor.
 
void operator= (const ezArrayPtr< const T > &rhs)
 Copies the data from some other contiguous array into this one.
 
 operator ezArrayPtr< const T > () const
 Conversion to const ezArrayPtr.
 
 operator ezArrayPtr< T > ()
 Conversion to ezArrayPtr.
 
bool operator== (const ezArrayPtr< const T > &rhs) const
 Compares this array to another contiguous array type.
 
bool operator!= (const ezArrayPtr< const T > &rhs) const
 Compares this array to another contiguous array type.
 
const T & operator[] (ezUInt32 uiIndex) const
 Returns the element at the given index. Does bounds checks in debug builds.
 
T & operator[] (ezUInt32 uiIndex)
 Returns the element at the given index. Does bounds checks in debug builds.
 
void SetCount (ezUInt32 uiCount)
 Resizes the array to have exactly uiCount elements. Default constructs extra elements if the array is grown.
 
void SetCountUninitialized (ezUInt32 uiCount)
 Resizes the array to have exactly uiCount elements. Extra elements might be uninitialized.
 
ezUInt32 GetCount () const
 Returns the number of active elements in the array.
 
bool IsEmpty () const
 Returns true, if the array does not contain any elements.
 
void Clear ()
 Clears the array.
 
bool Contains (const T &value) const
 Checks whether the given value can be found in the array. O(n) complexity.
 
void Insert (const T &value, ezUInt32 uiIndex)
 Inserts value at index by shifting all following elements.
 
void Insert (T &&value, ezUInt32 uiIndex)
 Inserts value at index by shifting all following elements.
 
bool Remove (const T &value)
 Removes the first occurrence of value and fills the gap by shifting all following elements.
 
bool RemoveSwap (const T &value)
 Removes the first occurrence of value and fills the gap by swapping in the last element.
 
void RemoveAt (ezUInt32 uiIndex)
 Removes the element at index and fills the gap by shifting all following elements.
 
void RemoveAtSwap (ezUInt32 uiIndex)
 Removes the element at index and fills the gap by swapping in the last element.
 
ezUInt32 IndexOf (const T &value, ezUInt32 uiStartIndex=0) const
 Searches for the first occurrence of the given value and returns its index or ezInvalidIndex if not found.
 
ezUInt32 LastIndexOf (const T &value, ezUInt32 uiStartIndex=ezInvalidIndex) const
 Searches for the last occurrence of the given value and returns its index or ezInvalidIndex if not found.
 
T & ExpandAndGetRef ()
 Grows the array by one element and returns a reference to the newly created element.
 
void PushBack (const T &value)
 Pushes value at the end of the array.
 
void PushBack (T &&value)
 Pushes value at the end of the array.
 
void PushBackUnchecked (const T &value)
 Pushes value at the end of the array. Does NOT ensure capacity.
 
void PushBackUnchecked (T &&value)
 Pushes value at the end of the array. Does NOT ensure capacity.
 
void PushBackRange (const ezArrayPtr< const T > &range)
 Pushes all elements in range at the end of the array. Increases the capacity if necessary.
 
void PopBack (ezUInt32 uiCountToRemove=1)
 Removes count elements from the end of the array.
 
T & PeekBack ()
 Returns the last element of the array.
 
const T & PeekBack () const
 Returns the last element of the array.
 
void Sort (const Comparer &comparer)
 Sort with explicit comparer.
 
void Sort ()
 Sort with default comparer.
 
T * GetData ()
 Returns a pointer to the array data, or nullptr if the array is empty.
 
const T * GetData () const
 Returns a pointer to the array data, or nullptr if the array is empty.
 
ezArrayPtr< T > GetArrayPtr ()
 Returns a array pointer to the array data, or an empty array pointer if the array is empty.
 
ezArrayPtr< const T > GetArrayPtr () const
 Returns a array pointer to the array data, or an empty array pointer if the array is empty.
 

Public Attributes

ezUInt8 m_Data [Capacity *sizeof(T)]
 

Private Member Functions

T * GetStaticArray ()
 
void Reserve (ezUInt32 uiCapacity)
 

Friends

class ezArrayBase< T, ezStaticArray< T, Capacity > >
 

Additional Inherited Members

- Public Types inherited from ezArrayBase< T, ezStaticArray< T, Capacity > >
typedef T const * const_iterator
 
typedef
const_reverse_pointer_iterator
< T > 
const_reverse_iterator
 
typedef T * iterator
 
typedef
reverse_pointer_iterator< T > 
reverse_iterator
 
- Protected Attributes inherited from ezArrayBase< T, ezStaticArray< T, Capacity > >
T * m_pElements
 Element-type access to m_Data.
 
ezUInt32 m_uiCount
 The number of elements used from the array.
 
ezUInt32 m_uiCapacity
 The number of elements which can be stored in the array without re-allocating.
 

Detailed Description

template<typename T, ezUInt32 Capacity>
class ezStaticArray< T, Capacity >

Wraps a C-style array, which has a fixed size at compile-time, with a more convenient interface.

ezStaticArray can be used to create a fixed size array, either on the stack or as a class member. Additionally it allows to use that array as a 'cache', i.e. not all its elements need to be constructed. As such it can be used whenever a fixed size array is sufficient, but a more powerful interface is desired, and when the number of elements in an array is dynamic at run-time, but always capped at a fixed limit.


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