summaryrefslogtreecommitdiffstats
path: root/src/core/aspects/qabstractaspect.h
diff options
context:
space:
mode:
authorKevin Ottens <kevin.ottens@kdab.com>2015-12-01 12:02:19 +0100
committerKevin Ottens <kevin.ottens@kdab.com>2015-12-01 14:23:52 +0000
commitc509c85b63cb062aaf7b1a3044dcbb6d80610c89 (patch)
tree08ff2b0922773aa0cb610722fee57ab7ecb33a44 /src/core/aspects/qabstractaspect.h
parent40c2346f137623629983de94ffcb045f5f8ce35e (diff)
Move the QT3D_REGISTER_*_ASPECT macros to QAbstractAspect
First step toward turning QAspectFactory into a private class. Change-Id: Ia62aae820fde1ab3cee0c5852d10981c6b9f4970 Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Diffstat (limited to 'src/core/aspects/qabstractaspect.h')
-rw-r--r--src/core/aspects/qabstractaspect.h26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/core/aspects/qabstractaspect.h b/src/core/aspects/qabstractaspect.h
index a0b298cb2..55ded6e5b 100644
--- a/src/core/aspects/qabstractaspect.h
+++ b/src/core/aspects/qabstractaspect.h
@@ -109,4 +109,30 @@ void QAbstractAspect::registerBackendType(const QBackendNodeFunctorPtr &functor)
QT_END_NAMESPACE
+#define QT3D_REGISTER_NAMESPACED_ASPECT(name, AspectNamespace, AspectType) \
+ QT_BEGIN_NAMESPACE \
+ namespace Qt3DCore { \
+ typedef QAbstractAspect *(*AspectCreateFunction)(QObject *); \
+ QT3DCORESHARED_EXPORT void qt3d_QAspectFactory_addDefaultFactory(const QString &, AspectCreateFunction); \
+ } \
+ QT_END_NAMESPACE \
+ namespace { \
+ QAbstractAspect *qt3d_ ## AspectType ## _createFunction(QObject *parent) \
+ { \
+ using namespace AspectNamespace; \
+ return new AspectType(parent); \
+ } \
+ \
+ void qt3d_ ## AspectType ## _registerFunction() \
+ { \
+ using namespace AspectNamespace; \
+ qt3d_QAspectFactory_addDefaultFactory(QStringLiteral(name), qt3d_ ## AspectType ## _createFunction); \
+ } \
+ \
+ Q_CONSTRUCTOR_FUNCTION(qt3d_ ## AspectType ## _registerFunction) \
+ }
+
+#define QT3D_REGISTER_ASPECT(name, AspectType) \
+ QT3D_REGISTER_NAMESPACED_ASPECT(name, QT_PREPEND_NAMESPACE(Qt3DCore), AspectType)
+
#endif // QT3DCORE_ABSTRACTASPECT_H