AusweisApp2/src/global/SingletonHelper.h

38 lines
861 B
C++

/*
* \brief Helper to introduce a Singleton.
* Be aware to use this helper in .cpp file only!
*
* \copyright Copyright (c) 2016-2019 Governikus GmbH & Co. KG, Germany
*/
#pragma once
#include <QGlobalStatic>
#define defineSingletonInstance(className, instanceName)\
namespace\
{\
class Singleton##className final\
: public className\
{\
public:\
using className::className;\
};\
}\
\
Q_GLOBAL_STATIC(Singleton##className, instanceName)
#define defineSingletonInstanceImpl(className, instanceName, impl)\
defineSingletonInstance(impl, instanceName)\
namespace governikus\
{\
template<> className * singleton<className>()\
{\
return Instance;\
}\
}
#define defineSingleton(className) defineSingletonInstance(className, Instance)
#define defineSingletonImpl(className, impl) defineSingletonInstanceImpl(className, Instance, impl)