Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r58072 - in trunk: boost boost/exception boost/exception/detail libs/exception/test
From: emil_at_[hidden]
Date: 2009-11-30 21:16:53


Author: emildotchevski
Date: 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
New Revision: 58072
URL: http://svn.boost.org/trac/boost/changeset/58072

Log:
Suppressing warnings. Please report any problems (may have broken something!)
Added:
   trunk/boost/exception/detail/exception_ptr.hpp (contents, props changed)
Text files modified:
   trunk/boost/exception.hpp | 4
   trunk/boost/exception/all.hpp | 4
   trunk/boost/exception/current_exception_cast.hpp | 4
   trunk/boost/exception/detail/attribute_noreturn.hpp | 4
   trunk/boost/exception/detail/error_info_impl.hpp | 12
   trunk/boost/exception/detail/exception_ptr_base.hpp | 5
   trunk/boost/exception/detail/is_output_streamable.hpp | 4
   trunk/boost/exception/detail/object_hex_dump.hpp | 4
   trunk/boost/exception/detail/type_info.hpp | 5
   trunk/boost/exception/diagnostic_information.hpp | 5
   trunk/boost/exception/errinfo_errno.hpp | 13 +
   trunk/boost/exception/exception.hpp | 12
   trunk/boost/exception/get_error_info.hpp | 4
   trunk/boost/exception/info.hpp | 9
   trunk/boost/exception/info_tuple.hpp | 4
   trunk/boost/exception/to_string.hpp | 4
   trunk/boost/exception/to_string_stub.hpp | 4
   trunk/boost/exception_ptr.hpp | 456 ---------------------------------------
   trunk/libs/exception/test/1-throw_exception_test.cpp | 5
   trunk/libs/exception/test/3-throw_exception_no_integration_test.cpp | 5
   trunk/libs/exception/test/Jamfile.v2 | 7
   trunk/libs/exception/test/cloning_test.cpp | 9
   trunk/libs/exception/test/errinfos_test.cpp | 7
   trunk/libs/exception/test/errno_test.cpp | 5
   trunk/libs/exception/test/error_info_test.cpp | 17
   trunk/libs/exception/test/throw_exception_test.cpp | 13
   26 files changed, 132 insertions(+), 493 deletions(-)

Modified: trunk/boost/exception.hpp
==============================================================================
--- trunk/boost/exception.hpp (original)
+++ trunk/boost/exception.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,8 +6,6 @@
 #ifndef UUID_1D94A7C6054E11DB9804B622A1EF5492
 #define UUID_1D94A7C6054E11DB9804B622A1EF5492
 
-//The header <boost/exception.hpp> has been deprecated.
-//Please #include <boost/exception/all.hpp> instead.
-#include <boost/exception/all.hpp>
+#error The header <boost/exception.hpp> has been deprecated. Please #include <boost/exception/all.hpp> instead.
 
 #endif

Modified: trunk/boost/exception/all.hpp
==============================================================================
--- trunk/boost/exception/all.hpp (original)
+++ trunk/boost/exception/all.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,6 +6,10 @@
 #ifndef UUID_316FDA946C0D11DEA9CBAE5255D89593
 #define UUID_316FDA946C0D11DEA9CBAE5255D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 #include <boost/exception/diagnostic_information.hpp>
 #include <boost/exception/error_info.hpp>
 #include <boost/exception/exception.hpp>

Modified: trunk/boost/exception/current_exception_cast.hpp
==============================================================================
--- trunk/boost/exception/current_exception_cast.hpp (original)
+++ trunk/boost/exception/current_exception_cast.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,6 +6,10 @@
 #ifndef UUID_7E83C166200811DE885E826156D89593
 #define UUID_7E83C166200811DE885E826156D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 namespace
 boost
     {

Modified: trunk/boost/exception/detail/attribute_noreturn.hpp
==============================================================================
--- trunk/boost/exception/detail/attribute_noreturn.hpp (original)
+++ trunk/boost/exception/detail/attribute_noreturn.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,9 +6,7 @@
 #ifndef UUID_61531AB0680611DEADD5846855D89593
 #define UUID_61531AB0680611DEADD5846855D89593
 
-#include <boost/config.hpp>
-
-#if defined(BOOST_MSVC)
+#if defined(_MSC_VER)
 #define BOOST_ATTRIBUTE_NORETURN __declspec(noreturn)
 #elif defined(__GNUC__)
 #define BOOST_ATTRIBUTE_NORETURN __attribute__((noreturn))

Modified: trunk/boost/exception/detail/error_info_impl.hpp
==============================================================================
--- trunk/boost/exception/detail/error_info_impl.hpp (original)
+++ trunk/boost/exception/detail/error_info_impl.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,6 +6,10 @@
 #ifndef UUID_CE6983AC753411DDA764247956D89593
 #define UUID_CE6983AC753411DDA764247956D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 #include <string>
 
 namespace
@@ -24,13 +28,16 @@
 
             protected:
 
- virtual
             ~error_info_base() throw()
                 {
                 }
             };
         }
 
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable:4512) //assignment operator could not be generated
+#endif
     template <class Tag,class T>
     class
     error_info:
