ArrayBase0< COLLECTION, VALUETYPE, SUPER, HASH > Class Template Reference

#include <collection.h>

Inheritance diagram for ArrayBase0< COLLECTION, VALUETYPE, SUPER, HASH >:

Detailed Description

template<typename COLLECTION, typename VALUETYPE, typename SUPER, typename HASH>
class maxon::ArrayBase0< COLLECTION, VALUETYPE, SUPER, HASH >

Intermediate class.

Public Member Functions

template<typename... ARGS>
MAXON_ATTRIBUTE_FORCE_INLINE ArrayBase0 (ARGS &&... args)
 
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 > SubtractImpl (COLLECTION2 &&other, OverloadRank0)
 
template<typename COLLECTION2 , typename COMPARE >
Bool IsEqualImpl (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 Attributes

static const COLLECTION_KIND KIND
 

Private Types

using Super = Collection< COLLECTION, VALUETYPE, SUPER >
 

Additional Inherited Members

- 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
 
- Static Public Member Functions inherited from Collection< COLLECTION, VALUETYPE, SUPER >
static const VALUETYPEGetMapKey (const VALUETYPE &key)
 
- Public Attributes inherited from Collection< COLLECTION, VALUETYPE, SUPER >
 VALUETYPE
 

Member Typedef Documentation

◆ Super

using Super = Collection<COLLECTION, VALUETYPE, SUPER>
private

Constructor & Destructor Documentation

◆ ArrayBase0()

MAXON_ATTRIBUTE_FORCE_INLINE ArrayBase0 ( ARGS &&...  args)
explicit

Member Function Documentation

◆ IsValidIndex()

Bool IsValidIndex ( Int  index) const

Returns true if the given index is within the array boundaries.

◆ CheckValidIndex()

Result<void> CheckValidIndex ( Int  index) const

Returns an error if the given index is not within the array boundaries.

◆ FindIndex()

Int FindIndex ( typename ByValueParam< VALUETYPE >::type  v,
Int  start 
) const

Returns the index of the first occurrence of v in this collection. If v cannot be found at all, a negative value will be returned.

Parameters
[in]vThe value to look for.
[in]startThe start index. 0 by default.
Returns
Index of the first element which equals v, or a negative value if no such element exists.

◆ FindLastIndex() [1/2]

Int FindLastIndex ( typename ByValueParam< VALUETYPE >::type  v) const

Returns the index of the last occurrence of v in this collection. If v cannot be found at all, a negative value will be returned.

Parameters
[in]vThe value to look for.
Returns
Index of the last element which equals v, or a negative value if no such element exists.

◆ FindLastIndex() [2/2]

Int FindLastIndex ( typename ByValueParam< VALUETYPE >::type  v,
Int  start 
) const

Returns the index of the last occurrence of v in this collection. If v cannot be found at all, a negative value will be returned.

Parameters
[in]vThe value to look for.
[in]startThe start index. 0 by default.
Returns
Index of the last element which equals v, or a negative value if no such element exists.

◆ EraseFirst()

Bool EraseFirst ( typename ByValueParam< VALUETYPE >::type  v)

Removes the first occurrence of v from this collection.

Parameters
[in]vThe value to remove.
Returns
True if the value could be found (then it has been removed), false otherwise.

◆ EraseAll()

Int EraseAll ( typename ByValueParam< VALUETYPE >::type  v)

Removes all occurrences of v from this collection.

Parameters
[in]vThe value to remove.
Returns
Number of removed occurrences.

◆ AppendAllImpl()

Result<void> AppendAllImpl ( COLLECTION2 &&  other,
COLLECTION_RESIZE_FLAGS  resizeFlags,
Bool  overwrite,
OverloadRank0   
)

◆ InsertAll()

Result<void> InsertAll ( Int  index,
COLLECTION2 &&  other,
COLLECTION_RESIZE_FLAGS  resizeFlags = COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY 
)

Inserts all elements from another collection other to this collection starting at the given index.

Parameters
[in]indexIndex for insertion (the array size will increase and the existing elements are moved).
[in]otherAnother collection, may be any iterable object.
[in]resizeFlagsIf ON_GROW_FIT_TO_SIZE is set, the collection will use only as much memory as needed to hold the data.
Returns
OK on success.

◆ Add()

Result<void> Add ( COLLECTION2 &&  other,
COLLECTION_RESIZE_FLAGS  resizeFlags = COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY 
)

Appends all elements from another collection other which are not yet contained in this array to this array. If this doesn't succeed for all entries, the array will be left in a valid, but intermediate state with only some entries from other added.

Parameters
[in]otherAnother collection, may be any iterable object.
[in]resizeFlagsIf ON_GROW_FIT_TO_SIZE is set, the collection will use only as much memory as needed to hold the data.
Returns
OK on success.

◆ SubtractImpl()

Result<void> SubtractImpl ( COLLECTION2 &&  other,
OverloadRank0   
)

◆ IsEqualImpl()

Bool IsEqualImpl ( const COLLECTION2 &  other,
COMPARE &&  cmp,
OverloadRank0   
) const

◆ GetHashCode()

HashInt GetHashCode ( ) const

◆ GetUniqueHashCode()

UniqueHash GetUniqueHashCode ( ) const

◆ Slice() [1/4]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator<COLLECTION> Slice ( Int  start)

Returns an AutoIterator which iterates over all elements from the given start index up to the end of the array.

Parameters
[in]startStart index for the iteration.
Returns
AutoIterator iterating over elements from start up to the end.

◆ Slice() [2/4]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator<const COLLECTION> Slice ( Int  start) const

Returns an AutoIterator which iterates over all elements from the given start index up to the end of the array.

Parameters
[in]startStart index for the iteration.
Returns
AutoIterator iterating over elements from start up to the end.

◆ Slice() [3/4]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator<COLLECTION> Slice ( Int  start,
Int  end 
)

Returns an AutoIterator which iterates over all elements from the given start index up to but not including the given end index.

Parameters
[in]startStart index for the iteration.
[in]endEnd index for the iteration, the iteration does not include the end itself.
Returns
AutoIterator iterating over elements from start up to but not including end.

◆ Slice() [4/4]

MAXON_ATTRIBUTE_FORCE_INLINE AutoIterator<const COLLECTION> Slice ( Int  start,
Int  end 
) const

Returns an AutoIterator which iterates over all elements from the given start index up to but not including the given end index.

Parameters
[in]startStart index for the iteration.
[in]endEnd index for the iteration, the iteration does not include the end itself.
Returns
AutoIterator iterating over elements from start up to but not including end.

◆ GetBlocks() [1/2]

BlockIterator<COLLECTION, VALUETYPE, false, false> GetBlocks ( )

Returns a ForEachIterator which can be used to iterate over the Blocks of the collection. Typical usage is:

for (Block<ValueType>& block : array.GetBlocks())
{
// ... do something with block (call GetFirst(), GetCount() ...)
}

◆ GetBlocks() [2/2]

BlockIterator<COLLECTION, VALUETYPE, true, false> GetBlocks ( ) const

Returns a ForEachIterator which can be used to iterate over the Blocks of the collection. Typical usage is:

for (const Block<const ValueType>& block : array.GetBlocks())
{
// ... do something with block (call GetFirst(), GetCount() ...)
}

◆ GetStridedBlocks() [1/2]

BlockIterator<COLLECTION, VALUETYPE, false, true> GetStridedBlocks ( )

◆ GetStridedBlocks() [2/2]

BlockIterator<COLLECTION, VALUETYPE, true, true> GetStridedBlocks ( ) const

Member Data Documentation

◆ KIND

const COLLECTION_KIND KIND
static