$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r65358 - trunk/tools/quickbook/src
From: dnljms_at_[hidden]
Date: 2010-09-08 20:10:34
Author: danieljames
Date: 2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
New Revision: 65358
URL: http://svn.boost.org/trac/boost/changeset/65358
Log:
Cherry pick some reorganisation from the spirit 2 branch.
Based on [57774], [59562], [58046], [59566].
Added:
   trunk/tools/quickbook/src/fwd.hpp   (contents, props changed)
Text files modified: 
   trunk/tools/quickbook/src/actions.cpp          |     8 ++                                      
   trunk/tools/quickbook/src/actions.hpp          |    84 +++++++++++++++++++-------------------- 
   trunk/tools/quickbook/src/actions_class.cpp    |    11 +---                                    
   trunk/tools/quickbook/src/actions_class.hpp    |     2                                         
   trunk/tools/quickbook/src/block_grammar.cpp    |     1                                         
   trunk/tools/quickbook/src/doc_info_grammar.cpp |     1                                         
   trunk/tools/quickbook/src/grammar.hpp          |     2                                         
   trunk/tools/quickbook/src/phrase_grammar.hpp   |     1                                         
   trunk/tools/quickbook/src/quickbook.cpp        |     3 -                                       
   trunk/tools/quickbook/src/quickbook.hpp        |    38 +++++------------                       
   trunk/tools/quickbook/src/syntax_highlight.cpp |    13 ++++-                                   
   11 files changed, 71 insertions(+), 93 deletions(-)
Modified: trunk/tools/quickbook/src/actions.cpp
==============================================================================
--- trunk/tools/quickbook/src/actions.cpp	(original)
+++ trunk/tools/quickbook/src/actions.cpp	2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
@@ -26,6 +26,10 @@
     char const* quickbook_get_date = "__quickbook_get_date__";
     char const* quickbook_get_time = "__quickbook_get_time__";
 
