AusweisApp2
SingletonHelper.h
gehe zur Dokumentation dieser Datei
1 /*
2  * \brief Helper to introduce a Singleton.
3  * Be aware to use this helper in .cpp file only!
4  *
5  * \copyright Copyright (c) 2016-2020 Governikus GmbH & Co. KG, Germany
6  */
7 
8 #pragma once
9 
10 #include <QGlobalStatic>
11 
12 #define defineSingletonInstance(className, instanceName)\
13  namespace\
14  {\
15  class Singleton##className final\
16  : public className\
17  {\
18  public:\
19  using className::className;\
20  };\
21  }\
22 \
23  Q_GLOBAL_STATIC(Singleton##className, instanceName)
24 
25 #define defineSingletonInstanceImpl(className, instanceName, impl)\
26  defineSingletonInstance(impl, instanceName)\
27  namespace governikus\
28  {\
29  template<> className * singleton<className>()\
30  {\
31  return Instance;\
32  }\
33  }
34 
35 #define defineSingleton(className) defineSingletonInstance(className, Instance)
36 
37 #define defineSingletonImpl(className, impl) defineSingletonInstanceImpl(className, Instance, impl)