1// class template regex -*- C++ -*- 2 3// Copyright (C) 2010-2014 Free Software Foundation, Inc. 4// 5// This file is part of the GNU ISO C++ Library. This library is free 6// software; you can redistribute it and/or modify it under the 7// terms of the GNU General Public License as published by the 8// Free Software Foundation; either version 3, or (at your option) 9// any later version. 10 11// This library is distributed in the hope that it will be useful, 12// but WITHOUT ANY WARRANTY; without even the implied warranty of 13// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14// GNU General Public License for more details. 15 16// Under Section 7 of GPL version 3, you are granted additional 17// permissions described in the GCC Runtime Library Exception, version 18// 3.1, as published by the Free Software Foundation. 19 20// You should have received a copy of the GNU General Public License and 21// a copy of the GCC Runtime Library Exception along with this program; 22// see the files COPYING3 and COPYING.RUNTIME respectively. If not, see 23// <http://www.gnu.org/licenses/>. 24 25/** 26 * @file bits/regex_error.h 27 * @brief Error and exception objects for the std regex library. 28 * 29 * This is an internal header file, included by other library headers. 30 * Do not attempt to use it directly. @headername{regex} 31 */ 32 33namespace std _GLIBCXX_VISIBILITY(default) 34{ 35/** 36 * @addtogroup regex 37 * @{ 38 */ 39 40namespace regex_constants 41{ 42_GLIBCXX_BEGIN_NAMESPACE_VERSION 43 44 /** 45 * @name 5.3 Error Types 46 */ 47 //@{ 48 49 enum error_type 50 { 51 _S_error_collate, 52 _S_error_ctype, 53 _S_error_escape, 54 _S_error_backref, 55 _S_error_brack, 56 _S_error_paren, 57 _S_error_brace, 58 _S_error_badbrace, 59 _S_error_range, 60 _S_error_space, 61 _S_error_badrepeat, 62 _S_error_complexity, 63 _S_error_stack, 64 }; 65 66 /** The expression contained an invalid collating element name. */ 67 constexpr error_type error_collate(_S_error_collate); 68 69 /** The expression contained an invalid character class name. */ 70 constexpr error_type error_ctype(_S_error_ctype); 71 72 /** 73 * The expression contained an invalid escaped character, or a trailing 74 * escape. 75 */ 76 constexpr error_type error_escape(_S_error_escape); 77 78 /** The expression contained an invalid back reference. */ 79 constexpr error_type error_backref(_S_error_backref); 80 81 /** The expression contained mismatched [ and ]. */ 82 constexpr error_type error_brack(_S_error_brack); 83 84 /** The expression contained mismatched ( and ). */ 85 constexpr error_type error_paren(_S_error_paren); 86 87 /** The expression contained mismatched { and } */ 88 constexpr error_type error_brace(_S_error_brace); 89 90 /** The expression contained an invalid range in a {} expression. */ 91 constexpr error_type error_badbrace(_S_error_badbrace); 92 93 /** 94 * The expression contained an invalid character range, 95 * such as [b-a] in most encodings. 96 */ 97 constexpr error_type error_range(_S_error_range); 98 99 /** 100 * There was insufficient memory to convert the expression into a 101 * finite state machine. 102 */ 103 constexpr error_type error_space(_S_error_space); 104 105 /** 106 * One of <em>*?+{</em> was not preceded by a valid regular expression. 107 */ 108 constexpr error_type error_badrepeat(_S_error_badrepeat); 109 110 /** 111 * The complexity of an attempted match against a regular expression 112 * exceeded a pre-set level. 113 */ 114 constexpr error_type error_complexity(_S_error_complexity); 115 116 /** 117 * There was insufficient memory to determine whether the 118 * regular expression could match the specified character sequence. 119 */ 120 constexpr error_type error_stack(_S_error_stack); 121 122 //@} 123_GLIBCXX_END_NAMESPACE_VERSION 124} // namespace regex_constants 125 126_GLIBCXX_BEGIN_NAMESPACE_VERSION 127 128 // [7.8] Class regex_error 129 /** 130 * @brief A regular expression exception class. 131 * @ingroup exceptions 132 * 133 * The regular expression library throws objects of this class on error. 134 */ 135 class regex_error : public std::runtime_error 136 { 137 regex_constants::error_type _M_code; 138 139 public: 140 /** 141 * @brief Constructs a regex_error object. 142 * 143 * @param __ecode the regex error code. 144 */ 145 explicit 146 regex_error(regex_constants::error_type __ecode); 147 148 virtual ~regex_error() throw(); 149 150 /** 151 * @brief Gets the regex error code. 152 * 153 * @returns the regex error code. 154 */ 155 regex_constants::error_type 156 code() const 157 { return _M_code; } 158 }; 159 160 //@} // group regex 161 162 void 163 __throw_regex_error(regex_constants::error_type __ecode); 164 165_GLIBCXX_END_NAMESPACE_VERSION 166} // namespace std 167