Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. // class template regex -*- C++ -*-
  2.  
  3. // Copyright (C) 2010-2013 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.       _S_error_last
  65.     };
  66.  
  67.   /** The expression contained an invalid collating element name. */
  68.   constexpr error_type error_collate(_S_error_collate);
  69.  
  70.   /** The expression contained an invalid character class name. */
  71.   constexpr error_type error_ctype(_S_error_ctype);
  72.  
  73.   /**
  74.    * The expression contained an invalid escaped character, or a trailing
  75.    * escape.
  76.    */
  77.   constexpr error_type error_escape(_S_error_escape);
  78.  
  79.   /** The expression contained an invalid back reference. */
  80.   constexpr error_type error_backref(_S_error_backref);
  81.  
  82.   /** The expression contained mismatched [ and ]. */
  83.   constexpr error_type error_brack(_S_error_brack);
  84.  
  85.   /** The expression contained mismatched ( and ). */
  86.   constexpr error_type error_paren(_S_error_paren);
  87.  
  88.   /** The expression contained mismatched { and } */
  89.   constexpr error_type error_brace(_S_error_brace);
  90.  
  91.   /** The expression contained an invalid range in a {} expression. */
  92.   constexpr error_type error_badbrace(_S_error_badbrace);
  93.  
  94.   /**
  95.    * The expression contained an invalid character range,
  96.    * such as [b-a] in most encodings.
  97.    */
  98.   constexpr error_type error_range(_S_error_range);
  99.  
  100.   /**
  101.    * There was insufficient memory to convert the expression into a
  102.    * finite state machine.
  103.    */
  104.   constexpr error_type error_space(_S_error_space);
  105.  
  106.   /**
  107.    * One of <em>*?+{</em> was not preceded by a valid regular expression.
  108.    */
  109.   constexpr error_type error_badrepeat(_S_error_badrepeat);
  110.  
  111.   /**
  112.    * The complexity of an attempted match against a regular expression
  113.    * exceeded a pre-set level.
  114.    */
  115.   constexpr error_type error_complexity(_S_error_complexity);
  116.  
  117.   /**
  118.    * There was insufficient memory to determine whether the
  119.    * regular expression could match the specified character sequence.
  120.    */
  121.   constexpr error_type error_stack(_S_error_stack);
  122.  
  123.   //@}
  124. _GLIBCXX_END_NAMESPACE_VERSION
  125. } // namespace regex_constants
  126.  
  127. _GLIBCXX_BEGIN_NAMESPACE_VERSION
  128.  
  129.   // [7.8] Class regex_error
  130.   /**
  131.    * @brief A regular expression exception class.
  132.    * @ingroup exceptions
  133.    *
  134.    * The regular expression library throws objects of this class on error.
  135.    */
  136.   class regex_error : public std::runtime_error
  137.   {
  138.     regex_constants::error_type _M_code;
  139.  
  140.   public:
  141.     /**
  142.      * @brief Constructs a regex_error object.
  143.      *
  144.      * @param __ecode the regex error code.
  145.      */
  146.     explicit
  147.     regex_error(regex_constants::error_type __ecode);
  148.  
  149.     virtual ~regex_error() throw();
  150.  
  151.     /**
  152.      * @brief Gets the regex error code.
  153.      *
  154.      * @returns the regex error code.
  155.      */
  156.     regex_constants::error_type
  157.     code() const
  158.     { return _M_code; }
  159.   };
  160.  
  161.   //@} // group regex
  162.  
  163.   void
  164.   __throw_regex_error(regex_constants::error_type __ecode);
  165.  
  166. _GLIBCXX_END_NAMESPACE_VERSION
  167. } // namespace std
  168.