PLCnext API Documentation 25.0.2.69
Public Member Functions | List of all members
Arp::Base::Core::Enumerator< T >::StackComposite< T > Class Template Reference

Use this class to build a single enumerator by multiple other enumerators using a stack More...

#include <Enumerator.StackComposite.hxx>

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

Public Member Functions

 StackComposite (void)
 Constructs an StackComposite instance.
 
 StackComposite (const StackComposite &arg)=delete
 
 StackComposite (StackComposite &&arg) noexcept
 Move constructor. More...
 
StackCompositeoperator= (const StackComposite &arg)=delete
 
StackCompositeoperator= (StackComposite &&arg) noexcept
 Move assignment operator. More...
 
 ~StackComposite (void) override
 Destructs this instance and frees all resources.
 
bool MoveNext (void) override
 Moves this enumerator to the next position. More...
 
GetCurrent (void) override
 Gets the element at the current position. More...
 
void Push (typename IEnumerator< T >::Ptr enumerator)
 Adds the as argument passed enumerator to this stack. More...
 
size_t GetSize (void) const
 Get the size of this stack. 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.
 
IEnumeratoroperator= (const IEnumerator &arg)=default
 Deleted copy-assignment IEnumerator.
 
IEnumeratoroperator= (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 >::StackComposite< T >

Use this class to build a single enumerator by multiple other enumerators using a stack

The enumerator on the top of the stack is enumerated first. After it's MoveNext() returned false it is removed from the stack. On pushing a new enumerator the GetCurrent() refers to the newly pushed enumerator.

Constructor & Destructor Documentation

◆ StackComposite()

template<class T >
template<class T >
Arp::Base::Core::Enumerator< T >::StackComposite< T >::StackComposite ( StackComposite< 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 >::StackComposite< 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 >.

◆ GetSize()

template<class T >
template<class T >
size_t Arp::Base::Core::Enumerator< T >::StackComposite< T >::GetSize ( void  ) const
inline

Get the size of this stack.

Returns
The size of this stack.

◆ MoveNext()

template<class T >
template<class T >
bool Arp::Base::Core::Enumerator< T >::StackComposite< 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 >::StackComposite & Arp::Base::Core::Enumerator< T >::StackComposite< T >::operator= ( StackComposite< T > &&  arg)
inlinedefaultnoexcept

Move assignment operator.

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

◆ Push()

template<class T >
template<class T >
void Arp::Base::Core::Enumerator< T >::StackComposite< T >::Push ( typename IEnumerator< T >::Ptr  enumerator)
inline

Adds the as argument passed enumerator to this stack.

Parameters
enumeratorThe enumerator to add to this stack.

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