PLCnext API Documentation 25.0.2.69
TicPort.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include "Arp/Base/Core/PimplPtr.hxx"
9#include "Arp/Io/Commons/Configuration/TicBase.hpp"
10#include "Arp/Plc/Meta/Commons/Io/PortDefinition.hpp"
11
12namespace Arp::Io::Commons::Configuration
13{
14
27class ARP_EXPORT TicPort : public TicBase
28{
29public: // Impl forward declaration
30 class Impl;
31
32public: // usings
33 using Ptr = std::shared_ptr<TicPort>;
34 using ConstPtr = std::shared_ptr<const TicPort>;
36 using NodeID = Arp::uint32;
39
40public: // canonical construction/destruction/assignment
41 TicPort(const TicPort& arg) = delete;
42 TicPort(TicPort&& arg)noexcept;
43 TicPort& operator=(const TicPort& arg) = delete;
44 TicPort& operator=(TicPort&& arg)noexcept;
45 ~TicPort(void) override;
46
47public: // construction
48 TicPort(void);
49
50public: // static operations
51 static const char* GetTicElementName(void);
52
53public: // setter/getter operations
54 NodeID GetNodeID(void)const noexcept;
55 const String& GetName(void)const noexcept;
56 DataType GetDataType(void)const noexcept;
57 BitSize GetLength(void)const noexcept;
58 BitSize GetOffset(void)const noexcept;
59
60public: // TicBase operations
61 bool TryReadAttribute(TicReader& reader, const String& attributeName)final;
62 bool TryCreateElement(const String& elementName, ChildPtr& result)final;
63 void OnReadEnd(void)override;
64
65public: // operations
66 PortDefinition CreatePortDefinition(const String& bufferName) const;
67
68public: // Impl operations
69 Impl& GetImpl(void);
70 const Impl& GetImpl(void)const;
71
72private: // Impl usings
73 using Pimpl = PimplPtr<Impl>;
74
75private: // Impl fields
76 Pimpl pimpl;
77};
78
79ARP_EXPORT bool operator==(const TicPort& lhs, const TicPort& rhs);
80ARP_EXPORT bool operator<(const TicPort& lhs, const TicPort& rhs);
81
82} // end of namespace Arp::Io::Commons::Configuration
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 is the base class for all predefined Tic elements.
Definition: TicBase.hpp:42
This class is used to read and store a single Tic port element called IO:Port.
Definition: TicPort.hpp:28
TicPort(TicPort &&arg) noexcept
Default move constructor.
~TicPort(void) override
Default destructor.
TicPort(void)
Default constructor.
TicPort & operator=(TicPort &&arg) noexcept
Default move-assignment operator.
This class is used to read the content of Tic files.
Definition: TicReader.hpp:24
This class represents a size of a variable
Definition: BitSize.hpp:16
This class is used to define a single IO variable or a tree if IO variables
Definition: PortDefinition.hpp:36
std::uint32_t uint32
The Arp unsigned integer type of 4 byte size.
Definition: PrimitiveTypes.hpp:33
DataType
This enum represents the data type of a variable.
Definition: DataType.hpp:15