1 /* 2 * 3 * Copyright (c) 1998-2002 4 * John Maddock 5 * 6 * Use, modification and distribution are subject to the 7 * Boost Software License, Version 1.0. (See accompanying file 8 * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) 9 * 10 */ 11 12 /* 13 * LOCATION: see http://www.boost.org for most recent version. 14 * FILE pattern_except.hpp 15 * VERSION see <boost/version.hpp> 16 * DESCRIPTION: Declares pattern-matching exception classes. 17 */ 18 19 #ifndef BOOST_RE_PAT_EXCEPT_HPP 20 #define BOOST_RE_PAT_EXCEPT_HPP 21 22 #ifndef BOOST_REGEX_CONFIG_HPP 23 #include <boost/regex/config.hpp> 24 #endif 25 26 #include <stdexcept> 27 #include <cstddef> 28 #include <boost/regex/v4/error_type.hpp> 29 30 namespace boost{ 31 32 #ifdef BOOST_MSVC 33 #pragma warning(push) 34 #pragma warning(disable: 4103) 35 #endif 36 #ifdef BOOST_HAS_ABI_HEADERS 37 # include BOOST_ABI_PREFIX 38 #endif 39 #ifdef BOOST_MSVC 40 #pragma warning(pop) 41 #endif 42 43 #ifdef BOOST_MSVC 44 #pragma warning(push) 45 #pragma warning(disable : 4275) 46 #endif 47 class BOOST_REGEX_DECL regex_error : public std::runtime_error 48 { 49 public: 50 explicit regex_error(const std::string& s, regex_constants::error_type err = regex_constants::error_unknown, std::ptrdiff_t pos = 0); 51 explicit regex_error(regex_constants::error_type err); 52 ~regex_error() throw(); code() const53 regex_constants::error_type code()const 54 { return m_error_code; } position() const55 std::ptrdiff_t position()const 56 { return m_position; } 57 void raise()const; 58 private: 59 regex_constants::error_type m_error_code; 60 std::ptrdiff_t m_position; 61 }; 62 63 typedef regex_error bad_pattern; 64 typedef regex_error bad_expression; 65 66 namespace BOOST_REGEX_DETAIL_NS{ 67 68 BOOST_REGEX_DECL void BOOST_REGEX_CALL raise_runtime_error(const std::runtime_error& ex); 69 70 template <class traits> raise_error(const traits & t,regex_constants::error_type code)71void raise_error(const traits& t, regex_constants::error_type code) 72 { 73 (void)t; // warning suppression 74 std::runtime_error e(t.error_string(code)); 75 ::boost::BOOST_REGEX_DETAIL_NS::raise_runtime_error(e); 76 } 77 78 } 79 80 #ifdef BOOST_MSVC 81 #pragma warning(pop) 82 #endif 83 84 #ifdef BOOST_MSVC 85 #pragma warning(push) 86 #pragma warning(disable: 4103) 87 #endif 88 #ifdef BOOST_HAS_ABI_HEADERS 89 # include BOOST_ABI_SUFFIX 90 #endif 91 #ifdef BOOST_MSVC 92 #pragma warning(pop) 93 #endif 94 95 } // namespace boost 96 97 #endif 98 99 100 101