aboutsummaryrefslogtreecommitdiffstats
path: root/headergenerator.cpp
diff options
context:
space:
mode:
authorHugo Lima <hugo.lima@openbossa.org>2009-12-28 10:55:54 -0200
committerHugo Lima <hugo.lima@openbossa.org>2009-12-28 11:00:51 -0200
commite489074ccb5bf5b98564d9752907a5657506f4e4 (patch)
tree4845fb33b597b2fb2a5d32af355727169dfcfd52 /headergenerator.cpp
parent2fc991d0239cfa0111c5fa9629e183add4076bbf (diff)
Wrapper classes of QObjects store a pointer to their own meta object, a dynamic one.
Reviewed by Marcelo Lira <marcelo.lira@openbossa.org>
Diffstat (limited to 'headergenerator.cpp')
-rw-r--r--headergenerator.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/headergenerator.cpp b/headergenerator.cpp
index fd47a3bf4..a3391039d 100644
--- a/headergenerator.cpp
+++ b/headergenerator.cpp
@@ -71,6 +71,10 @@ void HeaderGenerator::generateClass(QTextStream& s, const AbstractMetaClass* met
s << metaClass->typeEntry()->include().toString() << endl << endl;
if (shouldGenerateCppWrapper(metaClass)) {
+
+ if (usePySideExtensions() && metaClass->isQObject())
+ s << "namespace PySide { class DynamicQMetaObject; }\n\n";
+
// Class
s << "class " << wrapperName;
s << " : public " << metaClass->qualifiedCppName();
@@ -83,14 +87,19 @@ void HeaderGenerator::generateClass(QTextStream& s, const AbstractMetaClass* met
foreach (AbstractMetaFunction *func, filterFunctions(metaClass))
writeFunction(s, func);
- if (usePySideExtensions() && metaClass->isQObject())
- s << INDENT << "virtual const QMetaObject* metaObject() const;\n";;
-
//destructor
s << INDENT << (metaClass->hasVirtualDestructor() ? "virtual " : "") << "~" << wrapperName << "();" << endl;
writeCodeSnips(s, metaClass->typeEntry()->codeSnips(), CodeSnip::Declaration, TypeSystem::NativeCode);
+ if (usePySideExtensions() && metaClass->isQObject()) {
+ s << "public:\n";
+ s << INDENT << "virtual const QMetaObject* metaObject() const;\n";;
+ s << INDENT << "virtual int qt_metacall(QMetaObject::Call call, int id, void** args);\n";;
+ s << "private:\n";
+ s << INDENT << "mutable PySide::DynamicQMetaObject* m_metaObject;\n";
+ }
+
s << "};" << endl << endl;
}