8#include "Arp/Base/Core/Exception.hpp" 
    9#include "Arp/Base/Core/Detail/Enumerator.hxx" 
   11namespace Arp { 
namespace Base { 
namespace Core
 
   19template<
typename U, 
typename O>
 
   24    using TransformOperation = O;
 
   27    Transform(SourcePtr sourcePtr, O transformOp);
 
   28    Transform(
const Transform& arg) = 
delete;
 
   40    TransformOperation  transformOp;
 
   49template<
class U, 
class O>
 
   56template<
class U, 
class O>
 
   61template<
class U, 
class O>
 
   68template<
class U, 
class O>
 
   70    : sourcePtr(
std::move(sourcePtr)), transformOp(
std::move(transformOp))
 
   76template<
class U, 
class O>
 
   79    return this->sourcePtr->MoveNext();
 
   84template<
class U, 
class O>
 
   87    return this->transformOp(this->sourcePtr->GetCurrent());
 
   99template<
class S, 
class O>
 
  102    using U = 
typename S::ValueType;
 
  103    return std::make_shared<Enumerator<T>::Transform<U, O>>(std::move(sourcePtr), std::move(transformOperation));
 
This class defines a base class for all enumerator implementations and some predefined enumerators as...
Definition: Enumerator.hxx:24
 
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
 
virtual bool MoveNext(void)=0
Moves this enumerator to the next position.
 
std::shared_ptr< IEnumerator > Ptr
The smart pointer type of this interface.
Definition: IEnumerator.hxx:52
 
Root namespace for the PLCnext API
 
Namespace of the C++ standard library