$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r65049 - in branches/release/tools/quickbook: . detail doc src test
From: dnljms_at_[hidden]
Date: 2010-08-27 04:37:17
Author: danieljames
Date: 2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
New Revision: 65049
URL: http://svn.boost.org/trac/boost/changeset/65049
Log:
Merge latest quickbook changes.
Restructures the code and tweaks docinfo. generation.
Added:
   branches/release/tools/quickbook/src/
      - copied from r65048, /trunk/tools/quickbook/src/
   branches/release/tools/quickbook/src/Jamfile.v2
      - copied unchanged from r65048, /trunk/tools/quickbook/src/Jamfile.v2
   branches/release/tools/quickbook/src/actions.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/actions.cpp
   branches/release/tools/quickbook/src/actions.hpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/actions.hpp
   branches/release/tools/quickbook/src/actions_class.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/actions_class.cpp
   branches/release/tools/quickbook/src/actions_class.hpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/actions_class.hpp
   branches/release/tools/quickbook/src/block_grammar.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/block_grammar.cpp
   branches/release/tools/quickbook/src/code_snippet.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/code_snippet.cpp
   branches/release/tools/quickbook/src/collector.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/collector.cpp
   branches/release/tools/quickbook/src/collector.hpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/collector.hpp
   branches/release/tools/quickbook/src/doc_info_actions.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/doc_info_actions.cpp
   branches/release/tools/quickbook/src/doc_info_grammar.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/doc_info_grammar.cpp
   branches/release/tools/quickbook/src/grammar.hpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/grammar.hpp
   branches/release/tools/quickbook/src/input_path.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/input_path.cpp
   branches/release/tools/quickbook/src/input_path.hpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/input_path.hpp
   branches/release/tools/quickbook/src/markups.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/markups.cpp
   branches/release/tools/quickbook/src/markups.hpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/markups.hpp
   branches/release/tools/quickbook/src/phrase_grammar.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/phrase_grammar.cpp
   branches/release/tools/quickbook/src/phrase_grammar.hpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/phrase_grammar.hpp
   branches/release/tools/quickbook/src/post_process.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/post_process.cpp
   branches/release/tools/quickbook/src/post_process.hpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/post_process.hpp
   branches/release/tools/quickbook/src/quickbook.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/quickbook.cpp
   branches/release/tools/quickbook/src/quickbook.hpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/quickbook.hpp
   branches/release/tools/quickbook/src/syntax_highlight.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/syntax_highlight.cpp
   branches/release/tools/quickbook/src/syntax_highlight.hpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/syntax_highlight.hpp
   branches/release/tools/quickbook/src/template_stack.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/template_stack.cpp
   branches/release/tools/quickbook/src/template_stack.hpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/template_stack.hpp
   branches/release/tools/quickbook/src/utils.cpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/utils.cpp
   branches/release/tools/quickbook/src/utils.hpp
      - copied unchanged from r65048, /trunk/tools/quickbook/src/utils.hpp
Removed:
   branches/release/tools/quickbook/block.hpp
   branches/release/tools/quickbook/code_snippet.hpp
   branches/release/tools/quickbook/detail/actions.cpp
   branches/release/tools/quickbook/detail/actions.hpp
   branches/release/tools/quickbook/detail/actions_class.cpp
   branches/release/tools/quickbook/detail/actions_class.hpp
   branches/release/tools/quickbook/detail/collector.cpp
   branches/release/tools/quickbook/detail/collector.hpp
   branches/release/tools/quickbook/detail/input_path.cpp
   branches/release/tools/quickbook/detail/input_path.hpp
   branches/release/tools/quickbook/detail/markups.cpp
   branches/release/tools/quickbook/detail/markups.hpp
   branches/release/tools/quickbook/detail/post_process.cpp
   branches/release/tools/quickbook/detail/post_process.hpp
   branches/release/tools/quickbook/detail/quickbook.cpp
   branches/release/tools/quickbook/detail/quickbook.hpp
   branches/release/tools/quickbook/detail/template_stack.cpp
   branches/release/tools/quickbook/detail/template_stack.hpp
   branches/release/tools/quickbook/detail/utils.cpp
   branches/release/tools/quickbook/detail/utils.hpp
   branches/release/tools/quickbook/doc_info.hpp
   branches/release/tools/quickbook/phrase.hpp
   branches/release/tools/quickbook/syntax_highlight.hpp
Properties modified: 
   branches/release/tools/quickbook/   (props changed)
Text files modified: 
   branches/release/tools/quickbook/Jamfile.v2                      |    36 +++---------------------------------    
   branches/release/tools/quickbook/doc/quickbook.qbk               |     3 +++                                     
   branches/release/tools/quickbook/test/blocks.gold                |     5 +----                                   
   branches/release/tools/quickbook/test/callouts.gold              |     2 --                                      
   branches/release/tools/quickbook/test/code-block-1.gold          |     2 --                                      
   branches/release/tools/quickbook/test/code-block-2.gold          |     2 --                                      
   branches/release/tools/quickbook/test/code-block-3.gold          |     2 --                                      
   branches/release/tools/quickbook/test/code-block-teletype.gold   |     2 --                                      
   branches/release/tools/quickbook/test/code-block.gold            |     2 --                                      
   branches/release/tools/quickbook/test/code-snippet.gold          |     2 --                                      
   branches/release/tools/quickbook/test/command_line_macro.gold    |     2 --                                      
   branches/release/tools/quickbook/test/cond_phrase.gold           |     2 --                                      
   branches/release/tools/quickbook/test/doc-info-1.gold            |    11 +++++++----                             
   branches/release/tools/quickbook/test/doc-info-1.quickbook       |     5 +++--                                   
   branches/release/tools/quickbook/test/escape.gold                |     2 --                                      
   branches/release/tools/quickbook/test/heading.gold               |     5 +----                                   
   branches/release/tools/quickbook/test/heading_1_6.gold           |     5 +----                                   
   branches/release/tools/quickbook/test/identifier_1_5.gold        |     5 +----                                   
   branches/release/tools/quickbook/test/identifier_1_6.gold        |     5 +----                                   
   branches/release/tools/quickbook/test/image_1_5.gold             |     2 --                                      
   branches/release/tools/quickbook/test/import.gold                |     2 --                                      
   branches/release/tools/quickbook/test/include_1_5.gold           |     2 --                                      
   branches/release/tools/quickbook/test/include_1_6-2.gold         |     2 --                                      
   branches/release/tools/quickbook/test/include_1_6.gold           |     2 --                                      
   branches/release/tools/quickbook/test/link-side-by-side.gold     |     2 --                                      
   branches/release/tools/quickbook/test/list_test.gold             |     2 --                                      
   branches/release/tools/quickbook/test/mismatched-brackets-1.gold |     2 --                                      
   branches/release/tools/quickbook/test/mismatched-brackets-2.gold |     2 --                                      
   branches/release/tools/quickbook/test/para-test.gold             |     2 --                                      
   branches/release/tools/quickbook/test/preformatted.gold          |     2 --                                      
   branches/release/tools/quickbook/test/quickbook-testing.jam      |     4 ++--                                    
   branches/release/tools/quickbook/test/section_1_4.gold           |     2 --                                      
   branches/release/tools/quickbook/test/section_1_5.gold           |     2 --                                      
   branches/release/tools/quickbook/test/simple_markup.gold         |     2 --                                      
   branches/release/tools/quickbook/test/table_1_5.gold             |     2 --                                      
   branches/release/tools/quickbook/test/template-section.gold      |     2 --                                      
   branches/release/tools/quickbook/test/templates.gold             |     2 --                                      
   branches/release/tools/quickbook/test/templates_1_4.gold         |     2 --                                      
   branches/release/tools/quickbook/test/templates_1_5.gold         |     2 --                                      
   branches/release/tools/quickbook/test/unicode-escape.gold        |     5 +----                                   
   branches/release/tools/quickbook/test/utf-8-bom.gold             |     5 +----                                   
   branches/release/tools/quickbook/test/utf-8.gold                 |     5 +----                                   
   branches/release/tools/quickbook/test/variablelist.gold          |     2 --                                      
   branches/release/tools/quickbook/test/xinclude.gold              |     2 --                                      
   branches/release/tools/quickbook/test/xml-escape_1_2.gold        |    11 ++++++++---                             
   branches/release/tools/quickbook/test/xml-escape_1_2.quickbook   |     5 +++--                                   
   branches/release/tools/quickbook/test/xml-escape_1_5.gold        |     5 +++++                                   
   branches/release/tools/quickbook/test/xml-escape_1_5.quickbook   |     1 +                                       
   48 files changed, 43 insertions(+), 140 deletions(-)
Modified: branches/release/tools/quickbook/Jamfile.v2
==============================================================================
--- branches/release/tools/quickbook/Jamfile.v2	(original)
+++ branches/release/tools/quickbook/Jamfile.v2	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -8,41 +8,11 @@
 #   http://www.boost.org/LICENSE_1_0.txt)
 #==============================================================================
 
-project quickbook
-    : requirements
-        <toolset>gcc:<c++-template-depth>300
-        <toolset>darwin:<c++-template-depth>300
-        <toolset>gcc:<cflags>-g0
-        <toolset>darwin:<cflags>-g0
+alias quickbook
+    : src//quickbook
     ;
 
-exe quickbook
-    :
-    detail/quickbook.cpp
-    detail/actions.cpp
-    detail/actions_class.cpp
-    detail/utils.cpp
-    detail/input_path.cpp
-    detail/post_process.cpp
-    detail/collector.cpp
-    detail/template_stack.cpp
-    detail/markups.cpp
-    /boost//program_options
-    /boost//filesystem
-    : #<define>QUICKBOOK_NO_DATES
-      # Still using 'normalize' which has been deprecated.
-      #<define>BOOST_FILESYSTEM_NO_DEPRECATED
-      <toolset>msvc:<cxxflags>/wd4355
-      <toolset>msvc:<cxxflags>/wd4511
-      <toolset>msvc:<cxxflags>/wd4512
-      <toolset>msvc:<cxxflags>/wd4701
-      <toolset>msvc:<cxxflags>/wd4702
-      <toolset>msvc:<cxxflags>/wd4244
-      <toolset>msvc:<cxxflags>/wd4267
-      <toolset>msvc:<cxxflags>/wd4800
-      <toolset>msvc:<define>_CRT_SECURE_NO_DEPRECATE
-      <toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE
-    ;
+explicit quickbook ;
 
 install dist-bin
     :
