FixedSizeArray< T, N > Class Template Reference

#include <fixedsizearray.h>

Inheritance diagram for FixedSizeArray< T, N >:

Public Types

using ValueType = T
 
using Iterator = BaseIterator< FixedSizeArray, false >
 
using ConstIterator = BaseIterator< const FixedSizeArray, false >
 
using Array = T[N]
 
using ConstArray = const T[N]
 
- Public Types inherited from Collection< COLLECTION, VALUETYPE, SUPER >
using Super = BaseCollection< COLLECTION, SUPER >
 
using ValueType = VALUETYPE
 
- Public Types inherited from BaseCollection< COLLECTION, SUPER >
using IsCollection = std::true_type
 
using IsBaseArray = std::false_type
 

Public Member Functions

 FixedSizeArray ()=default
 
MAXON_IMPLICIT FixedSizeArray (const std::initializer_list< T > &list)
 
 MAXON_DECLARE_CONDITIONAL_COPY_CONSTRUCTOR (FixedSizeArray, COPYABLE)
 
 MAXON_DECLARE_CONDITIONAL_COPY_ASSIGNMENT (FixedSizeArray, COPYABLE)
 
Result< void > CopyFrom (const typename std::conditional< COPYABLE, DummyParamType, FixedSizeArray >::type &src)
 
FixedSizeArrayoperator= (typename std::conditional< COPYABLE, const T[N], DummyParamType >::type &src)
 
Result< void > CopyFrom (typename std::conditional< COPYABLE, DummyParamType, const T[N]>::type &src)
 
 FixedSizeArray (FixedSizeArray &&src)
 
FixedSizeArrayoperator= (FixedSizeArray &&src)
 
Block< const T > ToBlock () const
 
Block< T > ToBlock ()
 
 operator Block< const T > () const
 
 operator Block< T > ()
 
 operator StridedBlock< const T > () const
 
 operator StridedBlock< T > ()
 
const T & operator[] (Int index) const
 
T & operator[] (Int index)
 
Int GetCount () const
 
MAXON_ATTRIBUTE_FORCE_INLINE ConstIterator Begin () const
 
MAXON_ATTRIBUTE_FORCE_INLINE Iterator Begin ()
 
MAXON_ATTRIBUTE_FORCE_INLINE ConstIterator End () const
 
MAXON_ATTRIBUTE_FORCE_INLINE Iterator End ()
 
ArrayGetUnderlyingArray ()
 
ConstArrayGetUnderlyingArray () const
 
UniqueHash GetUniqueHashCode () const
 
- Public Member Functions inherited from ArrayBase< FixedSizeArray< T, N >, T, EmptyClass, DefaultCompare >
constexpr MAXON_ATTRIBUTE_FORCE_INLINE ArrayBase (ARGS &&... args)
 
ArrayImpl< FixedSizeArray< T, N > & > ToArray ()
 
ArrayImpl< const FixedSizeArray< T, N > & > ToArray () const
 
MAXON_ATTRIBUTE_FORCE_INLINE operator ArrayImpl< FixedSizeArray< T, N > & > ()
 
MAXON_ATTRIBUTE_FORCE_INLINE operator ArrayImpl< const FixedSizeArray< T, N > & > () const
 
- Public Member Functions inherited from ArrayBase0< COLLECTION, VALUETYPE, SUPER, HASH >
template<typename... ARGS>
constexpr MAXON_ATTRIBUTE_FORCE_INLINE ArrayBase0 (ARGS &&... args)
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator< (const COLLECTION2 &other) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator<= (const COLLECTION2 &other) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator> (const COLLECTION2 &other) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator>= (const COLLECTION2 &other) const
 
template<typename COMPARE = EqualityCompare, typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, COMPARERESULT >::type Compare (const COLLECTION2 &other, COMPARE &&cmp=COMPARE()) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool IsValidIndex (Int index) const
 
Result< void > CheckValidIndex (Int index) const
 
Int FindIndex (typename ByValueParam< VALUETYPE >::type v, Int start) const
 
Int FindLastIndex (typename ByValueParam< VALUETYPE >::type v) const
 
Int FindLastIndex (typename ByValueParam< VALUETYPE >::type v, Int start) const
 
Bool EraseFirst (typename ByValueParam< VALUETYPE >::type v)
 
Int EraseAll (typename ByValueParam< VALUETYPE >::type v)
 
template<typename COLLECTION2 >
Result< void > AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0)
 
