PLCnext API Documentation 25.0.2.69
TicConfiguration.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/ITicSerializable.hpp"
10#include "Arp/Plc/Meta/Commons/Io/PortDefinition.hpp"
11
12// forwards
13namespace Arp::Io::Commons::Data
14{
15class BufferInfo;
16}
17
18namespace Arp::Io::Commons::Configuration
19{
20
21// forwards
22class TicFrame;
23
36class ARP_EXPORT TicConfiguration
37{
38public: // Impl forward declaration
39 class Impl;
40
41public: // usings
42 using RootPtr = std::shared_ptr<ITicSerializable>;
43 using ChildPtr = std::shared_ptr<ITicSerializable>;
44 using Roots = std::vector<RootPtr>;
46 using BufferInfos = std::vector<BufferInfo>;
48 using PortDefinitions = std::vector<PortDefinition>;
49
50public: // canonical construction/destruction/assignment
51 TicConfiguration(const TicConfiguration& arg) = delete;
53 TicConfiguration& operator=(const TicConfiguration& arg) = delete;
55 virtual ~TicConfiguration(void);
56
57public: // construction
58 TicConfiguration(void);
59
60public: // setter/getter operations
61 const Roots& GetRoots(void)const;
62 const BufferInfos& GetBufferInfos(void)const;
63 const BufferInfo& GetBufferInfo(const String& name)const;
64 bool TryGetBufferInfo(const String& name, BufferInfo& bufferInfo)const;
65 const PortDefinitions& GetPortDefinitions(void)const;
66 PortDefinitions GetPortDefinitions(const String& bufferName)const;
67
68public: // operations
69 void Load(const String& ticLinksPath);
70
71public: // virtual operations to override
72 virtual RootPtr CreateRoot(const String& rootElementName);
73 virtual bool TryCreateCustomElement(const String& elementName, ChildPtr& result);
74
75public: // Impl operations
76 Impl& GetImpl(void);
77 const Impl& GetImpl(void)const;
78
79private: // Impl usings
80 using Pimpl = PimplPtr<Impl>;
81
82private: // Impl fields
83 Pimpl pimpl;
84};
85
86} // 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 reads and stores a complete Tic hierarchy defined by a Tic links file.
Definition: TicConfiguration.hpp:37
virtual ~TicConfiguration(void)
Default destructor.
TicConfiguration & operator=(TicConfiguration &&arg) noexcept
Default move-assignment operator.
TicConfiguration(TicConfiguration &&arg) noexcept
Default move constructor.
This class is used to store buffer parameters which are be used to create io buffer objects.
Definition: BufferInfo.hpp:19
This class is used to define a single IO variable or a tree if IO variables
Definition: PortDefinition.hpp:36