PLCnext API Documentation 25.6.0.37
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
29class ARP_EXPORT PortDefinition
30{
31public: // Impl forward declaration
32 class Impl;
33
34public: // usings
35 using ArrayDimensions = std::vector<ArrayDimension>;
36 using CustomAttributes = std::vector<CustomAttribute>;
37 using Children = std::vector<PortDefinition>;
38
39public: // construction/destruction/assignment
41 const String& name, DataType dataType, const ArrayDimensions& arrayDimensions,
42 StandardAttribute standardAttribute, const CustomAttributes& customAttributes,
43 const String& bufferName, const BitSize& offset);
45 const String& name, DataType dataType, const String& typeName, const BitSize& size,
46 const ArrayDimensions& arrayDimensions, StandardAttribute standardAttribute,
47 const CustomAttributes& customAttributes, const String& bufferName, const BitSize& offset);
48 PortDefinition(const String& name, const CustomAttributes& customAttributesArg, const Children& childrenArg);
49
55
56public: // setter/getter operations
57 String GetName() const;
58 DataType GetDataType() const;
59 String GetTypeName() const;
60 BitSize GetSize() const;
61 ArrayDimensions GetArrayDimensions() const;
62 StandardAttribute GetStandardAttribute() const;
63 CustomAttributes GetCustomAttributes() const;
64 String GetBufferName() const;
65 BitSize GetOffset() const;
66 const Children& GetChildren() const;
67
68public: // operations
69 void AddAttribute(const CustomAttribute& customAttribute);
70 void AddChild(const PortDefinition& child);
71
72public: // internal operations
73 Impl& GetImpl(void);
74 const Impl& GetImpl(void)const;
75
76private: // Impl usings
78
79private: // Impl fields
80 Pimpl pimpl;
81};
82
83} // 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:30
~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