PLCnext API Documentation 25.0.2.69
Singleton.hxx
1
2//
3// Copyright Phoenix Contact GmbH & Co. KG
4//
6#pragma once
8#include <memory>
9namespace Arp { namespace Base { namespace Core
10{
11
21template <class T>
23{
24protected: // usings
27
28private: // usings
29 using Instance = T;
30 using Ptr = std::unique_ptr<T>;
31
32protected: // construction/destruction
33 Singleton(void);
34 Singleton(const Singleton& arg) = delete;
35 Singleton& operator=(const Singleton& arg) = delete;
36 Singleton(Singleton&& arg) = delete;
37 Singleton& operator=(Singleton&& arg) = delete;
39
40public: // static operations
41 template<class ...Args>
42 static Instance& CreateInstance(Args&& ... args);
43 static bool IsCreated(void);
44 static Instance& GetInstance(void);
45 static void DisposeInstance(void);
46
47public: // deprecated operations
48 ARP_DEPRECATED("Use Singleton<T>::GetInstance() or Singleton<T>::IsCreated() yet.")
49 static Instance* GetInstancePtr(void);
50
51protected: // static methods
52 static Ptr& GetStaticInstancePtr(void);
53
54 ARP_DEPRECATED("Do not use this operation any more.")
55 static void SetInstance(T* pInstance);
56};
57
58}}} // end of namespace Arp::Base::Core
59
60namespace Arp {
63}
64#include "Arp/Base/Core/Detail/Singleton.ipp"
This class implements the singleton pattern.
Definition: Singleton.hxx:23
static void DisposeInstance(void)
Disposes this singleton instance.
Definition: Singleton.ipp:66
static void SetInstance(T *pInstance)
DEPRECATED.
Definition: Singleton.ipp:100
~Singleton(void)
The protected destructor.
static Instance & CreateInstance(Args &&... args)
Creates this singleton instance.
Definition: Singleton.ipp:31
static Instance & GetInstance(void)
Gets a reference of the singleton instance.
Definition: Singleton.ipp:53
static bool IsCreated(void)
Determines if this singleton instance is create yet.
Definition: Singleton.ipp:44
Singleton(void)
The protected default constructor.
Root namespace for the PLCnext API