comparison qt/qtd/MetaMarshall.d @ 319:894d40eb89b6 signals

new signals and slots syntax. have to use prefixes now: signal_fooed and slot_onFooed
author eldar_ins@eldar-laptop
date Fri, 25 Dec 2009 21:48:32 +0500
parents ce07227f00c1
children 7a3c43424dca
comparison
equal deleted inserted replaced
318:ce07227f00c1 319:894d40eb89b6
1 module qt.qtd.MetaMarshall; 1 module qt.qtd.MetaMarshall;
2 2
3 import std.traits; 3 import std.traits;
4 4
5 // utilities 5 import qt.qtd.Meta;
6 // shouldn't be here
7
8 public bool startsWith(T)(T[] source, T[] pattern)
9 {
10 return source.length >= pattern.length && source[0 .. pattern.length] == pattern[];
11 }
12
13 string __toString(long v)
14 {
15 if (v == 0)
16 return "0";
17
18 string ret;
19
20 bool neg;
21 if (v < 0)
22 {
23 neg = true;
24 v = -v;
25 }
26
27 while (v != 0)
28 {
29 ret = cast(char)(v % 10 + '0') ~ ret;
30 v = cast(long)(v / 10);
31 }
32
33 if (neg)
34 ret = "-" ~ ret;
35
36 return ret;
37 }
38
39 template templateParam(U : V!(U), alias V)
40 {
41 alias U templateParam;
42 }
43
44
45 /*
46 * actual stuff
47 */
48 6
49 template isQObjectType(T) // is a QObject type that belongs to the library 7 template isQObjectType(T) // is a QObject type that belongs to the library
50 { 8 {
51 enum isQObjectType = is(T.__isQObjectType); 9 enum isQObjectType = is(T.__isQObjectType);
52 } 10 }
71 enum isStringType = is(T == string); 29 enum isStringType = is(T == string);
72 } 30 }
73 31
74 template isQList(T) 32 template isQList(T)
75 { 33 {
76 enum isQList = startsWith(Unqual!(T).stringof, "QList!"); 34 enum isQList = ctfeStartsWith(Unqual!(T).stringof, "QList!");
77 } 35 }
78 36
79 // converts an argumnent from C++ to D in qt_metacall 37 // converts an argumnent from C++ to D in qt_metacall
80 string metaCallArgument(T)(string ptr) 38 string metaCallArgument(T)(string ptr)
81 { 39 {