118 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			118 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
|   | //Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc. | ||
|  | 
 | ||
|  | //Distributed under the Boost Software License, Version 1.0. (See accompanying | ||
|  | //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) | ||
|  | 
 | ||
|  | #ifndef UUID_E788439ED9F011DCB181F25B55D89593 | ||
|  | #define UUID_E788439ED9F011DCB181F25B55D89593 | ||
|  | #if (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) | ||
|  | #pragma GCC system_header | ||
|  | #endif | ||
|  | #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) | ||
|  | #pragma warning(push,1) | ||
|  | #endif | ||
|  | 
 | ||
|  | #include <boost/exception/to_string.hpp> | ||
|  | #include <boost/exception/detail/object_hex_dump.hpp> | ||
|  | #include <boost/assert.hpp> | ||
|  | 
 | ||
|  | namespace | ||
|  | boost | ||
|  |     { | ||
|  |     namespace | ||
|  |     exception_detail | ||
|  |         { | ||
|  |         template <bool ToStringAvailable> | ||
|  |         struct | ||
|  |         to_string_dispatcher | ||
|  |             { | ||
|  |             template <class T,class Stub> | ||
|  |             static | ||
|  |             std::string | ||
|  |             convert( T const & x, Stub ) | ||
|  |                 { | ||
|  |                 return to_string(x); | ||
|  |                 } | ||
|  |             }; | ||
|  | 
 | ||
|  |         template <> | ||
|  |         struct | ||
|  |         to_string_dispatcher<false> | ||
|  |             { | ||
|  |             template <class T,class Stub> | ||
|  |             static | ||
|  |             std::string | ||
|  |             convert( T const & x, Stub s ) | ||
|  |                 { | ||
|  |                 return s(x); | ||
|  |                 } | ||
|  | 
 | ||
|  |             template <class T> | ||
|  |             static | ||
|  |             std::string | ||
|  |             convert( T const & x, std::string s ) | ||
|  |                 { | ||
|  |                 return s; | ||
|  |                 } | ||
|  | 
 | ||
|  |             template <class T> | ||
|  |             static | ||
|  |             std::string | ||
|  |             convert( T const & x, char const * s ) | ||
|  |                 { | ||
|  |                 BOOST_ASSERT(s!=0); | ||
|  |                 return s; | ||
|  |                 } | ||
|  |             }; | ||
|  | 
 | ||
|  |         namespace | ||
|  |         to_string_dispatch | ||
|  |             { | ||
|  |             template <class T,class Stub> | ||
|  |             inline | ||
|  |             std::string | ||
|  |             dispatch( T const & x, Stub s ) | ||
|  |                 { | ||
|  |                 return to_string_dispatcher<has_to_string<T>::value>::convert(x,s); | ||
|  |                 } | ||
|  |             } | ||
|  | 
 | ||
|  |         template <class T> | ||
|  |         inline | ||
|  |         std::string | ||
|  |         string_stub_dump( T const & x ) | ||
|  |             { | ||
|  |             return "[ " + exception_detail::object_hex_dump(x) + " ]"; | ||
|  |             } | ||
|  |         } | ||
|  | 
 | ||
|  |     template <class T> | ||
|  |     inline | ||
|  |     std::string | ||
|  |     to_string_stub( T const & x ) | ||
|  |         { | ||
|  |         return exception_detail::to_string_dispatch::dispatch(x,&exception_detail::string_stub_dump<T>); | ||
|  |         } | ||
|  | 
 | ||
|  |     template <class T,class Stub> | ||
|  |     inline | ||
|  |     std::string | ||
|  |     to_string_stub( T const & x, Stub s ) | ||
|  |         { | ||
|  |         return exception_detail::to_string_dispatch::dispatch(x,s); | ||
|  |         } | ||
|  | 
 | ||
|  |     template <class T,class U,class Stub> | ||
|  |     inline | ||
|  |     std::string | ||
|  |     to_string_stub( std::pair<T,U> const & x, Stub s ) | ||
|  |         { | ||
|  |         return std::string("(") + to_string_stub(x.first,s) + ',' + to_string_stub(x.second,s) + ')'; | ||
|  |         } | ||
|  |     } | ||
|  | 
 | ||
|  | #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) | ||
|  | #pragma warning(pop) | ||
|  | #endif | ||
|  | #endif |