+    int qbk_major_version = -1;
+    int qbk_minor_version = -1;
+    unsigned qbk_version_n = 0; // qbk_major_version * 100 + qbk_minor_version
+
     namespace {
         std::string fully_qualified_id(std::string const& library_id,
             std::string const& qualified_section_id,
@@ -371,7 +375,7 @@
         phrase.swap(save);
 
         // print the code with syntax coloring
-        std::string str = syntax_p(first_, last_);
+        std::string str = syntax_highlight(first_, last_, actions, actions.source_mode);
 
         phrase.swap(save);
 
@@ -390,7 +394,7 @@
         out.swap(save);
 
         // print the code with syntax coloring
-        std::string str = syntax_p(first, last);
+        std::string str = syntax_highlight(first, last, actions, actions.source_mode);
 
         out.swap(save);
 
Modified: trunk/tools/quickbook/src/actions.hpp
==============================================================================
--- trunk/tools/quickbook/src/actions.hpp	(original)
+++ trunk/tools/quickbook/src/actions.hpp	2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
@@ -10,16 +10,15 @@
 #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/include/classic_iterator.hpp>
 #include <boost/filesystem/v2/operations.hpp>
 #include <boost/foreach.hpp>
 #include <boost/tuple/tuple.hpp>
+#include "fwd.hpp"
 #include "collector.hpp"
 #include "template_stack.hpp"
 #include "utils.hpp"
@@ -35,24 +34,44 @@
     namespace cl = boost::spirit::classic;
     namespace fs = boost::filesystem;
 
-    typedef cl::position_iterator<std::string::const_iterator,
-        cl::file_position_base<char const*> > iterator;
-    typedef cl::file_position_base<char const*> position;
+    extern int qbk_major_version;
+    extern int qbk_minor_version;
+    extern unsigned qbk_version_n; // qbk_major_version * 100 + qbk_minor_version
+
+    struct quickbook_range {
+        template <typename Arg>
+        struct result
+        {
+            typedef bool type;
+        };
+        
+        quickbook_range(unsigned min_, unsigned max_)
+            : min_(min_), max_(max_) {}
+        
+        bool operator()() const {
+            return qbk_version_n >= min_ && qbk_version_n < max_;
+        }
+
+        unsigned min_, max_;
+    };
+    
+    inline quickbook_range qbk_since(unsigned min_) {
+        return quickbook_range(min_, 999);
+    }
+    
+    inline quickbook_range qbk_before(unsigned max_) {
+        return quickbook_range(0, max_);
+    }
+
     typedef cl::symbols<std::string> string_symbols;
     typedef std::map<std::string, std::string> attribute_map;
 
-    struct actions;
-    extern tm* current_time; // the current time
-    extern tm* current_gm_time; // the current UTC time
-    extern bool debug_mode;
-    extern std::vector<std::string> include_path;
-    extern std::vector<std::string> preset_defines;
-
-    // forward declarations
-    struct actions;
-    int parse_file(char const* filein_, actions& actor, bool ignore_docinfo = false);
     int load_snippets(std::string const& file, std::vector<template_symbol>& storage,
         std::string const& extension, std::string const& doc_id);
+    std::string syntax_highlight(
+        iterator first, iterator last,
+        actions& escape_actions,
+        std::string const& source_mode);        
 
     struct error_action
     {
@@ -473,29 +492,6 @@
         std::string str;
     };
     
-    struct syntax_highlight
-    {
-        syntax_highlight(
-            collector& temp
-          , std::string const& source_mode
-          , string_symbols const& macro
-          , actions& escape_actions)
-        : temp(temp)
-        , source_mode(source_mode)
-        , macro(macro)
-        , escape_actions(escape_actions)
-        {
-        }
-
-        std::string operator()(iterator begin, iterator end) const;
-
-        collector& temp;
-        std::string const& source_mode;
-        string_symbols const& macro;
-        actions& escape_actions;
-    };
-
-
     struct code_action
     {
         // Does the actual syntax highlighing of code
@@ -503,10 +499,10 @@
         code_action(
             collector& out
           , collector& phrase
-          , syntax_highlight& syntax_p)
+          , quickbook::actions& actions)
         : out(out)
         , phrase(phrase)
-        , syntax_p(syntax_p)
+        , actions(actions)
         {
         }
 
@@ -514,7 +510,7 @@
 
         collector& out;
         collector& phrase;
-        syntax_highlight& syntax_p;
+        quickbook::actions& actions;
     };
 
     struct inline_code_action
@@ -523,15 +519,15 @@
 
         inline_code_action(
             collector& out
-          , syntax_highlight& syntax_p)
+          , quickbook::actions& actions)
         : out(out)
-        , syntax_p(syntax_p)
+        , actions(actions)
         {}
 
         void operator()(iterator first, iterator last) const;
 
         collector& out;
-        syntax_highlight& syntax_p;
+        quickbook::actions& actions;
     };
 
     struct start_varlistitem_action
Modified: trunk/tools/quickbook/src/actions_class.cpp
==============================================================================
--- trunk/tools/quickbook/src/actions_class.cpp	(original)
+++ trunk/tools/quickbook/src/actions_class.cpp	2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
@@ -10,6 +10,7 @@
 =============================================================================*/
 #include "actions_class.hpp"
 #include "markups.hpp"
+#include "quickbook.hpp"
 
 #if (defined(BOOST_MSVC) && (BOOST_MSVC <= 1310))
 #pragma warning(disable:4355)
@@ -37,7 +38,6 @@
 
     // auxilliary streams
         , phrase()
-        , temp()
         , list_buffer()
 
     // state
@@ -82,10 +82,9 @@
         , extract_name_first(name.first, phrase)
         , extract_doc_last_revision(doc_last_revision, phrase)
         , extract_doc_category(doc_category, phrase)
-        , syntax_p(temp, source_mode, macro, *this)
-        , code(out, phrase, syntax_p)
-        , code_block(phrase, phrase, syntax_p)
-        , inline_code(phrase, syntax_p)
+        , code(out, phrase, *this)
+        , code_block(phrase, phrase, *this)
+        , inline_code(phrase, *this)
         , inside_paragraph(temp_para, phrase, paragraph_pre, paragraph_post)
         , write_paragraphs(out, temp_para)
         , h(out, phrase, element_id, doc_id, section_id, qualified_section_id, section_level)
