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