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

📄 tst.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_TST_JUNE_03_2007_1031AM)#define BOOST_SPIRIT_TST_JUNE_03_2007_1031AM#include <boost/spirit/home/qi/string/detail/tst.hpp>namespace boost { namespace spirit { namespace qi{    struct tst_pass_through    {        template <typename Char>        Char operator()(Char ch) const        {            return ch;        }    };    template <typename Char, typename T>    struct tst    {        typedef Char char_type; // the character type        typedef T value_type; // the value associated with each entry        typedef detail::tst_node<Char, T> node;        tst()          : root(0)        {        }        ~tst()        {            clear();        }        tst(tst const& rhs)          : root(0)        {            copy(rhs);        }        tst& operator=(tst const& rhs)        {            return assign(rhs);        }        template <typename Iterator, typename Filter>        T* find(Iterator& first, Iterator last, Filter filter) const        {            return node::find(root, first, last, filter);        }        template <typename Iterator>        T* find(Iterator& first, Iterator last) const        {            return find(first, last, tst_pass_through());        }        template <typename Iterator>        bool add(            Iterator first          , Iterator last          , typename boost::call_traits<T>::param_type val)        {            return node::add(root, first, last, val, this);        }        template <typename Iterator>        void remove(Iterator first, Iterator last)        {            node::remove(root, first, last, this);        }        void clear()        {            node::destruct_node(root, this);            root = 0;        }        template <typename F>        void for_each(F f) const        {            node::for_each(root, std::basic_string<Char>(), f);        }    private:        friend struct detail::tst_node<Char, T>;        void copy(tst const& rhs)        {            root = node::clone_node(rhs.root, this);        }        tst& assign(tst const& rhs)        {            if (this != &rhs)            {                clear();                copy(rhs);            }            return *this;        }        node* root;        node* new_node(Char id)        {            return new node(id);        }        T* new_data(typename boost::call_traits<T>::param_type val)        {            return new T(val);        }        void delete_node(node* p)        {            delete p;        }        void delete_data(T* p)        {            delete p;        }    };}}}#endif

⌨️ 快捷键说明

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