Deleted: branches/release/tools/quickbook/block.hpp
==============================================================================
--- branches/release/tools/quickbook/block.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,482 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2002 2004  2006Joel 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_BLOCK_HPP)
-#define BOOST_SPIRIT_QUICKBOOK_BLOCK_HPP
-
-#include "./detail/quickbook.hpp"
-#include "./detail/utils.hpp"
-#include "./phrase.hpp"
-#include <boost/spirit/include/classic_core.hpp>
-#include <boost/spirit/include/classic_confix.hpp>
-#include <boost/spirit/include/classic_chset.hpp>
-#include <boost/spirit/include/classic_assign_actor.hpp>
-#include <boost/spirit/include/classic_if.hpp>
-#include <boost/spirit/include/classic_symbols.hpp>
-
-namespace quickbook
-{
-    using namespace boost::spirit::classic;
-
-    template <typename Actions>
-    struct block_grammar : grammar<block_grammar<Actions> >
-    {
-        block_grammar(Actions& actions_, bool skip_initial_spaces = false)
-            : actions(actions_), skip_initial_spaces(skip_initial_spaces) { }
-
-        template <typename Scanner>
-        struct definition
-        {
-            definition(block_grammar const& self)
-                : no_eols(true)
-                , common(self.actions, no_eols)
-            {
-                using detail::var;
-                Actions& actions = self.actions;
-
-                if (self.skip_initial_spaces)
-                {
-                    start_ =
-                        *(blank_p | comment) >> blocks >> blank
-                        ;
-                }
-                else
-                {
-                    start_ =
-                        blocks >> blank
-                        ;
-                }
-
-                blocks =
-                   *(   block_markup
-                    |   code
-                    |   list                            [actions.list]
-                    |   hr                              [actions.hr]
-                    |   +eol
-                    |   paragraph                       [actions.inside_paragraph]
-                                                        [actions.write_paragraphs]
-                    )
-                    ;
-
-                space =
-                    *(space_p | comment)
-                    ;
-
-                blank =
-                    *(blank_p | comment)
-                    ;
-
-                eol = blank >> eol_p
-                    ;
-
-                phrase_end =
-                    ']' |
-                    if_p(var(no_eols))
-                    [
-                        eol >> *blank_p >> eol_p
-                                                        // Make sure that we don't go
-                    ]                                   // past a single block, except
-                    ;                                   // when preformatted.
-
-                hard_space =
-                    (eps_p - (alnum_p | '_')) >> space  // must not be preceded by
-                    ;                                   // alpha-numeric or underscore
-
-                comment =
-                    "[/" >> *(dummy_block | (anychar_p - ']')) >> ']'
-                    ;
-
-                dummy_block =
-                    '[' >> *(dummy_block | (anychar_p - ']')) >> ']'
-                    ;
-
-                hr =
-                    str_p("----")
-                    >> *(anychar_p - eol)
-                    >> +eol
-                    ;
-
-                block_markup =
-                        '[' >> space
-                    >>  (   begin_section
-                        |   end_section
-                        |   headings
-                        |   blurb
-                        |   blockquote
-                        |   admonition
-                        |   preformatted
-                        |   def_macro
-                        |   table
-                        |   variablelist
-                        |   xinclude
-                        |   include
-                        |   import
-                        |   template_
-                        )
-                    >>  (   (space >> ']' >> +eol)
-                        |   eps_p                       [actions.error]
-                        )
-                    ;
-                
-                element_id =
-                        ':'
-                    >>
-                        (
-                            if_p(qbk_since(105u))       [space]
-                        >>  (+(alnum_p | '_'))          [assign_a(actions.element_id)]
-                        |   eps_p                       [actions.element_id_warning]
-                                                        [assign_a(actions.element_id)]
-                        )
-                    | eps_p                             [assign_a(actions.element_id)]
-                    ;
-                
-                element_id_1_5 =
-                        if_p(qbk_since(105u)) [
-                            element_id
-                        ]
-                        .else_p [
-                            eps_p                       [assign_a(actions.element_id)]
-                        ]
-                        ;
-
-                element_id_1_6 =
-                        if_p(qbk_since(106u)) [
-                            element_id
-                        ]
-                        .else_p [
-                            eps_p                       [assign_a(actions.element_id)]
-                        ]
-                        ;
-
-                begin_section =
-                       "section"
-                    >> hard_space
-                    >> element_id
-                    >> space
-                    >> phrase                           [actions.begin_section]
-                    ;
-
-                end_section =
-                    str_p("endsect")                    [actions.end_section]
-                    ;
-
-                headings =
-                    h1 | h2 | h3 | h4 | h5 | h6 | h
-                    ;
-
-                h = "heading" >> hard_space >> element_id_1_6 >> space >> phrase   [actions.h];
-                h1 = "h1" >> hard_space >> element_id_1_6 >> space >> phrase       [actions.h1];
-                h2 = "h2" >> hard_space >> element_id_1_6 >> space >> phrase       [actions.h2];
-                h3 = "h3" >> hard_space >> element_id_1_6 >> space >> phrase       [actions.h3];
-                h4 = "h4" >> hard_space >> element_id_1_6 >> space >> phrase       [actions.h4];
-                h5 = "h5" >> hard_space >> element_id_1_6 >> space >> phrase       [actions.h5];
-                h6 = "h6" >> hard_space >> element_id_1_6 >> space >> phrase       [actions.h6];
-
-                static const bool true_ = true;
-                static const bool false_ = false;
-
-                inside_paragraph =
-                    phrase                              [actions.inside_paragraph]
-                    >> *(
-                        +eol >> phrase                  [actions.inside_paragraph]
-                    )
-                    ;
-
-                blurb =
-                    "blurb" >> hard_space
-                    >> inside_paragraph                 [actions.blurb]
-                    >> eps_p
-                    ;
-
-                blockquote =
-                    ':' >> blank >>
-                    inside_paragraph                    [actions.blockquote]
-                    ;
-
-                admonition =
-                    "warning" >> blank >>
-                    inside_paragraph                    [actions.warning]
-                    |
-                    "caution" >> blank >>
-                    inside_paragraph                    [actions.caution]
-                    |
-                    "important" >> blank >>
-                    inside_paragraph                    [actions.important]
-                    |
-                    "note" >> blank >>
-                    inside_paragraph                    [actions.note]
-                    |
-                    "tip" >> blank >>
-                    inside_paragraph                    [actions.tip]
-                    ;
-
-                preformatted =
-                    "pre" >> hard_space                 [assign_a(no_eols, false_)]
-                    >> !eol >> phrase                   [actions.preformatted]
-                    >> eps_p                            [assign_a(no_eols, true_)]
-                    ;
-
-                macro_identifier =
-                    +(anychar_p - (space_p | ']'))
-                    ;
-
-                def_macro =
-                    "def" >> hard_space
-                    >> macro_identifier                 [actions.macro_identifier]
-                    >> blank >> phrase                  [actions.macro_definition]
-                    ;
-
-                identifier =
-                    (alpha_p | '_') >> *(alnum_p | '_')
-                    ;
-
-                template_id =
-                    identifier | (punct_p - (ch_p('[') | ']'))
-                    ;
-
-                template_ =
-                    "template"
-                    >> hard_space
-                    >> template_id                      [assign_a(actions.template_identifier)]
-                                                        [clear_a(actions.template_info)]
-                    >>
-                    !(
-                        space >> '['
-                        >> *(
-                                space >> template_id    [push_back_a(actions.template_info)]
-                            )
-                        >> space >> ']'
-                    )
-                    >>  (   eps_p(*blank_p >> eol_p)    [assign_a(actions.template_block, true_)]
-                        |   eps_p                       [assign_a(actions.template_block, false_)]
-                        )
-                    >>  template_body                   [actions.template_body]
-                    ;
-
-                template_body =
-                   *(('[' >> template_body >> ']') | (anychar_p - ']'))
-                    >> eps_p(space >> ']')
-                    >> space
-                    ;
-
-                variablelist =
-                    "variablelist"
-                    >>  (eps_p(*blank_p >> eol_p) | hard_space)
-                    >>  (*(anychar_p - eol))            [assign_a(actions.table_title)]
-                    >>  +eol
-                    >>  *varlistentry
-                    >>  eps_p                           [actions.variablelist]
-                    ;
-
-                varlistentry =
-                    space
-                    >>  ch_p('[')                       [actions.start_varlistentry]
-                    >>
-                    (
-                        (
-                            varlistterm                 [actions.start_varlistitem]
-                            >>  (   +varlistitem
-                                |   eps_p               [actions.error]
-                                )                       [actions.end_varlistitem]
-                            >>  ch_p(']')               [actions.end_varlistentry]
-                            >>  space
-                        )
-                        | eps_p                         [actions.error]
-                    )
-                    ;
-
-                varlistterm =
-                    space
-                    >>  ch_p('[')                       [actions.start_varlistterm]
-                    >>
-                    (
-                        (
-                            phrase
-                            >>  ch_p(']')               [actions.end_varlistterm]
-                            >>  space
-                        )
-                        | eps_p                         [actions.error]
-                    )
-                    ;
-
-                varlistitem =
-                    space
-                    >>  ch_p('[')
-                    >>
-                    (
-                        (
-                            inside_paragraph
-                            >>  ch_p(']')
-                            >>  space
-                        )
-                        | eps_p                         [actions.error]
-                    )
-                    ;
-
-                table =
-                    "table"
-                    >>  (eps_p(*blank_p >> eol_p) | hard_space)
-                    >> element_id_1_5
-                    >>  (eps_p(*blank_p >> eol_p) | space)
-                    >>  (*(anychar_p - eol))            [assign_a(actions.table_title)]
-                    >>  +eol
-                    >>  *table_row
-                    >>  eps_p                           [actions.table]
-                    ;
-
-                table_row =
-                    space
-                    >>  ch_p('[')                       [actions.start_row]
-                    >>
-                    (
-                        (
-                            *table_cell
-                            >>  ch_p(']')               [actions.end_row]
-                            >>  space
-                        )
-                        | eps_p                         [actions.error]
-                    )
-                    ;
-
-                table_cell =
-                    space
-                    >>  ch_p('[')                       [actions.start_cell]
-                    >>
-                    (
-                        (
-                            inside_paragraph
-                            >>  ch_p(']')               [actions.end_cell]
-                            >>  space
-                        )
-                        | eps_p                         [actions.error]
-                    )
-                    ;
-
-                xinclude =
-                       "xinclude"
-                    >> hard_space
-                    >> (*(anychar_p -
-                            phrase_end))                [actions.xinclude]
-                    ;
-
-                import =
-                       "import"
-                    >> hard_space
-                    >> (*(anychar_p -
-                            phrase_end))                [actions.import]
-                    ;
-
-                include =
-                       "include"
-                    >> hard_space
-                    >>
-                   !(
-                        ':'
-                        >> (*((alnum_p | '_') - space_p))[assign_a(actions.include_doc_id)]
-                        >> space
-                    )
-                    >> (*(anychar_p -
-                            phrase_end))                [actions.include]
-                    ;
-
-                code =
-                    (
-                        code_line
-                        >> *(*blank_line >> code_line)
-                    )                                   [actions.code]
-                    >> *eol
-                    ;
-
-                code_line =
-                    blank_p >> *(anychar_p - eol_p) >> eol_p
-                    ;
-
-                blank_line =
-                    *blank_p >> eol_p
-                    ;
-
-                list =
-                    eps_p(ch_p('*') | '#') >>
-                   +(
-                        (*blank_p
-                        >> (ch_p('*') | '#'))           [actions.list_format]
-                        >> *blank_p
-                        >> list_item
-                    )                                   [actions.list_item]
-                    ;
-
-                list_item =
-                   *(   common
-                    |   (anychar_p -
-                            (   eol_p >> *blank_p >> eps_p(ch_p('*') | '#')
-                            |   (eol >> eol)
-                            )
-                        )                               [actions.plain_char]
-                    )
-                    >> +eol
-                    ;
-
-                paragraph_end_markups =
-                    "section", "endsect", "h1", "h2", "h3", "h4", "h5", "h6",
-                    "blurb", ":", "pre", "def", "table", "include", "xinclude",
-                    "variablelist", "import", "template", "warning", "caution",
-                    "important", "note", "tip", ":"
-                    ;
-
-                paragraph_end =
-                    '[' >> space >> paragraph_end_markups >> hard_space | eol >> *blank_p >> eol_p
-                    ;
-
-                paragraph =
-                   +(   common
-                    |   (anychar_p -                    // Make sure we don't go past
-                            paragraph_end               // a single block.
-                        )                               [actions.plain_char]
-                    )
-                    >> (eps_p('[') | +eol)
-                    ;
-
-                phrase =
-                   *(   common
-                    |   comment
-                    |   (anychar_p -
-                            phrase_end)                 [actions.plain_char]
-                    )
-                    ;
-            }
-
-            bool no_eols;
-
-            rule<Scanner>   start_, blocks, block_markup, code, code_line, blank_line,
-                            paragraph, space, blank, comment, headings, h, h1, h2,
-                            h3, h4, h5, h6, hr, blurb, blockquote, admonition,
-                            phrase, list, phrase_end, ordered_list, def_macro,
-                            macro_identifier, table, table_row, variablelist,
-                            varlistentry, varlistterm, varlistitem, table_cell,
-                            preformatted, list_item, begin_section, end_section,
-                            xinclude, include, hard_space, eol, paragraph_end,
-                            template_, template_id, template_formal_arg,
-                            template_body, identifier, dummy_block, import,
-                            inside_paragraph,
-                            element_id, element_id_1_5, element_id_1_6;
-
-            symbols<>       paragraph_end_markups;
-
-            phrase_grammar<Actions> common;
-
-            rule<Scanner> const&
-            start() const { return start_; }
-        };
-
-        Actions&   actions;
-        bool const skip_initial_spaces;
-    };
-}
-
-#endif // BOOST_SPIRIT_QUICKBOOK_BLOCK_HPP
Deleted: branches/release/tools/quickbook/code_snippet.hpp
==============================================================================
--- branches/release/tools/quickbook/code_snippet.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,238 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2006 Joel de Guzman
-    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_CODE_SNIPPET_HPP)
-#define BOOST_SPIRIT_QUICKBOOK_CODE_SNIPPET_HPP
-
-#include <boost/spirit/include/classic_core.hpp>
-#include <boost/spirit/include/classic_actor.hpp>
-#include <boost/bind.hpp>
-#include "./detail/template_stack.hpp"
-#include "./detail/actions.hpp"
-
-namespace quickbook
-{
-    struct code_snippet_actions
-    {
-        code_snippet_actions(std::vector<template_symbol>& storage,
-                                 std::string const& doc_id,
-                                 char const* source_type)
-            : callout_id(0)
-            , storage(storage)
-            , doc_id(doc_id)
-            , source_type(source_type)
-        {}
-
-        void pass_thru_char(char);
-        void pass_thru(iterator first, iterator last);
-        void escaped_comment(iterator first, iterator last);
-        void start_snippet(iterator first, iterator last);
-        void end_snippet(iterator first, iterator last);
-        void callout(iterator first, iterator last);
-        
-        void append_code();
-        void close_code();
-
-        struct snippet_data
-        {
-            snippet_data(std::string const& id, int callout_base_id)
-                : id(id)
-                , callout_base_id(callout_base_id)
-                , content()
-                , start_code(false)
-                , end_code(false)
-            {}
-
-            std::string id;
-            int callout_base_id;
-            std::string content;
-            bool start_code;
-            bool end_code;
-            std::vector<template_body> callouts;
-        };
-        
-        int callout_id;
-        std::stack<snippet_data> snippet_stack;
-        std::string code;
-        std::string id;
-        std::vector<template_symbol>& storage;
-        std::string const doc_id;
-        char const* const source_type;
-    };
-
-    struct python_code_snippet_grammar
-        : grammar<python_code_snippet_grammar>
-    {
-        typedef code_snippet_actions actions_type;
-  
-        python_code_snippet_grammar(actions_type & actions)
-            : actions(actions)
-        {}
-
-        template <typename Scanner>
-        struct definition
-        {
-            typedef code_snippet_actions actions_type;
-            
-            definition(python_code_snippet_grammar const& self)
-            {
-
-                actions_type& actions = self.actions;
-            
-                start_ = *code_elements;
-
-                identifier =
-                    (alpha_p | '_') >> *(alnum_p | '_')
-                    ;
-
-                code_elements =
-                        start_snippet               [boost::bind(&actions_type::start_snippet, &actions, _1, _2)]
-                    |   end_snippet                 [boost::bind(&actions_type::end_snippet, &actions, _1, _2)]
-                    |   escaped_comment
-                    |   ignore
-                    |   anychar_p                   [boost::bind(&actions_type::pass_thru_char, &actions, _1)]
-                    ;
-
-                start_snippet =
-                    "#[" >> *space_p
-                    >> identifier                   [assign_a(actions.id)]
-                    ;
-
-                end_snippet =
-                    str_p("#]")
-                    ;
-
-                ignore =
-                        *blank_p >> "#<-"
-                        >> (*(anychar_p - "#->"))
-                        >> "#->" >> *blank_p >> eol_p
-                    |   "\"\"\"<-\"\"\""
-                        >> (*(anychar_p - "\"\"\"->\"\"\""))
-                        >> "\"\"\"->\"\"\""
-                    |   "\"\"\"<-"
-                        >> (*(anychar_p - "->\"\"\""))
-                        >> "->\"\"\""
-                    ;
-
-                escaped_comment =
-                        *space_p >> "#`"
-                        >> ((*(anychar_p - eol_p))
-                            >> eol_p)               [boost::bind(&actions_type::escaped_comment, &actions, _1, _2)]
-                    |   *space_p >> "\"\"\"`"
-                        >> (*(anychar_p - "\"\"\""))    [boost::bind(&actions_type::escaped_comment, &actions, _1, _2)]
-                        >> "\"\"\""
-                    ;
-            }
-
-            rule<Scanner>
-                start_, identifier, code_elements, start_snippet, end_snippet,
-                escaped_comment, ignore;
-
-            rule<Scanner> const&
-            start() const { return start_; }
-        };
-
-        actions_type& actions;
-    };  
-
-    struct cpp_code_snippet_grammar
-        : grammar<cpp_code_snippet_grammar>
-    {
-        typedef code_snippet_actions actions_type;
-  
-        cpp_code_snippet_grammar(actions_type & actions)
-            : actions(actions)
-        {}
-
-        template <typename Scanner>
-        struct definition
-        {
-            definition(cpp_code_snippet_grammar const& self)
-            {
-                actions_type& actions = self.actions;
-            
-                start_ = *code_elements;
-
-                identifier =
-                    (alpha_p | '_') >> *(alnum_p | '_')
-                    ;
-
-                code_elements =
-                        start_snippet               [boost::bind(&actions_type::start_snippet, &actions, _1, _2)]
-                    |   end_snippet                 [boost::bind(&actions_type::end_snippet, &actions, _1, _2)]
-                    |   escaped_comment
-                    |   ignore
-                    |   line_callout
-                    |   inline_callout
-                    |   anychar_p                   [boost::bind(&actions_type::pass_thru_char, &actions, _1)]
-                    ;
-
-                start_snippet =
-                        "//[" >> *space_p
-                        >> identifier               [assign_a(actions.id)]
-                    |
-                        "/*[" >> *space_p
-                        >> identifier               [assign_a(actions.id)]
-                        >> *space_p >> "*/"
-                    ;
-
-                end_snippet =
-                    str_p("//]") | "/*]*/"
-                    ;
-
-                inline_callout =
-                    "/*<"
-                    >> *space_p
-                    >> (*(anychar_p - ">*/"))       [boost::bind(&actions_type::callout, &actions, _1, _2)]
-                    >> ">*/"
-                    ;
-
-                line_callout =
-                    "/*<<"
-                    >> *space_p
-                    >> (*(anychar_p - ">>*/"))      [boost::bind(&actions_type::callout, &actions, _1, _2)]
-                    >> ">>*/"
-                    >> *space_p
-                    ;
-
-                ignore =
-                        *blank_p >> "//<-"
-                        >> (*(anychar_p - "//->"))
-                        >> "//->" >> *blank_p >> eol_p
-                    |   "/*<-*/"
-                        >> (*(anychar_p - "/*->*/"))
-                        >> "/*->*/"
-                    |   "/*<-"
-                        >> (*(anychar_p - "->*/"))
-                        >> "->*/"
-                    ;
-
-                escaped_comment =
-                        *space_p >> "//`"
-                        >> ((*(anychar_p - eol_p))
-                            >> eol_p)               [boost::bind(&actions_type::escaped_comment, &actions, _1, _2)]
-                    |   *space_p >> "/*`"
-                        >> (*(anychar_p - "*/"))    [boost::bind(&actions_type::escaped_comment, &actions, _1, _2)]
-                        >> "*/"
-                    ;
-            }
-
-            rule<Scanner>
-	        start_, identifier, code_elements, start_snippet, end_snippet,
-                escaped_comment, inline_callout, line_callout, ignore;
-
-            rule<Scanner> const&
-            start() const { return start_; }
-        };
-
-        actions_type& actions;
-    };
-}
-
-#endif // BOOST_SPIRIT_QUICKBOOK_CODE_SNIPPET_HPP
-
Deleted: branches/release/tools/quickbook/detail/actions.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/actions.cpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,1864 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2002 2004 2006 Joel de Guzman
-    Copyright (c) 2004 Eric Niebler
-    Copyright (c) 2005 Thomas Guest
-    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)
-=============================================================================*/
-#include <numeric>
-#include <functional>
-#include <algorithm>
-#include <boost/bind.hpp>
-#include <boost/filesystem/v2/convenience.hpp>
-#include <boost/filesystem/v2/fstream.hpp>
-#include <boost/lexical_cast.hpp>
-#include <boost/algorithm/string/join.hpp>
-#include "./quickbook.hpp"
-#include "./actions.hpp"
-#include "./utils.hpp"
-#include "./markups.hpp"
-#include "./actions_class.hpp"
-#include "../block.hpp"
-#include "../phrase.hpp"
-#include "../code_snippet.hpp"
-
-namespace quickbook
-{
-    char const* quickbook_get_date = "__quickbook_get_date__";
-    char const* quickbook_get_time = "__quickbook_get_time__";
-
-    namespace {
-        std::string fully_qualified_id(std::string const& library_id,
-            std::string const& qualified_section_id,
-            std::string const& section_id)
-        {
-            std::string id = library_id;
-            if(!id.empty() && !qualified_section_id.empty()) id += '.';
-            id += qualified_section_id;
-            if(!id.empty() && !section_id.empty()) id += '.';
-            id += section_id;
-            return id;
-        }
-    }
-
-    // Handles line-breaks (DEPRECATED!!!)
-    void break_action::operator()(iterator first, iterator) const
-    {
-        boost::spirit::classic::file_position const pos = first.get_position();
-        detail::outwarn(pos.file,pos.line) << "in column:" << pos.column << ", "
-            << "[br] and \\n are deprecated" << ".\n";
-        phrase << break_mark;
-    }
-
-    void error_action::operator()(iterator first, iterator /*last*/) const
-    {
-        boost::spirit::classic::file_position const pos = first.get_position();
-        detail::outerr(pos.file,pos.line)
-            << "Syntax Error near column " << pos.column << ".\n";
-        ++error_count;
-    }
-
-    void phrase_action::operator()(iterator first, iterator last) const
-    {
-        std::string str;
-        phrase.swap(str);
-        out << pre << str << post;
-    }
-
-    void implicit_paragraph_action::operator()() const
-    {
-        std::string str;
-        phrase.swap(str);
-
-        // TODO: Use spirit to do this?
-
-        std::string::const_iterator
-            pos = str.begin(),
-            end = str.end();
-
-        while(pos != end && (
-            *pos == ' ' || *pos == '\t' || *pos == '\n' || *pos == '\r'))
-        {
-            ++pos;
-        }
-
-        if(pos != end) {
-            out << pre << str << post;
-        }
-    }
-
-    void header_action::operator()(iterator first, iterator last) const
-    {
-        std::string str;
-        phrase.swap(str);
-
-        if (qbk_version_n < 103) // version 1.2 and below
-        {
-            out << "<anchor id=\""
-                << section_id << '.'
-                << detail::make_identifier(str.begin(), str.end())
-                << "\" />"
-                << pre << str << post
-                ;
-        }
-        else // version 1.3 and above
-        {
-            std::string id =
-                !element_id.empty() ? element_id :
-                qbk_version_n >= 106 ? detail::make_identifier(first, last) :
-                detail::make_identifier(str.begin(), str.end());
-
-            std::string anchor =
-                fully_qualified_id(library_id, qualified_section_id, id);
-
-            out << "<anchor id=\"" << anchor << "\"/>"
-                << pre
-                << "<link linkend=\"" << anchor << "\">"
-                << str
-                << "</link>"
-                << post
-                ;
-        }
-    }
-
-    void generic_header_action::operator()(iterator first, iterator last) const
-    {
-        int level_ = section_level + 2;     // section_level is zero-based. We need to use a
-                                            // 0ne-based heading which is one greater
-                                            // than the current. Thus: section_level + 2.
-        if (level_ > 6)                     // The max is h6, clip it if it goes
-            level_ = 6;                     // further than that
-        std::string str;
-        phrase.swap(str);
-
-        std::string id =
-            !element_id.empty() ? element_id :
-            qbk_version_n >= 106 ? detail::make_identifier(first, last) :
-            detail::make_identifier(str.begin(), str.end());
-
-        std::string anchor =
-            fully_qualified_id(library_id, qualified_section_id, id);
-
-        out
-            << "<anchor id=\"" << anchor << "\"/>"
-            << "<bridgehead renderas=\"sect" << level_ << "\">"
-            << "<link linkend=\"" << anchor << "\">"
-            << str
-            << "</link>"
-            << "</bridgehead>"
-            ;
-    }
-
-    void simple_phrase_action::operator()(iterator first, iterator last) const
-    {
-        out << pre;
-        std::string str(first, last);
-        if (std::string const* ptr = find(macro, str.c_str()))
-        {
-            out << *ptr;
-        }
-        else
-        {
-            while (first != last)
-                detail::print_char(*first++, out.get());
-        }
-        out << post;
-    }
-
-    void cond_phrase_action_pre::operator()(iterator first, iterator last) const
-    {
-        std::string str(first, last);
-        conditions.push_back(find(macro, str.c_str()));
-        out.push(); // save the stream
-    }
-
-    void cond_phrase_action_post::operator()(iterator first, iterator last) const
-    {
-        bool symbol_found = conditions.back();
-        conditions.pop_back();
-
-        if (first == last || !symbol_found)
-        {
-            out.pop(); // restore the stream
-        }
-        else
-        {
-            std::string save;
-            out.swap(save);
-            out.pop(); // restore the stream
-            out << save; // print the body
-        }
-    }
-
-    void list_action::operator()(iterator first, iterator last) const
-    {
-        BOOST_ASSERT(!list_marks.empty()); // there must be at least one item in the stack
-        out << list_buffer.str();
-        list_buffer.clear();
-
-        while (!list_marks.empty())
-        {
-            char mark = list_marks.top().first;
-            list_marks.pop();
-            out << std::string((mark == '#') ? "\n</orderedlist>" : "\n</itemizedlist>");
-            if (list_marks.size() >= 1)
-                out << "</listitem>";
-        }
-
-        list_indent = -1; // reset
-    }
-
-    void list_format_action::operator()(iterator first, iterator last) const
-    {
-        int new_indent = 0;
-        while (first != last && (*first == ' ' || *first == '\t'))
-        {
-            char mark = *first++;
-            if (mark == ' ')
-            {
-                ++new_indent;
-            }
-            else // must be a tab
-            {
-                BOOST_ASSERT(mark == '\t');
-                // hardcoded tab to 4 for now
-                new_indent = ((new_indent + 4) / 4) * 4;
-            }
-        }
-
-        char mark = *first;
-        BOOST_ASSERT(mark == '#' || mark == '*'); // expecting a mark
-
-        if (list_indent == -1) // the very start
-        {
-            BOOST_ASSERT(new_indent == 0);
-        }
-
-        if (new_indent > list_indent)
-        {
-            list_indent = new_indent;
-            list_marks.push(mark_type(mark, list_indent));
-            if (list_marks.size() > 1)
-            {
-                // Make this new list a child of the previous list.
-                // The previous listelem has already ended so we erase
-                // "</listitem>" to accomodate this sub-list. We'll close
-                // the listelem later.
-
-                std::string str;
-                out.swap(str);
-                std::string::size_type pos = str.rfind("</listitem>");
-                BOOST_ASSERT(pos <= str.size());
-                str.erase(str.begin()+pos, str.end());
-                out << str;
-            }
-            out << std::string((mark == '#') ? "<orderedlist>\n" : "<itemizedlist>\n");
-        }
-
-        else if (new_indent < list_indent)
-        {
-            BOOST_ASSERT(!list_marks.empty());
-            list_indent = new_indent;
-
-            while (!list_marks.empty() && (list_indent < list_marks.top().second))
-            {
-                char mark = list_marks.top().first;
-                list_marks.pop();
-                out << std::string((mark == '#') ? "\n</orderedlist>" : "\n</itemizedlist>");
-                if (list_marks.size() >= 1)
-                    out << "</listitem>";
-            }
-        }
-
-        if (mark != list_marks.top().first) // new_indent == list_indent
-        {
-            boost::spirit::classic::file_position const pos = first.get_position();
-            detail::outerr(pos.file,pos.line)
-                << "Illegal change of list style near column " << pos.column << ".\n";
-            detail::outwarn(pos.file,pos.line)
-                << "Ignoring change of list style" << std::endl;
-            ++error_count;
-        }
-    }
-
-    void span::operator()(iterator first, iterator last) const
-    {
-        out << "<phrase role=\"" << name << "\">";
-        while (first != last)
-            detail::print_char(*first++, out.get());
-        out << "</phrase>";
-    }
-
-    void unexpected_char::operator()(iterator first, iterator last) const
-    {
-        boost::spirit::classic::file_position const pos = first.get_position();
-
-        detail::outwarn(pos.file, pos.line)
-            << "in column:" << pos.column
-            << ", unexpected character: " << std::string(first, last)
-            << "\n";
-
-        // print out an unexpected character
-        out << "<phrase role=\"error\">";
-        while (first != last)
-            detail::print_char(*first++, out.get());
-        out << "</phrase>";
-    }
-
-    void anchor_action::operator()(iterator first, iterator last) const
-    {
-        out << "<anchor id=\"";
-        while (first != last)
-            detail::print_char(*first++, out.get());
-        out << "\" />\n";
-    }
-
-    void do_macro_action::operator()(std::string const& str) const
-    {
-        if (str == quickbook_get_date)
-        {
-            char strdate[64];
-            strftime(strdate, sizeof(strdate), "%Y-%b-%d", current_time);
-            phrase << strdate;
-        }
-        else if (str == quickbook_get_time)
-        {
-            char strdate[64];
-            strftime(strdate, sizeof(strdate), "%I:%M:%S %p", current_time);
-            phrase << strdate;
-        }
-        else
-        {
-            phrase << str;
-        }
-    }
-
-    void space::operator()(char ch) const
-    {
-
-        detail::print_space(ch, out.get());
-    }
-
-    void space::operator()(iterator first, iterator last) const
-    {
-        while (first != last)
-            detail::print_space(*first++, out.get());
-    }
-
-    void pre_escape_back::operator()(iterator first, iterator last) const
-    {
-        escape_actions.phrase.push(); // save the stream
-    }
-
-    void post_escape_back::operator()(iterator first, iterator last) const
-    {
-        out << escape_actions.phrase.str();
-        escape_actions.phrase.pop(); // restore the stream
-    }
-    
-    std::string syntax_highlight::operator()(iterator first, iterator last) const
-    {
-        // print the code with syntax coloring
-        if (source_mode == "c++")
-        {
-            parse(first, last, cpp_p);
-        }
-        else if (source_mode == "python")
-        {
-            parse(first, last, python_p);
-        }
-        else if (source_mode == "teletype")
-        {
-            parse(first, last, teletype_p);
-        }
-        else
-        {
-            BOOST_ASSERT(0);
-        }
-
-        std::string str;
-        temp.swap(str);
-        
-        return str;
-    }
-
-    void code_action::operator()(iterator first, iterator last) const
-    {
-        // preprocess the code section to remove the initial indentation
-        std::string program(first, last);
-        detail::unindent(program);
-        if (program.size() == 0)
-            return; // Nothing left to do here. The program is empty.
-
-        iterator first_(program.begin(), program.end());
-        iterator last_(program.end(), program.end());
-        first_.set_position(first.get_position());
-
-        std::string save;
-        phrase.swap(save);
-
-        // print the code with syntax coloring
-        std::string str = syntax_p(first_, last_);
-
-        phrase.swap(save);
-
-        //
-        // We must not place a \n after the <programlisting> tag
-        // otherwise PDF output starts code blocks with a blank line:
-        //
-        out << "<programlisting>";
-        out << str;
-        out << "</programlisting>\n";
-    }
-
-    void inline_code_action::operator()(iterator first, iterator last) const
-    {
-        std::string save;
-        out.swap(save);
-
-        // print the code with syntax coloring
-        std::string str = syntax_p(first, last);
-
-        out.swap(save);
-
-        out << "<code>";
-        out << str;
-        out << "</code>";
-    }
-
-    void raw_char_action::operator()(char ch) const
-    {
-        phrase << ch;
-    }
-
-    void raw_char_action::operator()(iterator first, iterator /*last*/) const
-    {
-        phrase << *first;
-    }
-
-    void plain_char_action::operator()(char ch) const
-    {
-        detail::print_char(ch, phrase.get());
-    }
-
-    void plain_char_action::operator()(iterator first, iterator /*last*/) const
-    {
-        detail::print_char(*first, phrase.get());
-    }
-
-    void escape_unicode_action::operator()(iterator first, iterator last) const
-    {
-        while(first != last && *first == '0') ++first;
-
-        // Just ignore \u0000
-        // Maybe I should issue a warning?
-        if(first == last) return;
-        
-        std::string hex_digits(first, last);
-        
-        if(hex_digits.size() == 2 && *first > '0' && *first <= '7') {
-            using namespace std;
-            detail::print_char(strtol(hex_digits.c_str(), 0, 16), phrase.get());
-        }
-        else {
-            phrase << "&#x" << hex_digits << ";";
-        }
-    }
-
-    void attribute_action::operator()(iterator first, iterator last) const
-    {
-        boost::spirit::classic::file_position const pos = first.get_position();
-
-        if (!attributes.insert(
-                attribute_map::value_type(attribute_name, std::string(first, last))
-            ).second)
-        {
-            detail::outwarn(pos.file,pos.line)
-                << "Repeated attribute: " << attribute_name << ".\n";
-        }
-    }
-
-    void image_action::operator()(iterator, iterator) const
-    {
-        fs::path const img_path(image_fileref);
-        
-        attribute_map::iterator it = attributes.find("alt");
-        std::string alt_text = it != attributes.end() ? it->second : img_path.stem();
-        attributes.erase("alt");
-
-        attributes.insert(attribute_map::value_type("fileref", image_fileref));
-
-        if(img_path.extension() == ".svg")
-        {
-           //
-           // SVG's need special handling:
-           //
-           // 1) We must set the "format" attribute, otherwise
-           //    HTML generation produces code that will not display
-           //    the image at all.
-           // 2) We need to set the "contentwidth" and "contentdepth"
-           //    attributes, otherwise the image will be displayed inside
-           //    a tiny box with scrollbars (Firefox), or else cropped to
-           //    fit in a tiny box (IE7).
-           //
-           attributes.insert(attribute_map::value_type("format", "SVG"));
-           //
-           // Image paths are relative to the html subdirectory:
-           //
-           fs::path img;
-           if(img_path.root_path().empty())
-              img = "html" / img_path;  // relative path
-           else
-              img = img_path;   // absolute path
-           //
-           // Now load the SVG file:
-           //
-           std::string svg_text;
-           fs::ifstream fs(img);
-           char c;
-           while(fs.get(c) && fs.good())
-              svg_text.push_back(c);
-           //
-           // Extract the svg header from the file:
-           //
-           std::string::size_type a, b;
-           a = svg_text.find("<svg");
-           b = svg_text.find('>', a);
-           svg_text = (a == std::string::npos) ? "" : svg_text.substr(a, b - a);
-           //
-           // Now locate the "width" and "height" attributes
-           // and borrow their values:
-           //
-           a = svg_text.find("width");
-           a = svg_text.find('=', a);
-           a = svg_text.find('\"', a);
-           b = svg_text.find('\"', a + 1);
-           if(a != std::string::npos)
-           {
-              attributes.insert(attribute_map::value_type("contentwidth",
-                std::string(svg_text.begin() + a + 1, svg_text.begin() + b)));
-           }
-           a = svg_text.find("height");
-           a = svg_text.find('=', a);
-           a = svg_text.find('\"', a);
-           b = svg_text.find('\"', a + 1);
-           if(a != std::string::npos)
-           {
-              attributes.insert(attribute_map::value_type("contentdepth",
-                std::string(svg_text.begin() + a + 1, svg_text.begin() + b)));
-           }
-        }
-
-        phrase << "<inlinemediaobject>";
-
-        phrase << "<imageobject><imagedata";
-        
-        for(attribute_map::const_iterator
-            attr_first = attributes.begin(), attr_last  = attributes.end();
-            attr_first != attr_last; ++attr_first)
-        {
-            phrase << " " << attr_first->first << "=\"";
-
-            for(std::string::const_iterator
-                first = attr_first->second.begin(),
-                last  = attr_first->second.end();
-                first != last; ++first)
-            {
-                if (*first == '\\' && ++first == last) break;
-                detail::print_char(*first, phrase.get());
-            }
-
-            phrase << "\"";
-        }
-
-        phrase << "></imagedata></imageobject>";
-
-        // Also add a textobject -- use the basename of the image file.
-        // This will mean we get "alt" attributes of the HTML img.
-        phrase << "<textobject><phrase>";
-        detail::print_string(alt_text, phrase.get());
-        phrase << "</phrase></textobject>";
-
-        phrase << "</inlinemediaobject>";
-    }
-
-    void macro_identifier_action::operator()(iterator first, iterator last) const
-    {
-        actions.macro_id.assign(first, last);
-        actions.phrase.push(); // save the phrase
-    }
-
-    void macro_definition_action::operator()(iterator first, iterator last) const
-    {
-        actions.macro.add(
-            actions.macro_id.begin()
-          , actions.macro_id.end()
-          , actions.phrase.str());
-        actions.phrase.pop(); // restore the phrase
-    }
-
-    void template_body_action::operator()(iterator first, iterator last) const
-    {
-        if (!actions.templates.add(
-            template_symbol(actions.template_identifier, actions.template_info,
-                std::string(first, last), first.get_position(),
-                actions.template_block, &actions.templates.top_scope())))
-        {
-            boost::spirit::classic::file_position const pos = first.get_position();
-            detail::outerr(pos.file,pos.line)
-                << "Template Redefinition: " << actions.template_identifier << std::endl;
-            ++actions.error_count;
-        }
-
-        actions.template_identifier.clear();
-        actions.template_info.clear();
-    }
-
-    namespace
-    {
-        iterator find_bracket_end(iterator begin, iterator const& end)
-        {
-            unsigned int depth = 1;
-
-            while(depth > 0) {
-                char const* search_chars = "[]\\";
-                begin = std::find_first_of(begin, end, search_chars, search_chars + 3);
-                if(begin == end) return begin;
-
-                if(*begin == '\\')
-                {
-                    if(++begin == end) return begin;
-                    ++begin;
-                }
-                else
-                {
-                    depth += (*begin == '[') ? 1 : -1;
-                    ++begin;
-                }
-            }
-
-            return begin;
-        }
-
-        iterator find_first_seperator(iterator const& begin, iterator const& end)
-        {
-            if(qbk_version_n < 105) {
-                char const* whitespace = " \t\r\n";
-                return std::find_first_of(begin, end, whitespace, whitespace + 4);
-            }
-            else {
-                iterator pos = begin;
-
-                while(true)
-                {
-                    char const* search_chars = " \t\r\n\\[";
-                    pos = std::find_first_of(pos, end, search_chars, search_chars + 6);
-                    if(pos == end) return pos;
-
-                    switch(*pos)
-                    {
-                    case '[':
-                        pos = find_bracket_end(++pos, end);
-                        break;
-                    case '\\':
-                        if(++pos == end) return pos;
-                        ++pos;
-                        break;
-                    default:
-                        return pos;
-                    }
-                }
-            }
-        }
-    
-        bool break_arguments(
-            std::vector<template_body>& args
-          , std::vector<std::string> const& params
-          , boost::spirit::classic::file_position const& pos
-        )
-        {
-            // Quickbook 1.4-: If there aren't enough parameters seperated by
-            //                 '..' then seperate the last parameter using
-            //                 whitespace.
-            // Quickbook 1.5+: If '..' isn't used to seperate the parameters
-            //                 then use whitespace to separate them
-            //                 (2 = template name + argument).
-
-            if (qbk_version_n < 105 || args.size() == 1)
-            {
-           
-                while (args.size() < params.size())
-                {
-                    // Try to break the last argument at the first space found
-                    // and push it into the back of args. Do this
-                    // recursively until we have all the expected number of
-                    // arguments, or if there are no more spaces left.
-
-                    template_body& body = args.back();
-                    iterator begin(body.content.begin(), body.content.end(), body.position.file);
-                    iterator end(body.content.end(), body.content.end());
-                    
-                    iterator l_pos = find_first_seperator(begin, end);
-                    if (l_pos == end)
-                        break;
-                    char const* whitespace = " \t\r\n";
-                    char const* whitespace_end = whitespace + 4;
-                    iterator r_pos = l_pos;
-                    while(r_pos != end && std::find(whitespace, whitespace_end, *r_pos) != whitespace_end) ++r_pos;
-                    if (r_pos == end)
-                        break;
-                    template_body second(std::string(r_pos, end), begin.get_position(), false);
-                    body.content = std::string(begin, l_pos);
-                    args.push_back(second);
-                }
-            }
-
-            if (args.size() != params.size())
-            {
-                detail::outerr(pos.file, pos.line)
-                    << "Invalid number of arguments passed. Expecting: "
-                    << params.size()
-                    << " argument(s), got: "
-                    << args.size()
-                    << " argument(s) instead."
-                    << std::endl;
-                return false;
-            }
-            return true;
-        }
-
-        std::pair<bool, std::vector<std::string>::const_iterator>
-        get_arguments(
-            std::vector<template_body>& args
-          , std::vector<std::string> const& params
-          , template_scope const& scope
-          , boost::spirit::classic::file_position const& pos
-          , quickbook::actions& actions
-        )
-        {
-            std::vector<template_body>::const_iterator arg = args.begin();
-            std::vector<std::string>::const_iterator tpl = params.begin();
-            std::vector<std::string> empty_params;
-
-
-            // Store each of the argument passed in as local templates:
-            while (arg != args.end())
-            {
-                if (!actions.templates.add(
-                        template_symbol(*tpl, empty_params, arg->content,
-                            arg->position, arg->is_block, &scope)))
-                {
-                    detail::outerr(pos.file,pos.line)
-                        << "Duplicate Symbol Found" << std::endl;
-                    ++actions.error_count;
-                    return std::make_pair(false, tpl);
-                }
-                ++arg; ++tpl;
-            }
-            return std::make_pair(true, tpl);
-        }
-        
-        bool parse_template(
-            template_body const& body
-          , bool escape
-          , std::string& result
-          , quickbook::actions& actions
-        )
-        {
-            // How do we know if we are to parse the template as a block or
-            // a phrase? We apply a simple heuristic: if the body starts with
-            // a newline, then we regard it as a block, otherwise, we parse
-            // it as a phrase.
-            //
-            // Note: this is now done in the grammar.
-
-            if (escape)
-            {
-                //  escape the body of the template
-                //  we just copy out the literal body
-                result = body.content;
-                return true;
-            }
-            else if (!body.is_block)
-            {
-                simple_phrase_grammar<quickbook::actions> phrase_p(actions);
-
-                //  do a phrase level parse
-                iterator first(body.content.begin(), body.content.end(), body.position);
-                iterator last(body.content.end(), body.content.end());
-                bool r = boost::spirit::classic::parse(first, last, phrase_p).full;
-                actions.phrase.swap(result);
-                return r;
-            }
-            else
-            {
-                block_grammar<quickbook::actions> block_p(actions, true);
-
-                //  do a block level parse
-                //  ensure that we have enough trailing newlines to eliminate
-                //  the need to check for end of file in the grammar.
-                
-                std::string content = body.content + "\n\n";
-                iterator first(content.begin(), content.end(), body.position);
-                iterator last(content.end(), content.end());
-                bool r = boost::spirit::classic::parse(first, last, block_p).full;
-                actions.inside_paragraph();
-                actions.out.swap(result);
-                return r;
-            }
-        }
-    }
-
-    namespace detail
-    {
-        int callout_id = 0;
-    }
-
-    void template_arg_action::operator()(iterator first, iterator last) const
-    {
-        actions.template_args.push_back(
-            template_body(
-                std::string(first, last),
-                first.get_position(),
-                actions.template_block));
-    }
-
-    void do_template_action::operator()(iterator first, iterator) const
-    {
-        // Get the arguments and clear values stored in action.
-
-        std::vector<template_body> args;
-        std::string identifier;
-        std::swap(args, actions.template_args);
-        std::swap(identifier, actions.template_identifier);
-        boost::spirit::classic::file_position const pos = first.get_position();
-
-        ++actions.template_depth;
-        if (actions.template_depth > actions.max_template_depth)
-        {
-            detail::outerr(pos.file,pos.line)
-                << "Infinite loop detected" << std::endl;
-            --actions.template_depth;
-            ++actions.error_count;
-            return;
-        }
-
-        // The template arguments should have the scope that the template was
-        // called from, not the template's own scope.
-        //
-        // Note that for quickbook 1.4- this value is just ignored when the
-        // arguments are expanded.
-        template_scope const& call_scope = actions.templates.top_scope();
-
-        template_symbol const* symbol = actions.templates.find(identifier);
-        BOOST_ASSERT(symbol);
-            
-        std::string result;
-        actions.push(); // scope the actions' states
-        {
-            // Store the current section level so that we can ensure that
-            // [section] and [endsect] tags in the template are balanced.
-            actions.min_section_level = actions.section_level;
-
-            // 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.templates.set_parent_scope(*symbol->parent);
-
-            ///////////////////////////////////
-            // Initialise the arguments
-            
-            if (!symbol->callout)
-            {
-                // Break the arguments for a template
-            
-                if (!break_arguments(args, symbol->params, pos))
-                {
-                    actions.pop(); // restore the actions' states
-                    --actions.template_depth;
-                    ++actions.error_count;
-                    return;
-                }
-            }
-            else
-            {
-                if (!args.empty())
-                {
-                    detail::outerr(pos.file, pos.line)
-                        << "Arguments for code snippet."
-                        <<std::endl;
-                    ++actions.error_count;
-
-                    args.clear();
-                }
-
-                unsigned int size = symbol->params.size();
-
-                for(unsigned int i = 0; i < size; ++i)
-                {
-                    std::string callout_id = actions.doc_id +
-                        boost::lexical_cast<std::string>(detail::callout_id + i);
-
-                    std::string code;
-                    code += "'''";
-                    code += "<co id=\"" + callout_id + "co\" ";
-                    code += "linkends=\"" + callout_id + "\" />";
-                    code += "'''";
-
-                    args.push_back(template_body(code, first.get_position(), false));
-                }
-            }
-
-            ///////////////////////////////////
-            // Prepare the arguments as local templates
-            bool get_arg_result;
-            std::vector<std::string>::const_iterator tpl;
-            boost::tie(get_arg_result, tpl) =
-                get_arguments(args, symbol->params,
-                    call_scope, pos, actions);
-
-            if (!get_arg_result)
-            {
-                actions.pop(); // restore the actions' states
-                --actions.template_depth;
-                return;
-            }
-
-            ///////////////////////////////////
-            // parse the template body:
-
-            if (!parse_template(symbol->body, actions.template_escape, result, actions))
-            {
-                boost::spirit::classic::file_position const pos = first.get_position();
-                detail::outerr(pos.file,pos.line)
-                    << "Expanding "
-                    << (symbol->body.is_block ? "block" : "phrase")
-                    << " template: " << symbol->identifier << std::endl
-                    << std::endl
-                    << "------------------begin------------------" << std::endl
-                    << symbol->body.content
-                    << "------------------end--------------------" << std::endl
-                    << std::endl;
-                actions.pop(); // restore the actions' states
-                --actions.template_depth;
-                ++actions.error_count;
-                return;
-            }
-
-            if (actions.section_level != actions.min_section_level)
-            {
-                boost::spirit::classic::file_position const pos = first.get_position();
-                detail::outerr(pos.file,pos.line)
-                    << "Mismatched sections in template " << identifier << std::endl;
-                actions.pop(); // restore the actions' states
-                --actions.template_depth;
-                ++actions.error_count;
-                return;
-            }
-        }
-
-        actions.pop(); // restore the actions' states
-
-        if(symbol->callout && symbol->callouts.size() > 0)
-        {
-            result += "<calloutlist>";
-            BOOST_FOREACH(template_body const& c, symbol->callouts)
-            {
-                std::string callout_id = actions.doc_id +
-                    boost::lexical_cast<std::string>(detail::callout_id++);
-
-                std::string callout_value;
-                actions.push();
-                bool r = parse_template(c, false, callout_value, actions);
-                actions.pop();
-
-                if(!r)
-                {
-                    detail::outerr(c.position.file, c.position.line)
-                        << "Expanding callout." << std::endl;
-                    ++actions.error_count;
-                    return;
-                }
-                
-                result += "<callout arearefs=\"" + callout_id + "co\" ";
-                result += "id=\"" + callout_id + "\">";
-                result += callout_value;
-                result += "</callout>";
-            }
-            result += "</calloutlist>";
-        }
-
-        if(symbol->body.is_block) {
-            actions.inside_paragraph();
-            actions.temp_para << result; // print it!!!
-        }
-        else {
-            actions.phrase << result; // print it!!!
-        }
-        --actions.template_depth;
-    }
-
-    void link_action::operator()(iterator first, iterator last) const
-    {
-        iterator save = first;
-        phrase << tag;
-        while (first != last)
-            detail::print_char(*first++, phrase.get());
-        phrase << "\">";
-
-        // Yes, it is safe to dereference last here. When we
-        // reach here, *last is certainly valid. We test if
-        // *last == ']'. In which case, the url is the text.
-        // Example: [@http://spirit.sourceforge.net/]
-
-        if (*last == ']')
-        {
-            first = save;
-            while (first != last)
-                detail::print_char(*first++, phrase.get());
-        }
-    }
-
-    void variablelist_action::operator()(iterator, iterator) const
-    {
-        actions.out << "<variablelist>\n";
-
-        actions.out << "<title>";
-        std::string::iterator first = actions.table_title.begin();
-        std::string::iterator last = actions.table_title.end();
-        while (first != last)
-            detail::print_char(*first++, actions.out.get());
-        actions.out << "</title>\n";
-
-        std::string str;
-        actions.phrase.swap(str);
-        actions.out << str;
-
-        actions.out << "</variablelist>\n";
-        actions.table_span = 0;
-        actions.table_header.clear();
-        actions.table_title.clear();
-    }
-
-    void start_varlistitem_action::operator()() const
-    {
-        phrase << start_varlistitem_;
-        phrase.push();
-    }
-
-    void end_varlistitem_action::operator()() const
-    {
-        std::string str;
-        temp_para.swap(str);
-        phrase.pop();
-        phrase << str << end_varlistitem_;
-    }
-
-    void table_action::operator()(iterator, iterator) const
-    {
-        std::string::iterator first = actions.table_title.begin();
-        std::string::iterator last = actions.table_title.end();
-        bool has_title = first != last;
-        
-        std::string table_id;
-        if(qbk_version_n >= 105) {
-            if(!actions.element_id.empty()) {
-                table_id = fully_qualified_id(actions.doc_id,
-                    actions.qualified_section_id, actions.element_id);
-            }
-            else if(has_title) {
-                table_id = fully_qualified_id(actions.doc_id,
-                    actions.qualified_section_id,
-                    detail::make_identifier(first, last));
-            }
-        }
-
-        if (has_title)
-        {
-            actions.out << "<table frame=\"all\"";
-            if(!table_id.empty())
-                actions.out << " id=\"" << table_id << "\"";
-            actions.out << ">\n";
-            actions.out << "<title>";
-            while (first != last)
-                detail::print_char(*first++, actions.out.get());
-            actions.out << "</title>";
-        }
-        else
-        {
-            actions.out << "<informaltable frame=\"all\"";
-            if(!table_id.empty())
-                actions.out << " id=\"" << table_id << "\"";
-            actions.out << ">\n";
-        }
-
-        actions.out << "<tgroup cols=\"" << actions.table_span << "\">\n";
-
-        if (!actions.table_header.empty())
-        {
-            actions.out << "<thead>" << actions.table_header << "</thead>\n";
-        }
-
-        actions.out << "<tbody>\n";
-
-        std::string str;
-        actions.phrase.swap(str);
-        actions.out << str;
-
-        actions.out << "</tbody>\n"
-                     << "</tgroup>\n";
-
-        if (has_title)
-        {
-            actions.out << "</table>\n";
-        }
-        else
-        {
-            actions.out << "</informaltable>\n";
-        }
-
-        actions.table_span = 0;
-        actions.table_header.clear();
-        actions.table_title.clear();
-    }
-
-    void start_row_action::operator()(char) const
-    {
-        // the first row is the header
-        if (header.empty() && !phrase.str().empty())
-        {
-            phrase.swap(header);
-        }
-
-        phrase << start_row_;
-        span = 0;
-    }
-
-    void start_row_action::operator()(iterator f, iterator) const
-    {
-        (*this)(*f);
-    }
-
-    void start_col_action::operator()(char) const
-    {
-        phrase << start_cell_;
-        phrase.push();
-        ++span;
-    }
-
-    void end_col_action::operator()(char) const
-    {
-        std::string str;
-        temp_para.swap(str);
-        phrase.pop();
-        phrase << str << end_cell_;
-    }
-
-    void begin_section_action::operator()(iterator first, iterator last) const
-    {
-        section_id = element_id.empty() ?
-            detail::make_identifier(first, last) :
-            element_id;
-
-        if (section_level != 0)
-            qualified_section_id += '.';
-        else
-            BOOST_ASSERT(qualified_section_id.empty());
-        qualified_section_id += section_id;
-        ++section_level;
-
-        if (qbk_version_n < 103) // version 1.2 and below
-        {
-            out << "\n<section id=\""
-                << library_id << "." << section_id << "\">\n";
-        }
-        else // version 1.3 and above
-        {
-            out << "\n<section id=\"" << library_id
-                << "." << qualified_section_id << "\">\n";
-        }
-        std::string str;
-        phrase.swap(str);
-
-        if (qbk_version_n < 103) // version 1.2 and below
-        {
-            out << "<title>" << str << "</title>\n";
-        }
-        else // version 1.3 and above
-        {
-            out << "<title>"
-                << "<link linkend=\"" << library_id
-                    << "." << qualified_section_id << "\">"
-                << str
-                << "</link>"
-                << "</title>\n"
-                ;
-        }
-    }
-
-    void end_section_action::operator()(iterator first, iterator last) const
-    {
-        if (section_level <= min_section_level)
-        {
-            boost::spirit::classic::file_position const pos = first.get_position();
-            detail::outerr(pos.file,pos.line)
-                << "Mismatched [endsect] near column " << pos.column << ".\n";
-            ++error_count;
-            
-            return;
-        }
-
-        --section_level;
-        out << "</section>";
-
-        if (section_level == 0)
-        {
-            qualified_section_id.clear();
-        }
-        else
-        {
-            std::string::size_type const n =
-                qualified_section_id.find_last_of('.');
-            qualified_section_id.erase(n, std::string::npos);
-        }
-    }
-    
-    void element_id_warning_action::operator()(iterator first, iterator) const
-    {
-        boost::spirit::classic::file_position const pos = first.get_position();
-        detail::outwarn(pos.file,pos.line) << "Empty id.\n";        
-    }
-
-    fs::path path_difference(fs::path const& outdir, fs::path const& path)
-    {
-        fs::path outtmp, temp;
-        fs::path::iterator out = outdir.begin(), file = path.begin();
-        for(; out != outdir.end() && file != path.end(); ++out, ++file)
-        {
-            if(!fs::equivalent(outtmp /= *out, temp /= *file))
-                break;
-        }
-        out = (out == outdir.begin()) ? outdir.end() : out;
-
-        fs::path result = fs::path();
-        for(; out != outdir.end(); ++out)
-            if(*out != ".") result /= "..";
-        std::divides<fs::path> concat;
-        return std::accumulate(file, path.end(), result, concat);
-    }
-
-    fs::path calculate_relative_path(
-        iterator first, iterator last, quickbook::actions& actions)
-    {
-        // Given a source file and the current filename, calculate the
-        // path to the source file relative to the output directory.
-        fs::path path(std::string(first, last));
-        if (!path.is_complete())
-        {
-            fs::path infile = fs::complete(actions.filename).normalize();
-            path = (infile.parent_path() / path).normalize();
-            fs::path outdir = fs::complete(actions.outdir).normalize();
-            path = path_difference(outdir, path);
-        }
-        return path;
-    }
-
-    void xinclude_action::operator()(iterator first, iterator last) const
-    {
-        fs::path path = calculate_relative_path(first, last, actions);
-        out << "\n<xi:include href=\"";
-        detail::print_string(detail::escape_uri(path.string()), out.get());
-        out << "\" />\n";
-    }
-
-    void code_snippet_actions::append_code()
-    {
-        if(snippet_stack.empty()) return;
-        snippet_data& snippet = snippet_stack.top();
-    
-        if (!code.empty())
-        {
-            detail::unindent(code); // remove all indents
-
-            if(snippet.content.empty())
-            {
-                snippet.start_code = true;
-            }
-            else if(!snippet.end_code)
-            {
-                snippet.content += "\n\n";
-                snippet.content += source_type;
-                snippet.content += "```\n";
-            }
-            
-            snippet.content += code;
-            snippet.end_code = true;
-
-            code.clear();
-        }
-    }
-
-    void code_snippet_actions::close_code()
-    {
-        if(snippet_stack.empty()) return;
-        snippet_data& snippet = snippet_stack.top();
-    
-        if(snippet.end_code)
-        {
-            snippet.content += "```\n\n";
-            snippet.end_code = false;
-        }
-    }
-
-    void code_snippet_actions::pass_thru(iterator first, iterator last)
-    {
-        if(snippet_stack.empty()) return;
-        code += *first;
-    }
-
-    void code_snippet_actions::pass_thru_char(char c)
-    {
-        if(snippet_stack.empty()) return;
-        code += c;
-    }
-
-    void code_snippet_actions::callout(iterator first, iterator last)
-    {
-        if(snippet_stack.empty()) return;
-        code += "``[[callout" + boost::lexical_cast<std::string>(callout_id) + "]]``";
-    
-        snippet_stack.top().callouts.push_back(
-            template_body(std::string(first, last), first.get_position(), true));
-        ++callout_id;
-    }
-
-    void code_snippet_actions::escaped_comment(iterator first, iterator last)
-    {
-        if(snippet_stack.empty()) return;
-        snippet_data& snippet = snippet_stack.top();
-        append_code();
-        close_code();
-
-        std::string temp(first, last);
-        detail::unindent(temp); // remove all indents
-        if (temp.size() != 0)
-        {
-            snippet.content += "\n" + temp; // add a linebreak to allow block markups
-        }
-    }
-
-    void code_snippet_actions::start_snippet(iterator first, iterator last)
-    {
-        append_code();
-        snippet_stack.push(snippet_data(id, callout_id));
-        id.clear();
-    }
-
-    void code_snippet_actions::end_snippet(iterator first, iterator last)
-    {
-        // TODO: Error?
-        if(snippet_stack.empty()) return;
-
-        append_code();
-
-        snippet_data snippet = snippet_stack.top();
-        snippet_stack.pop();
-
-        std::string body;
-        if(snippet.start_code) {
-            body += "\n\n";
-            body += source_type;
-            body += "```\n";
-        }
-        body += snippet.content;
-        if(snippet.end_code) {
-            body += "```\n\n";
-        }
-        
-        std::vector<std::string> params;
-        for (size_t i = 0; i < snippet.callouts.size(); ++i)
-        {
-            params.push_back("[callout" + boost::lexical_cast<std::string>(snippet.callout_base_id + i) + "]");
-        }
-        
-        // TODO: Save position in start_snippet
-        template_symbol symbol(snippet.id, params, body, first.get_position(), true);
-        symbol.callout = true;
-        symbol.callouts = snippet.callouts;
-        storage.push_back(symbol);
-
-        // Merge the snippet into its parent
-
-        if(!snippet_stack.empty())
-        {
-            snippet_data& next = snippet_stack.top();
-            if(!snippet.content.empty()) {
-                if(!snippet.start_code) {
-                    close_code();
-                }
-                else if(!next.end_code) {
-                    next.content += "\n\n";
-                    next.content += source_type;
-                    next.content += "```\n";
-                }
-                
-                next.content += snippet.content;
-                next.end_code = snippet.end_code;
-            }
-            
-            next.callouts.insert(next.callouts.end(), snippet.callouts.begin(), snippet.callouts.end());
-        }
-    }
-
-    int load_snippets(
-        std::string const& file
-      , std::vector<template_symbol>& storage   // snippets are stored in a
-                                                // vector of template_symbols
-      , std::string const& extension
-      , std::string const& doc_id)
-    {
-        std::string code;
-        int err = detail::load(file, code);
-        if (err != 0)
-            return err; // return early on error
-
-        typedef position_iterator<std::string::const_iterator> iterator_type;
-        iterator_type first(code.begin(), code.end(), file);
-        iterator_type last(code.end(), code.end());
-
-        size_t fname_len = file.size();
-        bool is_python = fname_len >= 3
-            && file[--fname_len]=='y' && file[--fname_len]=='p' && file[--fname_len]=='.';
-        code_snippet_actions a(storage, doc_id, is_python ? "[python]" : "[c++]");
-        // TODO: Should I check that parse succeeded?
-        if(is_python) {
-            boost::spirit::classic::parse(first, last, python_code_snippet_grammar(a));
-        }
-        else {
-            boost::spirit::classic::parse(first, last, cpp_code_snippet_grammar(a));
-        }
-
-        return 0;
-    }
-
-    namespace
-    {
-        fs::path include_search(fs::path const & current, std::string const & name)
-        {
-            fs::path path(name);
-
-            // If the path is relative, try and resolve it.
-            if (!path.is_complete())
-            {
-                // See if it can be found locally first.
-                if (fs::exists(current / path))
-                {
-                    return current / path;
-                }
-
-                // Search in each of the include path locations.
-                BOOST_FOREACH(std::string const & p, include_path)
-                {
-                    fs::path full(p);
-                    full /= path;
-                    if (fs::exists(full))
-                    {
-                        return full;
-                    }
-                }
-            }
-
-            return path;
-        }
-    }
-
-    void import_action::operator()(iterator first, iterator last) const
-    {
-        fs::path path = include_search(actions.filename.parent_path(), std::string(first,last));
-        std::string ext = path.extension();
-        std::vector<template_symbol> storage;
-        actions.error_count +=
-            load_snippets(path.string(), storage, ext, actions.doc_id);
-
-        BOOST_FOREACH(template_symbol& ts, storage)
-        {
-            std::string tname = ts.identifier;
-            ts.parent = &actions.templates.top_scope();
-            if (!actions.templates.add(ts))
-            {
-                boost::spirit::classic::file_position const pos = ts.body.position;
-                detail::outerr(pos.file, pos.line)
-                    << "Template Redefinition: " << tname << std::endl;
-                ++actions.error_count;
-            }
-        }
-    }
-
-    void include_action::operator()(iterator first, iterator last) const
-    {
-        fs::path filein = include_search(actions.filename.parent_path(), std::string(first,last));
-        std::string doc_type, doc_id, doc_dirname, doc_last_revision;
-
-        // swap the filenames
-        std::swap(actions.filename, filein);
-
-        // save the doc info strings
-        if(qbk_version_n >= 106) {
-            doc_type = actions.doc_type;
-            doc_id = actions.doc_id;
-            doc_dirname = actions.doc_dirname;
-            doc_last_revision = actions.doc_last_revision;
-        }
-        else {
-            actions.doc_type.swap(doc_type);
-            actions.doc_id.swap(doc_id);
-            actions.doc_dirname.swap(doc_dirname);
-            actions.doc_last_revision.swap(doc_last_revision);
-        }
-        
-        // save the version info
-        unsigned qbk_major_version_store = qbk_major_version;
-        unsigned qbk_minor_version_store = qbk_minor_version;
-        unsigned qbk_version_n_store = qbk_version_n;
-
-        // scope the macros
-        string_symbols macro = actions.macro;
-        // scope the templates
-        //~ template_symbols templates = actions.templates; $$$ fixme $$$
-
-        // if an id is specified in this include (as in [include:id foo.qbk])
-        // then use it as the doc_id.
-        if (!actions.include_doc_id.empty())
-        {
-            actions.doc_id = actions.include_doc_id;
-            actions.include_doc_id.clear();
-        }
-
-        // update the __FILENAME__ macro
-        *boost::spirit::classic::find(actions.macro, "__FILENAME__") = actions.filename.file_string();
-
-        // parse the file
-        quickbook::parse(actions.filename.file_string().c_str(), actions, true);
-
-        // restore the values
-        std::swap(actions.filename, filein);
-
-        actions.doc_type.swap(doc_type);
-        actions.doc_id.swap(doc_id);
-        actions.doc_dirname.swap(doc_dirname);
-        actions.doc_last_revision.swap(doc_last_revision);
-        
-        if(qbk_version_n >= 106 || qbk_version_n_store >= 106)
-        {
-            qbk_major_version = qbk_major_version_store;
-            qbk_minor_version = qbk_minor_version_store;
-            qbk_version_n = qbk_version_n_store;
-        }
-
-        // restore the macros
-        actions.macro = macro;
-        // restore the templates
-        //~ actions.templates = templates; $$$ fixme $$$
-    }
-
-    void xml_author::operator()(std::pair<std::string, std::string> const& author) const
-    {
-        out << "      <author>\n"
-            << "        <firstname>";
-        detail::print_string(author.first, out.get());
-        out << "</firstname>\n"
-            << "        <surname>";
-        detail::print_string(author.second, out.get());
-        out << "</surname>\n"
-            << "      </author>\n";
-    }
-
-    void xml_copyright::operator()(std::pair<std::vector<std::string>, std::string> const& copyright) const
-    {
-        out << "\n" << "    <copyright>\n";
-
-        for_each(
-            copyright.first.begin()
-          , copyright.first.end()
-          , xml_year(out));
-
-        out << "      <holder>";
-        detail::print_string(copyright.second, out.get());
-        out << "</holder>\n"
-            << "    </copyright>\n"
-            << "\n"
-        ;
-    }
-
-    void xml_year::operator()(std::string const &year) const
-    {
-        out << "      <year>" << year << "</year>\n";
-    }
-
-    static void write_document_title(collector& out, quickbook::actions& actions);
-    static void write_document_info(collector& out, quickbook::actions& actions);
-
-    void pre(collector& out, quickbook::actions& actions, bool ignore_docinfo)
-    {
-        // The doc_info in the file has been parsed. Here's what we'll do
-        // *before* anything else.
-
-        if (actions.doc_id.empty())
-            actions.doc_id = detail::make_identifier(
-                actions.doc_title.begin(),actions.doc_title.end());
-
-        if (actions.doc_dirname.empty() && actions.doc_type == "library")
-            actions.doc_dirname = actions.doc_id;
-
-        if (actions.doc_last_revision.empty())
-        {
-            // default value for last-revision is now
-
-            char strdate[64];
-            strftime(
-                strdate, sizeof(strdate),
-                (debug_mode ?
-                    "DEBUG MODE Date: %Y/%m/%d %H:%M:%S $" :
-                    "$" /* prevent CVS substitution */ "Date: %Y/%m/%d %H:%M:%S $"),
-                current_gm_time
-            );
-            actions.doc_last_revision = strdate;
-        }
-
-        // if we're ignoring the document info, we're done.
-        if (ignore_docinfo)
-        {
-            return;
-        }
-
-        if (qbk_major_version == -1)
-        {
-            // hard code quickbook version to v1.1
-            qbk_major_version = 1;
-            qbk_minor_version = 1;
-            qbk_version_n = 101;
-            detail::outwarn(actions.filename.file_string(),1)
-                << "Warning: Quickbook version undefined. "
-                "Version 1.1 is assumed" << std::endl;
-        }
-        else
-        {
-            qbk_version_n = ((unsigned) qbk_major_version * 100) +
-                (unsigned) qbk_minor_version;
-        }
-        
-        if (qbk_version_n == 106)
-        {
-            detail::outwarn(actions.filename.file_string(),1)
-                << "Quickbook 1.6 is still under development and is "
-                "likely to change in the future." << std::endl;
-        }
-        else if(qbk_version_n < 100 || qbk_version_n > 106)
-        {
-            detail::outerr(actions.filename.file_string(),1)
-                << "Unknown version of quickbook: quickbook "
-                << qbk_major_version
-                << "."
-                << qbk_minor_version
-                << std::endl;
-            ++actions.error_count;
-        }
-
-        out << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n"
-            << "<!DOCTYPE "
-            << actions.doc_type
-            << " PUBLIC \"-//Boost//DTD BoostBook XML V1.0//EN\"\n"
-            << "     \"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd\">\n"
-            << '<' << actions.doc_type << "\n"
-            << "    id=\"";
-        detail::print_string(actions.doc_id, out.get());
-        out << "\"\n";
-        
-        if(actions.doc_type == "library")
-        {
-            out << "    name=\"";
-            detail::print_string(actions.doc_title, out.get());
-            out << "\"\n";
-        }
-
-        if(!actions.doc_dirname.empty())
-        {
-            out << "    dirname=\"";
-            detail::print_string(actions.doc_dirname, out.get());
-            out << "\"\n";
-        }
-
-        out << "    last-revision=\"";
-        detail::print_string(actions.doc_last_revision, out.get());
-        out << "\" \n"
-            << "    xmlns:xi=\"http://www.w3.org/2001/XInclude\">\n";
-            
-        if(actions.doc_type == "library") {
-            write_document_info(out, actions);
-            write_document_title(out, actions);
-        }
-        else {
-            write_document_title(out, actions);
-            write_document_info(out, actions);
-        }
-    }
-    
-    void post(collector& out, quickbook::actions& actions, bool ignore_docinfo)
-    {
-        // if we're ignoring the document info, do nothing.
-        if (ignore_docinfo)
-        {
-            return;
-        }
-
-        // We've finished generating our output. Here's what we'll do
-        // *after* everything else.
-        out << "\n</" << actions.doc_type << ">\n\n";
-    }
-
-    void write_document_title(collector& out, quickbook::actions& actions)
-    {
-        if (!actions.doc_title.empty())
-        {
-            out<< "  <title>";
-            detail::print_string(actions.doc_title, out.get());
-            if (!actions.doc_version.empty()) {
-                out << ' ';
-                detail::print_string(actions.doc_version, out.get());
-            }
-            out<< "</title>\n\n\n";
-        }
-    }
-
-    void write_document_info(collector& out, quickbook::actions& actions)
-    {
-        std::vector<std::string> invalid_attributes;
-
-        out << "  <" << actions.doc_type << "info>\n";
-
-        if(!actions.doc_authors.empty())
-        {
-            out << "    <authorgroup>\n";
-            for_each(
-                actions.doc_authors.begin()
-              , actions.doc_authors.end()
-              , xml_author(out));
-            out << "    </authorgroup>\n";
-        }
-
-        if (!actions.doc_copyrights.empty())
-        {
-            for_each(
-                actions.doc_copyrights.begin()
-              , actions.doc_copyrights.end()
-              , xml_copyright(out));
-        }
-
-        if (qbk_version_n < 103)
-        {
-            if (!actions.doc_license_1_1.empty())
-            {
-                out << "    <legalnotice>\n"
-                    << "      <para>\n"
-                    << "        ";
-                detail::print_string(actions.doc_license_1_1, out.get());
-                out << "\n"
-                    << "      </para>\n"
-                    << "    </legalnotice>\n"
-                    << "\n"
-                ;
-            }
-        }
-        else
-        {
-            if (!actions.doc_license.empty())
-            {
-                out << "    <legalnotice>\n"
-                    << "      <para>\n"
-                    << "        " << actions.doc_license << "\n"
-                    << "      </para>\n"
-                    << "    </legalnotice>\n"
-                    << "\n"
-                ;
-            }
-        }
-
-        if (!actions.doc_purpose.empty())
-        {
-            if (actions.doc_type != "library")
-            {
-                invalid_attributes.push_back("purpose");
-            }
-
-            if (qbk_version_n < 103)
-            {
-                out << "    <" << actions.doc_type << "purpose>\n"
-                    << "      ";
-                detail::print_string(actions.doc_purpose_1_1, out.get());
-                out << "    </" << actions.doc_type << "purpose>\n"
-                    << "\n"
-                ;
-            }
-            else
-            {
-                out << "    <" << actions.doc_type << "purpose>\n"
-                    << "      " << actions.doc_purpose
-                    << "    </" << actions.doc_type << "purpose>\n"
-                    << "\n"
-                ;
-            }
-        }
-
-        if (!actions.doc_categories.empty())
-        {
-            if (actions.doc_type != "library")
-            {
-                invalid_attributes.push_back("category");
-            }
-
-            for(actions::string_list::const_iterator
-                it = actions.doc_categories.begin(),
-                end = actions.doc_categories.end();
-                it != end; ++it)
-            {
-                out << "    <" << actions.doc_type << "category name=\"category:";
-                detail::print_string(*it, out.get());
-                out << "\"></" << actions.doc_type << "category>\n"
-                    << "\n"
-                ;
-            }
-        }
-
-        out << "  </" << actions.doc_type << "info>\n"
-            << "\n"
-        ;
-        
-        if(!invalid_attributes.empty())
-        {
-            detail::outwarn(actions.filename.file_string(),1)
-                << (invalid_attributes.size() > 1 ?
-                    "Invalid attributes" : "Invalid attribute")
-                << " for '" << actions.doc_type << " document info': "
-                << boost::algorithm::join(invalid_attributes, ", ")
-                << "\n"
-                ;
-        }
-    }
-
-    void phrase_to_string_action::operator()(iterator first, iterator last) const
-    {
-        phrase.swap(out);
-    }
-
-    void copy_stream_action::operator()(iterator first, iterator last) const
-    {
-        std::string str;
-        phrase.swap(str);
-        out << str;
-    }
-}
Deleted: branches/release/tools/quickbook/detail/actions.hpp
==============================================================================
--- branches/release/tools/quickbook/detail/actions.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,908 +0,0 @@
-/*=============================================================================
-    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/include/classic_iterator.hpp>
-#include <boost/filesystem/v2/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)
-#endif
-
-namespace quickbook
-{
-    namespace fs = boost::filesystem;
-    typedef position_iterator<std::string::const_iterator> iterator;
-    typedef 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(char const* filein_, actions& actor, bool ignore_docinfo = false);
-
-    struct error_action
-    {
-        // Prints an error message to std::cerr
-
-        error_action(
-            int& error_count)
-        : error_count(error_count) {}
-
-        void operator()(iterator first, iterator /*last*/) const;
-
-        int& error_count;
-    };
-
-    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 implicit_paragraph_action
-    {
-        //  implicit paragraphs
-        //  doesn't output the paragraph if it's only whitespace.
-
-        implicit_paragraph_action(
-            collector& out,
-            collector& phrase,
-            std::string const& pre,
-            std::string const& post)
-        : out(out)
-        , phrase(phrase)
-        , pre(pre)
-        , post(post) {}
-
-        void operator()() const;
-        void operator()(iterator first, iterator last) const { (*this)(); }
-
-        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& element_id,
-            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)
-        , element_id(element_id)
-        , 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& element_id;
-        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& element_id,
-            std::string const& library_id,
-            std::string const& section_id,
-            std::string const& qualified_section_id,
-            int const& section_level)
-        : out(out)
-        , phrase(phrase)
-        , element_id(element_id)
-        , 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& element_id;
-        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
-          , int& error_count)
-        : out(out)
-        , list_indent(list_indent)
-        , list_marks(list_marks)
-        , error_count(error_count) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        collector& out;
-        int& list_indent;
-        std::stack<mark_type>& list_marks;
-        int& error_count;
-    };
-
-    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()(iterator first, iterator last) const;
-
-        collector& out;
-    };
-
-    struct anchor_action
-    {
-        // Handles anchors
-
-        anchor_action(collector& out)
-            : out(out) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        collector& out;
-    };
-
-    extern char const* quickbook_get_date;
-    extern char const* 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;
-    };
-
-    struct raw_char_action
-    {
-        // Prints a single raw (unprocessed) char.
-        // Allows '<', '>'... etc.
-
-        raw_char_action(collector& phrase)
-        : phrase(phrase) {}
-
-        void operator()(char ch) const;
-        void operator()(iterator first, iterator /*last*/) const;
-
-        collector& phrase;
-    };
-
-    struct plain_char_action
-    {
-        // Prints a single plain char.
-        // Converts '<' to "<"... etc See utils.hpp
-
-        plain_char_action(collector& phrase)
-        : phrase(phrase) {}
-
-        void operator()(char ch) const;
-        void operator()(iterator first, iterator /*last*/) const;
-
-        collector& phrase;
-    };
-    
-    struct escape_unicode_action
-    {
-        escape_unicode_action(collector& phrase) : phrase(phrase) {}
-        void operator()(iterator first, iterator last) const;
-
-        collector& phrase;
-    };
-
-    struct attribute_action
-    {
-        // Handle image attributes
-        
-        attribute_action(
-            attribute_map& attributes
-          , std::string& attribute_name
-          , int& error_count)
-        : attributes(attributes)
-        , attribute_name(attribute_name)
-        , error_count(error_count) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        attribute_map& attributes;
-        std::string& attribute_name;
-        int& error_count;
-    };
-
-    struct image_action
-    {
-        // Handles inline images
-
-        image_action(
-            collector& phrase
-          , attribute_map& attributes
-          , std::string& image_fileref)
-        : phrase(phrase)
-        , attributes(attributes)
-        , image_fileref(image_fileref) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        collector& phrase;
-        attribute_map& attributes;
-        std::string& image_fileref;
-    };
-
-    struct markup_action
-    {
-        // A generic markup action
-
-        markup_action(collector& phrase, std::string const& str)
-        : phrase(phrase), str(str) {}
-
-        template <typename T>
-        void operator()(T const&) const
-        {
-            phrase << str;
-        }
-
-        template <typename T>
-        void operator()(T const&, T const&) const
-        {
-            phrase << str;
-        }
-
-        collector& phrase;
-        std::string str;
-    };
-
-    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;
-    
-    typedef teletype_highlight<
-        plain_char_action
-      , string_symbols
-      , do_macro_action
-      , pre_escape_back
-      , post_escape_back
-      , actions
-      , collector>
-    teletype_p_type;
-    
-    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)
-        , cpp_p(temp, macro, do_macro_action(temp), escape_actions)
-        , python_p(temp, macro, do_macro_action(temp), escape_actions)
-        , teletype_p(temp, macro, do_macro_action(temp), escape_actions)
-        {
-        }
-
-        std::string operator()(iterator first, iterator last) const;
-
-        collector& temp;
-        std::string const& source_mode;
-        cpp_p_type cpp_p;
-        python_p_type python_p;
-        teletype_p_type teletype_p;
-    };
-
-    struct code_action
-    {
-        // Does the actual syntax highlighing of code
-
-        code_action(
-            collector& out
-          , collector& phrase
-          , syntax_highlight& syntax_p)
-        : out(out)
-        , phrase(phrase)
-        , syntax_p(syntax_p)
-        {
-        }
-
-        void operator()(iterator first, iterator last) const;
-
-        collector& out;
-        collector& phrase;
-        syntax_highlight& syntax_p;
-    };
-
-    struct inline_code_action
-    {
-        // Does the actual syntax highlighing of code inlined in text
-
-        inline_code_action(
-            collector& out
-          , syntax_highlight& syntax_p)
-        : out(out)
-        , syntax_p(syntax_p)
-        {}
-
-        void operator()(iterator first, iterator last) const;
-
-        collector& out;
-        syntax_highlight& syntax_p;
-    };
-
-    struct start_varlistitem_action
-    {
-        start_varlistitem_action(collector& phrase)
-        : phrase(phrase) {}
-
-        void operator()() const;
-
-        template <typename T1>
-        void operator()(T1 const&) const { return (*this)(); }
-        template <typename T1, typename T2>
-        void operator()(T1 const&, T2 const&) const { return (*this)(); }
-
-        collector& phrase;
-    };
-
-    struct end_varlistitem_action
-    {
-        end_varlistitem_action(collector& phrase, collector& temp_para)
-        : phrase(phrase), temp_para(temp_para) {}
-
-        void operator()() const;
-
-        template <typename T1>
-        void operator()(T1 const&) const { return (*this)(); }
-        template <typename T1, typename T2>
-        void operator()(T1 const&, T2 const&) const { return (*this)(); }
-
-        collector& phrase;
-        collector& temp_para;
-    };
-
-    struct break_action
-    {
-        // Handles line-breaks (DEPRECATED!!!)
-
-        break_action(collector& phrase)
-        : phrase(phrase) {}
-
-        void operator()(iterator f, iterator) const;
-
-        collector& phrase;
-    };
-
-    struct macro_identifier_action
-    {
-        // Handles macro identifiers
-
-        macro_identifier_action(quickbook::actions& actions)
-        : actions(actions) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        quickbook::actions& actions;
-    };
-
-    struct macro_definition_action
-    {
-        // Handles macro definitions
-
-        macro_definition_action(quickbook::actions& actions)
-        : actions(actions) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        quickbook::actions& actions;
-    };
-
-    struct template_body_action
-    {
-        // Handles template definitions
-
-        template_body_action(quickbook::actions& actions)
-        : actions(actions) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        quickbook::actions& actions;
-    };
-    
-    struct template_arg_action
-    {
-        // Handles a template argument
-
-        template_arg_action(quickbook::actions& actions)
-        : actions(actions) {}
-        
-        void operator()(iterator first, iterator last) const;
-
-        quickbook::actions& actions;
-    };
-
-    struct do_template_action
-    {
-        // Handles template substitutions
-
-        do_template_action(quickbook::actions& actions)
-        : actions(actions) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        quickbook::actions& actions;
-    };
-
-    struct link_action
-    {
-        // Handles links (URL, XML refentry, function, class, member)
-
-        link_action(collector& phrase, char const* tag)
-        : phrase(phrase), tag(tag) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        collector& phrase;
-        char const* tag;
-    };
-
-    struct variablelist_action
-    {
-        // Handles variable lists
-
-        variablelist_action(quickbook::actions& actions)
-        : actions(actions) {}
-
-        void operator()(iterator, iterator) const;
-
-        quickbook::actions& actions;
-    };
-
-    struct table_action
-    {
-        // Handles tables
-
-        table_action(quickbook::actions& actions)
-        : actions(actions) {}
-
-        void operator()(iterator, iterator) const;
-
-        quickbook::actions& actions;
-    };
-
-    struct start_row_action
-    {
-        // Handles table rows
-
-        start_row_action(collector& phrase, unsigned& span, std::string& header)
-            : phrase(phrase), span(span), header(header) {}
-
-        void operator()(char) const;
-        void operator()(iterator f, iterator) const;
-
-        collector& phrase;
-        unsigned& span;
-        std::string& header;
-    };
-
-    struct start_col_action
-    {
-        // Handles table columns
-
-        start_col_action(collector& phrase, unsigned& span)
-        : phrase(phrase), span(span) {}
-
-        void operator()(char) const;
-
-        collector& phrase;
-        unsigned& span;
-    };
-
-    struct end_col_action
-    {
-        end_col_action(collector& phrase, collector& temp_para)
-        : phrase(phrase), temp_para(temp_para) {}
-
-        void operator()(char) const;
-
-        collector& phrase;
-        collector& temp_para;
-    };
-
-    struct begin_section_action
-    {
-        // Handles begin page
-
-        begin_section_action(
-            collector& out
-          , collector& phrase
-          , std::string& library_id
-          , std::string& section_id
-          , int& section_level
-          , std::string& qualified_section_id
-          , std::string& element_id)
-        : out(out)
-        , phrase(phrase)
-        , library_id(library_id)
-        , section_id(section_id)
-        , section_level(section_level)
-        , qualified_section_id(qualified_section_id)
-        , element_id(element_id) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        collector& out;
-        collector& phrase;
-        std::string& library_id;
-        std::string& section_id;
-        int& section_level;
-        std::string& qualified_section_id;
-        std::string& element_id;
-    };
-
-    struct end_section_action
-    {
-        end_section_action(
-            collector& out
-          , int& section_level
-          , int& min_section_level
-          , std::string& qualified_section_id
-          , int& error_count)
-        : out(out)
-        , section_level(section_level)
-        , min_section_level(min_section_level)
-        , qualified_section_id(qualified_section_id)
-        , error_count(error_count) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        collector& out;
-        int& section_level;
-        int& min_section_level;
-        std::string& qualified_section_id;
-        int& error_count;
-   };
-   
-   struct element_id_warning_action
-   {
-       void operator()(iterator first, iterator last) const;
-   };
-
-    struct xinclude_action
-    {
-        // Handles XML includes
-        xinclude_action(collector& out_, quickbook::actions& actions_)
-            : out(out_), actions(actions_) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        collector& out;
-        quickbook::actions& actions;
-    };
-
-    struct include_action
-    {
-        // Handles QBK includes
-
-        include_action(quickbook::actions& actions_)
-            : actions(actions_) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        quickbook::actions& actions;
-    };
-
-    struct import_action
-    {
-        // Handles import of source code files (e.g. *.cpp *.py)
-        import_action(collector& out_, quickbook::actions& actions_)
-            : out(out_), actions(actions_) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        collector& out;
-        quickbook::actions& actions;
-    };
-
-    struct xml_author
-    {
-        // Handles xml author
-
-        xml_author(collector& out)
-        : out(out) {}
-
-        void operator()(std::pair<std::string, std::string> const& author) const;
-
-        collector& out;
-    };
-
-    struct xml_year
-    {
-        // Handles xml year
-
-        xml_year(collector& out)
-            : out(out) {}
-
-        void operator()(std::string const &year) const;
-
-        collector& out;
-    };
-
-    struct xml_copyright
-    {
-        // Handles xml copyright
-
-        xml_copyright(collector& out)
-            : out(out) {}
-
-        void operator()(std::pair<std::vector<std::string>, std::string> const ©right) const;
-
-        collector& out;
-    };
-
-    void pre(collector& out, quickbook::actions& actions, bool ignore_docinfo = false);
-    void post(collector& out, quickbook::actions& actions, bool ignore_docinfo = false);
-
-    struct phrase_to_string_action
-    {
-        phrase_to_string_action(std::string& out, collector& phrase)
-            : out(out) , phrase(phrase) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        std::string& out;
-        collector& phrase;
-    };
-
-    struct copy_stream_action
-    {
-        copy_stream_action(collector& out, collector& phrase)
-            : out(out) , phrase(phrase) {}
-
-        void operator()(iterator first, iterator last) const;
-
-        collector& out;
-        collector& phrase;
-    };
-}
-
-#ifdef BOOST_MSVC
-#pragma warning (pop)
-#endif
-
-#endif // BOOST_SPIRIT_QUICKBOOK_ACTIONS_HPP
-
Deleted: branches/release/tools/quickbook/detail/actions_class.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/actions_class.cpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,244 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2002 2004 2006 Joel de Guzman
-    Copyright (c) 2004 Eric Niebler
-    Copyright (c) 2005 Thomas Guest
-    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)
-=============================================================================*/
-#include "./actions_class.hpp"
-#include "./markups.hpp"
-
-#if (defined(BOOST_MSVC) && (BOOST_MSVC <= 1310))
-#pragma warning(disable:4355)
-#endif
-
-namespace quickbook
-{
-    actions::actions(char const* filein_, fs::path const& outdir_, string_stream& out_)
-    // header info
-        : doc_type()
-        , doc_title()
-        , doc_version()
-        , doc_id()
-        , doc_dirname()
-        , doc_copyrights()
-        , doc_purpose()
-        , doc_categories()
-        , doc_authors()
-        , doc_license()
-        , doc_last_revision()
-        , include_doc_id()
-        , doc_license_1_1()
-        , doc_purpose_1_1()
-
-    // main output stream
-        , out(out_)
-
-    // auxilliary streams
-        , phrase()
-        , temp()
-        , list_buffer()
-
-    // state
-        , filename(fs::complete(fs::path(filein_)))
-        , outdir(outdir_)
-        , macro()
-        , section_level(0)
-        , min_section_level(0)
-        , section_id()
-        , qualified_section_id()
-        , source_mode("c++")
-
-    // temporary or global state
-        , element_id()
-        , table_title()
-        , table_span(0)
-        , table_header()
-        , macro_id()
-        , list_marks()
-        , list_indent(-1)
-        , template_identifier()
-        , template_info()
-        , template_depth(0)
-        , template_escape(false)
-        , templates()
-        , error_count(0)
-        , image_fileref()
-        , attribute_name()
-        , attributes()
-
-    // actions
-        , error(error_count)
-        , extract_doc_license(doc_license, phrase)
-        , extract_doc_purpose(doc_purpose, phrase)
-
-        , syntax_p(temp, source_mode, macro, *this)
-        , code(out, phrase, syntax_p)
-        , code_block(phrase, phrase, syntax_p)
-        , inline_code(phrase, syntax_p)
-        , 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)
-        , h1(out, phrase, element_id, doc_id, section_id, qualified_section_id, h1_pre, h1_post)
-        , h2(out, phrase, element_id, doc_id, section_id, qualified_section_id, h2_pre, h2_post)
-        , h3(out, phrase, element_id, doc_id, section_id, qualified_section_id, h3_pre, h3_post)
-        , h4(out, phrase, element_id, doc_id, section_id, qualified_section_id, h4_pre, h4_post)
-        , h5(out, phrase, element_id, doc_id, section_id, qualified_section_id, h5_pre, h5_post)
-        , h6(out, phrase, element_id, doc_id, section_id, qualified_section_id, h6_pre, h6_post)
-        , hr(out, hr_)
-        , blurb(out, temp_para, blurb_pre, blurb_post)
-        , blockquote(out, temp_para, blockquote_pre, blockquote_post)
-        , preformatted(out, phrase, preformatted_pre, preformatted_post)
-        , warning(out, temp_para, warning_pre, warning_post)
-        , caution(out, temp_para, caution_pre, caution_post)
-        , important(out, temp_para, important_pre, important_post)
-        , note(out, temp_para, note_pre, note_post)
-        , tip(out, temp_para, tip_pre, tip_post)
-        , plain_char(phrase)
-        , raw_char(phrase)
-        , escape_unicode(phrase)
-        , attribute(attributes, attribute_name, error_count)
-        , image(phrase, attributes, image_fileref)
-        , cond_phrase_pre(phrase, conditions, macro)
-        , cond_phrase_post(phrase, conditions, macro)
-
-        , list(out, list_buffer, list_indent, list_marks)
-        , list_format(list_buffer, list_indent, list_marks, error_count)
-        , list_item(list_buffer, phrase, list_item_pre, list_item_post)
-
-        , funcref_pre(phrase, funcref_pre_)
-        , funcref_post(phrase, funcref_post_)
-        , classref_pre(phrase, classref_pre_)
-        , classref_post(phrase, classref_post_)
-        , memberref_pre(phrase, memberref_pre_)
-        , memberref_post(phrase, memberref_post_)
-        , enumref_pre(phrase, enumref_pre_)
-        , enumref_post(phrase, enumref_post_)
-        , macroref_pre(phrase, macroref_pre_)
-        , macroref_post(phrase, macroref_post_)
-        , headerref_pre(phrase, headerref_pre_)
-        , headerref_post(phrase, headerref_post_)
-        , conceptref_pre(phrase, conceptref_pre_)
-        , conceptref_post(phrase, conceptref_post_)
-        , globalref_pre(phrase, globalref_pre_)
-        , globalref_post(phrase, globalref_post_)
-
-        , bold_pre(phrase, bold_pre_)
-        , bold_post(phrase, bold_post_)
-        , italic_pre(phrase, italic_pre_)
-        , italic_post(phrase, italic_post_)
-        , underline_pre(phrase, underline_pre_)
-        , underline_post(phrase, underline_post_)
-        , teletype_pre(phrase, teletype_pre_)
-        , teletype_post(phrase, teletype_post_)
-        , strikethrough_pre(phrase, strikethrough_pre_)
-        , strikethrough_post(phrase, strikethrough_post_)
-        , quote_pre(phrase, quote_pre_)
-        , quote_post(phrase, quote_post_)
-        , replaceable_pre(phrase, replaceable_pre_)
-        , replaceable_post(phrase, replaceable_post_)
-        , footnote_pre(phrase, footnote_pre_)
-        , footnote_post(phrase, footnote_post_)
-
-        , simple_bold(phrase, bold_pre_, bold_post_, macro)
-        , simple_italic(phrase, italic_pre_, italic_post_, macro)
-        , simple_underline(phrase, underline_pre_, underline_post_, macro)
-        , simple_teletype(phrase, teletype_pre_, teletype_post_, macro)
-        , simple_strikethrough(phrase, strikethrough_pre_, strikethrough_post_, macro)
-
-        , variablelist(*this)
-        , start_varlistentry(phrase, start_varlistentry_)
-        , end_varlistentry(phrase, end_varlistentry_)
-        , start_varlistterm(phrase, start_varlistterm_)
-        , end_varlistterm(phrase, end_varlistterm_)
-        , start_varlistitem(phrase)
-        , end_varlistitem(phrase, temp_para)
-
-        , break_(phrase)
-        , macro_identifier(*this)
-        , macro_definition(*this)
-        , do_macro(phrase)
-        , template_body(*this)
-        , template_arg(*this)
-        , do_template(*this)
-        , url_pre(phrase, url_pre_)
-        , url_post(phrase, url_post_)
-        , link_pre(phrase, link_pre_)
-        , link_post(phrase, link_post_)
-        , table(*this)
-        , start_row(phrase, table_span, table_header)
-        , end_row(phrase, end_row_)
-        , start_cell(phrase, table_span)
-        , end_cell(phrase, temp_para)
-        , anchor(out)
-
-        , begin_section(out, phrase, doc_id, section_id, section_level, qualified_section_id, element_id)
-        , end_section(out, section_level, min_section_level, qualified_section_id, error_count)
-        , xinclude(out, *this)
-        , include(*this)
-        , import(out, *this)
-
-        , escape_pre(phrase, escape_pre_)
-        , escape_post(phrase, escape_post_)
-    {
-        // turn off __FILENAME__ macro on debug mode = true
-        std::string filename_str = debug_mode ?
-            std::string("NO_FILENAME_MACRO_GENERATED_IN_DEBUG_MODE") :
-            filename.file_string();
-
-        // add the predefined macros
-        macro.add
-            ("__DATE__", std::string(quickbook_get_date))
-            ("__TIME__", std::string(quickbook_get_time))
-            ("__FILENAME__", filename_str)
-        ;
-    }
-
-    void actions::push()
-    {
-        state_stack.push(
-            boost::make_tuple(
-                filename
-              , outdir
-              , macro
-              , section_level
-              , min_section_level
-              , section_id
-              , qualified_section_id
-              , source_mode
-            )
-        );
-
-        out.push();
-        phrase.push();
-        temp.push();
-        temp_para.push();
-        list_buffer.push();
-        templates.push();        
-    }
-
-    void actions::pop()
-    {
-        boost::tie(
-            filename
-          , outdir
-          , macro
-          , section_level
-          , min_section_level
-          , section_id
-          , qualified_section_id
-          , source_mode
-        ) = state_stack.top();
-        state_stack.pop();
-
-        out.pop();
-        phrase.pop();
-        temp.pop();
-        temp_para.pop();
-        list_buffer.pop();
-        templates.pop();
-    }
-}
Deleted: branches/release/tools/quickbook/detail/actions_class.hpp
==============================================================================
--- branches/release/tools/quickbook/detail/actions_class.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,218 +0,0 @@
-/*=============================================================================
-    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_ACTIONS_CLASS_HPP)
-#define BOOST_SPIRIT_ACTIONS_CLASS_HPP
-
-#include "./actions.hpp"
-#include <boost/tuple/tuple.hpp>
-
-namespace quickbook
-{
-    using namespace boost::spirit::classic;
-    namespace fs = boost::filesystem;
-
-    struct actions
-    {
-        actions(char const* filein_, fs::path const& outdir, string_stream& out_);
-
-    ///////////////////////////////////////////////////////////////////////////
-    // State
-    ///////////////////////////////////////////////////////////////////////////
-
-        typedef std::vector<std::string> string_list;
-        typedef std::vector<std::pair<std::string, std::string> > author_list;
-        typedef std::vector<std::pair<string_list, std::string> > copyright_list;
-        typedef std::pair<char, int> mark_type;
-        static int const max_template_depth = 100;
-
-    // header info
-        std::string             doc_type;
-        std::string             doc_title;
-        std::string             doc_version;
-        std::string             doc_id;
-        std::string             doc_dirname;
-        copyright_list          doc_copyrights;
-        std::string             doc_purpose;
-        string_list             doc_categories;
-        author_list             doc_authors;
-        std::string             doc_license;
-        std::string             doc_last_revision;
-        std::string             include_doc_id;
-        std::string             doc_license_1_1;
-        std::string             doc_purpose_1_1;
-
-    // main output stream
-        collector               out;
-
-    // auxilliary streams
-        collector               phrase;
-        collector               temp;
-        collector               temp_para;
-        collector               list_buffer;
-
-    // state
-        fs::path                filename;
-        fs::path                outdir;
-        string_symbols          macro;
-        int                     section_level;
-        int                     min_section_level;
-        std::string             section_id;
-        std::string             qualified_section_id;
-        std::string             source_mode;
-
-        typedef boost::tuple<
-            fs::path
-          , fs::path
-          , string_symbols
-          , int
-          , int
-          , std::string
-          , std::string
-          , std::string>
-        state_tuple;
-
-        std::stack<state_tuple> state_stack;
-
-    // temporary or global state
-        std::string             element_id;
-        std::string             table_title;
-        unsigned                table_span;
-        std::string             table_header;
-        std::string             macro_id;
-        std::stack<mark_type>   list_marks;
-        int                     list_indent;
-        std::vector<bool>       conditions;
-        std::string             template_identifier;
-        string_list             template_info;
-        int                     template_depth;
-        bool                    template_escape;
-        bool                    template_block;
-        std::vector<quickbook::template_body>
-                                template_args;
-        template_stack          templates;
-        int                     error_count;
-        std::string             image_fileref;
-        std::string             attribute_name;
-        attribute_map           attributes;
-
-    // push/pop the states and the streams
-        void push();
-        void pop();
-
-    ///////////////////////////////////////////////////////////////////////////
-    // actions
-    ///////////////////////////////////////////////////////////////////////////
-        error_action            error;
-        phrase_to_string_action extract_doc_license;
-        phrase_to_string_action extract_doc_purpose;
-
-        syntax_highlight        syntax_p;
-        code_action             code;
-        code_action             code_block;
-        inline_code_action      inline_code;
-        implicit_paragraph_action inside_paragraph;
-        copy_stream_action      write_paragraphs;
-        generic_header_action   h;
-        header_action           h1, h2, h3, h4, h5, h6;
-        markup_action           hr;
-        phrase_action           blurb, blockquote, preformatted;
-        phrase_action           warning, caution, important, note, tip;
-        plain_char_action       plain_char;
-        raw_char_action         raw_char;
-        escape_unicode_action   escape_unicode;
-        attribute_action        attribute;
-        image_action            image;
-        cond_phrase_action_pre  cond_phrase_pre;
-        cond_phrase_action_post cond_phrase_post;
-
-        list_action             list;
-        list_format_action      list_format;
-        phrase_action           list_item;
-
-        link_action             funcref_pre;
-        markup_action           funcref_post;
-        link_action             classref_pre;
-        markup_action           classref_post;
-        link_action             memberref_pre;
-        markup_action           memberref_post;
-        link_action             enumref_pre;
-        markup_action           enumref_post;
-        link_action             macroref_pre;
-        markup_action           macroref_post;
-        link_action             headerref_pre;
-        markup_action           headerref_post;
-        link_action             conceptref_pre;
-        markup_action           conceptref_post;
-        link_action             globalref_pre;
-        markup_action           globalref_post;
-
-        markup_action           bold_pre;
-        markup_action           bold_post;
-        markup_action           italic_pre;
-        markup_action           italic_post;
-        markup_action           underline_pre;
-        markup_action           underline_post;
-        markup_action           teletype_pre;
-        markup_action           teletype_post;
-        markup_action           strikethrough_pre;
-        markup_action           strikethrough_post;
-        markup_action           quote_pre;
-        markup_action           quote_post;
-        markup_action           replaceable_pre;
-        markup_action           replaceable_post;
-        markup_action           footnote_pre;
-        markup_action           footnote_post;
-
-        simple_phrase_action    simple_bold;
-        simple_phrase_action    simple_italic;
-        simple_phrase_action    simple_underline;
-        simple_phrase_action    simple_teletype;
-        simple_phrase_action    simple_strikethrough;
-
-        variablelist_action     variablelist;
-        markup_action           start_varlistentry;
-        markup_action           end_varlistentry;
-        markup_action           start_varlistterm;
-        markup_action           end_varlistterm;
-        start_varlistitem_action start_varlistitem;
-        end_varlistitem_action  end_varlistitem;
-
-        break_action            break_;
-        macro_identifier_action macro_identifier;
-        macro_definition_action macro_definition;
-        do_macro_action         do_macro;
-        template_body_action    template_body;
-        template_arg_action     template_arg;
-        do_template_action      do_template;
-        link_action             url_pre;
-        markup_action           url_post;
-        link_action             link_pre;
-        markup_action           link_post;
-        table_action            table;
-        start_row_action        start_row;
-        markup_action           end_row;
-        start_col_action        start_cell;
-        end_col_action          end_cell;
-        anchor_action           anchor;
-
-        begin_section_action    begin_section;
-        end_section_action      end_section;
-        element_id_warning_action element_id_warning;
-        xinclude_action         xinclude;
-        include_action          include;
-        import_action           import;
-
-        markup_action           escape_pre;
-        markup_action           escape_post;
-    };
-}
-
-#endif // BOOST_SPIRIT_ACTIONS_CLASS_HPP
-
Deleted: branches/release/tools/quickbook/detail/collector.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/collector.cpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,67 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2002 2004 2006 Joel de Guzman
-    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)
-=============================================================================*/
-#include "./collector.hpp"
-#include <boost/assert.hpp>
-
-namespace quickbook
-{
-    string_stream::string_stream()
-        : buffer_ptr(new std::string())
-        , stream_ptr(new ostream(boost::iostreams::back_inserter(*buffer_ptr.get())))
-    {}
-
-    string_stream::string_stream(string_stream const& other)
-        : buffer_ptr(other.buffer_ptr)
-        , stream_ptr(other.stream_ptr)
-    {}
-    
-    string_stream&
-    string_stream::operator=(string_stream const& other)
-    {
-        buffer_ptr = other.buffer_ptr;
-        stream_ptr = other.stream_ptr;
-        return *this;
-    }
-        
-    collector::collector()
-        : main(default_)
-        , top(default_)
-    {
-    }
-
-    collector::collector(string_stream& out)
-        : main(out) 
-        , top(out) 
-    {
-    }
-    
-    collector::~collector()
-    {
-        BOOST_ASSERT(streams.empty()); // assert there are no more pushes than pops!!!
-    }
-    
-    void 
-    collector::push()
-    {
-        streams.push(string_stream());
-        top = boost::ref(streams.top());
-    }
-    
-    void 
-    collector::pop()
-    {
-        BOOST_ASSERT(!streams.empty());
-        streams.pop();
-
-        if (streams.empty())
-            top = boost::ref(main);
-        else
-            top = boost::ref(streams.top());
-    }
-}
Deleted: branches/release/tools/quickbook/detail/collector.hpp
==============================================================================
--- branches/release/tools/quickbook/detail/collector.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,123 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2002 2004 2006 Joel de Guzman
-    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_COLLECTOR_HPP)
-#define BOOST_SPIRIT_QUICKBOOK_COLLECTOR_HPP
-
-#include <string>
-#include <stack>
-#include <boost/ref.hpp>
-#include <boost/shared_ptr.hpp>
-#include <boost/noncopyable.hpp>
-#include <boost/iostreams/device/back_inserter.hpp>
-#include <boost/iostreams/filtering_stream.hpp>
-
-namespace quickbook
-{
-    struct string_stream
-    {
-        typedef boost::iostreams::filtering_ostream ostream;
-
-        string_stream();
-        string_stream(string_stream const& other);
-        string_stream& operator=(string_stream const& other);
-
-        std::string const& str() const
-        {
-            stream_ptr->flush();
-            return *buffer_ptr.get();
-        }
-    
-        std::ostream& get() const
-        {
-            return *stream_ptr.get();
-        }
-    
-        void clear()
-        {
-            buffer_ptr->clear();
-        }
-
-        void swap(std::string& other)
-        {
-            stream_ptr->flush();
-            std::swap(other, *buffer_ptr.get());
-        }
-
-        void append(std::string const& other)
-        {
-            stream_ptr->flush();
-            *buffer_ptr.get() += other;
-        }
-
-    private:
-
-        boost::shared_ptr<std::string> buffer_ptr;
-        boost::shared_ptr<ostream> stream_ptr;
-    };
-
-    struct collector : boost::noncopyable
-    {
-        collector();
-        collector(string_stream& out);
-        ~collector();
-        
-        void push();
-        void pop();
-
-        std::ostream& get() const
-        {
-            return top.get().get();
-        }
-        
-        std::string const& str() const
-        {
-            return top.get().str();
-        }
-        
-        void clear()
-        {
-            top.get().clear();
-        }
-        
-        void swap(std::string& other)
-        {
-            top.get().swap(other);
-        }
-
-        void append(std::string const& other)
-        {
-            top.get().append(other);
-        }
-
-    private:
-
-        std::stack<string_stream> streams;
-        boost::reference_wrapper<string_stream> main;
-        boost::reference_wrapper<string_stream> top;
-        string_stream default_;
-    };
-    
-    template <typename T>
-    inline collector& 
-    operator<<(collector& out, T const& val)
-    {
-        out.get() << val;
-        return out;
-    }
-
-    inline collector& 
-    operator<<(collector& out, std::string const& val)
-    {
-        out.append(val);
-        return out;
-    }
-}
-
-#endif // BOOST_SPIRIT_QUICKBOOK_COLLECTOR_HPP
-
Deleted: branches/release/tools/quickbook/detail/input_path.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/input_path.cpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,105 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2009 Daniel James
-
-    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)
-=============================================================================*/
-
-#include <boost/program_options.hpp>
-#include "./input_path.hpp"
-
-#if !(defined(__cygwin__) || defined(__CYGWIN__))
-
-// Everything but cygwin
-
-namespace quickbook { namespace detail
-{
-    void validate(boost::any& v,
-            const std::vector<std::string>& values,
-            input_path*, int)
-    {
-        std::string path
-            = boost::program_options::validators::get_single_string(values);
-
-        v = input_path(path);
-    }
-}}
-
-#elif defined(QUICKBOOK_CYGWIN_1_5)
-
-// Cygwin 1.5.x
-
-#include <boost/filesystem/v2/config.hpp>
-#include <windows.h>
-#include <sys/cygwin.h>
-
-namespace quickbook { namespace detail
-{
-    void validate(boost::any& v,
-            const std::vector<std::string>& values,
-            input_path*, int)
-    {
-        std::string path
-            = boost::program_options::validators::get_single_string(values);
-
-        char result[MAX_PATH + 1];
-
-#if defined(BOOST_WINDOWS_PATH)
-        cygwin_conv_to_win32_path(path.c_str(), result);
-#elif defined(BOOST_POSIX_PATH)
-        cygwin_conv_to_posix_path(path.c_str(), result);
-#else
-#    error "Boost filesystem path type doesn't seem to be set."
-#endif
-
-        v = input_path(result);
-    }
-}}
-
-#else
-
-// Cygwin 1.7.x
-    
-#include <boost/filesystem/v2/config.hpp>
-#include <boost/scoped_array.hpp>
-#include <boost/program_options/errors.hpp>
-#include <windows.h>
-#include <sys/cygwin.h>
-
-namespace quickbook { namespace detail
-{
-    void validate(boost::any& v,
-            const std::vector<std::string>& values,
-            input_path*, int)
-    {
-        std::string path
-            = boost::program_options::validators::get_single_string(values);
-
-#if defined(BOOST_WINDOWS_PATH)
-        cygwin_conv_path_t flags = CCP_POSIX_TO_WIN_A | CCP_RELATIVE;
-#elif defined(BOOST_POSIX_PATH)
-        cygwin_conv_path_t flags = CCP_WIN_A_TO_POSIX | CCP_RELATIVE;
-#else
-#    error "Boost filesystem path type doesn't seem to be set."
-#endif
-
-        ssize_t size = cygwin_conv_path(flags, path.c_str(), NULL, 0);
-        
-        if (size < 0) {
-            throw boost::program_options::validation_error(
-                boost::program_options::validation_error::invalid_option_value);
-        }
-
-        boost::scoped_array<char> result(new char[size]);
-
-        if(cygwin_conv_path(flags, path.c_str(), result.get(), size)) {
-            throw boost::program_options::validation_error(
-                boost::program_options::validation_error::invalid_option_value);
-        }
-
-        v = input_path(result.get());
-    }
-}}
-
-#endif
Deleted: branches/release/tools/quickbook/detail/input_path.hpp
==============================================================================
--- branches/release/tools/quickbook/detail/input_path.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,39 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2009 Daniel James
-
-    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_QUICKBOOK_DETAIL_INPUT_PATH_HPP)
-#define BOOST_QUICKBOOK_DETAIL_INPUT_PATH_HPP
-
-#include <vector>
-#include <boost/any.hpp>
-#include <string>
-
-namespace quickbook { namespace detail
-{
-    // Use this class with Boost.Program Options to convert paths to the format
-    // the Boost.Filesystem expects. This is needed on cygwin to convert cygwin
-    // paths to windows paths (or vice versa, depending on how filesystem is set
-    // up).
-    //
-    // Note that we don't want to convert paths in quickbook files, as they
-    // should be platform independent, and aren't necessarily relative to the
-    // current directory.
-
-    class input_path {
-        std::string path_;
-    public:
-        explicit input_path(char const* c) : path_(c) {}
-        explicit input_path(std::string const& c) : path_(c) {}
-        operator std::string() const { return path_; }
-
-        friend void validate(boost::any&, const std::vector<std::string>&,
-            input_path*, int);
-    };
-}}
-
-#endif
Deleted: branches/release/tools/quickbook/detail/markups.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/markups.cpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,101 +0,0 @@
-/*=============================================================================
-    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)
-=============================================================================*/
-
-#include "./markups.hpp"
-
-namespace quickbook
-{
-    const char* comment_pre         = "<!--";
-    const char* comment_post        = "-->";
-    const char* paragraph_pre       = "<para>\n";
-    const char* paragraph_post      = "</para>\n";
-    const char* h1_pre              = "<bridgehead renderas=\"sect1\">";
-    const char* h1_post             = "</bridgehead>";
-    const char* h2_pre              = "<bridgehead renderas=\"sect2\">";
-    const char* h2_post             = "</bridgehead>";
-    const char* h3_pre              = "<bridgehead renderas=\"sect3\">";
-    const char* h3_post             = "</bridgehead>";
-    const char* h4_pre              = "<bridgehead renderas=\"sect4\">";
-    const char* h4_post             = "</bridgehead>";
-    const char* h5_pre              = "<bridgehead renderas=\"sect5\">";
-    const char* h5_post             = "</bridgehead>";
-    const char* h6_pre              = "<bridgehead renderas=\"sect6\">";
-    const char* h6_post             = "</bridgehead>";
-    const char* hr_                 = "<para/>";
-    const char* blurb_pre           = "<sidebar role=\"blurb\">\n";
-    const char* blurb_post          = "</sidebar>\n";
-    const char* blockquote_pre      = "<blockquote>";
-    const char* blockquote_post     = "</blockquote>";
-    const char* preformatted_pre    = "<programlisting>";
-    const char* preformatted_post   = "</programlisting>";
-    const char* warning_pre         = "<warning>";
-    const char* warning_post        = "</warning>";
-    const char* caution_pre         = "<caution>";
-    const char* caution_post        = "</caution>";
-    const char* important_pre       = "<important>";
-    const char* important_post      = "</important>";
-    const char* note_pre            = "<note>";
-    const char* note_post           = "</note>";
-    const char* tip_pre             = "<tip>";
-    const char* tip_post            = "</tip>";
-    const char* list_item_pre       = "<listitem><simpara>\n";
-    const char* list_item_post      = "\n</simpara></listitem>";
-    const char* bold_pre_           = "<emphasis role=\"bold\">";
-    const char* bold_post_          = "</emphasis>";
-    const char* italic_pre_         = "<emphasis>";
-    const char* italic_post_        = "</emphasis>";
-    const char* underline_pre_      = "<emphasis role=\"underline\">";
-    const char* underline_post_     = "</emphasis>";
-    const char* teletype_pre_       = "<literal>";
-    const char* teletype_post_      = "</literal>";
-    const char* strikethrough_pre_  = "<emphasis role=\"strikethrough\">";
-    const char* strikethrough_post_ = "</emphasis>";
-    const char* quote_pre_          = "<quote>";
-    const char* quote_post_         = "</quote>";
-    const char* break_mark          = "<sbr/>\n";
-    const char* url_pre_            = "<ulink url=\"";
-    const char* url_post_           = "</ulink>";
-    const char* link_pre_           = "<link linkend=\"";
-    const char* link_post_          = "</link>";
-    const char* start_varlistentry_ = "<varlistentry>";
-    const char* end_varlistentry_   = "</varlistentry>\n";
-    const char* start_varlistterm_  = "<term>";
-    const char* end_varlistterm_    = "</term>";
-    const char* start_varlistitem_  = "<listitem>";
-    const char* end_varlistitem_    = "</listitem>";
-    const char* start_header_       = "<thead>";
-    const char* end_header_         = "</thead>\n";
-    const char* start_row_          = "<row>";
-    const char* end_row_            = "</row>\n";
-    const char* start_cell_         = "<entry>";
-    const char* end_cell_           = "</entry>";
-    const char* funcref_pre_        = "<functionname alt=\"";
-    const char* funcref_post_       = "</functionname>";
-    const char* classref_pre_       = "<classname alt=\"";
-    const char* classref_post_      = "</classname>";
-    const char* memberref_pre_      = "<methodname alt=\"";
-    const char* memberref_post_     = "</methodname>";
-    const char* enumref_pre_        = "<enumname alt=\"";
-    const char* enumref_post_       = "</enumname>";
-    const char* macroref_pre_       = "<macroname alt=\"";
-    const char* macroref_post_      = "</macroname>";
-    const char* headerref_pre_      = "<headername alt=\"";
-    const char* headerref_post_     = "</headername>";
-    const char* conceptref_pre_     = "<conceptname alt=\"";
-    const char* conceptref_post_    = "</conceptname>";
-    const char* globalref_pre_      = "<globalname alt=\"";
-    const char* globalref_post_     = "</globalname>";
-    const char* footnote_pre_       = "<footnote><para>";
-    const char* footnote_post_      = "</para></footnote>";
-    const char* escape_pre_         = "<!--quickbook-escape-prefix-->";
-    const char* escape_post_        = "<!--quickbook-escape-postfix-->";
-    const char* replaceable_pre_    = "<replaceable>";
-    const char* replaceable_post_   = "</replaceable>";
-}
Deleted: branches/release/tools/quickbook/detail/markups.hpp
==============================================================================
--- branches/release/tools/quickbook/detail/markups.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,104 +0,0 @@
-/*=============================================================================
-    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_MARKUPS_HPP)
-#define BOOST_SPIRIT_MARKUPS_HPP
-
-namespace quickbook
-{
-    extern const char* comment_pre;
-    extern const char* comment_post;
-    extern const char* paragraph_pre;
-    extern const char* paragraph_post;
-    extern const char* h1_pre;
-    extern const char* h1_post;
-    extern const char* h2_pre;
-    extern const char* h2_post;
-    extern const char* h3_pre;
-    extern const char* h3_post;
-    extern const char* h4_pre;
-    extern const char* h4_post;
-    extern const char* h5_pre;
-    extern const char* h5_post;
-    extern const char* h6_pre;
-    extern const char* h6_post;
-    extern const char* hr_;
-    extern const char* blurb_pre;
-    extern const char* blurb_post;
-    extern const char* blockquote_pre;
-    extern const char* blockquote_post;
-    extern const char* preformatted_pre;
-    extern const char* preformatted_post;
-    extern const char* warning_pre;
-    extern const char* warning_post;
-    extern const char* caution_pre;
-    extern const char* caution_post;
-    extern const char* important_pre;
-    extern const char* important_post;
-    extern const char* note_pre;
-    extern const char* note_post;
-    extern const char* tip_pre;
-    extern const char* tip_post;
-    extern const char* list_item_pre;
-    extern const char* list_item_post;
-    extern const char* bold_pre_;
-    extern const char* bold_post_;
-    extern const char* italic_pre_;
-    extern const char* italic_post_;
-    extern const char* underline_pre_;
-    extern const char* underline_post_;
-    extern const char* teletype_pre_;
-    extern const char* teletype_post_;
-    extern const char* strikethrough_pre_;
-    extern const char* strikethrough_post_;
-    extern const char* quote_pre_;
-    extern const char* quote_post_;
-    extern const char* break_mark;
-    extern const char* url_pre_;
-    extern const char* url_post_;
-    extern const char* link_pre_;
-    extern const char* link_post_;
-    extern const char* start_varlistentry_;
-    extern const char* end_varlistentry_;
-    extern const char* start_varlistterm_;
-    extern const char* end_varlistterm_;
-    extern const char* start_varlistitem_;
-    extern const char* end_varlistitem_;
-    extern const char* start_header_;
-    extern const char* end_header_;
-    extern const char* start_row_;
-    extern const char* end_row_;
-    extern const char* start_cell_;
-    extern const char* end_cell_;
-    extern const char* funcref_pre_;
-    extern const char* funcref_post_;
-    extern const char* classref_pre_;
-    extern const char* classref_post_;
-    extern const char* memberref_pre_;
-    extern const char* memberref_post_;
-    extern const char* enumref_pre_;
-    extern const char* enumref_post_;
-    extern const char* macroref_pre_;
-    extern const char* macroref_post_;
-    extern const char* headerref_pre_;
-    extern const char* headerref_post_;
-    extern const char* conceptref_pre_;
-    extern const char* conceptref_post_;
-    extern const char* globalref_pre_;
-    extern const char* globalref_post_;
-    extern const char* footnote_pre_;
-    extern const char* footnote_post_;
-    extern const char* escape_pre_;
-    extern const char* escape_post_;
-    extern const char* replaceable_pre_;
-    extern const char* replaceable_post_;
-}
-
-#endif // BOOST_SPIRIT_MARKUPS_HPP
-
Deleted: branches/release/tools/quickbook/detail/post_process.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/post_process.cpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,466 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2005 2006 Joel de Guzman
-    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)
-=============================================================================*/
-#include "./post_process.hpp"
-#include "./utils.hpp"
-#include <boost/spirit/include/classic_core.hpp>
-#include <boost/bind.hpp>
-#include <set>
-#include <stack>
-#include <cctype>
-
-namespace quickbook
-{
-    using namespace boost::spirit::classic;
-    using boost::bind;
-    typedef std::string::const_iterator iter_type;
-
-    struct printer
-    {
-        printer(std::string& out, int& current_indent, int linewidth)
-            : prev(0), out(out), current_indent(current_indent) , column(0)
-            , in_string(false), linewidth(linewidth) {}
-
-        void indent()
-        {
-            BOOST_ASSERT(current_indent >= 0); // this should not happen!
-            for (int i = 0; i < current_indent; ++i)
-                out += ' ';
-            column = current_indent;
-        }
-
-        void break_line()
-        {
-            out.erase(out.find_last_not_of(' ')+1); // trim trailing spaces
-            out += '\n';
-            indent();
-        }
-
-        bool line_is_empty() const
-        {
-            for (iter_type i = out.end()-(column-current_indent); i != out.end(); ++i)
-            {
-                if (*i != ' ')
-                    return false;
-            }
-            return true;
-        }
-
-        void align_indent()
-        {
-            // make sure we are at the proper indent position
-            if (column != current_indent)
-            {
-                if (column > current_indent)
-                {
-                    if (line_is_empty())
-                    {
-                        // trim just enough trailing spaces down to current_indent position
-                        out.erase(out.end()-(column-current_indent), out.end());
-                        column = current_indent;
-                    }
-                    else
-                    {
-                        // nope, line is not empty. do a hard CR
-                        break_line();
-                    }
-                }
-                else
-                {
-                    // will this happen? (i.e. column <= current_indent)
-                    while (column != current_indent)
-                    {
-                        out += ' ';
-                        ++column;
-                    }
-                }
-            }
-        }
-
-        void print(char ch)
-        {
-            // Print a char. Attempt to break the line if we are exceeding
-            // the target linewidth. The linewidth is not an absolute limit.
-            // There are many cases where a line will exceed the linewidth
-            // and there is no way to properly break the line. Preformatted
-            // code that exceeds the linewidth are examples. We cannot break
-            // preformatted code. We shall not attempt to be very strict with
-            // line breaking. What's more important is to have a reproducable
-            // output (i.e. processing two logically equivalent xml files
-            // results in two lexically equivalent xml files). *** pretty
-            // formatting is a secondary goal ***
-
-            // Strings will occur only in tag attributes. Normal content
-            // will have " instead. We shall deal only with tag
-            // attributes here.
-            if (ch == '"')
-                in_string = !in_string; // don't break strings!
-
-            if (!in_string && std::isspace(static_cast<unsigned char>(ch)))
-            {
-                // we can break spaces if they are not inside strings
-                if (!std::isspace(static_cast<unsigned char>(prev)))
-                {
-                    if (column >= linewidth)
-                    {
-                        break_line();
-                        if (column == 0 && ch == ' ')
-                        {
-                            ++column;
-                            out += ' ';
-                        }
-                    }
-                    else
-                    {
-                        ++column;
-                        out += ' ';
-                    }
-                }
-            }
-            else
-            {
-                // we can break tag boundaries and stuff after
-                // delimiters if they are not inside strings
-                // and *only-if* the preceding char is a space
-                if (!in_string
-                    && column >= linewidth
-                    && (ch == '<' && std::isspace(static_cast<unsigned char>(prev))))
-                    break_line();
-                out += ch;
-                ++column;
-            }
-
-            prev = ch;
-        }
-
-        void
-        print(iter_type f, iter_type l)
-        {
-            for (iter_type i = f; i != l; ++i)
-                print(*i);
-        }
-
-        void
-        print_tag(iter_type f, iter_type l, bool is_flow_tag)
-        {
-            if (is_flow_tag)
-            {
-                print(f, l);
-            }
-            else
-            {
-                // This is not a flow tag, so, we're going to do a
-                // carriage return anyway. Let us remove extra right
-                // spaces.
-                std::string str(f, l);
-                BOOST_ASSERT(f != l); // this should not happen
-                iter_type i = str.end();
-                while (i != str.begin() && std::isspace(static_cast<unsigned char>(*(i-1))))
-                    --i;
-                print(str.begin(), i);
-            }
-        }
-
-        char prev;
-        std::string& out;
-        int& current_indent;
-        int column;
-        bool in_string;
-        int linewidth;
-    };
-
-    char const* block_tags_[] =
-    {
-          "author"
-        , "blockquote"
-        , "bridgehead"
-        , "callout"
-        , "calloutlist"
-        , "caution"
-        , "copyright"
-        , "entry"
-        , "important"
-        , "informaltable"
-        , "itemizedlist"
-        , "legalnotice"
-        , "listitem"
-        , "note"
-        , "orderedlist"
-        , "para"
-        , "row"
-        , "section"
-        , "simpara"
-        , "table"
-        , "tbody"
-        , "textobject"
-        , "tgroup"
-        , "thead"
-        , "tip"
-        , "variablelist"
-        , "varlistentry"
-        , "warning"
-        , "xml"
-        , "xi:include"
-    };
-
-    char const* doc_types_[] =
-    {
-          "book"
-        , "article"
-        , "library"
-        , "chapter"
-        , "part"
-        , "appendix"
-        , "preface"
-        , "qandadiv"
-        , "qandaset"
-        , "reference"
-        , "set"
-    };
-
-    struct tidy_compiler
-    {
-        tidy_compiler(std::string& out, int linewidth)
-            : out(out), current_indent(0), printer_(out, current_indent, linewidth)
-        {
-            static int const n_block_tags = sizeof(block_tags_)/sizeof(char const*);
-            for (int i = 0; i != n_block_tags; ++i)
-            {
-                block_tags.insert(block_tags_[i]);
-            }
-
-            static int const n_doc_types = sizeof(doc_types_)/sizeof(char const*);
-            for (int i = 0; i != n_doc_types; ++i)
-            {
-                block_tags.insert(doc_types_[i]);
-                block_tags.insert(doc_types_[i] + std::string("info"));
-                block_tags.insert(doc_types_[i] + std::string("purpose"));
-            }
-        }
-
-        bool is_flow_tag(std::string const& tag)
-        {
-            return block_tags.find(tag) == block_tags.end();
-        }
-
-        std::set<std::string> block_tags;
-        std::stack<std::string> tags;
-        std::string& out;
-        int current_indent;
-        printer printer_;
-        std::string current_tag;
-    };
-
-    struct tidy_grammar : grammar<tidy_grammar>
-    {
-        tidy_grammar(tidy_compiler& state, int indent)
-            : state(state), indent(indent) {}
-
-        template <typename Scanner>
-        struct definition
-        {
-            definition(tidy_grammar const& self)
-            {
-                tag = (lexeme_d[+(alpha_p | '_' | ':')])  [boost::bind(&tidy_grammar::do_tag, &self, _1, _2)];
-
-                code =
-                        "<programlisting>"
-                    >>  *(anychar_p - "</programlisting>")
-                    >>  "</programlisting>"
-                    ;
-
-                // What's the business of lexeme_d['>' >> *space_p]; ?
-                // It is there to preserve the space after the tag that is
-                // otherwise consumed by the space_p skipper.
-
-                escape =
-                    str_p("<!--quickbook-escape-prefix-->") >>
-                    (*(anychar_p - str_p("<!--quickbook-escape-postfix-->")))
-                    [
-                        boost::bind(&tidy_grammar::do_escape, &self, _1, _2)
-                    ]
-                    >>  lexeme_d
-                        [
-                            str_p("<!--quickbook-escape-postfix-->") >>
-                            (*space_p)
-                            [
-                                boost::bind(&tidy_grammar::do_escape_post, &self, _1, _2)
-                            ]
-                        ]
-                    ;
-
-                start_tag = '<' >> tag >> *(anychar_p - '>') >> lexeme_d['>' >> *space_p];
-                start_end_tag =
-                        '<' >> tag >> *(anychar_p - ("/>" | ch_p('>'))) >> lexeme_d["/>" >> *space_p]
-                    |   "<?" >> tag >> *(anychar_p - '?') >> lexeme_d["?>" >> *space_p]
-                    |   "<!--" >> *(anychar_p - "-->") >> lexeme_d["-->" >> *space_p]
-                    |   "<!" >> tag >> *(anychar_p - '>') >> lexeme_d['>' >> *space_p]
-                    ;
-                content = lexeme_d[ +(anychar_p - '<') ];
-                end_tag = "</" >> +(anychar_p - '>') >> lexeme_d['>' >> *space_p];
-
-                markup =
-                        escape
-                    |   code            [boost::bind(&tidy_grammar::do_code, &self, _1, _2)]
-                    |   start_end_tag   [boost::bind(&tidy_grammar::do_start_end_tag, &self, _1, _2)]
-                    |   start_tag       [boost::bind(&tidy_grammar::do_start_tag, &self, _1, _2)]
-                    |   end_tag         [boost::bind(&tidy_grammar::do_end_tag, &self, _1, _2)]
-                    |   content         [boost::bind(&tidy_grammar::do_content, &self, _1, _2)]
-                    ;
-
-                tidy = +markup;
-            }
-
-            rule<Scanner> const&
-            start() { return tidy; }
-
-            rule<Scanner>   tidy, tag, start_tag, start_end_tag,
-                            content, end_tag, markup, code, escape;
-        };
-
-        void do_escape_post(iter_type f, iter_type l) const
-        {
-            for (iter_type i = f; i != l; ++i)
-                state.out += *i;
-        }
-
-        void do_escape(iter_type f, iter_type l) const
-        {
-            while (f != l && std::isspace(*f))
-                ++f;
-            for (iter_type i = f; i != l; ++i)
-                state.out += *i;
-        }
-
-        void do_code(iter_type f, iter_type l) const
-        {
-            state.out += '\n';
-            // print the string taking care of line
-            // ending CR/LF platform issues
-            for (iter_type i = f; i != l; ++i)
-            {
-                if (*i == '\n')
-                {
-                    state.out += '\n';
-                    ++i;
-                    if (i != l && *i != '\r')
-                        state.out += *i;
-                }
-                else if (*i == '\r')
-                {
-                    state.out += '\n';
-                    ++i;
-                    if (i != l && *i != '\n')
-                        state.out += *i;
-                }
-                else
-                {
-                    state.out += *i;
-                }
-            }
-            state.out += '\n';
-            state.printer_.indent();
-        }
-
-        void do_tag(iter_type f, iter_type l) const
-        {
-            state.current_tag = std::string(f, l);
-        }
-
-        void do_start_end_tag(iter_type f, iter_type l) const
-        {
-            bool is_flow_tag = state.is_flow_tag(state.current_tag);
-            if (!is_flow_tag)
-                state.printer_.align_indent();
-            state.printer_.print_tag(f, l, is_flow_tag);
-            if (!is_flow_tag)
-                state.printer_.break_line();
-        }
-
-        void do_start_tag(iter_type f, iter_type l) const
-        {
-            state.tags.push(state.current_tag);
-            bool is_flow_tag = state.is_flow_tag(state.current_tag);
-            if (!is_flow_tag)
-                state.printer_.align_indent();
-            state.printer_.print_tag(f, l, is_flow_tag);
-            if (!is_flow_tag)
-            {
-                state.current_indent += indent;
-                state.printer_.break_line();
-            }
-        }
-
-        void do_content(iter_type f, iter_type l) const
-        {
-            state.printer_.print(f, l);
-        }
-
-        void do_end_tag(iter_type f, iter_type l) const
-        {
-            bool is_flow_tag = state.is_flow_tag(state.tags.top());
-            if (!is_flow_tag)
-            {
-                state.current_indent -= indent;
-                state.printer_.align_indent();
-            }
-            state.printer_.print_tag(f, l, is_flow_tag);
-            if (!is_flow_tag)
-                state.printer_.break_line();
-            state.tags.pop();
-        }
-
-        tidy_compiler& state;
-        int indent;
-    };
-
-    int post_process(
-        std::string const& in
-      , std::ostream& out
-      , int indent
-      , int linewidth)
-    {
-        if (indent == -1)
-            indent = 2;         // set default to 2
-        if (linewidth == -1)
-            linewidth = 80;     // set default to 80
-
-        try
-        {
-            std::string tidy;
-            tidy_compiler state(tidy, linewidth);
-            tidy_grammar g(state, indent);
-            parse_info<iter_type> r = parse(in.begin(), in.end(), g, space_p);
-            if (r.full)
-            {
-                out << tidy;
-                return 0;
-            }
-            else
-            {
-                // fallback!
-                ::quickbook::detail::outerr("")
-                    << "Warning: Post Processing Failed."
-                    << std::endl;
-                out << in;
-                return 1;
-            }
-        }
-
-        catch(...)
-        {
-            // fallback!
-            ::quickbook::detail::outerr("")
-                << "Post Processing Failed."
-                << std::endl;
-            out << in;
-            return 1;
-        }
-    }
-}
-
Deleted: branches/release/tools/quickbook/detail/post_process.hpp
==============================================================================
--- branches/release/tools/quickbook/detail/post_process.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,25 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2005 2006 Joel de Guzman
-    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_POST_PROCESS_HPP)
-#define BOOST_SPIRIT_QUICKBOOK_POST_PROCESS_HPP
-
-#include <iostream>
-#include <string>
-
-namespace quickbook
-{
-    int post_process(
-        std::string const& in
-      , std::ostream& out
-      , int indent
-      , int linewidth);
-}
-
-#endif // BOOST_SPIRIT_QUICKBOOK_POST_PROCESS_HPP
-
Deleted: branches/release/tools/quickbook/detail/quickbook.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/quickbook.cpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,375 +0,0 @@
-/*=============================================================================
-    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)
-=============================================================================*/
-#include "./quickbook.hpp"
-#include "./actions_class.hpp"
-#include "../block.hpp"
-#include "../doc_info.hpp"
-#include "./post_process.hpp"
-#include "./utils.hpp"
-#include "./input_path.hpp"
-#include <boost/spirit/include/classic_iterator.hpp>
-#include <boost/program_options.hpp>
-#include <boost/filesystem/v2/path.hpp>
-#include <boost/filesystem/v2/operations.hpp>
-#include <boost/ref.hpp>
-
-#include <stdexcept>
-#include <fstream>
-#include <iostream>
-#include <vector>
-
-#if (defined(BOOST_MSVC) && (BOOST_MSVC <= 1310))
-#pragma warning(disable:4355)
-#endif
-
-#define QUICKBOOK_VERSION "Quickbook Version 1.5.3"
-
-namespace quickbook
-{
-    using namespace boost::spirit::classic;
-    namespace fs = boost::filesystem;
-    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;
-
-    ///////////////////////////////////////////////////////////////////////////
-    //
-    //  Parse the macros passed as command line parameters
-    //
-    ///////////////////////////////////////////////////////////////////////////
-    template <typename Actions>
-    struct command_line_grammar
-        : public grammar<command_line_grammar<Actions> >
-    {
-        command_line_grammar(Actions& actions)
-            : actions(actions) {}
-
-        template <typename Scanner>
-        struct definition
-        {
-            definition(command_line_grammar const& self)
-                : unused(false), common(self.actions, unused)
-            {
-                Actions& actions = self.actions;
-
-                macro =
-                        *space_p
-                    >>  macro_identifier            [actions.macro_identifier]
-                    >>  *space_p
-                    >>  (   '='
-                        >>  *space_p
-                        >>  phrase                  [actions.macro_definition]
-                        >>  *space_p
-                        )
-                    |   eps_p                       [actions.macro_definition]
-                    ;
-
-                macro_identifier =
-                    +(anychar_p - (space_p | ']' | '='))
-                    ;
-
-                phrase =
-                   *(   common
-                    |   (anychar_p - ']')           [actions.plain_char]
-                    )
-                    ;
-            }
-
-            bool unused;
-            rule<Scanner> macro, macro_identifier, phrase;
-            phrase_grammar<Actions> common;
-
-            rule<Scanner> const&
-            start() const { return macro; }
-        };
-
-        Actions& actions;
-    };
-
-    static void set_macros(actions& actor)
-    {
-        quickbook::command_line_grammar<actions> grammar(actor);
-
-        for(std::vector<std::string>::const_iterator
-                it = preset_defines.begin(),
-                end = preset_defines.end();
-                it != end; ++it)
-        {
-            typedef position_iterator<std::string::const_iterator> iterator_type;
-            iterator_type first(it->begin(), it->end(), "command line parameter");
-            iterator_type last(it->end(), it->end());
-
-            parse(first, last, grammar);
-            // TODO: Check result?
-        }
-    }
-
-    ///////////////////////////////////////////////////////////////////////////
-    //
-    //  Parse a file
-    //
-    ///////////////////////////////////////////////////////////////////////////
-    int
-    parse(char const* filein_, actions& actor, bool ignore_docinfo)
-    {
-        using std::cerr;
-        using std::vector;
-        using std::string;
-
-        std::string storage;
-        int err = detail::load(filein_, storage);
-        if (err != 0) {
-            ++actor.error_count;
-            return err;
-        }
-
-        typedef position_iterator<std::string::const_iterator> iterator_type;
-        iterator_type first(storage.begin(), storage.end(), filein_);
-        iterator_type last(storage.end(), storage.end());
-
-        doc_info_grammar<actions> l(actor);
-        parse_info<iterator_type> info = parse(first, last, l);
-
-        if (info.hit || ignore_docinfo)
-        {
-            pre(actor.out, actor, ignore_docinfo);
-
-            block_grammar<actions> g(actor);
-            info = parse(info.hit ? info.stop : first, last, g);
-            if (info.full)
-            {
-                post(actor.out, actor, ignore_docinfo);
-            }
-        }
-
-        if (!info.full)
-        {
-            file_position const pos = info.stop.get_position();
-            detail::outerr(pos.file,pos.line)
-                << "Syntax Error near column " << pos.column << ".\n";
-            ++actor.error_count;
-        }
-
-        return actor.error_count ? 1 : 0;
-    }
-
-    static int
-    parse(char const* filein_, fs::path const& outdir, string_stream& out, bool ignore_docinfo = false)
-    {
-        actions actor(filein_, outdir, out);
-        set_macros(actor);
-        bool r = parse(filein_, actor);
-        if (actor.section_level != 0)
-            detail::outwarn(filein_)
-                << "Warning missing [endsect] detected at end of file."
-                << std::endl;
-
-        if(actor.error_count)
-        {
-            detail::outerr(filein_)
-                << "Error count: " << actor.error_count << ".\n";
-        }
-
-        return r;
-    }
-
-    static int
-    parse(
-        char const* filein_
-      , char const* fileout_
-      , int indent
-      , int linewidth
-      , bool pretty_print)
-    {
-        int result = 0;
-        std::ofstream fileout(fileout_);
-        fs::path outdir = fs::path(fileout_).parent_path();
-        if (outdir.empty())
-            outdir = ".";
-        if (pretty_print)
-        {
-            string_stream buffer;
-            result = parse(filein_, outdir, buffer);
-            if (result == 0)
-            {
-                result = post_process(buffer.str(), fileout, indent, linewidth);
-            }
-        }
-        else
-        {
-            string_stream buffer;
-            result = parse(filein_, outdir, buffer);
-            fileout << buffer.str();
-        }
-        return result;
-    }
-}
-
-///////////////////////////////////////////////////////////////////////////
-//
-//  Main program
-//
-///////////////////////////////////////////////////////////////////////////
-int
-main(int argc, char* argv[])
-{
-    try
-    {
-        using boost::program_options::options_description;
-        using boost::program_options::variables_map;
-        using boost::program_options::store;
-        using boost::program_options::parse_command_line;
-        using boost::program_options::command_line_parser;
-        using boost::program_options::notify;
-        using boost::program_options::value;
-        using boost::program_options::positional_options_description;
-
-        // First thing, the filesystem should record the current working directory.
-        boost::filesystem::initial_path<boost::filesystem::path>();
-
-        options_description desc("Allowed options");
-        desc.add_options()
-            ("help", "produce help message")
-            ("version", "print version string")
-            ("no-pretty-print", "disable XML pretty printing")
-            ("indent", value<int>(), "indent spaces")
-            ("linewidth", value<int>(), "line width")
-            ("input-file", value<quickbook::detail::input_path>(), "input file")
-            ("output-file", value<quickbook::detail::input_path>(), "output file")
-            ("debug", "debug mode (for developers)")
-            ("ms-errors", "use Microsoft Visual Studio style error & warn message format")
-            ("include-path,I", value< std::vector<quickbook::detail::input_path> >(), "include path")
-            ("define,D", value< std::vector<std::string> >(), "define macro")
-        ;
-
-        positional_options_description p;
-        p.add("input-file", -1);
-
-        variables_map vm;
-        int indent = -1;
-        int linewidth = -1;
-        bool pretty_print = true;
-        store(command_line_parser(argc, argv).options(desc).positional(p).run(), vm);
-        notify(vm);
-
-        if (vm.count("help"))
-        {
-            std::cout << desc << "\n";
-            return 0;
-        }
-
-        if (vm.count("version"))
-        {
-            std::cout << QUICKBOOK_VERSION << std::endl;
-            return 0;
-        }
-
-        if (vm.count("ms-errors"))
-            quickbook::ms_errors = true;
-
-        if (vm.count("no-pretty-print"))
-            pretty_print = false;
-
-        if (vm.count("indent"))
-            indent = vm["indent"].as<int>();
-
-        if (vm.count("linewidth"))
-            linewidth = vm["linewidth"].as<int>();
-
-        if (vm.count("debug"))
-        {
-            static tm timeinfo;
-            timeinfo.tm_year = 2000 - 1900;
-            timeinfo.tm_mon = 12 - 1;
-            timeinfo.tm_mday = 20;
-            timeinfo.tm_hour = 12;
-            timeinfo.tm_min = 0;
-            timeinfo.tm_sec = 0;
-            timeinfo.tm_isdst = -1;
-            mktime(&timeinfo);
-            quickbook::current_time = &timeinfo;
-            quickbook::current_gm_time = &timeinfo;
-            quickbook::debug_mode = true;
-        }
-        else
-        {
-            time_t t = std::time(0);
-            static tm lt = *localtime(&t);
-            static tm gmt = *gmtime(&t);
-            quickbook::current_time = <
-            quickbook::current_gm_time = &gmt;
-            quickbook::debug_mode = false;
-        }
-        
-        if (vm.count("include-path"))
-        {
-            std::vector<quickbook::detail::input_path> paths
-                = vm["include-path"].as<
-                    std::vector<quickbook::detail::input_path> >();
-            quickbook::include_path
-                = std::vector<std::string>(paths.begin(), paths.end());
-        }
-
-        if (vm.count("define"))
-        {
-            quickbook::preset_defines
-                = vm["define"].as<std::vector<std::string> >();
-        }
-
-        if (vm.count("input-file"))
-        {
-            std::string filein
-                = vm["input-file"].as<quickbook::detail::input_path>();
-            std::string fileout;
-
-            if (vm.count("output-file"))
-            {
-                fileout = vm["output-file"].as<quickbook::detail::input_path>();
-            }
-            else
-            {
-                fileout = quickbook::detail::remove_extension(filein.c_str());
-                fileout += ".xml";
-            }
-
-            std::cout << "Generating Output File: "
-                << fileout
-                << std::endl;
-
-            return quickbook::parse(filein.c_str(), fileout.c_str(), indent, linewidth, pretty_print);
-        }
-        else
-        {
-            quickbook::detail::outerr("") << "Error: No filename given\n\n"
-                << desc << std::endl;
-            return 1;
-        }        
-    }
-
-    catch(std::exception& e)
-    {
-        quickbook::detail::outerr("") << "Error: " << e.what() << "\n";
-        return 1;
-    }
-
-    catch(...)
-    {
-        quickbook::detail::outerr("") << "Error: Exception of unknown type caught\n";
-        return 1;
-    }
-
-    return 0;
-}
Deleted: branches/release/tools/quickbook/detail/quickbook.hpp
==============================================================================
--- branches/release/tools/quickbook/detail/quickbook.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,47 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2009 Daniel James
-    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_QUICKBOOK_HPP)
-#define BOOST_SPIRIT_QUICKBOOK_QUICKBOOK_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_;
-        }
-
-        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_);
-    }
-}
-
-#endif
Deleted: branches/release/tools/quickbook/detail/template_stack.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/template_stack.cpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,85 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2002 2004 2006 Joel de Guzman
-    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)
-=============================================================================*/
-#include "./template_stack.hpp"
-
-#ifdef BOOST_MSVC
-#pragma warning(disable : 4355)
-#endif
-
-namespace quickbook
-{
-    template_stack::template_stack()
-        : scope(template_stack::parser(*this))
-        , scopes()
-    {
-        scopes.push_front(template_scope());
-    }
-    
-    template_symbol* template_stack::find(std::string const& symbol) const
-    {
-        for (template_scope const* i = &*scopes.begin(); i; i = i->parent_scope)
-        {
-            if (template_symbol* ts = boost::spirit::classic::find(i->symbols, symbol.c_str()))
-                return ts;
-        }
-        return 0;
-    }
-
-    template_symbol* template_stack::find_top_scope(std::string const& symbol) const
-    {
-        return boost::spirit::classic::find(scopes.front().symbols, symbol.c_str());
-    }
-
-    template_symbols const& template_stack::top() const
-    {
-        BOOST_ASSERT(!scopes.empty());
-        return scopes.front().symbols;
-    }
-
-    template_scope const& template_stack::top_scope() const
-    {
-        BOOST_ASSERT(!scopes.empty());
-        return scopes.front();
-    }
-    
-    // TODO: Should symbols defined by '[import]' use the current scope?
-    bool template_stack::add(template_symbol const& ts)
-    {
-        BOOST_ASSERT(!scopes.empty());
-        BOOST_ASSERT(ts.parent);
-        
-        if (this->find_top_scope(ts.identifier)) {
-            return false;
-        }
-        
-        boost::spirit::classic::add(scopes.front().symbols,
-            ts.identifier.c_str(), ts);
-
-        return true;
-    }
-    
-    void template_stack::push()
-    {
-        template_scope const& old_front = scopes.front();
-        scopes.push_front(template_scope());
-        set_parent_scope(old_front);
-    }
-
-    void template_stack::pop()
-    {
-        scopes.pop_front();
-    }
-
-    void template_stack::set_parent_scope(template_scope const& parent)
-    {
-        scopes.front().parent_scope = &parent;
-    }
-}
-
-
Deleted: branches/release/tools/quickbook/detail/template_stack.hpp
==============================================================================
--- branches/release/tools/quickbook/detail/template_stack.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,150 +0,0 @@
-/*=============================================================================
-    Copyright (c) 2002 2004 2006 Joel de Guzman
-    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_TEMPLATE_STACK_HPP)
-#define BOOST_SPIRIT_QUICKBOOK_TEMPLATE_STACK_HPP
-
-#include <string>
-#include <deque>
-#include <vector>
-#include <boost/tuple/tuple.hpp>
-#include <boost/assert.hpp>
-#include <boost/spirit/include/classic_position_iterator.hpp>
-#include <boost/spirit/include/classic_functor_parser.hpp>
-#include <boost/spirit/include/classic_symbols.hpp>
-#include <boost/next_prior.hpp>
-
-namespace quickbook
-{
-    struct template_body
-    {
-        template_body(
-                std::string const& content,
-                boost::spirit::classic::file_position position,
-                bool is_block
-            )
-            : content(content)
-            , position(position)
-            , is_block(is_block)
-        {
-        }
-    
-        std::string content;
-        boost::spirit::classic::file_position position;
-        bool is_block;
-    };
-
-    struct template_scope;
-
-    struct template_symbol
-    {
-        template_symbol(
-                std::string const& identifier,
-                std::vector<std::string> const& params,
-                std::string const& body,
-                boost::spirit::classic::file_position const& position,
-                bool is_block,
-                template_scope const* parent = 0)
-           : identifier(identifier)
-           , params(params)
-           , body(body, position, is_block)
-           , parent(parent)
-           , callout(false)
-           , callouts() {}
-
-        std::string identifier;
-        std::vector<std::string> params;
-        template_body body;
-        
-        // This is only used for quickbook 1.5+, 1.4 uses the dynamic scope.
-        // TODO: I should probably call this something like lexical_parent
-        // or static_parent for clarity.
-        template_scope const* parent;
-
-        bool callout;
-        std::vector<template_body> callouts;
-    };
-
-    typedef boost::spirit::classic::symbols<template_symbol> template_symbols;
-    
-    // template scope
-    //
-    // 1.4-: parent_scope is the previous scope on the stack
-    //       (the template's dynamic parent).
-    // 1.5+: parent_scope is the template's lexical parent.
-    //
-    // This means that a search along the parent_scope chain will follow the
-    // correct lookup chain for that version of quickboook.
-    //
-    // symbols contains the templates defined in this scope.
-    
-    struct template_scope
-    {
-        template_scope() : parent_scope() {}
-        template_scope const* parent_scope;
-        template_symbols symbols;
-    };
-
-    struct template_stack
-    {
-        typedef std::deque<template_scope> deque;
-
-        struct parser
-        {
-            typedef boost::spirit::classic::nil_t result_t;
-
-            parser(template_stack& ts)
-                : ts(ts) {}
-
-            template <typename Scanner>
-            std::ptrdiff_t
-            operator()(Scanner const& scan, result_t) const
-            {
-                // search all scopes for the longest matching symbol.
-                typename Scanner::iterator_t f = scan.first;
-                std::ptrdiff_t len = -1;
-                for (template_scope const* i = &*ts.scopes.begin(); i; i = i->parent_scope)
-                {
-                    boost::spirit::classic::match<> m = i->symbols.parse(scan);
-                    if (m.length() > len)
-                        len = m.length();
-                    scan.first = f;
-                }
-                if (len >= 0)
-                    scan.first = boost::next(f, len);
-                return len;
-            }
-
-            template_stack& ts;
-        };
-
-        template_stack();
-        template_symbol* find(std::string const& symbol) const;
-        template_symbol* find_top_scope(std::string const& symbol) const;
-        template_symbols const& top() const;
-        template_scope const& top_scope() const;
-        // Add the given template symbol to the current scope.
-        // If it doesn't have a scope, sets the symbol's scope to the current scope.
-        bool add(template_symbol const&);
-        void push();
-        void pop();
-
-        // Set the current scope's parent.
-        void set_parent_scope(template_scope const&);
-
-        boost::spirit::classic::functor_parser<parser> scope;
-
-    private:
-
-        friend struct parser;
-        deque scopes;
-    };
-}
-
-#endif // BOOST_SPIRIT_QUICKBOOK_TEMPLATE_STACK_HPP
-
Deleted: branches/release/tools/quickbook/detail/utils.cpp
==============================================================================
--- branches/release/tools/quickbook/detail/utils.cpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,321 +0,0 @@
-/*=============================================================================
-    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)
-=============================================================================*/
-#include "./utils.hpp"
-#include <boost/spirit/include/classic_core.hpp>
-
-#include <cctype>
-#include <cstring>
-#include <stdexcept>
-#include <fstream>
-#include <iostream>
-#include <map>
-
-namespace quickbook {
-    extern bool ms_errors;
-}
-
-namespace quickbook { namespace detail
-{
-    void print_char(char ch, std::ostream& out)
-    {
-        switch (ch)
-        {
-            case '<': out << "<";    break;
-            case '>': out << ">";    break;
-            case '&': out << "&";   break;
-            case '"': out << """;  break;
-            default:  out << ch;        break;
-            // note ' is not included. see the curse of apos:
-            // http://fishbowl.pastiche.org/2003/07/01/the_curse_of_apos
-        }
-    }
-
-    void print_string(std::basic_string<char> const& str, std::ostream& out)
-    {
-        for (std::string::const_iterator cur = str.begin();
-            cur != str.end(); ++cur)
-        {
-            print_char(*cur, out);
-        }
-    }
-
-    void print_space(char ch, std::ostream& out)
-    {
-        out << ch;
-    }
-
-    char filter_identifier_char(char ch)
-    {
-        if (!std::isalnum(static_cast<unsigned char>(ch)))
-            ch = '_';
-        return static_cast<char>(std::tolower(static_cast<unsigned char>(ch)));
-    }
-
-    // un-indent a code segment
-    void unindent(std::string& program)
-    {
-        // Erase leading blank lines and newlines:
-        std::string::size_type start = program.find_first_not_of(" \t");
-        if (start != std::string::npos &&
-            (program[start] == '\r' || program[start] == '\n'))
-        {
-            program.erase(0, start);
-        }
-        start = program.find_first_not_of("\r\n");
-        program.erase(0, start);
-
-        if (program.size() == 0)
-            return; // nothing left to do
-
-        // Get the first line indent
-        std::string::size_type indent = program.find_first_not_of(" \t");
-        std::string::size_type pos = 0;
-        if (std::string::npos == indent)
-        {
-            // Nothing left to do here. The code is empty (just spaces).
-            // We clear the program to signal the caller that it is empty
-            // and return early.
-            program.clear();
-            return;
-        }
-
-        // Calculate the minimum indent from the rest of the lines
-        do
-        {
-            pos = program.find_first_not_of("\r\n", pos);
-            if (std::string::npos == pos)
-                break;
-
-            std::string::size_type n = program.find_first_not_of(" \t", pos);
-            if (n != std::string::npos)
-            {
-                char ch = program[n];
-                if (ch != '\r' && ch != '\n') // ignore empty lines
-                    indent = (std::min)(indent, n-pos);
-            }
-        }
-        while (std::string::npos != (pos = program.find_first_of("\r\n", pos)));
-
-        // Trim white spaces from column 0..indent
-        pos = 0;
-        program.erase(0, indent);
-        while (std::string::npos != (pos = program.find_first_of("\r\n", pos)))
-        {
-            if (std::string::npos == (pos = program.find_first_not_of("\r\n", pos)))
-            {
-                break;
-            }
-
-            std::string::size_type next = program.find_first_of("\r\n", pos);
-            program.erase(pos, (std::min)(indent, next-pos));
-        }
-    }
-
-    // remove the extension from a filename
-    std::string
-    remove_extension(std::string const& filename)
-    {
-        std::string::size_type const n = filename.find_last_of('.');
-        if(std::string::npos == n)
-        {
-            return filename;
-        }
-        else
-        {
-            return std::string(filename.begin(), filename.begin()+n);
-        }
-    }
-
-    std::string escape_uri(std::string uri)
-    {
-        for (std::string::size_type n = 0; n < uri.size(); ++n)
-        {
-            static char const mark[] = "-_.!~*'()?\\/";
-            if((!std::isalnum(static_cast<unsigned char>(uri[n])) || 127 < static_cast<unsigned char>(uri[n]))
-              && 0 == std::strchr(mark, uri[n]))
-            {
-                static char const hex[] = "0123456789abcdef";
-                char escape[] = { hex[uri[n] / 16], hex[uri[n] % 16] };
-                uri.insert(n + 1, escape, 2);
-                uri[n] = '%';
-                n += 2;
-            }
-        }
-        return uri;
-    }
-
-    std::ostream& outerr(std::string const& file, int line)
-    {
-        if (line >= 0)
-        {
-            if (ms_errors)
-                return std::clog << file << "(" << line << "): error: ";
-            else
-                return std::clog << file << ":" << line << ": error: ";
-        }
-        else
-        {
-            return std::clog << file << ": error: ";
-        }
-    }
-
-    std::ostream& outwarn(std::string const& file, int line)
-    {
-        if (line >= 0)
-        {
-            if (ms_errors)
-                return std::clog << file << "(" << line << "): warning: ";
-            else
-                return std::clog << file << ":" << line << ": warning: ";
-        }
-        else
-        {
-            return std::clog << file << ": warning: ";
-        }
-    }
-
-    // Read the first few bytes in a file to see it starts with a byte order
-    // mark. If it doesn't, then write the characters we've already read in.
-    // Although, given how UTF-8 works, if we've read anything in, the files
-    // probably broken.
-
-    template <class InputIterator, class OutputIterator>
-    bool check_bom(InputIterator& begin, InputIterator end,
-            OutputIterator out, char const* chars, int length)
-    {
-        char const* ptr = chars;
-
-        while(begin != end && *begin == *ptr) {
-            ++begin;
-            ++ptr;
-            --length;
-            if(length == 0) return true;
-        }
-
-        // Failed to match, so write the skipped characters to storage:
-        while(chars != ptr) *out++ = *chars++;
-
-        return false;
-    }
-    
-    template <class InputIterator, class OutputIterator>
-    std::string read_bom(InputIterator& begin, InputIterator end,
-            OutputIterator out)
-    {
-        if(begin == end) return "";
-
-        const char* utf8 = "\xef\xbb\xbf" ;
-        const char* utf32be = "\0\0\xfe\xff";
-        const char* utf32le = "\xff\xfe\0\0";
-
-        unsigned char c = *begin;
-        switch(c)
-        {
-        case 0xEF: { // UTF-8
-            return check_bom(begin, end, out, utf8, 3) ? "UTF-8" : "";
-        }
-        case 0xFF: // UTF-16/UTF-32 little endian
-            return !check_bom(begin, end, out, utf32le, 2) ? "" :
-                check_bom(begin, end, out, utf32le + 2, 2) ? "UTF-32" : "UTF-16";
-        case 0: // UTF-32 big endian
-            return check_bom(begin, end, out, utf32be, 4) ? "UTF-32" : "";
-        case 0xFE: // UTF-16 big endian
-            return check_bom(begin, end, out, utf32be + 2, 2) ? "UTF-16" : "";
-        default:
-            return "";
-        }
-    }
-
-    // Copy a string, converting mac and windows style newlines to unix
-    // newlines.
-
-    template <class InputIterator, class OutputIterator>
-    bool normalize(InputIterator begin, InputIterator end,
-            OutputIterator out, std::string const& filename)
-    {
-        std::string encoding = read_bom(begin, end, out);
-
-        if(encoding != "UTF-8" && encoding != "") {
-            outerr(filename) << encoding << " is not supported. Please use UTF-8."
-                << std::endl;
-
-            return false;
-        }
-    
-        while(begin != end) {
-            if(*begin == '\r') {
-                *out++ = '\n';
-                ++begin;
-                if(begin != end && *begin == '\n') ++begin;
-            }
-            else {
-                *out++ = *begin++;
-            }
-        }
-        
-        return true;
-    }
-
-    int load(std::string const& filename, std::string& storage)
-    {
-        using std::cerr;
-        using std::endl;
-        using std::ios;
-        using std::ifstream;
-        using std::istream_iterator;
-
-        ifstream in(filename.c_str(), std::ios_base::in);
-
-        if (!in)
-        {
-            outerr(filename) << "Could not open input file." << endl;
-            return 1;
-        }
-
-        // Turn off white space skipping on the stream
-        in.unsetf(ios::skipws);
-
-        if(!normalize(
-            istream_iterator<char>(in),
-            istream_iterator<char>(),
-            std::back_inserter(storage),
-            filename))
-        {
-            return 1;
-        }
-
-        //  ensure that we have enough trailing newlines to eliminate
-        //  the need to check for end of file in the grammar.
-        storage.push_back('\n');
-        storage.push_back('\n');
-        return 0;
-    }
-
-    file_type get_file_type(std::string const& extension)
-    {
-        static std::map<std::string, file_type> ftypes;
-        if (ftypes.empty())
-        {
-            // init the map of types
-            ftypes["cpp"] = cpp_file;
-            ftypes["hpp"] = cpp_file;
-            ftypes["h"] = cpp_file;
-            ftypes["c"] = cpp_file;
-            ftypes["cxx"] = cpp_file;
-            ftypes["hxx"] = cpp_file;
-            ftypes["ipp"] = cpp_file;
-            ftypes["py"] = python_file;
-        }
-        return ftypes[extension];
-    }
-
-}}
-
-
Deleted: branches/release/tools/quickbook/detail/utils.hpp
==============================================================================
--- branches/release/tools/quickbook/detail/utils.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,86 +0,0 @@
-/*=============================================================================
-    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_UTILS_HPP)
-#define BOOST_SPIRIT_QUICKBOOK_UTILS_HPP
-
-#include <string>
-#include <iostream>
-#include <cctype>
-#include <boost/ref.hpp>
-#include <boost/assert.hpp>
-
-namespace quickbook { namespace detail
-{
-    void print_char(char ch, std::ostream& out);
-    void print_string(std::basic_string<char> const& str, std::ostream& out);
-    void print_space(char ch, std::ostream& out);
-    char filter_identifier_char(char ch);
-
-    template <typename Iterator>
-    inline std::string
-    make_identifier(Iterator const& first, Iterator const& last)
-    {
-        std::string out_name;
-        for (Iterator i = first; i != last; ++i)
-            out_name += filter_identifier_char(*i);
-        return out_name;
-    }
-
-    template <typename T>
-    struct var_wrapper
-        : public ::boost::reference_wrapper<T>
-    {
-        typedef ::boost::reference_wrapper<T> parent;
-
-        explicit inline var_wrapper(T& t) : parent(t) {}
-
-        inline T& operator()() const { return parent::get(); }
-    };
-
-    template <typename T>
-    inline var_wrapper<T>
-    var(T& t)
-    {
-        return var_wrapper<T>(t);
-    }
-
-    // un-indent a code segment
-    void unindent(std::string& program);
-
-    // remove the extension from a filename
-    std::string remove_extension(std::string const& filename);
-
-    std::string escape_uri(std::string uri);
-
-    // Preformats an error/warning message so that it can be parsed by
-    // common IDEs. Uses the ms_errors global to determine if VS format
-    // or GCC format. Returns the stream to continue ouput of the verbose
-    // error message.
-    std::ostream & outerr(std::string const& file, int line = -1);
-    std::ostream & outwarn(std::string const& file, int line = -1);
-
-    // load file into memory with extra trailing newlines to eliminate
-    //  the need to check for end of file in the grammar.
-    int load(std::string const& filename, std::string& storage);
-
-    // given a file extension, return the type of the source file
-    // we'll have an internal database for known file types.
-
-    enum file_type
-    {
-        cpp_file
-      , python_file
-    };
-
-    file_type get_file_type(std::string const& extension);
-}}
-
-#endif // BOOST_SPIRIT_QUICKBOOK_UTILS_HPP
-
Modified: branches/release/tools/quickbook/doc/quickbook.qbk
==============================================================================
--- branches/release/tools/quickbook/doc/quickbook.qbk	(original)
+++ branches/release/tools/quickbook/doc/quickbook.qbk	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -230,6 +230,9 @@
 * In docbook, variable list entries can only have one `listitem`, so if an
   entry has multiple values, merge them into one `listitem`.
 * Support nested code snippets.
+* Allow escapes in doc info fields (apart from `\n`).
+* Don't escape the raw markup for versions less than 1.3, for better
+  compatibility with older documentation.
 * Further work on quickbook 1.6, still not stable.
   * Allow heading to have ids, using the syntax: `[heading:id title]`.
 
Deleted: branches/release/tools/quickbook/doc_info.hpp
==============================================================================
--- branches/release/tools/quickbook/doc_info.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,201 +0,0 @@
-/*=============================================================================
-    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_DOC_INFO_HPP)
-#define BOOST_SPIRIT_QUICKBOOK_DOC_INFO_HPP
-
-#include "./phrase.hpp"
-#include "./detail/quickbook.hpp"
-#include <boost/spirit/include/classic_core.hpp>
-#include <boost/spirit/include/classic_actor.hpp>
-#include <boost/spirit/include/classic_loops.hpp>
-#include <boost/spirit/include/classic_symbols.hpp>
-
-namespace quickbook
-{
-    using namespace boost::spirit::classic;
-
-    template <typename Actions>
-    struct doc_info_grammar
-    : public grammar<doc_info_grammar<Actions> >
-    {
-        doc_info_grammar(Actions& actions)
-            : actions(actions) {}
-
-        template <typename Scanner>
-        struct definition
-        {
-            typedef uint_parser<int, 10, 1, 2>  uint2_t;
-
-            definition(doc_info_grammar const& self)
-                : unused(false), common(self.actions, unused)
-            {
-                Actions& actions = self.actions;
-
-                doc_types =
-                    "book", "article", "library", "chapter", "part"
-                  , "appendix", "preface", "qandadiv", "qandaset"
-                  , "reference", "set"
-                ;
-                
-                doc_info =
-                    space
-                    >> '[' >> space
-                    >> (doc_types >> eps_p)         [assign_a(actions.doc_type)]
-                    >> hard_space
-                    >>  (  *(anychar_p -
-                            (ch_p('[') | ']' | eol_p)
-                            )
-                        )                           [assign_a(actions.doc_title)]
-                    >>  !(
-                            space >> '[' >>
-                                quickbook_version
-                            >> space >> ']'
-                        )
-                    >>
-                        *(
-                            space >> '[' >>
-                            (
-                              doc_version
-                            | doc_id
-                            | doc_dirname
-                            | doc_copyright         [push_back_a(actions.doc_copyrights, copyright)]
-                            | doc_purpose           [actions.extract_doc_purpose]
-                            | doc_category
-                            | doc_authors
-                            | doc_license           [actions.extract_doc_license]
-                            | doc_last_revision
-                            | doc_source_mode
-                            )
-                            >> space >> ']' >> +eol_p
-                        )
-                    >> space >> ']' >> +eol_p
-                    ;
-
-                quickbook_version =
-                        "quickbook" >> hard_space
-                    >>  (   uint_p                  [assign_a(qbk_major_version)]
-                            >> '.' 
-                            >>  uint2_t()           [assign_a(qbk_minor_version)]
-                        )
-                    ;
-
-                doc_version =
-                        "version" >> hard_space
-                    >> (*(anychar_p - ']'))         [assign_a(actions.doc_version)]
-                    ;
-
-                doc_id =
-                        "id" >> hard_space
-                    >> (*(anychar_p - ']'))         [assign_a(actions.doc_id)]
-                    ;
-
-                doc_dirname =
-                        "dirname" >> hard_space
-                    >> (*(anychar_p - ']'))         [assign_a(actions.doc_dirname)]
-                    ;
-
-                doc_copyright =
-                        "copyright" >> hard_space   [clear_a(copyright.first)]
-                    >> +( repeat_p(4)[digit_p]      [push_back_a(copyright.first)]
-                          >> space
-                        )
-                    >> space
-                    >> (*(anychar_p - ']'))         [assign_a(copyright.second)]
-                    ;
-
-                doc_purpose =
-                        "purpose" >> hard_space
-                    >> phrase                       [assign_a(actions.doc_purpose_1_1)]
-                    ;
-
-                doc_category =
-                        "category" >> hard_space
-                    >> (*(anychar_p - ']'))         [push_back_a(actions.doc_categories)]
-                    ;
-
-                doc_author =
-                        '[' >> space
-                    >>  (*(anychar_p - ','))        [assign_a(name.second)] // surname
-                    >>  ',' >> space
-                    >>  (*(anychar_p - ']'))        [assign_a(name.first)] // firstname
-                    >>  ']'
-                    ;
-
-                doc_authors =
-                        "authors"
-                    >>  hard_space
-                    >>  doc_author                  [push_back_a(actions.doc_authors, name)]
-                    >>  space
-                    >>  *(  !(ch_p(',') >> space)
-                        >>  doc_author              [push_back_a(actions.doc_authors, name)]
-                        >>  space
-                        )
-                    ;
-
-                doc_license =
-                        "license" >> hard_space
-                    >> phrase                       [assign_a(actions.doc_license_1_1)]
-                    ;
-
-                doc_last_revision =
-                        "last-revision" >> hard_space
-                    >> (*(anychar_p - ']'))         [assign_a(actions.doc_last_revision)]
-                    ;
-
-                doc_source_mode =
-                        "source-mode" >> hard_space
-                    >>  (
-                           str_p("c++") 
-                        |  "python"
-                        |  "teletype"
-                        )                           [assign_a(actions.source_mode)]
-                    ;
-
-                comment =
-                    "[/" >> *(anychar_p - ']') >> ']'
-                    ;
-
-                space =
-                    *(space_p | comment)
-                    ;
-
-                hard_space =
-                    (eps_p - (alnum_p | '_')) >> space  // must not be preceded by
-                    ;                                   // alpha-numeric or underscore
-
-                phrase =
-                   *(   common
-                    |   comment
-                    |   (anychar_p - ']')           [actions.plain_char]
-                    )
-                    ;
-            }
-
-            bool unused;
-            std::pair<std::string, std::string> name;
-            std::pair<std::vector<std::string>, std::string> copyright;
-            std::string category;
-            rule<Scanner>   doc_info, doc_title, doc_version, doc_id, doc_dirname,
-                            doc_copyright, doc_purpose, doc_category, doc_authors,
-                            doc_author, comment, space, hard_space, doc_license,
-                            doc_last_revision, doc_source_mode, phrase, quickbook_version;
-            phrase_grammar<Actions> common;
-            symbols<> doc_types;
-
-            rule<Scanner> const&
-            start() const { return doc_info; }
-        };
-
-        Actions& actions;
-    };
-}
-
-#endif // BOOST_SPIRIT_QUICKBOOK_DOC_INFO_HPP
-
Deleted: branches/release/tools/quickbook/phrase.hpp
==============================================================================
--- branches/release/tools/quickbook/phrase.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,540 +0,0 @@
-/*=============================================================================
-    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_PHRASE_HPP)
-#define BOOST_SPIRIT_QUICKBOOK_PHRASE_HPP
-
-#include "./detail/quickbook.hpp"
-#include "detail/utils.hpp"
-#include <boost/spirit/include/classic_core.hpp>
-#include <boost/spirit/include/classic_confix.hpp>
-#include <boost/spirit/include/classic_chset.hpp>
-#include <boost/spirit/include/classic_assign_actor.hpp>
-#include <boost/spirit/include/classic_clear_actor.hpp>
-#include <boost/spirit/include/classic_if.hpp>
-
-namespace quickbook
-{
-    using namespace boost::spirit::classic;
-
-    template <typename Rule, typename Action>
-    inline void
-    simple_markup(
-        Rule& simple
-      , char mark
-      , Action const& action
-      , Rule const& close
-    )
-    {
-        simple =
-            mark >>
-            (
-                (
-                    graph_p                     // A single char. e.g. *c*
-                    >> eps_p(mark
-                        >> (space_p | punct_p | end_p))
-                                                // space_p, punct_p or end_p
-                )                               // must follow mark
-            |
-                (   graph_p >>                  // graph_p must follow mark
-                    *(anychar_p -
-                        (   (graph_p >> mark)   // Make sure that we don't go
-                        |   close               // past a single block
-                        )
-                    ) >> graph_p                // graph_p must precede mark
-                    >> eps_p(mark
-                        >> (space_p | punct_p | end_p))
-                                                // space_p, punct_p or end_p
-                )                               // must follow mark
-            )                                   [action]
-            >> mark
-            ;
-    }
-
-    template <typename Actions>
-    struct phrase_grammar : grammar<phrase_grammar<Actions> >
-    {
-        phrase_grammar(Actions& actions, bool& no_eols)
-            : no_eols(no_eols), actions(actions) {}
-
-        template <typename Scanner>
-        struct definition
-        {
-            definition(phrase_grammar const& self)
-            {
-                using detail::var;
-                Actions& actions = self.actions;
-
-                space =
-                    *(space_p | comment)
-                    ;
-
-                blank =
-                    *(blank_p | comment)
-                    ;
-
-                eol = blank >> eol_p
-                    ;
-
-                phrase_end =
-                    ']' |
-                    if_p(var(self.no_eols))
-                    [
-                        eol >> eol                      // Make sure that we don't go
-                    ]                                   // past a single block, except
-                    ;                                   // when preformatted.
-
-                hard_space =
-                    (eps_p - (alnum_p | '_')) >> space  // must not be preceded by
-                    ;                                   // alpha-numeric or underscore
-
-                comment =
-                    "[/" >> *(dummy_block | (anychar_p - ']')) >> ']'
-                    ;
-
-                dummy_block =
-                    '[' >> *(dummy_block | (anychar_p - ']')) >> ']'
-                    ;
-
-                common =
-                        macro
-                    |   phrase_markup
-                    |   code_block
-                    |   inline_code
-                    |   simple_format
-                    |   escape
-                    |   comment
-                    ;
-
-                macro =
-                    eps_p(actions.macro                 // must not be followed by
-                        >> (eps_p - (alpha_p | '_')))   // alpha or underscore
-                    >> actions.macro                    [actions.do_macro]
-                    ;
-
-                static const bool true_ = true;
-                static const bool false_ = false;
-
-                template_ =
-                    (
-                        ch_p('`')                       [assign_a(actions.template_escape,true_)]
-                        |
-                        eps_p                           [assign_a(actions.template_escape,false_)]
-                    )
-                    >>
-                    ( (
-                        (eps_p(punct_p)
-                            >> actions.templates.scope
-                        )                               [assign_a(actions.template_identifier)]
-                                                        [clear_a(actions.template_args)]
-                        >> !template_args
-                    ) | (
-                        (actions.templates.scope
-                            >> eps_p(hard_space)
-                        )                               [assign_a(actions.template_identifier)]
-                                                        [clear_a(actions.template_args)]
-                        >> space
-                        >> !template_args
-                    ) )
-                    >> eps_p(']')
-                    ;
-
-                template_args =
-                    if_p(qbk_since(105u)) [
-                        template_args_1_5
-                    ].else_p [
-                        template_args_1_4
-                    ]
-                    ;
-
-                template_args_1_4 = template_arg_1_4 >> *(".." >> template_arg_1_4);
-
-                template_arg_1_4 =
-                        (   eps_p(*blank_p >> eol_p)    [assign_a(actions.template_block, true_)]
-                        |   eps_p                       [assign_a(actions.template_block, false_)]
-                        )
-                    >>  template_inner_arg_1_4          [actions.template_arg]
-                    ;
-
-                template_inner_arg_1_4 =
-                    +(brackets_1_4 | (anychar_p - (str_p("..") | ']')))
-                    ;
-
-                brackets_1_4 =
-                    '[' >> template_inner_arg_1_4 >> ']'
-                    ;
-
-                template_args_1_5 = template_arg_1_5 >> *(".." >> template_arg_1_5);
-
-                template_arg_1_5 =
-                        (   eps_p(*blank_p >> eol_p)    [assign_a(actions.template_block, true_)]
-                        |   eps_p                       [assign_a(actions.template_block, false_)]
-                        )
-                    >>  (+(brackets_1_5 | ('\\' >> anychar_p) | (anychar_p - (str_p("..") | '[' | ']'))))
-                                                        [actions.template_arg]
-                    ;
-
-                template_inner_arg_1_5 =
-                    +(brackets_1_5 | ('\\' >> anychar_p) | (anychar_p - (str_p('[') | ']')))
-                    ;
-
-                brackets_1_5 =
-                    '[' >> template_inner_arg_1_5 >> ']'
-                    ;
-
-                inline_code =
-                    '`' >>
-                    (
-                       *(anychar_p -
-                            (   '`'
-                            |   (eol >> eol)            // Make sure that we don't go
-                            )                           // past a single block
-                        ) >> eps_p('`')
-                    )                                   [actions.inline_code]
-                    >>  '`'
-                    ;
-
-                code_block =
-                        (
-                            "```" >>
-                            (
-                               *(anychar_p - "```")
-                                    >> eps_p("```")
-                            )                           [actions.code_block]
-                            >>  "```"
-                        )
-                    |   (
-                            "``" >>
-                            (
-                               *(anychar_p - "``")
-                                    >> eps_p("``")
-                            )                           [actions.code_block]
-                            >>  "``"
-                        )
-                    ;
-
-                simple_format =
-                        simple_bold
-                    |   simple_italic
-                    |   simple_underline
-                    |   simple_teletype
-                    ;
-
-                simple_phrase_end = '[' | phrase_end;
-
-                simple_markup(simple_bold,
-                    '*', actions.simple_bold, simple_phrase_end);
-                simple_markup(simple_italic,
-                    '/', actions.simple_italic, simple_phrase_end);
-                simple_markup(simple_underline,
-                    '_', actions.simple_underline, simple_phrase_end);
-                simple_markup(simple_teletype,
-                    '=', actions.simple_teletype, simple_phrase_end);
-
-                phrase =
-                   *(   common
-                    |   comment
-                    |   (anychar_p - phrase_end)        [actions.plain_char]
-                    )
-                    ;
-
-                phrase_markup =
-                        '['
-                    >>  (   cond_phrase
-                        |   image
-                        |   url
-                        |   link
-                        |   anchor
-                        |   source_mode
-                        |   funcref
-                        |   classref
-                        |   memberref
-                        |   enumref
-                        |   macroref
-                        |   headerref
-                        |   conceptref
-                        |   globalref
-                        |   bold
-                        |   italic
-                        |   underline
-                        |   teletype
-                        |   strikethrough
-                        |   quote
-                        |   replaceable
-                        |   footnote
-                        |   template_                   [actions.do_template]
-                        |   str_p("br")                 [actions.break_]
-                        )
-                    >>  ']'
-                    ;
-
-                escape =
-                        str_p("\\n")                    [actions.break_]
-                    |   "\\ "                           // ignore an escaped char
-                    |   '\\' >> punct_p                 [actions.raw_char]
-                    |   "\\u" >> repeat_p(4) [chset<>("0-9a-fA-F")]
-                                                        [actions.escape_unicode]
-                    |   "\\U" >> repeat_p(8) [chset<>("0-9a-fA-F")]
-                                                        [actions.escape_unicode]
-                    |   (
-                            ("'''" >> !eol)             [actions.escape_pre]
-                        >>  *(anychar_p - "'''")        [actions.raw_char]
-                        >>  str_p("'''")                [actions.escape_post]
-                        )
-                    ;
-
-                macro_identifier =
-                    +(anychar_p - (space_p | ']'))
-                    ;
-
-                cond_phrase =
-                        '?' >> blank
-                    >>  macro_identifier                [actions.cond_phrase_pre]
-                    >>  (!phrase)                       [actions.cond_phrase_post]
-                    ;
-
-                image =
-                        '$' >> blank                    [clear_a(actions.attributes)]
-                    >>  if_p(qbk_since(105u)) [
-                                (+(
-                                    *space_p
-                                >>  +(anychar_p - (space_p | phrase_end | '['))
-                                ))                       [assign_a(actions.image_fileref)]
-                            >>  hard_space
-                            >>  *(
-                                    '['
-                                >>  (*(alnum_p | '_'))  [assign_a(actions.attribute_name)]
-                                >>  space
-                                >>  (*(anychar_p - (phrase_end | '[')))
-                                                        [actions.attribute]
-                                >>  ']'
-                                >>  space
-                                )
-                        ].else_p [
-                                (*(anychar_p -
-                                    phrase_end))        [assign_a(actions.image_fileref)]
-                        ]
-                    >>  eps_p(']')                      [actions.image]
-                    ;
-                    
-                url =
-                        '@'
-                    >>  (*(anychar_p -
-                            (']' | hard_space)))        [actions.url_pre]
-                    >>  (   eps_p(']')
-                        |   (hard_space >> phrase)
-                        )                               [actions.url_post]
-                    ;
-
-                link =
-                        "link" >> hard_space
-                    >>  (*(anychar_p -
-                            (']' | hard_space)))        [actions.link_pre]
-                    >>  (   eps_p(']')
-                        |   (hard_space >> phrase)
-                        )                               [actions.link_post]
-                    ;
-
-                anchor =
-                        '#'
-                    >>  blank
-                    >>  (   *(anychar_p -
-                                phrase_end)
-                        )                               [actions.anchor]
-                    ;
-
-                funcref =
-                    "funcref" >> hard_space
-                    >>  (*(anychar_p -
-                            (']' | hard_space)))        [actions.funcref_pre]
-                    >>  (   eps_p(']')
-                        |   (hard_space >> phrase)
-                        )                               [actions.funcref_post]
-                    ;
-
-                classref =
-                    "classref" >> hard_space
-                    >>  (*(anychar_p -
-                            (']' | hard_space)))        [actions.classref_pre]
-                    >>  (   eps_p(']')
-                        |   (hard_space >> phrase)
-                        )                               [actions.classref_post]
-                    ;
-
-                memberref =
-                    "memberref" >> hard_space
-                    >>  (*(anychar_p -
-                            (']' | hard_space)))        [actions.memberref_pre]
-                    >>  (   eps_p(']')
-                        |   (hard_space >> phrase)
-                        )                               [actions.memberref_post]
-                    ;
-
-                enumref =
-                    "enumref" >> hard_space
-                    >>  (*(anychar_p -
-                            (']' | hard_space)))        [actions.enumref_pre]
-                    >>  (   eps_p(']')
-                        |   (hard_space >> phrase)
-                        )                               [actions.enumref_post]
-                    ;
-
-                macroref =
-                    "macroref" >> hard_space
-                    >>  (*(anychar_p -
-                            (']' | hard_space)))        [actions.macroref_pre]
-                    >>  (   eps_p(']')
-                        |   (hard_space >> phrase)
-                        )                               [actions.macroref_post]
-                    ;
-
-                headerref =
-                    "headerref" >> hard_space
-                    >>  (*(anychar_p -
-                            (']' | hard_space)))        [actions.headerref_pre]
-                    >>  (   eps_p(']')
-                        |   (hard_space >> phrase)
-                        )                               [actions.headerref_post]
-                    ;
-
-                conceptref =
-                    "conceptref" >> hard_space
-                    >>  (*(anychar_p -
-                            (']' | hard_space)))        [actions.conceptref_pre]
-                    >>  (   eps_p(']')
-                        |   (hard_space >> phrase)
-                        )                               [actions.conceptref_post]
-                    ;
-
-                globalref =
-                    "globalref" >> hard_space
-                    >>  (*(anychar_p -
-                            (']' | hard_space)))        [actions.globalref_pre]
-                    >>  (   eps_p(']')
-                        |   (hard_space >> phrase)
-                        )                               [actions.globalref_post]
-                    ;
-
-                bold =
-                        ch_p('*')                       [actions.bold_pre]
-                    >>  blank >> phrase                 [actions.bold_post]
-                    ;
-
-                italic =
-                        ch_p('\'')                      [actions.italic_pre]
-                    >>  blank >> phrase                 [actions.italic_post]
-                    ;
-
-                underline =
-                        ch_p('_')                       [actions.underline_pre]
-                    >>  blank >> phrase                 [actions.underline_post]
-                    ;
-
-                teletype =
-                        ch_p('^')                       [actions.teletype_pre]
-                    >>  blank >> phrase                 [actions.teletype_post]
-                    ;
-
-                strikethrough =
-                        ch_p('-')                       [actions.strikethrough_pre]
-                    >>  blank >> phrase                 [actions.strikethrough_post]
-                    ;
-
-                quote =
-                        ch_p('"')                       [actions.quote_pre]
-                    >>  blank >> phrase                 [actions.quote_post]
-                    ;
-
-                replaceable =
-                        ch_p('~')                       [actions.replaceable_pre]
-                    >>  blank >> phrase                 [actions.replaceable_post]
-                    ;
-
-                source_mode =
-                    (
-                        str_p("c++")
-                    |   "python"
-                    |   "teletype"
-                    )                                   [assign_a(actions.source_mode)]
-                    ;
-
-                footnote =
-                        str_p("footnote")               [actions.footnote_pre]
-                    >>  blank >> phrase                 [actions.footnote_post]
-                    ;
-            }
-
-            rule<Scanner>   space, blank, comment, phrase, phrase_markup, image,
-                            simple_phrase_end, phrase_end, bold, italic, underline, teletype,
-                            strikethrough, escape, url, common, funcref, classref,
-                            memberref, enumref, macroref, headerref, conceptref, globalref,
-                            anchor, link, hard_space, eol, inline_code, simple_format,
-                            simple_bold, simple_italic, simple_underline,
-                            simple_teletype, source_mode, template_,
-                            quote, code_block, footnote, replaceable, macro,
-                            dummy_block, cond_phrase, macro_identifier, template_args,
-                            template_args_1_4, template_arg_1_4,
-                            template_inner_arg_1_4, brackets_1_4,
-                            template_args_1_5, template_arg_1_5,
-                            template_inner_arg_1_5, brackets_1_5
-                            ;
-
-            rule<Scanner> const&
-            start() const { return common; }
-        };
-
-        bool& no_eols;
-        Actions& actions;
-    };
-
-    template <typename Actions>
-    struct simple_phrase_grammar
-    : public grammar<simple_phrase_grammar<Actions> >
-    {
-        simple_phrase_grammar(Actions& actions)
-            : actions(actions) {}
-
-        template <typename Scanner>
-        struct definition
-        {
-            definition(simple_phrase_grammar const& self)
-                : unused(false), common(self.actions, unused)
-            {
-                Actions& actions = self.actions;
-
-                phrase =
-                   *(   common
-                    |   comment
-                    |   (anychar_p - ']')           [actions.plain_char]
-                    )
-                    ;
-
-                comment =
-                    "[/" >> *(dummy_block | (anychar_p - ']')) >> ']'
-                    ;
-
-                dummy_block =
-                    '[' >> *(dummy_block | (anychar_p - ']')) >> ']'
-                    ;
-            }
-
-            bool unused;
-            rule<Scanner> phrase, comment, dummy_block;
-            phrase_grammar<Actions> common;
-
-            rule<Scanner> const&
-            start() const { return phrase; }
-        };
-
-        Actions& actions;
-    };
-}
-
-#endif // BOOST_SPIRIT_QUICKBOOK_PHRASE_HPP
-
Deleted: branches/release/tools/quickbook/syntax_highlight.hpp
==============================================================================
--- branches/release/tools/quickbook/syntax_highlight.hpp	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
+++ (empty file)
@@ -1,407 +0,0 @@
-/*=============================================================================
-    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_SYNTAX_HIGHLIGHT_HPP)
-#define BOOST_SPIRIT_QUICKBOOK_SYNTAX_HIGHLIGHT_HPP
-
-#include <boost/spirit/include/classic_core.hpp>
-#include <boost/spirit/include/classic_confix.hpp>
-#include <boost/spirit/include/classic_chset.hpp>
-#include <boost/spirit/include/classic_symbols.hpp>
-#include <boost/spirit/include/classic_loops.hpp>
-#include "./phrase.hpp"
-
-namespace quickbook
-{
-    using namespace boost::spirit::classic;
-
-    // Grammar for C++ highlighting
-    template <
-        typename Process
-      , typename Space
-      , typename Macro
-      , typename DoMacro
-      , typename PreEscape
-      , typename PostEscape
-      , typename EscapeActions
-      , typename Unexpected
-      , typename Out>
-    struct cpp_highlight
-    : public grammar<cpp_highlight<Process, Space, Macro, DoMacro, PreEscape, PostEscape, EscapeActions, Unexpected, Out> >
-    {
-        cpp_highlight(Out& out, Macro const& macro, DoMacro do_macro, EscapeActions& escape_actions)
-        : out(out), macro(macro), do_macro(do_macro), escape_actions(escape_actions) {}
-
-        template <typename Scanner>
-        struct definition
-        {
-            definition(cpp_highlight const& self)
-                : common(self.escape_actions, unused)
-                , unused(false)
-            {
-                program
-                    =
-                    *(  (+space_p)      [Space(self.out)]
-                    |   macro
-                    |   escape
-                    |   preprocessor    [Process("preprocessor", self.out)]
-                    |   comment         [Process("comment", self.out)]
-                    |   keyword         [Process("keyword", self.out)]
-                    |   identifier      [Process("identifier", self.out)]
-                    |   special         [Process("special", self.out)]
-                    |   string_         [Process("string", self.out)]
-                    |   char_           [Process("char", self.out)]
-                    |   number          [Process("number", self.out)]
-                    |   repeat_p(1)[anychar_p] [Unexpected(self.out)]
-                    )
-                    ;
-
-                macro = 
-                    eps_p(self.macro                    // must not be followed by
-                        >> (eps_p - (alpha_p | '_')))   // alpha or underscore
-                    >> self.macro                       [self.do_macro]
-                    ;
-
-                qbk_phrase =
-                   *(   common
-                    |   (anychar_p - str_p("``"))   [self.escape_actions.plain_char]
-                    )
-                    ;
-
-                escape =
-                    str_p("``")         [PreEscape(self.escape_actions, save)]
-                    >>
-                    (
-                        (
-                            (
-                                (+(anychar_p - "``") >> eps_p("``"))
-                                & qbk_phrase
-                            )
-                            >>  str_p("``")
-                        )
-                        |
-                        (
-                            eps_p       [self.escape_actions.error]
-                            >> *anychar_p
-                        )
-                    )                   [PostEscape(self.out, self.escape_actions, save)]
-                    ;
-
-                preprocessor
-                    =   '#' >> *space_p >> ((alpha_p | '_') >> *(alnum_p | '_'))
-                    ;
-
-                comment
-                    =   comment_p("//") | comment_p("/*", "*/")
-                    ;
-
-                keyword
-                    =   keyword_ >> (eps_p - (alnum_p | '_'))
-                    ;   // make sure we recognize whole words only
-
-                keyword_
-                    =   "and_eq", "and", "asm", "auto", "bitand", "bitor",
-                        "bool", "break", "case", "catch", "char", "class",
-                        "compl", "const_cast", "const", "continue", "default",
-                        "delete", "do", "double", "dynamic_cast",  "else",
-                        "enum", "explicit", "export", "extern", "false",
-                        "float", "for", "friend", "goto", "if", "inline",
-                        "int", "long", "mutable", "namespace", "new", "not_eq",
-                        "not", "operator", "or_eq", "or", "private",
-                        "protected", "public", "register", "reinterpret_cast",
-                        "return", "short", "signed", "sizeof", "static",
-                        "static_cast", "struct", "switch", "template", "this",
-                        "throw", "true", "try", "typedef", "typeid",
-                        "typename", "union", "unsigned", "using", "virtual",
-                        "void", "volatile", "wchar_t", "while", "xor_eq", "xor"
-                    ;
-
-                special
-                    =   +chset_p("~!%^&*()+={[}]:;,<.>?/|\\-")
-                    ;
-
-                string_char = ('\\' >> anychar_p) | (anychar_p - '\\');
-
-                string_
-                    =   !as_lower_d['l'] >> confix_p('"', *string_char, '"')
-                    ;
-
-                char_
-                    =   !as_lower_d['l'] >> confix_p('\'', *string_char, '\'')
-                    ;
-
-                number
-                    =   (
-                            as_lower_d["0x"] >> hex_p
-                        |   '0' >> oct_p
-                        |   real_p
-                        )
-                        >>  *as_lower_d[chset_p("ldfu")]
-                    ;
-
-                identifier
-                    =   (alpha_p | '_') >> *(alnum_p | '_')
-                    ;
-            }
-
-            rule<Scanner>   program, macro, preprocessor, comment, special, string_, 
-                            char_, number, identifier, keyword, qbk_phrase, escape,
-                            string_char;
-
-            symbols<> keyword_;
-            phrase_grammar<EscapeActions> common;
-            std::string save;
-            bool unused;
-
-            rule<Scanner> const&
-            start() const { return program; }
-        };
-
-        Out& out;
-        Macro const& macro;
-        DoMacro do_macro;
-        EscapeActions& escape_actions;
-    };
-
-    // Grammar for Python highlighting
-    // See also: The Python Reference Manual
-    // http://docs.python.org/ref/ref.html
-    template <
-        typename Process
-      , typename Space
-      , typename Macro
-      , typename DoMacro
-      , typename PreEscape
-      , typename PostEscape
-      , typename EscapeActions
-      , typename Unexpected
-      , typename Out>
-    struct python_highlight
-    : public grammar<python_highlight<Process, Space, Macro, DoMacro, PreEscape, PostEscape, EscapeActions, Unexpected, Out> >
-    {
-        python_highlight(Out& out, Macro const& macro, DoMacro do_macro, EscapeActions& escape_actions)
-        : out(out), macro(macro), do_macro(do_macro), escape_actions(escape_actions) {}
-
-        template <typename Scanner>
-        struct definition
-        {
-            definition(python_highlight const& self)
-                : common(self.escape_actions, unused)
-                , unused(false)
-            {
-                program
-                    =
-                    *(  (+space_p)      [Space(self.out)]
-                    |   macro
-                    |   escape          
-                    |   comment         [Process("comment", self.out)]
-                    |   keyword         [Process("keyword", self.out)]
-                    |   identifier      [Process("identifier", self.out)]
-                    |   special         [Process("special", self.out)]
-                    |   string_         [Process("string", self.out)]
-                    |   number          [Process("number", self.out)]
-                    |   repeat_p(1)[anychar_p] [Unexpected(self.out)]
-                    )
-                    ;
-
-                macro = 
-                    eps_p(self.macro                    // must not be followed by
-                        >> (eps_p - (alpha_p | '_')))   // alpha or underscore
-                    >> self.macro                       [self.do_macro]
-                    ;
-
-                qbk_phrase =
-                   *(   common
-                    |   (anychar_p - str_p("``"))   [self.escape_actions.plain_char]
-                    )
-                    ;
-
-                escape =
-                    str_p("``")         [PreEscape(self.escape_actions, save)]
-                    >>
-                    (
-                        (
-                            (
-                                (+(anychar_p - "``") >> eps_p("``"))
-                                & qbk_phrase
-                            )
-                            >>  str_p("``")
-                        )
-                        |
-                        (
-                            eps_p       [self.escape_actions.error]
-                            >> *anychar_p
-                        )
-                    )                   [PostEscape(self.out, self.escape_actions, save)]
-                    ;
-
-                comment
-                    =   comment_p("#")
-                    ;
-
-                keyword
-                    =   keyword_ >> (eps_p - (alnum_p | '_'))
-                    ;   // make sure we recognize whole words only
-
-                keyword_
-                    =
-                    "and",       "del",       "for",       "is",        "raise",    
-                    "assert",    "elif",      "from",      "lambda",    "return",   
-                    "break",     "else",      "global",    "not",       "try",  
-                    "class",     "except",    "if",        "or",        "while",    
-                    "continue",  "exec",      "import",    "pass",      "yield",   
-                    "def",       "finally",   "in",        "print",
-
-                    // Technically "as" and "None" are not yet keywords (at Python
-                    // 2.4). They are destined to become keywords, and we treat them 
-                    // as such for syntax highlighting purposes.
-                    
-                    "as", "None"
-                    ;
-
-                special
-                    =   +chset_p("~!%^&*()+={[}]:;,<.>/|\\-")
-                    ;
-
-                string_prefix
-                    =    as_lower_d[str_p("u") >> ! str_p("r")]
-                    ;
-                
-                string_
-                    =   ! string_prefix >> (long_string | short_string)
-                    ;
-
-                string_char = ('\\' >> anychar_p) | (anychar_p - '\\');
-            
-                short_string
-                    =   confix_p('\'', * string_char, '\'') |
-                        confix_p('"', * string_char, '"')
-                    ;
-            
-                long_string
-                    // Note: the "str_p" on the next two lines work around
-                    // an INTERNAL COMPILER ERROR when using VC7.1
-                    =   confix_p(str_p("'''"), * string_char, "'''") |
-                        confix_p(str_p("\"\"\""), * string_char, "\"\"\"")
-                    ;
-                
-                number
-                    =   (
-                            as_lower_d["0x"] >> hex_p
-                        |   '0' >> oct_p
-                        |   real_p
-                        )
-                        >>  *as_lower_d[chset_p("lj")]
-                    ;
-
-                identifier
-                    =   (alpha_p | '_') >> *(alnum_p | '_')
-                    ;
-            }
-
-            rule<Scanner>   program, macro, comment, special, string_, string_prefix, 
-                            short_string, long_string, number, identifier, keyword, 
-                            qbk_phrase, escape, string_char;
-
-            symbols<> keyword_;
-            phrase_grammar<EscapeActions> common;
-            std::string save;
-            bool unused;
-
-            rule<Scanner> const&
-            start() const { return program; }
-        };
-
-        Out& out;
-        Macro const& macro;
-        DoMacro do_macro;
-        EscapeActions& escape_actions;
-    };
-
-    // Grammar for plain text (no actual highlighting)
-    template <
-        typename CharProcess
-      , typename Macro
-      , typename DoMacro
-      , typename PreEscape
-      , typename PostEscape
-      , typename EscapeActions
-      , typename Out>
-    struct teletype_highlight
-    : public grammar<teletype_highlight<CharProcess, Macro, DoMacro, PreEscape, PostEscape, EscapeActions, Out> >
-    {
-        teletype_highlight(Out& out, Macro const& macro, DoMacro do_macro, EscapeActions& escape_actions)
-        : out(out), macro(macro), do_macro(do_macro), escape_actions(escape_actions) {}
-
-        template <typename Scanner>
-        struct definition
-        {
-            definition(teletype_highlight const& self)
-                : common(self.escape_actions, unused)
-                , unused(false)
-            {
-                program
-                    =
-                    *(  macro
-                    |   escape          
-                    |   repeat_p(1)[anychar_p]          [CharProcess(self.out)]
-                    )
-                    ;
-
-                macro = 
-                    eps_p(self.macro                    // must not be followed by
-                        >> (eps_p - (alpha_p | '_')))   // alpha or underscore
-                    >> self.macro                       [self.do_macro]
-                    ;
-
-                qbk_phrase =
-                   *(   common
-                    |   (anychar_p - str_p("``"))   [self.escape_actions.plain_char]
-                    )
-                    ;
-
-                escape =
-                    str_p("``")         [PreEscape(self.escape_actions, save)]
-                    >>
-                    (
-                        (
-                            (
-                                (+(anychar_p - "``") >> eps_p("``"))
-                                & qbk_phrase
-                            )
-                            >>  str_p("``")
-                        )
-                        |
-                        (
-                            eps_p       [self.escape_actions.error]
-                            >> *anychar_p
-                        )
-                    )                   [PostEscape(self.out, self.escape_actions, save)]
-                    ;
-            }
-
-            rule<Scanner> program, macro, qbk_phrase, escape;
-
-            phrase_grammar<EscapeActions> common;
-            std::string save;
-            bool unused;
-
-            rule<Scanner> const&
-            start() const { return program; }
-        };
-
-        Out& out;
-        Macro const& macro;
-        DoMacro do_macro;
-        EscapeActions& escape_actions;
-    };
-
-}
-
-#endif // BOOST_SPIRIT_QUICKBOOK_SYNTAX_HIGHLIGHT_HPP
Modified: branches/release/tools/quickbook/test/blocks.gold
==============================================================================
--- branches/release/tools/quickbook/test/blocks.gold	(original)
+++ branches/release/tools/quickbook/test/blocks.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -2,10 +2,7 @@
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="various_blocks" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
-  <title>Various blocks</title>
-  <articleinfo>
-  </articleinfo>
-  <anchor id="various_blocks.blockquotes"/>
+  <title>Various blocks</title> <anchor id="various_blocks.blockquotes"/>
   <bridgehead renderas="sect2">
     <link linkend="various_blocks.blockquotes">Blockquotes</link>
   </bridgehead>
Modified: branches/release/tools/quickbook/test/callouts.gold
==============================================================================
--- branches/release/tools/quickbook/test/callouts.gold	(original)
+++ branches/release/tools/quickbook/test/callouts.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="callout_tests" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Callout Tests</title>
-  <articleinfo>
-  </articleinfo>
   <para>
     Example 1:
   </para>
Modified: branches/release/tools/quickbook/test/code-block-1.gold
==============================================================================
--- branches/release/tools/quickbook/test/code-block-1.gold	(original)
+++ branches/release/tools/quickbook/test/code-block-1.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="code_block_1" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Code Block 1</title>
-  <articleinfo>
-  </articleinfo>
   <section id="code_block_1.a_code_block">
     <title>A code block</title>
     <para>
Modified: branches/release/tools/quickbook/test/code-block-2.gold
==============================================================================
--- branches/release/tools/quickbook/test/code-block-2.gold	(original)
+++ branches/release/tools/quickbook/test/code-block-2.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="code_block_2" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Code Block 2</title>
-  <articleinfo>
-  </articleinfo>
   <section id="code_block_2.a_code_block">
     <title>A code block</title>
     <para>
Modified: branches/release/tools/quickbook/test/code-block-3.gold
==============================================================================
--- branches/release/tools/quickbook/test/code-block-3.gold	(original)
+++ branches/release/tools/quickbook/test/code-block-3.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="code_block_3" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Code Block 3</title>
-  <articleinfo>
-  </articleinfo>
   <section id="code_block_3.python_code_block">
     <title>Python code block</title>
     <para>
Modified: branches/release/tools/quickbook/test/code-block-teletype.gold
==============================================================================
--- branches/release/tools/quickbook/test/code-block-teletype.gold	(original)
+++ branches/release/tools/quickbook/test/code-block-teletype.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="code_block_teletype_1" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Code Block Teletype 1</title>
-  <articleinfo>
-  </articleinfo>
   <section id="code_block_teletype_1.a_code_block">
     <title><link linkend="code_block_teletype_1.a_code_block">A code block</link></title>
     
Modified: branches/release/tools/quickbook/test/code-block.gold
==============================================================================
--- branches/release/tools/quickbook/test/code-block.gold	(original)
+++ branches/release/tools/quickbook/test/code-block.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="indented_code_blocks" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Indented code blocks</title>
-  <articleinfo>
-  </articleinfo>
   <para>
     In a paragraph. Still in a paragraph.
   </para>
Modified: branches/release/tools/quickbook/test/code-snippet.gold
==============================================================================
--- branches/release/tools/quickbook/test/code-snippet.gold	(original)
+++ branches/release/tools/quickbook/test/code-snippet.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="code_snippets" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Code Snippets</title>
-  <articleinfo>
-  </articleinfo>
   <section id="code_snippets.a_code_snippet">
     <title>A code snippet</title>
     <para>
Modified: branches/release/tools/quickbook/test/command_line_macro.gold
==============================================================================
--- branches/release/tools/quickbook/test/command_line_macro.gold	(original)
+++ branches/release/tools/quickbook/test/command_line_macro.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="command_line_macro" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Command Line Macro</title>
-  <articleinfo>
-  </articleinfo>
   <para>
     <emphasis role="bold">bold</emphasis>
   </para>
Modified: branches/release/tools/quickbook/test/cond_phrase.gold
==============================================================================
--- branches/release/tools/quickbook/test/cond_phrase.gold	(original)
+++ branches/release/tools/quickbook/test/cond_phrase.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="coniditional_phrase_test" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Coniditional Phrase Test</title>
-  <articleinfo>
-  </articleinfo>
   <para>
     This should show
   </para>
Modified: branches/release/tools/quickbook/test/doc-info-1.gold
==============================================================================
--- branches/release/tools/quickbook/test/doc-info-1.gold	(original)
+++ branches/release/tools/quickbook/test/doc-info-1.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -1,17 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<article id="document_information_1" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
+<article id="karel_vom_u00e1_u010dka_and_tom_u00e1_u0161_martin_u00edk" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
-  <title>Document Information 1</title>
+  <title>Karel Vomáčka and Tomáš Martiník</title>
   <articleinfo>
     <authorgroup>
     <author>
-      <firstname>Joe</firstname> <surname>Blow</surname>
+      <firstname>Matti</firstname> <surname>Meikäläinen</surname>
     </author>
     <author>
-      <firstname>Jane</firstname> <surname>Doe</surname>
+      <firstname>Pero</firstname> <surname>Perić</surname>
     </author>
     </authorgroup>
+    <copyright>
+      <year>2010</year> <holder>Meðal-Jón and Jóna Jónsdóttir</holder>
+    </copyright>
     <articlepurpose>
       Inline code test: <code>1 + 2</code>
     </articlepurpose>
Modified: branches/release/tools/quickbook/test/doc-info-1.quickbook
==============================================================================
--- branches/release/tools/quickbook/test/doc-info-1.quickbook	(original)
+++ branches/release/tools/quickbook/test/doc-info-1.quickbook	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -1,6 +1,7 @@
-[article Document Information 1
+[article Karel Vom\u00E1\u010Dka and Tom\u00E1\u0161 Martin\u00EDk
 [quickbook 1.5]
-[authors [Blow, Joe], [Doe, Jane]]
+[authors [Meik\u00E4l\u00E4inen, Matti][Peri\u0107, Pero]]
+[copyright 2010 Me\u00F0al-J\u00F3n and J\u00F3na J\u00F3nsd\u00F3ttir]
 [source-mode teletype]
 [purpose Inline code test: `1 + 2`]
 [category tests]
Modified: branches/release/tools/quickbook/test/escape.gold
==============================================================================
--- branches/release/tools/quickbook/test/escape.gold	(original)
+++ branches/release/tools/quickbook/test/escape.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -2,8 +2,6 @@
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="escape" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Escape</title>
-  <articleinfo>
-  </articleinfo>
   <section id="escape.escape">
     <title>Escape</title>
     <para>
Modified: branches/release/tools/quickbook/test/heading.gold
==============================================================================
--- branches/release/tools/quickbook/test/heading.gold	(original)
+++ branches/release/tools/quickbook/test/heading.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -1,10 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="header" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
-  <title>Header</title>
-  <articleinfo>
-  </articleinfo>
-  <anchor id="header.header_test"/>
+  <title>Header</title> <anchor id="header.header_test"/>
   <bridgehead renderas="sect2">
     <link linkend="header.header_test">Header Test</link>
   </bridgehead>
Modified: branches/release/tools/quickbook/test/heading_1_6.gold
==============================================================================
--- branches/release/tools/quickbook/test/heading_1_6.gold	(original)
+++ branches/release/tools/quickbook/test/heading_1_6.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -1,10 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="header" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
-  <title>Header</title>
-  <articleinfo>
-  </articleinfo>
-  <anchor id="header.header_test"/>
+  <title>Header</title> <anchor id="header.header_test"/>
   <bridgehead renderas="sect2">
     <link linkend="header.header_test">Header Test</link>
   </bridgehead>
Modified: branches/release/tools/quickbook/test/identifier_1_5.gold
==============================================================================
--- branches/release/tools/quickbook/test/identifier_1_5.gold	(original)
+++ branches/release/tools/quickbook/test/identifier_1_5.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -2,10 +2,7 @@
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="identifiers_in_quickbook_1_5" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
-  <title>Identifiers in quickbook 1.5</title>
-  <articleinfo>
-  </articleinfo>
-  <anchor id="identifiers_in_quickbook_1_5.test_heading_with__code__phrase_role__identifier__code__phrase___code_"/>
+  <title>Identifiers in quickbook 1.5</title> <anchor id="identifiers_in_quickbook_1_5.test_heading_with__code__phrase_role__identifier__code__phrase___code_"/>
   <bridgehead renderas="sect2">
     <link linkend="identifiers_in_quickbook_1_5.test_heading_with__code__phrase_role__identifier__code__phrase___code_">Test
     heading with <code><phrase role="identifier">code</phrase></code></link>
Modified: branches/release/tools/quickbook/test/identifier_1_6.gold
==============================================================================
--- branches/release/tools/quickbook/test/identifier_1_6.gold	(original)
+++ branches/release/tools/quickbook/test/identifier_1_6.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -2,10 +2,7 @@
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="identifiers_in_quickbook_1_6" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
-  <title>Identifiers in quickbook 1.6</title>
-  <articleinfo>
-  </articleinfo>
-  <anchor id="identifiers_in_quickbook_1_6.test_heading_with__code_"/>
+  <title>Identifiers in quickbook 1.6</title> <anchor id="identifiers_in_quickbook_1_6.test_heading_with__code_"/>
   <bridgehead renderas="sect2">
     <link linkend="identifiers_in_quickbook_1_6.test_heading_with__code_">Test heading
     with <code><phrase role="identifier">code</phrase></code></link>
Modified: branches/release/tools/quickbook/test/image_1_5.gold
==============================================================================
--- branches/release/tools/quickbook/test/image_1_5.gold	(original)
+++ branches/release/tools/quickbook/test/image_1_5.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -2,8 +2,6 @@
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="images_1_5" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Images 1.5</title>
-  <articleinfo>
-  </articleinfo>
   <para>
     <inlinemediaobject><imageobject><imagedata fileref="test.gif"></imagedata></imageobject>
     <textobject>
Modified: branches/release/tools/quickbook/test/import.gold
==============================================================================
--- branches/release/tools/quickbook/test/import.gold	(original)
+++ branches/release/tools/quickbook/test/import.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -2,8 +2,6 @@
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="import" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Import</title>
-  <articleinfo>
-  </articleinfo>
   <para>
     This is the <emphasis role="bold"><emphasis>foo</emphasis></emphasis> function.
   </para>
Modified: branches/release/tools/quickbook/test/include_1_5.gold
==============================================================================
--- branches/release/tools/quickbook/test/include_1_5.gold	(original)
+++ branches/release/tools/quickbook/test/include_1_5.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="include-test" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Include Test</title>
-  <articleinfo>
-  </articleinfo>
   <section id="include_test_sub_document.test">
     <title><link linkend="include_test_sub_document.test">Test</link></title>
     <para>
Modified: branches/release/tools/quickbook/test/include_1_6-2.gold
==============================================================================
--- branches/release/tools/quickbook/test/include_1_6-2.gold	(original)
+++ branches/release/tools/quickbook/test/include_1_6-2.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="include-test" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Include Test</title>
-  <articleinfo>
-  </articleinfo>
   <section id="include-test.test">
     <title><link linkend="include-test.test">Test</link></title>
     <para>
Modified: branches/release/tools/quickbook/test/include_1_6.gold
==============================================================================
--- branches/release/tools/quickbook/test/include_1_6.gold	(original)
+++ branches/release/tools/quickbook/test/include_1_6.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="include-test" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Include Test</title>
-  <articleinfo>
-  </articleinfo>
   <section id="include-test.test">
     <title><link linkend="include-test.test">Test</link></title>
     <para>
Modified: branches/release/tools/quickbook/test/link-side-by-side.gold
==============================================================================
--- branches/release/tools/quickbook/test/link-side-by-side.gold	(original)
+++ branches/release/tools/quickbook/test/link-side-by-side.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="side_by_side_links" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Side-by-side links</title>
-  <articleinfo>
-  </articleinfo>
   <section id="side_by_side_links.side_by_side_links">
     <title>Side-by-side links</title>
     <para>
Modified: branches/release/tools/quickbook/test/list_test.gold
==============================================================================
--- branches/release/tools/quickbook/test/list_test.gold	(original)
+++ branches/release/tools/quickbook/test/list_test.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -2,8 +2,6 @@
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="list_test" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>List Test</title>
-  <articleinfo>
-  </articleinfo>
   <para>
     Simple list:
   </para>
Modified: branches/release/tools/quickbook/test/mismatched-brackets-1.gold
==============================================================================
--- branches/release/tools/quickbook/test/mismatched-brackets-1.gold	(original)
+++ branches/release/tools/quickbook/test/mismatched-brackets-1.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="mismatched_brackets" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Mismatched brackets</title>
-  <articleinfo>
-  </articleinfo>
   <para>
     [foo
   </para>
Modified: branches/release/tools/quickbook/test/mismatched-brackets-2.gold
==============================================================================
--- branches/release/tools/quickbook/test/mismatched-brackets-2.gold	(original)
+++ branches/release/tools/quickbook/test/mismatched-brackets-2.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="mismatched_brackets" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Mismatched brackets</title>
-  <articleinfo>
-  </articleinfo>
   <para>
     [foo Eek
   </para>
Modified: branches/release/tools/quickbook/test/para-test.gold
==============================================================================
--- branches/release/tools/quickbook/test/para-test.gold	(original)
+++ branches/release/tools/quickbook/test/para-test.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="paragraph_test" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Paragraph Test</title>
-  <articleinfo>
-  </articleinfo>
   <section id="paragraph_test.some_paragraphs">
     <title><link linkend="paragraph_test.some_paragraphs">Some Paragraphs</link></title>
     <para>
Modified: branches/release/tools/quickbook/test/preformatted.gold
==============================================================================
--- branches/release/tools/quickbook/test/preformatted.gold	(original)
+++ branches/release/tools/quickbook/test/preformatted.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="preformatted" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Preformatted</title>
-  <articleinfo>
-  </articleinfo>
   <section id="preformatted.preformatted">
     <title>Preformatted</title>
     <para>
Modified: branches/release/tools/quickbook/test/quickbook-testing.jam
==============================================================================
--- branches/release/tools/quickbook/test/quickbook-testing.jam	(original)
+++ branches/release/tools/quickbook/test/quickbook-testing.jam	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -50,7 +50,7 @@
             : $(input)
             : $(requirements)
                 <location-prefix>$(target-name).test
-                <quickbook-testing.quickbook-command>..//quickbook
+                <quickbook-testing.quickbook-command>../src//quickbook
         ]
 
         [ targets.create-typed-target RUN
@@ -81,7 +81,7 @@
         [ targets.create-typed-target RUN_FAIL
             : $(project)
             : $(target-name)
-            : ..//quickbook
+            : ../src//quickbook
             : $(requirements)
               <preserve-test-targets>on
               <dependency>$(input)
Modified: branches/release/tools/quickbook/test/section_1_4.gold
==============================================================================
--- branches/release/tools/quickbook/test/section_1_4.gold	(original)
+++ branches/release/tools/quickbook/test/section_1_4.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="section_id_1_4" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Section Id 1.4</title>
-  <articleinfo>
-  </articleinfo>
   <section id="section_id_1_4.id_test1">
     <title><link linkend="section_id_1_4.id_test1">Quickbook section id test</link></title>
   </section>
Modified: branches/release/tools/quickbook/test/section_1_5.gold
==============================================================================
--- branches/release/tools/quickbook/test/section_1_5.gold	(original)
+++ branches/release/tools/quickbook/test/section_1_5.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="section_id_1_5" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Section Id 1.5</title>
-  <articleinfo>
-  </articleinfo>
   <section id="section_id_1_5.id_test1">
     <title><link linkend="section_id_1_5.id_test1">Quickbook section id test</link></title>
   </section>
Modified: branches/release/tools/quickbook/test/simple_markup.gold
==============================================================================
--- branches/release/tools/quickbook/test/simple_markup.gold	(original)
+++ branches/release/tools/quickbook/test/simple_markup.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="simple_markup_test" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Simple Markup Test</title>
-  <articleinfo>
-  </articleinfo>
   <section id="simple_markup_test.simple_markup">
     <title><link linkend="simple_markup_test.simple_markup">Simple Markup</link></title>
     <para>
Modified: branches/release/tools/quickbook/test/table_1_5.gold
==============================================================================
--- branches/release/tools/quickbook/test/table_1_5.gold	(original)
+++ branches/release/tools/quickbook/test/table_1_5.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -2,8 +2,6 @@
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="table_1_5" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Table 1.5</title>
-  <articleinfo>
-  </articleinfo>
   <table frame="all" id="table_1_5.table1">
     <title>Table 1</title>
     <tgroup cols="1">
Modified: branches/release/tools/quickbook/test/template-section.gold
==============================================================================
--- branches/release/tools/quickbook/test/template-section.gold	(original)
+++ branches/release/tools/quickbook/test/template-section.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="section_in_a_template" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Section in a template</title>
-  <articleinfo>
-  </articleinfo>
   <para>
     Some text before the section.
   </para>
Modified: branches/release/tools/quickbook/test/templates.gold
==============================================================================
--- branches/release/tools/quickbook/test/templates.gold	(original)
+++ branches/release/tools/quickbook/test/templates.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -2,8 +2,6 @@
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="templates" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Templates</title>
-  <articleinfo>
-  </articleinfo>
   <section id="templates.templates">
     <title><link linkend="templates.templates">Templates</link></title>
     <para>
Modified: branches/release/tools/quickbook/test/templates_1_4.gold
==============================================================================
--- branches/release/tools/quickbook/test/templates_1_4.gold	(original)
+++ branches/release/tools/quickbook/test/templates_1_4.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="template_1_4" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Template 1.4</title>
-  <articleinfo>
-  </articleinfo>
   <para>
     dynamic scoping
   </para>
Modified: branches/release/tools/quickbook/test/templates_1_5.gold
==============================================================================
--- branches/release/tools/quickbook/test/templates_1_5.gold	(original)
+++ branches/release/tools/quickbook/test/templates_1_5.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="template_1_5" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Template 1.5</title>
-  <articleinfo>
-  </articleinfo>
   <para>
     static scoping
   </para>
Modified: branches/release/tools/quickbook/test/unicode-escape.gold
==============================================================================
--- branches/release/tools/quickbook/test/unicode-escape.gold	(original)
+++ branches/release/tools/quickbook/test/unicode-escape.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -1,10 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="utf_8_test" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
-  <title>UTF-8 test</title>
-  <articleinfo>
-  </articleinfo>
-  <anchor id="utf_8_test.i__xf1_t__xeb_rn__xe2_ti__xf4_n__xe0_liz__xe6_ti__xf8_n"/>
+  <title>UTF-8 test</title> <anchor id="utf_8_test.i__xf1_t__xeb_rn__xe2_ti__xf4_n__xe0_liz__xe6_ti__xf8_n"/>
   <bridgehead renderas="sect2">
     <link linkend="utf_8_test.i__xf1_t__xeb_rn__xe2_ti__xf4_n__xe0_liz__xe6_ti__xf8_n">Iñtërnâtiônàlizætiøn</link>
   </bridgehead>
Modified: branches/release/tools/quickbook/test/utf-8-bom.gold
==============================================================================
--- branches/release/tools/quickbook/test/utf-8-bom.gold	(original)
+++ branches/release/tools/quickbook/test/utf-8-bom.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -1,10 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="utf_8_test" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
-  <title>UTF-8 test</title>
-  <articleinfo>
-  </articleinfo>
-  <anchor id="utf_8_test.i__t__rn__ti__n__liz__ti__n"/>
+  <title>UTF-8 test</title> <anchor id="utf_8_test.i__t__rn__ti__n__liz__ti__n"/>
   <bridgehead renderas="sect2">
     <link linkend="utf_8_test.i__t__rn__ti__n__liz__ti__n">Iñtërnâtiônàlizætiøn</link>
   </bridgehead>
Modified: branches/release/tools/quickbook/test/utf-8.gold
==============================================================================
--- branches/release/tools/quickbook/test/utf-8.gold	(original)
+++ branches/release/tools/quickbook/test/utf-8.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -1,10 +1,7 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="utf_8_test" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
-  <title>UTF-8 test</title>
-  <articleinfo>
-  </articleinfo>
-  <anchor id="utf_8_test.i__t__rn__ti__n__liz__ti__n"/>
+  <title>UTF-8 test</title> <anchor id="utf_8_test.i__t__rn__ti__n__liz__ti__n"/>
   <bridgehead renderas="sect2">
     <link linkend="utf_8_test.i__t__rn__ti__n__liz__ti__n">Iñtërnâtiônàlizætiøn</link>
   </bridgehead>
Modified: branches/release/tools/quickbook/test/variablelist.gold
==============================================================================
--- branches/release/tools/quickbook/test/variablelist.gold	(original)
+++ branches/release/tools/quickbook/test/variablelist.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -3,8 +3,6 @@
 <article id="variable_list_tests" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Variable List Tests</title>
-  <articleinfo>
-  </articleinfo>
   <variablelist>
     <title>Empty</title>
   </variablelist>
Modified: branches/release/tools/quickbook/test/xinclude.gold
==============================================================================
--- branches/release/tools/quickbook/test/xinclude.gold	(original)
+++ branches/release/tools/quickbook/test/xinclude.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -2,7 +2,5 @@
 <!DOCTYPE article PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
 <article id="include" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $" xmlns:xi="http://www.w3.org/2001/XInclude">
   <title>Include</title>
-  <articleinfo>
-  </articleinfo>
   <xi:include href="../../../../../../../../../tools/quickbook/test/stub.xml" />
 </article>
Modified: branches/release/tools/quickbook/test/xml-escape_1_2.gold
==============================================================================
--- branches/release/tools/quickbook/test/xml-escape_1_2.gold	(original)
+++ branches/release/tools/quickbook/test/xml-escape_1_2.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -1,15 +1,20 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE library PUBLIC "-//Boost//DTD BoostBook XML V1.0//EN" "http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
-<library id="test_that______are_being_escaped_" name="Test that &, < are being escaped."
-dirname="test_that______are_being_escaped_" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
+<library id="test_that__amp____lt__are_being_escaped_" name="Test that &, < are being escaped."
+dirname="test_that__amp____lt__are_being_escaped_" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <libraryinfo>
+    <legalnotice>
+      <para>
+        & should be &amp;, < should &lt;
+      </para>
+    </legalnotice>
     <librarypurpose>
       & should be &amp;, < should &lt;
     </librarypurpose>
   </libraryinfo>
   <title>Test that &, < are being escaped.</title>
-  <section id="test_that______are_being_escaped_.escapes___explicitly_written_markup">
+  <section id="test_that__amp____lt__are_being_escaped_.escapes___explicitly_written_markup">
     <title>Escapes & explicitly written markup</title>
     <itemizedlist>
       <listitem>
Modified: branches/release/tools/quickbook/test/xml-escape_1_2.quickbook
==============================================================================
--- branches/release/tools/quickbook/test/xml-escape_1_2.quickbook	(original)
+++ branches/release/tools/quickbook/test/xml-escape_1_2.quickbook	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -1,6 +1,7 @@
-[library Test that &, < are being escaped.
+[library Test that &, < are being escaped.
     [quickbook 1.2]
-    [purpose & should be &, < should <]
+    [purpose & should be &amp;, < should &lt;]
+    [license & should be &amp;, < should &lt;]
 ]
 
 [section Escapes & explicitly written markup]
Modified: branches/release/tools/quickbook/test/xml-escape_1_5.gold
==============================================================================
--- branches/release/tools/quickbook/test/xml-escape_1_5.gold	(original)
+++ branches/release/tools/quickbook/test/xml-escape_1_5.gold	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -4,6 +4,11 @@
 dirname="test_that______are_being_escaped_" last-revision="DEBUG MODE Date: 2000/12/20 12:00:00 $"
  xmlns:xi="http://www.w3.org/2001/XInclude">
   <libraryinfo>
+    <legalnotice>
+      <para>
+        & should be &amp;, < should &lt;
+      </para>
+    </legalnotice>
     <librarypurpose>
       & should be &amp;, < should &lt;
     </librarypurpose>
Modified: branches/release/tools/quickbook/test/xml-escape_1_5.quickbook
==============================================================================
--- branches/release/tools/quickbook/test/xml-escape_1_5.quickbook	(original)
+++ branches/release/tools/quickbook/test/xml-escape_1_5.quickbook	2010-08-27 04:37:07 EDT (Fri, 27 Aug 2010)
@@ -1,6 +1,7 @@
 [library Test that &, < are being escaped.
     [quickbook 1.5]
     [purpose & should be &, < should <]
+    [license & should be &, < should <]
 ]
 
 [section Escapes & explicitly written markup]