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;
40 using Roots = std::map<String, DataInfo>;
43 class RootsEnumerator :
public Enumerator<const DataInfo&>
46 RootsEnumerator(
const Roots& roots);
49 bool MoveNext(
void)
override;
53 Roots::const_iterator currentIterator;
54 Roots::const_iterator endIterator;
55 bool isFirstMove =
true;
88 void AddRootInfo(
const DataInfo& rootInfo);
92 void RemoveRootInfo(
const String& name);
100 void AddRoot(
const char* name,
const T& value);
107 void AddDataInfo(
const DataInfo& dataInfo);
108 void RemoveDataInfo(
const String& localVariableName);
122 this->AddDataInfo(rootInfo);
127 this->roots.erase(name);
134 this->AddDataInfo(getDataInfo(name, value));
This class defines a base class for all enumerator implementations and some predefined enumerators as...
Definition: Enumerator.hxx:22
Declares the interface of the enumerator pattern, which is leaned on .NET enumerator idiom.
Definition: IEnumerator.hxx:48
Definition: ProgramProviderBase.hpp:16
Root namespace for the PLCnext API