Mercurial > projects > qtd
comparison qt/qtd/util/Tuple.d @ 288:f9559a957be9 signals
new signals and slots implementation
author | eldar |
---|---|
date | Sun, 08 Nov 2009 19:28:01 +0000 |
parents | |
children |
comparison
equal
deleted
inserted
replaced
287:b6984b290e46 | 288:f9559a957be9 |
---|---|
1 /** | |
2 * Tuple-related stuff. | |
3 * | |
4 * Authors: Daniel Keep <daniel.keep@gmail.com> | |
5 * Copyright: See LICENSE. | |
6 */ | |
7 module qt.qtd.util.Tuple; | |
8 | |
9 import std.typetuple; | |
10 | |
11 /** | |
12 * Sequence can be used to generate a tuple of integer values. It can be | |
13 * used in one of three forms: | |
14 * | |
15 * ----- | |
16 * Sequence!(6) // ==> (0, 1, 2, 3, 4, 5) | |
17 * Sequence!(1,6) // ==> (1, 2, 3, 4, 5) | |
18 * Sequence!(1,6,2) // ==> (1, 3, 5) | |
19 * ----- | |
20 */ | |
21 | |
22 template Sequence(int max) | |
23 { | |
24 static if( max <= 0 ) | |
25 alias TypeTuple!() Sequence; | |
26 else | |
27 alias TypeTuple!(Sequence!(max-1), max-1) Sequence; | |
28 } | |
29 | |
30 /// ditto | |
31 | |
32 template Sequence(int min, int max) | |
33 { | |
34 static if( max <= min ) | |
35 alias TypeTuple!() Sequence; | |
36 else | |
37 alias TypeTuple!(Sequence!(min, max-1), max-1) Sequence; | |
38 } | |
39 | |
40 /// ditto | |
41 | |
42 template Sequence(int min, int max, int stride) | |
43 { | |
44 static if( min >= max ) | |
45 alias TypeTuple!() Sequence; | |
46 else | |
47 alias TypeTuple!(min, Sequence!(min+stride, max, stride)) Sequence; | |
48 } | |
49 | |
50 version( Unittest ) | |
51 { | |
52 static assert( Sequence!(3)[0] == 0 ); | |
53 static assert( Sequence!(3)[1] == 1 ); | |
54 static assert( Sequence!(3)[2] == 2 ); | |
55 static assert( Sequence!(3).length == 3 ); | |
56 | |
57 static assert( Sequence!(1, 3)[0] == 1 ); | |
58 static assert( Sequence!(1, 3)[1] == 2 ); | |
59 static assert( Sequence!(1, 3).length == 2 ); | |
60 | |
61 static assert( Sequence!(1, 5, 2)[0] == 1 ); | |
62 static assert( Sequence!(1, 5, 2)[1] == 3 ); | |
63 static assert( Sequence!(1, 5, 2).length == 2 ); | |
64 } |