mirror of
https://github.com/lubosz/overte.git
synced 2025-08-17 00:41:23 +02:00
Changed Singleton Dependency macro and tweaked DM
This commit is contained in:
parent
9c038d33b9
commit
f2847cec06
1 changed files with 11 additions and 21 deletions
|
@ -16,27 +16,23 @@
|
||||||
|
|
||||||
#include <typeinfo>
|
#include <typeinfo>
|
||||||
|
|
||||||
#define SINGLETON_DEPENDENCY(T, NEED_SET)\
|
#define SINGLETON_DEPENDENCY \
|
||||||
public:\
|
private: \
|
||||||
typedef QSharedPointer<T> SharedPointer;\
|
virtual void customDeleter() { \
|
||||||
typedef QWeakPointer<T> WeakPointer;\
|
QObject* thisObject = dynamic_cast<QObject*>(this); \
|
||||||
private:\
|
if (thisObject) { \
|
||||||
static const bool REQUIRE_SET = NEED_SET;\
|
thisObject->deleteLater(); \
|
||||||
void customDeleter() {\
|
} else { \
|
||||||
QObject* thisObject = dynamic_cast<QObject*>(this);\
|
delete this; \
|
||||||
if (thisObject) {\
|
} \
|
||||||
thisObject->deleteLater();\
|
} \
|
||||||
} else {\
|
|
||||||
delete this;\
|
|
||||||
}\
|
|
||||||
}\
|
|
||||||
friend class DependencyManager;
|
friend class DependencyManager;
|
||||||
|
|
||||||
class QObject;
|
class QObject;
|
||||||
|
|
||||||
// usage:
|
// usage:
|
||||||
// T* instance = DependencyManager::get<T>();
|
// T* instance = DependencyManager::get<T>();
|
||||||
// T* instance = DependencyManager::set<T, Type1, Type2, ...>(Args... args);
|
// T* instance = DependencyManager::set<T>(Args... args);
|
||||||
// T* instance = DependencyManager::destroy<T>();
|
// T* instance = DependencyManager::destroy<T>();
|
||||||
class DependencyManager {
|
class DependencyManager {
|
||||||
public:
|
public:
|
||||||
|
@ -56,12 +52,6 @@ private:
|
||||||
|
|
||||||
template <typename T>
|
template <typename T>
|
||||||
QSharedPointer<T> DependencyManager::get() {
|
QSharedPointer<T> DependencyManager::get() {
|
||||||
static bool requireSet = !T::REQUIRE_SET;
|
|
||||||
if (requireSet) {
|
|
||||||
set<T>();
|
|
||||||
requireSet = false;
|
|
||||||
}
|
|
||||||
|
|
||||||
return storage<T>();
|
return storage<T>();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue