Mercurial > projects > qtd
diff generator/cppheadergenerator.cpp @ 260:b5773ccab07d lifetime
closer
author | maxter |
---|---|
date | Fri, 18 Sep 2009 18:52:03 +0000 |
parents | 515d6e1c7b10 |
children | 5bcfe9e7db7f |
line wrap: on
line diff
--- a/generator/cppheadergenerator.cpp Thu Sep 17 16:28:41 2009 +0000 +++ b/generator/cppheadergenerator.cpp Fri Sep 18 18:52:03 2009 +0000 @@ -176,19 +176,12 @@ priGenerator->addHeader(java_class->package(), fileNameForClass(java_class)); return ; } - - if (java_class->name() == "QFSFileEngine") - { - std::cout << java_class->typeEntry()->isObject() << std::endl; - std::cout << java_class->hasVirtualDestructor() << std::endl; - qFatal("Bo"); - } s << "class " << shellClassName(java_class) << " : public " << java_class->qualifiedCppName(); if (java_class->isQObject()) s << ", public QtD_QObjectEntity"; - else if (java_class->hasVirtualDestructor()) + else if (java_class->isPolymorphic()) s << ", public QtD_Entity"; s << endl << "{" << endl; @@ -216,10 +209,9 @@ writeFunction(s, function); } - if (java_class->typeEntry()->isObject() && java_class->hasVirtualDestructor()) - s << " ~" << shellClassName(java_class) << "();" << endl << endl; + if (java_class->isPolymorphic()) + s << " ~" << shellClassName(java_class) << "();" << endl << endl; - // All functions in original class that should be reimplemented in shell class AbstractMetaFunctionList shell_functions = java_class->functionsInShellClass(); foreach (const AbstractMetaFunction *function, shell_functions) { @@ -255,8 +247,12 @@ */ writeInjectedCode(s, java_class); - s << "};" << endl << endl - << "#endif // " << include_block << endl; + s << "};" << endl << endl; + + if (!java_class->isQObject() && java_class->isPolymorphic() && java_class->baseClass()) + s << "extern \"C\" DLL_PUBLIC void* qtd_" << java_class->rootClass()->name() << "_dId(void *nativeId);" << endl; + + s << "#endif // " << include_block << endl; priGenerator->addHeader(java_class->package(), fileNameForClass(java_class)); priGenerator->addClass(java_class->package(), java_class->name());