12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- // Copyright David Abrahams 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)
- #if defined(_WIN32)
- # ifdef __MWERKS__
- # pragma ANSI_strict off
- # endif
- # include <windows.h>
- # ifdef __MWERKS__
- # pragma ANSI_strict reset
- # endif
- # ifdef _MSC_VER
- # include <eh.h> // for _set_se_translator()
- # pragma warning(push)
- # pragma warning(disable:4297)
- # pragma warning(disable:4535)
- extern "C" void straight_to_debugger(unsigned int, EXCEPTION_POINTERS*)
- {
- throw;
- }
- extern "C" void (*old_translator)(unsigned, EXCEPTION_POINTERS*)
- = _set_se_translator(straight_to_debugger);
- # pragma warning(pop)
- # endif
- #endif // _WIN32
- #include <exception>
- #include <boost/python/extract.hpp>
- #include <boost/python/str.hpp>
- struct test_failure : std::exception
- {
- test_failure(char const* expr, char const* /*function*/, char const* file, unsigned line)
- : msg(file + boost::python::str(":%s:") % line + ": Boost.Python assertion failure: " + expr)
- {}
- ~test_failure() throw() {}
-
- char const* what() const throw()
- {
- return boost::python::extract<char const*>(msg)();
- }
- boost::python::str msg;
- };
- namespace boost
- {
- void assertion_failed(char const * expr, char const * function, char const * file, long line)
- {
- throw ::test_failure(expr,function, file, line);
- }
- } // namespace boost
|