basic_regex.hpp
来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 653 行 · 第 1/2 页
HPP
653 行
basic_regex& BOOST_REGEX_CALL operator=(const std::basic_string<charT>& p) { return assign(p.data(), p.data() + p.size(), regex_constants::normal); } basic_regex& BOOST_REGEX_CALL assign( const std::basic_string<charT>& s, flag_type f = regex_constants::normal) { return assign(s.data(), s.data() + s.size(), f); }#endif // // locale: locale_type BOOST_REGEX_CALL imbue(locale_type l); locale_type BOOST_REGEX_CALL getloc()const { return m_pimpl.get() ? m_pimpl->getloc() : locale_type(); } // // getflags: // retained for backwards compatibility only, "flags" // is now the preferred name: flag_type BOOST_REGEX_CALL getflags()const { return flags(); } flag_type BOOST_REGEX_CALL flags()const { return m_pimpl.get() ? m_pimpl->flags() : 0; } // // str: std::basic_string<charT> BOOST_REGEX_CALL str()const { return m_pimpl.get() ? m_pimpl->str() : std::basic_string<charT>(); } // // begin, end: const_iterator BOOST_REGEX_CALL begin()const { return (m_pimpl.get() ? m_pimpl->begin() : 0); } const_iterator BOOST_REGEX_CALL end()const { return (m_pimpl.get() ? m_pimpl->end() : 0); } // // swap: void BOOST_REGEX_CALL swap(basic_regex& that)throw() { m_pimpl.swap(that.m_pimpl); } // // size: size_type BOOST_REGEX_CALL size()const { return (m_pimpl.get() ? m_pimpl->size() : 0); } // // max_size: size_type BOOST_REGEX_CALL max_size()const { return UINT_MAX; } // // empty: bool BOOST_REGEX_CALL empty()const { return (m_pimpl.get() ? 0 != m_pimpl->status() : true); } size_type BOOST_REGEX_CALL mark_count()const { return (m_pimpl.get() ? m_pimpl->mark_count() : 0); } int status()const { return (m_pimpl.get() ? m_pimpl->status() : regex_constants::error_empty); } int BOOST_REGEX_CALL compare(const basic_regex& that) const { if(m_pimpl.get() == that.m_pimpl.get()) return 0; if(!m_pimpl.get()) return -1; if(!that.m_pimpl.get()) return 1; if(status() != that.status()) return status() - that.status(); if(flags() != that.flags()) return flags() - that.flags(); return str().compare(that.str()); } bool BOOST_REGEX_CALL operator==(const basic_regex& e)const { return compare(e) == 0; } bool BOOST_REGEX_CALL operator != (const basic_regex& e)const { return compare(e) != 0; } bool BOOST_REGEX_CALL operator<(const basic_regex& e)const { return compare(e) < 0; } bool BOOST_REGEX_CALL operator>(const basic_regex& e)const { return compare(e) > 0; } bool BOOST_REGEX_CALL operator<=(const basic_regex& e)const { return compare(e) <= 0; } bool BOOST_REGEX_CALL operator>=(const basic_regex& e)const { return compare(e) >= 0; } // // The following are deprecated as public interfaces // but are available for compatibility with earlier versions. const charT* BOOST_REGEX_CALL expression()const { return (m_pimpl.get() && !m_pimpl->status() ? m_pimpl->expression() : 0); } unsigned int BOOST_REGEX_CALL set_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal) { assign(p1, p2, f | regex_constants::no_except); return status(); } unsigned int BOOST_REGEX_CALL set_expression(const charT* p, flag_type f = regex_constants::normal) { assign(p, f | regex_constants::no_except); return status(); } unsigned int BOOST_REGEX_CALL error_code()const { return status(); } // // private access methods: // const re_detail::re_syntax_base* get_first_state()const { BOOST_ASSERT(0 != m_pimpl.get()); return m_pimpl->get_first_state(); } unsigned get_restart_type()const { BOOST_ASSERT(0 != m_pimpl.get()); return m_pimpl->get_restart_type(); } const unsigned char* get_map()const { BOOST_ASSERT(0 != m_pimpl.get()); return m_pimpl->get_map(); } const ::boost::regex_traits_wrapper<traits>& get_traits()const { BOOST_ASSERT(0 != m_pimpl.get()); return m_pimpl->get_traits(); } bool can_be_null()const { BOOST_ASSERT(0 != m_pimpl.get()); return m_pimpl->can_be_null(); } const re_detail::regex_data<charT, traits>& get_data()const { BOOST_ASSERT(0 != m_pimpl.get()); return m_pimpl->get_data(); }private: shared_ptr<re_detail::basic_regex_implementation<charT, traits> > m_pimpl;};//// out of line members;// these are the only members that mutate the basic_regex object,// and are designed to provide the strong exception guarentee// (in the event of a throw, the state of the object remains unchanged).//template <class charT, class traits>basic_regex<charT, traits>& basic_regex<charT, traits>::do_assign(const charT* p1, const charT* p2, flag_type f){ shared_ptr<re_detail::basic_regex_implementation<charT, traits> > temp; if(!m_pimpl.get()) { temp = shared_ptr<re_detail::basic_regex_implementation<charT, traits> >(new re_detail::basic_regex_implementation<charT, traits>()); } else { temp = shared_ptr<re_detail::basic_regex_implementation<charT, traits> >(new re_detail::basic_regex_implementation<charT, traits>(m_pimpl->m_ptraits)); } temp->assign(p1, p2, f); temp.swap(m_pimpl); return *this;}template <class charT, class traits>typename basic_regex<charT, traits>::locale_type BOOST_REGEX_CALL basic_regex<charT, traits>::imbue(locale_type l){ shared_ptr<re_detail::basic_regex_implementation<charT, traits> > temp(new re_detail::basic_regex_implementation<charT, traits>()); locale_type result = temp->imbue(l); temp.swap(m_pimpl); return result;}//// non-members://template <class charT, class traits>void swap(basic_regex<charT, traits>& e1, basic_regex<charT, traits>& e2){ e1.swap(e2);}#ifndef BOOST_NO_STD_LOCALEtemplate <class charT, class traits, class traits2>std::basic_ostream<charT, traits>& operator << (std::basic_ostream<charT, traits>& os, const basic_regex<charT, traits2>& e){ return (os << e.str());}#elsetemplate <class traits>std::ostream& operator << (std::ostream& os, const basic_regex<char, traits>& e){ return (os << e.str());}#endif//// class reg_expression:// this is provided for backwards compatibility only,// it is deprecated, no not use!//#ifdef BOOST_REGEX_NO_FWDtemplate <class charT, class traits = regex_traits<charT> >#elsetemplate <class charT, class traits >#endifclass reg_expression : public basic_regex<charT, traits>{public: typedef typename basic_regex<charT, traits>::flag_type flag_type; typedef typename basic_regex<charT, traits>::size_type size_type; explicit reg_expression(){} explicit reg_expression(const charT* p, flag_type f = regex_constants::normal) : basic_regex<charT, traits>(p, f){} reg_expression(const charT* p1, const charT* p2, flag_type f = regex_constants::normal) : basic_regex<charT, traits>(p1, p2, f){} reg_expression(const charT* p, size_type len, flag_type f) : basic_regex<charT, traits>(p, len, f){} reg_expression(const reg_expression& that) : basic_regex<charT, traits>(that) {} ~reg_expression(){} reg_expression& BOOST_REGEX_CALL operator=(const reg_expression& that) { return this->assign(that); }#if !defined(BOOST_NO_MEMBER_TEMPLATES) template <class ST, class SA> explicit reg_expression(const std::basic_string<charT, ST, SA>& p, flag_type f = regex_constants::normal) : basic_regex<charT, traits>(p, f) { } template <class InputIterator> reg_expression(InputIterator arg_first, InputIterator arg_last, flag_type f = regex_constants::normal) : basic_regex<charT, traits>(arg_first, arg_last, f) { } template <class ST, class SA> reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<charT, ST, SA>& p) { this->assign(p); return *this; }#else explicit reg_expression(const std::basic_string<charT>& p, flag_type f = regex_constants::normal) : basic_regex<charT, traits>(p, f) { } reg_expression& BOOST_REGEX_CALL operator=(const std::basic_string<charT>& p) { this->assign(p); return *this; }#endif};#ifdef BOOST_MSVC#pragma warning (pop)#endif} // namespace boost#ifdef BOOST_MSVC#pragma warning(push)#pragma warning(disable: 4103)#endif#ifdef BOOST_HAS_ABI_HEADERS# include BOOST_ABI_SUFFIX#endif#ifdef BOOST_MSVC#pragma warning(pop)#endif#endif
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?