Mercurial > projects > qtd
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 )