1 /*============================================================================= 2 Copyright (c) 2001-2003 Joel de Guzman 3 Copyright (c) 2002-2003 Hartmut Kaiser 4 http://spirit.sourceforge.net/ 5 6 Distributed under the Boost Software License, Version 1.0. (See accompanying 7 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 8 =============================================================================*/ 9 #if !defined(BOOST_SPIRIT_ASSERT_HPP) 10 #define BOOST_SPIRIT_ASSERT_HPP 11 12 /////////////////////////////////////////////////////////////////////////////// 13 // 14 // BOOST_SPIRIT_ASSERT is used throughout the framework. It can be 15 // overridden by the user. If BOOST_SPIRIT_ASSERT_EXCEPTION is defined, 16 // then that will be thrown, otherwise, BOOST_SPIRIT_ASSERT simply turns 17 // into a plain BOOST_ASSERT() 18 // 19 /////////////////////////////////////////////////////////////////////////////// 20 #if !defined(BOOST_SPIRIT_ASSERT) 21 #if defined(NDEBUG) 22 #define BOOST_SPIRIT_ASSERT(x) 23 #elif defined (BOOST_SPIRIT_ASSERT_EXCEPTION) 24 #include <boost/throw_exception.hpp> 25 #define BOOST_SPIRIT_ASSERT_AUX(f, l, x) BOOST_SPIRIT_ASSERT_AUX2(f, l, x) 26 #define BOOST_SPIRIT_ASSERT_AUX2(f, l, x) \ 27 ( (x) ? (void)0 : boost::throw_exception( \ 28 BOOST_SPIRIT_ASSERT_EXCEPTION(f "(" #l "): " #x)) ) 29 #define BOOST_SPIRIT_ASSERT(x) BOOST_SPIRIT_ASSERT_AUX(__FILE__, __LINE__, x) 30 #else 31 #include <boost/assert.hpp> 32 #define BOOST_SPIRIT_ASSERT(x) BOOST_ASSERT(x) 33 #endif 34 #endif // !defined(BOOST_SPIRIT_ASSERT) 35 36 #endif // BOOST_SPIRIT_ASSERT_HPP 37