8 #include "Arp/System/Core/Enumerator.hxx" 9 #include "Arp/Plc/Commons/Meta/IDataInfoProvider.hpp" 10 #include "Arp/Plc/Commons/Meta/TypeSystem/DataInfoDeduction.hxx" 11 #include "Arp/Plc/Commons/Esm/ProgramProviderBase.hpp" 12 #include "Arp/Plc/Commons/Meta/ChangeDataInfoProvider.hpp" 16 namespace Arp {
namespace Plc {
namespace Commons {
namespace Esm
18 class ProgramComponentBase;
21 namespace Arp {
namespace Plc {
namespace Commons {
namespace Meta
25 class ChangeDataInfoProvider;
36 using Roots = std::map<String, DataInfo>;
39 class RootsEnumerator :
public Enumerator<const DataInfo&>
42 RootsEnumerator(
const Roots& roots);
45 bool MoveNext(
void)
override;
49 Roots::const_iterator currentIterator;
50 Roots::const_iterator endIterator;
51 bool isFirstMove =
true;
73 void AddRootInfo(
const DataInfo& rootInfo);
74 void RemoveRootInfo(
const String& name);
77 void AddRoot(
const char* name,
const T& value);
89 void AddDataInfo(
const DataInfo& dataInfo);
90 void RemoveDataInfo(
const String& localVariableName);
102 inline void DataInfoProvider::AddRootInfo(
const DataInfo& rootInfo)
104 this->AddDataInfo(rootInfo);
107 inline void DataInfoProvider::RemoveRootInfo(
const String& name)
109 this->roots.erase(name);
113 inline void DataInfoProvider::AddRoot(
const char* name,
const T& value)
116 this->AddDataInfo(getDataInfo(name, value));
Namespace for interfaces and classes of Execution and Sychronization Manager (ESM)
Declares the interface of the enumerator pattern, which is leaned on .NET enumerator idiom...
Definition: IEnumerator.hxx:47
Definition: ProgramComponentBase.hpp:22
Root namespace for the PLCnext API
std::shared_ptr< IProgram > Ptr
Shared pointer type of IProgram.
Definition: IProgram.hpp:22
This class defines a base class for all enumerator implementations and some predefined enumerators as...
Definition: Enumerator.hxx:21
Interface to implement PLC program to be executed in realtime context.
Definition: IProgram.hpp:18
Definition: ProgramProviderBase.hpp:15