PLCnext API Documentation 25.0.2.69
PortDefinition.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/Base/Core/PimplPtr.hxx"
9#include "Arp/Plc/Meta/Commons/BitSize.hpp"
10#include "Arp/Plc/Meta/Commons/CustomAttribute.hpp"
11#include "Arp/Plc/Meta/Commons/DataType.hpp"
12#include "Arp/Plc/Meta/Commons/StandardAttribute.hpp"
13#include "Arp/Plc/Meta/Commons/ArrayDimension.hpp"
14#include <vector>
15
17{
18
35class ARP_EXPORT PortDefinition
36{
37public: // Impl forward declaration
38 class Impl;
39
40public: // usings
41 using ArrayDimensions = std::vector<ArrayDimension>;
42 using CustomAttributes = std::vector<CustomAttribute>;
43 using Children = std::vector<PortDefinition>;
44
45public: // construction/destruction/assignment
47 const String& name, DataType dataType, const ArrayDimensions& arrayDimensions,
48 StandardAttribute standardAttribute, const CustomAttributes& customAttributes,
49 const String& bufferName, const BitSize& offset);
51 const String& name, DataType dataType, const String& typeName, const BitSize& size,
52 const ArrayDimensions& arrayDimensions, StandardAttribute standardAttribute,
53 const CustomAttributes& customAttributes, const String& bufferName, const BitSize& offset);
54 PortDefinition(const String& name, const CustomAttributes& customAttributesArg, const Children& childrenArg);
55
61
62public: // setter/getter operations
63 String GetName() const;
64 DataType GetDataType() const;
65 String GetTypeName() const;
66 BitSize GetSize() const;
67 ArrayDimensions GetArrayDimensions() const;
68 StandardAttribute GetStandardAttribute() const;
69 CustomAttributes GetCustomAttributes() const;
70 String GetBufferName() const;
71 BitSize GetOffset() const;
72 const Children& GetChildren() const;
73
74public: // operations
75 void AddAttribute(const CustomAttribute& customAttribute);
76 void AddChild(const PortDefinition& child);
77
78public: // internal operations
79 Impl& GetImpl(void);
80 const Impl& GetImpl(void)const;
81
82private: // Impl usings
84
85private: // Impl fields
86 Pimpl pimpl;
87};
88
89} // end of namespace Arp::Plc::Meta::Commons::Io
Adapter class to implement PImpl idiom.
Definition: PimplPtr.hxx:15
This class represents the Arp String. The implementation is based on std::string.
Definition: String.hpp:39
This class represents a size of a variable
Definition: BitSize.hpp:16
This class represents an attribute on a variable as a key-value-pair
Definition: CustomAttribute.hpp:16
This class is used to define a single IO variable or a tree if IO variables
Definition: PortDefinition.hpp:36
~PortDefinition(void)
The default destructor.
PortDefinition(const PortDefinition &arg)
The default copy constructor.
PortDefinition & operator=(PortDefinition &&arg) noexcept
The default move-assignment operator.
PortDefinition & operator=(const PortDefinition &arg)
THe default copy-assignment operator.
PortDefinition(PortDefinition &&arg) noexcept
The default move constructor.
Namespace for interface types for IO variables
StandardAttribute
Standard attributes to types
Definition: StandardAttribute.hpp:18
DataType
This enum represents the data type of a variable.
Definition: DataType.hpp:15