@@ -62,6 +69,9 @@
 
         value_type value_;
         };
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
     }
 
 #endif

Added: trunk/boost/exception/detail/exception_ptr.hpp
==============================================================================
--- (empty file)
+++ trunk/boost/exception/detail/exception_ptr.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -0,0 +1,469 @@
+//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)
+#pragma GCC system_header
+#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/shared_ptr.hpp>
+#include <stdexcept>
+#include <new>
+#include <ios>
+
+namespace
+boost
+ {
+#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();
+ }
+#endif
+
+ class exception_ptr;
+ exception_ptr current_exception();
+ void rethrow_exception( exception_ptr const & );
+
+ class
+ exception_ptr:
+ public exception_detail::exception_ptr_base
+ {
+ typedef bool exception_ptr::*unspecified_bool_type;
+ friend exception_ptr current_exception();
+ friend void rethrow_exception( exception_ptr const & );
+
+ shared_ptr<exception_detail::clone_base const> c_;
+ bool bad_alloc_;
+
+ struct
+ bad_alloc_tag
+ {
+ };
+
+ explicit
+ exception_ptr( bad_alloc_tag ):
+ bad_alloc_(true)
+ {
+ }
+
+ explicit
+ exception_ptr( shared_ptr<exception_detail::clone_base const> const & c ):
+ c_(c),
+ bad_alloc_(false)
+ {
+ BOOST_ASSERT(c);
+ }
+
+ void
+ _rethrow() const
+ {
+ BOOST_ASSERT(*this);
+ if( bad_alloc_ )
+ throw enable_current_exception(std::bad_alloc());
+ else
+ c_->rethrow();
+ }
+
+ bool
+ _empty() const
+ {
+ return !bad_alloc_ && !c_;
+ }
+
+ public:
+
+ exception_ptr():
+ bad_alloc_(false)
+ {
+ }
+
+ ~exception_ptr() throw()
+ {
+ }
+
+ operator unspecified_bool_type() const
+ {
+ return _empty() ? 0 : &exception_ptr::bad_alloc_;
+ }
+
+ friend
+ bool
+ operator==( exception_ptr const & a, exception_ptr const & b )
+ {
+ return a.c_==b.c_ && a.bad_alloc_==b.bad_alloc_;
+ }
+
+ friend
+ bool
+ operator!=( exception_ptr const & a, exception_ptr const & b )
+ {
+ return !(a==b);
+ }
+ };
+
+ class
+ unknown_exception:
+ public exception,
+ public std::exception,
+ public exception_detail::clone_base
+ {
+ public:
+
+ unknown_exception()
+ {
+ }
+
+ explicit
+ unknown_exception( std::exception const & e )
+ {
+ add_original_type(e);
+ }
+
+ explicit
+ unknown_exception( boost::exception const & e ):
+ boost::exception(e)
+ {
+ add_original_type(e);
+ }
+
+ ~unknown_exception() throw()
+ {
+ }
+
+ private:
+
+ exception_detail::clone_base const *
+ clone() const
+ {
+ return new unknown_exception(*this);
+ }
+
+ void
+ rethrow() const
+ {
+ throw*this;
+ }
+
+ template <class E>
+ void
+ add_original_type( E const & e )
+ {
+#ifndef BOOST_NO_RTTI
+ (*this) << original_exception_type(&typeid(e));
+#endif
+ }
+ };
+
+ namespace
+ exception_detail
+ {
+ template <class T>
+ class
+ current_exception_std_exception_wrapper:
+ public T,
+ public boost::exception,
+ public clone_base
+ {
+ public:
+
+ explicit
+ current_exception_std_exception_wrapper( T const & e1 ):
+ T(e1)
+ {
+ add_original_type(e1);
+ }
+
+ current_exception_std_exception_wrapper( T const & e1, boost::exception const & e2 ):
+ T(e1),
+ boost::exception(e2)
+ {
+ add_original_type(e1);
+ }
+
+ ~current_exception_std_exception_wrapper() throw()
+ {
+ }
+
+ private:
+
+ clone_base const *
+ clone() const
+ {
+ return new current_exception_std_exception_wrapper(*this);
+ }
+
+ void
+ rethrow() const
+ {
+ throw *this;
+ }
+
+ template <class E>
+ void
+ add_original_type( E const & e )
+ {
+#ifndef BOOST_NO_RTTI
+ (*this) << original_exception_type(&typeid(e));
+#endif
+ }
+ };
+
+#ifdef BOOST_NO_RTTI
+ template <class T>
+ exception const *
+ get_boost_exception( T const * )
+ {
+ try
+ {
+ throw;
+ }
+ catch(
+ exception & x )
+ {
+ return &x;
+ }
+ catch(...)
+ {
+ return 0;
+ }
+ }
+#else
+ template <class T>
+ exception const *
+ get_boost_exception( T const * x )
+ {
+ return dynamic_cast<exception const *>(x);
+ }
+#endif
+
+ template <class T>
+ inline
+ shared_ptr<clone_base const>
+ current_exception_std_exception( T const & e1 )
+ {
+ if( boost::exception const * e2 = get_boost_exception(&e1) )
+ return shared_ptr<current_exception_std_exception_wrapper<T> const>(new current_exception_std_exception_wrapper<T>(e1,*e2));
+ else
+ return shared_ptr<current_exception_std_exception_wrapper<T> const>(new current_exception_std_exception_wrapper<T>(e1));
+ }
+
+ inline
+ shared_ptr<clone_base const>
+ current_exception_unknown_exception()
+ {
+ return shared_ptr<unknown_exception const>(new unknown_exception());
+ }
+
+ inline
+ shared_ptr<clone_base const>
+ current_exception_unknown_boost_exception( boost::exception const & e )
+ {
+ return shared_ptr<unknown_exception const>(new unknown_exception(e));
+ }
+
+ inline
+ shared_ptr<clone_base const>
+ current_exception_unknown_std_exception( std::exception const & e )
+ {
+ if( boost::exception const * be = get_boost_exception(&e) )
+ return current_exception_unknown_boost_exception(*be);
+ else
+ return shared_ptr<unknown_exception const>(new unknown_exception(e));
+ }
+
+ inline
+ shared_ptr<clone_base const>
+ current_exception_impl()
+ {
+ try
+ {
+ throw;
+ }
+ catch(
+ exception_detail::clone_base & e )
+ {
+ return shared_ptr<exception_detail::clone_base const>(e.clone());
+ }
+ catch(
+ std::domain_error & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::invalid_argument & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::length_error & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::out_of_range & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::logic_error & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::range_error & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::overflow_error & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::underflow_error & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::ios_base::failure & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::runtime_error & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::bad_alloc & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+#ifndef BOOST_NO_TYPEID
+ catch(
+ std::bad_cast & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::bad_typeid & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+#endif
+ catch(
+ std::bad_exception & e )
+ {
+ return exception_detail::current_exception_std_exception(e);
+ }
+ catch(
+ std::exception & e )
+ {
+ return exception_detail::current_exception_unknown_std_exception(e);
+ }
+ catch(
+ boost::exception & e )
+ {
+ return exception_detail::current_exception_unknown_boost_exception(e);
+ }
+ catch(
+ ... )
+ {
+ return exception_detail::current_exception_unknown_exception();
+ }
+ }
+ }
+
+ inline
+ exception_ptr
+ current_exception()
+ {
+ try
+ {
+ return exception_ptr(exception_detail::current_exception_impl());
+ }
+ catch(
+ std::bad_alloc & )
+ {
+ }
+ catch(
+ ... )
+ {
+ try
+ {
+ return exception_ptr(exception_detail::current_exception_std_exception(std::bad_exception()));
+ }
+ catch(
+ std::bad_alloc & )
+ {
+ }
+ catch(
+ ... )
+ {
+ BOOST_ASSERT(0);
+ }
+ }
+ return exception_ptr(exception_ptr::bad_alloc_tag());
+ }
+
+ template <class T>
+ inline
+ exception_ptr
+ copy_exception( T const & e )
+ {
+ try
+ {
+ throw enable_current_exception(e);
+ }
+ catch(
+ ... )
+ {
+ return current_exception();
+ }
+ }
+
+ inline
+ void
+ rethrow_exception( exception_ptr const & p )
+ {
+ p._rethrow();
+ }
+
+ 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;
+ }
+ }
+
+#endif

