comparison generator/cppheadergenerator.cpp @ 259:515d6e1c7b10 lifetime

another iteration
author maxter
date Thu, 17 Sep 2009 16:28:41 +0000
parents 17b5e13364b7
children b5773ccab07d
comparison
equal deleted inserted replaced
258:1da8870e9a62 259:515d6e1c7b10
42 #include "cppheadergenerator.h" 42 #include "cppheadergenerator.h"
43 43
44 #include <QtCore/QDir> 44 #include <QtCore/QDir>
45 45
46 #include <qdebug.h> 46 #include <qdebug.h>
47 #include <iostream>
47 48
48 QString CppHeaderGenerator::fileNameForClass(const AbstractMetaClass *java_class) const 49 QString CppHeaderGenerator::fileNameForClass(const AbstractMetaClass *java_class) const
49 { 50 {
50 return QString("%1_shell.h").arg(java_class->name()); 51 return QString("%1_shell.h").arg(java_class->name());
51 } 52 }
173 if (!java_class->generateShellClass()) { 174 if (!java_class->generateShellClass()) {
174 s << "#endif" << endl << endl; 175 s << "#endif" << endl << endl;
175 priGenerator->addHeader(java_class->package(), fileNameForClass(java_class)); 176 priGenerator->addHeader(java_class->package(), fileNameForClass(java_class));
176 return ; 177 return ;
177 } 178 }
179
180 if (java_class->name() == "QFSFileEngine")
181 {
182 std::cout << java_class->typeEntry()->isObject() << std::endl;
183 std::cout << java_class->hasVirtualDestructor() << std::endl;
184 qFatal("Bo");
185 }
178 186
179 s << "class " << shellClassName(java_class) 187 s << "class " << shellClassName(java_class)
180 << " : public " << java_class->qualifiedCppName(); 188 << " : public " << java_class->qualifiedCppName();
181 if (java_class->isQObject()) 189 if (java_class->isQObject())
182 s << ", public QtD_QObjectEntity"; 190 s << ", public QtD_QObjectEntity";
183 else if (java_class->hasVirtualFunctions()) 191 else if (java_class->hasVirtualDestructor())
184 s << ", public QtD_Entity"; 192 s << ", public QtD_Entity";
185 s << endl << "{" << endl; 193 s << endl << "{" << endl;
186 194
187 if (java_class->isQObject()) { 195 if (java_class->isQObject()) {
188 s << "public:" << endl 196 s << "public:" << endl
206 foreach (const AbstractMetaFunction *function, java_class->functions()) { 214 foreach (const AbstractMetaFunction *function, java_class->functions()) {
207 if (function->isConstructor() && !function->isPrivate()) 215 if (function->isConstructor() && !function->isPrivate())
208 writeFunction(s, function); 216 writeFunction(s, function);
209 } 217 }
210 218
211 if (java_class->hasVirtualFunctions()) 219 if (java_class->typeEntry()->isObject() && java_class->hasVirtualDestructor())
212 s << " ~" << shellClassName(java_class) << "();" << endl << endl; 220 s << " ~" << shellClassName(java_class) << "();" << endl << endl;
213 221
214 222
215 // All functions in original class that should be reimplemented in shell class 223 // All functions in original class that should be reimplemented in shell class
216 AbstractMetaFunctionList shell_functions = java_class->functionsInShellClass(); 224 AbstractMetaFunctionList shell_functions = java_class->functionsInShellClass();