summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGiuseppe D'Angelo <giuseppe.dangelo@kdab.com>2015-01-23 19:11:24 +0100
committerSean Harmer <sean.harmer@kdab.com>2015-01-24 14:21:23 +0100
commitd6c88eb06d1a02c0aa208d0363fb8705fc551c94 (patch)
treeccb33b7419cc71e2776997b7d91d595939601837 /src
parent140edd93ba114f4c5c914c9959e3ee45b26dc763 (diff)
QAspectFactory: code tidies
Change-Id: I0a16351a261858a9bc2f3ce4b536919b2267fc05 Reviewed-by: Kevin Ottens <kevin.ottens@kdab.com>
Diffstat (limited to 'src')
-rw-r--r--src/core/aspects/qaspectfactory.cpp13
-rw-r--r--src/core/aspects/qaspectfactory.h34
-rw-r--r--src/core/aspects/qaspectfactory_p.h2
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;