# HG changeset patch # User Max Samukha # Date 1275496685 -10800 # Node ID 9784459f0750755b8e7937cf2ae642eaff494777 # Parent 12cec2d14e1c921ead2f52dd6c8de6ca63bd9161 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 diff -r 12cec2d14e1c -r 9784459f0750 CMakeLists.txt --- a/CMakeLists.txt Tue May 25 20:14:04 2010 +0300 +++ b/CMakeLists.txt Wed Jun 02 19:38:05 2010 +0300 @@ -12,7 +12,7 @@ #set( SUFFIXBIN "${SUFFIXBIN}-debug" ) add_definitions(-DDEBUG) elseif (NOT ${CMAKE_BUILD_TYPE} MATCHES [rR][eE][lL][eE][aA][sS]) - message(STATUS "Only debug and release configurations are supproted. The configuration is changed to 'Release'") + message(STATUS "Only debug and release configurations are supported. The configuration is changed to 'Release'") set(CMAKE_BUILD_TYPE Release) endif (${CMAKE_BUILD_TYPE} MATCHES [dD][eE][bB][uU][gG]) @@ -28,7 +28,7 @@ option(ALLOW_IN_SOURCE_BUILDS "Allow in-source builds" "OFF") if (CMAKE_SOURCE_DIR STREQUAL CMAKE_BINARY_DIR AND NOT ALLOW_IN_SOURCE_BUILDS) message(FATAL_ERROR "In-source builds are not allowed. " - "Please create a directory and run cmake from there, passing the path" + "Please create a directory and run cmake from there, passing the path " "to this source directory as the last argument. " "This process created the file `CMakeCache.txt` and the directory `CMakeFiles'. Please delete them. " "Or you can restart cmake with `-DALLOW_IN_SOURCE_BUILDS=1`, but it is not recommended." @@ -180,14 +180,11 @@ endif(CMAKE_HOST_WIN32) if(CMAKE_HOST_WIN32 AND D_IS_MARS) + set(D_FLAGS -version=cpp_shared) + add_definitions(-DCPP_SHARED) set(CPP_SHARED 1 CACHE INTERNAL "") endif(CMAKE_HOST_WIN32 AND D_IS_MARS) -if(D_IS_MARS) - set(D_FLAGS -version=cpp_shared) - add_definitions(-DCPP_SHARED) -endif(D_IS_MARS) - if(UNITTEST) add_d_versions(QtdUnittest) set(D_FLAGS ${D_FLAGS} -unittest) @@ -438,7 +435,7 @@ endforeach(d_source ${d_sources}) endif(NOT GENERATE_DI_FILES) - ## Build the CPP part. + ### Build the CPP part. if(CPP_SHARED) set(cpp_method SHARED) else(CPP_SHARED) @@ -447,6 +444,8 @@ add_library(cpp_${package} ${cpp_method} ${cpp_sources}) set_property(TARGET cpp_${package} PROPERTY RUNTIME_OUTPUT_DIRECTORY lib) set_property(TARGET cpp_${package} PROPERTY ARCHIVE_OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/CMakeFiles) + set_property(TARGET cpp_${package} PROPERTY COMPILE_DEFINITIONS QTD_${package_upper}) + set(link_cpp ${link_cpp} ${QT_QT${package_upper}_LIBRARY}) if(CPP_SHARED) else(CPP_SHARED) @@ -498,7 +497,7 @@ add_custom_command( OUTPUT "${d_implib}" COMMAND "${IMPLIB}" - ARGS /system /PAGESIZE:32 ${d_implib_native} ${cpp_lib_native} + ARGS /system /PAGESIZE:64 ${d_implib_native} ${cpp_lib_native} DEPENDS "cpp_${package}" COMMENT "Creating implib ${lib_name}" ) @@ -516,6 +515,7 @@ ## Generate dependences for make (or nmake). add_custom_target(${package}) add_dependencies(${package} ${lib_name}) + add_dependencies(${lib_name} cpp_${package}) foreach(depend ${required}) string(TOLOWER ${depend} depend) diff -r 12cec2d14e1c -r 9784459f0750 boost-license-1.0.txt --- a/boost-license-1.0.txt Tue May 25 20:14:04 2010 +0300 +++ b/boost-license-1.0.txt Wed Jun 02 19:38:05 2010 +0300 @@ -1,23 +0,0 @@ -Boost Software License - Version 1.0 - August 17th, 2003 - -Permission is hereby granted, free of charge, to any person or organization -obtaining a copy of the software and accompanying documentation covered by -this license (the "Software") to use, reproduce, display, distribute, -execute, and transmit the Software, and to prepare derivative works of the -Software, and to permit third-parties to whom the Software is furnished to -do so, all subject to the following: - -The copyright notices in the Software and this entire statement, including -the above license grant, this restriction and the following disclaimer, -must be included in all copies of the Software, in whole or in part, and -all derivative works of the Software, unless such copies or derivative -works are solely in the form of machine-executable object code generated by -a source language processor. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT -SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE -FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE, -ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER -DEALINGS IN THE SOFTWARE. diff -r 12cec2d14e1c -r 9784459f0750 build/core.makefile --- a/build/core.makefile Tue May 25 20:14:04 2010 +0300 +++ b/build/core.makefile Wed Jun 02 19:38:05 2010 +0300 @@ -1,83 +0,0 @@ -ifeq ($(D_VERSION), 1) -D_PATH = d1/qt -else -D_PATH = d2/qt -endif - -##-------------------------- -QTD_CORE += QGlobal $(D_PATH)/qtd/Str core/Qt qtd/ArrayOpsPrimitive $(D_PATH)/QtdObject $(D_PATH)/Signal \ -$(D_PATH)/core/QPoint \ -$(D_PATH)/core/QPointF \ -$(D_PATH)/core/QRect \ -$(D_PATH)/core/QRectF \ -$(D_PATH)/core/QSize \ -$(D_PATH)/core/QSizeF \ -$(D_PATH)/core/QLine \ -$(D_PATH)/core/QLineF \ -$(D_PATH)/core/QModelIndex \ -$(D_PATH)/core/QVariant - -##-------------------------- - -## Qt Lib name. -qt_core_name = QtCore - -## Libraries linked to the cpp part (is active only when CPP_SHARED == true). -core_link_cpp += - -## Libraries linked to the d part (is active only when CPP_SHARED == true).. -core_link_d += - -## Module specific cpp files. -core_cpp_files += cpp/qt_qtd/qtd_core.cpp cpp/qt_qtd/ArrayOpsPrimitive_shell.cpp \ -cpp/qt_core/QPoint_shell.cpp cpp/qt_core/QPointF_shell.cpp cpp/qt_core/QRect_shell.cpp cpp/qt_core/QRectF_shell.cpp \ -cpp/qt_core/QSize_shell.cpp cpp/qt_core/QSizeF_shell.cpp cpp/qt_core/QLine_shell.cpp cpp/qt_core/QLineF_shell.cpp \ -cpp/qt_core/QModelIndex_shell.cpp cpp/qt_core/QVariant_shell.cpp - -## Module specific d files. -core_d_files += $(QTD_CORE:%=qt/%.d) qt/core/ArrayOps2 - -## Classes. -## TODO: use list that genareted by dgen. -core_classes = \ - ArrayOps \ - QChildEvent \ - QCoreApplication \ - QEvent \ - QEventLoop \ - QObject \ - QTimerEvent \ - QTranslator \ - QByteArray \ - QLocale \ - QDataStream \ - QMimeData \ - QIODevice \ - QDateTime \ - QDate \ - QTime \ - QBitArray \ - QRegExp \ - QUrl \ - QAbstractItemModel \ - QAbstractFileEngine \ - QFile \ - QDir \ - QFileInfo \ - QTextStream \ - QString \ - QTimer \ - QTextCodec \ - QTextCodec_ConverterState \ - QTextEncoder \ - QTextDecoder \ - QTimeLine \ - QAbstractFactory \ - QAbstractListModel \ - QCryptographicHash \ - QProcess \ - QBuffer \ - QMetaType \ - QLibraryInfo \ - QFileSystemWatcher \ - QXmlStreamEntityResolver \ No newline at end of file diff -r 12cec2d14e1c -r 9784459f0750 build/core.txt --- a/build/core.txt Tue May 25 20:14:04 2010 +0300 +++ b/build/core.txt Wed Jun 02 19:38:05 2010 +0300 @@ -25,6 +25,7 @@ core/QVariant ) set (d_qtd_files + Core QtdObject Signal String diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QLineF_shell.cpp --- a/cpp/qt_core/QLineF_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QLineF_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -5,7 +5,7 @@ // QLineF::angle() const -extern "C" DLL_PUBLIC double qtd_QLineF_angle +QTD_EXTERN QTD_DLL_PUBLIC double qtd_QLineF_angle (void* __this_nativeId) { QLineF *__qt_this = (QLineF *) __this_nativeId; @@ -17,7 +17,7 @@ } // QLineF::angle(const QLineF & l) const -extern "C" DLL_PUBLIC double qtd_QLineF_angle_QLineF +QTD_EXTERN QTD_DLL_PUBLIC double qtd_QLineF_angle_QLineF (void* __this_nativeId, void* l0) { @@ -31,7 +31,7 @@ } // QLineF::angleTo(const QLineF & l) const -extern "C" DLL_PUBLIC double qtd_QLineF_angleTo_QLineF +QTD_EXTERN QTD_DLL_PUBLIC double qtd_QLineF_angleTo_QLineF (void* __this_nativeId, void* l0) { @@ -45,7 +45,7 @@ } // QLineF::intersect(const QLineF & l, QPointF * intersectionPoint) const -extern "C" DLL_PUBLIC int qtd_QLineF_intersect_QLineF_nativepointerQPointF +QTD_EXTERN QTD_DLL_PUBLIC int qtd_QLineF_intersect_QLineF_nativepointerQPointF (void* __this_nativeId, void* l0, void* intersectionPoint1) @@ -60,7 +60,7 @@ } // QLineF::isNull() const -extern "C" DLL_PUBLIC bool qtd_QLineF_isNull +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QLineF_isNull (void* __this_nativeId) { QLineF *__qt_this = (QLineF *) __this_nativeId; @@ -72,7 +72,7 @@ } // QLineF::length() const -extern "C" DLL_PUBLIC double qtd_QLineF_length +QTD_EXTERN QTD_DLL_PUBLIC double qtd_QLineF_length (void* __this_nativeId) { QLineF *__qt_this = (QLineF *) __this_nativeId; @@ -84,7 +84,7 @@ } // QLineF::operator<<(QDataStream & arg__1) -extern "C" DLL_PUBLIC void qtd_QLineF_writeTo_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QLineF_writeTo_QDataStream (void* __this_nativeId, void* arg__1) { @@ -95,7 +95,7 @@ } // QLineF::operator>>(QDataStream & arg__1) -extern "C" DLL_PUBLIC void qtd_QLineF_readFrom_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QLineF_readFrom_QDataStream (void* __this_nativeId, void* arg__1) { @@ -106,7 +106,7 @@ } // QLineF::p1() const -extern "C" DLL_PUBLIC QPointF qtd_QLineF_p1 +QTD_EXTERN QTD_DLL_PUBLIC QPointF qtd_QLineF_p1 (void* __this_nativeId) { QLineF *__qt_this = (QLineF *) __this_nativeId; @@ -118,7 +118,7 @@ } // QLineF::setAngle(double angle) -extern "C" DLL_PUBLIC void qtd_QLineF_setAngle_double +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QLineF_setAngle_double (void* __this_nativeId, double angle0) { @@ -128,7 +128,7 @@ } // QLineF::unitVector() const -extern "C" DLL_PUBLIC QLineF qtd_QLineF_unitVector +QTD_EXTERN QTD_DLL_PUBLIC QLineF qtd_QLineF_unitVector (void* __this_nativeId) { QLineF *__qt_this = (QLineF *) __this_nativeId; @@ -136,7 +136,7 @@ } // QLineF::fromPolar(double length, double angle) -extern "C" DLL_PUBLIC QLineF qtd_QLineF_fromPolar_double_double +QTD_EXTERN QTD_DLL_PUBLIC QLineF qtd_QLineF_fromPolar_double_double (double length0, double angle1) { diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QLine_shell.cpp --- a/cpp/qt_core/QLine_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QLine_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -4,7 +4,7 @@ #include "qtd_core.h" // QLine::operator<<(QDataStream & arg__1) -extern "C" DLL_PUBLIC void qtd_QLine_writeTo_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QLine_writeTo_QDataStream (void* __this_nativeId, void* arg__1) { @@ -15,7 +15,7 @@ } // QLine::operator>>(QDataStream & arg__1) -extern "C" DLL_PUBLIC void qtd_QLine_readFrom_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QLine_readFrom_QDataStream (void* __this_nativeId, void* arg__1) { diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QMetaObject_shell.cpp --- a/cpp/qt_core/QMetaObject_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QMetaObject_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -4,61 +4,61 @@ #include -extern "C" DLL_PUBLIC void* qtd_QMetaObject_superClass(void *nativeId) +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QMetaObject_superClass(void *nativeId) { return (void*)((QMetaObject*)nativeId)->superClass(); } -extern "C" DLL_PUBLIC void qtd_QMetaObject_activate(QObject *sender, int signal_index, void **argv) +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QMetaObject_activate(QObject *sender, int signal_index, void **argv) { QMetaObject::activate(sender, signal_index, argv); } -extern "C" DLL_PUBLIC void qtd_QMetaObject_activate_3(QObject *sender, const QMetaObject *m, int local_signal_index, void **argv) +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QMetaObject_activate_3(QObject *sender, const QMetaObject *m, int local_signal_index, void **argv) { QMetaObject::activate(sender, m, local_signal_index, argv); } -extern "C" DLL_PUBLIC void qtd_QMetaObject_activate_4(QObject *sender, const QMetaObject *m, int from_local_signal_index, int to_local_signal_index, void **argv) +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QMetaObject_activate_4(QObject *sender, const QMetaObject *m, int from_local_signal_index, int to_local_signal_index, void **argv) { QMetaObject::activate(sender, m, from_local_signal_index, to_local_signal_index, argv); } -extern "C" DLL_PUBLIC bool qtd_QMetaObject_connect(const QObject *sender, int signal_index, +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QMetaObject_connect(const QObject *sender, int signal_index, const QObject *receiver, int method_index, int type, int *types) { return QMetaObject::connect(sender, signal_index, receiver, method_index, type, types); } -extern "C" DLL_PUBLIC int qtd_QMetaObject_indexOfMethod(void *nativeId, const char *method) +QTD_EXTERN QTD_DLL_PUBLIC int qtd_QMetaObject_indexOfMethod(void *nativeId, const char *method) { return ((QMetaObject*)nativeId)->indexOfMethod(method); } -extern "C" DLL_PUBLIC int qtd_QMetaObject_methodCount(void *nativeId) +QTD_EXTERN QTD_DLL_PUBLIC int qtd_QMetaObject_methodCount(void *nativeId) { return ((QMetaObject*)nativeId)->methodCount(); } -extern "C" DLL_PUBLIC void qtd_create_QList(void *nativeId) +QTD_EXTERN QTD_DLL_PUBLIC void qtd_create_QList(void *nativeId) { QList & list = (*(QList *)nativeId); list.append(54); list.append(45); } -extern "C" DLL_PUBLIC void qtd_create_QList_double(void *nativeId) +QTD_EXTERN QTD_DLL_PUBLIC void qtd_create_QList_double(void *nativeId) { QList & list = (*(QList *)nativeId); list.append(54.44); list.append(45.55); } -extern "C" DLL_PUBLIC void qtd_create_QList_QObject(void *nativeId) +QTD_EXTERN QTD_DLL_PUBLIC void qtd_create_QList_QObject(void *nativeId) { QList & list2 = (*(QList *)nativeId); - + QList list; QObject* a1 = new QObject(); a1->setObjectName("a1"); diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QMetaType_shell.cpp --- a/cpp/qt_core/QMetaType_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QMetaType_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -5,8 +5,8 @@ typedef void * Ctor (const void *copy); typedef void Dtor(void *obj); -extern "C" DLL_PUBLIC int qtd_registerType(char* namePtr, Ctor ctor, Dtor dtor) -{ +QTD_EXTERN QTD_DLL_PUBLIC int qtd_registerType(char* namePtr, Ctor ctor, Dtor dtor) +{ return QMetaType::registerType(namePtr, dtor, ctor); } @@ -14,15 +14,15 @@ typedef void (*LoadOperator)(void *, void *); -extern "C" DLL_PUBLIC void qtd_registerStreamOperators(const char *typeName, SaveOperator saveOp, +QTD_EXTERN QTD_DLL_PUBLIC void qtd_registerStreamOperators(const char *typeName, SaveOperator saveOp, LoadOperator loadOp) -{ +{ QMetaType::registerStreamOperators(typeName, reinterpret_cast(saveOp), reinterpret_cast(loadOp)); } - + -extern "C" DLL_PUBLIC int qtd_MetatypeId(char *id) +QTD_EXTERN QTD_DLL_PUBLIC int qtd_MetatypeId(char *id) { return QMetaType::type(id); } diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QModelIndex_shell.cpp --- a/cpp/qt_core/QModelIndex_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QModelIndex_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -6,14 +6,14 @@ #include "qtd_core.h" -extern "C" DLL_PUBLIC void __qtd_QModelIndex_destructor(void *ptr) +QTD_EXTERN QTD_DLL_PUBLIC void __qtd_QModelIndex_destructor(void *ptr) { delete (QModelIndex *)ptr; } // ---externC--- // QModelIndex::QModelIndex() -extern "C" DLL_PUBLIC void* __qtd_QModelIndex_QModelIndex +QTD_EXTERN QTD_DLL_PUBLIC void* __qtd_QModelIndex_QModelIndex () { QModelIndex *__qt_this = new QModelIndex(); @@ -22,7 +22,7 @@ } // QModelIndex::QModelIndex(const QModelIndex & other) -extern "C" DLL_PUBLIC void* __qtd_QModelIndex_QModelIndex_QModelIndex +QTD_EXTERN QTD_DLL_PUBLIC void* __qtd_QModelIndex_QModelIndex_QModelIndex (QModelIndex other0) { QModelIndex *__qt_this = new QModelIndex((const QModelIndex& )other0); @@ -31,7 +31,7 @@ } // QModelIndex::child(int row, int column) const -extern "C" DLL_PUBLIC QModelIndex __qtd_QModelIndex_child_int_int +QTD_EXTERN QTD_DLL_PUBLIC QModelIndex __qtd_QModelIndex_child_int_int (void* __this_nativeId, int row0, int column1) @@ -44,7 +44,7 @@ } // QModelIndex::column() const -extern "C" DLL_PUBLIC int __qtd_QModelIndex_column +QTD_EXTERN QTD_DLL_PUBLIC int __qtd_QModelIndex_column (void* __this_nativeId) { QModelIndex *__qt_this = (QModelIndex *) __this_nativeId; @@ -56,7 +56,7 @@ } // QModelIndex::data(int role) const -extern "C" DLL_PUBLIC void* __qtd_QModelIndex_data_int +QTD_EXTERN QTD_DLL_PUBLIC void* __qtd_QModelIndex_data_int (void* __this_nativeId, int role0) { @@ -69,7 +69,7 @@ } // QModelIndex::flags() const -extern "C" DLL_PUBLIC int __qtd_QModelIndex_flags +QTD_EXTERN QTD_DLL_PUBLIC int __qtd_QModelIndex_flags (void* __this_nativeId) { QModelIndex *__qt_this = (QModelIndex *) __this_nativeId; @@ -81,7 +81,7 @@ } // QModelIndex::internalId() const -extern "C" DLL_PUBLIC qint64 __qtd_QModelIndex_internalId +QTD_EXTERN QTD_DLL_PUBLIC qint64 __qtd_QModelIndex_internalId (void* __this_nativeId) { QModelIndex *__qt_this = (QModelIndex *) __this_nativeId; @@ -93,7 +93,7 @@ } // QModelIndex::internalPointer() const -extern "C" DLL_PUBLIC void* __qtd_QModelIndex_internalPointer +QTD_EXTERN QTD_DLL_PUBLIC void* __qtd_QModelIndex_internalPointer (void* __this_nativeId) { QModelIndex *__qt_this = (QModelIndex *) __this_nativeId; @@ -105,7 +105,7 @@ } // QModelIndex::isValid() const -extern "C" DLL_PUBLIC bool __qtd_QModelIndex_isValid +QTD_EXTERN QTD_DLL_PUBLIC bool __qtd_QModelIndex_isValid (void* __this_nativeId) { QModelIndex *__qt_this = (QModelIndex *) __this_nativeId; @@ -117,7 +117,7 @@ } // QModelIndex::model() const -extern "C" DLL_PUBLIC void* __qtd_QModelIndex_model +QTD_EXTERN QTD_DLL_PUBLIC void* __qtd_QModelIndex_model (void* __this_nativeId) { QModelIndex *__qt_this = (QModelIndex *) __this_nativeId; @@ -129,7 +129,7 @@ } // QModelIndex::operator<(const QModelIndex & other) const -extern "C" DLL_PUBLIC bool __qtd_QModelIndex_operator_less_QModelIndex +QTD_EXTERN QTD_DLL_PUBLIC bool __qtd_QModelIndex_operator_less_QModelIndex (void* __this_nativeId, QModelIndex other0) { @@ -142,7 +142,7 @@ } // QModelIndex::operator==(const QModelIndex & other) const -extern "C" DLL_PUBLIC bool __qtd_QModelIndex_operator_equal_QModelIndex +QTD_EXTERN QTD_DLL_PUBLIC bool __qtd_QModelIndex_operator_equal_QModelIndex (void* __this_nativeId, QModelIndex other0) { @@ -155,7 +155,7 @@ } // QModelIndex::parent() const -extern "C" DLL_PUBLIC QModelIndex __qtd_QModelIndex_parent +QTD_EXTERN QTD_DLL_PUBLIC QModelIndex __qtd_QModelIndex_parent (void* __this_nativeId) { QModelIndex *__qt_this = (QModelIndex *) __this_nativeId; @@ -166,7 +166,7 @@ } // QModelIndex::row() const -extern "C" DLL_PUBLIC int __qtd_QModelIndex_row +QTD_EXTERN QTD_DLL_PUBLIC int __qtd_QModelIndex_row (void* __this_nativeId) { QModelIndex *__qt_this = (QModelIndex *) __this_nativeId; @@ -178,7 +178,7 @@ } // QModelIndex::sibling(int row, int column) const -extern "C" DLL_PUBLIC QModelIndex __qtd_QModelIndex_sibling_int_int +QTD_EXTERN QTD_DLL_PUBLIC QModelIndex __qtd_QModelIndex_sibling_int_int (void* __this_nativeId, int row0, int column1) diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QPointF_shell.cpp --- a/cpp/qt_core/QPointF_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QPointF_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -5,7 +5,7 @@ // ---externC--- // QPointF::operator<<(QDataStream & arg__1) -extern "C" DLL_PUBLIC void qtd_QPointF_writeTo_QDataStream +QTD_EXTERN QTD_DLL_EXPORT void qtd_QPointF_writeTo_QDataStream (void* __this_nativeId, void* arg__1) { @@ -16,7 +16,7 @@ } // QPointF::operator>>(QDataStream & arg__1) -extern "C" DLL_PUBLIC void qtd_QPointF_readFrom_QDataStream +QTD_EXTERN QTD_DLL_EXPORT void qtd_QPointF_readFrom_QDataStream (void* __this_nativeId, void* arg__1) { diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QPoint_shell.cpp --- a/cpp/qt_core/QPoint_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QPoint_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -5,7 +5,7 @@ // QPoint::manhattanLength() const -extern "C" DLL_PUBLIC int qtd_QPoint_manhattanLength +QTD_EXTERN QTD_DLL_EXPORT int qtd_QPoint_manhattanLength (void* __this_nativeId) { QPoint *__qt_this = (QPoint *) __this_nativeId; @@ -17,7 +17,7 @@ } // QPoint::operator<<(QDataStream & arg__1) -extern "C" DLL_PUBLIC void qtd_QPoint_writeTo_QDataStream +QTD_EXTERN QTD_DLL_EXPORT void qtd_QPoint_writeTo_QDataStream (void* __this_nativeId, void* arg__1) { @@ -28,7 +28,7 @@ } // QPoint::operator>>(QDataStream & arg__1) -extern "C" DLL_PUBLIC void qtd_QPoint_readFrom_QDataStream +QTD_EXTERN QTD_DLL_EXPORT void qtd_QPoint_readFrom_QDataStream (void* __this_nativeId, void* arg__1) { diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QRectF_shell.cpp --- a/cpp/qt_core/QRectF_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QRectF_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -5,7 +5,7 @@ // QRectF::contains(const QPointF & p) const -extern "C" DLL_PUBLIC bool qtd_QRectF_contains_QPointF +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QRectF_contains_QPointF (void* __this_nativeId, void* p0) { @@ -20,7 +20,7 @@ } // QRectF::contains(const QRectF & r) const -extern "C" DLL_PUBLIC bool qtd_QRectF_contains_QRectF +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QRectF_contains_QRectF (void* __this_nativeId, void* r0) { @@ -34,7 +34,7 @@ } // QRectF::intersects(const QRectF & r) const -extern "C" DLL_PUBLIC bool qtd_QRectF_intersects_QRectF +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QRectF_intersects_QRectF (void* __this_nativeId, void* r0) { @@ -48,7 +48,7 @@ } // QRectF::normalized() const -extern "C" DLL_PUBLIC QRectF qtd_QRectF_normalized +QTD_EXTERN QTD_DLL_PUBLIC QRectF qtd_QRectF_normalized (void* __this_nativeId) { QRectF *__qt_this = (QRectF *) __this_nativeId; @@ -56,7 +56,7 @@ } // QRectF::operator&(const QRectF & r) const -extern "C" DLL_PUBLIC QRectF qtd_QRectF_operator_and_QRectF +QTD_EXTERN QTD_DLL_PUBLIC QRectF qtd_QRectF_operator_and_QRectF (void* __this_nativeId, void* r0) { @@ -66,7 +66,7 @@ } // QRectF::operator<<(QDataStream & arg__1) -extern "C" DLL_PUBLIC void qtd_QRectF_writeTo_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QRectF_writeTo_QDataStream (void* __this_nativeId, void* arg__1) { @@ -77,7 +77,7 @@ } // QRectF::operator>>(QDataStream & arg__1) -extern "C" DLL_PUBLIC void qtd_QRectF_readFrom_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QRectF_readFrom_QDataStream (void* __this_nativeId, void* arg__1) { @@ -88,7 +88,7 @@ } // QRectF::operator|(const QRectF & r) const -extern "C" DLL_PUBLIC QRectF qtd_QRectF_operator_or_QRectF +QTD_EXTERN QTD_DLL_PUBLIC QRectF qtd_QRectF_operator_or_QRectF (void* __this_nativeId, void* r0) { @@ -98,7 +98,7 @@ } // QRectF::toAlignedRect() const -extern "C" DLL_PUBLIC QRect qtd_QRectF_toAlignedRect +QTD_EXTERN QTD_DLL_PUBLIC QRect qtd_QRectF_toAlignedRect (void* __this_nativeId) { QRectF *__qt_this = (QRectF *) __this_nativeId; diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QRect_shell.cpp --- a/cpp/qt_core/QRect_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QRect_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -4,7 +4,7 @@ #include "qtd_core.h" // QRect::contains(const QPoint & p, bool proper) const -extern "C" DLL_PUBLIC bool qtd_QRect_contains_QPoint_bool +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QRect_contains_QPoint_bool (void* __this_nativeId, void* p0, bool proper1) @@ -19,7 +19,7 @@ } // QRect::contains(const QRect & r, bool proper) const -extern "C" DLL_PUBLIC bool qtd_QRect_contains_QRect_bool +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QRect_contains_QRect_bool (void* __this_nativeId, void* r0, bool proper1) @@ -34,7 +34,7 @@ } // QRect::intersects(const QRect & r) const -extern "C" DLL_PUBLIC bool qtd_QRect_intersects_QRect +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QRect_intersects_QRect (void* __this_nativeId, void* r0) { @@ -48,7 +48,7 @@ } // QRect::normalized() const -extern "C" DLL_PUBLIC QRect qtd_QRect_normalized +QTD_EXTERN QTD_DLL_PUBLIC QRect qtd_QRect_normalized (void* __this_nativeId) { QRect *__qt_this = (QRect *) __this_nativeId; @@ -56,7 +56,7 @@ } // QRect::operator&(const QRect & r) const -extern "C" DLL_PUBLIC QRect qtd_QRect_operator_and_QRect +QTD_EXTERN QTD_DLL_PUBLIC QRect qtd_QRect_operator_and_QRect (void* __this_nativeId, void* r0) { @@ -66,7 +66,7 @@ } // QRect::operator<<(QDataStream & arg__1) -extern "C" DLL_PUBLIC void qtd_QRect_writeTo_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QRect_writeTo_QDataStream (void* __this_nativeId, void* arg__1) { @@ -77,7 +77,7 @@ } // QRect::operator>>(QDataStream & arg__1) -extern "C" DLL_PUBLIC void qtd_QRect_readFrom_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QRect_readFrom_QDataStream (void* __this_nativeId, void* arg__1) { @@ -88,7 +88,7 @@ } // QRect::operator|(const QRect & r) const -extern "C" DLL_PUBLIC QRect qtd_QRect_operator_or_QRect +QTD_EXTERN QTD_DLL_PUBLIC QRect qtd_QRect_operator_or_QRect (void* __this_nativeId, void* r0) { diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QSizeF_shell.cpp --- a/cpp/qt_core/QSizeF_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QSizeF_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -3,7 +3,7 @@ #include "qtd_core.h" // QSizeF::operator<<(QDataStream & arg__1) -extern "C" DLL_PUBLIC void __qtd_QSizeF_writeTo_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void __qtd_QSizeF_writeTo_QDataStream (void* __this_nativeId, void* arg__1) { @@ -14,7 +14,7 @@ } // QSizeF::operator>>(QDataStream & arg__1) -extern "C" DLL_PUBLIC void __qtd_QSizeF_readFrom_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void __qtd_QSizeF_readFrom_QDataStream (void* __this_nativeId, void* arg__1) { @@ -25,7 +25,7 @@ } // QSizeF::scale(const QSizeF & s, Qt::AspectRatioMode mode) -extern "C" DLL_PUBLIC void __qtd_QSizeF_scale_QSizeF_AspectRatioMode +QTD_EXTERN QTD_DLL_PUBLIC void __qtd_QSizeF_scale_QSizeF_AspectRatioMode (void* __this_nativeId, void* s0, int mode1) diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QSize_shell.cpp --- a/cpp/qt_core/QSize_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QSize_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -4,7 +4,7 @@ // QSize::operator<<(QDataStream & arg__1) -extern "C" DLL_PUBLIC void __qtd_QSize_writeTo_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void __qtd_QSize_writeTo_QDataStream (void* __this_nativeId, void* arg__1) { @@ -15,7 +15,7 @@ } // QSize::operator>>(QDataStream & arg__1) -extern "C" DLL_PUBLIC void __qtd_QSize_readFrom_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void __qtd_QSize_readFrom_QDataStream (void* __this_nativeId, void* arg__1) { @@ -26,7 +26,7 @@ } // QSize::scale(const QSize & s, Qt::AspectRatioMode mode) -extern "C" DLL_PUBLIC void __qtd_QSize_scale_QSize_AspectRatioMode +QTD_EXTERN QTD_DLL_PUBLIC void __qtd_QSize_scale_QSize_AspectRatioMode (void* __this_nativeId, void* s0, int mode1) diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QString_shell.cpp --- a/cpp/qt_core/QString_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QString_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -1,21 +1,21 @@ #include #include "qtd_core.h" -extern "C" DLL_PUBLIC const ushort* qtd_QString_utf16 +QTD_EXTERN QTD_DLL_PUBLIC const ushort* qtd_QString_utf16 (void* __this_nativeId) { QString *__qt_this = (QString *) __this_nativeId; return __qt_this->utf16(); } -extern "C" DLL_PUBLIC int qtd_QString_size +QTD_EXTERN QTD_DLL_PUBLIC int qtd_QString_size (void* __this_nativeId) { QString *__qt_this = (QString *) __this_nativeId; return __qt_this->size(); } -extern "C" DLL_PUBLIC void qtd_QString_operatorAssign +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QString_operatorAssign (void* __this_nativeId, DArray text) { @@ -23,18 +23,18 @@ *__qt_this = QString::fromUtf8((const char *)text.ptr, text.length); } -extern "C" DLL_PUBLIC void qtd_QString_destructor(void *ptr) +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QString_destructor(void *ptr) { delete (QString *)ptr; } -extern "C" DLL_PUBLIC void qtd_QString_call_destructor(QString *ptr) +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QString_call_destructor(QString *ptr) { ptr->~QString(); } -extern "C" DLL_PUBLIC void* qtd_QString_QString_QString +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QString_QString_QString (void* string0) { const QString& __qt_string0 = (const QString& ) *(QString *)string0; @@ -42,7 +42,7 @@ return (void *) __qt_this; } -extern "C" DLL_PUBLIC void* qtd_QString_new_fromUtf8_at +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QString_new_fromUtf8_at (void* place, DArray text) { QString *__qt_this = new(place) QString; @@ -50,17 +50,17 @@ return __qt_this; } -extern "C" DLL_PUBLIC void* qtd_QString_placed_copy(void* string0, void* place) { +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QString_placed_copy(void* string0, void* place) { const QString& __qt_string0 = (const QString& ) *(QString *)string0; QString *result = new (place)QString((const QString& )__qt_string0); return (void *) result; } -extern "C" DLL_PUBLIC void qtd_QString_placed_ctor(void* place) { +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QString_placed_ctor(void* place) { new (place) QString(); } -extern "C" DLL_PUBLIC void qtd_QString_assign_fromUtf8 +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QString_assign_fromUtf8 (QString *__qt_this, DArray text) { *__qt_this = QString::fromUtf8((const char *)text.ptr, text.length); diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_core/QVariant_shell.cpp --- a/cpp/qt_core/QVariant_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_core/QVariant_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -17,12 +17,12 @@ #include #include "qtd_core.h" -extern "C" DLL_PUBLIC void qtd_QVariant_destructor(void *ptr) +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QVariant_destructor(void *ptr) { delete (QVariant *)ptr; } -extern "C" DLL_PUBLIC void qtd_QVariant_call_destructor(QVariant *ptr) +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QVariant_call_destructor(QVariant *ptr) { ptr->~QVariant(); } @@ -217,7 +217,7 @@ // Write virtual function overries used to decide on static/virtual calls // ---externC--- // QVariant::QVariant() -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant () { QVariant_QtDShell *__qt_this = new QVariant_QtDShell(); @@ -226,7 +226,7 @@ } // QVariant::QVariant(QDataStream & s) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QDataStream (void* s0) { QDataStream& __qt_s0 = (QDataStream& ) * (QDataStream *) s0; @@ -236,7 +236,7 @@ } // QVariant::QVariant(Qt::GlobalColor color) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_GlobalColor +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_GlobalColor (int color0) { Qt::GlobalColor __qt_color0 = (Qt::GlobalColor) color0; @@ -246,7 +246,7 @@ } // QVariant::QVariant(bool b) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_bool +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_bool (bool b0) { QVariant_QtDShell *__qt_this = new QVariant_QtDShell((bool )b0); @@ -255,7 +255,7 @@ } // QVariant::QVariant(const QBitArray & bitarray) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QBitArray +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QBitArray (void* bitarray0) { const QBitArray& __qt_bitarray0 = (const QBitArray& ) *(QBitArray *)bitarray0; @@ -265,7 +265,7 @@ } // QVariant::QVariant(const QByteArray & bytearray) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QByteArray +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QByteArray (void* bytearray0) { const QByteArray& __qt_bytearray0 = (const QByteArray& ) *(QByteArray *)bytearray0; @@ -276,7 +276,7 @@ // QVariant::QVariant(const QChar & qchar) // QVariant::QVariant(const QDate & date) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QDate +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QDate (void* date0) { const QDate& __qt_date0 = (const QDate& ) *(QDate *)date0; @@ -286,7 +286,7 @@ } // QVariant::QVariant(const QDateTime & datetime) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QDateTime +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QDateTime (void* datetime0) { const QDateTime& __qt_datetime0 = (const QDateTime& ) *(QDateTime *)datetime0; @@ -296,7 +296,7 @@ } // QVariant::QVariant(const QLine & line) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QLine +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QLine (void* line0) { const QLine& __qt_line0 = (const QLine& ) *(QLine *)line0; @@ -306,7 +306,7 @@ } // QVariant::QVariant(const QLineF & line) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QLineF +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QLineF (void* line0) { const QLineF& __qt_line0 = (const QLineF& ) *(QLineF *)line0; @@ -317,7 +317,7 @@ // QVariant::QVariant(const QList & list) // QVariant::QVariant(const QLocale & locale) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QLocale +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QLocale (void* locale0) { const QLocale& __qt_locale0 = (const QLocale& ) *(QLocale *)locale0; @@ -328,7 +328,7 @@ // QVariant::QVariant(const QMap & map) // QVariant::QVariant(const QPoint & pt) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QPoint +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QPoint (void* pt0) { const QPoint& __qt_pt0 = (const QPoint& ) *(QPoint *)pt0; @@ -338,7 +338,7 @@ } // QVariant::QVariant(const QPointF & pt) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QPointF +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QPointF (void* pt0) { const QPointF& __qt_pt0 = (const QPointF& ) *(QPointF *)pt0; @@ -348,7 +348,7 @@ } // QVariant::QVariant(const QRect & rect) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QRect +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QRect (void* rect0) { const QRect& __qt_rect0 = (const QRect& ) *(QRect *)rect0; @@ -358,7 +358,7 @@ } // QVariant::QVariant(const QRectF & rect) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QRectF +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QRectF (void* rect0) { const QRectF& __qt_rect0 = (const QRectF& ) *(QRectF *)rect0; @@ -368,7 +368,7 @@ } // QVariant::QVariant(const QRegExp & regExp) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QRegExp +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QRegExp (void* regExp0) { const QRegExp& __qt_regExp0 = (const QRegExp& ) *(QRegExp *)regExp0; @@ -378,7 +378,7 @@ } // QVariant::QVariant(const QSize & size) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QSize +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QSize (void* size0) { const QSize& __qt_size0 = (const QSize& ) *(QSize *)size0; @@ -388,7 +388,7 @@ } // QVariant::QVariant(const QSizeF & size) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QSizeF +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QSizeF (void* size0) { const QSizeF& __qt_size0 = (const QSizeF& ) *(QSizeF *)size0; @@ -398,7 +398,7 @@ } // QVariant::QVariant(const QString & string) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_String +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_String (DArray string0) { QString __qt_string0 = QString::fromUtf8((const char *)string0.ptr, string0.length); @@ -409,7 +409,7 @@ // QVariant::QVariant(const QStringList & stringlist) // QVariant::QVariant(const QTime & time) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QTime +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QTime (void* time0) { const QTime& __qt_time0 = (const QTime& ) *(QTime *)time0; @@ -419,7 +419,7 @@ } // QVariant::QVariant(const QUrl & url) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QUrl +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QUrl (void* url0) { const QUrl& __qt_url0 = (const QUrl& ) *(QUrl *)url0; @@ -429,7 +429,7 @@ } // QVariant::QVariant(const QVariant & other) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_QVariant +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_QVariant (void* other0) { const QVariant& __qt_other0 = (const QVariant& ) *(QVariant *)other0; @@ -439,7 +439,7 @@ } // QVariant::QVariant(const char * str) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_nativepointerchar +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_nativepointerchar (char* str0) { const char* __qt_str0 = (const char* ) str0; @@ -449,7 +449,7 @@ } // QVariant::QVariant(double d) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_double +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_double (double d0) { QVariant_QtDShell *__qt_this = new QVariant_QtDShell((double )d0); @@ -458,7 +458,7 @@ } // QVariant::QVariant(int i) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_int +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_int (int i0) { QVariant_QtDShell *__qt_this = new QVariant_QtDShell((int )i0); @@ -467,7 +467,7 @@ } // QVariant::QVariant(int typeOrUserType, const void * copy) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_int_nativepointervoid +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_int_nativepointervoid (int typeOrUserType0, void* copy1) { @@ -478,7 +478,7 @@ } // QVariant::QVariant(long long ll) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_long +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_long (qint64 ll0) { QVariant_QtDShell *__qt_this = new QVariant_QtDShell((qint64 )ll0); @@ -487,7 +487,7 @@ } // QVariant::QVariant(uint ui) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_uint +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_uint (uint ui0) { QVariant_QtDShell *__qt_this = new QVariant_QtDShell((uint )ui0); @@ -496,7 +496,7 @@ } // QVariant::QVariant(unsigned long long ull) -extern "C" DLL_PUBLIC void* qtd_QVariant_QVariant_ulong +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_QVariant_ulong (quint64 ull0) { QVariant_QtDShell *__qt_this = new QVariant_QtDShell((quint64 )ull0); @@ -505,7 +505,7 @@ } // QVariant::canConvert() const -extern "C" DLL_PUBLIC bool qtd_QVariant_canConvert +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QVariant_canConvert (void* __this_nativeId, QVariant::Type type) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -517,7 +517,7 @@ } // QVariant::clear() -extern "C" DLL_PUBLIC void qtd_QVariant_clear +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QVariant_clear (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -526,7 +526,7 @@ } // QVariant::cmp(const QVariant & other) const -extern "C" DLL_PUBLIC bool qtd_QVariant_cmp_QVariant +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QVariant_cmp_QVariant (void* __this_nativeId, void* other0) { @@ -540,7 +540,7 @@ } // QVariant::create(int type, const void * copy) -extern "C" DLL_PUBLIC void qtd_QVariant_create_int_nativepointervoid +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QVariant_create_int_nativepointervoid (void* __this_nativeId, int type0, void* copy1) @@ -552,7 +552,7 @@ } // QVariant::isNull() const -extern "C" DLL_PUBLIC bool qtd_QVariant_isNull +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QVariant_isNull (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -564,7 +564,7 @@ } // QVariant::isValid() const -extern "C" DLL_PUBLIC bool qtd_QVariant_isValid +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QVariant_isValid (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -576,7 +576,7 @@ } // QVariant::load(QDataStream & ds) -extern "C" DLL_PUBLIC void qtd_QVariant_load_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QVariant_load_QDataStream (void* __this_nativeId, void* ds0) { @@ -587,7 +587,7 @@ } // QVariant::operator<<(QDataStream & s) -extern "C" DLL_PUBLIC void qtd_QVariant_writeTo_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QVariant_writeTo_QDataStream (void* __this_nativeId, void* s0) { @@ -598,7 +598,7 @@ } // QVariant::operator=(const QVariant & other) -extern "C" DLL_PUBLIC void* qtd_QVariant_operator_assign_QVariant +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_operator_assign_QVariant (void* __this_nativeId, void* other0) { @@ -612,7 +612,7 @@ } // QVariant::operator==(const QVariant & v) const -extern "C" DLL_PUBLIC bool qtd_QVariant_operator_equal_QVariant +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QVariant_operator_equal_QVariant (void* __this_nativeId, void* v0) { @@ -626,7 +626,7 @@ } // QVariant::operator>>(QDataStream & s) -extern "C" DLL_PUBLIC void qtd_QVariant_readFrom_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QVariant_readFrom_QDataStream (void* __this_nativeId, void* s0) { @@ -637,7 +637,7 @@ } // QVariant::save(QDataStream & ds) const -extern "C" DLL_PUBLIC void qtd_QVariant_save_QDataStream +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QVariant_save_QDataStream (void* __this_nativeId, void* ds0) { @@ -648,7 +648,7 @@ } // QVariant::toBitArray() const -extern "C" DLL_PUBLIC void* qtd_QVariant_toBitArray +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_toBitArray (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -660,7 +660,7 @@ } // QVariant::toBool() const -extern "C" DLL_PUBLIC bool qtd_QVariant_toBool +QTD_EXTERN QTD_DLL_PUBLIC bool qtd_QVariant_toBool (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -672,7 +672,7 @@ } // QVariant::toByteArray() const -extern "C" DLL_PUBLIC void* qtd_QVariant_toByteArray +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_toByteArray (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -685,7 +685,7 @@ // QVariant::toChar() const // QVariant::toDate() const -extern "C" DLL_PUBLIC void* qtd_QVariant_toDate +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_toDate (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -697,7 +697,7 @@ } // QVariant::toDateTime() const -extern "C" DLL_PUBLIC void* qtd_QVariant_toDateTime +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_toDateTime (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -709,7 +709,7 @@ } // QVariant::toDouble(bool * ok) const -extern "C" DLL_PUBLIC double qtd_QVariant_toDouble_nativepointerbool +QTD_EXTERN QTD_DLL_PUBLIC double qtd_QVariant_toDouble_nativepointerbool (void* __this_nativeId, bool* ok0) { @@ -723,7 +723,7 @@ } // QVariant::toInt(bool * ok) const -extern "C" DLL_PUBLIC int qtd_QVariant_toInt_nativepointerbool +QTD_EXTERN QTD_DLL_PUBLIC int qtd_QVariant_toInt_nativepointerbool (void* __this_nativeId, bool* ok0) { @@ -737,7 +737,7 @@ } // QVariant::toLine() const -extern "C" DLL_PUBLIC QLine qtd_QVariant_toLine +QTD_EXTERN QTD_DLL_PUBLIC QLine qtd_QVariant_toLine (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -745,7 +745,7 @@ } // QVariant::toLineF() const -extern "C" DLL_PUBLIC QLineF qtd_QVariant_toLineF +QTD_EXTERN QTD_DLL_PUBLIC QLineF qtd_QVariant_toLineF (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -754,7 +754,7 @@ // QVariant::toList() const // QVariant::toLocale() const -extern "C" DLL_PUBLIC void* qtd_QVariant_toLocale +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_toLocale (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -766,7 +766,7 @@ } // QVariant::toLongLong(bool * ok) const -extern "C" DLL_PUBLIC qint64 qtd_QVariant_toLongLong_nativepointerbool +QTD_EXTERN QTD_DLL_PUBLIC qint64 qtd_QVariant_toLongLong_nativepointerbool (void* __this_nativeId, bool* ok0) { @@ -781,7 +781,7 @@ // QVariant::toMap() const // QVariant::toPoint() const -extern "C" DLL_PUBLIC QPoint qtd_QVariant_toPoint +QTD_EXTERN QTD_DLL_PUBLIC QPoint qtd_QVariant_toPoint (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -791,7 +791,7 @@ } // QVariant::toPointF() const -extern "C" DLL_PUBLIC QPointF qtd_QVariant_toPointF +QTD_EXTERN QTD_DLL_PUBLIC QPointF qtd_QVariant_toPointF (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -801,7 +801,7 @@ } // QVariant::toRect() const -extern "C" DLL_PUBLIC QRect qtd_QVariant_toRect +QTD_EXTERN QTD_DLL_PUBLIC QRect qtd_QVariant_toRect (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -811,7 +811,7 @@ } // QVariant::toRectF() const -extern "C" DLL_PUBLIC QRectF qtd_QVariant_toRectF +QTD_EXTERN QTD_DLL_PUBLIC QRectF qtd_QVariant_toRectF (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -821,7 +821,7 @@ } // QVariant::toRegExp() const -extern "C" DLL_PUBLIC void* qtd_QVariant_toRegExp +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_toRegExp (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -833,7 +833,7 @@ } // QVariant::toSize() const -extern "C" DLL_PUBLIC QSize qtd_QVariant_toSize +QTD_EXTERN QTD_DLL_PUBLIC QSize qtd_QVariant_toSize (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -844,7 +844,7 @@ } // QVariant::toSizeF() const -extern "C" DLL_PUBLIC QSizeF qtd_QVariant_toSizeF +QTD_EXTERN QTD_DLL_PUBLIC QSizeF qtd_QVariant_toSizeF (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -855,7 +855,7 @@ } // QVariant::toString() const -extern "C" DLL_PUBLIC void qtd_QVariant_toString +QTD_EXTERN QTD_DLL_PUBLIC void qtd_QVariant_toString (void* __this_nativeId, void* __java_return_value) { @@ -868,7 +868,7 @@ // QVariant::toStringList() const // QVariant::toTime() const -extern "C" DLL_PUBLIC void* qtd_QVariant_toTime +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_toTime (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -880,7 +880,7 @@ } // QVariant::toUInt(bool * ok) const -extern "C" DLL_PUBLIC uint qtd_QVariant_toUInt_nativepointerbool +QTD_EXTERN QTD_DLL_PUBLIC uint qtd_QVariant_toUInt_nativepointerbool (void* __this_nativeId, bool* ok0) { @@ -894,7 +894,7 @@ } // QVariant::toULongLong(bool * ok) const -extern "C" DLL_PUBLIC quint64 qtd_QVariant_toULongLong_nativepointerbool +QTD_EXTERN QTD_DLL_PUBLIC quint64 qtd_QVariant_toULongLong_nativepointerbool (void* __this_nativeId, bool* ok0) { @@ -908,7 +908,7 @@ } // QVariant::toUrl() const -extern "C" DLL_PUBLIC void* qtd_QVariant_toUrl +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_toUrl (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -920,7 +920,7 @@ } // QVariant::typeName() const -extern "C" DLL_PUBLIC char* qtd_QVariant_typeName +QTD_EXTERN QTD_DLL_PUBLIC char* qtd_QVariant_typeName (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -932,7 +932,7 @@ } // QVariant::type() const -extern "C" DLL_PUBLIC int qtd_QVariant_type +QTD_EXTERN QTD_DLL_PUBLIC int qtd_QVariant_type (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -944,7 +944,7 @@ } // QVariant::userType() const -extern "C" DLL_PUBLIC int qtd_QVariant_userType +QTD_EXTERN QTD_DLL_PUBLIC int qtd_QVariant_userType (void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; @@ -955,7 +955,7 @@ return __java_return_value; } -extern "C" DLL_PUBLIC void *qtd_QVariant_data(void* __this_nativeId) +QTD_EXTERN QTD_DLL_PUBLIC void *qtd_QVariant_data(void* __this_nativeId) { QVariant_QtDShell *__qt_this = (QVariant_QtDShell *) __this_nativeId; return __qt_this->data(); @@ -966,7 +966,7 @@ -extern "C" DLL_PUBLIC void* qtd_QVariant_placed_copy(void* variant0, void* place) { +QTD_EXTERN QTD_DLL_PUBLIC void* qtd_QVariant_placed_copy(void* variant0, void* place) { const QVariant& __qt_variant0 = (const QVariant& ) *(QVariant *)variant0; QVariant *result = new (place)QVariant((const QVariant& )__qt_variant0); return (void *) result; diff -r 12cec2d14e1c -r 9784459f0750 cpp/qt_qtd/ArrayOpsPrimitive_shell.cpp --- a/cpp/qt_qtd/ArrayOpsPrimitive_shell.cpp Tue May 25 20:14:04 2010 +0300 +++ b/cpp/qt_qtd/ArrayOpsPrimitive_shell.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -1,55 +1,24 @@ /** -* -* Copyright: Copyright QtD Team, 2008-2009 -* License: -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(qObject->userData(userDataId)); diff -r 12cec2d14e1c -r 9784459f0750 d2/qt/QGlobal.d --- a/d2/qt/QGlobal.d Tue May 25 20:14:04 2010 +0300 +++ b/d2/qt/QGlobal.d Wed Jun 02 19:38:05 2010 +0300 @@ -1,55 +1,16 @@ module qt.QGlobal; -public import qtd.String; public import qt.QDefines; -version (Tango) -{ - import tango.io.Stdout; - void writeln(string s) - { - Stdout(s).newline; - } - package import tango.stdc.stdlib, - tango.core.Memory; -} -else -{ - import std.stdio; - package import std.c.stdlib, - core.memory; -} - -T static_cast(T, U)(U obj) -{ - return cast(T)cast(void*)obj; -} +import + std.stdio, + std.c.stdlib, + core.memory; -template QT_BEGIN_NAMESPACE() { -} - -template QT_END_NAMESPACE() { -} - -template QT_BEGIN_HEADER() { -} - -template QT_END_HEADER() { -} +public import // TODO: import privately + qtd.String, + qtd.Core; -mixin QT_BEGIN_HEADER; -mixin QT_BEGIN_NAMESPACE; - -// Defined in qtd.QtdObject -extern(C) void qtd_QtdObject_delete(void* dPtr); - -version(cpp_shared) -{ - extern (C) void qtd_core_initCallBacks(void* toUtf8, void* del_d_obj); - static this() { - qtd_core_initCallBacks(&qtd_toUtf8, &qtd_QtdObject_delete); - } -} string tr(string arg) { return arg; @@ -62,9 +23,8 @@ { return cast(bool)((major<<16)|(minor<<8)|(patch)); } -//TODO(katrina) get this from the C++ side + const char[] QT_PACKAGEDATE_STR = "2008-09-27"; -//TODO(katrina) get this from the C++ side const char[] QT_PACKAGE_TAG = "gc9953de622c6a0f655322e0d9f5bd6dc2803b470"; /* @@ -93,7 +53,7 @@ alias qint64 qptrdiff; } -const byte QT_POINTER_SIZE = 8; +enum byte QT_POINTER_SIZE = 8; alias int QNoImplicitBoolCast; @@ -466,61 +426,6 @@ void * qMemCopy(void * dest, void * src, size_t n); void * qMemSet(void * dest, int c, size_t n); -struct QFlags(Enum) -{ -private: - alias void **Zero; - int i; - -public: - alias Enum enum_type; - - public static QFlags!(Enum) opCall(Enum)(QFlags f) { - QFlags!(Enum) res; - res.i = f.i; - return res; - } - - public static QFlags opCall(Enum)(Enum f) { - QFlags!(Enum) res; - res.i = f; - return res; - } - - public static QFlags opCall(Enum)(int f) { - QFlags!(Enum) res; - res.i = cast(Enum) f; - return res; - } - -// this(Zero = 0) : i(0) {} -// this(QFlag f) : i(f) {} - -// QFlags!(Enum) opAssign(QFlags f) { i = f.i; return *this; } - QFlags!(Enum) opAssign(int f) { i = f; return *this; } - QFlags!(Enum) opAndAssign(int mask) { i &= mask; return *this; } - QFlags!(Enum) opAndAssign(uint mask) { i &= mask; return *this; } - QFlags!(Enum) opOrAssign(QFlags f) { i |= f.i; return *this; } - QFlags!(Enum) opOrAssign(Enum f) { i |= f; return *this; } - QFlags!(Enum) opXorAssign(QFlags f) { i ^= f.i; return *this; } - QFlags!(Enum) opXorAssign(Enum f) { i ^= f; return *this; } - - int toInt() { return i; } - - QFlags!(Enum) opOr(QFlags f) { QFlags g; g.i = i | f.i; return g; } - QFlags!(Enum) opOr(Enum f) { QFlags g; g.i = i | f; return g; } - QFlags!(Enum) opXor(QFlags f) { QFlags g; g.i = i ^ f.i; return g; } - QFlags!(Enum) opXor(Enum f) { QFlags g; g.i = i ^ f; return g; } - QFlags!(Enum) opAnd(int mask) { QFlags g; g.i = i & mask; return g; } - QFlags!(Enum) opAnd(uint mask) { QFlags g; g.i = i & mask; return g; } - QFlags!(Enum) opAnd(Enum f) { QFlags g; g.i = i & f; return g; } - QFlags!(Enum) opCom() { QFlags g; g.i = ~i; return g; } - -// bool operator!() { return !i; } - -// bool testFlag(Enum f) { return i & f; } -} - /* TODO typesafety #define Q_DECLARE_FLAGS(Flags, Enum)\ typedef QFlags Flags; @@ -553,42 +458,43 @@ This gives us the possibility to check which modules the user can use. These are purely compile time checks and will generate no code. */ - -/* Qt modules */ +enum : ushort +{ + /* Qt modules */ -const ushort QT_MODULE_CORE = 0x0001; -const ushort QT_MODULE_GUI = 0x0002; -const ushort QT_MODULE_NETWORK = 0x0004; -const ushort QT_MODULE_OPENGL = 0x0008; -const ushort QT_MODULE_SQL = 0x0010; -const ushort QT_MODULE_XML = 0x0020; -const ushort QT_MODULE_QT3SUPPORTLIGHT = 0x0040; -const ushort QT_MODULE_QT3SUPPORT = 0x0080; -const ushort QT_MODULE_SVG = 0x0100; -const ushort QT_MODULE_ACTIVEQT = 0x0200; -const ushort QT_MODULE_GRAPHICSVIEW = 0x0400; -const ushort QT_MODULE_SCRIPT = 0x0800; -const ushort QT_MODULE_XMLPATTERNS = 0x1000; -const ushort QT_MODULE_HELP = 0x2000; -const ushort QT_MODULE_TEST = 0x4000; -const ushort QT_MODULE_DBUS = 0x8000; + QT_MODULE_CORE = 0x0001, + QT_MODULE_GUI = 0x0002, + QT_MODULE_NETWORK = 0x0004, + QT_MODULE_OPENGL = 0x0008, + QT_MODULE_SQL = 0x0010, + QT_MODULE_XML = 0x0020, + QT_MODULE_QT3SUPPORTLIGHT = 0x0040, + QT_MODULE_QT3SUPPORT = 0x0080, + QT_MODULE_SVG = 0x0100, + QT_MODULE_ACTIVEQT = 0x0200, + QT_MODULE_GRAPHICSVIEW = 0x0400, + QT_MODULE_SCRIPT = 0x0800, + QT_MODULE_XMLPATTERNS = 0x1000, + QT_MODULE_HELP = 0x2000, + QT_MODULE_TEST = 0x4000, + QT_MODULE_DBUS = 0x8000, /* Qt editions */ -const ushort QT_EDITION_CONSOLE = (QT_MODULE_CORE + QT_EDITION_CONSOLE = (QT_MODULE_CORE | QT_MODULE_NETWORK | QT_MODULE_SQL | QT_MODULE_SCRIPT | QT_MODULE_XML | QT_MODULE_XMLPATTERNS | QT_MODULE_TEST - | QT_MODULE_DBUS); -const ushort QT_EDITION_DESKTOPLIGHT = (QT_MODULE_CORE + | QT_MODULE_DBUS), + QT_EDITION_DESKTOPLIGHT = (QT_MODULE_CORE | QT_MODULE_GUI | QT_MODULE_QT3SUPPORTLIGHT | QT_MODULE_TEST - | QT_MODULE_DBUS); -const ushort QT_EDITION_OPENSOURCE = (QT_MODULE_CORE + | QT_MODULE_DBUS), + QT_EDITION_OPENSOURCE = (QT_MODULE_CORE | QT_MODULE_GUI | QT_MODULE_NETWORK | QT_MODULE_OPENGL @@ -602,15 +508,16 @@ | QT_MODULE_GRAPHICSVIEW | QT_MODULE_HELP | QT_MODULE_TEST - | QT_MODULE_DBUS); -const ushort QT_EDITION_DESKTOP = (QT_EDITION_OPENSOURCE - | QT_MODULE_ACTIVEQT); -const ushort QT_EDITION_UNIVERSAL = QT_EDITION_DESKTOP; -const ushort QT_EDITION_ACADEMIC = QT_EDITION_DESKTOP; -const ushort QT_EDITION_EDUCATIONAL = QT_EDITION_DESKTOP; -const ushort QT_EDITION_EVALUATION = QT_EDITION_DESKTOP; + | QT_MODULE_DBUS), + QT_EDITION_DESKTOP = (QT_EDITION_OPENSOURCE + | QT_MODULE_ACTIVEQT), + QT_EDITION_UNIVERSAL = QT_EDITION_DESKTOP, + QT_EDITION_ACADEMIC = QT_EDITION_DESKTOP, + QT_EDITION_EDUCATIONAL = QT_EDITION_DESKTOP, + QT_EDITION_EVALUATION = QT_EDITION_DESKTOP +} -mixin QT_END_NAMESPACE; +/+ private struct Align @@ -632,55 +539,6 @@ + aligned; } -template InstanceSize(T) -{ - static if( is( T == Object ) ) - const InstanceSize = 2*(void*).sizeof; - else - const InstanceSize = Max!( - AlignPad!( - InstanceSize!(Super!(T)), - InterfaceCount!(T)*(void*).sizeof), - - AlignPad!( - InstanceSizeImpl!(T, 0), - + InterfaceCount!(T)*(void*).sizeof)); -} - -private -template Super(T) -{ - static if( is( T S == super ) ) - alias First!(S) Super; - else - static assert(false, "Can't get super of "~T.mangleof); -} - -private -template First(T) -{ - alias T First; -} - -private -template First(T, Ts...) -{ - alias T First; -} - -private -template InstanceSizeImpl(T, size_t i) -{ - static if( i < T.tupleof.length ) - const InstanceSizeImpl = Max!( - T.tupleof[i].offsetof + T.tupleof[i].sizeof, - InstanceSizeImpl!(T, i+1)); - else - // This is necessary to account for classes without member - // variables. - const InstanceSizeImpl = 2*(void*).sizeof; -} - private template Max(size_t a, size_t b) { @@ -689,51 +547,6 @@ else const Max = b; } - -private -template InterfaceCount(T) -{ - static if( is( T == Object ) ) - const InterfaceCount = 0u; - else static if( is( T S == super ) ) - const InterfaceCount = InterfaceCountImpl!(S); -} - -private -template InterfaceCountImpl(TBase, TInterfaces...) -{ - const InterfaceCountImpl = TInterfaces.length; -} - -/+ -scope class StackObject(C) -{ - byte[InstanceSize!(C)] data; - bool constructed; - - C opCall(A...)(A args) - { - assert(!constructed); - - auto r = new(&data)C(args); - r.__stackAllocated = true; - constructed = true; - - return r; - } - - ~this() - { - if (constructed) - { - auto obj = cast(C)&data; - delete obj; - } - } -} +/ -alias void DArray; - -mixin QT_END_HEADER; - +alias void DArray; \ No newline at end of file diff -r 12cec2d14e1c -r 9784459f0750 d2/qt/core/QList.d --- a/d2/qt/core/QList.d Tue May 25 20:14:04 2010 +0300 +++ b/d2/qt/core/QList.d Wed Jun 02 19:38:05 2010 +0300 @@ -98,17 +98,17 @@ uint sharable; void*[1] array; } - + enum { DataHeaderSize = Data.sizeof - (void*).sizeof } - + static Data shared_null; Data *d; - + static this() { shared_null = Data(Atomic!int(1), 0, 0, 0, true, [null]); } - + // Data *detach(); // remove in 5.0 @@ -128,7 +128,7 @@ return x; } - + void realloc(int alloc) { // assert(d.ref_ == 1); @@ -141,7 +141,7 @@ if (!alloc) d.begin = d.end = 0; } - + void** append() { // #TODO Q_ASSERT(d.ref_ == 1); @@ -318,10 +318,12 @@ import std.stdio; import std.conv; -alias void Dummy; // DMD bug #3538 +alias void Dummy; // DMD bug #3538 struct QList(T, alias Default = Dummy) { + alias T ElementType; + static if (is(Default == Dummy)) alias QTypeInfo!T TI; else @@ -330,7 +332,7 @@ struct Node { void *v; - + static if (isQObjectType!T || isObjectType!T || isValueType!T || is(T == string)) // binded Qt types { T t() @@ -352,7 +354,7 @@ } } else // native types - { + { ref T t() { static if(TI.isLarge || TI.isStatic) @@ -362,7 +364,7 @@ } } } - + union { QListData p; QListData.Data* d; @@ -375,15 +377,15 @@ writeln("QList atomic ", d.ref_.load()); } */ - + static QList!T opCall() { QList!T res; // writeln("QList opCall"); - + res.d = &QListData.shared_null; res.d.ref_.increment(); - + return res; } @@ -416,12 +418,12 @@ } return this; } - + int length() const { return p.size(); } int size() const { return length; } void detach() { if (d.ref_.load() != 1) detach_helper(); } - + private void detach_helper() { Node *n = cast(Node*)(p.begin()); @@ -430,7 +432,7 @@ if (!x.ref_.decrement()) free(x); } - + void append(const T t) // fix to const ref for complex types TODO { detach(); @@ -444,9 +446,9 @@ node_construct(cast(Node*)(p.append()), cpy); } } - + alias append opCatAssign; - + static if (isQObjectType!T || isObjectType!T || isValueType!T || is(T == string)) { T at(int i) const @@ -472,8 +474,8 @@ assert(i >= 0 && i < p.size(), "QList!T.at(): index out of range"); return (cast(Node*)(p.at(i))).t(); } - } - + } + static if (isQObjectType!T || isObjectType!T || isValueType!T) //binded types void node_construct(Node *n, const T t) { @@ -506,7 +508,7 @@ else *cast(T*)(n) = cast(T)(t); } - + void node_copy(Node *from, Node *to, Node *src) { // writeln("QList node_copy"); @@ -527,13 +529,13 @@ T.__constructPlacedNativeCopy(src++, from++); // new (from++) T(*reinterpret_cast(src++)); } else static if (TI.isLarge || TI.isStatic) - while(from != to) + while(from != to) (from++).v = q_new!T(*cast(T*)((src++).v)); else static if (TI.isComplex) while(from != to) q_new_at(from++, *cast(T*)(src++)); } - + T[] toArray() { T[] res; @@ -547,7 +549,7 @@ } return res; } - + void free(QListData.Data* data) { // writeln("QList data destroyed"); @@ -556,7 +558,7 @@ if (data.ref_.load() == 0) qFree(data); } - + void node_destruct(Node *from, Node *to) { static if (isQObjectType!T || isObjectType!T) //binded types @@ -583,7 +585,7 @@ while (from != to) --to, cast(T*)(to).__dtor(); } } - + //iteration support int opApply(int delegate(ref T) dg) { diff -r 12cec2d14e1c -r 9784459f0750 d2/qt/core/QMetaObject.d --- a/d2/qt/core/QMetaObject.d Tue May 25 20:14:04 2010 +0300 +++ b/d2/qt/core/QMetaObject.d Wed Jun 02 19:38:05 2010 +0300 @@ -1,15 +1,17 @@ module qt.core.QMetaObject; -import qt.QGlobal; -import qt.core.QObject; -import qtd.QtdObject; - -import std.algorithm; -import std.string; -import std.stdio; - -import qtd.meta.Runtime; -import qtd.Marshal; +import + qt.QGlobal, + qt.core.QObject, + qtd.QtdObject, + std.algorithm, + qtd.meta.Runtime, + qtd.meta.Compiletime, + qtd.Marshal, + qtd.MOC, + std.string, + std.typetuple, + std.c.stdlib; class QMetaArgument : Meta { @@ -22,13 +24,13 @@ // QMetaArgument[] arguments; string signature; int indexOfMethod; - + this(string signature_, int indexOfMethod_) { signature = signature_; indexOfMethod = indexOfMethod_; } - + string args() const { int openBracket = indexOf(signature, '('); @@ -37,7 +39,7 @@ else return ""; } - + string name() const { int openBracket = indexOf(signature, '('); @@ -55,7 +57,7 @@ class QMetaSignal : QMetaMethod { alias typeof(this) This; - + this(string signature_, int indexOfMethod_) { super(signature_, indexOfMethod_); @@ -70,7 +72,7 @@ class QMetaSlot : QMetaMethod { alias typeof(this) This; - + this(string signature_, int indexOfMethod_) { super(signature_, indexOfMethod_); @@ -102,7 +104,7 @@ alias typeof(this) This; private this() {} - + enum Call { InvokeMetaMethod, @@ -116,7 +118,7 @@ QueryPropertyUser, CreateInstance } - + private { QMetaObjectNative* _nativeId; @@ -208,7 +210,7 @@ { return _base; } - + /++ +/ QMetaObjectNative* nativeId() @@ -222,17 +224,17 @@ { return _classInfo; } - + const (QMetaMethod[]) methods() { return _methods; } - + void addMethod(QMetaMethod method_) { _methods ~= method_; } - + QMetaMethod lookUpMethod(string slot) { foreach (method; _methods) @@ -243,7 +245,7 @@ else return null; } - + QMetaSignal lookUpSignal(string signal) { foreach (method; _methods) @@ -276,11 +278,11 @@ result ~= _base.lookUpSignalOverloads(signalName); return result; } - + private QMetaObject lookupDerived(void*[] moIds) { assert (moIds.length >= 1); - + for (auto mo = _firstDerived; mo !is null; mo = mo._next) { if (mo._nativeId == moIds[0]) @@ -291,19 +293,19 @@ return mo.lookupDerived(moIds[1..$]); } } - + // no initialized wrapper that matches the native object. // use the base class wrapper return this; } - + QObject getObject(void* nativeObjId) { QObject result; if (nativeObjId) { - result = cast(QObject)qtd_get_d_qobject(nativeObjId); + result = cast(QObject)qtd_get_d_qobject(nativeObjId); if (!result) { auto moId = qtd_QObject_metaObject(nativeObjId); @@ -317,9 +319,9 @@ for (void* tmp = moId;;) { - tmp = qtd_QMetaObject_superClass(tmp); + tmp = qtd_QMetaObject_superClass(tmp); assert(tmp); - if (tmp == _nativeId) + if (tmp == _nativeId) break; moCount++; } @@ -337,12 +339,12 @@ return result; } - + static void activate(QObject sender, QMetaObject m, int local_signal_index, void **argv) { qtd_QMetaObject_activate_3(sender.__nativeId, m.nativeId, local_signal_index, argv); } - + static void activate(QObject sender, QMetaObject m, int from_local_signal_index, int to_local_signal_index, void **argv) { qtd_QMetaObject_activate_4(sender.__nativeId, m.nativeId, from_local_signal_index, to_local_signal_index, argv); @@ -354,7 +356,7 @@ { return qtd_QMetaObject_connect(sender.__nativeId, signal_index, receiver.__nativeId, method_index, type, types); } - + int indexOfMethod_Cpp(string method) { return qtd_QMetaObject_indexOfMethod(_nativeId, toStringz(method)); @@ -423,11 +425,33 @@ { int signalIndex = signal.indexOfMethod; int methodIndex = method.indexOfMethod; + success = QMetaObject.connect(sender, signalIndex, receiver, methodIndex, type); } if(!success) - throw new QMetaException("QMetaObject: Signal " ~ signalString ~ " and slot " ~ methodString ~ " cannot be found"); + throw new QMetaException("QMetaObject: Signal " ~ signalString ~ " cannot be connected to slot " ~ methodString); + } +} + +/** + */ +mixin template Q_CLASSINFO(string name, string value) +{ + mixin InnerAttribute!("Q_CLASSINFO", AttributeOptions.allowMultiple, name, value); +} + +version (QtdUnittest) +{ + unittest + { + static class Test : QObject + { + mixin Q_CLASSINFO!("author", "Sabrina Schweinsteiger"); + mixin Q_CLASSINFO!("url", "http://doc.moosesoft.co.uk/1.0/"); + + mixin Q_OBJECT; + } } } diff -r 12cec2d14e1c -r 9784459f0750 d2/qt/core/QMetaType.d --- a/d2/qt/core/QMetaType.d Tue May 25 20:14:04 2010 +0300 +++ b/d2/qt/core/QMetaType.d Wed Jun 02 19:38:05 2010 +0300 @@ -2,13 +2,6 @@ public import qt.core.Qt; private import qt.core.QDataStream; -version (Tango) -{ - import tango.core.Array; - import tango.stdc.stringz; - import tango.core.Traits; -} - alias extern(C) void *function(void *copy) Ctor; alias extern(C) void function(void *obj) Dtor; alias extern(C) void function(void *stream, void * object) StreamOp; @@ -45,7 +38,7 @@ return cast(void*)data; } } - + extern(C) void dtor(void* obj) { @@ -65,7 +58,7 @@ public int qRegisterMetaType(T)(string name = null) { if (!name.length) - name = typeid(T).toString; + name = typeid(T).toString; return qtd_registerType(toStringz(name), &MetaTypeOps!(T).ctor, &MetaTypeOps!(T).dtor); } @@ -86,20 +79,20 @@ static void function (ref QDataStream, ref T) LoadOp; SaveOp = saveOp; LoadOp = loadOp; - + if (!name.length) - name = typeid(T).toString; - + name = typeid(T).toString; + extern(C) void saveOpC(void *stream, void *object) { QDataStream dstream = new DataStreamPriv(stream); Stdout(object).newline; static if (is(T == class) || is(T == interface)) - SaveOp(dstream, cast(T)object); - else + SaveOp(dstream, cast(T)object); + else SaveOp(dstream, *cast(T*)object); } - + extern(C) void loadOpC(void *stream, void *object) { //return stream; diff -r 12cec2d14e1c -r 9784459f0750 d2/qtd/Array.d --- a/d2/qtd/Array.d Tue May 25 20:14:04 2010 +0300 +++ b/d2/qtd/Array.d Wed Jun 02 19:38:05 2010 +0300 @@ -11,10 +11,7 @@ */ module qtd.Array; -version (Tango) - import tango.stdc.string; -else - import core.stdc.string; +import core.stdc.string; void remove(T)(ref T[] haystack, T needle) { diff -r 12cec2d14e1c -r 9784459f0750 d2/qtd/ArrayOpsPrimitive.d --- a/d2/qtd/ArrayOpsPrimitive.d Tue May 25 20:14:04 2010 +0300 +++ b/d2/qtd/ArrayOpsPrimitive.d Wed Jun 02 19:38:05 2010 +0300 @@ -1,117 +1,76 @@ /** -* -* Copyright: Copyright QtD Team, 2008-2009 -* License: metaTypes; + + ClassDef cdef; } + + int lengthOfEscapeSequence(string s, uint i) { if (s[i] != '\\' || i >= s.length - 1) @@ -187,10 +205,31 @@ } } -string generateCode(string className, FunctionDef[] signalList, FunctionDef[] slotList) +ClassInfoDef[] generateClassInfoDefs(T)() { - auto gen = Generator("", []); + ClassInfoDef[] defs; + alias GetAttributes!(T, "Q_CLASSINFO") classInfos; + // COMPILER BUG: + enum len = classInfos.length; + foreach (i, _; Repeat!(void, len)) + defs ~= ClassInfoDef(classInfos[i].tuple[2], classInfos[i].tuple[3]); + + return defs; +} +void generateClassInfos(ref Generator gen) +{ + if (!gen.cdef.classInfoList.length) + return; + + gen.output ~= "\n // classinfo: key, value\n"; + + foreach (c; gen.cdef.classInfoList) + gen.output ~= format_ctfe(" ${}, ${},\n", strreg(gen, c.name), strreg(gen, c.value)); +} + +string generateCode(ref Generator gen) +{ /* bool isQt = (cdef->classname == "Qt"); bool isQObject = (cdef->classname == "QObject"); bool isConstructible = !cdef->constructorList.isEmpty(); @@ -229,11 +268,11 @@ gen.output ~= "private static const uint[] qt_meta_data = [\n"; gen.output ~= format_ctfe("\n // content:\n"); gen.output ~= format_ctfe(" ${}, // revision\n", 2); - gen.output ~= format_ctfe(" ${}, // classname\n", strreg(gen, className)); - gen.output ~= format_ctfe(" ${}, ${}, // classinfo\n", 0, 0); -// index += cdef->classInfoList.count() * 2; + gen.output ~= format_ctfe(" ${}, // classname\n", strreg(gen, gen.cdef.classname)); + gen.output ~= format_ctfe(" ${}, ${}, // classinfo\n", gen.cdef.classInfoList.length, gen.cdef.classInfoList.length ? index : 0); + index += gen.cdef.classInfoList.length * 2; - int methodCount = signalList.length + slotList.length;// + cdef->methodList.count(); + int methodCount = gen.cdef.signalList.length + gen.cdef.slotList.length;// + cdef->methodList.count(); gen.output ~= format_ctfe(" ${}, ${}, // methods\n", methodCount, methodCount ? index : 0); index += methodCount * 5; gen.output ~= format_ctfe(" ${}, ${}, // properties\n", propertyList.length, propertyList.length ? index : 0); @@ -251,17 +290,17 @@ // // Build classinfo array // -// generateClassInfos(); + generateClassInfos(gen); // // Build signals array first, otherwise the signal indices would be wrong // - generateFunctions(gen, signalList, "signal", MethodFlags.MethodSignal); + generateFunctions(gen, gen.cdef.signalList, "signal", MethodFlags.MethodSignal); // // Build slots array // - generateFunctions(gen, slotList, "slot", MethodFlags.MethodSlot); + generateFunctions(gen, gen.cdef.slotList, "slot", MethodFlags.MethodSlot); // // Build method array @@ -344,18 +383,6 @@ return ret; } -string dDeclArgs(Args...)() -{ - string ret; - foreach(i, _; Args) - { - if (i > 0) - ret ~= ", "; - ret ~= fullName!(Args[i]); - } - return ret; -} - size_t commaCount(int argCount) { size_t ret = 0; @@ -364,7 +391,7 @@ return ret; } -FunctionDef[] generateFuncDefs(alias newFunc, Funcs...)() +FunctionDef[] genFuncDefs(alias newFunc, Funcs...)() { typeof(return) res; enum funcsCount = Funcs.length; @@ -446,10 +473,26 @@ return res ~ "}\n"; } +string generateMetaInfo(T)() +{ + Generator gen; + + gen.cdef.classname = T.stringof; + + gen.cdef.slotList = genFuncDefs!(newSignal, T.signals)(); + gen.cdef.signalList = genFuncDefs!(newSlot, T.slots)(); + gen.cdef.classInfoList = generateClassInfoDefs!T(); + + generateCode(gen); + + return gen.output; +} + mixin template Q_OBJECT() { import std.typetuple; import qtd.Marshal; + import std.stdio; import qt.core.QString; // for QStringUtil.toNative public: // required to override the outside scope protection. @@ -460,13 +503,10 @@ alias findSlots!(This) slots; alias TypeTuple!(signals, slots) methods; - mixin (generateSignalEmitters(signals.length)); mixin (generateSlotAliases(slots.length)); - - auto signalList = generateFuncDefs!(newSignal, signals)(); - auto slotList = generateFuncDefs!(newSlot, slots)(); - mixin (generateCode(typeof(this).stringof, signalList, slotList)); + //pragma(msg, generateMetaInfo!This()); + mixin (generateMetaInfo!This()); protected int qt_metacall(QMetaObject.Call _c, int _id, void **_a) { @@ -490,25 +530,38 @@ @property override QMetaObject metaObject() const { return staticMetaObject(); } - private static __gshared QMetaObject _staticMetaObject; - private static __gshared QMetaObjectNative _nativeStaticMetaObject; + private static + { + __gshared QMetaObject staticMetaObject_; + __gshared QMetaObjectNative nativeStaticMetaObject_; + bool staticMoInited_; + } @property static QMetaObject staticMetaObject() { - // TODO: synchronize or enable static constructors in circular modules - if(!_staticMetaObject) + // using a thread-local flag to mitigate + // the performance hit caused by lazy initialization + if(!staticMoInited_) { - alias BaseClassesTuple!(This)[0] Base; + synchronized(qtdMoLock) + { + if (!staticMetaObject_) + { + alias BaseClassesTuple!(This)[0] Base; - _nativeStaticMetaObject = QMetaObjectNative( - Base.staticMetaObject.nativeId, - qt_meta_stringdata.ptr, - qt_meta_data.ptr, null); + nativeStaticMetaObject_ = QMetaObjectNative( + Base.staticMetaObject.nativeId, + qt_meta_stringdata.ptr, + qt_meta_data.ptr, null); - QMetaObject.create!This(&_nativeStaticMetaObject); + QMetaObject.create!This(&nativeStaticMetaObject_); + } + } + staticMoInited_ = true; } - return _staticMetaObject; + + return staticMetaObject_; } /*internal*/ static void setStaticMetaObject(QMetaObject m) diff -r 12cec2d14e1c -r 9784459f0750 d2/qtd/Marshal.d --- a/d2/qtd/Marshal.d Tue May 25 20:14:04 2010 +0300 +++ b/d2/qtd/Marshal.d Wed Jun 02 19:38:05 2010 +0300 @@ -8,7 +8,7 @@ import std.string : startsWith; -template isQObjectType(T) +template isQObjectType(T) // { enum isQObjectType = is(T.__isQObjectType); } @@ -33,7 +33,7 @@ enum isQtType = isQObjectType!(T) || isObjectType!(T) || isValueType!(T) || is(T.__isQtType); } */ -template isNativeType(T) // type that doesn't require conversion i.e. is the same in C++ and D +template isNativeType(T) { enum isNativeType = isNumeric!T || is(T == bool) || is(T == struct); } @@ -45,7 +45,7 @@ template isQList(T) { - enum isQList = startsWith(Unqual!(T).stringof, "QList!"); + enum isQList = startsWith(Unqual!(T).stringof, "QList!"); //hack } // returns full name of enum: @@ -64,7 +64,6 @@ enum enumFullName = qualifiedDName!T; } - // converts a D argument type to C++ for registering in Qt meta system string qtDeclArg(T)() { @@ -76,11 +75,10 @@ return "QString"; else static if (isQList!T) { - alias templateParam!T ElementType; - static if (is(ElementType == string)) + static if (is(T.ElementType == string)) return "QStringList"; else - return "QList<" ~ qtDeclArg!(templateParam!T)() ~ ">"; + return "QList<" ~ qtDeclArg!(T.ElementType)() ~ ">"; } else static if (is(T == enum)) return enumFullName!T; @@ -103,7 +101,7 @@ else static if (isValueType!(Args[${0}])) { // COMPILER BUG: 'new' chokes on Args[argIndex], hence the alias - alias Args[${0}] Args${0}; + alias Args[${0}] Args${0}; auto _out${0} = new Args${0}(Args[${0}].__constructNativeCopy(_a[${0}])); } else static if (isStringType!(Args[${0}])) diff -r 12cec2d14e1c -r 9784459f0750 d2/qtd/QtdObject.d --- a/d2/qtd/QtdObject.d Tue May 25 20:14:04 2010 +0300 +++ b/d2/qtd/QtdObject.d Wed Jun 02 19:38:05 2010 +0300 @@ -10,6 +10,7 @@ */ module qtd.QtdObject; +import qtd.Core; enum QtdObjectFlags : ubyte { @@ -61,14 +62,14 @@ } } -extern(C) void qtd_QtdObject_delete(void* dId) -{ - auto obj = cast(QtdObject)dId; +mixin(qtdExport("void", "QtdObject_delete", "void* dId", + q{ + auto obj = cast(QtdObject)dId; - if (!(obj.__flags & QtdObjectFlags.dOwnership)) - { - // Avoid deleting native object twice - obj.__setFlags(QtdObjectFlags.nativeOwnership, true); - delete obj; - } -} + if (!(obj.__flags & QtdObjectFlags.dOwnership)) + { + // Avoid deleting native object twice + obj.__setFlags(QtdObjectFlags.nativeOwnership, true); + delete obj; + } + })); diff -r 12cec2d14e1c -r 9784459f0750 d2/qtd/String.d --- a/d2/qtd/String.d Tue May 25 20:14:04 2010 +0300 +++ b/d2/qtd/String.d Wed Jun 02 19:38:05 2010 +0300 @@ -11,7 +11,9 @@ module qtd.String; -import core.stdc.string; +import + core.stdc.string, + qtd.Core; import std.utf : toUTF8; alias immutable(char)* stringz; @@ -67,10 +69,11 @@ return s ? s[0 .. strlen(s)].idup : cast(string)null; } -extern(C) void qtd_toUtf8(wchar* arr, uint size, string* str) -{ - *str = toUTF8(arr[0..size]); -} +mixin(qtdExport("void", "toUtf8", "wchar* arr, uint size, string* str", + q{ + *str = toUTF8(arr[0..size]); + })); + diff -r 12cec2d14e1c -r 9784459f0750 d2/qtd/meta/Compiletime.d --- a/d2/qtd/meta/Compiletime.d Tue May 25 20:14:04 2010 +0300 +++ b/d2/qtd/meta/Compiletime.d Wed Jun 02 19:38:05 2010 +0300 @@ -13,17 +13,8 @@ import std.string : startsWith; -/* -uint startsWith(string s, string pattern) -{ - if (pattern.length <= s.length && s[0..pattern.length] == pattern) - return pattern.length; - - return 0; -} -*/ - - +/** + */ enum standardNamespace = "qtd"; template Alias(A...) if (A.length == 1) @@ -43,12 +34,6 @@ alias A tuple; } -// returns the type of a template parameter if there is one -template templateParam(U : V!(U), alias V) -{ - alias U templateParam; -} - /** Returns a tuple with T repeated count times. @@ -497,14 +482,14 @@ version (QtdUnittest) { - mixin template MyAttribute(alias symbol, A...) + mixin template QtdCustomAttribute(alias symbol, A...) { - mixin Attribute!(symbol, "MyAttribute", AttributeOptions.allowMultiple, A); + mixin Attribute!(symbol, "QtdCustomAttribute", AttributeOptions.allowMultiple, A); } - mixin template ClassInfo(string name, alias value) + mixin template QtdCustomInnerAttribute(string name, alias value) { - mixin InnerAttribute!("ClassInfo", AttributeOptions.allowMultiple, name, value); + mixin InnerAttribute!("QtdCustomInnerAttribute", AttributeOptions.allowMultiple, name, value); } unittest @@ -513,45 +498,49 @@ { // inner C attributes mixin InnerAttribute!("Inner", 33); // generic - mixin ClassInfo!("version", 123); - mixin ClassInfo!("author", "James Bond"); + mixin QtdCustomInnerAttribute!("version", 123); + mixin QtdCustomInnerAttribute!("author", "James Bond"); void foo() {}; // foo attributes mixin Attribute!(foo, "SomeAttribute", 42); - mixin MyAttribute!(foo, 1, 2); - mixin MyAttribute!(foo, 3, 4); + mixin QtdCustomAttribute!(foo, 1, 2); + mixin QtdCustomAttribute!(foo, 3, 4); alias GetAttributes!(typeof(this), "Inner") innerAttrs; static assert(innerAttrs[0].tuple[0] == "Inner"); } // outer C attribute - mixin MyAttribute!(C, 24); + mixin QtdCustomAttribute!(C, 24); alias GetAttributes!(C, "Inner") innerAttrs; static assert(innerAttrs[0].tuple[0] == "Inner" && innerAttrs[0].tuple[2] == 33); - alias GetAttributes!(C, "ClassInfo") ciAttrs; + alias GetAttributes!(C, "QtdCustomInnerAttribute") ciAttrs; static assert(ciAttrs[0].tuple[2] == "version" && ciAttrs[0].tuple[3] == 123); + /+ Fails on Windows but passes on Linux alias GetAttributes!(C.foo, "SomeAttribute") someAttr; static assert(someAttr.length == 1); static assert(someAttr[0].tuple[0] == "SomeAttribute"); - alias GetAttributes!(C.foo, "MyAttribute") myAttrs; + alias GetAttributes!(C.foo, "QtdCustomAttribute") myAttrs; //COMPILER BUG: cannot 'alias myAttrs[0].tuple myAttrs_0'; - static assert(myAttrs[0].tuple[0] == "MyAttribute"); + + static assert(myAttrs[0].tuple[0] == "QtdCustomAttribute"); static assert(myAttrs[0].tuple[2] == 1 && myAttrs[0].tuple[3] == 2); - static assert(myAttrs[1].tuple[0] == "MyAttribute"); + static assert(myAttrs[1].tuple[0] == "QtdCustomAttribute"); static assert(myAttrs[1].tuple[2] == 3 && myAttrs[1].tuple[3] == 4); + +/ /+ BUG: Fails: local declarations cannot be accessed as parent.localDecl - alias GetAttributes!(C, "MyAttribute") myAttrs2; - static assert(myAttrs2[0].tuple[0] == "MyAttribute"); + alias GetAttributes!(C, "QtdCustomAttribute") myAttrs2; + static assert(myAttrs2[0].tuple[0] == "QtdCustomAttribute"); static assert(myAttrs2[0].tuple[1] == 24); +/ + } } \ No newline at end of file diff -r 12cec2d14e1c -r 9784459f0750 examples/opengl/hellogl/window.d --- a/examples/opengl/hellogl/window.d Tue May 25 20:14:04 2010 +0300 +++ b/examples/opengl/hellogl/window.d Wed Jun 02 19:38:05 2010 +0300 @@ -40,6 +40,7 @@ import qt.gui.QHBoxLayout; import glwidget; +import std.stdio; class Window : public QWidget { @@ -47,31 +48,32 @@ this() { glWidget = new GLWidget; - + xSlider = createSlider(); ySlider = createSlider(); zSlider = createSlider(); - + connect(xSlider, "valueChanged", glWidget, "setXRotation"); connect(glWidget, "xRotationChanged", xSlider, "setValue"); connect(ySlider, "valueChanged", glWidget, "setYRotation"); connect(glWidget, "yRotationChanged", ySlider, "setValue"); connect(zSlider, "valueChanged", glWidget, "setZRotation"); connect(glWidget, "zRotationChanged", zSlider, "setValue"); - + writeln("connected"); + QHBoxLayout mainLayout = new QHBoxLayout; mainLayout.addWidget(glWidget); mainLayout.addWidget(xSlider); mainLayout.addWidget(ySlider); mainLayout.addWidget(zSlider); setLayout(mainLayout); - + xSlider.setValue(15 * 16); ySlider.setValue(345 * 16); zSlider.setValue(0 * 16); setWindowTitle(tr("Hello GL")); } - + private: QSlider createSlider() { @@ -83,11 +85,11 @@ slider.setTickPosition(QSlider.TicksRight); return slider; } - + GLWidget glWidget; QSlider xSlider; QSlider ySlider; QSlider zSlider; - + mixin Q_OBJECT; } \ No newline at end of file diff -r 12cec2d14e1c -r 9784459f0750 generator/abstractmetalang.cpp --- a/generator/abstractmetalang.cpp Tue May 25 20:14:04 2010 +0300 +++ b/generator/abstractmetalang.cpp Wed Jun 02 19:38:05 2010 +0300 @@ -206,13 +206,16 @@ return false; } -QString AbstractMetaFunction::marshalledName(bool classIsOwner) const +QString AbstractMetaFunction::marshalledName(Options options) const { - QString returned = "qtd_"; - if(classIsOwner) + QString returned; + if (!(options & NoExternNamespace)) + returned += "qtd_"; + + if(options & DeclaringClass) + returned += declaringClass()->name(); + else returned += ownerClass()->name(); - else - returned += declaringClass()->name(); returned += "_" + name(); AbstractMetaArgumentList arguments = this->arguments(); diff -r 12cec2d14e1c -r 9784459f0750 generator/abstractmetalang.h --- a/generator/abstractmetalang.h Tue May 25 20:14:04 2010 +0300 +++ b/generator/abstractmetalang.h Wed Jun 02 19:38:05 2010 +0300 @@ -395,7 +395,7 @@ SignalFunction, EmptyFunction, SlotFunction, - GlobalScopeFunction + GlobalScopeFunction, }; enum CompareResult { @@ -415,6 +415,15 @@ NotEqual = 0x00001000 }; + enum Option + { + NoOptions = 0, + DeclaringClass = 0x01, + NoExternNamespace = 0x02 + }; + + typedef QFlags