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;
87 void AddRoot(
const char* name,
const T& value);
94 void AddDataInfo(
const DataInfo& dataInfo);
95 void EnsureValidName(
const DataInfo& dataInfo)
const;
96 void RemoveDataInfo(
const String& localVariableName);
110 this->AddDataInfo(getDataInfo(name, value));
This class defines a base class for all enumerator implementations and some predefined enumerators as...
Definition: Enumerator.hxx:24
Declares the interface of the enumerator pattern, which is leaned on .NET enumerator idiom.
Definition: IEnumerator.hxx:49
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
Definition: ProgramProviderBase.hpp:16
Root namespace for the PLCnext API