Modified: trunk/boost/exception/detail/exception_ptr_base.hpp
==============================================================================
--- trunk/boost/exception/detail/exception_ptr_base.hpp (original)
+++ trunk/boost/exception/detail/exception_ptr_base.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,6 +6,10 @@
 #ifndef UUID_DC4208C6417811DEBF11E1EC55D89593
 #define UUID_DC4208C6417811DEBF11E1EC55D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 namespace
 boost
     {
@@ -22,7 +26,6 @@
 
                         protected:
 
- virtual
                         ~exception_ptr_base() throw()
                             {
                             }

Modified: trunk/boost/exception/detail/is_output_streamable.hpp
==============================================================================
--- trunk/boost/exception/detail/is_output_streamable.hpp (original)
+++ trunk/boost/exception/detail/is_output_streamable.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,6 +6,10 @@
 #ifndef UUID_898984B4076411DD973EDFA055D89593
 #define UUID_898984B4076411DD973EDFA055D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 #include <ostream>
 
 namespace

Modified: trunk/boost/exception/detail/object_hex_dump.hpp
==============================================================================
--- trunk/boost/exception/detail/object_hex_dump.hpp (original)
+++ trunk/boost/exception/detail/object_hex_dump.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,6 +6,10 @@
 #ifndef UUID_6F463AC838DF11DDA3E6909F56D89593
 #define UUID_6F463AC838DF11DDA3E6909F56D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 #include <boost/exception/detail/type_info.hpp>
 #include <iomanip>
 #include <ios>

Modified: trunk/boost/exception/detail/type_info.hpp
==============================================================================
--- trunk/boost/exception/detail/type_info.hpp (original)
+++ trunk/boost/exception/detail/type_info.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,8 +6,13 @@
 #ifndef UUID_C3E1741C754311DDB2834CCA55D89593
 #define UUID_C3E1741C754311DDB2834CCA55D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 #include <boost/detail/sp_typeinfo.hpp>
 #include <boost/current_function.hpp>
+#include <boost/config.hpp>
 
 namespace
 boost

Modified: trunk/boost/exception/diagnostic_information.hpp
==============================================================================
--- trunk/boost/exception/diagnostic_information.hpp (original)
+++ trunk/boost/exception/diagnostic_information.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,10 +6,15 @@
 #ifndef UUID_0552D49838DD11DD90146B8956D89593
 #define UUID_0552D49838DD11DD90146B8956D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 #include <boost/config.hpp>
 #include <boost/exception/get_error_info.hpp>
 #include <boost/exception/detail/exception_ptr_base.hpp>
 #include <boost/utility/enable_if.hpp>
+#include <boost/config.hpp>
 #include <exception>
 #include <sstream>
 #include <string>

Modified: trunk/boost/exception/errinfo_errno.hpp
==============================================================================
--- trunk/boost/exception/errinfo_errno.hpp (original)
+++ trunk/boost/exception/errinfo_errno.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,10 +6,19 @@
 #ifndef UUID_F0EE17BE6C1211DE87FF459155D89593
 #define UUID_F0EE17BE6C1211DE87FF459155D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 #include "boost/exception/info.hpp"
 #include <errno.h>
 #include <string.h>
 
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable:4996) //'strerror': This function or variable may be unsafe
+#endif
+
 namespace
 boost
     {
@@ -32,4 +41,8 @@
         }
     }
 
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
+
 #endif

