summaryrefslogtreecommitdiffstats
path: root/src/corelib/kernel/qmetatype_p.h
diff options
context:
space:
mode:
authorStephen Kelly <stephen.kelly@kdab.com>2012-04-01 20:31:55 +0200
committerQt by Nokia <qt-info@nokia.com>2012-07-01 15:07:10 +0200
commit14c7bb72b98ef39a9118ae0a8e48a3ccd58db07d (patch)
treec764b32a9106419310f2f89618936ba2f3825b90 /src/corelib/kernel/qmetatype_p.h
parent2988c44f7675ba3c4a4b28690db467ba0e40469d (diff)
Store the QMetaObject with the QMetaType.
This will allow conversion between pointers to compatible QObject derived types. Change-Id: I19e08934571fb3f1b91e594892214041fe5f6a11 Reviewed-by: Jędrzej Nowacki <jedrzej.nowacki@nokia.com>
Diffstat (limited to 'src/corelib/kernel/qmetatype_p.h')
-rw-r--r--src/corelib/kernel/qmetatype_p.h13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/corelib/kernel/qmetatype_p.h b/src/corelib/kernel/qmetatype_p.h
index cffc45c988..126acde8fa 100644
--- a/src/corelib/kernel/qmetatype_p.h
+++ b/src/corelib/kernel/qmetatype_p.h
@@ -130,6 +130,7 @@ public:
QMetaType::Destructor destructor;
int size;
quint32 flags; // same as QMetaType::TypeFlags
+ const QMetaObject *metaObject;
};
#ifndef QT_NO_DATASTREAM
@@ -147,6 +148,12 @@ public:
QT_METATYPE_INTERFACE_INIT_EMPTY_DATASTREAM_IMPL(Type)
#endif
+#ifndef QT_BOOTSTRAPPED
+#define METAOBJECT_DELEGATE(Type) (QtPrivate::MetaObjectForType<Type>::value())
+#else
+#define METAOBJECT_DELEGATE(Type) 0
+#endif
+
#define QT_METATYPE_INTERFACE_INIT_IMPL(Type, DATASTREAM_DELEGATE) \
{ \
/*creator*/(qMetaTypeCreateHelper<Type>), \
@@ -155,7 +162,8 @@ public:
/*constructor*/(qMetaTypeConstructHelper<Type>), \
/*destructor*/(qMetaTypeDestructHelper<Type>), \
/*size*/(QTypeInfo<Type>::sizeOf), \
- /*flags*/QtPrivate::QMetaTypeTypeFlags<Type>::Flags \
+ /*flags*/QtPrivate::QMetaTypeTypeFlags<Type>::Flags, \
+ /*metaObject*/METAOBJECT_DELEGATE(Type) \
}
@@ -179,7 +187,8 @@ public:
/*constructor*/ 0, \
/*destructor*/ 0, \
/*size*/ 0, \
- /*flags*/ 0 \
+ /*flags*/ 0, \
+ /*metaObject*/ 0 \
}
namespace QtMetaTypePrivate {