⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 char_class.hpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 HPP
字号:
/*=============================================================================    Copyright (c) 2001-2007 Joel de Guzman    Distributed under 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)==============================================================================*/#if !defined(BOOST_SPIRIT_CHAR_CLASS_APR_16_2006_1051AM)#define BOOST_SPIRIT_CHAR_CLASS_APR_16_2006_1051AM#include <boost/spirit/home/qi/char/char_parser.hpp>#include <boost/spirit/home/qi/domain.hpp>#include <boost/spirit/home/support/modifier.hpp>#include <boost/spirit/home/support/iso8859_1.hpp>#include <boost/spirit/home/support/ascii.hpp>#include <boost/spirit/home/support/standard.hpp>#include <boost/spirit/home/support/standard_wide.hpp>#include <boost/fusion/include/cons.hpp>namespace boost { namespace spirit { namespace qi{    ///////////////////////////////////////////////////////////////////////////    // generic isxxx parser (for alnum, alpha, graph, etc.)    ///////////////////////////////////////////////////////////////////////////    template <typename Tag>    struct char_class      : char_parser<char_class<Tag>, typename Tag::char_set::char_type>    {        typedef typename Tag::char_set char_set;        typedef typename Tag::char_class char_class_;        template <typename Component, typename CharParam, typename Context>        static bool test(Component const&, CharParam ch, Context&)        {            using spirit::char_class::classify;            return classify<char_set>::is(char_class_(), ch);        }        template <typename Component, typename Context>        static std::string what(Component const& component, Context const& ctx)        {            typedef spirit::char_class::what<char_set> what_;            return what_::is(char_class_());        }    };}}}namespace boost { namespace spirit { namespace traits{    ///////////////////////////////////////////////////////////////////////////    // no_case char_class conversions    ///////////////////////////////////////////////////////////////////////////    namespace detail    {        using spirit::char_class::key;        using spirit::char_class::lower_case_tag;        using spirit::char_class::upper_case_tag;        using spirit::char_class::tag::alpha;        template <typename Tag>        struct make_no_case_char_class :            mpl::identity<qi::char_class<Tag> > {};        template <typename CharSet>        struct make_no_case_char_class<lower_case_tag<CharSet> >          : mpl::identity<qi::char_class<key<CharSet, alpha> > > {};        template <typename CharSet>        struct make_no_case_char_class<upper_case_tag<CharSet> >          : mpl::identity<qi::char_class<key<CharSet, alpha> > > {};    }    template <        typename Domain, typename Elements, typename Modifier, typename Tag    >    struct make_modified_component<        Domain, qi::char_class<Tag>, Elements, Modifier      , typename enable_if<            is_member_of_modifier<Modifier, spirit::char_class::no_case_base_tag>        >::type    >    {        typedef typename detail::make_no_case_char_class<Tag>::type director;        typedef component<qi::domain, director, fusion::nil> type;        static type        call(Elements const&)        {            return type(fusion::nil());        }    };}}}#endif

⌨️ 快捷键说明

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