Mercurial > projects > qtd
comparison generator/cppimplgenerator.cpp @ 288:f9559a957be9 signals
new signals and slots implementation
author | eldar |
---|---|
date | Sun, 08 Nov 2009 19:28:01 +0000 |
parents | 7243f9ed2307 |
children | 19498f420252 |
comparison
equal
deleted
inserted
replaced
287:b6984b290e46 | 288:f9559a957be9 |
---|---|
590 | 590 |
591 if (hasCustomDestructor(java_class)) */ | 591 if (hasCustomDestructor(java_class)) */ |
592 if (!java_class->isQObject()) | 592 if (!java_class->isQObject()) |
593 writeFinalDestructor(s, java_class); | 593 writeFinalDestructor(s, java_class); |
594 | 594 |
595 if (java_class->isQObject()) | 595 if (java_class->isQObject()) { |
596 writeQObjectEntity(s, java_class); | |
596 writeSignalsHandling(s, java_class); | 597 writeSignalsHandling(s, java_class); |
597 | 598 } |
598 if (shellClass) { | 599 if (shellClass) { |
599 foreach (AbstractMetaFunction *function, java_class->functions()) { | 600 foreach (AbstractMetaFunction *function, java_class->functions()) { |
600 if (function->isConstructor() && !function->isPrivate()) | 601 if (function->isConstructor() && !function->isPrivate()) |
601 writeShellConstructor(s, function); | 602 writeShellConstructor(s, function); |
602 } | 603 } |
1215 | 1216 |
1216 s << "class " << entityName << " : public QObject, public QtD_QObjectEntity" << endl | 1217 s << "class " << entityName << " : public QObject, public QtD_QObjectEntity" << endl |
1217 << "{" << endl | 1218 << "{" << endl |
1218 << "public:" << endl | 1219 << "public:" << endl |
1219 << " Q_OBJECT_CHECK" << endl | 1220 << " Q_OBJECT_CHECK" << endl |
1220 << " virtual int qt_metacall(QMetaObject::Call, int, void **);" << endl << endl | 1221 << "// virtual int qt_metacall(QMetaObject::Call, int, void **);" << endl << endl |
1221 | 1222 |
1222 << " " << entityName << "(QObject *qObject, void *dId) : QObject(), QtD_QObjectEntity(qObject, dId) {}" << endl | 1223 << " " << entityName << "(QObject *qObject, void *dId) : QObject(), QtD_QObjectEntity(qObject, dId) {}" << endl |
1223 << "};" << endl << endl; | 1224 << "};" << endl << endl; |
1224 | 1225 |
1225 // QObject_Link::qt_metacall() | 1226 /* // QObject_Link::qt_metacall() |
1226 s << "int " << entityName << "::qt_metacall(QMetaObject::Call _c, int _id, void **_a)" << endl | 1227 s << "int " << entityName << "::qt_metacall(QMetaObject::Call _c, int _id, void **_a)" << endl |
1227 << "{" << endl | 1228 << "{" << endl |
1228 << " _id = QObject::qt_metacall(_c, _id, _a);" << endl | 1229 << " _id = QObject::qt_metacall(_c, _id, _a);" << endl |
1229 << " if (_id < 0 || _c != QMetaObject::InvokeMetaMethod)" << endl | 1230 << " if (_id < 0 || _c != QMetaObject::InvokeMetaMethod)" << endl |
1230 << " return _id;" << endl | 1231 << " return _id;" << endl |
1231 // << " Q_ASSERT(_id < 2);" << endl | |
1232 << " emit_callbacks_" << java_class->name() << "[_id](dId, _a);" << endl | 1232 << " emit_callbacks_" << java_class->name() << "[_id](dId, _a);" << endl |
1233 << " return -1;" << endl | 1233 << " return -1;" << endl |
1234 << "}" << endl << endl; | 1234 << "}" << endl << endl; |
1235 | 1235 */ |
1236 s << "extern \"C\" DLL_PUBLIC void qtd_" << className << "_createEntity(void *nativeId, void* dId)" << endl | 1236 s << "extern \"C\" DLL_PUBLIC void qtd_" << className << "_createEntity(void *nativeId, void* dId)" << endl |
1237 << "{" << endl | 1237 << "{" << endl |
1238 << " new " << entityName << "((QObject*)nativeId, dId);" << endl | 1238 << " new " << entityName << "((QObject*)nativeId, dId);" << endl |
1239 << "}" << endl << endl; | 1239 << "}" << endl << endl; |
1240 } | 1240 } |
1280 << " if (!strcmp(_clname, \"" << shellClassName(java_class) << "\"))" << endl | 1280 << " if (!strcmp(_clname, \"" << shellClassName(java_class) << "\"))" << endl |
1281 << " return static_cast<void*>(const_cast<" << shellClassName(java_class) << "*>(this));" << endl | 1281 << " return static_cast<void*>(const_cast<" << shellClassName(java_class) << "*>(this));" << endl |
1282 << " return " << java_class->qualifiedCppName() << "::qt_metacast(_clname);" << endl | 1282 << " return " << java_class->qualifiedCppName() << "::qt_metacast(_clname);" << endl |
1283 << "}" << endl << endl; | 1283 << "}" << endl << endl; |
1284 */ | 1284 */ |
1285 | 1285 /* |
1286 s << "int " << shellClassName(java_class) << "::qt_metacall(QMetaObject::Call _c, int _id, void **_a)" << endl | 1286 s << "int " << shellClassName(java_class) << "::qt_metacall(QMetaObject::Call _c, int _id, void **_a)" << endl |
1287 << "{" << endl; | 1287 << "{" << endl |
1288 | 1288 << " _id = " << java_class->qualifiedCppName() << "::qt_metacall(_c, _id, _a);" << endl |
1289 s << " _id = " << java_class->qualifiedCppName() << "::qt_metacall(_c, _id, _a);" << endl | |
1290 << " if (_id < 0 || _c != QMetaObject::InvokeMetaMethod)" << endl | 1289 << " if (_id < 0 || _c != QMetaObject::InvokeMetaMethod)" << endl |
1291 << " return _id;" << endl | 1290 << " return _id;" << endl |
1292 << " emit_callbacks_" << java_class->name() << "[_id](this->dId, _a);" << endl | 1291 << " emit_callbacks_" << java_class->name() << "[_id](this->dId, _a);" << endl |
1293 << " return -1;" << endl | 1292 << " return -1;" << endl |
1293 << "}" << endl << endl; | |
1294 */ | |
1295 | |
1296 s << "extern \"C\" int qtd_" << java_class->name() << "_qt_metacall_dispatch(void *d_entity, QMetaObject::Call _c, int _id, void **_a);" << endl << endl | |
1297 | |
1298 << "int " << shellClassName(java_class) << "::qt_metacall(QMetaObject::Call _c, int _id, void **_a)" << endl | |
1299 << "{" << endl | |
1300 << " return qtd_" << java_class->name() << "_qt_metacall_dispatch(this->dId, _c, _id, _a);" << endl | |
1301 << "}" << endl << endl | |
1302 | |
1303 << "int " << shellClassName(java_class) << "::__override_qt_metacall(QMetaObject::Call _c, int _id, void **_a)" << endl | |
1304 << "{" << endl | |
1305 << " return " << java_class->qualifiedCppName() << "::qt_metacall(_c, _id, _a);" | |
1306 << "}" << endl << endl | |
1307 | |
1308 << "extern \"C\" DLL_PUBLIC int qtd_" << java_class->name() << "_qt_metacall(void* __this_nativeId, QMetaObject::Call _c, int _id, void **_a)" | |
1309 << "{" << endl | |
1310 << " " << shellClassName(java_class) << " *__qt_this = (" << shellClassName(java_class) << " *) __this_nativeId;" << endl | |
1311 << " return __qt_this->__override_qt_metacall(_c, _id, _a);" << endl | |
1294 << "}" << endl << endl; | 1312 << "}" << endl << endl; |
1295 } | 1313 } |
1296 | 1314 |
1297 void CppImplGenerator::writeSignalEmitter(QTextStream &s, const AbstractMetaClass *d_class, AbstractMetaFunction *function) | 1315 void CppImplGenerator::writeSignalEmitter(QTextStream &s, const AbstractMetaClass *d_class, AbstractMetaFunction *function) |
1298 { | 1316 { |
1339 s << endl << endl; | 1357 s << endl << endl; |
1340 } | 1358 } |
1341 | 1359 |
1342 void CppImplGenerator::writeSignalsHandling(QTextStream &s, const AbstractMetaClass *java_class) | 1360 void CppImplGenerator::writeSignalsHandling(QTextStream &s, const AbstractMetaClass *java_class) |
1343 { | 1361 { |
1362 return; // #TODO probably don't need this function at all | |
1363 | |
1344 s << "extern \"C\" typedef void (*EmitCallback)(void*, void**);" << endl; | 1364 s << "extern \"C\" typedef void (*EmitCallback)(void*, void**);" << endl; |
1345 AbstractMetaFunctionList signal_funcs = signalFunctions(java_class); | 1365 AbstractMetaFunctionList signal_funcs = signalFunctions(java_class); |
1346 | 1366 |
1347 if (cpp_shared) | 1367 if (cpp_shared) |
1348 if(signal_funcs.size() > 0) | 1368 if(signal_funcs.size() > 0) |
1367 s << ", "; | 1387 s << ", "; |
1368 s << "&" << signalExternName(java_class, signal) << "_handle"; | 1388 s << "&" << signalExternName(java_class, signal) << "_handle"; |
1369 } | 1389 } |
1370 s << endl << "};" << endl << endl; | 1390 s << endl << "};" << endl << endl; |
1371 } | 1391 } |
1372 | |
1373 writeQObjectEntity(s, java_class); | |
1374 } | 1392 } |
1375 | 1393 |
1376 | 1394 |
1377 void CppImplGenerator::writeShellConstructor(QTextStream &s, const AbstractMetaFunction *java_function) | 1395 void CppImplGenerator::writeShellConstructor(QTextStream &s, const AbstractMetaFunction *java_function) |
1378 { | 1396 { |