$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r59564 - branches/quickbook-1.5-spirit2
From: daniel_james_at_[hidden]
Date: 2010-02-07 04:12:25
Author: danieljames
Date: 2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
New Revision: 59564
URL: http://svn.boost.org/trac/boost/changeset/59564
Log:
Use state instead of actions in 'process'.
Text files modified: 
   branches/quickbook-1.5-spirit2/block_actions.cpp    |   114 ++++++++++++++++++++--------------------
   branches/quickbook-1.5-spirit2/block_actions.hpp    |    22 +++---                                  
   branches/quickbook-1.5-spirit2/block_list.cpp       |     5 -                                       
   branches/quickbook-1.5-spirit2/doc_info_actions.cpp |    14 ++--                                    
   branches/quickbook-1.5-spirit2/doc_info_actions.hpp |     2                                         
   branches/quickbook-1.5-spirit2/phrase_actions.cpp   |    23 ++++---                                 
   branches/quickbook-1.5-spirit2/phrase_actions.hpp   |    18 +++---                                  
   branches/quickbook-1.5-spirit2/phrase_image.cpp     |     5 -                                       
   branches/quickbook-1.5-spirit2/process.cpp          |     4                                         
   branches/quickbook-1.5-spirit2/quickbook.cpp        |    16 ++--                                    
   branches/quickbook-1.5-spirit2/quickbook.hpp        |     2                                         
   branches/quickbook-1.5-spirit2/template.cpp         |    58 ++++++++++---------                     
   12 files changed, 141 insertions(+), 142 deletions(-)
Modified: branches/quickbook-1.5-spirit2/block_actions.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/block_actions.cpp	(original)
+++ branches/quickbook-1.5-spirit2/block_actions.cpp	2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
@@ -35,7 +35,7 @@
         }
     }
 
-    formatted process(quickbook::actions& actions, paragraph const& x)
+    formatted process(quickbook::state& state, paragraph const& x)
     {
         formatted r;
         r.type="paragraph";
@@ -43,33 +43,33 @@
         return r;
     }
 
