diff cpp/qt_qtd/qtd_core.cpp @ 257:17b5e13364b7 lifetime

(none)
author maxter
date Wed, 16 Sep 2009 13:56:02 +0000
parents 073b9153ed8a
children 2049c3abd348
line wrap: on
line diff
--- a/cpp/qt_qtd/qtd_core.cpp	Mon Aug 31 12:07:28 2009 +0000
+++ b/cpp/qt_qtd/qtd_core.cpp	Wed Sep 16 13:56:02 2009 +0000
@@ -11,11 +11,16 @@
 
 #include "qtd_core.h"
 #include <iostream>
-
+#include <QCryptographicHash>
 
-extern "C" DLL_PUBLIC void* qtd_qobject(void* parent)
+extern "C" DLL_PUBLIC void* qtd_test_Object()
 {
-    return new QObject((QObject*)parent);
+    return new QCryptographicHash(QCryptographicHash::Md5);
+}
+
+extern "C" DLL_PUBLIC void qtd_test_delete_Object(void* obj)
+{
+    delete (QCryptographicHash*)obj;
 }
 
 extern "C" DLL_PUBLIC QModelIndex qtd_to_QModelIndex(QModelIndexAccessor mia)
@@ -48,10 +53,13 @@
 #ifdef CPP_SHARED
 QTD_EXPORT_VAR(qtd_toUtf8);
 QTD_EXPORT_VAR(qtd_dummy);
+QTD_EXPORT_VAR(qtd_delete_d_object);
 
-extern "C" DLL_PUBLIC void qtd_core_initCallBacks(pfunc_abstr d_func, pfunc_abstr dummy) {
+extern "C" DLL_PUBLIC void qtd_core_initCallBacks(pfunc_abstr d_func, pfunc_abstr dummy
+    , pfunc_abstr del_d_obj) {
     QTD_EXPORT_VAR_SET(qtd_toUtf8, d_func);
     QTD_EXPORT_VAR_SET(qtd_dummy, dummy);
+    QTD_EXPORT_VAR_SET(qtd_delete_d_object, del_d_obj);
     //std::cout << "qtd_core initialized" << std::endl;
 }
 #endif
@@ -73,3 +81,31 @@
 {
     return qUnregisterResourceData(version, tree, name, data);
 }
+
+
+QtD_QObjectEntity::QtD_QObjectEntity(QObject *qObject, void *dId) : QtD_Entity(dId)
+{
+    qObject->setUserData(userDataId, this);
+}
+
+QtD_QObjectEntity::~QtD_QObjectEntity()
+{
+    if (dId)
+        destroyEntity();
+}
+
+void QtD_QObjectEntity::destroyEntity(QObject *qObject)
+{
+    Q_ASSERT(dId);
+    qtd_delete_d_object(dId);
+    if (qObject)
+    {
+        qObject->setUserData(userDataId, NULL);
+        dId = NULL;
+    }
+}
+
+QtD_QObjectEntity* QtD_QObjectEntity::getQObjectEntity(const QObject *qObject)
+{
+    return static_cast<QtD_QObjectEntity*>(qObject->userData(userDataId));
+}