Merge c:/dyninst/pc_bluegene/dyninst into dyn_pc_integration
[dyninst.git] / external / boost / exception / info_tuple.hpp
1 //Copyright (c) 2006-2008 Emil Dotchevski and Reverge Studios, Inc.
2
3 //Distributed under the Boost Software License, Version 1.0. (See accompanying
4 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5
6 #ifndef UUID_63EE924290FB11DC87BB856555D89593
7 #define UUID_63EE924290FB11DC87BB856555D89593
8
9 #include <boost/exception/info.hpp>
10 #include <boost/tuple/tuple.hpp>
11
12 namespace
13 boost
14     {
15     template <
16         class E,
17         class Tag1,class T1,
18         class Tag2,class T2 >
19     inline
20     E const &
21     operator<<(
22         E const & x,
23         tuple<
24             error_info<Tag1,T1>,
25             error_info<Tag2,T2> > const & v )
26         {
27         return x << v.template get<0>() << v.template get<1>();
28         }
29
30     template <
31         class E,
32         class Tag1,class T1,
33         class Tag2,class T2,
34         class Tag3,class T3 >
35     inline
36     E const &
37     operator<<(
38         E const & x,
39         tuple<
40             error_info<Tag1,T1>,
41             error_info<Tag2,T2>,
42             error_info<Tag3,T3> > const & v )
43         {
44         return x << v.template get<0>() << v.template get<1>() << v.template get<2>();
45         }
46
47     template <
48         class E,
49         class Tag1,class T1,
50         class Tag2,class T2,
51         class Tag3,class T3,
52         class Tag4,class T4 >
53     inline
54     E const &
55     operator<<(
56         E const & x,
57         tuple<
58             error_info<Tag1,T1>,
59             error_info<Tag2,T2>,
60             error_info<Tag3,T3>,
61             error_info<Tag4,T4> > const & v )
62         {
63         return x << v.template get<0>() << v.template get<1>() << v.template get<2>() << v.template get<3>();
64         }
65     }
66
67 #endif