changeset 297:bc783e20da2b signals

share strange dmd
author eldar
date Sun, 22 Nov 2009 22:18:06 +0000
parents 5173835bb372
children adae77fdc1ea
files generator/dgenerator.cpp generator/typesystem.cpp qt/core/QList.d qt/core/QTypeInfo.d
diffstat 4 files changed, 27 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/generator/dgenerator.cpp	Sun Nov 22 20:43:10 2009 +0000
+++ b/generator/dgenerator.cpp	Sun Nov 22 22:18:06 2009 +0000
@@ -70,7 +70,7 @@
                   << "QLatin1String" << "unsigned long long" << "signed int"
                   << "signed short" << "Array" << "GLuint" << "GLenum" << "GLint"
                   << "unsigned long" << "ulong" << "long" << "QByteRef"
-                  << "QStringList" << "QList" << "QVector" << "QPair"
+                  << "QStringList" << "QVector" << "QPair"
                   << "QSet" << "QStringRef" << "quintptr";
 }
 
@@ -177,8 +177,12 @@
             if ((option & SkipTemplateParameters) == 0) {
                 QList<AbstractMetaType *> args = d_type->instantiations();
 
-                if (args.size() == 1) // QVector or QList
-                    s = translateType(args.at(0), context, BoxedPrimitive) + "[]";
+                if (args.size() == 1) { // QVector or QList
+                    if(d_type->typeEntry()->name() == "QList")
+                        s = "QList!(" + translateType(args.at(0), context, BoxedPrimitive) + ")";
+                    else
+                        s = translateType(args.at(0), context, BoxedPrimitive) + "[]";
+                }
                 else if(args.size() == 2) { // all sorts of maps
                     s = translateType(args.at(1), context, BoxedPrimitive); // value
                     bool isMultiMap = static_cast<const ContainerTypeEntry *>(d_type->typeEntry())->type() == ContainerTypeEntry::MultiMapContainer;
@@ -679,7 +683,12 @@
             s << INDENT << return_type->name() << " res;" << endl;
 
         if(return_type->isContainer())
-            s << INDENT << this->translateType(d_function->type(), d_function->ownerClass(), NoOption) << " res;" << endl;
+        {
+            if(d_function->type()->typeEntry()->name() == "QList")
+                s << INDENT << "auto res = " << this->translateType(d_function->type(), d_function->ownerClass(), NoOption) << ".opCall();" << endl;
+            else
+                s << INDENT << this->translateType(d_function->type(), d_function->ownerClass(), NoOption) << " res;" << endl;
+        }
     }
 
     // returning string or a struct
--- a/generator/typesystem.cpp	Sun Nov 22 20:43:10 2009 +0000
+++ b/generator/typesystem.cpp	Sun Nov 22 22:18:06 2009 +0000
@@ -1677,19 +1677,17 @@
 
 QString ContainerTypeEntry::javaPackage() const
 {
-    if (m_type == PairContainer)
-        return "qt";
-    return "java.util";
+    return "qt.core";
 }
 
 QString ContainerTypeEntry::targetLangName() const
 {
 
     switch (m_type) {
-    case StringListContainer: return "List";
-    case ListContainer: return "List";
-    case LinkedListContainer: return "LinkedList";
-    case VectorContainer: return "List";
+    case StringListContainer: return "QList";
+    case ListContainer: return "QList";
+    case LinkedListContainer: return "QLinkedList";
+    case VectorContainer: return "QVector";
     case StackContainer: return "Stack";
     case QueueContainer: return "Queue";
     case SetContainer: return "Set";
--- a/qt/core/QList.d	Sun Nov 22 20:43:10 2009 +0000
+++ b/qt/core/QList.d	Sun Nov 22 22:18:06 2009 +0000
@@ -527,7 +527,7 @@
             while(from != to)
                 q_new_at(from++, *cast(T*)(src++));
     }
-
+    
     void free(QListData.Data* data)
     {
         writeln("QList data destroyed");
--- a/qt/core/QTypeInfo.d	Sun Nov 22 20:43:10 2009 +0000
+++ b/qt/core/QTypeInfo.d	Sun Nov 22 22:18:06 2009 +0000
@@ -20,6 +20,12 @@
 
 template QTypeInfo(T)
 {
+    static if(T.stringof == "QModelIndex")
+    {
+        pragma(msg, T.stringof ~ " has QTypeInfo");
+        pragma(msg, T.QTypeInfo.stringof);
+    }
+    
     static if(is(T == string))
     {
         alias QString.QTypeInfo QTypeInfo;
@@ -35,8 +41,9 @@
             isDummy = false
         }
     }
-    else static if(__traits(compiles, mixin("T.TypeInfo")))
+    else static if(is(T.QTypeInfo))
     {
+        pragma(msg, T.stringof ~ " has struct");
         alias T.QTypeInfo QTypeInfo; // alias member QTypeInfo
     }
     else static if ( isQObjectType!T || isObjectType!T )