PLCnext API Documentation  21.0.0.35466
IMetaLibrary.hpp
1 //
3 // Copyright PHOENIX CONTACT Electronics GmbH
4 //
6 #pragma once
7 #include "Arp/System/Core/Arp.h"
8 #include "Arp/Plc/Commons/Meta/ITypeInfoProvider.hpp"
9 #include "Arp/Plc/Commons/Meta/IChangeNavigator.hpp"
10 
11 namespace Arp { namespace Plc { namespace Commons { namespace Meta
12 {
13 
14 using namespace Arp;
15 
19 {
20 public: // typedefs
22  typedef std::shared_ptr<IMetaLibrary> Ptr;
23 
24 protected: // construction/destruction
26  IMetaLibrary(void) = default;
28  virtual ~IMetaLibrary(void) = default;
29 
30 public: // abstract operations
33  virtual const char* GetNamespace(void) = 0;
34 
38  virtual ITypeInfoProvider& GetTypeInfoProvider(bool useBackgroundDomain) = 0;
39 
42  virtual IChangeNavigator* GetChangeNavigator(void) = 0;
43 
44 private: // deleted methods (for non-copyable classes)
45  IMetaLibrary(const IMetaLibrary& arg) = delete;
46  IMetaLibrary& operator=(const IMetaLibrary& arg) = delete;
47 };
48 
49 }}}} // end of namespace Arp::Plc::Commons::Meta
Interface to type information of a library
Definition: ITypeInfoProvider.hpp:24
Interface for all libraries providing meta data
Definition: IMetaLibrary.hpp:18
std::shared_ptr< IMetaLibrary > Ptr
std::shared_ptr to IMetaLibrary
Definition: IMetaLibrary.hpp:22
Root namespace for the PLCnext API
Enables switching of counterparts during download change
Definition: IChangeNavigator.hpp:16