comparison generator/cppimplgenerator.cpp @ 354:18bd68f586c6

removed superfluous destructors
author Max Samukha <maxter@spambox.com>
date Mon, 24 May 2010 23:43:30 +0300
parents 9fc85d7280ba
children 08c1ca7975ab
comparison
equal deleted inserted replaced
353:0a671b1382d7 354:18bd68f586c6
585 writeShellSignatures(s, java_class); 585 writeShellSignatures(s, java_class);
586 586
587 writeDefaultConstructedValues(s, java_class); 587 writeDefaultConstructedValues(s, java_class);
588 588
589 if (hasCustomDestructor(java_class)) */ 589 if (hasCustomDestructor(java_class)) */
590 if (!java_class->isQObject()) 590
591 writeFinalDestructor(s, java_class); 591 writeFinalDestructor(s, java_class);
592 592
593 if (java_class->isQObject()) { 593 if (java_class->isQObject()) {
594 writeQObjectEntity(s, java_class); 594 writeQObjectEntity(s, java_class);
595 writeSignalsHandling(s, java_class); 595 writeSignalsHandling(s, java_class);
596 } 596 }
1498 s << "}" << endl << endl; 1498 s << "}" << endl << endl;
1499 } 1499 }
1500 1500
1501 void CppImplGenerator::writeShellDestructor(QTextStream &s, const AbstractMetaClass *java_class) 1501 void CppImplGenerator::writeShellDestructor(QTextStream &s, const AbstractMetaClass *java_class)
1502 { 1502 {
1503 s << shellClassName(java_class) << "::~" 1503 QString className = shellClassName(java_class);
1504 << shellClassName(java_class) << "()" << endl 1504 s << className << "::~" << className << "() {" << endl;
1505 << "{" << endl; 1505
1506 { 1506 if (java_class->isQObject())
1507 //s << " std::cout << \"In shell destructor of " << java_class->name() << ", nativeId: \" << this << std::endl;"; 1507 s << " destroyEntity(this);";
1508 if (java_class->isQObject()) 1508 //else if (java_class->isPolymorphic())
1509 s << " destroyEntity(this);"; 1509 // s << " qtd_QtdObject_delete(dId);" << endl;
1510 } 1510
1511 s << "}" << endl << endl; 1511 s << "}" << endl << endl;
1512 } 1512 }
1513 1513
1514 void CppImplGenerator::writeCodeInjections(QTextStream &s, const AbstractMetaFunction *java_function, 1514 void CppImplGenerator::writeCodeInjections(QTextStream &s, const AbstractMetaFunction *java_function,
1515 const AbstractMetaClass *implementor, CodeSnip::Position position, 1515 const AbstractMetaClass *implementor, CodeSnip::Position position,
2383 } 2383 }
2384 } 2384 }
2385 2385
2386 void CppImplGenerator::writeFinalDestructor(QTextStream &s, const AbstractMetaClass *cls) 2386 void CppImplGenerator::writeFinalDestructor(QTextStream &s, const AbstractMetaClass *cls)
2387 { 2387 {
2388 if (cls->hasConstructors()) { 2388 if (cls->hasConstructors() && cls->isDestructorBase()) {
2389 s << INDENT << "extern \"C\" DLL_PUBLIC void qtd_" << cls->name() << "_destructor(void *ptr)" << endl 2389 s << INDENT << "extern \"C\" DLL_PUBLIC void qtd_" << cls->name() << "_delete(void* nativeId)" << endl
2390 << INDENT << "{" << endl 2390 << INDENT << "{" << endl
2391 << INDENT << " delete (" << shellClassName(cls) << " *)ptr;" << endl 2391 << INDENT << " delete (" << shellClassName(cls) << "*)nativeId;" << endl
2392 << INDENT << "}" << endl << endl; 2392 << INDENT << "}" << endl << endl;
2393 2393
2394 s << INDENT << "extern \"C\" DLL_PUBLIC void qtd_" << cls->name() << "_call_destructor(" << shellClassName(cls) << " *ptr)" << endl 2394 s << INDENT << "extern \"C\" DLL_PUBLIC void qtd_" << cls->name() << "_destroy(void* nativeId)" << endl
2395 << INDENT << "{" << endl 2395 << INDENT << "{" << endl
2396 << INDENT << " call_destructor(ptr);" << endl 2396 << INDENT << " call_destructor((" << shellClassName(cls) << "*)nativeId);" << endl
2397 << INDENT << "}" << endl << endl; 2397 << INDENT << "}" << endl << endl;
2398 } 2398 }
2399 } 2399 }
2400 2400
2401 void CppImplGenerator::writeFinalConstructor(QTextStream &s, 2401 void CppImplGenerator::writeFinalConstructor(QTextStream &s,