comparison generator/typesystem_core.xml @ 355:08c1ca7975ab

obviated redundant virtual dispatch callbacks
author Max Samukha <maxter@spambox.com>
date Tue, 25 May 2010 17:23:11 +0300
parents 18bd68f586c6
children 12cec2d14e1c
comparison
equal deleted inserted replaced
354:18bd68f586c6 355:08c1ca7975ab
2363 <object-type name="QObject"> 2363 <object-type name="QObject">
2364 <inject-code class="native"> 2364 <inject-code class="native">
2365 2365
2366 extern "C" DLL_PUBLIC void* qtd_get_d_qobject(void *nativeId) 2366 extern "C" DLL_PUBLIC void* qtd_get_d_qobject(void *nativeId)
2367 { 2367 {
2368 QtD_QObjectEntity *entity = QtD_QObjectEntity::getQObjectEntity((QObject*)nativeId); 2368 return QObjectEntity::getDId((QObject*)nativeId);
2369 return entity ? entity-&gt;dId : NULL;
2370 } 2369 }
2371 2370
2372 extern "C" DLL_PUBLIC void qtd_create_qobject_entity(void* nativeId, void *dId) 2371 extern "C" DLL_PUBLIC void qtd_create_qobject_entity(void* nativeId, void *dId)
2373 { 2372 {
2374 new QtD_QObjectEntity((QObject*)nativeId, dId); 2373 new QObjectLink((QObject*)nativeId, dId);
2375 } 2374 }
2376 2375
2377 extern "C" DLL_PUBLIC void* qtd_QObject_metaObject(void* nativeId) 2376 extern "C" DLL_PUBLIC void* qtd_QObject_metaObject(void* nativeId)
2378 { 2377 {
2379 return (void*)((QObject*)nativeId)->metaObject(); 2378 return (void*)((QObject*)nativeId)->metaObject();
2380 } 2379 }
2381 2380
2381 <!--
2382 extern "C" DLL_PUBLIC void qtd_connect(void* nativeId, char* signal, int id, bool dynamicEntity) 2382 extern "C" DLL_PUBLIC void qtd_connect(void* nativeId, char* signal, int id, bool dynamicEntity)
2383 { 2383 {
2384 QObject *sender = (QObject*)nativeId; 2384 QObject *sender = (QObject*)nativeId;
2385 QObject *receiver = dynamicEntity ? dynamic_cast&lt;QObject*&gt;(QtD_QObjectEntity::getQObjectEntity(sender)) : sender; 2385 QObject *receiver = dynamicEntity ? dynamic_cast&lt;QObject*&gt;(QObject::getQObjectEntity(sender)) : sender;
2386 const QMetaObject *mo = sender->metaObject(); 2386 const QMetaObject *mo = sender->metaObject();
2387 int nativeSigId = mo-&gt;indexOfSignal(signal); 2387 int nativeSigId = mo-&gt;indexOfSignal(signal);
2388 QMetaObject::connect(sender, nativeSigId, receiver, receiver-&gt;metaObject()-&gt;methodCount() + id); 2388 QMetaObject::connect(sender, nativeSigId, receiver, receiver-&gt;metaObject()-&gt;methodCount() + id);
2389 } 2389 }
2390 2390
2394 QObject *receiver = dynamicEntity ? dynamic_cast&lt;QObject*&gt;(QtD_QObjectEntity::getQObjectEntity(sender)) : sender; 2394 QObject *receiver = dynamicEntity ? dynamic_cast&lt;QObject*&gt;(QtD_QObjectEntity::getQObjectEntity(sender)) : sender;
2395 const QMetaObject *mo = sender->metaObject(); 2395 const QMetaObject *mo = sender->metaObject();
2396 int nativeSigId = mo-&gt;indexOfSignal(signal); 2396 int nativeSigId = mo-&gt;indexOfSignal(signal);
2397 QMetaObject::disconnect(sender, nativeSigId, receiver, receiver-&gt;metaObject()-&gt;methodCount() + id); 2397 QMetaObject::disconnect(sender, nativeSigId, receiver, receiver-&gt;metaObject()-&gt;methodCount() + id);
2398 } 2398 }
2399 -->
2399 2400
2400 </inject-code> 2401 </inject-code>
2401 2402
2402 <inject-code class="java-free"> 2403 <inject-code class="java-free">
2403 extern(C) void* qtd_get_d_qobject(void* nativeId); 2404 extern(C) void* qtd_get_d_qobject(void* nativeId);