89 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			89 lines
		
	
	
		
			2.3 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_7E48761AD92811DC9011477D56D89593
							 | 
						||
| 
								 | 
							
								#define UUID_7E48761AD92811DC9011477D56D89593
							 | 
						||
| 
								 | 
							
								#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/utility/enable_if.hpp>
							 | 
						||
| 
								 | 
							
								#include <boost/exception/detail/is_output_streamable.hpp>
							 | 
						||
| 
								 | 
							
								#include <sstream>
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								namespace
							 | 
						||
| 
								 | 
							
								boost
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								    template <class T,class U>
							 | 
						||
| 
								 | 
							
								    std::string to_string( std::pair<T,U> const & );
							 | 
						||
| 
								 | 
							
								    std::string to_string( std::exception const & );
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    namespace
							 | 
						||
| 
								 | 
							
								    to_string_detail
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								        template <class T>
							 | 
						||
| 
								 | 
							
								        typename disable_if<is_output_streamable<T>,char>::type to_string( T const & );
							 | 
						||
| 
								 | 
							
								        using boost::to_string;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        template <class,bool IsOutputStreamable>
							 | 
						||
| 
								 | 
							
								        struct has_to_string_impl;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        template <class T>
							 | 
						||
| 
								 | 
							
								        struct
							 | 
						||
| 
								 | 
							
								        has_to_string_impl<T,true>
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								            enum e { value=1 };
							 | 
						||
| 
								 | 
							
								            };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        template <class T>
							 | 
						||
| 
								 | 
							
								        struct
							 | 
						||
| 
								 | 
							
								        has_to_string_impl<T,false>
							 | 
						||
| 
								 | 
							
								            {
							 | 
						||
| 
								 | 
							
								            static T const & f();
							 | 
						||
| 
								 | 
							
								            enum e { value=1!=sizeof(to_string(f())) };
							 | 
						||
| 
								 | 
							
								            };
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    template <class T>
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename enable_if<is_output_streamable<T>,std::string>::type
							 | 
						||
| 
								 | 
							
								    to_string( T const & x )
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								        std::ostringstream out;
							 | 
						||
| 
								 | 
							
								        out << x;
							 | 
						||
| 
								 | 
							
								        return out.str();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    template <class T>
							 | 
						||
| 
								 | 
							
								    struct
							 | 
						||
| 
								 | 
							
								    has_to_string
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								        enum e { value=to_string_detail::has_to_string_impl<T,is_output_streamable<T>::value>::value };
							 | 
						||
| 
								 | 
							
								        };
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    template <class T,class U>
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    std::string
							 | 
						||
| 
								 | 
							
								    to_string( std::pair<T,U> const & x )
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								        return std::string("(") + to_string(x.first) + ',' + to_string(x.second) + ')';
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    std::string
							 | 
						||
| 
								 | 
							
								    to_string( std::exception const & x )
							 | 
						||
| 
								 | 
							
								        {
							 | 
						||
| 
								 | 
							
								        return x.what();
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
							 | 
						||
| 
								 | 
							
								#pragma warning(pop)
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								#endif
							 |