@@ -221,7 +220,6 @@
 
         out.push();
         phrase.push();
-        temp.push();
         temp_para.push();
         list_buffer.push();
         templates.push();        
@@ -263,7 +261,6 @@
 
         out.pop();
         phrase.pop();
-        temp.pop();
         temp_para.pop();
         list_buffer.pop();
         templates.pop();
Modified: trunk/tools/quickbook/src/actions_class.hpp
==============================================================================
--- trunk/tools/quickbook/src/actions_class.hpp	(original)
+++ trunk/tools/quickbook/src/actions_class.hpp	2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
@@ -61,7 +61,6 @@
 
     // auxilliary streams
         collector               phrase;
-        collector               temp;
         collector               temp_para;
         collector               list_buffer;
 
@@ -134,7 +133,6 @@
         phrase_to_docinfo_action extract_doc_last_revision;
         phrase_to_docinfo_action extract_doc_category;
 
-        syntax_highlight        syntax_p;
         code_action             code;
         code_action             code_block;
         inline_code_action      inline_code;
Modified: trunk/tools/quickbook/src/block_grammar.cpp
==============================================================================
--- trunk/tools/quickbook/src/block_grammar.cpp	(original)
+++ trunk/tools/quickbook/src/block_grammar.cpp	2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
@@ -9,7 +9,6 @@
 =============================================================================*/
 
 #include "phrase_grammar.hpp"
-#include "quickbook.hpp"
 #include "utils.hpp"
 #include "actions_class.hpp"
 #include <boost/spirit/include/classic_confix.hpp>
Modified: trunk/tools/quickbook/src/doc_info_grammar.cpp
==============================================================================
--- trunk/tools/quickbook/src/doc_info_grammar.cpp	(original)
+++ trunk/tools/quickbook/src/doc_info_grammar.cpp	2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
@@ -9,7 +9,6 @@
 =============================================================================*/
 
 #include "phrase_grammar.hpp"
-#include "quickbook.hpp"
 #include "actions_class.hpp"
 #include <boost/spirit/include/classic_core.hpp>
 #include <boost/spirit/include/classic_actor.hpp>
