PLCnext API Documentation  22.9.0.33
IRscWriteEnumerator.hxx
1 //
3 // Copyright PHOENIX CONTACT Electronics GmbH
4 //
6 #pragma once
7 #include "Arp/System/Core/Arp.h"
8 #include "Arp/System/Rsc/Services/RscType.hpp"
9 
10 namespace Arp { namespace System { namespace Rsc { namespace Services
11 {
12 
13 // forwards
14 class RscArrayWriter;
15 
16 
21 template<class T>
23 {
24 public: // typedefs
25  typedef std::shared_ptr<IRscWriteEnumerator> Ptr;
26 
27 protected: // construction/destruction
29  IRscWriteEnumerator(void) = default;
31  virtual ~IRscWriteEnumerator(void) = default;
32 
33 public: // abstract operations
36  virtual void BeginWrite(size_t size = UndefinedArrayLength) = 0;
37 
40  virtual void WriteNext(const T& current) = 0;
41 
46  virtual RscArrayWriter WriteNext(size_t arraySize, RscType elementType) = 0;
47 
49  virtual void EndWrite(void) = 0;
50 
51 protected: // deleted methods
52  IRscWriteEnumerator(const IRscWriteEnumerator& arg) = default;
53  IRscWriteEnumerator& operator=(const IRscWriteEnumerator& arg) = default;
54 
55 public:
56  static constexpr size_t UndefinedArrayLength = std::numeric_limits<size_t>::max();
57 };
58 
59 }}}} // end of namespace Arp::System::Rsc::Services
Interface for writing an array or an enumerator. For regular enumerators UndefinedArrayLength is used...
Definition: IRscWriteEnumerator.hxx:23
virtual void EndWrite(void)=0
Ends the enumerator. With an array enumerator all enumerator elements had to be written
virtual void BeginWrite(size_t size=UndefinedArrayLength)=0
Begins the operation to write the enumerator.
virtual RscArrayWriter WriteNext(size_t arraySize, RscType elementType)=0
Writes the next enumerator element if the element contains an array object.
virtual void WriteNext(const T &current)=0
Writes the next enumerator element.
IRscWriteEnumerator(void)=default
Constructs an IRscArrayWriteEnumerator instance.
virtual ~IRscWriteEnumerator(void)=default
Destructs this instance and frees all resources.
Helper class to read an array of primtive types from an RscVariant. This class uses the array informa...
Definition: RscArrayWriter.hpp:22
@ System
System components used by the System, Device, Plc or Io domains.
RscType
Datatypes supported by Rsc. Values are identical with CommonRemoting::RemotingMarshalType....
Definition: RscType.hpp:37
Root namespace for the PLCnext API