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

📄 collect_token_statistics.hpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 HPP
字号:
/*=============================================================================    Boost.Wave: A Standard compliant C++ preprocessor library    Sample: Collect token statistics from the analysed files                http://www.boost.org/    Copyright (c) 2001-2008 Hartmut Kaiser. 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(COLLECT_TOKEN_STATISTICS_VERSION_HPP)#define COLLECT_TOKEN_STATISTICS_VERSION_HPP#include <algorithm>#include <map>#include <boost/assert.hpp>#include <boost/wave/token_ids.hpp>///////////////////////////////////////////////////////////////////////////////class collect_token_statistics{    enum {        count = boost::wave::T_LAST_TOKEN - boost::wave::T_FIRST_TOKEN    };    public:    collect_token_statistics()    {        std::fill(&token_count[0], &token_count[count], 0);    }        // account for the given token type    template <typename Token>    void operator() (Token const& token)    {        using boost::wave::token_id;                int id = token_id(token) - boost::wave::T_FIRST_TOKEN;        BOOST_ASSERT(id < count);        ++token_count[id];    }    // print out the token statistics in descending order    void print() const    {        using namespace boost::wave;        typedef std::multimap<int, token_id> ids_type;                ids_type ids;        for (unsigned int i = 0; i < count; ++i)        {            ids.insert(ids_type::value_type(                token_count[i], token_id(i + T_FIRST_TOKEN)));        }                ids_type::reverse_iterator rend = ids.rend();        for(ids_type::reverse_iterator rit = ids.rbegin(); rit != rend; ++rit)         {            std::cout << boost::wave::get_token_name((*rit).second) << ": "                       << (*rit).first << std::endl;        }    }    private:    int token_count[count];};#endif // !defined(COLLECT_TOKEN_STATISTICS_VERSION_HPP)

⌨️ 快捷键说明

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