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;
75 const String& GetLibraryNamespace()
const;
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));
Declares the interface of the enumerator pattern, which is leaned on .NET enumerator idiom...
Definition: IEnumerator.hxx:47
Root namespace for the PLCnext API
This class defines a base class for all enumerator implementations and some predefined enumerators as...
Definition: Enumerator.hxx:21
Definition: ProgramProviderBase.hpp:15