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"
16namespace Arp {
namespace Plc {
namespace Commons {
namespace Esm
18class ProgramComponentBase;
21namespace Arp {
namespace Plc {
namespace Commons {
namespace Meta
25class 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;
100 void AddRoot(
const char* name,
const T& value);
107 void AddDataInfo(
const DataInfo& dataInfo);
108 void EnsureValidName(
const DataInfo& dataInfo)
const;
109 void RemoveDataInfo(
const String& localVariableName);
123 this->AddDataInfo(rootInfo);
128 this->roots.erase(name);
135 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