Modified: trunk/boost/exception/exception.hpp
==============================================================================
--- trunk/boost/exception/exception.hpp (original)
+++ trunk/boost/exception/exception.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,6 +6,10 @@
 #ifndef UUID_274DA366004E11DCB1DDFE2E56D89593
 #define UUID_274DA366004E11DCB1DDFE2E56D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 namespace
 boost
     {
@@ -151,7 +155,6 @@
 
             protected:
 
- virtual
             ~error_info_container() throw()
                 {
                 }
@@ -349,6 +352,10 @@
             {
             }
 
+#ifdef _MSC_VER
+#pragma warning(push)
+#pragma warning(disable:4512) //assignment operator could not be generated
+#endif
         template <class T>
         class
         clone_impl:
@@ -382,6 +389,9 @@
                 throw*this;
                 }
             };
+#ifdef _MSC_VER
+#pragma warning(pop)
+#endif
         }
 
     template <class T>

Modified: trunk/boost/exception/get_error_info.hpp
==============================================================================
--- trunk/boost/exception/get_error_info.hpp (original)
+++ trunk/boost/exception/get_error_info.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,6 +6,10 @@
 #ifndef UUID_1A590226753311DD9E4CCF6156D89593
 #define UUID_1A590226753311DD9E4CCF6156D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 #include <boost/exception/exception.hpp>
 #include <boost/exception/detail/error_info_impl.hpp>
 #include <boost/exception/detail/type_info.hpp>

Modified: trunk/boost/exception/info.hpp
==============================================================================
--- trunk/boost/exception/info.hpp (original)
+++ trunk/boost/exception/info.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,10 +6,15 @@
 #ifndef UUID_8D22C4CA9CC811DCAA9133D256D89593
 #define UUID_8D22C4CA9CC811DCAA9133D256D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#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
@@ -146,8 +151,8 @@
         {
         typedef error_info<Tag,T> error_info_tag_t;
         shared_ptr<error_info_tag_t> p( new error_info_tag_t(v) );
- exception_detail::error_info_container * c;
- if( !(c=x.data_.get()) )
+ exception_detail::error_info_container * c=x.data_.get();
+ if( !c )
             x.data_.adopt(c=new exception_detail::error_info_container_impl);
         c->set(p,BOOST_EXCEPTION_STATIC_TYPEID(error_info_tag_t));
         return x;

Modified: trunk/boost/exception/info_tuple.hpp
==============================================================================
--- trunk/boost/exception/info_tuple.hpp (original)
+++ trunk/boost/exception/info_tuple.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,6 +6,10 @@
 #ifndef UUID_63EE924290FB11DC87BB856555D89593
 #define UUID_63EE924290FB11DC87BB856555D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 #include <boost/exception/info.hpp>
 #include <boost/tuple/tuple.hpp>
 

Modified: trunk/boost/exception/to_string.hpp
==============================================================================
--- trunk/boost/exception/to_string.hpp (original)
+++ trunk/boost/exception/to_string.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,6 +6,10 @@
 #ifndef UUID_7E48761AD92811DC9011477D56D89593
 #define UUID_7E48761AD92811DC9011477D56D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 #include <boost/utility/enable_if.hpp>
 #include <boost/exception/detail/is_output_streamable.hpp>
 #include <sstream>

Modified: trunk/boost/exception/to_string_stub.hpp
==============================================================================
--- trunk/boost/exception/to_string_stub.hpp (original)
+++ trunk/boost/exception/to_string_stub.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,6 +6,10 @@
 #ifndef UUID_E788439ED9F011DCB181F25B55D89593
 #define UUID_E788439ED9F011DCB181F25B55D89593
 
+#if defined(__GNUC__) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
+#pragma GCC system_header
+#endif
+
 #include <boost/exception/to_string.hpp>
 #include <boost/exception/detail/object_hex_dump.hpp>
 #include <boost/assert.hpp>

Modified: trunk/boost/exception_ptr.hpp
==============================================================================
--- trunk/boost/exception_ptr.hpp (original)
+++ trunk/boost/exception_ptr.hpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,460 +6,6 @@
 #ifndef UUID_FA5836A2CADA11DC8CD47C8555D89593
 #define UUID_FA5836A2CADA11DC8CD47C8555D89593
 
-#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/shared_ptr.hpp>
-#include <stdexcept>
-#include <new>
-#include <ios>
-
-namespace
-boost
- {
-#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();
- }
-#endif
-
- class exception_ptr;
- exception_ptr current_exception();
- void rethrow_exception( exception_ptr const & );
-
- class
- exception_ptr:
- public exception_detail::exception_ptr_base
- {
- typedef bool exception_ptr::*unspecified_bool_type;
- friend exception_ptr current_exception();
- friend void rethrow_exception( exception_ptr const & );
-
- shared_ptr<exception_detail::clone_base const> c_;
- bool bad_alloc_;
-
- struct
- bad_alloc_tag
- {
- };
-
- explicit
- exception_ptr( bad_alloc_tag ):
- bad_alloc_(true)
- {
- }
-
- explicit
- exception_ptr( shared_ptr<exception_detail::clone_base const> const & c ):
- c_(c),
- bad_alloc_(false)
- {
- BOOST_ASSERT(c);
- }
-
- void
- _rethrow() const
- {
- BOOST_ASSERT(*this);
- if( bad_alloc_ )
- throw enable_current_exception(std::bad_alloc());
- else
- c_->rethrow();
- }
-
- bool
- _empty() const
- {
- return !bad_alloc_ && !c_;
- }
-
- public:
-
- exception_ptr():
- bad_alloc_(false)
- {
- }
-
- ~exception_ptr() throw()
- {
- }
-
- operator unspecified_bool_type() const
- {
- return _empty() ? 0 : &exception_ptr::bad_alloc_;
- }
-
- friend
- bool
- operator==( exception_ptr const & a, exception_ptr const & b )
- {
- return a.c_==b.c_ && a.bad_alloc_==b.bad_alloc_;
- }
-
- friend
- bool
- operator!=( exception_ptr const & a, exception_ptr const & b )
- {
- return !(a==b);
- }
- };
-
- class
- unknown_exception:
- public exception,
- public std::exception,
- public exception_detail::clone_base
- {
- public:
-
- unknown_exception()
- {
- }
-
- explicit
- unknown_exception( std::exception const & e )
- {
- add_original_type(e);
- }
-
- explicit
- unknown_exception( boost::exception const & e ):
- boost::exception(e)
- {
- add_original_type(e);
- }
-
- ~unknown_exception() throw()
- {
- }
-
- private:
-
- exception_detail::clone_base const *
- clone() const
- {
- return new unknown_exception(*this);
- }
-
- void
- rethrow() const
- {
- throw*this;
- }
-
- template <class E>
- void
- add_original_type( E const & e )
- {
-#ifndef BOOST_NO_RTTI
- (*this) << original_exception_type(&typeid(e));
-#endif
- }
- };
-
- namespace
- exception_detail
- {
- template <class T>
- class
- current_exception_std_exception_wrapper:
- public T,
- public boost::exception,
- public clone_base
- {
- public:
-
- explicit
- current_exception_std_exception_wrapper( T const & e1 ):
- T(e1)
- {
- add_original_type(e1);
- }
-
- current_exception_std_exception_wrapper( T const & e1, boost::exception const & e2 ):
- T(e1),
- boost::exception(e2)
- {
- add_original_type(e1);
- }
-
- ~current_exception_std_exception_wrapper() throw()
- {
- }
-
- private:
-
- clone_base const *
- clone() const
- {
- return new current_exception_std_exception_wrapper(*this);
- }
-
- void
- rethrow() const
- {
- throw *this;
- }
-
- template <class E>
- void
- add_original_type( E const & e )
- {
-#ifndef BOOST_NO_RTTI
- (*this) << original_exception_type(&typeid(e));
-#endif
- }
- };
-
-#ifdef BOOST_NO_RTTI
- template <class T>
- exception const *
- get_boost_exception( T const * )
- {
- try
- {
- throw;
- }
- catch(
- exception & x )
- {
- return &x;
- }
- catch(...)
- {
- return 0;
- }
- }
-#else
- template <class T>
- exception const *
- get_boost_exception( T const * x )
- {
- return dynamic_cast<exception const *>(x);
- }
-#endif
-
- template <class T>
- inline
- shared_ptr<clone_base const>
- current_exception_std_exception( T const & e1 )
- {
- if( boost::exception const * e2 = get_boost_exception(&e1) )
- return shared_ptr<current_exception_std_exception_wrapper<T> const>(new current_exception_std_exception_wrapper<T>(e1,*e2));
- else
- return shared_ptr<current_exception_std_exception_wrapper<T> const>(new current_exception_std_exception_wrapper<T>(e1));
- }
-
- inline
- shared_ptr<clone_base const>
- current_exception_unknown_exception()
- {
- return shared_ptr<unknown_exception const>(new unknown_exception());
- }
-
- inline
- shared_ptr<clone_base const>
- current_exception_unknown_boost_exception( boost::exception const & e )
- {
- return shared_ptr<unknown_exception const>(new unknown_exception(e));
- }
-
- inline
- shared_ptr<clone_base const>
- current_exception_unknown_std_exception( std::exception const & e )
- {
- if( boost::exception const * be = get_boost_exception(&e) )
- return current_exception_unknown_boost_exception(*be);
- else
- return shared_ptr<unknown_exception const>(new unknown_exception(e));
- }
-
- inline
- shared_ptr<clone_base const>
- current_exception_impl()
- {
- try
- {
- throw;
- }
- catch(
- exception_detail::clone_base & e )
- {
- return shared_ptr<exception_detail::clone_base const>(e.clone());
- }
- catch(
- std::domain_error & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::invalid_argument & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::length_error & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::out_of_range & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::logic_error & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::range_error & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::overflow_error & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::underflow_error & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::ios_base::failure & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::runtime_error & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::bad_alloc & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
-#ifndef BOOST_NO_TYPEID
- catch(
- std::bad_cast & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::bad_typeid & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
-#endif
- catch(
- std::bad_exception & e )
- {
- return exception_detail::current_exception_std_exception(e);
- }
- catch(
- std::exception & e )
- {
- return exception_detail::current_exception_unknown_std_exception(e);
- }
- catch(
- boost::exception & e )
- {
- return exception_detail::current_exception_unknown_boost_exception(e);
- }
- catch(
- ... )
- {
- return exception_detail::current_exception_unknown_exception();
- }
- }
- }
-
- inline
- exception_ptr
- current_exception()
- {
- try
- {
- return exception_ptr(exception_detail::current_exception_impl());
- }
- catch(
- std::bad_alloc & )
- {
- }
- catch(
- ... )
- {
- try
- {
- return exception_ptr(exception_detail::current_exception_std_exception(std::bad_exception()));
- }
- catch(
- std::bad_alloc & )
- {
- }
- catch(
- ... )
- {
- BOOST_ASSERT(0);
- }
- }
- return exception_ptr(exception_ptr::bad_alloc_tag());
- }
-
- template <class T>
- inline
- exception_ptr
- copy_exception( T const & e )
- {
- try
- {
- throw enable_current_exception(e);
- }
- catch(
- ... )
- {
- return current_exception();
- }
- }
-
- inline
- void
- rethrow_exception( exception_ptr const & p )
- {
- p._rethrow();
- }
-
- 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;
- }
- }
+#include <boost/exception/detail/exception_ptr.hpp>
 
 #endif

Modified: trunk/libs/exception/test/1-throw_exception_test.cpp
==============================================================================
--- trunk/libs/exception/test/1-throw_exception_test.cpp (original)
+++ trunk/libs/exception/test/1-throw_exception_test.cpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -6,6 +6,11 @@
 #include <boost/throw_exception.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
+#include <boost/config.hpp>
+#ifdef BOOST_MSVC
+#pragma warning(disable:4702) //unreachable code
+#endif
+
 class my_exception: public std::exception { };
 
 int

Modified: trunk/libs/exception/test/3-throw_exception_no_integration_test.cpp
==============================================================================
--- trunk/libs/exception/test/3-throw_exception_no_integration_test.cpp (original)
+++ trunk/libs/exception/test/3-throw_exception_no_integration_test.cpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -7,6 +7,11 @@
 #include <boost/throw_exception.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
+#include <boost/config.hpp>
+#ifdef BOOST_MSVC
+#pragma warning(disable:4702) //unreachable code
+#endif
+
 class my_exception: public std::exception { };
 
 int

Modified: trunk/libs/exception/test/Jamfile.v2
==============================================================================
--- trunk/libs/exception/test/Jamfile.v2 (original)
+++ trunk/libs/exception/test/Jamfile.v2 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -7,7 +7,11 @@
 
 import testing ;
 
-project : requirements <exception-handling>on ;
+project
+ : requirements
+ <exception-handling>on
+ <warnings>all
+ ;
 
 #to_string
 
@@ -45,7 +49,6 @@
 compile exception_ptr_hpp_test.cpp ;
 compile diagnostic_information_hpp_test.cpp ;
 compile error_info_hpp_test.cpp ;
-compile exception_hpp_test.cpp ;
 compile get_error_info_hpp_test.cpp ;
 compile info_hpp_test.cpp ;
 compile info_tuple_hpp_test.cpp ;

Modified: trunk/libs/exception/test/cloning_test.cpp
==============================================================================
--- trunk/libs/exception/test/cloning_test.cpp (original)
+++ trunk/libs/exception/test/cloning_test.cpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -10,9 +10,10 @@
 #include <boost/detail/workaround.hpp>
 #include <string>
 
-#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
-struct my_tag {};
-#endif
+#include <boost/config.hpp>
+#ifdef BOOST_MSVC
+#pragma warning(disable:4512) //assignment operator could not be generated
+#endif
 
 typedef boost::error_info<struct my_tag,int> my_info;
 
@@ -556,7 +557,7 @@
             }
         try
             {
- throw boost::enable_current_exception(derives_std_boost_exception("what2") << boost::errinfo_nested_exception(p) );
+ throw boost::enable_current_exception(derives_std_boost_exception("what2") << boost::errinfo_nested_exception(p) );
             }
         catch(
         ... )

