Collection< COLLECTION, VALUETYPE, SUPER > Class Template Reference

#include <collection.h>

Inheritance diagram for Collection< COLLECTION, VALUETYPE, SUPER >:

Detailed Description

template<typename COLLECTION, typename VALUETYPE, typename SUPER>
class maxon::Collection< COLLECTION, VALUETYPE, SUPER >

Collection is a helper template to be used as base class for set-, array- or list-like collections. It will add iterator-based utility functions such as ToString, Find or AppendAll.

Template Parameters
COLLECTIONThe actual collection class, this has to have Collection as (direct or indirect) base class.
VALUETYPEThe type of values stored in the collection.
SUPERThe class to be used as base class for Collection.
See also
$ref collections

Public Types

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

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 const VALUETYPEGetMapKey (const VALUETYPE &key)
 

Public Attributes

 VALUETYPE
 

Member Typedef Documentation

◆ Super

using Super = BaseCollection<COLLECTION, SUPER>

◆ ValueType

Constructor & Destructor Documentation

◆ Collection()

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

Member Function Documentation

◆ VariadicAppend() [1/2]

ResultOk<void> VariadicAppend ( )

◆ VariadicAppend() [2/2]

Result<void> VariadicAppend ( V &&  value,
VALUES &&...  rest 
)

◆ operator ValueReceiver< const VALUETYPE & >()

operator ValueReceiver< const VALUETYPE & > ( )

◆ operator ValueReceiver< VALUETYPE && >()

operator ValueReceiver< VALUETYPE && > ( )

◆ operator ValueReceiver< typename std::conditional< STD_IS_REPLACEMENT()

operator ValueReceiver< typename std::conditional< STD_IS_REPLACEMENT ( scalar  ,
VALUETYPE   
)

◆ type()

DummyParamType& type ( )

◆ ForEach() [1/2]

Result<Bool> ForEach ( FN &&  callback) const

◆ ForEach() [2/2]

Result<Bool> ForEach ( FN &&  callback)

◆ Find() [1/2]

H::Iterator Find ( typename ByValueParam< VALUETYPE >::type  v)

Returns an iterator pointing to the first occurrence of v in this collection. If v cannot be found at all, the iterator will point to the end.

Parameters
[in]vThe value to look for.
Returns
An iterator pointing to an element which equals v, or a null iterator if the element coudn't be found.

◆ Find() [2/2]

H::ConstIterator Find ( typename ByValueParam< VALUETYPE >::type  v) const

Returns an iterator pointing to the first occurrence of v in this collection. If v cannot be found at all, the iterator will point to the end.

Parameters
[in]vThe value to look for.
Returns
An iterator pointing to an element which equals v, or a null iterator if the element coudn't be found.

◆ FindIndex()

Int FindIndex ( typename ByValueParam< VALUETYPE >::type  v) 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.
Returns
Index of the first element which equals v, or a negative value if no such element exists.

◆ Contains()

MAXON_ATTRIBUTE_FORCE_INLINE Bool Contains ( typename ByValueParam< VALUETYPE >::type  v) const

Returns true if v is contained in this collection.

Parameters
[in]vThe value to look for.
Returns
True if this collection has an element which equals v, false otherwise.

◆ GetMapKey()

static const VALUETYPE& GetMapKey ( const VALUETYPE key)
static

Member Data Documentation

◆ VALUETYPE

VALUETYPE