-    begin_section2 process(quickbook::actions& actions, begin_section const& x)
+    begin_section2 process(quickbook::state& state, begin_section const& x)
     {
         // TODO: This uses the generated title.
-        actions.state_.section_id = x.id ? *x.id :
+        state.section_id = x.id ? *x.id :
             detail::make_identifier(
                 x.content.raw_markup.begin(),
                 x.content.raw_markup.end());
 
-        if (actions.state_.section_level != 0) {
-            actions.state_.qualified_section_id += '.';
+        if (state.section_level != 0) {
+            state.qualified_section_id += '.';
         }
         else {
-            BOOST_ASSERT(actions.state_.qualified_section_id.empty());
+            BOOST_ASSERT(state.qualified_section_id.empty());
         }
 
-        actions.state_.qualified_section_id += actions.state_.section_id;
-        ++actions.state_.section_level;
+        state.qualified_section_id += state.section_id;
+        ++state.section_level;
 
         begin_section2 r;
 
         if (qbk_version_n < 103) // version 1.2 and below
         {
-            r.id = actions.state_.doc_id + "." + actions.state_.section_id;
+            r.id = state.doc_id + "." + state.section_id;
         }
         else // version 1.3 and above
         {
-            r.linkend = r.id = actions.state_.doc_id + "." + actions.state_.qualified_section_id;
+            r.linkend = r.id = state.doc_id + "." + state.qualified_section_id;
         }
         
         r.content = x.content.content;
@@ -77,34 +77,34 @@
         return r;
     }
 
-    end_section2 process(quickbook::actions& actions, end_section const& x)
+    end_section2 process(quickbook::state& state, end_section const& x)
     {
-        --actions.state_.section_level;
-        if (actions.state_.section_level < 0)
+        --state.section_level;
+        if (state.section_level < 0)
         {
             detail::outerr(x.position.file,x.position.line)
                 << "Mismatched [endsect] near column " << x.position.column << ".\n";
-            ++actions.state_.error_count;
+            ++state.error_count;
             
             // $$$ TODO: somehow fail parse else BOOST_ASSERT(std::string::npos != n)
             // $$$ below will assert.
         }
-        if (actions.state_.section_level == 0)
+        if (state.section_level == 0)
         {
-            actions.state_.qualified_section_id.clear();
+            state.qualified_section_id.clear();
         }
         else
         {
             std::string::size_type const n =
-                actions.state_.qualified_section_id.find_last_of('.');
+                state.qualified_section_id.find_last_of('.');
             BOOST_ASSERT(std::string::npos != n);
-            actions.state_.qualified_section_id.erase(n, std::string::npos);
+            state.qualified_section_id.erase(n, std::string::npos);
         }
         
         return end_section2();
     }
 
-    heading2 process(quickbook::actions& actions, heading const& x)
+    heading2 process(quickbook::state& state, heading const& x)
     {
         heading2 r;
 
@@ -113,7 +113,7 @@
         
         r.level = x.level;
         if(r.level < 0) {
-            r.level = actions.state_.section_level + 2;
+            r.level = state.section_level + 2;
                                                 // section_level is zero-based. We need to use a
                                                 // one-based heading which is one greater
                                                 // than the current. Thus: section_level + 2.
@@ -123,7 +123,7 @@
 
         if (!new_style) // version 1.2 and below
         {
-            r.id = actions.state_.section_id + "." +
+            r.id = state.section_id + "." +
                 detail::make_identifier(
                     x.content.raw_markup.begin(),
                     x.content.raw_markup.end());
@@ -131,7 +131,7 @@
         else // version 1.3 and above
         {
             r.linkend = r.id = fully_qualified_id(
-                actions.state_.doc_id, actions.state_.qualified_section_id,
+                state.doc_id, state.qualified_section_id,
                 detail::make_identifier(
                     x.content.raw_markup.begin(),
                     x.content.raw_markup.end()));
@@ -143,27 +143,27 @@
         return r;
     }
 
-    nothing process(quickbook::actions& actions, def_macro const& x)
+    nothing process(quickbook::state& state, def_macro const& x)
     {
-        actions.state_.macro.add(
+        state.macro.add(
             x.macro_identifier.begin()
           , x.macro_identifier.end()
           , quickbook::macro(x.content));
         return nothing();
     }
 
-    nothing process(quickbook::actions& actions, define_template const& x)
+    nothing process(quickbook::state& state, define_template const& x)
     {
-        if(!actions.state_.templates.add(x)) {
+        if(!state.templates.add(x)) {
             detail::outerr(x.position.file, x.position.line)
                 << "Template Redefinition: " << x.id << std::endl;
-            ++actions.state_.error_count;
+            ++state.error_count;
         }
         
         return nothing();
     }
 
-    table2 process(quickbook::actions& actions, table const& x)
+    table2 process(quickbook::state& state, table const& x)
     {
         table2 r;
 
@@ -171,12 +171,12 @@
         
         if(qbk_version_n >= 105) {
             if(x.id) {
-                r.id = fully_qualified_id(actions.state_.doc_id,
-                    actions.state_.qualified_section_id, *x.id);
+                r.id = fully_qualified_id(state.doc_id,
+                    state.qualified_section_id, *x.id);
             }
             else if(r.title) {
-                r.id = fully_qualified_id(actions.state_.doc_id,
-                    actions.state_.qualified_section_id,
+                r.id = fully_qualified_id(state.doc_id,
+                    state.qualified_section_id,
                     detail::make_identifier(x.title.begin(), x.title.end()));
             }
         }
@@ -279,84 +279,84 @@
             return std::accumulate(file, path.end(), result, concat);
         }
     
-        fs::path calculate_relative_path(std::string const& x, quickbook::actions& actions)
+        fs::path calculate_relative_path(std::string const& x, quickbook::state& state)
         {
             // Given a source file and the current filename, calculate the
             // path to the source file relative to the output directory.
             fs::path path(x);
             if (!path.is_complete())
             {
-                fs::path infile = fs::complete(actions.state_.filename).normalize();
+                fs::path infile = fs::complete(state.filename).normalize();
                 path = (infile.branch_path() / path).normalize();
-                fs::path outdir = fs::complete(actions.state_.outdir).normalize();
+                fs::path outdir = fs::complete(state.outdir).normalize();
                 path = path_difference(outdir, path);
             }
             return path;
         }
     }
 
-    xinclude2 process(quickbook::actions& actions, xinclude const& x)
+    xinclude2 process(quickbook::state& state, xinclude const& x)
     {
         xinclude2 r;
-        r.path = calculate_relative_path(detail::escape_uri(x.path), actions).string();
+        r.path = calculate_relative_path(detail::escape_uri(x.path), state).string();
         return r;
     }
 
-    nothing process(quickbook::actions& actions, include const& x)
+    nothing process(quickbook::state& state, include const& x)
     {
-        fs::path filein = include_search(actions.state_.filename.branch_path(), x.path);
+        fs::path filein = include_search(state.filename.branch_path(), x.path);
         std::string doc_id;
 
         // swap the filenames
-        std::swap(actions.state_.filename, filein);
+        std::swap(state.filename, filein);
 
         // save the doc info strings
-        actions.state_.doc_id.swap(doc_id);
+        state.doc_id.swap(doc_id);
 
         // scope the macros
-        macro_symbols macro = actions.state_.macro;
+        macro_symbols macro = state.macro;
         // scope the templates
-        //~ template_symbols templates = actions.state_.templates; $$$ fixme $$$
+        //~ template_symbols templates = state.templates; $$$ fixme $$$
 
         // if an id is specified in this include (as in [include:id foo.qbk])
         // then use it as the doc_id.
-        if (x.id) actions.state_.doc_id = *x.id;
+        if (x.id) state.doc_id = *x.id;
 
         // update the __FILENAME__ macro
-        *actions.state_.macro.find("__FILENAME__") =
-            quickbook::macro(actions.state_.filename.native_file_string());
+        *state.macro.find("__FILENAME__") =
+            quickbook::macro(state.filename.native_file_string());
 
         // parse the file
-        quickbook::parse(actions.state_.filename.native_file_string().c_str(), actions, true);
+        quickbook::parse(state.filename.native_file_string().c_str(), state, true);
 
         // restore the values
-        std::swap(actions.state_.filename, filein);
+        std::swap(state.filename, filein);
 
-        actions.state_.doc_id.swap(doc_id);
+        state.doc_id.swap(doc_id);
 
         // restore the macros
-        actions.state_.macro = macro;
+        state.macro = macro;
         // restore the templates
-        //~ actions.state_.templates = templates; $$$ fixme $$$
+        //~ state.templates = templates; $$$ fixme $$$
         
         return nothing();
     }
 
-    nothing process(quickbook::actions& actions, import const& x)
+    nothing process(quickbook::state& state, import const& x)
     {
-        fs::path path = include_search(actions.state_.filename.branch_path(), x.path);
+        fs::path path = include_search(state.filename.branch_path(), x.path);
         std::string ext = fs::extension(path);
         std::vector<define_template> storage;
-        actions.state_.error_count +=
-            load_snippets(path.string(), storage, ext, actions.state_.doc_id);
+        state.error_count +=
+            load_snippets(path.string(), storage, ext, state.doc_id);
 
         BOOST_FOREACH(define_template const& definition, storage)
         {
-            if (!actions.state_.templates.add(definition))
+            if (!state.templates.add(definition))
             {
                 detail::outerr(definition.position.file, definition.position.line)
                     << "Template Redefinition: " << definition.id << std::endl;
-                ++actions.state_.error_count;
+                ++state.error_count;
             }
         }
 
Modified: branches/quickbook-1.5-spirit2/block_actions.hpp
==============================================================================
--- branches/quickbook-1.5-spirit2/block_actions.hpp	(original)
+++ branches/quickbook-1.5-spirit2/block_actions.hpp	2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
@@ -16,17 +16,17 @@
 namespace quickbook
 {
     // TODO: Just generate formatted.
-    formatted process(quickbook::actions&, paragraph const&);
-    begin_section2 process(quickbook::actions&, begin_section const&);
-    end_section2 process(quickbook::actions&, end_section const&);
-    heading2 process(quickbook::actions&, heading const&);
-    nothing process(quickbook::actions&, def_macro const&);
-    nothing process(quickbook::actions&, define_template const&);
-    table2 process(quickbook::actions&, table const&);
-    xinclude2 process(quickbook::actions&, xinclude const&);
-    nothing process(quickbook::actions&, import const&);
-    nothing process(quickbook::actions&, include const&);
-    list2 process(quickbook::actions&, list const&);
+    formatted process(quickbook::state&, paragraph const&);
+    begin_section2 process(quickbook::state&, begin_section const&);
+    end_section2 process(quickbook::state&, end_section const&);
+    heading2 process(quickbook::state&, heading const&);
+    nothing process(quickbook::state&, def_macro const&);
+    nothing process(quickbook::state&, define_template const&);
+    table2 process(quickbook::state&, table const&);
+    xinclude2 process(quickbook::state&, xinclude const&);
+    nothing process(quickbook::state&, import const&);
+    nothing process(quickbook::state&, include const&);
+    list2 process(quickbook::state&, list const&);
 }
 
 #endif
\ No newline at end of file
Modified: branches/quickbook-1.5-spirit2/block_list.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/block_list.cpp	(original)
+++ branches/quickbook-1.5-spirit2/block_list.cpp	2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
@@ -10,7 +10,6 @@
 
 #include <stack>
 #include <boost/assert.hpp>
-#include "actions.hpp"
 #include "state.hpp"
 #include "gen_types.hpp"
 #include "utils.hpp"
@@ -43,7 +42,7 @@
         int indent;
     };
 
-    list2 process(quickbook::actions& actions, quickbook::list const& list)
+    list2 process(quickbook::state& state, quickbook::list const& list)
     {
         list::const_iterator it = list.begin(), end = list.end();
         BOOST_ASSERT(it != end);
@@ -83,7 +82,7 @@
                     << "Illegal change of list style near column " << pos.column << ".\n";
                 detail::outwarn(pos.file,pos.line)
                     << "Ignoring change of list style" << std::endl;
-                ++actions.state_.error_count;
+                ++state.error_count;
             }
         }
 
Modified: branches/quickbook-1.5-spirit2/doc_info_actions.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/doc_info_actions.cpp	(original)
+++ branches/quickbook-1.5-spirit2/doc_info_actions.cpp	2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
@@ -16,13 +16,12 @@
 #include "collector.hpp"
 #include "quickbook.hpp"
 #include "doc_info_actions.hpp"
-#include "actions.hpp"
 #include "state.hpp"
 #include "utils.hpp"
 
 namespace quickbook
 {
-    doc_info process(quickbook::actions& actions, doc_info const& x)
+    doc_info process(quickbook::state& state, doc_info const& x)
     {
         doc_info info = x;
     
@@ -30,18 +29,17 @@
         // *before* anything else.
 
         if(!info.doc_title.empty())
-            actions.state_.doc_title = info.doc_title;
+            state.doc_title = info.doc_title;
 
         if(info.doc_id.empty())
             info.doc_id = detail::make_identifier(
-                actions.state_.doc_title.begin(),
-                actions.state_.doc_title.end());
+               state.doc_title.begin(),state.doc_title.end());
 
-        if(actions.state_.doc_id.empty())
-            actions.state_.doc_id = info.doc_id;
+        if(state.doc_id.empty())
+            state.doc_id = info.doc_id;
 
         if (info.doc_dirname.empty() && info.doc_type == "library")
-            info.doc_dirname = actions.state_.doc_id;
+            info.doc_dirname = state.doc_id;
 
         if (info.doc_last_revision.empty())
         {
Modified: branches/quickbook-1.5-spirit2/doc_info_actions.hpp
==============================================================================
--- branches/quickbook-1.5-spirit2/doc_info_actions.hpp	(original)
+++ branches/quickbook-1.5-spirit2/doc_info_actions.hpp	2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
@@ -17,7 +17,7 @@
 
 namespace quickbook
 {
-    doc_info process(quickbook::actions&, doc_info const&);
+    doc_info process(quickbook::state&, doc_info const&);
 }
 
 #endif
Modified: branches/quickbook-1.5-spirit2/phrase_actions.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/phrase_actions.cpp	(original)
+++ branches/quickbook-1.5-spirit2/phrase_actions.cpp	2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
@@ -19,12 +19,12 @@
 
 namespace quickbook
 {    
-    nothing process(quickbook::actions& actions, source_mode const& s) {
-        actions.state_.source_mode = s.mode;
+    nothing process(quickbook::state& state, source_mode const& s) {
+        state.source_mode = s.mode;
         return nothing();
     }
 
-    std::string process(quickbook::actions& actions, macro const& x) {
+    std::string process(quickbook::state& state, macro const& x) {
         if (x.raw_markup == quickbook_get_date)
         {
             char strdate[64];
@@ -43,7 +43,7 @@
         }
     }
 
-    link process(quickbook::actions& actions, link const& x) {
+    link process(quickbook::state& state, link const& x) {
         link r = x;
         if(r.content.empty()) {
             r.content = encode(x.destination);
@@ -51,7 +51,7 @@
         return r;
     }
 
-    formatted process(quickbook::actions& actions, simple_markup const& x) {
+    formatted process(quickbook::state& state, simple_markup const& x) {
         formatted r;
         switch(x.symbol) {
             case '*': r.type = "bold"; break;
@@ -66,20 +66,20 @@
         return r;
     }
 
-    std::string process(quickbook::actions& actions, cond_phrase const& x) {
-        bool symbol_found = actions.macro.find(x.macro_id.c_str());
+    std::string process(quickbook::state& state, cond_phrase const& x) {
+        bool symbol_found = state.macro.find(x.macro_id.c_str());
 
         return (!x.content.empty() && symbol_found) ? x.content : "";
     }
 
-    break_ process(quickbook::actions& actions, break_ const& x) {
+    break_ process(quickbook::state& state, break_ const& x) {
         detail::outwarn(x.position.file,x.position.line)
             << "in column:" << x.position.column << ", "
             << "[br] and \\n are deprecated" << ".\n";
         return x;
     }
 
-    formatted process(quickbook::actions& actions, code const& x) {
+    formatted process(quickbook::state& state, code const& x) {
         formatted r;
         r.type = "";
 
@@ -98,12 +98,13 @@
 
         // TODO: I don't need to save this, do I?
         std::string save;
-        actions.state_.phrase.swap(save);
+        state.phrase.swap(save);
 
         // print the code with syntax coloring
+        quickbook::actions actions(state);
         std::string str = actions.syntax_p(first_, last_);
 
-        actions.state_.phrase.swap(save);
+        state.phrase.swap(save);
         
         r.type = x.block ? "programlisting" : "code";
         r.content = str;
Modified: branches/quickbook-1.5-spirit2/phrase_actions.hpp
==============================================================================
--- branches/quickbook-1.5-spirit2/phrase_actions.hpp	(original)
+++ branches/quickbook-1.5-spirit2/phrase_actions.hpp	2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
@@ -16,15 +16,15 @@
 
 namespace quickbook
 {
-    nothing process(quickbook::actions&, source_mode const&);
-    std::string process(quickbook::actions&, macro const&);
-    link process(quickbook::actions&, link const&);
-    formatted process(quickbook::actions&, simple_markup const&);
-    std::string process(quickbook::actions&, cond_phrase const&);
-    break_ process(quickbook::actions&, break_ const&);
-    formatted process(quickbook::actions&, code const&);
-    image2 process(quickbook::actions&, image const&);
-    std::string process(quickbook::actions&, call_template const&);
+    nothing process(quickbook::state&, source_mode const&);
+    std::string process(quickbook::state&, macro const&);
+    link process(quickbook::state&, link const&);
+    formatted process(quickbook::state&, simple_markup const&);
+    std::string process(quickbook::state&, cond_phrase const&);
+    break_ process(quickbook::state&, break_ const&);
+    formatted process(quickbook::state&, code const&);
+    image2 process(quickbook::state&, image const&);
+    std::string process(quickbook::state&, call_template const&);
 }
 
 #endif
Modified: branches/quickbook-1.5-spirit2/phrase_image.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/phrase_image.cpp	(original)
+++ branches/quickbook-1.5-spirit2/phrase_image.cpp	2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
@@ -12,7 +12,6 @@
 #include <boost/filesystem/fstream.hpp>
 #include "phrase.hpp"
 #include "gen_types.hpp"
-#include "actions.hpp"
 #include "state.hpp"
 #include "utils.hpp"
 
@@ -20,7 +19,7 @@
 {
     namespace fs = boost::filesystem;
 
-    image2 process(quickbook::actions& actions, image const& x)
+    image2 process(quickbook::state& state, image const& x)
     {
         typedef image2::attribute_map attribute_map;
         typedef attribute_map::value_type attribute;
@@ -42,7 +41,7 @@
                     << "Duplicate image attribute: "
                     << begin->first
                     << std::endl;
-                ++actions.state_.error_count;
+                ++state.error_count;
             }
         }
     
Modified: branches/quickbook-1.5-spirit2/process.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/process.cpp	(original)
+++ branches/quickbook-1.5-spirit2/process.cpp	2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
@@ -25,11 +25,11 @@
     template <typename T>
     void process_action::operator()(T const& x) const
     {
-        output(actions.state_, process(actions, x));
+        output(actions.state_, process(actions.state_, x));
     }
 
     template <typename T>
-    T const& process(quickbook::actions&, T const& x)
+    T const& process(quickbook::state&, T const& x)
     {
         return x;
     }
Modified: branches/quickbook-1.5-spirit2/quickbook.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/quickbook.cpp	(original)
+++ branches/quickbook-1.5-spirit2/quickbook.cpp	2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
@@ -48,7 +48,7 @@
     //
     ///////////////////////////////////////////////////////////////////////////
     int
-    parse(char const* filein_, actions& actor, bool ignore_docinfo)
+    parse(char const* filein_, state& state_, bool ignore_docinfo)
     {
         using std::cerr;
         using std::vector;
@@ -57,7 +57,7 @@
         std::string storage;
         int err = detail::load(filein_, storage);
         if (err != 0) {
-            ++actor.state_.error_count;
+            ++state_.error_count;
             return err;
         }
 
@@ -66,6 +66,7 @@
         iterator start = first;
 
         doc_info info;
+        actions actor(state_);
         doc_info_grammar l(actor);
         bool success = parse(first, last, l, info);
 
@@ -95,25 +96,24 @@
             file_position const pos = first.get_position();
             detail::outerr(pos.file,pos.line)
                 << "Syntax Error near column " << pos.column << ".\n";
-            ++actor.state_.error_count;
+            ++state_.error_count;
         }
         
-        if(actor.state_.error_count)
+        if(state_.error_count)
         {
             detail::outerr(filein_)
                 << "Error count: " << actor.state_.error_count << ".\n";
         }
 
-        return actor.state_.error_count ? 1 : 0;
+        return state_.error_count ? 1 : 0;
     }
 
     static int
     parse(char const* filein_, fs::path const& outdir, string_stream& out, bool ignore_docinfo = false)
     {
         quickbook::state state(filein_, outdir, out);
-        actions actor(state);
-        bool r = parse(filein_, actor);
-        if (actor.state_.section_level != 0)
+        bool r = parse(filein_, state);
+        if (state.section_level != 0)
             detail::outwarn(filein_)
                 << "Warning missing [endsect] detected at end of file."
                 << std::endl;
Modified: branches/quickbook-1.5-spirit2/quickbook.hpp
==============================================================================
--- branches/quickbook-1.5-spirit2/quickbook.hpp	(original)
+++ branches/quickbook-1.5-spirit2/quickbook.hpp	2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
@@ -25,7 +25,7 @@
     extern std::vector<std::string> include_path;
 
     // forward declarations
-    int parse(char const* filein_, actions& actor, bool ignore_docinfo = false);
+    int parse(char const* filein_, state&, bool ignore_docinfo = false);
 }
 
 #endif
Modified: branches/quickbook-1.5-spirit2/template.cpp
==============================================================================
--- branches/quickbook-1.5-spirit2/template.cpp	(original)
+++ branches/quickbook-1.5-spirit2/template.cpp	2010-02-07 04:12:20 EST (Sun, 07 Feb 2010)
@@ -257,7 +257,7 @@
           , std::vector<std::string> const& params
           , template_scope const& scope
           , file_position const& pos
-          , quickbook::actions& actions
+          , quickbook::state& state
         )
         {
             std::vector<std::string>::const_iterator arg = args.begin();
@@ -268,13 +268,13 @@
             {
                 std::vector<std::string> empty_params;
 
-                if (!actions.state_.templates.add(
+                if (!state.templates.add(
                         define_template(*tpl, empty_params, *arg, pos),
                         &scope))
                 {
                     detail::outerr(pos.file,pos.line)
                         << "Duplicate Symbol Found" << std::endl;
-                    ++actions.state_.error_count;
+                    ++state.error_count;
                     return std::make_pair(false, tpl);
                 }
                 ++arg; ++tpl;
@@ -287,7 +287,7 @@
           , std::string& result
           , file_position const& template_pos
           , bool template_escape
-          , quickbook::actions& actions
+          , quickbook::state& state
         )
         {
             // How do we know if we are to parse the template as a block or
@@ -312,17 +312,19 @@
             }
             else if (!is_block)
             {
+                quickbook::actions actions(state);
                 simple_phrase_grammar phrase_p(actions);
 
                 //  do a phrase level parse
-                iterator first(body.begin(), body.end(), actions.state_.filename.native_file_string().c_str());
+                iterator first(body.begin(), body.end(), state.filename.native_file_string().c_str());
                 first.set_position(template_pos);
                 iterator last(body.end(), body.end());
                 r = boost::spirit::qi::parse(first, last, phrase_p) && first == last;
-                actions.state_.phrase.swap(result);
+                state.phrase.swap(result);
             }
             else
             {
+                quickbook::actions actions(state);
                 block_grammar block_p(actions);
 
                 //  do a block level parse
@@ -331,25 +333,25 @@
                 body += "\n\n";
                 while (iter != body.end() && ((*iter == '\r') || (*iter == '\n')))
                     ++iter; // skip initial newlines
-                iterator first(iter, body.end(), actions.state_.filename.native_file_string().c_str());
+                iterator first(iter, body.end(), state.filename.native_file_string().c_str());
                 first.set_position(template_pos);
                 iterator last(body.end(), body.end());
                 r = boost::spirit::qi::parse(first, last, block_p) && first == last;
-                actions.state_.phrase.swap(result);
+                state.phrase.swap(result);
             }
             return r;
         }
     }
 
-    std::string process(quickbook::actions& actions, call_template const& x)
+    std::string process(quickbook::state& state, call_template const& x)
     {
-        ++actions.state_.template_depth;
-        if (actions.state_.template_depth > actions.state_.max_template_depth)
+        ++state.template_depth;
+        if (state.template_depth > state.max_template_depth)
         {
             detail::outerr(x.position.file, x.position.line)
                 << "Infinite loop detected" << std::endl;
-            --actions.state_.template_depth;
-            ++actions.state_.error_count;
+            --state.template_depth;
+            ++state.error_count;
             return "";
         }
 
@@ -358,17 +360,17 @@
         //
         // Note that for quickbook 1.4- this value is just ignored when the
         // arguments are expanded.
-        template_scope const& call_scope = actions.state_.templates.top_scope();
+        template_scope const& call_scope = state.templates.top_scope();
 
         std::string result;
-        actions.state_.push(); // scope the actions' states
+        state.push(); // scope the state
         {
             // Quickbook 1.4-: When expanding the tempalte continue to use the
             //                 current scope (the dynamic scope).
             // Quickbook 1.5+: Use the scope the template was defined in
             //                 (the static scope).
             if (qbk_version_n >= 105)
-                actions.state_.templates.set_parent_scope(*x.symbol->parent);
+                state.templates.set_parent_scope(*x.symbol->parent);
 
             std::vector<std::string> args = x.args;
     
@@ -376,9 +378,9 @@
             // Break the arguments
             if (!break_arguments(args, x.symbol->params, x.position))
             {
-                actions.state_.pop(); // restore the actions' states
-                --actions.state_.template_depth;
-                ++actions.state_.error_count;
+                state.pop(); // restore the state
+                --state.template_depth;
+                ++state.error_count;
                 return "";
             }
 
@@ -388,19 +390,19 @@
             std::vector<std::string>::const_iterator tpl;
             boost::tie(get_arg_result, tpl) =
                 get_arguments(args, x.symbol->params,
-                    call_scope, x.position, actions);
+                    call_scope, x.position, state);
 
             if (!get_arg_result)
             {
-                actions.state_.pop(); // restore the actions' states
-                --actions.state_.template_depth;
+                state.pop(); // restore the state
+                --state.template_depth;
                 return "";
             }
 
             ///////////////////////////////////
             // parse the template body:
 
-            if (!parse_template(x.symbol->body, result, x.symbol->position, x.escape, actions))
+            if (!parse_template(x.symbol->body, result, x.symbol->position, x.escape, state))
             {
                 detail::outerr(x.position.file,x.position.line)
                     //<< "Expanding template:" << x.symbol->identifier << std::endl
@@ -409,15 +411,15 @@
                     << x.symbol->body
                     << "------------------end--------------------" << std::endl
                     << std::endl;
-                actions.state_.pop(); // restore the actions' states
-                --actions.state_.template_depth;
-                ++actions.state_.error_count;
+                state.pop(); // restore the state
+                --state.template_depth;
+                ++state.error_count;
                 return "";
             }
         }
 
-        actions.state_.pop(); // restore the actions' states
-        --actions.state_.template_depth;
+        state.pop(); // restore the state
+        --state.template_depth;
         
         return result;
     }