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

📄 classification.hpp

📁 CGAL is a collaborative effort of several sites in Europe and Israel. The goal is to make the most i
💻 HPP
字号:
//  Boost string_algo library classification.hpp header file  ---------------------------////  Copyright Pavol Droba 2002-2003. Use, modification and//  distribution is 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)//  See http://www.boost.org for updates, documentation, and revision history.#ifndef BOOST_STRING_CLASSIFICATION_DETAIL_HPP#define BOOST_STRING_CLASSIFICATION_DETAIL_HPP#include <boost/algorithm/string/config.hpp>#include <algorithm>#include <functional>#include <locale>#include <set>#include <boost/algorithm/string/collection_traits.hpp>#include <boost/algorithm/string/predicate_facade.hpp>#include <boost/type_traits/remove_const.hpp>namespace boost {    namespace algorithm {        namespace detail {            //  classification functors -----------------------------------------------//                        // is_classified functor            struct is_classifiedF :                public predicate_facade<is_classifiedF>            {                // Boost.Lambda support                template <class Args> struct sig { typedef bool type; };                // Constructor from a locale                 is_classifiedF(std::ctype_base::mask Type, std::locale const & Loc = std::locale()) :                    m_Type(Type), m_Locale(Loc) {}                // Operation                template<typename CharT>                bool operator()( CharT Ch ) const                {                    return std::use_facet< std::ctype<CharT> >(m_Locale).is( m_Type, Ch );                }            private:                const std::ctype_base::mask m_Type;                const std::locale m_Locale;            };            // is_any_of functor             /*                 returns true if the value is from the specified set            */            template<typename CharT>            struct is_any_ofF :                public predicate_facade<is_any_ofF<CharT> >            {                // Boost.Lambda support                template <class Args> struct sig { typedef bool type; };                // Constructor                 template< typename SeqT >                is_any_ofF( const SeqT& Seq ) :                     m_Set( begin(Seq), end(Seq) ) {}                                // Operation                template<typename Char2T>                bool operator()( Char2T Ch ) const                {                    return m_Set.find(Ch)!=m_Set.end();                }                        private:                // set cannot operate on const value-type                typedef typename remove_const<CharT>::type set_value_type;                std::set<set_value_type> m_Set;                            };            // is_from_range functor             /*                 returns true if the value is from the specified range.                (i.e. x>=From && x>=To)            */            template<typename CharT>            struct is_from_rangeF :                public predicate_facade< is_from_rangeF<CharT> >            {                // Boost.Lambda support                template <class Args> struct sig { typedef bool type; };                // Constructor                 is_from_rangeF( CharT From, CharT To ) : m_From(From), m_To(To) {}                                // Operation                template<typename Char2T>                bool operator()( Char2T Ch ) const                {                    return ( m_From <= Ch ) && ( Ch <= m_To );                 }                        private:                CharT m_From;                CharT m_To;            };            // class_and composition predicate            template<typename Pred1T, typename Pred2T>            struct pred_andF :                public predicate_facade< pred_andF<Pred1T,Pred2T> >            {            public:                // Boost.Lambda support                template <class Args> struct sig { typedef bool type; };                // Constructor                pred_andF( Pred1T Pred1, Pred2T Pred2 ) :                    m_Pred1(Pred1), m_Pred2(Pred2) {}                // Operation                template<typename CharT>                bool operator()( CharT Ch ) const                 {                    return m_Pred1(Ch) && m_Pred2(Ch);                }                        private:                Pred1T m_Pred1;                Pred2T m_Pred2;            };            // class_or composition predicate            template<typename Pred1T, typename Pred2T>            struct pred_orF :                public predicate_facade< pred_orF<Pred1T,Pred2T> >            {            public:                // Boost.Lambda support                template <class Args> struct sig { typedef bool type; };                // Constructor                pred_orF( Pred1T Pred1, Pred2T Pred2 ) :                    m_Pred1(Pred1), m_Pred2(Pred2) {}                // Operation                template<typename CharT>                bool operator()( CharT Ch ) const                 {                    return m_Pred1(Ch) || m_Pred2(Ch);                }                        private:                Pred1T m_Pred1;                Pred2T m_Pred2;            };            // class_not composition predicate            template< typename PredT >            struct pred_notF :                public predicate_facade< pred_notF<PredT> >            {            public:                // Boost.Lambda support                template <class Args> struct sig { typedef bool type; };                // Constructor                pred_notF( PredT Pred ) : m_Pred(Pred) {}                // Operation                template<typename CharT>                bool operator()( CharT Ch ) const                 {                    return !m_Pred(Ch);                }                        private:                PredT m_Pred;            };        } // namespace detail    } // namespace algorithm} // namespace boost#endif  // BOOST_STRING_CLASSIFICATION_DETAIL_HPP

⌨️ 快捷键说明

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