diff options
Diffstat (limited to '3rdParty/Boost/src/boost/exception')
14 files changed, 86 insertions, 72 deletions
diff --git a/3rdParty/Boost/src/boost/exception/current_exception_cast.hpp b/3rdParty/Boost/src/boost/exception/current_exception_cast.hpp index af2f153..5d81f00 100644 --- a/3rdParty/Boost/src/boost/exception/current_exception_cast.hpp +++ b/3rdParty/Boost/src/boost/exception/current_exception_cast.hpp @@ -1,43 +1,43 @@ //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_7E83C166200811DE885E826156D89593 #define UUID_7E83C166200811DE885E826156D89593 -#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#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 namespace boost { template <class E> inline E * current_exception_cast() { try { throw; } catch( E & e ) { return &e; } catch( ...) { return 0; } } } #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) #pragma warning(pop) #endif #endif diff --git a/3rdParty/Boost/src/boost/exception/detail/attribute_noreturn.hpp b/3rdParty/Boost/src/boost/exception/detail/attribute_noreturn.hpp deleted file mode 100644 index ae9f031..0000000 --- a/3rdParty/Boost/src/boost/exception/detail/attribute_noreturn.hpp +++ /dev/null @@ -1,17 +0,0 @@ -//Copyright (c) 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_61531AB0680611DEADD5846855D89593 -#define UUID_61531AB0680611DEADD5846855D89593 - -#if defined(_MSC_VER) -#define BOOST_ATTRIBUTE_NORETURN __declspec(noreturn) -#elif defined(__GNUC__) -#define BOOST_ATTRIBUTE_NORETURN __attribute__((__noreturn__)) -#else -#define BOOST_ATTRIBUTE_NORETURN -#endif - -#endif diff --git a/3rdParty/Boost/src/boost/exception/detail/clone_current_exception.hpp b/3rdParty/Boost/src/boost/exception/detail/clone_current_exception.hpp index cc201b9..6fc1374 100644 --- a/3rdParty/Boost/src/boost/exception/detail/clone_current_exception.hpp +++ b/3rdParty/Boost/src/boost/exception/detail/clone_current_exception.hpp @@ -1,47 +1,56 @@ -//Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc. +//Copyright (c) 2006-2013 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_81522C0EB56511DFAB613DB0DFD72085 #define UUID_81522C0EB56511DFAB613DB0DFD72085 +#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 #ifdef BOOST_NO_EXCEPTIONS # error This header requires exception handling to be enabled. #endif namespace boost { namespace exception_detail { class clone_base; #ifdef BOOST_ENABLE_NON_INTRUSIVE_EXCEPTION_PTR int clone_current_exception_non_intrusive( clone_base const * & cloned ); #endif namespace clone_current_exception_result { int const success=0; int const bad_alloc=1; int const bad_exception=2; int const not_supported=3; } inline int clone_current_exception( clone_base const * & cloned ) { #ifdef BOOST_ENABLE_NON_INTRUSIVE_EXCEPTION_PTR return clone_current_exception_non_intrusive(cloned); #else return clone_current_exception_result::not_supported; #endif } } } +#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#pragma warning(pop) +#endif #endif diff --git a/3rdParty/Boost/src/boost/exception/detail/error_info_impl.hpp b/3rdParty/Boost/src/boost/exception/detail/error_info_impl.hpp index a8d1aa7..12e601b 100644 --- a/3rdParty/Boost/src/boost/exception/detail/error_info_impl.hpp +++ b/3rdParty/Boost/src/boost/exception/detail/error_info_impl.hpp @@ -1,76 +1,74 @@ //Copyright (c) 2006-2010 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_CE6983AC753411DDA764247956D89593 #define UUID_CE6983AC753411DDA764247956D89593 -#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#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 <string> namespace boost { namespace exception_detail { class error_info_base { public: - virtual std::string tag_typeid_name() const = 0; - virtual std::string value_as_string() const = 0; + virtual std::string name_value_string() const = 0; protected: virtual ~error_info_base() throw() { } }; } template <class Tag,class T> class error_info: public exception_detail::error_info_base { public: typedef T value_type; error_info( value_type const & value ); ~error_info() throw(); value_type const & value() const { return value_; } value_type & value() { return value_; } private: - std::string tag_typeid_name() const; - std::string value_as_string() const; + std::string name_value_string() const; value_type value_; }; } #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) #pragma warning(pop) #endif #endif diff --git a/3rdParty/Boost/src/boost/exception/detail/exception_ptr.hpp b/3rdParty/Boost/src/boost/exception/detail/exception_ptr.hpp index 5e5a267..530a6bd 100644 --- a/3rdParty/Boost/src/boost/exception/detail/exception_ptr.hpp +++ b/3rdParty/Boost/src/boost/exception/detail/exception_ptr.hpp @@ -1,159 +1,164 @@ //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_618474C2DE1511DEB74A388C56D89593 #define UUID_618474C2DE1511DEB74A388C56D89593 -#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#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/config.hpp> #ifdef BOOST_NO_EXCEPTIONS #error This header requires exception handling to be enabled. #endif #include <boost/exception/exception.hpp> #include <boost/exception/info.hpp> #include <boost/exception/diagnostic_information.hpp> #include <boost/exception/detail/type_info.hpp> #include <boost/exception/detail/clone_current_exception.hpp> +//#ifndef BOOST_NO_RTTI +//#include <boost/units/detail/utility.hpp> +//#endif #include <boost/shared_ptr.hpp> #include <stdexcept> #include <new> #include <ios> #include <stdlib.h> namespace boost { class exception_ptr; - BOOST_ATTRIBUTE_NORETURN void rethrow_exception( exception_ptr const & ); + BOOST_NORETURN void rethrow_exception( exception_ptr const & ); exception_ptr current_exception(); class exception_ptr { typedef boost::shared_ptr<exception_detail::clone_base const> impl; impl ptr_; friend void rethrow_exception( exception_ptr const & ); typedef exception_detail::clone_base const * (impl::*unspecified_bool_type)() const; public: exception_ptr() { } explicit exception_ptr( impl const & ptr ): ptr_(ptr) { } bool operator==( exception_ptr const & other ) const { return ptr_==other.ptr_; } bool operator!=( exception_ptr const & other ) const { return ptr_!=other.ptr_; } operator unspecified_bool_type() const { return ptr_?&impl::get:0; } }; template <class T> inline exception_ptr copy_exception( T const & e ) { try { throw enable_current_exception(e); } catch( ... ) { return current_exception(); } } #ifndef BOOST_NO_RTTI typedef error_info<struct tag_original_exception_type,std::type_info const *> original_exception_type; inline std::string to_string( original_exception_type const & x ) { - return x.value()->name(); + return /*units::detail::demangle*/(x.value()->name()); } #endif namespace exception_detail { struct bad_alloc_: boost::exception, std::bad_alloc { ~bad_alloc_() throw() { } }; struct bad_exception_: boost::exception, std::bad_exception { ~bad_exception_() throw() { } }; template <class Exception> exception_ptr get_static_exception_object() { Exception ba; exception_detail::clone_impl<Exception> c(ba); +#ifndef BOOST_EXCEPTION_DISABLE c << throw_function(BOOST_CURRENT_FUNCTION) << throw_file(__FILE__) << throw_line(__LINE__); +#endif static exception_ptr ep(shared_ptr<exception_detail::clone_base const>(new exception_detail::clone_impl<Exception>(c))); return ep; } template <class Exception> struct exception_ptr_static_exception_object { static exception_ptr const e; }; template <class Exception> exception_ptr const exception_ptr_static_exception_object<Exception>:: e = get_static_exception_object<Exception>(); } #if defined(__GNUC__) # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) # pragma GCC visibility push (default) # endif #endif class unknown_exception: public boost::exception, public std::exception { public: unknown_exception() { } explicit unknown_exception( std::exception const & e ) @@ -417,92 +422,92 @@ boost return exception_detail::current_exception_unknown_boost_exception(e); } catch( ... ) { return exception_detail::current_exception_unknown_exception(); } } } } } inline exception_ptr current_exception() { exception_ptr ret; try { ret=exception_detail::current_exception_impl(); } catch( std::bad_alloc & ) { ret=exception_detail::exception_ptr_static_exception_object<exception_detail::bad_alloc_>::e; } catch( ... ) { ret=exception_detail::exception_ptr_static_exception_object<exception_detail::bad_exception_>::e; } BOOST_ASSERT(ret); return ret; } - BOOST_ATTRIBUTE_NORETURN + BOOST_NORETURN inline void rethrow_exception( exception_ptr const & p ) { BOOST_ASSERT(p); p.ptr_->rethrow(); BOOST_ASSERT(0); #if defined(UNDER_CE) // some CE platforms don't define ::abort() exit(-1); #else abort(); #endif } inline std::string - diagnostic_information( exception_ptr const & p ) + diagnostic_information( exception_ptr const & p, bool verbose=true ) { if( p ) try { rethrow_exception(p); } catch( ... ) { - return current_exception_diagnostic_information(); + return current_exception_diagnostic_information(verbose); } return "<empty>"; } inline std::string to_string( exception_ptr const & p ) { std::string s='\n'+diagnostic_information(p); std::string padding(" "); std::string r; bool f=false; for( std::string::const_iterator i=s.begin(),e=s.end(); i!=e; ++i ) { if( f ) r+=padding; char c=*i; r+=c; f=(c=='\n'); } return r; } } #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) #pragma warning(pop) #endif #endif diff --git a/3rdParty/Boost/src/boost/exception/detail/is_output_streamable.hpp b/3rdParty/Boost/src/boost/exception/detail/is_output_streamable.hpp index 743313c..847f348 100644 --- a/3rdParty/Boost/src/boost/exception/detail/is_output_streamable.hpp +++ b/3rdParty/Boost/src/boost/exception/detail/is_output_streamable.hpp @@ -1,43 +1,43 @@ //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_898984B4076411DD973EDFA055D89593 #define UUID_898984B4076411DD973EDFA055D89593 -#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#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 <ostream> namespace boost { namespace to_string_detail { struct partial_ordering_helper1 { template <class CharT,class Traits> partial_ordering_helper1( std::basic_ostream<CharT,Traits> & ); }; struct partial_ordering_helper2 { template <class T> partial_ordering_helper2( T const & ); }; char operator<<( partial_ordering_helper1, partial_ordering_helper2 ); template <class T,class CharT,class Traits> struct is_output_streamable_impl { static std::basic_ostream<CharT,Traits> & f(); diff --git a/3rdParty/Boost/src/boost/exception/detail/object_hex_dump.hpp b/3rdParty/Boost/src/boost/exception/detail/object_hex_dump.hpp index ccf1bac..53c8bf6 100644 --- a/3rdParty/Boost/src/boost/exception/detail/object_hex_dump.hpp +++ b/3rdParty/Boost/src/boost/exception/detail/object_hex_dump.hpp @@ -1,43 +1,43 @@ //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_6F463AC838DF11DDA3E6909F56D89593 #define UUID_6F463AC838DF11DDA3E6909F56D89593 -#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#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/detail/type_info.hpp> #include <iomanip> #include <ios> #include <string> #include <sstream> #include <cstdlib> namespace boost { namespace exception_detail { template <class T> inline std::string object_hex_dump( T const & x, std::size_t max_size=16 ) { std::ostringstream s; s << "type: " << type_name<T>() << ", size: " << sizeof(T) << ", dump: "; std::size_t n=sizeof(T)>max_size?max_size:sizeof(T); s.fill('0'); s.width(2); unsigned char const * b=reinterpret_cast<unsigned char const *>(&x); s << std::setw(2) << std::hex << (unsigned int)*b; for( unsigned char const * e=b+n; ++b!=e; ) s << " " << std::setw(2) << std::hex << (unsigned int)*b; return s.str(); } diff --git a/3rdParty/Boost/src/boost/exception/detail/type_info.hpp b/3rdParty/Boost/src/boost/exception/detail/type_info.hpp index 92f8464..0af8ef5 100644 --- a/3rdParty/Boost/src/boost/exception/detail/type_info.hpp +++ b/3rdParty/Boost/src/boost/exception/detail/type_info.hpp @@ -1,81 +1,81 @@ //Copyright (c) 2006-2010 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_C3E1741C754311DDB2834CCA55D89593 #define UUID_C3E1741C754311DDB2834CCA55D89593 -#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#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/detail/sp_typeinfo.hpp> #include <boost/current_function.hpp> #include <boost/config.hpp> -#ifndef BOOST_NO_TYPEID -#include <boost/units/detail/utility.hpp> -#endif +//#ifndef BOOST_NO_TYPEID +//#include <boost/units/detail/utility.hpp> +//#endif #include <string> namespace boost { template <class T> inline std::string tag_type_name() { #ifdef BOOST_NO_TYPEID return BOOST_CURRENT_FUNCTION; #else - return units::detail::demangle(typeid(T*).name()); + return /*units::detail::demangle*/(typeid(T*).name()); #endif } template <class T> inline std::string type_name() { #ifdef BOOST_NO_TYPEID return BOOST_CURRENT_FUNCTION; #else - return units::detail::demangle(typeid(T).name()); + return /*units::detail::demangle*/(typeid(T).name()); #endif } namespace exception_detail { struct type_info_ { detail::sp_typeinfo const * type_; explicit type_info_( detail::sp_typeinfo const & type ): type_(&type) { } friend bool operator<( type_info_ const & a, type_info_ const & b ) { return 0!=(a.type_->before(*b.type_)); } }; } } #define BOOST_EXCEPTION_STATIC_TYPEID(T) ::boost::exception_detail::type_info_(BOOST_SP_TYPEID(T)) #ifndef BOOST_NO_RTTI #define BOOST_EXCEPTION_DYNAMIC_TYPEID(x) ::boost::exception_detail::type_info_(typeid(x)) #endif #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) #pragma warning(pop) diff --git a/3rdParty/Boost/src/boost/exception/diagnostic_information.hpp b/3rdParty/Boost/src/boost/exception/diagnostic_information.hpp index ef89d73..7889c8f 100644 --- a/3rdParty/Boost/src/boost/exception/diagnostic_information.hpp +++ b/3rdParty/Boost/src/boost/exception/diagnostic_information.hpp @@ -1,200 +1,201 @@ //Copyright (c) 2006-2010 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_0552D49838DD11DD90146B8956D89593 #define UUID_0552D49838DD11DD90146B8956D89593 -#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#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/config.hpp> #include <boost/exception/get_error_info.hpp> #include <boost/exception/info.hpp> #include <boost/utility/enable_if.hpp> -#ifndef BOOST_NO_RTTI -#include <boost/units/detail/utility.hpp> -#endif +//#ifndef BOOST_NO_RTTI +//#include <boost/units/detail/utility.hpp> +//#endif #include <exception> #include <sstream> #include <string> #ifndef BOOST_NO_EXCEPTIONS #include <boost/exception/current_exception_cast.hpp> namespace boost { namespace exception_detail { - std::string diagnostic_information_impl( boost::exception const *, std::exception const *, bool ); + std::string diagnostic_information_impl( boost::exception const *, std::exception const *, bool, bool ); } inline std::string - current_exception_diagnostic_information() + current_exception_diagnostic_information( bool verbose=true) { boost::exception const * be=current_exception_cast<boost::exception const>(); std::exception const * se=current_exception_cast<std::exception const>(); if( be || se ) - return exception_detail::diagnostic_information_impl(be,se,true); + return exception_detail::diagnostic_information_impl(be,se,true,verbose); else return "No diagnostic information available."; } } #endif namespace boost { namespace exception_detail { inline exception const * get_boost_exception( exception const * e ) { return e; } inline exception const * get_boost_exception( ... ) { return 0; } inline std::exception const * get_std_exception( std::exception const * e ) { return e; } inline std::exception const * get_std_exception( ... ) { return 0; } inline char const * get_diagnostic_information( exception const & x, char const * header ) { #ifndef BOOST_NO_EXCEPTIONS try { #endif error_info_container * c=x.data_.get(); if( !c ) x.data_.adopt(c=new exception_detail::error_info_container_impl); char const * di=c->diagnostic_information(header); BOOST_ASSERT(di!=0); return di; #ifndef BOOST_NO_EXCEPTIONS } catch(...) { return 0; } #endif } inline std::string - diagnostic_information_impl( boost::exception const * be, std::exception const * se, bool with_what ) + diagnostic_information_impl( boost::exception const * be, std::exception const * se, bool with_what, bool verbose ) { if( !be && !se ) return "Unknown exception."; #ifndef BOOST_NO_RTTI if( !be ) be=dynamic_cast<boost::exception const *>(se); if( !se ) se=dynamic_cast<std::exception const *>(be); #endif char const * wh=0; if( with_what && se ) { wh=se->what(); if( be && exception_detail::get_diagnostic_information(*be,0)==wh ) return wh; } std::ostringstream tmp; - if( be ) + if( be && verbose ) { char const * const * f=get_error_info<throw_file>(*be); int const * l=get_error_info<throw_line>(*be); char const * const * fn=get_error_info<throw_function>(*be); if( !f && !l && !fn ) tmp << "Throw location unknown (consider using BOOST_THROW_EXCEPTION)\n"; else { if( f ) { tmp << *f; if( int const * l=get_error_info<throw_line>(*be) ) tmp << '(' << *l << "): "; } tmp << "Throw in function "; if( char const * const * fn=get_error_info<throw_function>(*be) ) tmp << *fn; else tmp << "(unknown)"; tmp << '\n'; } } #ifndef BOOST_NO_RTTI - tmp << std::string("Dynamic exception type: ") << - units::detail::demangle((be?(BOOST_EXCEPTION_DYNAMIC_TYPEID(*be)):(BOOST_EXCEPTION_DYNAMIC_TYPEID(*se))).type_->name()) << '\n'; + if ( verbose ) + tmp << std::string("Dynamic exception type: ") << + /*units::detail::demangle*/((be?(BOOST_EXCEPTION_DYNAMIC_TYPEID(*be)):(BOOST_EXCEPTION_DYNAMIC_TYPEID(*se))).type_->name()) << '\n'; #endif - if( with_what && se ) + if( with_what && se && verbose ) tmp << "std::exception::what: " << wh << '\n'; if( be ) if( char const * s=exception_detail::get_diagnostic_information(*be,tmp.str().c_str()) ) if( *s ) - return s; + return std::string(s); return tmp.str(); } } template <class T> std::string - diagnostic_information( T const & e ) + diagnostic_information( T const & e, bool verbose=true ) { - return exception_detail::diagnostic_information_impl(exception_detail::get_boost_exception(&e),exception_detail::get_std_exception(&e),true); + return exception_detail::diagnostic_information_impl(exception_detail::get_boost_exception(&e),exception_detail::get_std_exception(&e),true,verbose); } inline char const * - diagnostic_information_what( exception const & e ) throw() + diagnostic_information_what( exception const & e, bool verbose=true ) throw() { char const * w=0; #ifndef BOOST_NO_EXCEPTIONS try { #endif - (void) exception_detail::diagnostic_information_impl(&e,0,false); + (void) exception_detail::diagnostic_information_impl(&e,0,false,verbose); if( char const * di=exception_detail::get_diagnostic_information(e,0) ) return di; else return "Failed to produce boost::diagnostic_information_what()"; #ifndef BOOST_NO_EXCEPTIONS } catch( ... ) { } #endif return w; } } #if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) #pragma warning(pop) #endif #endif diff --git a/3rdParty/Boost/src/boost/exception/exception.hpp b/3rdParty/Boost/src/boost/exception/exception.hpp index 42d2787..d762cf8 100644 --- a/3rdParty/Boost/src/boost/exception/exception.hpp +++ b/3rdParty/Boost/src/boost/exception/exception.hpp @@ -1,43 +1,43 @@ //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_274DA366004E11DCB1DDFE2E56D89593 #define UUID_274DA366004E11DCB1DDFE2E56D89593 -#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#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 namespace boost { namespace exception_detail { template <class T> class refcount_ptr { public: refcount_ptr(): px_(0) { } ~refcount_ptr() { release(); } refcount_ptr( refcount_ptr const & x ): px_(x.px_) { add_ref(); } refcount_ptr & @@ -175,70 +175,76 @@ boost template <> struct get_info<throw_function>; template <> struct get_info<throw_file>; template <> struct get_info<throw_line>; char const * get_diagnostic_information( exception const &, char const * ); void copy_boost_exception( exception *, exception const * ); template <class E,class Tag,class T> E const & set_info( E const &, error_info<Tag,T> const & ); template <class E> E const & set_info( E const &, throw_function const & ); template <class E> E const & set_info( E const &, throw_file const & ); template <class E> E const & set_info( E const &, throw_line const & ); } #if defined(__GNUC__) # if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4) # pragma GCC visibility push (default) # endif #endif class exception { + //<N3757> + public: + template <class Tag> void set( typename Tag::type const & ); + template <class Tag> typename Tag::type const * get() const; + //</N3757> + protected: exception(): throw_function_(0), throw_file_(0), throw_line_(-1) { } #ifdef __HP_aCC //On HP aCC, this protected copy constructor prevents throwing boost::exception. //On all other platforms, the same effect is achieved by the pure virtual destructor. exception( exception const & x ) throw(): data_(x.data_), throw_function_(x.throw_function_), throw_file_(x.throw_file_), throw_line_(x.throw_line_) { } #endif virtual ~exception() throw() #ifndef __HP_aCC = 0 //Workaround for HP aCC, =0 incorrectly leads to link errors. #endif ; #if (defined(__MWERKS__) && __MWERKS__<=0x3207) || (defined(_MSC_VER) && _MSC_VER<=1310) public: #else private: template <class E> friend E const & exception_detail::set_info( E const &, throw_function const & ); diff --git a/3rdParty/Boost/src/boost/exception/get_error_info.hpp b/3rdParty/Boost/src/boost/exception/get_error_info.hpp index 046f05a..96be763 100644 --- a/3rdParty/Boost/src/boost/exception/get_error_info.hpp +++ b/3rdParty/Boost/src/boost/exception/get_error_info.hpp @@ -1,43 +1,43 @@ //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_1A590226753311DD9E4CCF6156D89593 #define UUID_1A590226753311DD9E4CCF6156D89593 -#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#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/exception.hpp> #include <boost/exception/detail/error_info_impl.hpp> #include <boost/exception/detail/type_info.hpp> #include <boost/shared_ptr.hpp> namespace boost { namespace exception_detail { template <class ErrorInfo> struct get_info { static typename ErrorInfo::value_type * get( exception const & x ) { if( exception_detail::error_info_container * c=x.data_.get() ) if( shared_ptr<exception_detail::error_info_base> eib = c->get(BOOST_EXCEPTION_STATIC_TYPEID(ErrorInfo)) ) { #ifndef BOOST_NO_RTTI BOOST_ASSERT( 0!=dynamic_cast<ErrorInfo *>(eib.get()) ); #endif ErrorInfo * w = static_cast<ErrorInfo *>(eib.get()); return &w->value(); } return 0; diff --git a/3rdParty/Boost/src/boost/exception/info.hpp b/3rdParty/Boost/src/boost/exception/info.hpp index 7b56076..762a950 100644 --- a/3rdParty/Boost/src/boost/exception/info.hpp +++ b/3rdParty/Boost/src/boost/exception/info.hpp @@ -1,152 +1,151 @@ //Copyright (c) 2006-2010 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_8D22C4CA9CC811DCAA9133D256D89593 #define UUID_8D22C4CA9CC811DCAA9133D256D89593 -#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#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/exception.hpp> #include <boost/exception/to_string_stub.hpp> #include <boost/exception/detail/error_info_impl.hpp> #include <boost/shared_ptr.hpp> #include <boost/config.hpp> #include <map> namespace boost { template <class Tag,class T> inline - typename enable_if<has_to_string<T>,std::string>::type - to_string( error_info<Tag,T> const & x ) + std::string + error_info_name( error_info<Tag,T> const & x ) { - return to_string(x.value()); + return tag_type_name<Tag>(); } template <class Tag,class T> inline - error_info<Tag,T>:: - error_info( value_type const & value ): - value_(value) + std::string + to_string( error_info<Tag,T> const & x ) { + return '[' + error_info_name(x) + "] = " + to_string_stub(x.value()) + '\n'; } template <class Tag,class T> inline error_info<Tag,T>:: - ~error_info() throw() + error_info( value_type const & value ): + value_(value) { } template <class Tag,class T> inline - std::string error_info<Tag,T>:: - tag_typeid_name() const + ~error_info() throw() { - return tag_type_name<Tag>(); } template <class Tag,class T> inline std::string error_info<Tag,T>:: - value_as_string() const + name_value_string() const { return to_string_stub(*this); } namespace exception_detail { class error_info_container_impl: public error_info_container { public: error_info_container_impl(): count_(0) { } ~error_info_container_impl() throw() { } void set( shared_ptr<error_info_base> const & x, type_info_ const & typeid_ ) { BOOST_ASSERT(x); info_[typeid_] = x; diagnostic_info_str_.clear(); } shared_ptr<error_info_base> get( type_info_ const & ti ) const { error_info_map::const_iterator i=info_.find(ti); if( info_.end()!=i ) { shared_ptr<error_info_base> const & p = i->second; #ifndef BOOST_NO_RTTI BOOST_ASSERT( *BOOST_EXCEPTION_DYNAMIC_TYPEID(*p).type_==*ti.type_ ); #endif return p; } return shared_ptr<error_info_base>(); } char const * diagnostic_information( char const * header ) const { if( header ) { std::ostringstream tmp; tmp << header; for( error_info_map::const_iterator i=info_.begin(),end=info_.end(); i!=end; ++i ) { error_info_base const & x = *i->second; - tmp << '[' << x.tag_typeid_name() << "] = " << x.value_as_string() << '\n'; + tmp << x.name_value_string(); } tmp.str().swap(diagnostic_info_str_); } return diagnostic_info_str_.c_str(); } private: friend class boost::exception; typedef std::map< type_info_, shared_ptr<error_info_base> > error_info_map; error_info_map info_; mutable std::string diagnostic_info_str_; mutable int count_; error_info_container_impl( error_info_container_impl const & ); error_info_container_impl & operator=( error_info_container const & ); void add_ref() const { ++count_; } bool release() const { if( --count_ ) return false; else { delete this; return true; } } diff --git a/3rdParty/Boost/src/boost/exception/to_string.hpp b/3rdParty/Boost/src/boost/exception/to_string.hpp index 59bf83d..68541d2 100644 --- a/3rdParty/Boost/src/boost/exception/to_string.hpp +++ b/3rdParty/Boost/src/boost/exception/to_string.hpp @@ -1,61 +1,66 @@ //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 defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#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 }; diff --git a/3rdParty/Boost/src/boost/exception/to_string_stub.hpp b/3rdParty/Boost/src/boost/exception/to_string_stub.hpp index e41d369..b6ab31c 100644 --- a/3rdParty/Boost/src/boost/exception/to_string_stub.hpp +++ b/3rdParty/Boost/src/boost/exception/to_string_stub.hpp @@ -1,43 +1,43 @@ //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 defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS) +#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 @@ -69,41 +69,49 @@ boost 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 |