Modified: trunk/libs/exception/test/errinfos_test.cpp
==============================================================================
--- trunk/libs/exception/test/errinfos_test.cpp (original)
+++ trunk/libs/exception/test/errinfos_test.cpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -17,6 +17,11 @@
 #include <boost/detail/lightweight_test.hpp>
 #include <exception>
 
+#include <boost/config.hpp>
+#ifdef BOOST_MSVC
+#pragma warning(disable:4702) //unreachable code
+#endif
+
 struct
 test_exception:
     virtual boost::exception,
@@ -43,7 +48,7 @@
 #else
         BOOST_THROW_EXCEPTION(e<<errinfo_type_info_name(typeid(int).name()));
 #endif
- BOOST_TEST(false);
+ BOOST_ERROR("BOOST_THROW_EXCEPTION failed to throw.");
         }
     catch(
     boost::exception & e )

Modified: trunk/libs/exception/test/errno_test.cpp
==============================================================================
--- trunk/libs/exception/test/errno_test.cpp (original)
+++ trunk/libs/exception/test/errno_test.cpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -9,10 +9,6 @@
 #include <boost/detail/workaround.hpp>
 #include <errno.h>
 
-#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
-struct tag_errno {};
-#endif
-
 typedef boost::error_info<struct tag_errno,int> info_errno;
 
 class
