Mercurial > projects > qtd
diff generator/dgenerator.cpp @ 303:98b211f3ee34 signals
fix for #19
author | eldar_ins@eldar-laptop |
---|---|
date | Sat, 12 Dec 2009 16:01:55 +0500 |
parents | 55ee4603365d |
children | 04b52676b45f |
line wrap: on
line diff
--- a/generator/dgenerator.cpp Sat Dec 12 03:22:54 2009 +0500 +++ b/generator/dgenerator.cpp Sat Dec 12 16:01:55 2009 +0500 @@ -2573,9 +2573,10 @@ initArgs = "virt_arr.ptr"; if (d_class->isQObject()) { - // qt_metacalls - s << endl << INDENT << "void*[1] sign_arr;" << endl; + // qt_metacall, metaObject + s << endl << INDENT << "void*[2] sign_arr;" << endl; s << INDENT << "sign_arr[0] = &qtd_" << d_class->name() << "_qt_metacall_dispatch;" << endl; + s << INDENT << "sign_arr[1] = &qtd_" << d_class->name() << "_metaObject_dispatch;" << endl; initArgs += ", sign_arr.ptr"; } @@ -2682,8 +2683,13 @@ << "private extern(C) int qtd_" << d_class->name() << "_qt_metacall_dispatch(void *d_entity, QMetaObject.Call _c, int _id, void **_a) {" << " auto d_object = cast(" << d_class->name() << ") d_entity;" << " return d_object.qt_metacall(_c, _id, _a);" + << "}" << endl << endl + + << "private extern(C) void* qtd_" << d_class->name() << "_metaObject_dispatch(void *d_entity) {" + << " auto d_object = cast(" << d_class->name() << ") d_entity;" + << " return d_object.metaObject().nativeId();" << "}" << endl << endl; -} + } void writeMetaMethodSignatures(QTextStream &s, const QString &var_name, AbstractMetaFunctionList meta_funcs) {