PLCnext API Documentation 26.6.0.38
Public Member Functions | List of all members
Arp::Base::Core::Enumerator< T >::Composite< T > Class Template 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.Composite.hxx>

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

Public Member Functions

 Composite (typename IEnumerator< T >::Ptr first, typename IEnumerator< T >::Ptr second)
 Constructs an Enumerator<T>::Composite instance. More...
 
 Composite (const Composite &arg)=delete
 
 Composite (Composite &&arg) noexcept
 Move constructor. More...
 
Composite & operator= (const Composite &arg)=delete
 
Composite & operator= (Composite &&arg) noexcept
 Move assignment operator. More...
 
 ~Composite (void) override
 Destructs this instance and frees all resources.
 
bool MoveNext (void) override
 Moves this enumerator to the next position. More...
 
T GetCurrent (void) override
 Gets the element at the current position. More...
 
- Public Member Functions inherited from Arp::Base::Core::IEnumerator< T >
 IEnumerator (void)=default
 Constructs an IEnumerator instance.
 
 IEnumerator (const IEnumerator &arg)=default
 Deleted copy constructor.
 
 IEnumerator (IEnumerator &&arg) noexcept=default
 Move constructor.
 
IEnumerator & operator= (const IEnumerator &arg)=default
 Deleted copy-assignment IEnumerator.
 
IEnumerator & operator= (IEnumerator &&arg) noexcept=default
 Move-assignment operator.
 
virtual ~IEnumerator (void)=default
 Destructs this instance and frees all resources.
 
virtual bool MoveNext (void)=0
 Moves this enumerator to the next position. More...
 
virtual T GetCurrent (void)=0
 Gets the element at the current position. More...
 

Additional Inherited Members

- Public Types inherited from Arp::Base::Core::IEnumerator< T >
using Ptr = std::shared_ptr< IEnumerator >
 The smart pointer type of this interface.
 
using ValueType = T
 Type of the enumerated values
 

Detailed Description

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

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 >
template<class T >
Arp::Base::Core::Enumerator< T >::Composite< T >::Composite ( typename IEnumerator< T >::Ptr  first,
typename IEnumerator< T >::Ptr  second 
)
inline

Constructs an Enumerator<T>::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 >
template<class T >
Arp::Base::Core::Enumerator< T >::Composite< T >::Composite ( Composite< T > &&  arg)
inlinedefaultnoexcept

Move constructor.

Parameters
argThe argument to move.

Member Function Documentation

◆ GetCurrent()

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

Gets the element at the current position.

Returns
The element at the current position.

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

Exceptions
InvalidOperationExceptionWhen GetCurrent() is called before MoveNext() or after MoveNext() has returned false once.

Implements Arp::Base::Core::IEnumerator< T >.

◆ MoveNext()

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

Moves this enumerator to the next position.

Returns
false if the end of the container/collections/enumeration has reached, otherwise true.
See also
IEnumerator

Implements Arp::Base::Core::IEnumerator< T >.

◆ operator=()

template<class T >
template<class T >
Enumerator< T >::Composite & Arp::Base::Core::Enumerator< T >::Composite< T >::operator= ( Composite< T > &&  arg)
inlinedefaultnoexcept

Move assignment operator.

Parameters
argThe argument to move.
Returns
A reference of this instance.

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