diff qt/d2/qt/Signal.d @ 302:55ee4603365d signals

string arguments for signals
author eldar_ins@eldar-laptop
date Sat, 12 Dec 2009 03:22:54 +0500
parents 8627891e4556
children ce07227f00c1
line wrap: on
line diff
--- a/qt/d2/qt/Signal.d	Tue Dec 08 21:13:24 2009 +0000
+++ b/qt/d2/qt/Signal.d	Sat Dec 12 03:22:54 2009 +0500
@@ -315,37 +315,13 @@
     alias findSymbolsImpl!(prefix, C, 0, pred).result findSymbols;
 }
 
-string __toString(long v)
-{
-    if (v == 0)
-        return "0";
-
-    string ret;
-
-    bool neg;
-    if (v < 0)
-    {
-        neg = true;
-        v = -v;
-    }
-
-    while (v != 0)
-    {
-        ret = cast(char)(v % 10 + '0') ~ ret;
-        v = cast(long)(v / 10);
-    }
-
-    if (neg)
-        ret = "-" ~ ret;
-
-    return ret;
-}
-
 string convertSignalArguments(Args...)()
 {
 //        void *_a[] = { 0, const_cast<void*>(reinterpret_cast<const void*>(&_t1)) };
-
-    string res = "void*[" ~ __toString(Args.length+1) ~ "] _a = [null";
+    // at least for string argument need to construct a QString value
+    string res = prepareSignalArguments!(Args);
+    
+    res ~= "void*[" ~ __toString(Args.length+1) ~ "] _a = [null";
     foreach(i, _; Args)
         res ~= ", " ~ "cast(void*) &" ~ convertSignalArgument!(Args[i])("_t" ~ __toString(i));
     res ~= "];\n";
@@ -463,7 +439,7 @@
             
             static if (signalType == SignalType.NewSignal)
             {
-//                pragma (msg, SignalEmitter!(ArgTypes)(SignalType.NewSignal, getFunc!_Name(fullName), defVals, localIndex));
+                pragma (msg, SignalEmitter!(ArgTypes)(SignalType.NewSignal, getFunc!_Name(fullName), defVals, localIndex));
                 mixin (SignalEmitter!(ArgTypes)(SignalType.NewSignal, getFunc!_Name(fullName), defVals, localIndex));
             }
         }
@@ -487,7 +463,10 @@
     {
         if(i > 0)
             res ~= ",";
-        res ~= T[i].stringof;
+        static if (isNativeType!(T[i]))
+            res ~= Unqual!(T[i]).stringof;
+        else
+            res ~= T[i].stringof;
     }
     res ~= ")";
     return res;