Added: trunk/tools/quickbook/src/fwd.hpp
==============================================================================
--- (empty file)
+++ trunk/tools/quickbook/src/fwd.hpp	2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
@@ -0,0 +1,27 @@
+/*=============================================================================
+    Copyright (c) 2002 2004 2006 Joel de Guzman
+    Copyright (c) 2004 Eric Niebler
+    Copyright (c) 2010 Daniel James
+    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_FWD_HPP)
+#define BOOST_SPIRIT_FWD_HPP
+
+#include <boost/spirit/include/classic_iterator.hpp>
+#include <boost/range.hpp>
+#include <boost/shared_ptr.hpp>
+
+namespace quickbook
+{
+    struct actions;
+
+    typedef boost::spirit::classic::file_position_base<char const*> position;
+    typedef boost::spirit::classic::position_iterator<
+        std::string::const_iterator, position> iterator;
+}
+
+#endif
\ No newline at end of file
Modified: trunk/tools/quickbook/src/grammar.hpp
==============================================================================
--- trunk/tools/quickbook/src/grammar.hpp	(original)
+++ trunk/tools/quickbook/src/grammar.hpp	2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
@@ -11,7 +11,7 @@
 #define BOOST_SPIRIT_QUICKBOOK_GRAMMARS_HPP
 
 #include <boost/spirit/include/classic_core.hpp>
-#include "actions.hpp"
+#include "fwd.hpp"
 
 namespace quickbook
 {
Modified: trunk/tools/quickbook/src/phrase_grammar.hpp
==============================================================================
--- trunk/tools/quickbook/src/phrase_grammar.hpp	(original)
+++ trunk/tools/quickbook/src/phrase_grammar.hpp	2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
@@ -12,7 +12,6 @@
 
 #include "grammar.hpp"
 #include "actions_class.hpp"
-#include "quickbook.hpp"
 #include "utils.hpp"
 #include <boost/spirit/include/classic_core.hpp>
 #include <boost/spirit/include/classic_confix.hpp>
Modified: trunk/tools/quickbook/src/quickbook.cpp
==============================================================================
--- trunk/tools/quickbook/src/quickbook.cpp	(original)
+++ trunk/tools/quickbook/src/quickbook.cpp	2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
@@ -38,9 +38,6 @@
     tm* current_time; // the current time
     tm* current_gm_time; // the current UTC time
     bool debug_mode; // for quickbook developers only
-    int qbk_major_version = -1;
-    int qbk_minor_version = -1;
-    unsigned qbk_version_n = 0; // qbk_major_version * 100 + qbk_minor_version
     bool ms_errors = false; // output errors/warnings as if for VS
     std::vector<std::string> include_path;
     std::vector<std::string> preset_defines;
Modified: trunk/tools/quickbook/src/quickbook.hpp
==============================================================================
--- trunk/tools/quickbook/src/quickbook.hpp	(original)
+++ trunk/tools/quickbook/src/quickbook.hpp	2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
@@ -12,36 +12,20 @@
 #if !defined(BOOST_SPIRIT_QUICKBOOK_QUICKBOOK_HPP)
 #define BOOST_SPIRIT_QUICKBOOK_QUICKBOOK_HPP
 
+#include <time.h>
+#include <vector>
+#include <string>
+#include "fwd.hpp"
+
 namespace quickbook
 {
-    extern int qbk_major_version;
-    extern int qbk_minor_version;
-    extern unsigned qbk_version_n; // qbk_major_version * 100 + qbk_minor_version
-
-    struct quickbook_range {
-        template <typename Arg>
-        struct result
-        {
-            typedef bool type;
-        };
-        
-        quickbook_range(unsigned min_, unsigned max_)
-            : min_(min_), max_(max_) {}
-        
-        bool operator()() const {
-            return qbk_version_n >= min_ && qbk_version_n < max_;
-        }
+    extern tm* current_time; // the current time
+    extern tm* current_gm_time; // the current UTC time
+    extern bool debug_mode;
+    extern std::vector<std::string> include_path;
+    extern std::vector<std::string> preset_defines;
 
-        unsigned min_, max_;
-    };
-    
-    inline quickbook_range qbk_since(unsigned min_) {
-        return quickbook_range(min_, 999);
-    }
-    
-    inline quickbook_range qbk_before(unsigned max_) {
-        return quickbook_range(0, max_);
-    }
+    int parse_file(char const* filein_, actions& actor, bool ignore_docinfo = false);
 }
 
 #endif
Modified: trunk/tools/quickbook/src/syntax_highlight.cpp
==============================================================================
--- trunk/tools/quickbook/src/syntax_highlight.cpp	(original)
+++ trunk/tools/quickbook/src/syntax_highlight.cpp	2010-09-08 20:10:30 EDT (Wed, 08 Sep 2010)
@@ -43,22 +43,27 @@
       , collector>
     teletype_p_type;
     
-    std::string syntax_highlight::operator()(iterator first, iterator last) const
+    std::string syntax_highlight(
+        iterator first, iterator last,
+        actions& escape_actions,
+        std::string const& source_mode)
     {
+        quickbook::collector temp;
+
         // print the code with syntax coloring
         if (source_mode == "c++")
         {
-            cpp_p_type cpp_p(temp, macro, do_macro_action(temp), escape_actions);
+            cpp_p_type cpp_p(temp, escape_actions.macro, do_macro_action(temp), escape_actions);
             boost::spirit::classic::parse(first, last, cpp_p);
         }
         else if (source_mode == "python")
         {
-            python_p_type python_p(temp, macro, do_macro_action(temp), escape_actions);
+            python_p_type python_p(temp, escape_actions.macro, do_macro_action(temp), escape_actions);
             boost::spirit::classic::parse(first, last, python_p);
         }
         else if (source_mode == "teletype")
         {
-            teletype_p_type teletype_p(temp, macro, do_macro_action(temp), escape_actions);
+            teletype_p_type teletype_p(temp, escape_actions.macro, do_macro_action(temp), escape_actions);
             boost::spirit::classic::parse(first, last, teletype_p);
         }
         else