PLCnext API Documentation  22.9.0.33
IMetaComponent.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/IChangeNavigator.hpp"
9 #include "Arp/Plc/Commons/Meta/IDataInfoProvider.hpp"
10 
11 namespace Arp { namespace Plc { namespace Commons { namespace Meta
12 {
13 
14 class IDataNavigator;
15 
20 {
21 public: // usings
23  using Ptr = std::shared_ptr<IMetaComponent>;
24 
25 protected: // construction/destruction
27  IMetaComponent(void) = default;
29  virtual ~IMetaComponent(void) = default;
30 
31 public: // abstract operations
35  virtual IDataInfoProvider& GetDataInfoProvider(bool useBackgroundDomain) = 0;
36 
40  virtual IDataNavigator* GetDataNavigator(void) = 0;
41 
42 private: // deleted methods (for non-copyable classes)
43  IMetaComponent(const IMetaComponent& arg) = delete;
44  IMetaComponent& operator=(const IMetaComponent& arg) = delete;
45 };
46 
47 }}}} // end of namespace Arp::Plc::Commons::Meta
Interface to provide information about component roots
Definition: IDataInfoProvider.hpp:18
Interface for all components providing meta data
Definition: IMetaComponent.hpp:20
virtual IDataInfoProvider & GetDataInfoProvider(bool useBackgroundDomain)=0
Gets the IDataInfoProvider of this component.
std::shared_ptr< IMetaComponent > Ptr
std::shared_ptr to IMetaComponent
Definition: IMetaComponent.hpp:23
virtual IDataNavigator * GetDataNavigator(void)=0
Gets the specialized IDataNavigator of this component.
IMetaComponent(void)=default
Constructs an IMetaComponent instance.
virtual ~IMetaComponent(void)=default
Destructs this instance and frees all resources.
Root namespace for the PLCnext API