# HG changeset patch # User eldar_ins@eldar-laptop # Date 1261525691 -18000 # Node ID 8a0cf14e3419bc7e56cee777168d99a2c279a73f # Parent 2485419c5c63126b7bfedb61543e21092452c7f9 wrong merge diff -r 2485419c5c63 -r 8a0cf14e3419 CMakeLists.txt --- a/CMakeLists.txt Wed Dec 23 04:45:55 2009 +0500 +++ b/CMakeLists.txt Wed Dec 23 04:48:11 2009 +0500 @@ -123,14 +123,14 @@ make_native_path(cd_path) add_custom_command(TARGET main POST_BUILD COMMAND ${CMAKE_COMMAND} ARGS -E make_directory ${CMAKE_BINARY_DIR}/build - COMMAND cd ARGS ${cd_path} && ${CMAKE_COMMAND} -G${CMAKE_GENERATOR} -DSECOND_RUN=1 ${CMAKE_SOURCE_DIR} && ${make_util} + COMMAND cd ARGS ${cd_path} && ${CMAKE_COMMAND} -G${CMAKE_GENERATOR} -DSECOND_RUN=1 ${CMAKE_SOURCE_DIR} && ${make_util} COMMENT "" ) ## "Make install" command. set_directory_properties(PROPERTIES ADDITIONAL_MAKE_CLEAN_FILES ${CMAKE_BINARY_DIR}/build) add_custom_target(install - COMMAND cd ARGS ${cd_path} && ${make_util} install + COMMAND cd ${CMAKE_BINARY_DIR}/build && ${make_util} install COMMENT "" ) add_dependencies(install preinstall) diff -r 2485419c5c63 -r 8a0cf14e3419 generator/abstractmetalang.cpp --- a/generator/abstractmetalang.cpp Wed Dec 23 04:45:55 2009 +0500 +++ b/generator/abstractmetalang.cpp Wed Dec 23 04:48:11 2009 +0500 @@ -1905,10 +1905,13 @@ if (isConstant()) minimalSignature += "const "; minimalSignature += typeEntry()->qualifiedCppName(); - if (hasInstantiations()) { + if (hasInstantiations() && + (static_cast(typeEntry()))->type() != ContainerTypeEntry::StringListContainer) + { QList instantiations = this->instantiations(); minimalSignature += "<"; - for (int i=0;i 0) minimalSignature += ","; minimalSignature += instantiations.at(i)->minimalSignature(); diff -r 2485419c5c63 -r 8a0cf14e3419 generator/dgenerator.cpp --- a/generator/dgenerator.cpp Wed Dec 23 04:45:55 2009 +0500 +++ b/generator/dgenerator.cpp Wed Dec 23 04:48:11 2009 +0500 @@ -2708,7 +2708,7 @@ bool hasDefault = false; do // need this to look for default arguments and generate extra signatures { - if (i || j) + if (j) s << ", "; s << endl << INDENT << " \"" << meta_funcs.at(i)->minimalSignature(j) << "\""; AbstractMetaArgumentList args = meta_funcs.at(i)->arguments(); diff -r 2485419c5c63 -r 8a0cf14e3419 generator/typesystem_core.xml --- a/generator/typesystem_core.xml Wed Dec 23 04:45:55 2009 +0500 +++ b/generator/typesystem_core.xml Wed Dec 23 04:48:11 2009 +0500 @@ -2290,7 +2290,7 @@ - - + - + diff -r 2485419c5c63 -r 8a0cf14e3419 generator/typesystem_phonon.xml --- a/generator/typesystem_phonon.xml Wed Dec 23 04:45:55 2009 +0500 +++ b/generator/typesystem_phonon.xml Wed Dec 23 04:48:11 2009 +0500 @@ -75,7 +75,7 @@ - + diff -r 2485419c5c63 -r 8a0cf14e3419 generator/typesystem_xmlpatterns.xml --- a/generator/typesystem_xmlpatterns.xml Wed Dec 23 04:45:55 2009 +0500 +++ b/generator/typesystem_xmlpatterns.xml Wed Dec 23 04:48:11 2009 +0500 @@ -125,7 +125,7 @@ - + diff -r 2485419c5c63 -r 8a0cf14e3419 qt/qtd/MetaMarshall.d --- a/qt/qtd/MetaMarshall.d Wed Dec 23 04:45:55 2009 +0500 +++ b/qt/qtd/MetaMarshall.d Wed Dec 23 04:48:11 2009 +0500 @@ -2,8 +2,14 @@ import std.traits; +// utilities // shouldn't be here +public bool startsWith(T)(T[] source, T[] pattern) +{ + return source.length >= pattern.length && source[0 .. pattern.length] == pattern[]; +} + string __toString(long v) { if (v == 0) @@ -30,6 +36,16 @@ return ret; } +template templateParam(U : V!(U), alias V) +{ + alias U templateParam; +} + + +/* + * actual stuff + */ + template isQObjectType(T) // is a QObject type that belongs to the library { enum isQObjectType = is(T.__isQObjectType); @@ -55,6 +71,11 @@ enum isStringType = is(T == string); } +template isQList(T) +{ + enum isQList = startsWith(Unqual!(T).stringof, "QList!"); +} + // converts an argumnent from C++ to D in qt_metacall string metaCallArgument(T)(string ptr) { @@ -76,6 +97,8 @@ return T.stringof ~ "*"; else static if (isStringType!T) return "QString"; + else static if (isQList!T) + return "QList<" ~ qtDeclArg!(templateParam!T)() ~ ">"; else static if (isNativeType!T) return Unqual!T.stringof; else