PLCnext API Documentation 25.0.2.69
DataInfo.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/Base/Rsc/Commons/Rsc.hpp"
9#include "Arp/Base/Rsc/Commons/RscSerializable.hpp"
10#include "Arp/Base/Rsc/Commons/RscString.hxx"
11#include "Arp/Plc/Commons/Meta/DataTag.hpp"
12#include "Arp/Plc/Commons/Meta/ArrayDimension.hpp"
13#include "Arp/Plc/Commons/Meta/ArrayDimensions.hpp"
14#include "Arp/Plc/Commons/Meta/ITypeNavigator.hpp"
15
16
17namespace Arp { namespace Plc { namespace Meta { namespace Internal
18{
19class DataBrowser;
20}}}}
21
22namespace Arp { namespace Plc { namespace Commons { namespace Meta
23{
24
25using namespace Arp::Base::Rsc::Commons;
26
29{
30 friend class Arp::Plc::Meta::Internal::DataBrowser;
31
32public: // typedefs
33
34public: // construction/destruction
36 DataInfo(void) = default;
38 DataInfo(const DataInfo& arg) = default;
40 DataInfo(DataInfo&& arg) = default;
41 DataInfo(const DataTag& dataTag);
42 DataInfo(const DataTag& dataTag, const ArrayDimension& arrayDimension);
43 DataInfo(const DataTag& dataTag, const ArrayDimensions& arrayDimensions);
45 DataInfo& operator=(const DataInfo& arg) = default;
47 DataInfo& operator=(DataInfo&& arg) = default;
49 ~DataInfo(void) = default;
50
51public: // static properties
53 static const DataInfo Empty;
54
55public: // setter/getter operations
56 bool IsEmpty(void)const;
58 const DataTypeEnum& GetDataType(void)const;
59 DataTag& GetDataTag(void);
60 const DataTag& GetDataTag(void)const;
62 const TypeIdentifier& GetTypeIdentifier(void)const;
64 const ArrayDimensions& GetArrayDimensions(void)const;
65 bool IsBackgroundDomain(void)const;
66
67public: // operations
68 ARP_DEPRECATED("Use GetBaseDataTypeSize instead")
69 size_t GetTypeSize(ITypeNavigator& typeNavigator)const;
70 size_t GetBaseDataTypeSize(ITypeNavigator& typeNavigator)const;
71 size_t GetDataSize(ITypeNavigator& typeNavigator)const;
72 size_t GetDataAlignment(ITypeNavigator& typeNavigator)const;
73 size_t GetVariableSize(ITypeNavigator& typeNavigator)const;
74 size_t GetVariableAlignment(ITypeNavigator& typeNavigator)const;
75 TypeInfo GetTypeInfo(ITypeNavigator& typeNavigator)const;
76
77public: // RscSerializable operations
78 void Serialize(RscWriter& writer)const;
79 void Deserialize(RscReader& reader);
80 static size_t GetFieldCount(void);
81
82private: // methods
83 void SetName(const String& value);
84
85private: // fields
86 DataTag dataTag;
87 ArrayDimensions dimensions;
88
89private: // static fields
90};
91
92}}}} // end of namespace Arp::Plc::Meta
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
Any custom struct type which is intended to be marshalled in a Rsc serialization context,...
Definition: RscSerializable.hpp:35
Reads marshaled data of RSC services.
Definition: RscReader.hpp:34
Writes marshalled data of RSC services.
Definition: RscWriter.hpp:34
Provide array information.
Definition: ArrayDimension.hpp:19
Provide array information.
Definition: ArrayDimensions.hpp:18
Provides detailed informations for the respective data object.
Definition: DataInfo.hpp:29
size_t GetVariableAlignment(ITypeNavigator &typeNavigator) const
Determines the alignment of the pointer oder data
Definition: DataInfo.cpp:149
DataInfo(DataInfo &&arg)=default
Move constructor.
DataTypeEnum & GetDataType(void)
The data type of this instance.
Definition: DataInfo.cpp:210
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
Definition: DataInfo.cpp:98
size_t GetDataAlignment(ITypeNavigator &typeNavigator) const
Determines the alignment of the data
Definition: DataInfo.cpp:107
static const DataInfo Empty
constant empty object to enable references
Definition: DataInfo.hpp:53
DataInfo(void)=default
Constructs an DataInfo instance.
ArrayDimensions & GetArrayDimensions(void)
List of array dimensions information
Definition: DataInfo.cpp:252
size_t GetVariableSize(ITypeNavigator &typeNavigator) const
Determines the size of the pointer or data type
Definition: DataInfo.cpp:130
size_t GetTypeSize(ITypeNavigator &typeNavigator) const
Deprecated! Determines the size of the base data type
Definition: DataInfo.cpp:51
TypeInfo GetTypeInfo(ITypeNavigator &typeNavigator) const
Gets the TypeInfo of this object's type
Definition: DataInfo.cpp:166
DataTag & GetDataTag(void)
Gets the DataTag .
Definition: DataInfo.cpp:224
size_t GetBaseDataTypeSize(ITypeNavigator &typeNavigator) const
Determines the size of the base data type
Definition: DataInfo.cpp:60
DataInfo & operator=(const DataInfo &arg)=default
Copy assignment operator.
~DataInfo(void)=default
Destructs this instance and frees all resources.
TypeIdentifier & GetTypeIdentifier(void)
Get type name and namspace.
Definition: DataInfo.cpp:238
bool IsEmpty(void) const
Determines if this instance is empty.
Definition: DataInfo.cpp:203
bool IsBackgroundDomain(void) const
Only for internal using.
Definition: DataInfo.cpp:266
Includes kind as well as instance browse name.
Definition: DataTag.hpp:24
Provide type information
Definition: ITypeNavigator.hpp:19
Identifies a type descriptions
Definition: TypeIdentifier.hpp:25
Provides detailed type information within TypeBrowser interface.
Definition: TypeInfo.hpp:28
Definition: DataTypeEnum.hpp:15
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