Imported Upstream version 1.57.0
[platform/upstream/boost.git] / boost / exception / detail / error_info_impl.hpp
1 //Copyright (c) 2006-2010 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_CE6983AC753411DDA764247956D89593
7 #define UUID_CE6983AC753411DDA764247956D89593
8 #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
9 #pragma GCC system_header
10 #endif
11 #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
12 #pragma warning(push,1)
13 #endif
14
15 #include <string>
16
17 namespace
18 boost
19     {
20     namespace
21     exception_detail
22         {
23         class
24         error_info_base
25             {
26             public:
27
28             virtual std::string name_value_string() const = 0;
29
30             protected:
31
32             virtual
33             ~error_info_base() throw()
34                 {
35                 }
36             };
37         }
38
39     template <class Tag,class T>
40     class
41     error_info:
42         public exception_detail::error_info_base
43         {
44         public:
45
46         typedef T value_type;
47
48         error_info( value_type const & value );
49         ~error_info() throw();
50
51         value_type const &
52         value() const
53             {
54             return value_;
55             }
56
57         value_type &
58         value()
59             {
60             return value_;
61             }
62
63         private:
64
65         std::string name_value_string() const;
66
67         value_type value_;
68         };
69     }
70
71 #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
72 #pragma warning(pop)
73 #endif
74 #endif