changeset 307:91ed8edd442e signals

work on QStringList
author eldar_ins@eldar-laptop
date Wed, 23 Dec 2009 04:02:28 +0500
parents 04b52676b45f
children 2485419c5c63
files generator/abstractmetalang.cpp generator/dgenerator.cpp generator/typesystem_core.xml generator/typesystem_gui.xml generator/typesystem_phonon.xml generator/typesystem_xmlpatterns.xml qt/qtd/MetaMarshall.d
diffstat 7 files changed, 37 insertions(+), 11 deletions(-) [+]
line wrap: on
line diff
--- a/generator/abstractmetalang.cpp	Sun Dec 13 06:24:55 2009 +0500
+++ b/generator/abstractmetalang.cpp	Wed Dec 23 04:02:28 2009 +0500
@@ -1905,10 +1905,13 @@
     if (isConstant())
         minimalSignature += "const ";
     minimalSignature += typeEntry()->qualifiedCppName();
-    if (hasInstantiations()) {
+    if (hasInstantiations() &&
+        (static_cast<const ContainerTypeEntry *>(typeEntry()))->type() != ContainerTypeEntry::StringListContainer)
+    {
         QList<AbstractMetaType *> instantiations = this->instantiations();
         minimalSignature += "<";
-        for (int i=0;i<instantiations.size();++i) {
+        for (int i=0;i<instantiations.size();++i)
+        {
             if (i > 0)
                 minimalSignature += ",";
             minimalSignature += instantiations.at(i)->minimalSignature();
--- a/generator/dgenerator.cpp	Sun Dec 13 06:24:55 2009 +0500
+++ b/generator/dgenerator.cpp	Wed Dec 23 04:02:28 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();
--- a/generator/typesystem_core.xml	Sun Dec 13 06:24:55 2009 +0500
+++ b/generator/typesystem_core.xml	Wed Dec 23 04:02:28 2009 +0500
@@ -2290,7 +2290,7 @@
                 <reference-count action="set" variable-name="__rcStandardOutputProcess"/>
             </modify-argument>
         </modify-function>
-<!--        <modify-function signature="startDetached(QString,QStringList&lt;QString&gt;,QString,long long*)">
+<!--        <modify-function signature="startDetached(QString,QStringList,QString,long long*)">
             <access modifier="private"/>
             <modify-argument index="4">
                 <remove-default-expression/>
--- a/generator/typesystem_gui.xml	Sun Dec 13 06:24:55 2009 +0500
+++ b/generator/typesystem_gui.xml	Wed Dec 23 04:02:28 2009 +0500
@@ -4868,7 +4868,7 @@
         <access modifier="private" />
     </modify-function>
 
-    <modify-function signature="getItem(QWidget *, const QString &amp;, const QString &amp;, const QStringList&lt;QString&gt; &amp;, int, bool, bool *, QFlags&lt;Qt::WindowType&gt;)">
+    <modify-function signature="getItem(QWidget *, const QString &amp;, const QString &amp;, const QStringList &amp;, int, bool, bool *, QFlags&lt;Qt::WindowType&gt;)">
         <rename to="getItem_private"/>
         <access modifier="private"/>
     </modify-function>
@@ -5375,7 +5375,7 @@
             <define-ownership class="java" owner="c++"/>
         </modify-argument>
     </modify-function>
-    <modify-function signature="QTreeWidgetItem(QTreeWidget *,const QStringList&lt;QString&gt; &amp;,int)">
+    <modify-function signature="QTreeWidgetItem(QTreeWidget *,const QStringList &amp;,int)">
         <modify-argument index="this">
             <define-ownership class="java" owner="c++"/>
         </modify-argument>
@@ -5390,7 +5390,7 @@
             <define-ownership class="java" owner="c++"/>
         </modify-argument>
     </modify-function>
-    <modify-function signature="QTreeWidgetItem(QTreeWidgetItem *,const QStringList&lt;QString&gt; &amp;,int)">
+    <modify-function signature="QTreeWidgetItem(QTreeWidgetItem *,const QStringList &amp;,int)">
         <modify-argument index="this">
             <define-ownership class="java" owner="c++"/>
         </modify-argument>
@@ -5509,9 +5509,9 @@
 
   
 <!--        <modify-function signature="addItem(const QString &amp;)" remove="all"/>-->
-        <modify-function signature="addItems(const QStringList&lt;QString&gt; &amp;)" remove="all"/>
+        <modify-function signature="addItems(const QStringList &amp;)" remove="all"/>
         <modify-function signature="insertItem(int, const QString &amp;)" remove="all"/>
-        <modify-function signature="insertItems(int, const QStringList&lt;QString&gt; &amp;)" remove="all"/>
+        <modify-function signature="insertItems(int, const QStringList &amp;)" remove="all"/>
         <inject-code>
             <import-file name="typesystem_gui-java.java" quote-after-line="class QListWidget___" quote-before-line="}// class"/>
         </inject-code>
--- a/generator/typesystem_phonon.xml	Sun Dec 13 06:24:55 2009 +0500
+++ b/generator/typesystem_phonon.xml	Wed Dec 23 04:02:28 2009 +0500
@@ -75,7 +75,7 @@
 
     <interface-type name="Phonon::MediaObjectInterface" java-name="AbstractMediaObject"/>
     <interface-type name="Phonon::PlatformPlugin" java-name="PlatformPlugin">
-        <modify-function signature="notification(const char *, const QString &amp;, const QStringList&lt;QString&gt; &amp;, QObject *, const char *)const">
+        <modify-function signature="notification(const char *, const QString &amp;, const QStringList &amp;, QObject *, const char *)const">
             <modify-argument index="3">
                 <replace-default-expression with="null"/>
             </modify-argument>
--- a/generator/typesystem_xmlpatterns.xml	Sun Dec 13 06:24:55 2009 +0500
+++ b/generator/typesystem_xmlpatterns.xml	Wed Dec 23 04:02:28 2009 +0500
@@ -125,7 +125,7 @@
 
   <object-type name="QXmlQuery">
     <modify-function signature="evaluateTo(QAbstractXmlReceiver *)const" remove="all"/>
-    <modify-function signature="evaluateTo(QStringList&lt;QString&gt;*)const" remove="all"/>
+    <modify-function signature="evaluateTo(QStringList*)const" remove="all"/>
     <modify-function signature="setMessageHandler(QAbstractMessageHandler*)">
       <modify-argument index="1">
     <reference-count action="set" variable-name="__rcMessageHandler"/>
--- a/qt/qtd/MetaMarshall.d	Sun Dec 13 06:24:55 2009 +0500
+++ b/qt/qtd/MetaMarshall.d	Wed Dec 23 04:02:28 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