summaryrefslogtreecommitdiff
path: root/src/third_party/boost-1.56.0/boost/test/execution_monitor.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/third_party/boost-1.56.0/boost/test/execution_monitor.hpp')
-rw-r--r--src/third_party/boost-1.56.0/boost/test/execution_monitor.hpp263
1 files changed, 0 insertions, 263 deletions
diff --git a/src/third_party/boost-1.56.0/boost/test/execution_monitor.hpp b/src/third_party/boost-1.56.0/boost/test/execution_monitor.hpp
deleted file mode 100644
index a1c2ee61c90..00000000000
--- a/src/third_party/boost-1.56.0/boost/test/execution_monitor.hpp
+++ /dev/null
@@ -1,263 +0,0 @@
-// (C) Copyright Gennadiy Rozental 2001-2008.
-// (C) Copyright Beman Dawes 2001.
-// 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)
-
-// See http://www.boost.org/libs/test for the library home page.
-//
-// File : $RCSfile$
-//
-// Version : $Revision$
-//
-// Description : defines abstract monitor interfaces and implements execution exception
-// The original Boost Test Library included an implementation detail function
-// named catch_exceptions() which caught otherwise uncaught C++ exceptions.
-// It was derived from an existing test framework by Beman Dawes. The
-// intent was to expand later to catch other detectable but platform dependent
-// error events like Unix signals or Windows structured C exceptions.
-//
-// Requests from early adopters of the Boost Test Library included
-// configurable levels of error message detail, elimination of templates,
-// separation of error reporting, and making the catch_exceptions() facilities
-// available as a public interface. Support for unit testing also stretched
-// the function based design. Implementation within the header became less
-// attractive due to the need to include many huge system dependent headers,
-// although still preferable in certain cases.
-//
-// All those issues have been addressed by introducing the class-based
-// design presented here.
-// ***************************************************************************
-
-#ifndef BOOST_TEST_EXECUTION_MONITOR_HPP_071894GER
-#define BOOST_TEST_EXECUTION_MONITOR_HPP_071894GER
-
-// Boost.Test
-#include <boost/test/detail/global_typedef.hpp>
-#include <boost/test/detail/fwd_decl.hpp>
-#include <boost/test/utils/callback.hpp>
-#include <boost/test/utils/class_properties.hpp>
-
-// Boost
-#include <boost/scoped_ptr.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/type.hpp>
-#include <boost/cstdlib.hpp>
-
-#include <boost/test/detail/suppress_warnings.hpp>
-
-//____________________________________________________________________________//
-
-namespace boost {
-
-namespace detail {
-
-// ************************************************************************** //
-// ************** detail::translate_exception_base ************** //
-// ************************************************************************** //
-
-class BOOST_TEST_DECL translate_exception_base {
-public:
- // Constructor
- explicit translate_exception_base( boost::scoped_ptr<translate_exception_base>& next )
- {
- next.swap( m_next );
- }
-
- // Destructor
- virtual ~translate_exception_base() {}
-
- virtual int operator()( unit_test::callback0<int> const& F ) = 0;
-
-protected:
- // Data members
- boost::scoped_ptr<translate_exception_base> m_next;
-};
-
-} // namespace detail
-
-// ************************************************************************** //
-// ************** execution_exception ************** //
-// ************************************************************************** //
-
-// design rationale: fear of being out (or nearly out) of memory.
-
-class BOOST_TEST_DECL execution_exception {
- typedef boost::unit_test::const_string const_string;
-public:
- enum error_code {
- // These values are sometimes used as program return codes.
- // The particular values have been chosen to avoid conflicts with
- // commonly used program return codes: values < 100 are often user
- // assigned, values > 255 are sometimes used to report system errors.
- // Gaps in values allow for orderly expansion.
-
- no_error = 0, // for completeness only; never returned
- user_error = 200, // user reported non-fatal error
- cpp_exception_error = 205, // see note (1) below
- system_error = 210, // see note (2) below
- timeout_error = 215, // only detectable on certain platforms
- user_fatal_error = 220, // user reported fatal error
- system_fatal_error = 225 // see note (2) below
-
- // Note 1: Only uncaught C++ exceptions are treated as errors.
- // If the application catches a C++ exception, it will never reach
- // the execution_monitor.
-
- // Note 2: These errors include Unix signals and Windows structured
- // exceptions. They are often initiated by hardware traps.
- //
- // The implementation decides what is a fatal_system_exception and what is
- // just a system_exception. Fatal errors are so likely to have corrupted
- // machine state (like a stack overflow or addressing exception) that it
- // is unreasonable to continue execution.
- };
-
- struct BOOST_TEST_DECL location {
- explicit location( char const* file_name = 0, size_t line_num = 0, char const* func = 0 );
-
- const_string m_file_name;
- size_t m_line_num;
- const_string m_function;
- };
-
- // Constructor
- execution_exception( error_code ec_, const_string what_msg_, location const& location_ ); // max length 256 inc '\0'
-
- // Access methods
- error_code code() const { return m_error_code; }
- const_string what() const { return m_what; }
- location const& where() const { return m_location; }
-
-private:
- // Data members
- error_code m_error_code;
- const_string m_what;
- location m_location;
-}; // execution_exception
-
-// ************************************************************************** //
-// ************** execution_monitor ************** //
-// ************************************************************************** //
-
-class BOOST_TEST_DECL execution_monitor {
-public:
- // Constructor
- execution_monitor()
- : p_catch_system_errors( true )
- , p_auto_start_dbg( false )
- , p_timeout( 0 )
- , p_use_alt_stack( true )
- , p_detect_fp_exceptions( false )
- {}
-
- // Public properties
-
- // The p_catch_system_errors parameter specifies whether the monitor should
- // try to catch system errors/exceptions that would cause program to crash
- // in regular case
- unit_test::readwrite_property<bool> p_catch_system_errors;
- // The p_auto_start_dbg parameter specifies whether the monitor should
- // try to attach debugger in case of caught system error
- unit_test::readwrite_property<bool> p_auto_start_dbg;
- // The p_timeout parameter specifies the seconds that elapse before
- // a timer_error occurs. May be ignored on some platforms.
- unit_test::readwrite_property<int> p_timeout;
- // The p_use_alt_stack parameter specifies whether the monitor should
- // use alternative stack for the signal catching
- unit_test::readwrite_property<bool> p_use_alt_stack;
- // The p_detect_fp_exceptions parameter specifies whether the monitor should
- // try to detect hardware floating point exceptions
- unit_test::readwrite_property<bool> p_detect_fp_exceptions;
-
- int execute( unit_test::callback0<int> const& F );
- // Returns: Value returned by function call F().
- //
- // Effects: Calls executes supplied function F inside a try/catch block which also may
- // include other unspecified platform dependent error detection code.
- //
- // Throws: execution_exception on an uncaught C++ exception,
- // a hardware or software signal, trap, or other exception.
- //
- // Note: execute() doesn't consider it an error for F to return a non-zero value.
-
- // register custom (user supplied) exception translator
- template<typename Exception, typename ExceptionTranslator>
- void register_exception_translator( ExceptionTranslator const& tr, boost::type<Exception>* = 0 );
-
-private:
- // implementation helpers
- int catch_signals( unit_test::callback0<int> const& F );
-
- // Data members
- boost::scoped_ptr<detail::translate_exception_base> m_custom_translators;
- boost::scoped_array<char> m_alt_stack;
-}; // execution_monitor
-
-namespace detail {
-
-// ************************************************************************** //
-// ************** detail::translate_exception ************** //
-// ************************************************************************** //
-
-template<typename Exception, typename ExceptionTranslator>
-class translate_exception : public translate_exception_base
-{
- typedef boost::scoped_ptr<translate_exception_base> base_ptr;
-public:
- explicit translate_exception( ExceptionTranslator const& tr, base_ptr& next )
- : translate_exception_base( next ), m_translator( tr ) {}
-
- int operator()( unit_test::callback0<int> const& F )
- {
- try {
- return m_next ? (*m_next)( F ) : F();
- } catch( Exception const& e ) {
- m_translator( e );
- return boost::exit_exception_failure;
- }
- }
-
-private:
- // Data members
- ExceptionTranslator m_translator;
-};
-
-} // namespace detail
-
-template<typename Exception, typename ExceptionTranslator>
-void
-execution_monitor::register_exception_translator( ExceptionTranslator const& tr, boost::type<Exception>* )
-{
- m_custom_translators.reset(
- new detail::translate_exception<Exception,ExceptionTranslator>( tr,m_custom_translators ) );
-}
-
-// ************************************************************************** //
-// ************** execution_aborted ************** //
-// ************************************************************************** //
-
-struct execution_aborted {};
-
-// ************************************************************************** //
-// ************** system_error ************** //
-// ************************************************************************** //
-
-class system_error {
-public:
- // Constructor
- explicit system_error( char const* exp );
-
- unit_test::readonly_property<long> p_errno;
- unit_test::readonly_property<char const*> p_failed_exp;
-};
-
-#define BOOST_TEST_SYS_ASSERT( exp ) if( (exp) ) ; else throw ::boost::system_error( BOOST_STRINGIZE( exp ) )
-
-} // namespace boost
-
-//____________________________________________________________________________//
-
-#include <boost/test/detail/enable_warnings.hpp>
-
-#endif