8#include "Arp/Base/Core/Exception.hpp"
9#include "Arp/Base/Core/IEnumerator.hxx"
11namespace Arp {
namespace Base {
namespace Core
30 template<
class Predicate>
32 template<
class Iterator,
class IteratorAdapter>
34 template<
typename SourceEnumerator,
typename TransformOperation>
36 template<
class Iterator>
51 template<
class TIterator>
54 template<
class TContainer>
57 template<
class TContainer>
60 template<
class TContainer>
63 template<
class TContainer>
66 template<
class TContainer>
69 template<
class TContainer>
72 template<
class Predicate>
75 template<
class SourceEnumerator,
class TransformOperation>
76 static typename IEnumerator<T>::Ptr CreateTransform(std::shared_ptr<SourceEnumerator> source, TransformOperation transformOp);
83 using TCurrent =
typename std::remove_const<typename std::remove_reference<T>::type>::type;
115 return this->current;
Use this class to build a single enumerator by two given enumerator, e.g. to enumerate multiple conta...
Definition: Enumerator.Composite.hxx:20
Implements an empty enumerator, that is, every call to Enumerator<T>::Empty::MoveNext() will return f...
Definition: Enumerator.Empty.hxx:22
This class implements a filtering enumerator. It enumerates all nodes of the source enumerator matchi...
Definition: Enumerator.Filter.hxx:19
This class implements several adapter of STL iterators to extract specific properties.
Definition: Enumerator.IteratorAdapters.hxx:18
Use this class to build a single enumerator by multiple other enumerators using a stack
Definition: Enumerator.StackComposite.hxx:23
This class implements an enumerator adapter for STL container based on iterators.
Definition: Enumerator.StlAdapter.hxx:23
This class defines a base class for all enumerator implementations and some predefined enumerators as...
Definition: Enumerator.hxx:24
static IEnumerator< T >::Ptr CreateMappedAdapter(TContainer &c)
Creates an enumerator adapter from the given STL map enumerating the mapped items.
Definition: Enumerator.StlAdapter.hxx:171
static IEnumerator< T >::Ptr CreateComposite(typename IEnumerator< T >::Ptr first, typename IEnumerator< T >::Ptr second)
Creates a composite enumerator from the two given enumerators, e.g. to enumerate trees easily.
Definition: Enumerator.Composite.hxx:122
Enumerator & operator=(Enumerator &&arg) noexcept
Move assignment operator.
static IEnumerator< T >::Ptr CreateKeysAdapter(TContainer &c)
Creates an enumerator adapter from the given STL map enumerating the keys.
Definition: Enumerator.StlAdapter.hxx:149
static IEnumerator< T >::Ptr CreateStlAdapter(TIterator begin, TIterator end)
Creates an enumerator adapter from the given STL iterators.
Definition: Enumerator.StlAdapter.hxx:116
TCurrent current
The current field of this enumerator.
Definition: Enumerator.hxx:86
Enumerator(Enumerator &&arg) noexcept
Move constructor.
static IEnumerator< T >::Ptr CreateEmpty(void)
Creates an empty enumerator.
Definition: Enumerator.Empty.hxx:77
static IEnumerator< T >::Ptr CreateFilter(typename IEnumerator< T >::Ptr source, Predicate predicate)
Creates a filtering adapter enumerating only the nodes matching a given predicate.
Definition: Enumerator.Filter.hxx:104
Enumerator(void)
Constructs a default Enumerator instance.
~Enumerator(void) override
Destructs this instance and frees all resources.
T GetCurrent(void) override
Gets the element at the current position.
Definition: Enumerator.hxx:113
Declares the interface of the enumerator pattern, which is leaned on .NET enumerator idiom.
Definition: IEnumerator.hxx:49
std::shared_ptr< IEnumerator > Ptr
The smart pointer type of this interface.
Definition: IEnumerator.hxx:52
Root namespace for the PLCnext API