template<typename COLLECTION2 >
Result< void > InsertAll (Int index, COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
 
template<typename COLLECTION2 >
Result< void > Add (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
 
template<typename COLLECTION2 >
Result< void > CopyValuesFrom (const COLLECTION2 &src, Int srcStart=0, Int start=0, Int count=-1)
 
template<typename COLLECTION2 >
Result< void > SubtractImpl (COLLECTION2 &&other, OverloadRank0)
 
template<typename COLLECTION2 , typename COMPARE >
Bool IsEqualImpl (const COLLECTION2 &other, COMPARE &&cmp, OverloadRank0) const
 
template<typename COLLECTION2 , typename COMPARE >
COMPARERESULT CompareImpl (const COLLECTION2 &other, COMPARE &&cmp, OverloadRank0) const
 
HashInt GetHashCode () const
 
UniqueHash GetUniqueHashCode () const
 
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< COLLECTION > Slice (Int start)
 
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< const COLLECTION > Slice (Int start) const
 
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< COLLECTION > Slice (Int start, Int end)
 
MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator< const COLLECTION > Slice (Int start, Int end) const
 
BlockIterator< COLLECTION, VALUETYPE, false, false > GetBlocks ()
 
BlockIterator< COLLECTION, VALUETYPE, true, false > GetBlocks () const
 
BlockIterator< COLLECTION, VALUETYPE, false, true > GetStridedBlocks ()
 
BlockIterator< COLLECTION, VALUETYPE, true, true > GetStridedBlocks () const
 
- Public Member Functions inherited from Collection< COLLECTION, VALUETYPE, SUPER >
template<typename... ARGS>
MAXON_ATTRIBUTE_FORCE_INLINE Collection (ARGS &&... args)
 
ResultOk< void > VariadicAppend ()
 
template<typename V , typename... VALUES>
Result< void > VariadicAppend (V &&value, VALUES &&... rest)
 
 operator ValueReceiver< const VALUETYPE & > ()
 
 operator ValueReceiver< VALUETYPE && > ()
 
 operator ValueReceiver< typename std::conditional< STD_IS_REPLACEMENT (scalar, VALUETYPE)
 
DummyParamType & type ()
 
template<typename FN >
Result< BoolForEach (FN &&callback) const
 
template<typename FN >
Result< BoolForEach (FN &&callback)
 
template<typename H = COLLECTION>
H::Iterator Find (typename ByValueParam< VALUETYPE >::type v)
 
template<typename H = COLLECTION>
H::ConstIterator Find (typename ByValueParam< VALUETYPE >::type v) const
 
Int FindIndex (typename ByValueParam< VALUETYPE >::type v) const
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool Contains (typename ByValueParam< VALUETYPE >::type v) const
 
- Public Member Functions inherited from BaseCollection< COLLECTION, SUPER >
template<typename... ARGS>
MAXON_ATTRIBUTE_FORCE_INLINE BaseCollection (ARGS &&... args)
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator== (const COLLECTION2 &other) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value, Bool >::type operator!= (const COLLECTION2 &other) const
 
template<typename COMPARE = EqualityCompare, typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if< maxon::IsCollection< COLLECTION2 >::value &&!STD_IS_REPLACEMENT(same, typename std::decay< COMPARE >::type, EQUALITY), Bool >::type IsEqual (const COLLECTION2 &other, COMPARE &&cmp=COMPARE()) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > AppendAll (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY)
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > CopyFrom (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags=COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE)
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > Subtract (COLLECTION2 &&other)
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > Intersect (const COLLECTION2 &other)
 
template<typename COLLECTION2 >
Bool Intersects (const COLLECTION2 &other) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE Result< void > CopyFromImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, OverloadRank0)
 
template<typename COLLECTION2 >
Result< void > AppendAllImpl (COLLECTION2 &&other, COLLECTION_RESIZE_FLAGS resizeFlags, Bool overwrite, OverloadRank0)
 
template<typename COLLECTION2 >
Result< void > IntersectImpl (COLLECTION2 &&other, OverloadRank0)
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool IsEmpty () const
 
MAXON_ATTRIBUTE_FORCE_INLINE Bool IsPopulated () const
 
String ToString (const FormatStatement *formatStatement=nullptr) const
 
template<typename COLLECTION2 >
MAXON_ATTRIBUTE_FORCE_INLINE Bool ContainsAll (COLLECTION2 &&other) const
 
template<typename COLLECTION2 >
Bool ContainsAllImpl (COLLECTION2 &&other, OverloadRank0) const
 

Static Public Member Functions

static FixedSizeArrayCast (T(&src)[N])
 
static const FixedSizeArrayCast (const T(&src)[N])
 
- Static Public Member Functions inherited from Collection< COLLECTION, VALUETYPE, SUPER >
static const VALUETYPEGetMapKey (const VALUETYPE &key)
 

Static Public Attributes

static constexpr Bool COPYABLE
 
- Static Public Attributes inherited from ArrayBase0< COLLECTION, VALUETYPE, SUPER, HASH >
static const COLLECTION_KIND KIND
 

Private Attributes

_elements [N]
 

Additional Inherited Members

- Public Attributes inherited from Collection< COLLECTION, VALUETYPE, SUPER >
 VALUETYPE
 

Member Typedef Documentation

◆ ValueType

using ValueType = T

◆ Iterator

◆ ConstIterator

using ConstIterator = BaseIterator<const FixedSizeArray, false>

◆ Array

using Array = T[N]

◆ ConstArray

using ConstArray = const T[N]

Constructor & Destructor Documentation

◆ FixedSizeArray() [1/3]

FixedSizeArray ( )
default

◆ FixedSizeArray() [2/3]

MAXON_IMPLICIT FixedSizeArray ( const std::initializer_list< T > &  list)

◆ FixedSizeArray() [3/3]

FixedSizeArray ( FixedSizeArray< T, N > &&  src)

Member Function Documentation

◆ MAXON_DECLARE_CONDITIONAL_COPY_CONSTRUCTOR()

MAXON_DECLARE_CONDITIONAL_COPY_CONSTRUCTOR ( FixedSizeArray< T, N >  ,
COPYABLE   
)

◆ MAXON_DECLARE_CONDITIONAL_COPY_ASSIGNMENT()

MAXON_DECLARE_CONDITIONAL_COPY_ASSIGNMENT ( FixedSizeArray< T, N >  ,
COPYABLE   
)

◆ CopyFrom() [1/2]

Result<void> CopyFrom ( const typename std::conditional< COPYABLE, DummyParamType, FixedSizeArray< T, N > >::type src)

◆ operator=() [1/2]

FixedSizeArray& operator= ( typename std::conditional< COPYABLE, const T[N], DummyParamType >::type src)

◆ CopyFrom() [2/2]

Result<void> CopyFrom ( typename std::conditional< COPYABLE, DummyParamType, const T[N]>::type src)

◆ operator=() [2/2]

FixedSizeArray& operator= ( FixedSizeArray< T, N > &&  src)

◆ Cast() [1/2]

static FixedSizeArray& Cast ( T(&)  src[N])
static

◆ Cast() [2/2]

static const FixedSizeArray& Cast ( const T(&)  src[N])
static

◆ ToBlock() [1/2]

Block<const T> ToBlock ( ) const

Returns a Block<const T> which represents the elements of the array.

Returns
The content of this array as a block.

◆ ToBlock() [2/2]

Block<T> ToBlock ( )

Returns a Block<T> which represents the elements of the array.

Returns
The content of this array as a block.

◆ operator Block< const T >()

operator Block< const T > ( ) const

Converts this FixedSizeArray to a Block<const T> which represents the elements of the array.

Returns
The content of this array as a block.

◆ operator Block< T >()

operator Block< T > ( )

Converts this FixedSizeArray to a Block<T> which represents the elements of the array.

Returns
The content of this array as a block.

◆ operator StridedBlock< const T >()

operator StridedBlock< const T > ( ) const

Converts this FixedSizeArray to a StridedBlock<const T> which represents the elements of the array. The block will have the natural stride of T.

Returns
The content of this array as a strided block.

◆ operator StridedBlock< T >()

operator StridedBlock< T > ( )

Converts this FixedSizeArray to a StridedBlock<T> which represents the elements of the array. The block will have the natural stride of T.

Returns
The content of this array as a strided block.

◆ operator[]() [1/2]

const T& operator[] ( Int  index) const

◆ operator[]() [2/2]

T& operator[] ( Int  index)

◆ GetCount()

Int GetCount ( ) const

◆ Begin() [1/2]

◆ Begin() [2/2]

◆ End() [1/2]

◆ End() [2/2]

◆ GetUnderlyingArray() [1/2]

Array& GetUnderlyingArray ( )

◆ GetUnderlyingArray() [2/2]

ConstArray& GetUnderlyingArray ( ) const

◆ GetUniqueHashCode()

UniqueHash GetUniqueHashCode ( ) const

Member Data Documentation

◆ COPYABLE

constexpr Bool COPYABLE
staticconstexpr

◆ _elements

T _elements[N]
private