Plasma Engine  2.0
Loading...
Searching...
No Matches
plStaticArray< 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 plStaticArray< T, Capacity >:

Public Member Functions

 PL_DECLARE_MEM_RELOCATABLE_TYPE_CONDITIONAL (T)
 
 plStaticArray ()
 Creates an empty array.
 
 plStaticArray (const plStaticArray< T, Capacity > &rhs)
 Creates a copy of the given array.
 
template<plUInt32 OtherCapacity>
 plStaticArray (const plStaticArray< T, OtherCapacity > &rhs)
 Creates a copy of the given array.
 
 plStaticArray (const plArrayPtr< const T > &rhs)
 Creates a copy of the given array.
 
 ~plStaticArray ()
 Destroys all objects.
 
void operator= (const plStaticArray< T, Capacity > &rhs)
 Copies the data from some other contiguous array into this one.
 
template<plUInt32 OtherCapacity>
void operator= (const plStaticArray< T, OtherCapacity > &rhs)
 Copies the data from some other contiguous array into this one.
 
void operator= (const plArrayPtr< const T > &rhs)
 Copies the data from some other contiguous array into this one.
 
void Reserve (plUInt32 uiCapacity)
 For the static array Reserve is a no-op. However the function checks if the requested capacity is below or equal to the static capacity.
 
template<plUInt32 OtherCapacity>
PL_ALWAYS_INLINE void operator= (const plStaticArray< T, OtherCapacity > &rhs)
 
- Public Member Functions inherited from plArrayBase< T, plStaticArray< T, Capacity > >
 plArrayBase ()
 Constructor.
 
 ~plArrayBase ()
 Destructor.
 
void operator= (const plArrayPtr< const T > &rhs)
 Copies the data from some other contiguous array into this one.
 
 operator plArrayPtr< const T > () const
 Conversion to const plArrayPtr.
 
 operator plArrayPtr< T > ()
 Conversion to plArrayPtr.
 
bool operator== (const plArrayBase< T, plStaticArray< T, Capacity > > &rhs) const
 Compares this array to another contiguous array type.
 
 PL_ADD_DEFAULT_OPERATOR_NOTEQUAL (const plArrayBase< T, plStaticArray< T, Capacity > > &)
 
bool operator< (const plArrayBase< T, plStaticArray< T, Capacity > > &rhs) const
 Compares this array to another contiguous array type.
 
bool operator< (const plArrayPtr< const T > &rhs) const
 Compares this array to another contiguous array type.
 
const T & operator[] (plUInt32 uiIndex) const
 Returns the element at the given index. Does bounds checks in debug builds.
 
T & operator[] (plUInt32 uiIndex)
 Returns the element at the given index. Does bounds checks in debug builds.
 
void SetCount (plUInt32 uiCount)
 Resizes the array to have exactly uiCount elements. Default constructs extra elements if the array is grown.
 
void SetCount (plUInt32 uiCount, const T &fillValue)
 Resizes the array to have exactly uiCount elements. Constructs all new elements by copying the FillValue.
 
void SetCountUninitialized (plUInt32 uiCount)
 Resizes the array to have exactly uiCount elements. Extra elements might be uninitialized.
 
void EnsureCount (plUInt32 uiCount)
 Ensures the container has at least uiCount elements. Ie. calls SetCount() if the container has fewer elements, does nothing otherwise.
 
plUInt32 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 (plUInt32 uiIndex, const T &value)
 Inserts value at index by shifting all following elements.
 
void InsertAt (plUInt32 uiIndex, T &&value)
 Inserts value at index by shifting all following elements.
 
void InsertRange (const plArrayPtr< const T > &range, plUInt32 uiIndex)
 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 (plUInt32 uiIndex, plUInt32 uiNumElements=1)
 Removes the element at index and fills the gap by shifting all following elements.
 
void RemoveAtAndSwap (plUInt32 uiIndex, plUInt32 uiNumElements=1)
 Removes the element at index and fills the gap by swapping in the last element.
 
plUInt32 IndexOf (const T &value, plUInt32 uiStartIndex=0) const
 Searches for the first occurrence of the given value and returns its index or plInvalidIndex if not found.
 
plUInt32 LastIndexOf (const T &value, plUInt32 uiStartIndex=plInvalidIndex) const
 Searches for the last occurrence of the given value and returns its index or plInvalidIndex if not found.
 
T & ExpandAndGetRef ()
 Grows the array by one element and returns a reference to the newly created element.
 
T * ExpandBy (plUInt32 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 plArrayPtr< const T > &range)
 Pushes all elements in range at the end of the array. Increases the capacity if necessary.
 
void PopBack (plUInt32 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.
 
plArrayPtr< T > GetArrayPtr ()
 Returns an array pointer to the array data, or an empty array pointer if the array is empty.
 
plArrayPtr< const T > GetArrayPtr () const
 Returns an array pointer to the array data, or an empty array pointer if the array is empty.
 
plArrayPtr< typename plArrayPtr< T >::ByteType > GetByteArrayPtr ()
 Returns a byte array pointer to the array data, or an empty array pointer if the array is empty.
 
plArrayPtr< typename plArrayPtr< const T >::ByteType > GetByteArrayPtr () const
 Returns a byte array pointer to the array data, or an empty array pointer if the array is empty.
 
plUInt32 GetCapacity () const
 Returns the reserved number of elements that the array can hold without reallocating.
 

Protected Member Functions

T * GetElementsPtr ()
 
const T * GetElementsPtr () const
 
- Protected Member Functions inherited from plArrayBase< T, plStaticArray< T, Capacity > >
void DoSwap (plArrayBase< T, plStaticArray< T, Capacity > > &other)
 

Friends

class plArrayBase< T, plStaticArray< T, Capacity > >
 

Additional Inherited Members

- Public Types inherited from plArrayBase< T, plStaticArray< T, Capacity > >
using const_iterator
 
using const_reverse_iterator
 
using iterator
 
using reverse_iterator
 
- Protected Attributes inherited from plArrayBase< T, plStaticArray< T, Capacity > >
T * m_pElements
 Element-type access to m_Data.
 
plUInt32 m_uiCount
 The number of elements used from the array.
 
plUInt32 m_uiCapacity
 The number of elements which can be stored in the array without re-allocating.
 

Detailed Description

template<typename T, plUInt32 Capacity>
class plStaticArray< T, Capacity >

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

plStaticArray 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: