FluentUI/.template/stdafx.h.in
yxdy a44db97aa3
Some checks failed
Gallery App Build / Windows (push) Has been cancelled
Gallery App Build / macOS (push) Has been cancelled
Gallery App Build / Ubuntu (push) Has been cancelled
init
2025-02-12 10:31:20 +08:00

91 lines
6.9 KiB
C

#pragma once
template <typename T>
class Singleton {
public:
static T *getInstance();
};
template <typename T>
T *Singleton<T>::getInstance() {
static T *instance = new T();
return instance;
}
#define SINGLETON(Class) \
private: \
friend class Singleton<Class>; \
\
public: \
static Class *getInstance() { \
return Singleton<Class>::getInstance(); \
}
#define Q_PROPERTY_AUTO_P(TYPE, M) \
Q_PROPERTY(TYPE M MEMBER m_##M NOTIFY M##Changed) \
public: \
Q_SIGNAL void M##Changed(); \
void M(TYPE in_##M) { \
if (in_##M == m_##M) \
return; \
m_##M = in_##M; \
Q_EMIT M##Changed(); \
} \
TYPE M() const { \
return m_##M; \
} \
\
private: \
TYPE m_##M = nullptr;
#define Q_PROPERTY_READONLY_AUTO_P(TYPE, M) \
Q_PROPERTY(TYPE M READ M NOTIFY M##Changed FINAL) \
public: \
Q_SIGNAL void M##Changed(); \
void M(TYPE in_##M) { \
if (in_##M == m_##M) \
return; \
m_##M = in_##M; \
Q_EMIT M##Changed(); \
} \
TYPE M() const { \
return m_##M; \
} \
\
private: \
TYPE m_##M = nullptr;
#define Q_PROPERTY_AUTO(TYPE, M) \
Q_PROPERTY(TYPE M MEMBER m_##M NOTIFY M##Changed) \
public: \
Q_SIGNAL void M##Changed(); \
void M(const TYPE &in_##M) { \
if (in_##M == m_##M) \
return; \
m_##M = in_##M; \
Q_EMIT M##Changed(); \
} \
TYPE M() const { \
return m_##M; \
} \
\
private: \
TYPE m_##M;
#define Q_PROPERTY_READONLY_AUTO(TYPE, M) \
Q_PROPERTY(TYPE M READ M NOTIFY M##Changed FINAL) \
public: \
Q_SIGNAL void M##Changed(); \
void M(const TYPE &in_##M) { \
if (in_##M == m_##M) \
return; \
m_##M = in_##M; \
Q_EMIT M##Changed(); \
} \
TYPE M() const { \
return m_##M; \
} \
\
private: \
TYPE m_##M;