Chris@16: /* Chris@16: * Chris@16: * Copyright (c) 1998-2002 Chris@16: * John Maddock Chris@16: * Chris@16: * Use, modification and distribution are subject to the Chris@16: * Boost Software License, Version 1.0. (See accompanying file Chris@16: * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) Chris@16: * Chris@16: */ Chris@16: Chris@16: /* Chris@16: * LOCATION: see http://www.boost.org for most recent version. Chris@16: * FILE pattern_except.hpp Chris@16: * VERSION see Chris@16: * DESCRIPTION: Declares pattern-matching exception classes. Chris@16: */ Chris@16: Chris@16: #ifndef BOOST_RE_PAT_EXCEPT_HPP Chris@16: #define BOOST_RE_PAT_EXCEPT_HPP Chris@16: Chris@16: #ifndef BOOST_REGEX_CONFIG_HPP Chris@16: #include Chris@16: #endif Chris@16: Chris@16: #include Chris@16: #include Chris@16: #include Chris@16: Chris@16: namespace boost{ Chris@16: Chris@16: #ifdef BOOST_MSVC Chris@16: #pragma warning(push) Chris@16: #pragma warning(disable: 4103) Chris@16: #endif Chris@16: #ifdef BOOST_HAS_ABI_HEADERS Chris@16: # include BOOST_ABI_PREFIX Chris@16: #endif Chris@16: #ifdef BOOST_MSVC Chris@16: #pragma warning(pop) Chris@16: #endif Chris@16: Chris@16: #ifdef BOOST_MSVC Chris@16: #pragma warning(push) Chris@16: #pragma warning(disable : 4275) Chris@16: #endif Chris@16: class BOOST_REGEX_DECL regex_error : public std::runtime_error Chris@16: { Chris@16: public: Chris@16: explicit regex_error(const std::string& s, regex_constants::error_type err = regex_constants::error_unknown, std::ptrdiff_t pos = 0); Chris@16: explicit regex_error(regex_constants::error_type err); Chris@16: ~regex_error() throw(); Chris@16: regex_constants::error_type code()const Chris@16: { return m_error_code; } Chris@16: std::ptrdiff_t position()const Chris@16: { return m_position; } Chris@16: void raise()const; Chris@16: private: Chris@16: regex_constants::error_type m_error_code; Chris@16: std::ptrdiff_t m_position; Chris@16: }; Chris@16: Chris@16: typedef regex_error bad_pattern; Chris@16: typedef regex_error bad_expression; Chris@16: Chris@16: namespace re_detail{ Chris@16: Chris@16: BOOST_REGEX_DECL void BOOST_REGEX_CALL raise_runtime_error(const std::runtime_error& ex); Chris@16: Chris@16: template Chris@16: void raise_error(const traits& t, regex_constants::error_type code) Chris@16: { Chris@16: (void)t; // warning suppression Chris@16: std::runtime_error e(t.error_string(code)); Chris@16: ::boost::re_detail::raise_runtime_error(e); Chris@16: } Chris@16: Chris@16: } Chris@16: Chris@16: #ifdef BOOST_MSVC Chris@16: #pragma warning(pop) Chris@16: #endif Chris@16: Chris@16: #ifdef BOOST_MSVC Chris@16: #pragma warning(push) Chris@16: #pragma warning(disable: 4103) Chris@16: #endif Chris@16: #ifdef BOOST_HAS_ABI_HEADERS Chris@16: # include BOOST_ABI_SUFFIX Chris@16: #endif Chris@16: #ifdef BOOST_MSVC Chris@16: #pragma warning(pop) Chris@16: #endif Chris@16: Chris@16: } // namespace boost Chris@16: Chris@16: #endif Chris@16: Chris@16: Chris@16: