PLCnext API Documentation  21.0.0.35466
Public Member Functions | List of all members
Arp::Enumerator< T >::Composite Class Reference

Use this class to build a single enumerator by two given enumerator, e.g. to enumerate multiple container/collections or trees. More...

#include <Enumerator.hxx>

Inheritance diagram for Arp::Enumerator< T >::Composite:
Inheritance graph

Public Member Functions

 Composite (typename IEnumerator< T >::Ptr first, typename IEnumerator< T >::Ptr second)
 Constructs an Composite instance. More...
 
 Composite (const Composite &arg)=default
 Copy constructor. More...
 
Composite & operator= (const Composite &arg)=default
 Assignment operator. More...
 
virtual ~Composite (void)=default
 Destructs this instance and frees all resources. More...
 
bool MoveNext (void) override
 Moves this enumerator to the next position. More...
 
T GetCurrent (void) override
 Gets the element at the current position. More...
 

Additional Inherited Members

- Public Types inherited from Arp::IEnumerator< T >
typedef std::shared_ptr< IEnumerator > Ptr
 The smart pointer tpye of this interface. More...
 
- Protected Member Functions inherited from Arp::IEnumerator< T >
 IEnumerator (void)=default
 Constructs an IEnumerator instance. More...
 
virtual ~IEnumerator (void)=default
 Destructs this instance and frees all resources. More...
 
 IEnumerator (const IEnumerator &arg)=default
 Copies an IEnumerator instance. More...
 
IEnumerator & operator= (const IEnumerator &arg)=default
 Assigns an IEnumerator instance. More...
 

Detailed Description

template<class T>
class Arp::Enumerator< T >::Composite

Use this class to build a single enumerator by two given enumerator, e.g. to enumerate multiple container/collections or trees.

This class implements the composite design pattern for enumerators and makes it easy to traverse tree structures. Use Enumerator<T>::CreateComposite() to create an instance of this class.

Constructor & Destructor Documentation

◆ Composite() [1/2]

template<class T>
Arp::Enumerator< T >::Composite::Composite ( typename IEnumerator< T >::Ptr  first,
typename IEnumerator< T >::Ptr  second 
)
inline

Constructs an Composite instance.

Parameters
firstThe first enumerator to create the composite from.
secondThe second enumerator to create the composite from.

◆ Composite() [2/2]

template<class T>
Arp::Enumerator< T >::Composite::Composite ( const Composite &  arg)
default

Copy constructor.

Parameters
argThe argument to copy.

◆ ~Composite()

template<class T>
virtual Arp::Enumerator< T >::Composite::~Composite ( void  )
virtualdefault

Destructs this instance and frees all resources.

Member Function Documentation

◆ GetCurrent()

template<class T >
T Arp::Enumerator< T >::Composite::GetCurrent ( void  )
inlineoverridevirtual

Gets the element at the current position.

Returns
The element at the current position.

Depending an the template parameter type of this interface, a reference or even const reference might be returned.

Implements Arp::IEnumerator< T >.

◆ MoveNext()

template<class T >
bool Arp::Enumerator< T >::Composite::MoveNext ( void  )
inlineoverridevirtual

Moves this enumerator to the next position.

Returns
false if the end of the container/collections was reached and the enumerator was not moved, otherwise false.

See comments of interface declaration for more information about this operation.

IEnumerator

Implements Arp::IEnumerator< T >.

◆ operator=()

template<class T>
Composite& Arp::Enumerator< T >::Composite::operator= ( const Composite &  arg)
default

Assignment operator.

Parameters
argThe argument to copy.
Returns
This instance as reference.

The documentation for this class was generated from the following file: