PLCnext API Documentation  22.9.0.33
IChangeNavigator.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/DataTag.hpp"
9 
10 namespace Arp { namespace Plc { namespace Commons { namespace Meta
11 {
12 
17 {
18 public: // usings
20  using Ptr = std::shared_ptr<IChangeNavigator>;
21 
22 protected: // construction/destruction
24  IChangeNavigator(void) = default;
26  virtual ~IChangeNavigator(void) = default;
27 
28 public: // abstract operations
29 
33  virtual bool ChangeReference(const DataTag& dataTag) = 0;
34 
38  virtual bool ChangePointer(const DataTag& dataTag) = 0;
39 
40 private: // deleted methods (for non-copyable classes)
41  IChangeNavigator(const IChangeNavigator& arg) = delete;
42  IChangeNavigator& operator=(const IChangeNavigator& arg) = delete;
43 };
44 
45 }}}} // end of namespace Arp::Plc::Commons::Meta
Includes kind as well as instance browse name.
Definition: DataTag.hpp:25
Enables switching of counterparts during download change
Definition: IChangeNavigator.hpp:17
std::shared_ptr< IChangeNavigator > Ptr
std::shared_ptr to IChangeNavigator
Definition: IChangeNavigator.hpp:20
virtual ~IChangeNavigator(void)=default
Destructs this instance and frees all resources.
IChangeNavigator(void)=default
Constructs an IChangeNavigator instance.
virtual bool ChangePointer(const DataTag &dataTag)=0
Determines if a pointer DataTag must be swapped during download change
virtual bool ChangeReference(const DataTag &dataTag)=0
Determines if a reference DataTag must be swapped during download change
Root namespace for the PLCnext API