# HG changeset patch # User eldar # Date 1258928286 0 # Node ID bc783e20da2b087dfb58bd2df59ed2eef1dd7c4a # Parent 5173835bb37248564c38bfdc23169a8a01a297ec share strange dmd diff -r 5173835bb372 -r bc783e20da2b generator/dgenerator.cpp --- 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 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(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 diff -r 5173835bb372 -r bc783e20da2b generator/typesystem.cpp --- 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"; diff -r 5173835bb372 -r bc783e20da2b qt/core/QList.d --- 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"); diff -r 5173835bb372 -r bc783e20da2b qt/core/QTypeInfo.d --- 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 )