diff options
author | Giuseppe D'Angelo <giuseppe.dangelo@kdab.com> | 2015-01-23 19:11:24 +0100 |
---|---|---|
committer | Sean Harmer <sean.harmer@kdab.com> | 2015-01-24 14:21:23 +0100 |
commit | d6c88eb06d1a02c0aa208d0363fb8705fc551c94 (patch) | |
tree | ccb33b7419cc71e2776997b7d91d595939601837 /src/core | |
parent | 140edd93ba114f4c5c914c9959e3ee45b26dc763 (diff) |
QAspectFactory: code tidies
Change-Id: I0a16351a261858a9bc2f3ce4b536919b2267fc05
Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
Diffstat (limited to 'src/core')
-rw-r--r-- | src/core/aspects/qaspectfactory.cpp | 13 | ||||
-rw-r--r-- | src/core/aspects/qaspectfactory.h | 34 | ||||
-rw-r--r-- | src/core/aspects/qaspectfactory_p.h | 2 |
3 files changed, 26 insertions, 23 deletions
diff --git a/src/core/aspects/qaspectfactory.cpp b/src/core/aspects/qaspectfactory.cpp index 7277bcdc2..58a4d6bd6 100644 --- a/src/core/aspects/qaspectfactory.cpp +++ b/src/core/aspects/qaspectfactory.cpp @@ -42,22 +42,25 @@ #include "qaspectfactory.h" #include "qaspectfactory_p.h" +#include <QtGlobal> + #include <QDebug> QT_BEGIN_NAMESPACE namespace Qt3D { -QHash<QString, QAspectFactory::CreateFunction> QAspectFactoryPrivate::m_defaultFactories; +typedef QHash<QString, QAspectFactory::CreateFunction> defaultFactories_t; +Q_GLOBAL_STATIC(defaultFactories_t, defaultFactories) -void _qt3d_QAspectFactoryPrivate_addDefaultFactory(const QString &name, - QAspectFactory::CreateFunction factory) +QT3DCORESHARED_EXPORT void qt3d_QAspectFactoryPrivate_addDefaultFactory(const QString &name, + QAspectFactory::CreateFunction factory) { - QAspectFactoryPrivate::m_defaultFactories.insert(name, factory); + defaultFactories->insert(name, factory); } QAspectFactoryPrivate::QAspectFactoryPrivate() - : m_factories(m_defaultFactories) + : m_factories(*defaultFactories) { } diff --git a/src/core/aspects/qaspectfactory.h b/src/core/aspects/qaspectfactory.h index a08a9aef4..85c5e3869 100644 --- a/src/core/aspects/qaspectfactory.h +++ b/src/core/aspects/qaspectfactory.h @@ -70,8 +70,16 @@ public: QAspectFactory(); QAspectFactory(const QAspectFactory &other); ~QAspectFactory(); - QAspectFactory &operator=(const QAspectFactory &other); +#ifdef Q_COMPILER_RVALUE_REFS + QAspectFactory &operator=(QAspectFactory &&other) Q_DECL_NOTHROW + { + d.swap(other.d); + return *this; + } +#endif + + inline void swap(QAspectFactory &other) Q_DECL_NOTHROW { d.swap(other.d); } void addFactory(const QString &name, CreateFunction factory); QStringList availableFactories() const; @@ -82,32 +90,26 @@ private: QSharedDataPointer<QAspectFactoryPrivate> d; }; -QT3DCORESHARED_EXPORT void _qt3d_QAspectFactoryPrivate_addDefaultFactory(const QString &name, QAspectFactory::CreateFunction); - } // namespace Qt3D QT_END_NAMESPACE #define QT3D_REGISTER_NAMESPACED_ASPECT(name, AspectNamespace, AspectType) \ + QT_BEGIN_NAMESPACE \ + namespace Qt3D { \ + QT3DCORESHARED_EXPORT void qt3d_QAspectFactoryPrivate_addDefaultFactory(const QString &, QAspectFactory::CreateFunction); \ + } \ + QT_END_NAMESPACE \ namespace { \ - using namespace QT_PREPEND_NAMESPACE(Qt3D); \ - \ - void _qt3d_ ## AspectNamespace ## _ ## AspectType ## _registerFunction() \ + void qt3d_ ## AspectType ## _registerFunction() \ { \ - _qt3d_QAspectFactoryPrivate_addDefaultFactory(QStringLiteral(name), &QAspectFactory::functionHelper<AspectNamespace::AspectType>); \ + QT_PREPEND_NAMESPACE(Qt3D::qt3d_QAspectFactoryPrivate_addDefaultFactory)(QStringLiteral(name), &QAspectFactory::functionHelper<AspectNamespace::AspectType>); \ } \ \ - Q_CONSTRUCTOR_FUNCTION(_qt3d_ ## AspectNamespace ## _ ## AspectType ## _registerFunction) \ + Q_CONSTRUCTOR_FUNCTION(qt3d_ ## AspectType ## _registerFunction) \ } #define QT3D_REGISTER_ASPECT(name, AspectType) \ - namespace { \ - void _qt3d_ ## AspectType ## _registerFunction() \ - { \ - QT_PREPEND_NAMESPACE(Qt3D::_qt3d_QAspectFactoryPrivate_addDefaultFactory)(QStringLiteral(name), &QAspectFactory::functionHelper< ::AspectType>); \ - } \ - \ - } \ - Q_CONSTRUCTOR_FUNCTION(_qt3d_ ## AspectType ## _registerFunction) + QT3D_REGISTER_NAMESPACED_ASPECT(name, , AspectType) #endif // QT3D_QASPECTFACTORY_H diff --git a/src/core/aspects/qaspectfactory_p.h b/src/core/aspects/qaspectfactory_p.h index 72ee94596..ea4597268 100644 --- a/src/core/aspects/qaspectfactory_p.h +++ b/src/core/aspects/qaspectfactory_p.h @@ -57,8 +57,6 @@ class QAspectFactory; class QAspectFactoryPrivate : public QSharedData { public: - static QHash<QString, QAspectFactory::CreateFunction> m_defaultFactories; - QAspectFactoryPrivate(); QHash<QString, QAspectFactory::CreateFunction> m_factories; |