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