@@ -28,7 +24,6 @@
         {
         errno=1;
         throw my_exception() << info_errno(errno);
- BOOST_TEST(false);
         }
     catch(
     my_exception & x )

Modified: trunk/libs/exception/test/error_info_test.cpp
==============================================================================
--- trunk/libs/exception/test/error_info_test.cpp (original)
+++ trunk/libs/exception/test/error_info_test.cpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -8,6 +8,12 @@
 #include <boost/detail/lightweight_test.hpp>
 #include <boost/detail/workaround.hpp>
 
+#include <boost/config.hpp>
+#ifdef BOOST_MSVC
+#pragma warning(disable:4702) //unreachable code
+#pragma warning(disable:4512) //assignment operator could not be generated
+#endif
+
 struct throws_on_copy;
 struct non_printable { };
 
@@ -35,16 +41,6 @@
         }
     };
 
-#if BOOST_WORKAROUND(__CODEGEARC__, BOOST_TESTED_AT(0x610))
-struct tag_test_1 {};
-struct tag_test_2 {};
-struct tag_test_3 {};
-struct tag_test_4 {};
-struct tag_test_5 {};
-struct tag_test_6 {};
-struct tag_user_data {};
-#endif
-
 typedef boost::error_info<struct tag_test_1,int> test_1;
 typedef boost::error_info<struct tag_test_2,unsigned int> test_2;
 typedef boost::error_info<struct tag_test_3,float> test_3;
