ezEngine  Release 25.03
ezArrayBase< T, Derived > Class Template Reference

Base class for all array containers. Implements all the basic functionality that only requires a pointer and the element count. More...

#include <ArrayBase.h>

Public Types

using const_iterator = const T *
 
using const_reverse_iterator = const_reverse_pointer_iterator< T >
 
using iterator = T *
 
using reverse_iterator = reverse_pointer_iterator< T >
 

Public Member Functions

 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 ezArrayBase< T, Derived > &rhs) const
 Compares this array to another contiguous array type.
 
 EZ_ADD_DEFAULT_OPERATOR_NOTEQUAL (const ezArrayBase< T, Derived > &)
 
bool operator< (const ezArrayBase< T, Derived > &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 SetCount (ezUInt32 uiCount, const T &fillValue)
 Resizes the array to have exactly uiCount elements. Constructs all new elements by copying the FillValue.
 
template<typename = void>
void SetCountUninitialized (ezUInt32 uiCount)
 Resizes the array to have exactly uiCount elements. Extra elements might be uninitialized.
 
void EnsureCount (ezUInt32 uiCount)
 Ensures the container has at least uiCount elements. Ie. calls SetCount() if the container has fewer elements, does nothing otherwise.
 
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 InsertAt (ezUInt32 uiIndex, const T &value)
 Inserts value at index by shifting all following elements.
 
void InsertAt (ezUInt32 uiIndex, T &&value)
 Inserts value at index by shifting all following elements.
 
void InsertRangeAt (ezUInt32 uiIndex, const ezArrayPtr< const T > &range)
 Inserts all elements in the range starting at the given index, shifting the elements after the index.
 
bool RemoveAndCopy (const T &value)
 Removes the first occurrence of value and fills the gap by shifting all following elements.
 
bool RemoveAndSwap (const T &value)
 Removes the first occurrence of value and fills the gap by swapping in the last element.
 
void RemoveAtAndCopy (ezUInt32 uiIndex, ezUInt32 uiNumElements=1)
 Removes the element at index and fills the gap by shifting all following elements.
 
void RemoveAtAndSwap (ezUInt32 uiIndex, ezUInt32 uiNumElements=1)
 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.
 
T * ExpandBy (ezUInt32 uiNumNewItems)
 Expands the array by N new items and returns a pointer to the first new one.
 
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.
 
template<typename Comparer >
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 an array pointer to the array data, or an empty array pointer if the array is empty.
 
ezArrayPtr< const T > GetArrayPtr () const
 Returns an array pointer to the array data, or an empty array pointer if the array is empty.
 
ezArrayPtr< typename ezArrayPtr< T >::ByteType > GetByteArrayPtr ()
 Returns a byte array pointer to the array data, or an empty array pointer if the array is empty.
 
ezArrayPtr< typename ezArrayPtr< const T >::ByteType > GetByteArrayPtr () const
 Returns a byte array pointer to the array data, or an empty array pointer if the array is empty.
 
ezUInt32 GetCapacity () const
 Returns the reserved number of elements that the array can hold without reallocating.
 

Protected Member Functions

void DoSwap (ezArrayBase< T, Derived > &other)
 

Protected Attributes

T * m_pElements = nullptr
 Element-type access to m_Data.
 
ezUInt32 m_uiCount = 0
 The number of elements used from the array.
 
ezUInt32 m_uiCapacity = 0
 The number of elements which can be stored in the array without re-allocating.
 

Detailed Description

template<typename T, typename Derived>
class ezArrayBase< T, Derived >

Base class for all array containers. Implements all the basic functionality that only requires a pointer and the element count.


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