PLCnext API Documentation 23.6.0.37
DataInfo.hpp
1
2//
3// Copyright PHOENIX CONTACT Electronics GmbH
4//
6#pragma once
8#include "Arp/System/Rsc/Services/IRscSerializable.hpp"
9#include "Arp/System/Rsc/Services/RscReader.hpp"
10#include "Arp/System/Rsc/Services/RscString.hxx"
11#include "Arp/System/Rsc/Services/RscWriter.hpp"
12#include "Arp/Plc/Commons/Meta/DataTag.hpp"
13#include "Arp/Plc/Commons/Meta/ArrayDimension.hpp"
14#include "Arp/Plc/Commons/Meta/ArrayDimensions.hpp"
15#include "Arp/Plc/Commons/Meta/ITypeNavigator.hpp"
16
17
18
19
20namespace Arp { namespace Plc { namespace Meta { namespace Internal
21{
22class DataBrowser;
23}}}}
24
25namespace Arp { namespace Plc { namespace Commons { namespace Meta
26{
27
28using namespace Arp::System::Rsc::Services;
29
32{
33 friend class Arp::Plc::Meta::Internal::DataBrowser;
34
35public: // typedefs
36
37public: // construction/destruction
39 DataInfo(void) = default;
41 DataInfo(const DataInfo& arg) = default;
43 DataInfo(DataInfo&& arg) = default;
45 DataInfo(const DataTag& dataTag);
47 DataInfo(const DataTag& dataTag, const ArrayDimension& arrayDimension);
49 DataInfo(const DataTag& dataTag, const ArrayDimensions& arrayDimensions);
51 DataInfo& operator=(const DataInfo& arg) = default;
53 DataInfo& operator=(DataInfo&& arg) = default;
55 ~DataInfo(void) override = default;
56
57public: // static properties
59 static const DataInfo Empty;
60
61public: // setter/getter operations
64 bool IsEmpty(void)const;
65
69
72 const DataTypeEnum& GetDataType(void)const;
73
76 DataTag& GetDataTag(void);
77
80 const DataTag& GetDataTag(void)const;
81
85
89
93
96 const ArrayDimensions& GetArrayDimensions(void)const;
97
100 bool IsBackgroundDomain(void)const;
101
102public: // operations
109 ARP_DEPRECATED("Use GetBaseDataTypeSize instead")
110 size_t GetTypeSize(ITypeNavigator& typeNavigator)const;
111
116 size_t GetBaseDataTypeSize(ITypeNavigator& typeNavigator)const;
117
123 size_t GetDataSize(ITypeNavigator& typeNavigator)const;
124
129 size_t GetDataAlignment(ITypeNavigator& typeNavigator)const;
130
136 size_t GetVariableSize(ITypeNavigator& typeNavigator)const;
137
143 size_t GetVariableAlignment(ITypeNavigator& typeNavigator)const;
144
148 TypeInfo GetTypeInfo(ITypeNavigator& typeNavigator)const;
149
150public: // IRscSerializable operations
151 void Serialize(RscWriter& writer)const override;
152 void Deserialize(RscReader& reader)override;
153 static size_t GetFieldCount(void);
154
155private: // methods
156 void SetName(const String& value);
157
158private: // fields
159 DataTag dataTag;
160 ArrayDimensions dimensions;
161
162private: // static fields
163};
164
166// inline methods of class DataInfo
167
168inline bool DataInfo::IsEmpty()const
169{
170 return this->dataTag.IsEmpty();
171}
172
174{
175 return this->dataTag.GetDataType();
176}
177
178inline const DataTypeEnum& DataInfo::GetDataType()const
179{
180 return this->dataTag.GetDataType();
181}
182
184{
185 return this->dataTag;
186}
187
188inline const DataTag& DataInfo::GetDataTag()const
189{
190 return this->dataTag;
191}
192
194{
195 return this->dataTag.GetTypeIdentifier();
196}
197
199{
200 return this->dataTag.GetTypeIdentifier();
201}
202
204{
205 return this->dimensions;
206}
207
209{
210 return this->dimensions;
211}
212
214{
215 return this->dataTag.IsBackgroundDomain();
216}
217
218inline void DataInfo::SetName(const String& value)
219{
220 this->dataTag.SetName(value);
221}
222
223inline size_t DataInfo::GetFieldCount(void)
224{
225 return 2;
226}
227
228}}}} // end of namespace Arp::Plc::Meta
Definition: DataTypeEnum.hpp:16
Provide array information.
Definition: ArrayDimension.hpp:21
Provide array information.
Definition: ArrayDimensions.hpp:18
Provides detailed informations for the respective data object.
Definition: DataInfo.hpp:32
size_t GetVariableAlignment(ITypeNavigator &typeNavigator) const
Determines the alignment of the pointer oder data
DataInfo(DataInfo &&arg)=default
Move constructor.
DataTypeEnum & GetDataType(void)
The data type of this instance.
Definition: DataInfo.hpp:173
DataInfo & operator=(DataInfo &&arg)=default
Move assignment operator
DataInfo(const DataInfo &arg)=default
Copy constructor.
size_t GetDataSize(ITypeNavigator &typeNavigator) const
Determines the size of the data type
size_t GetDataAlignment(ITypeNavigator &typeNavigator) const
Determines the alignment of the data
static const DataInfo Empty
constant empty object to enable references
Definition: DataInfo.hpp:59
DataInfo(void)=default
Constructs an DataInfo instance.
ArrayDimensions & GetArrayDimensions(void)
List of array dimensions information
Definition: DataInfo.hpp:203
size_t GetVariableSize(ITypeNavigator &typeNavigator) const
Determines the size of the pointer or data type
void Deserialize(RscReader &reader) override
Deserializes the datatype. All fields of the datatype have to be deserialized in use of RscReader.
DataInfo(const DataTag &dataTag, const ArrayDimensions &arrayDimensions)
Constructs an DataInfo instance.
const DataTypeEnum & GetDataType(void) const
The data type of this instance.
const TypeIdentifier & GetTypeIdentifier(void) const
Get type name and namspace.
const DataTag & GetDataTag(void) const
Gets the DataTag .
size_t GetTypeSize(ITypeNavigator &typeNavigator) const
Deprecated! Determines the size of the base data type
TypeInfo GetTypeInfo(ITypeNavigator &typeNavigator) const
Gets the TypeInfo of this object's type
DataTag & GetDataTag(void)
Gets the DataTag .
Definition: DataInfo.hpp:183
size_t GetBaseDataTypeSize(ITypeNavigator &typeNavigator) const
Determines the size of the base data type
DataInfo & operator=(const DataInfo &arg)=default
Copy assignment operator.
TypeIdentifier & GetTypeIdentifier(void)
Get type name and namspace.
Definition: DataInfo.hpp:193
void Serialize(RscWriter &writer) const override
Serializes the datatype. All fields of the datatype have to be serialized in use of RscWriter.
~DataInfo(void) override=default
Destructs this instance and frees all resources.
bool IsEmpty(void) const
Determines if this instance is empty.
Definition: DataInfo.hpp:168
DataInfo(const DataTag &dataTag, const ArrayDimension &arrayDimension)
Constructs an DataInfo instance.
DataInfo(const DataTag &dataTag)
Constructs an DataInfo instance.
bool IsBackgroundDomain(void) const
Only for internal using.
Definition: DataInfo.hpp:213
Includes kind as well as instance browse name.
Definition: DataTag.hpp:25
bool IsBackgroundDomain(void) const
Only for internal using.
Definition: DataTag.hpp:245
TypeIdentifier & GetTypeIdentifier(void)
Returns the type identifier of this instance.
Definition: DataTag.hpp:183
DataTypeEnum & GetDataType(void)
The data type of this instance.
Definition: DataTag.hpp:173
Provide type information
Definition: ITypeNavigator.hpp:19
Identifies a type descriptions
Definition: TypeIdentifier.hpp:24
Provides detailed type information within TypeBrowser interface.
Definition: TypeInfo.hpp:28
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
Namespace for classes and interfaces for the Remote Service Call implementation
Root namespace for the PLCnext API
class ARP_DEPRECATED("Use Arp::Enum<T> instead.") EnumStrings
Deprecated! The class implements an adapter for enums to define the string literals of the enum entri...
Definition: EnumStrings.hxx:38