PLCnext API Documentation 25.0.2.69
ILibrary.hpp
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
7#ifndef ARP_USE_ARP_SYSTEM_ACF_COMMONS
8#include "Arp/Base/Acf/Commons/ILibrary.hpp"
9namespace Arp::System::Acf
10{
12}
13#else
14#include "Arp/System/Core/Arp.h"
15#include "Arp/System/Core/AppDomain.hpp"
16#include "Arp/System/Core/ArpVersion.hpp"
17
18namespace Arp { namespace System { namespace Acf
19{
20
21//forwards
22class IComponentFactory;
23
29class ILibrary
30{
31public: // typedefs
33 typedef ILibrary* Ptr;
34
35public: // prototyping of library entry point
41 typedef ILibrary& (*MainEntry)(AppDomain& appDomain);
42
43protected: // prototyping of library auxiliary operation
46 typedef void (*Main)(AppDomain& appDomain);
47
48public: // construction/destruction
50 ILibrary(void) = default;
52 virtual ~ILibrary(void) = default;
53
54public: // abstract operations
57 virtual IComponentFactory& GetComponentFactory(void) = 0;
58
60 virtual const ArpVersion& GetBuildVersion(void)const = 0;
61
62private: // deleted methods to avoid copying
63 ILibrary(const ILibrary& arg) = delete;
64 ILibrary& operator=(const ILibrary& arg) = delete;
65};
66
68// inline methods of class ILibrary
69
70}}} // end of namesapce Arp::System::Acf
71
72#endif // ndef ARP_USE_ARP_SYSTEM_ACF_COMMONS
Any Acf Library shall implement this interface.
Definition: ILibrary.hpp:20
virtual ~ILibrary(void)=default
The virtual default destructor.
ILibrary & operator=(ILibrary &&arg) noexcept=default
The move assignment operator.
virtual const ArpVersion & GetBuildVersion(void) const =0
Gets the version of the firmware or SDK which was used to build the shared library.
ILibrary(void)=default
The default constructor.
virtual IComponentFactory & GetComponentFactory(void)=0
Gets the component factory of this library to create instances of its provided components.
This is the namespace of the Application Component Framework.
Definition: ComponentBase.hpp:72
Root namespace for the PLCnext API