PLCnext API Documentation  20.6.0.30321
ProgramComponentBase.hpp
1 //
3 // Copyright PHOENIX CONTACT Electronics GmbH
4 //
6 #pragma once
7 #include "Arp/System/Core/Arp.h"
8 #include "Arp/System/Acf/ComponentBase.hpp"
9 #include "Arp/System/Acf/IApplication.hpp"
10 #include "Arp/Plc/Commons/Esm/IProgramComponent.hpp"
11 #include "Arp/Plc/Commons/Esm/ProgramProviderBase.hpp"
12 #include "Arp/Plc/Commons/Meta/IMetaComponent.hpp"
13 #include "Arp/Plc/Commons/Meta/DataInfoProvider.hpp"
14 
15 namespace Arp { namespace Plc { namespace Commons { namespace Esm
16 {
17 
18 using namespace Arp;
19 using namespace Arp::System::Acf;
20 using namespace Arp::Plc::Commons::Meta;
21 
23 {
24 public: // construction/destruction
26  ProgramComponentBase(const char* libraryNamespace, ProgramProviderBase& programProvider);
28  ~ProgramComponentBase(void) = default;
29 
30 public: // IComponent operations
31  void Initialize(void);
32  void SetupConfig(void);
33  void ResetConfig(void);
34 
35 public: // IMetaComponentBase operations
36  IProgramProvider& GetProgramProvider(bool useBackgroundDomain)override;
37  IDataInfoProvider& GetDataInfoProvider(bool useBackgroundDomain)override;
38  IDataNavigator* GetDataNavigator(void)override;
39 
40 protected: // virtual operation to override
41  virtual void RegisterComponentPorts(void);
42 
43 private: // deleted methods
45  ProgramComponentBase(const ProgramComponentBase& arg) = delete;
47  ProgramComponentBase& operator=(const ProgramComponentBase& arg) = delete;
48 
49 protected: // fields
50  DataInfoProvider dataInfoProvider;
51 
52 private: // fields
53  ProgramProviderBase& programProvider;
54 };
55 
57 // inline methods of class ProgramComponentBase
58 
59 
60 inline IProgramProvider& ProgramComponentBase::GetProgramProvider(bool /*useBackgroundDomain*/)
61 {
62  return this->programProvider;
63 }
64 
65 
66 
67 inline IDataInfoProvider& ProgramComponentBase::GetDataInfoProvider(bool useBackgroundDomain)
68 {
69  return useBackgroundDomain ? this->dataInfoProvider.GetBackgroundProvider() : this->dataInfoProvider;
70 }
71 
73 {
74  return nullptr;
75 }
76 
77 
78 }}}} // end of namespace Arp::Plc::Commons::Esm
Namespace for the Meta component
Interface to realizes an program provider.
Definition: IProgramProvider.hpp:16
Definition: DataInfoProvider.hpp:30
Definition: ProgramComponentBase.hpp:22
Root namespace for the PLCnext API
Definition: IMetaComponent.hpp:16
IDataNavigator * GetDataNavigator(void) override
Gets the specialized IDataNavigator of this component.
Definition: ProgramComponentBase.hpp:72
Interface to realizes an access to a plc program provider.
Definition: IProgramComponent.hpp:17
Definition: IDataInfoProvider.hpp:14
Namespace of the Application Component Framework (ACF)
IProgramProvider & GetProgramProvider(bool useBackgroundDomain) override
Returns the program provider of this component.
Definition: ProgramComponentBase.hpp:60
Definition: ProgramProviderBase.hpp:15