comparison generator/cppheadergenerator.cpp @ 260:b5773ccab07d lifetime

closer
author maxter
date Fri, 18 Sep 2009 18:52:03 +0000
parents 515d6e1c7b10
children 5bcfe9e7db7f
comparison
equal deleted inserted replaced
259:515d6e1c7b10 260:b5773ccab07d
174 if (!java_class->generateShellClass()) { 174 if (!java_class->generateShellClass()) {
175 s << "#endif" << endl << endl; 175 s << "#endif" << endl << endl;
176 priGenerator->addHeader(java_class->package(), fileNameForClass(java_class)); 176 priGenerator->addHeader(java_class->package(), fileNameForClass(java_class));
177 return ; 177 return ;
178 } 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 }
186 179
187 s << "class " << shellClassName(java_class) 180 s << "class " << shellClassName(java_class)
188 << " : public " << java_class->qualifiedCppName(); 181 << " : public " << java_class->qualifiedCppName();
189 if (java_class->isQObject()) 182 if (java_class->isQObject())
190 s << ", public QtD_QObjectEntity"; 183 s << ", public QtD_QObjectEntity";
191 else if (java_class->hasVirtualDestructor()) 184 else if (java_class->isPolymorphic())
192 s << ", public QtD_Entity"; 185 s << ", public QtD_Entity";
193 s << endl << "{" << endl; 186 s << endl << "{" << endl;
194 187
195 if (java_class->isQObject()) { 188 if (java_class->isQObject()) {
196 s << "public:" << endl 189 s << "public:" << endl
214 foreach (const AbstractMetaFunction *function, java_class->functions()) { 207 foreach (const AbstractMetaFunction *function, java_class->functions()) {
215 if (function->isConstructor() && !function->isPrivate()) 208 if (function->isConstructor() && !function->isPrivate())
216 writeFunction(s, function); 209 writeFunction(s, function);
217 } 210 }
218 211
219 if (java_class->typeEntry()->isObject() && java_class->hasVirtualDestructor()) 212 if (java_class->isPolymorphic())
220 s << " ~" << shellClassName(java_class) << "();" << endl << endl; 213 s << " ~" << shellClassName(java_class) << "();" << endl << endl;
221 214
222
223 // All functions in original class that should be reimplemented in shell class 215 // All functions in original class that should be reimplemented in shell class
224 AbstractMetaFunctionList shell_functions = java_class->functionsInShellClass(); 216 AbstractMetaFunctionList shell_functions = java_class->functionsInShellClass();
225 foreach (const AbstractMetaFunction *function, shell_functions) { 217 foreach (const AbstractMetaFunction *function, shell_functions) {
226 if(notWrappedYet(function)) 218 if(notWrappedYet(function))
227 continue; 219 continue;
253 /* qtd 245 /* qtd
254 writeVariablesSection(s, java_class); 246 writeVariablesSection(s, java_class);
255 */ 247 */
256 writeInjectedCode(s, java_class); 248 writeInjectedCode(s, java_class);
257 249
258 s << "};" << endl << endl 250 s << "};" << endl << endl;
259 << "#endif // " << include_block << endl; 251
252 if (!java_class->isQObject() && java_class->isPolymorphic() && java_class->baseClass())
253 s << "extern \"C\" DLL_PUBLIC void* qtd_" << java_class->rootClass()->name() << "_dId(void *nativeId);" << endl;
254
255 s << "#endif // " << include_block << endl;
260 256
261 priGenerator->addHeader(java_class->package(), fileNameForClass(java_class)); 257 priGenerator->addHeader(java_class->package(), fileNameForClass(java_class));
262 priGenerator->addClass(java_class->package(), java_class->name()); 258 priGenerator->addClass(java_class->package(), java_class->name());
263 } 259 }
264 260