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 ~error_info_base()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 & value() const52 value() const 53 { 54 return value_; 55 } 56 57 value_type & value()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 75