Mercurial > projects > qtd
diff generator/cppimplgenerator.cpp @ 183:d3f4f14d43a5
fixes with QObjects
author | eldar |
---|---|
date | Fri, 03 Jul 2009 20:53:07 +0000 |
parents | ae06da58ec25 |
children | 7dd099050621 |
line wrap: on
line diff
--- a/generator/cppimplgenerator.cpp Fri Jul 03 16:07:26 2009 +0000 +++ b/generator/cppimplgenerator.cpp Fri Jul 03 20:53:07 2009 +0000 @@ -1321,6 +1321,13 @@ { QString linkName = java_class->name() + "_Link"; QString className = java_class->name(); + + if (cpp_shared) + s << "extern \"C\" typedef void (*qtd_pf_D_" << java_class->name() << "_delete)(void *d_ptr);" << endl + << "qtd_pf_D_" << java_class->name() << "_delete qtd_D_" << java_class->name() << "_delete;" << endl << endl; + else + s << "extern \"C\" void qtd_D_" << java_class->name() << "_delete(void *d_ptr);" << endl << endl; + s << "class " << linkName << " : public QObject, public QObjectUserData" << endl << "{" << endl << "public:" << endl @@ -1328,6 +1335,7 @@ << " virtual int qt_metacall(QMetaObject::Call, int, void **);" << endl << endl << " " << linkName << "(QObject *parent, void *d_ptr) : QObject() { _d_ptr = d_ptr; }" << endl + << " ~" << linkName << "() { qtd_D_" << className << "_delete(_d_ptr); }" << endl << " void *d_entity() const { return _d_ptr; }" << endl << endl << "private:" << endl @@ -1463,24 +1471,13 @@ void CppImplGenerator::writeShellDestructor(QTextStream &s, const AbstractMetaClass *java_class) { - - if (java_class->isQObject()) - if (cpp_shared) - s << "extern \"C\" typedef void (*qtd_pf_D_" << java_class->name() << "_delete)(void *d_ptr);" << endl - << "qtd_pf_D_" << java_class->name() << "_delete qtd_D_" << java_class->name() << "_delete;" << endl << endl; - else - s << "extern \"C\" void qtd_D_" << java_class->name() << "_delete(void *d_ptr);" << endl << endl; - s << shellClassName(java_class) << "::~" << shellClassName(java_class) << "()" << endl << "{" << endl; { +/* qtd Indentation indent(INDENT); - if (java_class->isQObject()) - s << INDENT << "if (QObject::parent())" << endl - << INDENT << " qtd_D_" << java_class->name() << "_delete(this->d_entity());" << endl; - -/* qtd + s << "#ifdef QT_DEBUG" << endl << INDENT << "if (m_vtable)" << endl << INDENT << " m_vtable->deref();" << endl