comparison generator/cppimplgenerator.cpp @ 293:8627891e4556 signals

QList updates
author eldar
date Fri, 13 Nov 2009 19:09:28 +0000
parents 19498f420252
children bb37b0ed94c9
comparison
equal deleted inserted replaced
292:19498f420252 293:8627891e4556
719 << "extern \"C\" DLL_PUBLIC void* qtd_" << java_class->name() << "_staticMetaObject() {" << endl 719 << "extern \"C\" DLL_PUBLIC void* qtd_" << java_class->name() << "_staticMetaObject() {" << endl
720 << " return (void*)&" << java_class->name() << "::staticMetaObject;" << endl 720 << " return (void*)&" << java_class->name() << "::staticMetaObject;" << endl
721 << "}" << endl; 721 << "}" << endl;
722 } 722 }
723 723
724 if (java_class->typeEntry()->isValue() && java_class->hasCloneOperator())
725 {
726 AbstractMetaFunction *ctor = java_class->copyConstructor();
727 if(ctor)
728 {
729 QString argName = ctor->arguments().at(0)->indexedName();
730 s << endl << endl
731 << "extern \"C\" DLL_PUBLIC void* qtd_" << java_class->name() << "_placed_copy(void* "
732 << argName << ", " << "void* place) {" << endl
733 << QString(" const %1& __qt_%2 = (const %1& ) *(%1 *)%2;").arg(java_class->name()).arg(argName) << endl;
734
735 writeFinalConstructor(s, ctor, "result", "original", "(place)");
736 s << "}";
737 }
738 }
739
724 s << endl << endl; 740 s << endl << endl;
725 741
726 priGenerator->addSource(java_class->package(), fileNameForClass(java_class)); 742 priGenerator->addSource(java_class->package(), fileNameForClass(java_class));
727 } 743 }
728 744
2338 } 2354 }
2339 2355
2340 void CppImplGenerator::writeFinalConstructor(QTextStream &s, 2356 void CppImplGenerator::writeFinalConstructor(QTextStream &s,
2341 const AbstractMetaFunction *java_function, 2357 const AbstractMetaFunction *java_function,
2342 const QString &qt_object_name, 2358 const QString &qt_object_name,
2343 const QString &java_object_name) 2359 const QString &java_object_name,
2360 const QString &place)
2344 { 2361 {
2345 const AbstractMetaClass *cls = java_function->ownerClass(); 2362 const AbstractMetaClass *cls = java_function->ownerClass();
2346 AbstractMetaArgumentList arguments = java_function->arguments(); 2363 AbstractMetaArgumentList arguments = java_function->arguments();
2347 QString className = cls->typeEntry()->qualifiedCppName(); 2364 QString className = cls->typeEntry()->qualifiedCppName();
2348 2365
2349 bool hasShellClass = cls->generateShellClass(); 2366 bool hasShellClass = cls->generateShellClass();
2350 2367
2351 s << INDENT << shellClassName(cls) << " *" << qt_object_name 2368 s << INDENT << shellClassName(cls) << " *" << qt_object_name
2352 << " = new " << shellClassName(cls) 2369 << " = new " << place << shellClassName(cls)
2353 << "("; 2370 << "(";
2354 writeFunctionCallArguments(s, java_function, "__qt_"); 2371 writeFunctionCallArguments(s, java_function, "__qt_");
2355 s << ");" << endl; 2372 s << ");" << endl;
2356 s << INDENT << "return (void *) " << qt_object_name << ";" << endl; // qtd 2373 s << INDENT << "return (void *) " << qt_object_name << ";" << endl; // qtd
2357 2374