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

📄 actions.hpp

📁 Boost provides free peer-reviewed portable C++ source libraries. We emphasize libraries that work
💻 HPP
📖 第 1 页 / 共 2 页
字号:
/*=============================================================================    Copyright (c) 2002 2004 2006 Joel de Guzman    Copyright (c) 2004 Eric Niebler    http://spirit.sourceforge.net/    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)=============================================================================*/#if !defined(BOOST_SPIRIT_QUICKBOOK_ACTIONS_HPP)#define BOOST_SPIRIT_QUICKBOOK_ACTIONS_HPP#include <time.h>#include <map>#include <string>#include <vector>#include <stack>#include <algorithm>#include <boost/spirit/iterator/position_iterator.hpp>#include <boost/filesystem/operations.hpp>#include <boost/foreach.hpp>#include <boost/tuple/tuple.hpp>#include "../syntax_highlight.hpp"#include "./collector.hpp"#include "./template_stack.hpp"#include "./utils.hpp"#ifdef BOOST_MSVC// disable copy/assignment could not be generated, unreferenced formal params#pragma warning (push)#pragma warning(disable : 4511 4512 4100)#endifnamespace quickbook{    namespace fs = boost::filesystem;    typedef position_iterator<std::string::const_iterator> iterator;    typedef symbols<std::string> string_symbols;    struct actions;    extern tm* current_time; // the current time    extern tm* current_gm_time; // the current UTC time    extern bool debug_mode;    extern unsigned qbk_major_version;    extern unsigned qbk_minor_version;    extern unsigned qbk_version_n; // qbk_major_version * 100 + qbk_minor_version    extern std::vector<std::string> include_path;    // forward declarations    struct actions;    int parse(char const* filein_, actions& actor, bool ignore_docinfo = false);    struct error_action    {        // Prints an error message to std::cerr        void operator()(iterator first, iterator /*last*/) const;    };    struct phrase_action    {        //  blurb, blockquote, preformatted, list_item,        //  unordered_list, ordered_list        phrase_action(            collector& out,            collector& phrase,            std::string const& pre,            std::string const& post)        : out(out)        , phrase(phrase)        , pre(pre)        , post(post) {}        void operator()(iterator first, iterator last) const;        collector& out;        collector& phrase;        std::string pre;        std::string post;    };    struct header_action    {        //  Handles paragraph, h1, h2, h3, h4, h5, h6,        header_action(            collector& out,            collector& phrase,            std::string const& library_id,            std::string const& section_id,            std::string const& qualified_section_id,            std::string const& pre,            std::string const& post)        : out(out)        , phrase(phrase)        , library_id(library_id)        , section_id(section_id)        , qualified_section_id(qualified_section_id)        , pre(pre)        , post(post) {}        void operator()(iterator first, iterator last) const;        collector& out;        collector& phrase;        std::string const& library_id;        std::string const& section_id;        std::string const& qualified_section_id;        std::string pre;        std::string post;    };    struct generic_header_action    {        //  Handles h        generic_header_action(            collector& out,            collector& phrase,            std::string const& library_id,            std::string const& section_id,            std::string const& qualified_section_id,            int const& section_level)        : out(out)        , phrase(phrase)        , library_id(library_id)        , section_id(section_id)        , qualified_section_id(qualified_section_id)        , section_level(section_level) {}        void operator()(iterator first, iterator last) const;        collector& out;        collector& phrase;        std::string const& library_id;        std::string const& section_id;        std::string const& qualified_section_id;        int const& section_level;    };    struct simple_phrase_action    {        //  Handles simple text formats        simple_phrase_action(            collector& out          , std::string const& pre          , std::string const& post          , string_symbols const& macro)        : out(out)        , pre(pre)        , post(post)        , macro(macro) {}        void operator()(iterator first, iterator last) const;        collector& out;        std::string pre;        std::string post;        string_symbols const& macro;    };    struct cond_phrase_action_pre    {        //  Handles conditional phrases        cond_phrase_action_pre(            collector& out          , std::vector<bool>& conditions          , string_symbols const& macro)        : out(out)        , conditions(conditions)        , macro(macro) {}        void operator()(iterator first, iterator last) const;        collector& out;        std::vector<bool>& conditions;        string_symbols const& macro;    };    struct cond_phrase_action_post    {        //  Handles conditional phrases        cond_phrase_action_post(            collector& out          , std::vector<bool>& conditions          , string_symbols const& macro)        : out(out)        , conditions(conditions)        , macro(macro) {}        void operator()(iterator first, iterator last) const;        collector& out;        std::vector<bool>& conditions;        string_symbols const& macro;    };    struct list_action    {        //  Handles lists        typedef std::pair<char, int> mark_type;        list_action(            collector& out          , collector& list_buffer          , int& list_indent          , std::stack<mark_type>& list_marks)        : out(out)        , list_buffer(list_buffer)        , list_indent(list_indent)        , list_marks(list_marks) {}        void operator()(iterator first, iterator last) const;        collector& out;        collector& list_buffer;        int& list_indent;        std::stack<mark_type>& list_marks;    };    struct list_format_action    {        //  Handles list formatting and hierarchy        typedef std::pair<char, int> mark_type;        list_format_action(            collector& out          , int& list_indent          , std::stack<mark_type>& list_marks)        : out(out)        , list_indent(list_indent)        , list_marks(list_marks) {}        void operator()(iterator first, iterator last) const;        collector& out;        int& list_indent;        std::stack<mark_type>& list_marks;    };    struct span    {        // Decorates c++ code fragments        span(char const* name, collector& out)        : name(name), out(out) {}        void operator()(iterator first, iterator last) const;        char const* name;        collector& out;    };    struct unexpected_char    {        // Handles unexpected chars in c++ syntax        unexpected_char(collector& out)        : out(out) {}        void operator()(char) const;        collector& out;    };    struct anchor_action    {        // Handles anchors        anchor_action(collector& out)            : out(out) {}        void operator()(iterator first, iterator last) const;        collector& out;    };    namespace    {        char const* quickbook_get_date = "__quickbook_get_date__";        char const* quickbook_get_time = "__quickbook_get_time__";    }    struct do_macro_action    {        // Handles macro substitutions        do_macro_action(collector& phrase)            : phrase(phrase) {}        void operator()(std::string const& str) const;        collector& phrase;    };    struct space    {        // Prints a space        space(collector& out)            : out(out) {}        void operator()(iterator first, iterator last) const;        void operator()(char ch) const;        collector& out;    };    struct pre_escape_back    {        // Escapes back from code to quickbook (Pre)        pre_escape_back(actions& escape_actions, std::string& save)            : escape_actions(escape_actions), save(save) {}        void operator()(iterator first, iterator last) const;        actions& escape_actions;        std::string& save;    };    struct post_escape_back    {        // Escapes back from code to quickbook (Post)        post_escape_back(collector& out, actions& escape_actions, std::string& save)            : out(out), escape_actions(escape_actions), save(save) {}        void operator()(iterator first, iterator last) const;        collector& out;        actions& escape_actions;        std::string& save;    };    typedef cpp_highlight<        span      , space      , string_symbols      , do_macro_action      , pre_escape_back      , post_escape_back      , actions      , unexpected_char      , collector>    cpp_p_type;    typedef python_highlight<        span      , space      , string_symbols      , do_macro_action      , pre_escape_back      , post_escape_back      , actions      , unexpected_char      , collector>    python_p_type;    struct code_action    {        // Does the actual syntax highlighing of code        code_action(            collector& out          , collector& phrase          , collector& temp          , std::string const& source_mode          , string_symbols const& macro          , actions& escape_actions)        : out(out)        , phrase(phrase)        , temp(temp)        , source_mode(source_mode)        , cpp_p(temp, macro, do_macro_action(temp), escape_actions)        , python_p(temp, macro, do_macro_action(temp), escape_actions)        {        }        void operator()(iterator first, iterator last) const;        collector& out;        collector& phrase;        collector& temp;        std::string const& source_mode;        cpp_p_type cpp_p;

⌨️ 快捷键说明

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