#include <collection.h>
BaseCollection is a helper template to be used as base class for collections which have Begin()/End() functions returning iterators, and a GetCount() function. It will then add iterator-based utility functions such as ToString.
COLLECTION | The actual collection class, this has to have BaseCollection as (direct or indirect) base class. |
SUPER | The class to be used as base class for BaseCollection. |
Public Types | |
using | IsCollection = std::true_type |
using | IsBaseArray = std::false_type |
Public Member Functions | |
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 |
using IsCollection = std::true_type |
using IsBaseArray = std::false_type |
|
explicit |
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if<maxon::IsCollection<COLLECTION2>::value, Bool>::type operator== | ( | const COLLECTION2 & | other | ) | const |
MAXON_ATTRIBUTE_FORCE_INLINE std::enable_if<maxon::IsCollection<COLLECTION2>::value, Bool>::type operator!= | ( | const COLLECTION2 & | other | ) | const |
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 |
MAXON_ATTRIBUTE_FORCE_INLINE Result<void> AppendAll | ( | COLLECTION2 && | other, |
COLLECTION_RESIZE_FLAGS | resizeFlags = COLLECTION_RESIZE_FLAGS::ON_GROW_RESERVE_CAPACITY |
||
) |
Appends all elements from another collection other
to this collection. If this doesn't succeed for all entries, the collection will be left in a valid, but intermediate state with only some entries from other
added.
[in] | other | Another collection, may be any iterable object. |
[in] | resizeFlags | If ON_GROW_FIT_TO_SIZE is set, the collection will use only as much memory as needed to hold the data. |
MAXON_ATTRIBUTE_FORCE_INLINE Result<void> CopyFrom | ( | COLLECTION2 && | other, |
COLLECTION_RESIZE_FLAGS | resizeFlags = COLLECTION_RESIZE_FLAGS::FIT_TO_SIZE |
||
) |
Makes this collection a copy of other
. If copying doesn't succeed for all entries, the collection will be left in a valid, but intermediate state with only some entries from other
added.
[in] | other | Another collection, may be any iterable object. |
[in] | resizeFlags | If ON_GROW_FIT_TO_SIZE is set, the collection will use only as much memory as needed to hold the data. |
MAXON_ATTRIBUTE_FORCE_INLINE Result<void> Subtract | ( | COLLECTION2 && | other | ) |
Removes all elements of another collection other
from this collection. Elements of this collection which are not part of other
are kept. For a map, only the keys are considered, i.e., an entry is removed from this map if its key is contained in other
, regardless of the corresponding values.
[in] | other | Another collection, may be any iterable object. |
MAXON_ATTRIBUTE_FORCE_INLINE Result<void> Intersect | ( | const COLLECTION2 & | other | ) |
Intersects this collection with the other
collection. I.e., elements which are not contained in other
are removed. For a map, only the keys are considered, i.e., an entry is kept in this map if its key is contained in other
, regardless of the corresponding values.
[in] | other | Another collection, may be any predicate object. |
Bool Intersects | ( | const COLLECTION2 & | other | ) | const |
MAXON_ATTRIBUTE_FORCE_INLINE Result<void> CopyFromImpl | ( | COLLECTION2 && | other, |
COLLECTION_RESIZE_FLAGS | resizeFlags, | ||
OverloadRank0 | |||
) |
Result<void> AppendAllImpl | ( | COLLECTION2 && | other, |
COLLECTION_RESIZE_FLAGS | resizeFlags, | ||
Bool | overwrite, | ||
OverloadRank0 | |||
) |
Result<void> IntersectImpl | ( | COLLECTION2 && | other, |
OverloadRank0 | |||
) |
MAXON_ATTRIBUTE_FORCE_INLINE Bool IsEmpty | ( | ) | const |
Checks if the collection is empty. This is the same as GetCount() == 0
MAXON_ATTRIBUTE_FORCE_INLINE Bool IsPopulated | ( | ) | const |
Checks if the collection is populated. This is the same as GetCount() != 0
MAXON_ATTRIBUTE_FORCE_INLINE Bool ContainsAll | ( | COLLECTION2 && | other | ) | const |
Returns true if this collection contains all elements from another collection.
[in] | other | Another collection, may be any iterable object. |
other
, false otherwise. Bool ContainsAllImpl | ( | COLLECTION2 && | other, |
OverloadRank0 | |||
) | const |