PLCnext API Documentation 25.6.0.37
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#include "Arp/Plc/Meta/Commons/Io/TypeDefinition.hpp"
12
13// forwards
14namespace Arp::Io::Commons::Data
15{
16class BufferInfo;
17}
18
19namespace Arp::Io::Commons::Configuration
20{
21
22// forwards
23class TicFrame;
24
37class ARP_EXPORT TicConfiguration
38{
39public: // Impl forward declaration
40 class Impl;
41
42public: // usings
43 using RootPtr = std::shared_ptr<ITicSerializable>;
44 using ChildPtr = std::shared_ptr<ITicSerializable>;
45 using Roots = std::vector<RootPtr>;
47 using BufferInfos = std::vector<BufferInfo>;
49 using PortDefinitions = std::vector<PortDefinition>;
51 using TypeDefinitions = std::vector<TypeDefinition>;
52
53public: // canonical construction/destruction/assignment
54 TicConfiguration(const TicConfiguration& arg) = delete;
56 TicConfiguration& operator=(const TicConfiguration& arg) = delete;
58 virtual ~TicConfiguration(void);
59
60public: // construction
61 TicConfiguration(void);
62
63public: // setter/getter operations
64 const Roots& GetRoots(void)const;
65 const BufferInfos& GetBufferInfos(void)const;
66 const BufferInfo& GetBufferInfo(const String& name)const;
67 bool TryGetBufferInfo(const String& name, BufferInfo& bufferInfo)const;
68 const PortDefinitions& GetPortDefinitions(void)const;
69 PortDefinitions GetPortDefinitions(const String& bufferName)const;
70 const TypeDefinitions& GetTypeDefinitions()const;
71
72public: // operations
73 void Load(const String& ticLinksPath);
74
75public: // virtual operations to override
76 virtual RootPtr CreateRoot(const String& rootElementName);
77 virtual bool TryCreateCustomElement(const String& elementName, ChildPtr& result);
78
79public: // Impl operations
80 Impl& GetImpl(void);
81 const Impl& GetImpl(void)const;
82
83private: // Impl usings
84 using Pimpl = PimplPtr<Impl>;
85
86private: // Impl fields
87 Pimpl pimpl;
88};
89
90} // 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:38
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:30
This class is used to define a structured data type for IO variables
Definition: TypeDefinition.hpp:27