Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. // class template regex -*- C++ -*-
  2.  
  3. // Copyright (C) 2010-2015 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.  
  33. namespace std _GLIBCXX_VISIBILITY(default)
  34. {
  35. /**
  36.  * @addtogroup regex
  37.  * @{
  38.  */
  39.  
  40. namespace 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.