mirror of
				https://github.com/notepad-plus-plus/notepad-plus-plus.git
				synced 2025-11-04 13:34:00 +01:00 
			
		
		
		
	Update boost regexp to version 1.78.0 from: https://boostorg.jfrog.io/artifactory/main/release/1.78.0/source/boost_1_78_0.7z Close #10912
		
			
				
	
	
		
			182 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			182 lines
		
	
	
		
			4.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
#ifndef BOOST_THROW_EXCEPTION_HPP_INCLUDED
 | 
						|
#define BOOST_THROW_EXCEPTION_HPP_INCLUDED
 | 
						|
 | 
						|
// MS compatible compilers support #pragma once
 | 
						|
 | 
						|
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
 | 
						|
# pragma once
 | 
						|
#endif
 | 
						|
 | 
						|
//
 | 
						|
//  boost/throw_exception.hpp
 | 
						|
//
 | 
						|
//  Copyright (c) 2002, 2018, 2019 Peter Dimov
 | 
						|
//  Copyright (c) 2008-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)
 | 
						|
//
 | 
						|
//  http://www.boost.org/libs/throw_exception
 | 
						|
//
 | 
						|
 | 
						|
#include <boost/exception/exception.hpp>
 | 
						|
#include <boost/assert/source_location.hpp>
 | 
						|
#include <boost/config.hpp>
 | 
						|
#include <boost/config/workaround.hpp>
 | 
						|
#include <exception>
 | 
						|
#include <cstddef>
 | 
						|
 | 
						|
#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( BOOST_BORLANDC ) && BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x593) )
 | 
						|
# define BOOST_EXCEPTION_DISABLE
 | 
						|
#endif
 | 
						|
 | 
						|
namespace boost
 | 
						|
{
 | 
						|
 | 
						|
#if defined( BOOST_NO_EXCEPTIONS )
 | 
						|
 | 
						|
BOOST_NORETURN void throw_exception( std::exception const & e ); // user defined
 | 
						|
BOOST_NORETURN void throw_exception( std::exception const & e, boost::source_location const & loc ); // user defined
 | 
						|
 | 
						|
#endif
 | 
						|
 | 
						|
// boost::wrapexcept<E>
 | 
						|
 | 
						|
namespace detail
 | 
						|
{
 | 
						|
 | 
						|
typedef char (&wrapexcept_s1)[ 1 ];
 | 
						|
typedef char (&wrapexcept_s2)[ 2 ];
 | 
						|
 | 
						|
template<class T> wrapexcept_s1 wrapexcept_is_convertible( T* );
 | 
						|
template<class T> wrapexcept_s2 wrapexcept_is_convertible( void* );
 | 
						|
 | 
						|
template<class E, class B, std::size_t I = sizeof( wrapexcept_is_convertible<B>( static_cast< E* >( 0 ) ) ) > struct wrapexcept_add_base;
 | 
						|
 | 
						|
template<class E, class B> struct wrapexcept_add_base<E, B, 1>
 | 
						|
{
 | 
						|
    struct type {};
 | 
						|
};
 | 
						|
 | 
						|
template<class E, class B> struct wrapexcept_add_base<E, B, 2>
 | 
						|
{
 | 
						|
    typedef B type;
 | 
						|
};
 | 
						|
 | 
						|
} // namespace detail
 | 
						|
 | 
						|
template<class E> struct BOOST_SYMBOL_VISIBLE wrapexcept:
 | 
						|
    public detail::wrapexcept_add_base<E, boost::exception_detail::clone_base>::type,
 | 
						|
    public E,
 | 
						|
    public detail::wrapexcept_add_base<E, boost::exception>::type
 | 
						|
{
 | 
						|
private:
 | 
						|
 | 
						|
    struct deleter
 | 
						|
    {
 | 
						|
        wrapexcept * p_;
 | 
						|
        ~deleter() { delete p_; }
 | 
						|
    };
 | 
						|
 | 
						|
private:
 | 
						|
 | 
						|
    void copy_from( void const* )
 | 
						|
    {
 | 
						|
    }
 | 
						|
 | 
						|
    void copy_from( boost::exception const* p )
 | 
						|
    {
 | 
						|
        static_cast<boost::exception&>( *this ) = *p;
 | 
						|
    }
 | 
						|
 | 
						|
public:
 | 
						|
 | 
						|
    explicit wrapexcept( E const & e ): E( e )
 | 
						|
    {
 | 
						|
        copy_from( &e );
 | 
						|
    }
 | 
						|
 | 
						|
    explicit wrapexcept( E const & e, boost::source_location const & loc ): E( e )
 | 
						|
    {
 | 
						|
        copy_from( &e );
 | 
						|
 | 
						|
        set_info( *this, throw_file( loc.file_name() ) );
 | 
						|
        set_info( *this, throw_line( loc.line() ) );
 | 
						|
        set_info( *this, throw_function( loc.function_name() ) );
 | 
						|
    }
 | 
						|
 | 
						|
    virtual boost::exception_detail::clone_base const * clone() const BOOST_OVERRIDE
 | 
						|
    {
 | 
						|
        wrapexcept * p = new wrapexcept( *this );
 | 
						|
        deleter del = { p };
 | 
						|
 | 
						|
        boost::exception_detail::copy_boost_exception( p, this );
 | 
						|
 | 
						|
        del.p_ = 0;
 | 
						|
        return p;
 | 
						|
    }
 | 
						|
 | 
						|
    virtual void rethrow() const BOOST_OVERRIDE
 | 
						|
    {
 | 
						|
#if defined( BOOST_NO_EXCEPTIONS )
 | 
						|
 | 
						|
        boost::throw_exception( *this );
 | 
						|
 | 
						|
#else
 | 
						|
 | 
						|
        throw *this;
 | 
						|
 | 
						|
#endif
 | 
						|
    }
 | 
						|
};
 | 
						|
 | 
						|
// All boost exceptions are required to derive from std::exception,
 | 
						|
// to ensure compatibility with BOOST_NO_EXCEPTIONS.
 | 
						|
 | 
						|
inline void throw_exception_assert_compatibility( std::exception const & ) {}
 | 
						|
 | 
						|
// boost::throw_exception
 | 
						|
 | 
						|
#if !defined( BOOST_NO_EXCEPTIONS )
 | 
						|
 | 
						|
#if defined( BOOST_EXCEPTION_DISABLE )
 | 
						|
 | 
						|
template<class E> BOOST_NORETURN void throw_exception( E const & e )
 | 
						|
{
 | 
						|
    throw_exception_assert_compatibility( e );
 | 
						|
    throw e;
 | 
						|
}
 | 
						|
 | 
						|
template<class E> BOOST_NORETURN void throw_exception( E const & e, boost::source_location const & )
 | 
						|
{
 | 
						|
    throw_exception_assert_compatibility( e );
 | 
						|
    throw e;
 | 
						|
}
 | 
						|
 | 
						|
#else // defined( BOOST_EXCEPTION_DISABLE )
 | 
						|
 | 
						|
template<class E> BOOST_NORETURN void throw_exception( E const & e )
 | 
						|
{
 | 
						|
    throw_exception_assert_compatibility( e );
 | 
						|
    throw wrapexcept<E>( e );
 | 
						|
}
 | 
						|
 | 
						|
template<class E> BOOST_NORETURN void throw_exception( E const & e, boost::source_location const & loc )
 | 
						|
{
 | 
						|
    throw_exception_assert_compatibility( e );
 | 
						|
    throw wrapexcept<E>( e, loc );
 | 
						|
}
 | 
						|
 | 
						|
#endif // defined( BOOST_EXCEPTION_DISABLE )
 | 
						|
 | 
						|
#endif // !defined( BOOST_NO_EXCEPTIONS )
 | 
						|
 | 
						|
} // namespace boost
 | 
						|
 | 
						|
// BOOST_THROW_EXCEPTION
 | 
						|
 | 
						|
#define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x, BOOST_CURRENT_LOCATION)
 | 
						|
 | 
						|
#endif // #ifndef BOOST_THROW_EXCEPTION_HPP_INCLUDED
 |