#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 | 
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_same< typename std::decay< COMPARE >::type, EQUALITY >::value, 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) 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_same<typename std::decay<COMPARE>::type, EQUALITY>::value, 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 | ( | void | ) | 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 |