Mercurial > projects > qtd
diff cpp/qt_qtd/qtd_core.cpp @ 357:9784459f0750
An attempt (failed due to optlink) to improve locality of declarations exported from QtD executables
Q_CLASSINFO implementation
Now Qtd can be built on Windows
author | Max Samukha <maxter@spambox.com> |
---|---|
date | Wed, 02 Jun 2010 19:38:05 +0300 |
parents | 08c1ca7975ab |
children | 12f60887ed15 a032df77b6ab |
line wrap: on
line diff
--- a/cpp/qt_qtd/qtd_core.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_qtd/qtd_core.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -1,25 +1,25 @@ /** -* -* Copyright: Copyright QtD Team, 2008-2009 -* License: <a href="http://www.boost.org/LICENSE_1_0.txt>Boost License 1.0</a> -* -* Copyright QtD Team, 2008-2009 -* Distributed under the Boost Software License, Version 1.0. -* (See accompanying file boost-license-1.0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) -* -*/ + Copyright: Copyright QtD Team, 2008-2010 + License: Boost License 1.0 + */ #include "qtd_core.h" #include <iostream> -uint userDataId; +QTD_EXPORT(CORE, toUtf8); +QTD_EXPORT(CORE, QtdObject_delete); -extern "C" DLL_PUBLIC QModelIndex qtd_to_QModelIndex(QModelIndexAccessor mia) +QTD_EXTERN QTD_DLL_EXPORT void qtd_initCore() +{ + QObjectLink::userDataId = QObject::registerUserData(); +} + +QTD_EXTERN QTD_DLL_PUBLIC QModelIndex qtd_to_QModelIndex(QModelIndexAccessor mia) { return * (QModelIndex *) (&mia) ; } -extern "C" DLL_PUBLIC QModelIndexAccessor qtd_from_QModelIndex(const QModelIndex &index) +QTD_EXTERN QTD_DLL_PUBLIC QModelIndexAccessor qtd_from_QModelIndex(const QModelIndex &index) { QModelIndexAccessor mia = { index.row(), @@ -31,42 +31,29 @@ return mia; } -extern "C" DLL_PUBLIC const char* qtd_qVersion() +QTD_EXTERN QTD_DLL_PUBLIC const char* qtd_qVersion() { return qVersion(); } -extern "C" DLL_PUBLIC bool qtd_qSharedBuild() +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_qSharedBuild() { return qSharedBuild(); } -//TODO: this has to be replaced with something that makes some sense -#ifdef CPP_SHARED -QTD_EXPORT_VAR(qtd_toUtf8); -QTD_EXPORT_VAR(qtd_QtdObject_delete); - -extern "C" DLL_PUBLIC void qtd_core_initCallBacks(pfunc_abstr d_func, pfunc_abstr del_d_qobj) { - QTD_EXPORT_VAR_SET(qtd_toUtf8, d_func); - QTD_EXPORT_VAR_SET(qtd_QtdObject_delete, del_d_qobj); - - userDataId = QObject::registerUserData(); -} -#endif - extern bool qRegisterResourceData (int, const unsigned char *, const unsigned char *, const unsigned char *); extern bool qUnregisterResourceData (int, const unsigned char *, const unsigned char *, const unsigned char *); -extern "C" DLL_PUBLIC bool qtd_register_resource_data(int version, const unsigned char *tree, +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_register_resource_data(int version, const unsigned char *tree, const unsigned char *name, const unsigned char *data) { return qRegisterResourceData(version, tree, name, data); } -extern "C" DLL_PUBLIC bool qtd_unregister_resource_data(int version, const unsigned char *tree, +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_unregister_resource_data(int version, const unsigned char *tree, const unsigned char *name, const unsigned char *data) { return qUnregisterResourceData(version, tree, name, data); @@ -83,6 +70,8 @@ qObject->setUserData(userDataId, this); } +uint QObjectLink::userDataId; + QObjectLink* QObjectLink::getLink(const QObject *qObject) { return static_cast<QObjectLink*>(qObject->userData(userDataId));