PLCnext API Documentation 25.6.0.37
TicStructDefinition.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/BitSize.hpp"
11#include "Arp/Plc/Meta/Commons/Io/TypeDefinition.hpp"
12
13namespace Arp::Io::Commons::Configuration
14{
15
16// Fowards
17class TicFieldDefinition;
18
24class ARP_EXPORT TicStructDefinition : public TicBase
25{
26public: // Impl forward declaration
27 class Impl;
28
29public: // usings
30 using Ptr = std::shared_ptr<TicStructDefinition>;
33
34public: // construction
36
37 // canonical construction/destruction/assignment
38 TicStructDefinition(const TicStructDefinition& arg) = delete;
40 TicStructDefinition& operator=(const TicStructDefinition& arg) = delete;
42 ~TicStructDefinition(void)override;
43
44public: // operators
45
46public: // static operations
47 static const char* GetTicElementName(void);
48
49public: // setter/getter operations
50 const String& GetTypeName()const;
51 BitSize GetLength()const;
52
53public: // operations
54 TypeDefinition CreateTypeDefinition()const;
55
56 bool TryReadAttribute(TicReader& reader, const String& attributeName)final;
57 bool TryCreateElement(const String& elementName, ChildPtr& result)final;
58 void OnReadEnd(void)override;
59
60public: // internal operations
61 Impl& GetImpl(void);
62 const Impl& GetImpl(void)const;
63
64private: // Impl usings
65 using Pimpl = PimplPtr<Impl>;
66
67private: // Impl fields
68 Pimpl pimpl;
69};
70
71} // 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 the content of Tic files.
Definition: TicReader.hpp:24
This class is used to read a entity of the type 'IO:StructDefinition' from a TIC file.
Definition: TicStructDefinition.hpp:25
TicStructDefinition & operator=(TicStructDefinition &&arg) noexcept
The default move-assignment operator.
TicStructDefinition(TicStructDefinition &&arg) noexcept
The default move constructor.
~TicStructDefinition(void) override
The default destructor.
This class represents a size of a variable
Definition: BitSize.hpp:16
This class is used to define a structured data type for IO variables
Definition: TypeDefinition.hpp:27