BaseCollection< COLLECTION, SUPER > Class Template Reference Data Structures
#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 |
公共成员函数 |
|
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 |
|
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 |