@@ -318,7 +314,6 @@
     try
         {
         throw test_exception() << test_7(user_data(count));
- BOOST_TEST(false);
         }
     catch(
     boost::exception & x )

Modified: trunk/libs/exception/test/throw_exception_test.cpp
==============================================================================
--- trunk/libs/exception/test/throw_exception_test.cpp (original)
+++ trunk/libs/exception/test/throw_exception_test.cpp 2009-11-30 21:16:50 EST (Mon, 30 Nov 2009)
@@ -9,6 +9,11 @@
 #include <boost/exception_ptr.hpp>
 #include <boost/detail/lightweight_test.hpp>
 
+#include <boost/config.hpp>
+#ifdef BOOST_MSVC
+#pragma warning(disable:4702) //unreachable code
+#endif
+
 typedef boost::error_info<struct tag_test_int,int> test_data;
 
 struct
@@ -30,7 +35,7 @@
     try
         {
         BOOST_THROW_EXCEPTION(exception1());
- BOOST_TEST(false);
+ BOOST_ERROR("BOOST_THROW_EXCEPTION failed to throw.");
         }
     catch(
     boost::exception & x )
@@ -40,7 +45,7 @@
         int const * line=boost::get_error_info<boost::throw_line>(x);
         BOOST_TEST( file && *file );
         BOOST_TEST( function && *function );
- BOOST_TEST( line && *line==32 );
+ BOOST_TEST( line && *line==37 );
         }
     catch(
     ... )
@@ -50,7 +55,7 @@
     try
         {
         BOOST_THROW_EXCEPTION(exception2() << test_data(42));
- BOOST_TEST(false);
+ BOOST_ERROR("BOOST_THROW_EXCEPTION failed to throw.");
         }
     catch(
     boost::exception & x )
@@ -61,7 +66,7 @@
         int const * data=boost::get_error_info<test_data>(x);
         BOOST_TEST( file && *file );
         BOOST_TEST( function && *function );
- BOOST_TEST( line && *line==52 );
+ BOOST_TEST( line && *line==57 );
         BOOST_TEST( data && *data==42 );
         }
     catch(


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk