basic_chset.hpp

来自「Boost provides free peer-reviewed portab」· HPP 代码 · 共 107 行

HPP
107
字号
/*=============================================================================    Copyright (c) 2001-2003 Joel de Guzman    Copyright (c) 2001-2003 Daniel Nuffer    http://spirit.sourceforge.net/  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)=============================================================================*/#ifndef BOOST_SPIRIT_BASIC_CHSET_HPP#define BOOST_SPIRIT_BASIC_CHSET_HPP///////////////////////////////////////////////////////////////////////////////#include <bitset>#include <boost/spirit/home/classic/utility/impl/chset/range_run.hpp>#include <boost/spirit/home/classic/namespace.hpp>namespace boost { namespace spirit {BOOST_SPIRIT_CLASSIC_NAMESPACE_BEGIN    ///////////////////////////////////////////////////////////////////////////    //    //  basic_chset: basic character set implementation using range_run    //    ///////////////////////////////////////////////////////////////////////////    template <typename CharT>    class basic_chset    {    public:                            basic_chset();                            basic_chset(basic_chset const& arg_);        bool                test(CharT v) const;        void                set(CharT from, CharT to);        void                set(CharT c);        void                clear(CharT from, CharT to);        void                clear(CharT c);        void                clear();        void                inverse();        void                swap(basic_chset& x);        basic_chset&        operator|=(basic_chset const& x);        basic_chset&        operator&=(basic_chset const& x);        basic_chset&        operator-=(basic_chset const& x);        basic_chset&        operator^=(basic_chset const& x);        private: utility::impl::range_run<CharT> rr;    };    #if (CHAR_BIT == 8)    ///////////////////////////////////////////////////////////////////////////    //    //  basic_chset: specializations for 8 bit chars using std::bitset    //    ///////////////////////////////////////////////////////////////////////////    template <typename CharT>    class basic_chset_8bit {    public:                            basic_chset_8bit();                            basic_chset_8bit(basic_chset_8bit const& arg_);        bool                test(CharT v) const;        void                set(CharT from, CharT to);        void                set(CharT c);        void                clear(CharT from, CharT to);        void                clear(CharT c);        void                clear();        void                inverse();        void                swap(basic_chset_8bit& x);        basic_chset_8bit&   operator|=(basic_chset_8bit const& x);        basic_chset_8bit&   operator&=(basic_chset_8bit const& x);        basic_chset_8bit&   operator-=(basic_chset_8bit const& x);        basic_chset_8bit&   operator^=(basic_chset_8bit const& x);        private: std::bitset<256> bset;    };    /////////////////////////////////    template <>    class basic_chset<char>    : public basic_chset_8bit<char> {};    /////////////////////////////////    template <>    class basic_chset<signed char>    : public basic_chset_8bit<signed char> {};    /////////////////////////////////    template <>    class basic_chset<unsigned char>    : public basic_chset_8bit<unsigned char> {};#endifBOOST_SPIRIT_CLASSIC_NAMESPACE_END}} // namespace BOOST_SPIRIT_CLASSIC_NS#endif#include <boost/spirit/home/classic/utility/impl/chset/basic_chset.ipp>

⌨️ 快捷键说明

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