8#include "Arp/System/Core/IEnumerator.hxx"
9#include "Arp/Plc/Commons/Meta/DataInfo.hpp"
10#include "Arp/Plc/Commons/Meta/TypeInfo.hpp"
11#include "Arp/Plc/Commons/Meta/ITypeNavigator.hpp"
15namespace Arp {
namespace Plc {
namespace Commons {
namespace Meta
23 using Ptr = std::shared_ptr<ArrayNavigator>;
36 size_t GetCurrentIndex(
void)
const;
37 size_t GetCurrentOffset(
void)
const;
38 const byte* GetCurrentAddress(
void)
const;
41 bool isFirstMove =
true;
58 size_t GetElementDataSize(
void)
const;
61 size_t GetOffset(
size_t index);
62 const byte* GetAddress(
size_t index);
67 size_t elementDataSize = 0;
70 const byte* startAddress =
nullptr;
71 bool isChanging =
false;
76inline size_t ArrayNavigator::GetOffset(
size_t index)
78 return index * this->elementDataSize;
81inline const byte* ArrayNavigator::GetAddress(
size_t index)
83 return this->startAddress + this->GetOffset(index);
91 return this->dataInfo;
94inline size_t ArrayNavigator::Enumerator::GetCurrentIndex(
void)
const
99inline size_t ArrayNavigator::Enumerator::GetCurrentOffset(
void)
const
101 return index * this->dataSize;
104inline const byte* ArrayNavigator::Enumerator::GetCurrentAddress(
void)
const
109inline size_t ArrayNavigator::GetElementDataSize(
void)
const
111 return this->elementDataSize;
Declares the interface of the enumerator pattern, which is leaned on .NET enumerator idiom.
Definition: IEnumerator.hxx:48
Root namespace for the PLCnext API