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 defined(__GNUC__) && !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 tag_typeid_name() const = 0;
29             virtual std::string value_as_string() const = 0;
30 
31             protected:
32 
33             virtual
~error_info_base()34             ~error_info_base() throw()
35                 {
36                 }
37             };
38         }
39 
40     template <class Tag,class T>
41     class
42     error_info:
43         public exception_detail::error_info_base
44         {
45         public:
46 
47         typedef T value_type;
48 
49         error_info( value_type const & value );
50         ~error_info() throw();
51 
52         value_type const &
value() const53         value() const
54             {
55             return value_;
56             }
57 
58         value_type &
value()59         value()
60             {
61             return value_;
62             }
63 
64         private:
65 
66         std::string tag_typeid_name() const;
67         std::string value_as_string() const;
68 
69         value_type value_;
70         };
71     }
72 
73 #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
74 #pragma warning(pop)
75 #endif
76 #endif
77