1 |
tim |
164 |
#ifndef UTILS_TUPLE_HPP |
2 |
|
|
#define UTILS_TUPLE_HPP |
3 |
|
|
|
4 |
|
|
namespace oopse { |
5 |
|
|
|
6 |
|
|
template <class T1, class T2, class T3> |
7 |
|
|
struct tuple3 { |
8 |
|
|
typedef T1 first_type; |
9 |
|
|
typedef T2 second_type; |
10 |
|
|
typedef T3 third_type; |
11 |
|
|
|
12 |
|
|
T1 first; |
13 |
|
|
T2 second; |
14 |
|
|
T3 third; |
15 |
|
|
tuple3() {} |
16 |
|
|
tuple3(const T1& a, const T2& b, const T3& c) : first(a), second(b), third(c) {} |
17 |
|
|
}; |
18 |
|
|
|
19 |
|
|
template <class T1, class T2, class T3> |
20 |
|
|
tuple3<T1,T2,T3> make_tuple3( T1 t1, T2 t2, T3 t3 ) { |
21 |
|
|
return tuple3<T1,T2,T3>( t1, t2, t3 ); |
22 |
|
|
} |
23 |
|
|
|
24 |
|
|
|
25 |
|
|
template <class T1, class T2, class T3, class T4> |
26 |
|
|
struct tuple4 { |
27 |
|
|
typedef T1 first_type; |
28 |
|
|
typedef T2 second_type; |
29 |
|
|
typedef T3 third_type; |
30 |
|
|
typedef T4 fourth_type; |
31 |
|
|
|
32 |
|
|
T1 first; |
33 |
|
|
T2 second; |
34 |
|
|
T3 third; |
35 |
|
|
T4 fourth; |
36 |
|
|
tuple4() {} |
37 |
|
|
tuple4(const T1& a, const T2& b, const T3& c, const T4& d) |
38 |
|
|
: first(a), second(b), third(c), fourth(d) {} |
39 |
|
|
}; |
40 |
|
|
|
41 |
|
|
template <class T1, class T2, class T3, class T4> |
42 |
|
|
tuple4<T1,T2,T3,T4> make_tuple4( T1 t1, T2 t2, T3 t3, T4 t4 ) { |
43 |
|
|
return tuple4<T1,T2,T3,T4>( t1, t2, t3, t4 ); |
44 |
|
|
} |
45 |
|
|
|
46 |
|
|
} |
47 |
|
|
#endif //UTILS_TUPLE_HPP |
48 |
|
|
|