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