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 + -
显示快捷键?