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());