PLCnext API Documentation 25.0.2.69
ChildTypeInfo.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/Plc/Commons/DataType.hpp"
9#include "Arp/Plc/Commons/Meta/ChildKind.hpp"
10#include "Arp/Plc/Commons/Meta/TypeIdentifier.hpp"
11#include "Arp/Plc/Commons/Meta/ArrayDimensions.hpp"
12#include "Arp/Plc/Commons/Meta/StandardAttributes.hpp"
13#include "Arp/Plc/Commons/Meta/CustomAttributes.hpp"
14#include "Arp/Plc/Commons/Meta/TypeInfo.hpp"
15#include "Arp/Plc/Commons/DataTypeEnum.hpp"
16#include "Arp/Base/Rsc/Commons/RscSerializable.hpp"
17
18
19namespace Arp { namespace Plc { namespace Commons { namespace Meta
20{
21
22using namespace Arp::Base::Rsc::Commons;
23
25// rename to FieldInfo
26class ChildTypeInfo : public TypeInfo
27{
28public: // usings
30 using Ptr = std::shared_ptr<ChildTypeInfo>;
31
32public: // construction/destruction
34 ARP_DEPRECATED("Use ChildTypeInfo constructor with TypeInfo and ArrayDimensions")
35 ChildTypeInfo(const String& name, size_t offset, const TypeInfo& typeInfo, ChildKind kind = ChildKind::Default);
36 ChildTypeInfo(const String& name, size_t offset, const TypeInfo& typeInfo, const ArrayDimensions& arrayDimensions,
37 ChildKind kind = ChildKind::Default);
38 ChildTypeInfo(const String& name, size_t offset, DataType dataType, size_t size, size_t alignment,
39 StandardAttributes standardAttributes = StandardAttribute::None, ChildKind kind = ChildKind::Default);
40 ChildTypeInfo(const String& name, size_t offset, DataType dataType, const TypeIdentifier& typeId, size_t size, size_t alignment,
41 StandardAttributes standardAttributes = StandardAttribute::None, ChildKind kind = ChildKind::Default);
42 ChildTypeInfo(const String& name, size_t offset, DataType dataType, const TypeIdentifier& typeId, size_t size, size_t alignment,
43 const ArrayDimension& arrayDimension, StandardAttributes standardAttributes = StandardAttribute::None, ChildKind kind = ChildKind::Default);
44 ChildTypeInfo(const String& name, size_t offset, DataType dataType, const TypeIdentifier& typeId, size_t size, size_t alignment,
45 const ArrayDimensions& arrayDimensions, StandardAttributes standardAttributes = StandardAttribute::None, ChildKind kind = ChildKind::Default);
46 ChildTypeInfo(const String& name, size_t offset, DataType dataType, const TypeIdentifier& typeId, size_t size, size_t alignment,
47 const ArrayDimensions& arrayDimensions, StandardAttributes standardAttributes, const CustomAttributes& customAttributes, ChildKind kind);
49 ChildTypeInfo(const ChildTypeInfo& arg) = default;
51 ChildTypeInfo(ChildTypeInfo&& arg) noexcept = default;
53 ChildTypeInfo& operator=(const ChildTypeInfo& arg) = default;
55 ChildTypeInfo& operator=(ChildTypeInfo&& arg) noexcept = default;
57 ~ChildTypeInfo(void) noexcept override = default;
58
59public: // static properties
60 static const ChildTypeInfo Empty;
61
62public: // operators
63 void Serialize(RscWriter& writer)const;
64 void Deserialize(RscReader& reader);
65
66public: // static operations
67 static size_t GetFieldCount(void);
68
69public: // setter/getter operations
70 void SetDataType(DataType value);
71 const String& GetName(void)const;
72 size_t GetOffset(void)const;
73 ChildKind GetKind(void)const;
74 const ArrayDimensions& GetArrayDimensions(void)const;
75 size_t GetCacheSize(void)const;
76
77public: // operations
78
79private: // methods
80
81private: // fields
82 String name;
83 size_t offset = static_cast<size_t>(-1);
84 ChildKind kind = ChildKind::None;
85};
86
87}}}} // end of namespace Arp::Plc::Commons::Meta
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
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 type information of a child within TypeBrowser interface.
Definition: ChildTypeInfo.hpp:27
void SetDataType(DataType value)
Sets the DataType
Definition: ChildTypeInfo.cpp:140
const ArrayDimensions & GetArrayDimensions(void) const
List of array dimensions and their informations.
Definition: ChildTypeInfo.cpp:119
const String & GetName(void) const
Returns the name of the child
Definition: ChildTypeInfo.cpp:126
ChildKind GetKind(void) const
Returns the kind of a child type (e.g. instance, static)
Definition: ChildTypeInfo.cpp:147
std::shared_ptr< ChildTypeInfo > Ptr
std::shared_ptr to ChildTypeInfo
Definition: ChildTypeInfo.hpp:30
size_t GetOffset(void) const
Returns the offset of this child in the parent struct
Definition: ChildTypeInfo.cpp:133
ChildTypeInfo(void)
Constructs an ChildTypeInfo instance.
size_t GetCacheSize(void) const
Get the cache size
Definition: ChildTypeInfo.cpp:159
Collection of StandardAttribute flags
Definition: StandardAttributes.hpp:16
Identifies a type descriptions
Definition: TypeIdentifier.hpp:25
Provides detailed type information within TypeBrowser interface.
Definition: TypeInfo.hpp:28
ChildKind
Enumeration of the type of a child type
Definition: ChildKind.hpp:17
std::vector< CustomAttribute > CustomAttributes
List of type attributes TypeAttribute.
Definition: CustomAttributes.hpp:15
StandardAttribute
Standard attributes to types
Definition: StandardAttribute.hpp:18
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