]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/exception/to_string_stub.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
0f8eb99621ef2448cf5633946f79611f79eaf675
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / exception / to_string_stub.hpp
1 //Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.\r
2 \r
3 //Distributed under the Boost Software License, Version 1.0. (See accompanying\r
4 //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\r
5 \r
6 #ifndef UUID_E788439ED9F011DCB181F25B55D89593\r
7 #define UUID_E788439ED9F011DCB181F25B55D89593\r
8 #if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)\r
9 #pragma GCC system_header\r
10 #endif\r
11 #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)\r
12 #pragma warning(push,1)\r
13 #endif\r
14 \r
15 #include <boost/exception/to_string.hpp>\r
16 #include <boost/exception/detail/object_hex_dump.hpp>\r
17 #include <boost/assert.hpp>\r
18 \r
19 namespace\r
20 boost\r
21     {\r
22     namespace\r
23     exception_detail\r
24         {\r
25         template <bool ToStringAvailable>\r
26         struct\r
27         to_string_dispatcher\r
28             {\r
29             template <class T,class Stub>\r
30             static\r
31             std::string\r
32             convert( T const & x, Stub )\r
33                 {\r
34                 return to_string(x);\r
35                 }\r
36             };\r
37 \r
38         template <>\r
39         struct\r
40         to_string_dispatcher<false>\r
41             {\r
42             template <class T,class Stub>\r
43             static\r
44             std::string\r
45             convert( T const & x, Stub s )\r
46                 {\r
47                 return s(x);\r
48                 }\r
49 \r
50             template <class T>\r
51             static\r
52             std::string\r
53             convert( T const & x, std::string s )\r
54                 {\r
55                 return s;\r
56                 }\r
57 \r
58             template <class T>\r
59             static\r
60             std::string\r
61             convert( T const & x, char const * s )\r
62                 {\r
63                 BOOST_ASSERT(s!=0);\r
64                 return s;\r
65                 }\r
66             };\r
67 \r
68         namespace\r
69         to_string_dispatch\r
70             {\r
71             template <class T,class Stub>\r
72             inline\r
73             std::string\r
74             dispatch( T const & x, Stub s )\r
75                 {\r
76                 return to_string_dispatcher<has_to_string<T>::value>::convert(x,s);\r
77                 }\r
78             }\r
79 \r
80         template <class T>\r
81         inline\r
82         std::string\r
83         string_stub_dump( T const & x )\r
84             {\r
85             return "[ " + exception_detail::object_hex_dump(x) + " ]";\r
86             }\r
87         }\r
88 \r
89     template <class T>\r
90     inline\r
91     std::string\r
92     to_string_stub( T const & x )\r
93         {\r
94         return exception_detail::to_string_dispatch::dispatch(x,&exception_detail::string_stub_dump<T>);\r
95         }\r
96 \r
97     template <class T,class Stub>\r
98     inline\r
99     std::string\r
100     to_string_stub( T const & x, Stub s )\r
101         {\r
102         return exception_detail::to_string_dispatch::dispatch(x,s);\r
103         }\r
104     }\r
105 \r
106 #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)\r
107 #pragma warning(pop)\r
108 #endif\r
109 #endif\r