basic_regex.hpp

来自「CGAL is a collaborative effort of severa」· HPP 代码 · 共 397 行 · 第 1/2 页

HPP
397
字号
/* * * Copyright (c) 1998-2002 * Dr John Maddock * * Use, modification and distribution are subject to the  * Boost Software License, Version 1.0. (See accompanying file  * LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) * */ /*  *   LOCATION:    see http://www.boost.org for most recent version.  *   FILE         basic_regex.cpp  *   VERSION      see <boost/version.hpp>  *   DESCRIPTION: Declares template class basic_regex (note that member function  *                bodies are in regex_compile.hpp).  */#ifndef BOOST_REGEX_V4_BASIC_REGEX_HPP#define BOOST_REGEX_V4_BASIC_REGEX_HPP#ifdef BOOST_HAS_ABI_HEADERS#  include BOOST_ABI_PREFIX#endifnamespace boost{//// class reg_expression// represents the compiled// regular expression://#ifdef BOOST_MSVC#pragma warning(push)#pragma warning(disable : 4251 4231 4660)#endif#ifdef BOOST_REGEX_NO_FWDtemplate <class charT, class traits = regex_traits<charT>, class Allocator = BOOST_DEFAULT_ALLOCATOR(charT) >#elsetemplate <class charT, class traits, class Allocator >#endifclass reg_expression : public regbase{public:   // typedefs:   typedef typename traits::size_type            traits_size_type;   typedef typename traits::uchar_type           traits_uchar_type;   typedef typename traits::string_type          traits_string_type;   typedef charT                                 char_type;   typedef traits                                traits_type;   typedef charT                                 value_type;   typedef charT&                                reference;   typedef const charT&                          const_reference;   typedef const charT*                          const_iterator;   typedef const_iterator                        iterator;   typedef typename Allocator::difference_type   difference_type;   typedef typename Allocator::size_type         size_type;      typedef Allocator                             allocator_type;   typedef Allocator                             alloc_type;   typedef regex_constants::syntax_option_type   flag_type;   // locale_type   // placeholder for actual locale type used by the   // traits class to localise *this.   typedef typename traits::locale_type          locale_type;   public:   explicit reg_expression(const Allocator& a = Allocator());   explicit reg_expression(const charT* p, flag_type f = regex_constants::normal, const Allocator& a = Allocator());   reg_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal, const Allocator& a = Allocator());   reg_expression(const charT* p, size_type len, flag_type f, const Allocator& a = Allocator());   reg_expression(const reg_expression&);   ~reg_expression();   reg_expression& BOOST_REGEX_CALL operator=(const reg_expression&);   reg_expression& BOOST_REGEX_CALL operator=(const charT* ptr)   {      set_expression(ptr, regex_constants::normal | regex_constants::use_except);      return *this;   }   //   // assign:   reg_expression& assign(const reg_expression& that)   { return *this = that; }   reg_expression& assign(const charT* ptr, flag_type f = regex_constants::normal)   {      set_expression(ptr, f | regex_constants::use_except);      return *this;   }   reg_expression& assign(const charT* ptr, size_type len, flag_type f)   {      std::basic_string<charT> s(ptr, len);      set_expression(s.c_str(), f | regex_constants::use_except);      return *this;   }   reg_expression& assign(const charT* arg_first,                          const charT* arg_last,                          flag_type f = regex_constants::normal)   {      set_expression(arg_first, arg_last, f | regex_constants::use_except);      return *this;   }#if !defined(BOOST_NO_MEMBER_TEMPLATES) && !defined(__IBMCPP__)   template <class ST, class SA>   unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal)   { return set_expression(p.data(), p.data() + p.size(), f); }   template <class ST, class SA>   explicit reg_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal, const Allocator& a = Allocator())    : data(a), pkmp(0), error_code_(REG_EMPTY), _expression(0) { set_expression(p, f | regex_constants::use_except); }   template <class InputIterator>   reg_expression(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal, const Allocator& al = Allocator())    : data(al), pkmp(0), error_code_(REG_EMPTY), _expression(0)   {      std::basic_string<charT> a(arg_first, arg_last);      set_expression(a.data(), a.data() + a.size(), f | regex_constants::use_except);   }   template <class ST, class SA>   reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<charT, ST, SA>& p)   {      set_expression(p.c_str(), p.c_str() + p.size(), regex_constants::normal | regex_constants::use_except);      return *this;   }   template <class string_traits, class A>   reg_expression& BOOST_REGEX_CALL assign(       const std::basic_string<charT, string_traits, A>& s,       flag_type f = regex_constants::normal)   {      set_expression(s.c_str(), s.c_str() + s.size(), f | regex_constants::use_except);      return *this;   }   template <class InputIterator>   reg_expression& BOOST_REGEX_CALL assign(InputIterator arg_first,                          InputIterator arg_last,                          flag_type f = regex_constants::normal)   {      std::basic_string<charT> a(arg_first, arg_last);      set_expression(a.data(), a.data() + a.size(), f | regex_constants::use_except);      return *this;   }#else   unsigned int BOOST_REGEX_CALL set_expression(const std::basic_string<charT>& p, flag_type f = regex_constants::normal)   { return set_expression(p.data(), p.data() + p.size(), f | regex_constants::use_except); }   reg_expression(const std::basic_string<charT>& p, flag_type f = regex_constants::normal, const Allocator& a = Allocator())    : data(a), pkmp(0) { set_expression(p, f | regex_constants::use_except); }   reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<charT>& p)   {      set_expression(p.c_str(), p.c_str() + p.size(), regex_constants::normal | regex_constants::use_except);      return *this;   }   reg_expression& BOOST_REGEX_CALL assign(       const std::basic_string<charT>& s,       flag_type f = regex_constants::normal)   {      set_expression(s.c_str(), s.c_str() + s.size(), f | regex_constants::use_except);      return *this;   }#endif   //   // allocator access:   Allocator BOOST_REGEX_CALL get_allocator()const;   //   // locale:   locale_type BOOST_REGEX_CALL imbue(locale_type l){ return traits_inst.imbue(l); }   locale_type BOOST_REGEX_CALL getloc()const{ return traits_inst.getloc(); }   //   // getflags:   // retained for backwards compatibility only, the base class has "flags"   // member which is now the prefered name:   flag_type BOOST_REGEX_CALL getflags()const   { return this->flags(); }   //   // str:   std::basic_string<charT> BOOST_REGEX_CALL str()const   {      std::basic_string<charT> result;      if(this->error_code() == 0)         result = std::basic_string<charT>(_expression, _expression_len);      return result;   }   //   // begin, end:   const_iterator BOOST_REGEX_CALL begin()const   { return (this->error_code() ? 0 : _expression); }   const_iterator BOOST_REGEX_CALL end()const

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?