8#include "Arp/Plc/Commons/DataTypeEnum.hpp"
9#include "Arp/Plc/Commons/Meta/TypeIdentifier.hpp"
10#include "Arp/System/Rsc/Services/IRscSerializable.hpp"
14namespace Arp {
namespace Plc {
namespace Commons {
namespace Meta
21class IChangeNavigator;
124 void GetChangeInfo(
const byte*& valueAddressOut,
const byte*& changeCounterpartAddressOut,
bool& isBackgroundDomainOut)
const;
133 static size_t GetFieldCount(
void);
136 void SetName(
const String& value);
137 void SwapDomain(
void);
140 static const byte* ResolveIndirectAddress(
const byte* address);
146 const byte* variableAddress =
nullptr;
147 const byte* changeCounterpartAddress =
nullptr;
148 bool isBackgroundDomain =
false;
158inline void DataTag::SetName(
const String& value)
170 this->dataType = value;
175 return this->dataType;
180 return this->dataType;
195 this->variableAddress = value;
200 this->variableAddress += offset;
207 if (this->variableAddress ==
nullptr)
210 "Attempt to dereference variableAddress == nullptr for DataTag: name={}, dataType={}",
211 this->name, this->dataType);
213 return ResolveIndirectAddress(this->variableAddress);
216 return this->variableAddress;
221 return this->variableAddress;
226 this->changeCounterpartAddress = value;
233 if (this->changeCounterpartAddress ==
nullptr)
236 "Attempt to dereference changeCounterpartAddress == nullptr for DataTag: name={}, dataType={}",
237 this->name, this->dataType);
239 return ResolveIndirectAddress(this->changeCounterpartAddress);
242 return this->changeCounterpartAddress;
247 return this->isBackgroundDomain;
252 return this->isBackgroundDomain;
257 return (this->variableAddress ==
nullptr) || (this->
GetDataAddress() ==
nullptr);
270inline size_t DataTag::GetFieldCount()
276inline const byte* DataTag::ResolveIndirectAddress(
const byte* address)
278 return *
reinterpret_cast<byte*const*
>(address);
Definition: DataTypeEnum.hpp:16
bool IsIndirect(void) const
Checks if this data type is an indirect data type, that is a pointer or reference type.
Definition: DataTypeEnum.hpp:168
This exception is used when a method call is invalid for object's current state.
Definition: InvalidOperationException.hpp:15
Marshalls structure or class data types. Serialize and Deserialize have to marshal fields in the same...
Definition: IRscSerializable.hpp:20
Reads data from Rsc
Definition: RscReader.hpp:27
Writes data to Rsc.
Definition: RscWriter.hpp:32
DataType
Definition: DataType.hpp:15
@ None
summary>Unspecified.
Namespace for classes and interfaces for the Remote Service Call implementation
Root namespace for the PLCnext API