forked from boostorg/throw_exception
Fixing problems found by the vacpp test.
[SVN r59743]
This commit is contained in:
committed by
Peter Dimov
parent
71f589da50
commit
5386c7359d
@ -132,18 +132,6 @@ boost
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
template <class E,class Tag,class T>
|
|
||||||
E const & operator<<( E const &, error_info<Tag,T> const & );
|
|
||||||
|
|
||||||
template <class E>
|
|
||||||
E const & operator<<( E const &, throw_function const & );
|
|
||||||
|
|
||||||
template <class E>
|
|
||||||
E const & operator<<( E const &, throw_file const & );
|
|
||||||
|
|
||||||
template <class E>
|
|
||||||
E const & operator<<( E const &, throw_line const & );
|
|
||||||
|
|
||||||
class exception;
|
class exception;
|
||||||
|
|
||||||
template <class>
|
template <class>
|
||||||
@ -187,6 +175,18 @@ boost
|
|||||||
char const * get_diagnostic_information( exception const &, char const * );
|
char const * get_diagnostic_information( exception const &, char const * );
|
||||||
|
|
||||||
void copy_boost_exception( exception *, exception 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 & );
|
||||||
}
|
}
|
||||||
|
|
||||||
class
|
class
|
||||||
@ -225,18 +225,18 @@ boost
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
template <class E>
|
template <class E>
|
||||||
friend E const & operator<<( E const &, throw_function const & );
|
friend E const & exception_detail::set_info( E const &, throw_function const & );
|
||||||
|
|
||||||
template <class E>
|
template <class E>
|
||||||
friend E const & operator<<( E const &, throw_file const & );
|
friend E const & exception_detail::set_info( E const &, throw_file const & );
|
||||||
|
|
||||||
template <class E>
|
template <class E>
|
||||||
friend E const & operator<<( E const &, throw_line const & );
|
friend E const & exception_detail::set_info( E const &, throw_line const & );
|
||||||
|
|
||||||
friend char const * exception_detail::get_diagnostic_information( exception const &, char const * );
|
|
||||||
|
|
||||||
template <class E,class Tag,class T>
|
template <class E,class Tag,class T>
|
||||||
friend E const & operator<<( E const &, error_info<Tag,T> const & );
|
friend E const & exception_detail::set_info( E const &, error_info<Tag,T> const & );
|
||||||
|
|
||||||
|
friend char const * exception_detail::get_diagnostic_information( exception const &, char const * );
|
||||||
|
|
||||||
template <class>
|
template <class>
|
||||||
friend struct exception_detail::get_info;
|
friend struct exception_detail::get_info;
|
||||||
@ -257,28 +257,32 @@ boost
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class E>
|
namespace
|
||||||
E const &
|
exception_detail
|
||||||
operator<<( E const & x, throw_function const & y )
|
|
||||||
{
|
{
|
||||||
x.throw_function_=y.v_;
|
template <class E>
|
||||||
return x;
|
E const &
|
||||||
}
|
set_info( E const & x, throw_function const & y )
|
||||||
|
{
|
||||||
|
x.throw_function_=y.v_;
|
||||||
|
return x;
|
||||||
|
}
|
||||||
|
|
||||||
template <class E>
|
template <class E>
|
||||||
E const &
|
E const &
|
||||||
operator<<( E const & x, throw_file const & y )
|
set_info( E const & x, throw_file const & y )
|
||||||
{
|
{
|
||||||
x.throw_file_=y.v_;
|
x.throw_file_=y.v_;
|
||||||
return x;
|
return x;
|
||||||
}
|
}
|
||||||
|
|
||||||
template <class E>
|
template <class E>
|
||||||
E const &
|
E const &
|
||||||
operator<<( E const & x, throw_line const & y )
|
set_info( E const & x, throw_line const & y )
|
||||||
{
|
{
|
||||||
x.throw_line_=y.v_;
|
x.throw_line_=y.v_;
|
||||||
return x;
|
return x;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////
|
||||||
@ -304,10 +308,10 @@ boost
|
|||||||
};
|
};
|
||||||
|
|
||||||
struct large_size { char c[256]; };
|
struct large_size { char c[256]; };
|
||||||
large_size dispatch( exception * );
|
large_size dispatch_boost_exception( exception const * );
|
||||||
|
|
||||||
struct small_size { };
|
struct small_size { };
|
||||||
small_size dispatch( void * );
|
small_size dispatch_boost_exception( void const * );
|
||||||
|
|
||||||
template <class,int>
|
template <class,int>
|
||||||
struct enable_error_info_helper;
|
struct enable_error_info_helper;
|
||||||
@ -330,7 +334,7 @@ boost
|
|||||||
struct
|
struct
|
||||||
enable_error_info_return_type
|
enable_error_info_return_type
|
||||||
{
|
{
|
||||||
typedef typename enable_error_info_helper<T,sizeof(exception_detail::dispatch((T*)0))>::type type;
|
typedef typename enable_error_info_helper<T,sizeof(exception_detail::dispatch_boost_exception((T*)0))>::type type;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,16 +36,32 @@
|
|||||||
#if !defined( BOOST_EXCEPTION_DISABLE )
|
#if !defined( BOOST_EXCEPTION_DISABLE )
|
||||||
# include <boost/exception/exception.hpp>
|
# include <boost/exception/exception.hpp>
|
||||||
# include <boost/current_function.hpp>
|
# include <boost/current_function.hpp>
|
||||||
# define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(::boost::enable_error_info(x) <<\
|
# define BOOST_THROW_EXCEPTION(x) ::boost::exception_detail::throw_exception_(x,BOOST_CURRENT_FUNCTION,__FILE__,__LINE__)
|
||||||
::boost::throw_function(BOOST_CURRENT_FUNCTION) <<\
|
|
||||||
::boost::throw_file(__FILE__) <<\
|
|
||||||
::boost::throw_line(__LINE__))
|
|
||||||
#else
|
#else
|
||||||
# define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x)
|
# define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
{
|
{
|
||||||
|
#if !defined( BOOST_EXCEPTION_DISABLE )
|
||||||
|
namespace
|
||||||
|
exception_detail
|
||||||
|
{
|
||||||
|
template <class E>
|
||||||
|
void
|
||||||
|
throw_exception_( E const & x, char const * current_function, char const * file, int line )
|
||||||
|
{
|
||||||
|
throw_exception(
|
||||||
|
set_info(
|
||||||
|
set_info(
|
||||||
|
set_info(
|
||||||
|
enable_error_info(x),
|
||||||
|
throw_function(current_function)),
|
||||||
|
throw_file(file)),
|
||||||
|
throw_line(line)));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef BOOST_NO_EXCEPTIONS
|
#ifdef BOOST_NO_EXCEPTIONS
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user