Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r54956 - in trunk/libs/spirit: doc doc/html doc/html/images doc/html/spirit doc/html/spirit/abstracts doc/html/spirit/karma doc/html/spirit/karma/performance_measurements doc/html/spirit/karma/performance_measurements/numeric_performance doc/html/spirit/karma/quick_reference doc/html/spirit/karma/reference/generator_concepts doc/html/spirit/karma/tutorials doc/html/spirit/lex doc/html/spirit/lex/abstracts doc/html/spirit/lex/abstracts/lexer_primitives doc/html/spirit/lex/reference doc/html/spirit/lex/reference/concepts doc/html/spirit/lex/tutorials doc/html/spirit/qi doc/html/spirit/qi/quick_reference doc/html/spirit/qi/reference doc/html/spirit/qi/reference/parser_concepts doc/html/spirit/qi/string doc/html/spirit/qi/tutorials doc/html/spirit/support doc/karma doc/support example/karma
From: hartmut.kaiser_at_[hidden]
Date: 2009-07-14 21:30:24


Author: hkaiser
Date: 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
New Revision: 54956
URL: http://svn.boost.org/trac/boost/changeset/54956

Log:
Spirit: added some performance measurements to docs
Added:
   trunk/libs/spirit/doc/html/images/double_performance.png (contents, props changed)
   trunk/libs/spirit/doc/html/images/format_performance.png (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/qi/reference/char_.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/qi/string/
   trunk/libs/spirit/doc/html/spirit/qi/string.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/qi/string/lit_string.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/qi/string/symbols.html (contents, props changed)
   trunk/libs/spirit/doc/karma/numeric_performance.qbk (contents, props changed)
   trunk/libs/spirit/doc/karma_performance.xlsx (contents, props changed)
Text files modified:
   trunk/libs/spirit/doc/html/index.html | 7 ++
   trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html | 8 +-
   trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html | 10 ++--
   trunk/libs/spirit/doc/html/spirit/acknowledgments.html | 2
   trunk/libs/spirit/doc/html/spirit/faq.html | 4
   trunk/libs/spirit/doc/html/spirit/introduction.html | 12 ++--
   trunk/libs/spirit/doc/html/spirit/karma.html | 3 +
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html | 2
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html | 12 ++--
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html | 10 ++--
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html | 18 +++---
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html | 10 ++--
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html | 12 ++--
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html | 2
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html | 2
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html | 10 ++--
   trunk/libs/spirit/doc/html/spirit/lex.html | 6 +-
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html | 10 ++--
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html | 10 ++--
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html | 6 +-
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html | 4
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html | 4
   trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html | 10 ++--
   trunk/libs/spirit/doc/html/spirit/lex/reference/concepts/lexer.html | 6 +-
   trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_class.html | 8 +-
   trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html | 10 ++--
   trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html | 8 +-
   trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html | 12 ++--
   trunk/libs/spirit/doc/html/spirit/preface.html | 18 +++---
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html | 2
   trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html | 4
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html | 12 ++--
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html | 12 ++--
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html | 10 ++--
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html | 10 ++--
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html | 12 ++--
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html | 14 ++--
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html | 22 ++++----
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html | 6 +-
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html | 2
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html | 8 +-
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html | 2
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html | 10 ++--
   trunk/libs/spirit/doc/html/spirit/support/multi_pass.html | 94 +++++++++++++++++++++++++--------------
   trunk/libs/spirit/doc/html/spirit/what_s_new.html | 8 +-
   trunk/libs/spirit/doc/karma.qbk | 4 +
   trunk/libs/spirit/doc/support/multi_pass.qbk | 36 ++++++++++++--
   trunk/libs/spirit/example/karma/double_performance.cpp | 49 +++++++++++--------
   trunk/libs/spirit/example/karma/format_performance.cpp | 40 ++++++++++------
   49 files changed, 333 insertions(+), 260 deletions(-)

Added: trunk/libs/spirit/doc/html/images/double_performance.png
==============================================================================
Binary file. No diff available.

Added: trunk/libs/spirit/doc/html/images/format_performance.png
==============================================================================
Binary file. No diff available.

Modified: trunk/libs/spirit/doc/html/index.html
==============================================================================
--- trunk/libs/spirit/doc/html/index.html (original)
+++ trunk/libs/spirit/doc/html/index.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -34,7 +34,7 @@
 <div><p class="copyright">Copyright © 2001-2009 Joel
       de Guzman, Hartmut Kaiser</p></div>
 <div><div class="legalnotice" title="Legal Notice">
-<a name="id1024231"></a><p>
+<a name="id1038430"></a><p>
         Distributed under the Boost Software License, Version 1.0. (See accompanying
         file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
       </p>
@@ -131,6 +131,9 @@
 <dt><span class="section">Reference</span></dt>
 <dd><dl><dt><span class="section"><a href="spirit/karma/reference/generator_concepts.html">Generator
         Concepts</a></span></dt></dl></dd>
+<dt><span class="section">Performance Measurements</span></dt>
+<dd><dl><dt><span class="section"><a href="spirit/karma/performance_measurements/numeric_performance.html">
+ Performance of Numeric Generators</a></span></dt></dl></dd>
 </dl></dd>
 <dt><span class="section"> Spirit.Lex</span></dt>
 <dd><dl>
@@ -185,7 +188,7 @@
   </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: July 12, 2009 at 22:58:16 GMT</small></p></td>
+<td align="left"><p><small>Last revised: July 15, 2009 at 01:27:06 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html (original)
+++ trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -40,7 +40,7 @@
         [Abstract Syntax Tree) for each PEG grammar.
       </p>
 <a name="spirit.abstracts.parsing_expression_grammar.sequences"></a><h5>
-<a name="id1033835"></a>
+<a name="id1048035"></a>
         <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.sequences">Sequences</a>
       </h5>
 <p>
@@ -81,7 +81,7 @@
         </p></td></tr>
 </table></div>
 <a name="spirit.abstracts.parsing_expression_grammar.alternatives"></a><h5>
-<a name="id1033953"></a>
+<a name="id1048152"></a>
         <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.alternatives">Alternatives</a>
       </h5>
 <p>
@@ -124,7 +124,7 @@
         about this $$$).
       </p>
 <a name="spirit.abstracts.parsing_expression_grammar.loops"></a><h5>
-<a name="id1034092"></a>
+<a name="id1048292"></a>
         <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.loops">Loops</a>
       </h5>
 <p>
@@ -187,7 +187,7 @@
         We will see more of these other mechanisms shortly.
       </p>
 <a name="spirit.abstracts.parsing_expression_grammar.difference"></a><h5>
-<a name="id1034232"></a>
+<a name="id1048432"></a>
         <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.difference">Difference</a>
       </h5>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html (original)
+++ trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -31,14 +31,14 @@
         a variant of Extended Backus-Naur Form (EBNF) with a different interpretation.
         It is easier to understand PEG using Syntax Diagrams. Syntax diagrams represent
         a grammar graphically. It was used extensibly by Niklaus Wirth
- <sup>[<a name="id1033424" href="#ftn.id1033424" class="footnote">2</a>]</sup>
+ <sup>[<a name="id1047623" href="#ftn.id1047623" class="footnote">2</a>]</sup>
         in the "Pascal User Manual". Syntax Diagrams are easily understandable
         with programmers due to its similarity to flow charts. The isomorphism of
         the diagrams and functions make it ideal for representing [Recursive Descent
         parsers which are essentially mutually recursive functions.
       </p>
 <a name="spirit.abstracts.syntax_diagram.elements"></a><h5>
-<a name="id1033436"></a>
+<a name="id1047635"></a>
         <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.elements">Elements</a>
       </h5>
 <p>
@@ -82,7 +82,7 @@
         </p>
 </blockquote></div>
 <a name="spirit.abstracts.syntax_diagram.constructs"></a><h5>
-<a name="id1033535"></a>
+<a name="id1047735"></a>
         <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.constructs">Constructs</a>
       </h5>
 <p>
@@ -153,7 +153,7 @@
         This behavior is quite obvious with syntax diagrams as they resemble flow-charts.
       </p>
 <a name="spirit.abstracts.syntax_diagram.predicates"></a><h5>
-<a name="id1033696"></a>
+<a name="id1047896"></a>
         <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.predicates">Predicates</a>
       </h5>
 <p>
@@ -208,7 +208,7 @@
       </p>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id1033424" href="#id1033424" class="para">2</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id1047623" href="#id1047623" class="para">2</a>] </sup>
             Niklaus Wirth: The Programming Language Pascal. (July 1973)
           </p></div>
 </div>

Modified: trunk/libs/spirit/doc/html/spirit/acknowledgments.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/acknowledgments.html (original)
+++ trunk/libs/spirit/doc/html/spirit/acknowledgments.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -47,7 +47,7 @@
       <span class="bold"><strong>FIXME</strong></span>: Add more people
     </p>
 <a name="spirit.acknowledgments.acknowledgements_from_the_spirit_v1__emphasis_classic__emphasis__documentation"></a><h4>
-<a name="id1135064"></a>
+<a name="id1154786"></a>
       <a class="link" href="acknowledgments.html#spirit.acknowledgments.acknowledgements_from_the_spirit_v1__emphasis_classic__emphasis__documentation">Acknowledgements
       from the Spirit V1 <span class="emphasis"><em>classic</em></span> Documentation</a>
     </h4>

Modified: trunk/libs/spirit/doc/html/spirit/faq.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/faq.html (original)
+++ trunk/libs/spirit/doc/html/spirit/faq.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.faq"></a><a class="link" href="faq.html" title="Spirit FAQ"> Spirit FAQ</a>
 </h2></div></div></div>
 <a name="spirit.faq.i_m_getting_multiple_symbol_definition_errors_while_using_visual_c____anything_i_could_do_about_that_"></a><h4>
-<a name="id1133808"></a>
+<a name="id1153530"></a>
       <a class="link" href="faq.html#spirit.faq.i_m_getting_multiple_symbol_definition_errors_while_using_visual_c____anything_i_could_do_about_that_">I'm
       getting multiple symbol definition errors while using Visual C++. Anything
       I could do about that?</a>
@@ -64,7 +64,7 @@
       static_assert.
     </p>
 <a name="spirit.faq.i_m_very_confused_about_the_header_hell_in_my_boost_spirit_directory__what_s_all_this_about_"></a><h4>
-<a name="id1133978"></a>
+<a name="id1153700"></a>
       <a class="link" href="faq.html#spirit.faq.i_m_very_confused_about_the_header_hell_in_my_boost_spirit_directory__what_s_all_this_about_">I'm
       very confused about the header hell in my boost/spirit directory. What's all
       this about?</a>

Modified: trunk/libs/spirit/doc/html/spirit/introduction.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/introduction.html (original)
+++ trunk/libs/spirit/doc/html/spirit/introduction.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -30,7 +30,7 @@
       Boost Spirit is an object-oriented, recursive-descent parser and output generation
       library for C++. It allows you to write grammars and format descriptions using
       a format similar to Extended Backus Naur Form (EBNF)
- <sup>[<a name="id1029628" href="#ftn.id1029628" class="footnote">1</a>]</sup>
+ <sup>[<a name="id1043828" href="#ftn.id1043828" class="footnote">1</a>]</sup>
       directly in C++. These inline grammar specifications can mix freely with other
       C++ code and, thanks to the generative power of C++ templates, are immediately
       executable. In retrospect, conventional compiler-compilers or parser-generators
@@ -131,7 +131,7 @@
 <p><br class="figure-break">
     </p>
 <a name="spirit.introduction.a_quick_overview_of_parsing_with__emphasis_spirit_qi__emphasis_"></a><h4>
-<a name="id1029842"></a>
+<a name="id1044042"></a>
       <a class="link" href="introduction.html#spirit.introduction.a_quick_overview_of_parsing_with__emphasis_spirit_qi__emphasis_">A
       Quick Overview of Parsing with <span class="emphasis"><em>Spirit.Qi</em></span></a>
     </h4>
@@ -221,7 +221,7 @@
       <code class="computeroutput"><span class="special">;</span></code>.
     </p>
 <a name="spirit.introduction.a_quick_overview_of_output_generation_with__emphasis_spirit_karma__emphasis_"></a><h4>
-<a name="id1030795"></a>
+<a name="id1044994"></a>
       <a class="link" href="introduction.html#spirit.introduction.a_quick_overview_of_output_generation_with__emphasis_spirit_karma__emphasis_">A
       Quick Overview of Output Generation with <span class="emphasis"><em>Spirit.Karma</em></span></a>
     </h4>
@@ -254,7 +254,7 @@
       of the same <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code>:
     </p>
 <div class="table">
-<a name="id1031136"></a><p class="title"><b>Table 2. Different output formats for `std::vector&lt;int&gt;`</b></p>
+<a name="id1045335"></a><p class="title"><b>Table 2. Different output formats for `std::vector&lt;int&gt;`</b></p>
 <div class="table-contents"><table class="table" summary="Different output formats for `std::vector&lt;int&gt;`">
 <colgroup>
 <col>
@@ -369,7 +369,7 @@
       next table gives some related examples.
     </p>
 <div class="table">
-<a name="id1032602"></a><p class="title"><b>Table 3. Different data types usable with the output format
+<a name="id1046801"></a><p class="title"><b>Table 3. Different data types usable with the output format
     `*(int_ &lt;&lt; eol)`</b></p>
 <div class="table-contents"><table class="table" summary="Different data types usable with the output format
     `*(int_ &lt;&lt; eol)`">
@@ -439,7 +439,7 @@
 </div>
 <br class="table-break"><div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id1029628" href="#id1029628" class="para">1</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id1043828" href="#id1043828" class="para">1</a>] </sup>
           <a href="http://www.cl.cam.ac.uk/%7Emgk25/iso-14977.pdf" target="_top">ISO-EBNF</a>
         </p></div>
 </div>

Modified: trunk/libs/spirit/doc/html/spirit/karma.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -52,6 +52,9 @@
 <dt><span class="section">Reference</span></dt>
 <dd><dl><dt><span class="section"><a href="karma/reference/generator_concepts.html">Generator
         Concepts</a></span></dt></dl></dd>
+<dt><span class="section">Performance Measurements</span></dt>
+<dd><dl><dt><span class="section"><a href="karma/performance_measurements/numeric_performance.html">
+ Performance of Numeric Generators</a></span></dt></dl></dd>
 </dl></div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Added: trunk/libs/spirit/doc/html/spirit/karma/performance_measurements.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/karma/performance_measurements.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -0,0 +1,46 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Performance Measurements</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../karma.html" title="Karma">
+<link rel="prev" href="reference/generator_concepts/narygenerator.html" title="NaryGenerator">
+<link rel="next" href="performance_measurements/numeric_performance.html" title="Performance of Numeric Generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/generator_concepts/narygenerator.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../karma.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="performance_measurements/numeric_performance.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Performance Measurements">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.karma.performance_measurements"></a><a class="link" href="performance_measurements.html" title="Performance Measurements">Performance Measurements</a>
+</h3></div></div></div>
+<div class="toc"><dl><dt><span class="section"><a href="performance_measurements/numeric_performance.html">
+ Performance of Numeric Generators</a></span></dt></dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+ de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/generator_concepts/narygenerator.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../karma.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="performance_measurements/numeric_performance.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -0,0 +1,51 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Performance of Numeric Generators</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../performance_measurements.html" title="Performance Measurements">
+<link rel="prev" href="../performance_measurements.html" title="Performance Measurements">
+<link rel="next" href="numeric_performance/double_performance.html" title="Comparing the performance of a single double_ generator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../performance_measurements.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance_measurements.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric_performance/double_performance.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Performance of Numeric Generators">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.karma.performance_measurements.numeric_performance"></a><a class="link" href="numeric_performance.html" title="Performance of Numeric Generators">
+ Performance of Numeric Generators</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="numeric_performance/double_performance.html">
+ Comparing the performance of a single double_ generator</a></span></dt>
+<dt><span class="section"><a href="numeric_performance/format_performance.html">
+ Comparing the performance of a sequence of several generators</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+ de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../performance_measurements.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../performance_measurements.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="numeric_performance/double_performance.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -0,0 +1,501 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Comparing the performance of a single double_ generator</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../numeric_performance.html" title="Performance of Numeric Generators">
+<link rel="prev" href="../numeric_performance.html" title="Performance of Numeric Generators">
+<link rel="next" href="format_performance.html" title="Comparing the performance of a sequence of several generators">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="format_performance.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Comparing the performance of a single double_ generator">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.performance_measurements.numeric_performance.double_performance"></a><a class="link" href="double_performance.html" title="Comparing the performance of a single double_ generator">
+ Comparing the performance of a single double_ generator</a>
+</h5></div></div></div>
+<p>
+ For the full source code of the performance test please see here: double_performance.cpp).
+ All the measurements have been done by doing 1000000 iterations for each
+ formatting type (<code class="computeroutput"><span class="identifier">NUMITERATIONS</span>
+ <span class="special">==</span> <span class="number">1000000</span></code>).
+ </p>
+<p>
+ Code used to measure the performance for printf:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">256</span><span class="special">];</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">sprintf</span><span class="special">(</span><span class="identifier">buffer</span><span class="special">,</span> <span class="string">"%f"</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Code used to measure the performance for standard iostreams:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">strm</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">strm</span><span class="special">.</span><span class="identifier">str</span><span class="special">(</span><span class="string">""</span><span class="special">);</span>
+ <span class="identifier">strm</span> <span class="special">&lt;&lt;</span> <span class="number">12345.12345</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Code used to measure the performance for Boost.Format:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">strm</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">strm</span><span class="special">.</span><span class="identifier">str</span><span class="special">(</span><span class="string">""</span><span class="special">);</span>
+ <span class="identifier">strm</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span><span class="special">(</span><span class="string">"%f"</span><span class="special">)</span> <span class="special">%</span> <span class="number">12345.12345</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ The following code shows the common definitions used by all Karma performance
+ measurements as listed below:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">double3_policy</span> <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">real_policies</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="comment">// we want to generate up to 3 fractional digits
+</span> <span class="keyword">static</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">precision</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="number">3</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">real_generator</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">double3_policy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="identifier">double3_type</span><span class="special">;</span>
+<span class="identifier">double3_type</span> <span class="keyword">const</span> <span class="identifier">double3</span> <span class="special">=</span> <span class="identifier">double3_type</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Code used to measure the performance for Karma using a plain character
+ buffer:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">256</span><span class="special">];</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">char</span> <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="identifier">buffer</span><span class="special">;</span>
+ <span class="identifier">generate</span><span class="special">(</span><span class="identifier">p</span><span class="special">,</span> <span class="identifier">double3</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">);</span>
+ <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="char">'\0'</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Code used to measure the performance for Karma using an output iterator
+ on top of a std::string as the destination buffer:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">generated</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;</span> <span class="identifier">sink</span><span class="special">(</span><span class="identifier">generated</span><span class="special">);</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">generated</span><span class="special">.</span><span class="identifier">clear</span><span class="special">();</span>
+ <span class="identifier">generate</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span> <span class="identifier">double3</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Code used to measure the performance for Karma using a plain character
+ buffer, but utilizing a karma::rule as the generator:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">256</span><span class="special">];</span>
+<span class="identifier">r</span> <span class="special">%=</span> <span class="identifier">double3</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">char</span> <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="identifier">buffer</span><span class="special">;</span>
+ <span class="identifier">generate</span><span class="special">(</span><span class="identifier">p</span><span class="special">,</span> <span class="identifier">r</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">);</span>
+ <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="char">'\0'</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Code used to measure the performance using Karma's low level formatting
+ routine for floating point numbers.
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">real_inserter</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">double3_policy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&gt;</span> <span class="identifier">inserter</span><span class="special">;</span>
+<span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">256</span><span class="special">];</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">char</span> <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="identifier">buffer</span><span class="special">;</span>
+ <span class="identifier">inserter</span><span class="special">::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">p</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">,</span> <span class="identifier">double3_policy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;());</span>
+ <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="char">'\0'</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<div class="table">
+<a name="id1115562"></a><p class="title"><b>Table 6. Performance comparison for a single `double`</b></p>
+<div class="table-contents"><table class="table" summary="Performance comparison for a single `double`">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Library
+ </p>
+ </th>
+<th>
+ <p>
+ gcc 4.4.0 (MingW, 32Bit)
+ </p>
+ </th>
+<th>
+ <p>
+ VC++ 8 SP1 (32Bit)
+ </p>
+ </th>
+<th>
+ <p>
+ VC++ 10 beta (32Bit)
+ </p>
+ </th>
+<th>
+ <p>
+ gcc 4.1.2 (Linux, 64Bit)
+ </p>
+ </th>
+<th>
+ <p>
+ VC++ 10 beta (64Bit)
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ printf
+ </p>
+ </td>
+<td>
+ <p>
+ 0.739 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.894 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.965 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 1.032 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.807 [s]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iostreams
+ </p>
+ </td>
+<td>
+ <p>
+ 2.396 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 2.013 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 2.624 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.924 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 1.468 [s]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Boost.Format
+ </p>
+ </td>
+<td>
+ <p>
+ 9.394 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 6.888 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 8.045 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 3.034 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 5.750 [s]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Karma (char buffer)
+ </p>
+ </td>
+<td>
+ <p>
+ 0.832 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.483 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.561 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.394 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.260 [s]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Karma (string)
+ </p>
+ </td>
+<td>
+ <p>
+ 0.873 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 1.193 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.701 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.478 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.384 [s]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Karma (rule)
+ </p>
+ </td>
+<td>
+ <p>
+ 0.824 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.501 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.609 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.415 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.268 [s]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Karma (direct)
+ </p>
+ </td>
+<td>
+ <p>
+ 0.608 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.419 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.475 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.254 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 0.207 [s]
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ </p>
+<div class="figure">
+<a name="spirit.karma.double_performance"></a><p class="title"><b>Figure 3. Performance comparison for a single double</b></p>
+<div class="figure-contents"><span class="inlinemediaobject"><img src="../../../.././images/double_performance.png" alt="Performance comparison for a single double"></span></div>
+</div>
+<p><br class="figure-break">
+ </p>
+<a name="spirit.karma.performance_measurements.numeric_performance.double_performance.platforms"></a><h6>
+<a name="id1115950"></a>
+ <a class="link" href="double_performance.html#spirit.karma.performance_measurements.numeric_performance.double_performance.platforms">Platforms</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Windows7, Intel Core Duo(tm) Processor, 2.8GHz, 4GByte RAM
+ </li>
+<li class="listitem">
+ Linux, 8 Quad-Core AMD Opteron(tm) Processor, 2.8GHz, 64GByte RAM
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+ de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="format_performance.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -0,0 +1,463 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Comparing the performance of a sequence of several generators</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../numeric_performance.html" title="Performance of Numeric Generators">
+<link rel="prev" href="double_performance.html" title="Comparing the performance of a single double_ generator">
+<link rel="next" href="../../../lex.html" title="Spirit.Lex">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="double_performance.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../lex.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="Comparing the performance of a sequence of several generators">
+<div class="titlepage"><div><div><h5 class="title">
+<a name="spirit.karma.performance_measurements.numeric_performance.format_performance"></a><a class="link" href="format_performance.html" title="Comparing the performance of a sequence of several generators">
+ Comparing the performance of a sequence of several generators</a>
+</h5></div></div></div>
+<p>
+ For the full source code of the performance test please see here: format_performance.cpp).
+ All the measurements have been done by doing 1000000 iterations for each
+ formatting type (<code class="computeroutput"><span class="identifier">NUMITERATIONS</span>
+ <span class="special">==</span> <span class="number">1000000</span></code>).
+ </p>
+<p>
+ Code used to measure the performance for printf:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">256</span><span class="special">];</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">sprintf</span><span class="special">(</span><span class="identifier">buffer</span><span class="special">,</span> <span class="string">"[%-14.3f%-14.3f]"</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Code used to measure the performance for standard iostreams:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">strm</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">strm</span><span class="special">.</span><span class="identifier">str</span><span class="special">(</span><span class="string">""</span><span class="special">);</span>
+ <span class="identifier">strm</span> <span class="special">&lt;&lt;</span> <span class="char">'['</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setiosflags</span><span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ios</span><span class="special">::</span><span class="identifier">fixed</span><span class="special">)</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">left</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setprecision</span><span class="special">(</span><span class="number">3</span><span class="special">)</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">(</span><span class="number">14</span><span class="special">)</span>
+ <span class="special">&lt;&lt;</span> <span class="number">12345.12345</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">setw</span><span class="special">(</span><span class="number">14</span><span class="special">)</span>
+ <span class="special">&lt;&lt;</span> <span class="number">12345.12345</span>
+ <span class="special">&lt;&lt;</span> <span class="char">']'</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Code used to measure the performance for Boost.Format:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">stringstream</span> <span class="identifier">strm</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">strm</span><span class="special">.</span><span class="identifier">str</span><span class="special">(</span><span class="string">""</span><span class="special">);</span>
+ <span class="identifier">strm</span> <span class="special">&lt;&lt;</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span><span class="special">(</span><span class="string">"[%-14.3f%-14.3f]"</span><span class="special">)</span> <span class="special">%</span> <span class="number">12345.12345</span> <span class="special">%</span> <span class="number">12345.12345</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ The following code shows the common definitions used by all Karma performance
+ measurements as listed below:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">double3_policy</span> <span class="special">:</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">real_policies</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="comment">// we want to generate up to 3 fractional digits
+</span> <span class="keyword">static</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">precision</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span> <span class="special">{</span> <span class="keyword">return</span> <span class="number">3</span><span class="special">;</span> <span class="special">}</span>
+<span class="special">};</span>
+
+<span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">karma</span><span class="special">::</span><span class="identifier">real_generator</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="identifier">double3_policy</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+ <span class="identifier">double3_type</span><span class="special">;</span>
+<span class="identifier">double3_type</span> <span class="keyword">const</span> <span class="identifier">double3</span> <span class="special">=</span> <span class="identifier">double3_type</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Code used to measure the performance for Karma using a plain character
+ buffer:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">256</span><span class="special">];</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">char</span> <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="identifier">buffer</span><span class="special">;</span>
+ <span class="identifier">generate</span><span class="special">(</span><span class="identifier">p</span>
+ <span class="special">,</span> <span class="char">'['</span> <span class="special">&lt;&lt;</span> <span class="identifier">left_align</span><span class="special">(</span><span class="number">14</span><span class="special">)[</span><span class="identifier">double3</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="identifier">left_align</span><span class="special">(</span><span class="number">14</span><span class="special">)[</span><span class="identifier">double3</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="char">']'</span>
+ <span class="special">,</span> <span class="number">12345.12345</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">);</span>
+ <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="char">'\0'</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Code used to measure the performance for Karma using an output iterator
+ on top of a std::string as the destination buffer:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">generated</span><span class="special">;</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;</span> <span class="identifier">sink</span><span class="special">(</span><span class="identifier">generated</span><span class="special">);</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="identifier">generated</span><span class="special">.</span><span class="identifier">clear</span><span class="special">();</span>
+ <span class="identifier">generate</span><span class="special">(</span><span class="identifier">sink</span>
+ <span class="special">,</span> <span class="char">'['</span> <span class="special">&lt;&lt;</span> <span class="identifier">left_align</span><span class="special">(</span><span class="number">14</span><span class="special">)[</span><span class="identifier">double3</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="identifier">left_align</span><span class="special">(</span><span class="number">14</span><span class="special">)[</span><span class="identifier">double3</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="char">']'</span>
+ <span class="special">,</span> <span class="number">12345.12345</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Code used to measure the performance for Karma using a plain character
+ buffer, but utilizing a karma::rule as the generator:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">char</span> <span class="identifier">buffer</span><span class="special">[</span><span class="number">256</span><span class="special">];</span>
+<span class="identifier">r</span> <span class="special">%=</span> <span class="char">'['</span> <span class="special">&lt;&lt;</span> <span class="identifier">left_align</span><span class="special">(</span><span class="number">14</span><span class="special">)[</span><span class="identifier">double3</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="identifier">left_align</span><span class="special">(</span><span class="number">14</span><span class="special">)[</span><span class="identifier">double3</span><span class="special">]</span> <span class="special">&lt;&lt;</span> <span class="char">']'</span><span class="special">;</span>
+<span class="keyword">for</span> <span class="special">(</span><span class="keyword">int</span> <span class="identifier">i</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span> <span class="identifier">i</span> <span class="special">&lt;</span> <span class="identifier">NUMITERATIONS</span><span class="special">;</span> <span class="special">++</span><span class="identifier">i</span><span class="special">)</span> <span class="special">{</span>
+ <span class="keyword">char</span> <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="identifier">buffer</span><span class="special">;</span>
+ <span class="identifier">generate</span><span class="special">(</span><span class="identifier">p</span><span class="special">,</span> <span class="identifier">r</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">,</span> <span class="number">12345.12345</span><span class="special">);</span>
+ <span class="special">*</span><span class="identifier">p</span> <span class="special">=</span> <span class="char">'\0'</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<div class="table">
+<a name="id1117720"></a><p class="title"><b>Table 7. Performance comparison for a sequence of several
+ items</b></p>
+<div class="table-contents"><table class="table" summary="Performance comparison for a sequence of several
+ items">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Library
+ </p>
+ </th>
+<th>
+ <p>
+ gcc 4.4.0 (MingW, 32Bit)
+ </p>
+ </th>
+<th>
+ <p>
+ VC++ 8 SP1 (32Bit)
+ </p>
+ </th>
+<th>
+ <p>
+ VC++ 10 beta (32Bit)
+ </p>
+ </th>
+<th>
+ <p>
+ gcc 4.1.2 (Linux, 64Bit)
+ </p>
+ </th>
+<th>
+ <p>
+ VC++ 10 beta (64Bit)
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ printf
+ </p>
+ </td>
+<td>
+ <p>
+ 1.597 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 2.058 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 1.989 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 1.742 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 1.693 [s]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ iostreams
+ </p>
+ </td>
+<td>
+ <p>
+ 4.727 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 4.166 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 5.294 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 2.223 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 3.272 [s]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Boost.Format
+ </p>
+ </td>
+<td>
+ <p>
+ 9.541 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 11.308 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 11.862 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 5.146 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 9.110 [s]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Karma (char buffer)
+ </p>
+ </td>
+<td>
+ <p>
+ 4.779 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 4.366 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 2.450 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 1.867 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 1.592 [s]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Karma (string)
+ </p>
+ </td>
+<td>
+ <p>
+ 4.861 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 6.500 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 2.972 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 1.658 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 2.024 [s]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Karma (rule)
+ </p>
+ </td>
+<td>
+ <p>
+ 4.723 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 4.344 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 2.579 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 1.893 [s]
+ </p>
+ </td>
+<td>
+ <p>
+ 1.574 [s]
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<br class="table-break"><p>
+ </p>
+<div class="figure">
+<a name="spirit.karma.format_performance"></a><p class="title"><b>Figure 4. Performance comparison for a sequence
+ of several items</b></p>
+<div class="figure-contents"><span class="inlinemediaobject"><img src="../../../.././images/format_performance.png" alt="Performance comparison for a sequence of several items"></span></div>
+</div>
+<p><br class="figure-break">
+ </p>
+<a name="spirit.karma.performance_measurements.numeric_performance.format_performance.platforms"></a><h6>
+<a name="id1118067"></a>
+ <a class="link" href="format_performance.html#spirit.karma.performance_measurements.numeric_performance.format_performance.platforms">Platforms</a>
+ </h6>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+ Windows7, Intel Core Duo(tm) Processor, 2.8GHz, 4GByte RAM
+ </li>
+<li class="listitem">
+ Linux, 8 Quad-Core AMD Opteron(tm) Processor, 2.8GHz, 64GByte RAM
+ </li>
+</ul></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+ de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="double_performance.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../numeric_performance.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../lex.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -41,7 +41,7 @@
           <span class="identifier">b</span></code> will be <code class="computeroutput"><span class="identifier">tuple</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">&gt;</span></code>.
         </p>
 <div class="table">
-<a name="id1089712"></a><p class="title"><b>Table 5. Spirit.Karma compound generator attribute types</b></p>
+<a name="id1103911"></a><p class="title"><b>Table 5. Spirit.Karma compound generator attribute types</b></p>
 <div class="table-contents"><table class="table" summary="Spirit.Karma compound generator attribute types">
 <colgroup>
 <col>

Modified: trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.karma.reference.generator_concepts.binarygenerator"></a><a class="link" href="binarygenerator.html" title="BinaryGenerator">BinaryGenerator</a>
 </h5></div></div></div>
 <a name="spirit.karma.reference.generator_concepts.binarygenerator.description"></a><h6>
-<a name="id1096819"></a>
+<a name="id1111018"></a>
             <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.description">Description</a>
           </h6>
 <p>
@@ -39,7 +39,7 @@
             Design Pattern.
           </p>
 <a name="spirit.karma.reference.generator_concepts.binarygenerator.refinement_of"></a><h6>
-<a name="id1096866"></a>
+<a name="id1111065"></a>
             <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.refinement_of">Refinement
             of</a>
           </h6>
@@ -66,7 +66,7 @@
 </dl>
 </div>
 <a name="spirit.karma.reference.generator_concepts.binarygenerator.valid_expressions"></a><h6>
-<a name="id1096943"></a>
+<a name="id1111142"></a>
             <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -135,7 +135,7 @@
 </tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.binarygenerator.type_expressions"></a><h6>
-<a name="id1097105"></a>
+<a name="id1111304"></a>
             <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.type_expressions">Type
             Expressions</a>
           </h6>
@@ -200,7 +200,7 @@
 </tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.binarygenerator.invariants"></a><h6>
-<a name="id1097303"></a>
+<a name="id1111502"></a>
             <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.invariants">Invariants</a>
           </h6>
 <p>
@@ -216,7 +216,7 @@
 </li>
 </ul></div>
 <a name="spirit.karma.reference.generator_concepts.binarygenerator.models"></a><h6>
-<a name="id1097439"></a>
+<a name="id1111639"></a>
             <a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.karma.reference.generator_concepts.generator"></a><a class="link" href="generator.html" title="Generator">Generator</a>
 </h5></div></div></div>
 <a name="spirit.karma.reference.generator_concepts.generator.description"></a><h6>
-<a name="id1095065"></a>
+<a name="id1109265"></a>
             <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.description">Description</a>
           </h6>
 <p>
@@ -81,7 +81,7 @@
 </dl>
 </div>
 <a name="spirit.karma.reference.generator_concepts.generator.valid_expressions"></a><h6>
-<a name="id1095320"></a>
+<a name="id1109519"></a>
             <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -164,7 +164,7 @@
 </tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.generator.type_expressions"></a><h6>
-<a name="id1095580"></a>
+<a name="id1109780"></a>
             <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.type_expressions">Type
             Expressions</a>
           </h6>
@@ -217,7 +217,7 @@
 </tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.generator.postcondition"></a><h6>
-<a name="id1095764"></a>
+<a name="id1109963"></a>
             <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.postcondition">Postcondition</a>
           </h6>
 <p>
@@ -239,7 +239,7 @@
             </li>
 </ul></div>
 <a name="spirit.karma.reference.generator_concepts.generator.models"></a><h6>
-<a name="id1095833"></a>
+<a name="id1110033"></a>
             <a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -7,7 +7,7 @@
 <link rel="home" href="../../../../index.html" title="Spirit 2.1">
 <link rel="up" href="../generator_concepts.html" title="Generator Concepts">
 <link rel="prev" href="binarygenerator.html" title="BinaryGenerator">
-<link rel="next" href="../../../lex.html" title="Spirit.Lex">
+<link rel="next" href="../../performance_measurements.html" title="Performance Measurements">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,14 +20,14 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="binarygenerator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../lex.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="binarygenerator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../performance_measurements.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" title="NaryGenerator">
 <div class="titlepage"><div><div><h5 class="title">
 <a name="spirit.karma.reference.generator_concepts.narygenerator"></a><a class="link" href="narygenerator.html" title="NaryGenerator">NaryGenerator</a>
 </h5></div></div></div>
 <a name="spirit.karma.reference.generator_concepts.narygenerator.description"></a><h6>
-<a name="id1097472"></a>
+<a name="id1111671"></a>
             <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.description">Description</a>
           </h6>
 <p>
@@ -37,7 +37,7 @@
             Design Pattern.
           </p>
 <a name="spirit.karma.reference.generator_concepts.narygenerator.refinement_of"></a><h6>
-<a name="id1097503"></a>
+<a name="id1111702"></a>
             <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.refinement_of">Refinement
             of</a>
           </h6>
@@ -64,7 +64,7 @@
 </dl>
 </div>
 <a name="spirit.karma.reference.generator_concepts.narygenerator.valid_expressions"></a><h6>
-<a name="id1097580"></a>
+<a name="id1111779"></a>
             <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -115,7 +115,7 @@
 </tr></tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.narygenerator.type_expressions"></a><h6>
-<a name="id1097700"></a>
+<a name="id1111899"></a>
             <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.type_expressions">Type
             Expressions</a>
           </h6>
@@ -168,7 +168,7 @@
 </tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.narygenerator.invariants"></a><h6>
-<a name="id1097865"></a>
+<a name="id1112065"></a>
             <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.invariants">Invariants</a>
           </h6>
 <p>
@@ -180,7 +180,7 @@
 <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_generator</span><span class="special">&lt;</span><span class="identifier">E</span><span class="special">&gt;::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
 </li></ul></div>
 <a name="spirit.karma.reference.generator_concepts.narygenerator.models"></a><h6>
-<a name="id1097951"></a>
+<a name="id1112150"></a>
             <a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.models">Models</a>
           </h6>
 <p>
@@ -199,7 +199,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="binarygenerator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../../lex.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="binarygenerator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../generator_concepts.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../performance_measurements.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.karma.reference.generator_concepts.primitivegenerator"></a><a class="link" href="primitivegenerator.html" title="PrimitiveGenerator">PrimitiveGenerator</a>
 </h5></div></div></div>
 <a name="spirit.karma.reference.generator_concepts.primitivegenerator.description"></a><h6>
-<a name="id1095875"></a>
+<a name="id1110075"></a>
             <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.description">Description</a>
           </h6>
 <p>
@@ -35,7 +35,7 @@
             that the client uses to build more complex generators.
           </p>
 <a name="spirit.karma.reference.generator_concepts.primitivegenerator.refinement_of"></a><h6>
-<a name="id1095896"></a>
+<a name="id1110095"></a>
             <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.refinement_of">Refinement
             of</a>
           </h6>
@@ -49,7 +49,7 @@
             </p>
 </blockquote></div>
 <a name="spirit.karma.reference.generator_concepts.primitivegenerator.post_delimit"></a><h6>
-<a name="id1095929"></a>
+<a name="id1110129"></a>
             <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.post_delimit">Post-delimit</a>
           </h6>
 <p>
@@ -62,7 +62,7 @@
 <pre class="programlisting"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">delimit_out</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span> <span class="identifier">delimit</span><span class="special">);</span>
 </pre>
 <a name="spirit.karma.reference.generator_concepts.primitivegenerator.type_expressions"></a><h6>
-<a name="id1096002"></a>
+<a name="id1110202"></a>
             <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.type_expressions">Type
             Expressions</a>
           </h6>
@@ -101,7 +101,7 @@
 </tr></tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.primitivegenerator.models"></a><h6>
-<a name="id1096277"></a>
+<a name="id1110476"></a>
             <a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.karma.reference.generator_concepts.unarygenerator"></a><a class="link" href="unarygenerator.html" title="UnaryGenerator">UnaryGenerator</a>
 </h5></div></div></div>
 <a name="spirit.karma.reference.generator_concepts.unarygenerator.description"></a><h6>
-<a name="id1096317"></a>
+<a name="id1110517"></a>
             <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.description">Description</a>
           </h6>
 <p>
@@ -36,7 +36,7 @@
             following the Delegate Design Pattern.
           </p>
 <a name="spirit.karma.reference.generator_concepts.unarygenerator.refinement_of"></a><h6>
-<a name="id1096338"></a>
+<a name="id1110537"></a>
             <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.refinement_of">Refinement
             of</a>
           </h6>
@@ -63,7 +63,7 @@
 </dl>
 </div>
 <a name="spirit.karma.reference.generator_concepts.unarygenerator.valid_expressions"></a><h6>
-<a name="id1096415"></a>
+<a name="id1110614"></a>
             <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -113,7 +113,7 @@
 </tr></tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.unarygenerator.type_expressions"></a><h6>
-<a name="id1096530"></a>
+<a name="id1110729"></a>
             <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.type_expressions">Type
             Expressions</a>
           </h6>
@@ -166,7 +166,7 @@
 </tbody>
 </table></div>
 <a name="spirit.karma.reference.generator_concepts.unarygenerator.invariants"></a><h6>
-<a name="id1096694"></a>
+<a name="id1110894"></a>
             <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.invariants">Invariants</a>
           </h6>
 <p>
@@ -177,7 +177,7 @@
 <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_generator</span><span class="special">&lt;</span><span class="identifier">G</span><span class="special">::</span><span class="identifier">subject_type</span><span class="special">&gt;::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
 </li></ul></div>
 <a name="spirit.karma.reference.generator_concepts.unarygenerator.models"></a><h6>
-<a name="id1096779"></a>
+<a name="id1110979"></a>
             <a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.karma.tutorials.quick_start"></a><a class="link" href="quick_start.html" title="Quick Start">Quick Start</a>
 </h4></div></div></div>
 <a name="spirit.karma.tutorials.quick_start.spirit_karma___what_s_that_"></a><h6>
-<a name="id1079356"></a>
+<a name="id1093555"></a>
           <a class="link" href="quick_start.html#spirit.karma.tutorials.quick_start.spirit_karma___what_s_that_">Spirit.Karma
           - what's that?</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -247,7 +247,7 @@
           The examples above can be found here: actions.cpp
         </p>
 <a name="spirit.karma.tutorials.semantic_actions.phoenix"></a><h6>
-<a name="id1082727"></a>
+<a name="id1096927"></a>
           <a class="link" href="semantic_actions.html#spirit.karma.tutorials.semantic_actions.phoenix">Phoenix</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -31,7 +31,7 @@
           We will start from trivial examples, ramping up as we go.
         </p>
 <a name="spirit.karma.tutorials.warming_up.trivial_example__1_generating_a_number"></a><h6>
-<a name="id1079471"></a>
+<a name="id1093670"></a>
           <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__1_generating_a_number">Trivial
           Example #1 Generating a number</a>
         </h6>
@@ -51,7 +51,7 @@
           to a floating point generator or parser: <code class="computeroutput"><span class="identifier">double_</span></code>.
         </p>
 <a name="spirit.karma.tutorials.warming_up.trivial_example__2_generating_two_numbers"></a><h6>
-<a name="id1079514"></a>
+<a name="id1093714"></a>
           <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__2_generating_two_numbers">Trivial
           Example #2 Generating two numbers</a>
         </h6>
@@ -89,7 +89,7 @@
           </p></td></tr>
 </table></div>
 <a name="spirit.karma.tutorials.warming_up.trivial_example__3_generating_one_or_more_numbers"></a><h6>
-<a name="id1079599"></a>
+<a name="id1093799"></a>
           <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__3_generating_one_or_more_numbers">Trivial
           Example #3 Generating one or more numbers</a>
         </h6>
@@ -114,7 +114,7 @@
           numbers, if needed.
         </p>
 <a name="spirit.karma.tutorials.warming_up.trivial_example__4_generating_a_comma_delimited_list_of_numbers"></a><h6>
-<a name="id1079647"></a>
+<a name="id1093847"></a>
           <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__4_generating_a_comma_delimited_list_of_numbers">Trivial
           Example #4 Generating a comma-delimited list of numbers</a>
         </h6>
@@ -137,7 +137,7 @@
           in the generated output zero or more times.
         </p>
 <a name="spirit.karma.tutorials.warming_up.let_s_generate_"></a><h6>
-<a name="id1079782"></a>
+<a name="id1093981"></a>
           <a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.let_s_generate_">Let's
           Generate!</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -6,7 +6,7 @@
 <meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
 <link rel="home" href="../index.html" title="Spirit 2.1">
 <link rel="up" href="../index.html" title="Spirit 2.1">
-<link rel="prev" href="karma/reference/generator_concepts/narygenerator.html" title="NaryGenerator">
+<link rel="prev" href="karma/performance_measurements/numeric_performance/format_performance.html" title="Comparing the performance of a sequence of several generators">
 <link rel="next" href="lex/lexer_introduction.html" title="Introduction to Spirit.Lex">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -20,7 +20,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="karma/reference/generator_concepts/narygenerator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lex/lexer_introduction.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="karma/performance_measurements/numeric_performance/format_performance.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lex/lexer_introduction.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 <div class="section" title="Spirit.Lex">
 <div class="titlepage"><div><div><h2 class="title" style="clear: both">
@@ -76,7 +76,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="karma/reference/generator_concepts/narygenerator.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lex/lexer_introduction.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="karma/performance_measurements/numeric_performance/format_performance.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="lex/lexer_introduction.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -51,7 +51,7 @@
             of the <span class="emphasis"><em>Spirit.Lex</em></span> library.
           </p>
 <a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_anatomy_of_a_token"></a><h6>
-<a name="id1111904"></a>
+<a name="id1131948"></a>
             <a class="link" href="lexer_token_values.html#spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_anatomy_of_a_token">The
             Anatomy of a Token</a>
           </h6>
@@ -94,13 +94,13 @@
             data structure contains at least the token id of the matched token type,
             allowing to identify the matched character sequence. Optionally, the
             token instance may contain a token value and/or the lexer state this
- token instance was matched in. The following <a class="link" href="lexer_token_values.html#spirit.lex.tokenstructure" title="Figure 5. The structure of a token">figure</a>
+ token instance was matched in. The following <a class="link" href="lexer_token_values.html#spirit.lex.tokenstructure" title="Figure 7. The structure of a token">figure</a>
             shows the schematic structure of a token.
           </p>
 <p>
             </p>
 <div class="figure">
-<a name="spirit.lex.tokenstructure"></a><p class="title"><b>Figure 5. The structure of a token</b></p>
+<a name="spirit.lex.tokenstructure"></a><p class="title"><b>Figure 7. The structure of a token</b></p>
 <div class="figure-contents"><span class="inlinemediaobject"><img src="../../../.././images/tokenstructure.png" alt="The structure of a token"></span></div>
 </div>
 <p><br class="figure-break">
@@ -187,7 +187,7 @@
             when it is requested for the first time.
           </p>
 <a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_physiognomy_of_a_token_definition"></a><h6>
-<a name="id1112430"></a>
+<a name="id1132473"></a>
             <a class="link" href="lexer_token_values.html#spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_physiognomy_of_a_token_definition">The
             Physiognomy of a Token Definition</a>
           </h6>
@@ -260,7 +260,7 @@
 </td></tr>
 </table></div>
 <a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values.examples_of_using__link_linkend__spirit_lex_reference_token_class___code__phrase_role__identifier__lexertl_token__phrase__phrase_role__special___lt__gt___phrase___code___link_"></a><h6>
-<a name="id1113028"></a>
+<a name="id1132729"></a>
             <a class="link" href="lexer_token_values.html#spirit.lex.abstracts.lexer_primitives.lexer_token_values.examples_of_using__link_linkend__spirit_lex_reference_token_class___code__phrase_role__identifier__lexertl_token__phrase__phrase_role__special___lt__gt___phrase___code___link_">Examples
             of using <a class="link" href="../../reference/token_class.html" title="Token Class"><code class="computeroutput"><span class="identifier">lexertl_token</span><span class="special">&lt;&gt;</span></code></a></a>
           </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -105,7 +105,7 @@
 <span class="keyword">void</span> <span class="identifier">f</span> <span class="special">();</span>
 </pre>
 <a name="spirit.lex.abstracts.lexer_semantic_actions.the_context_of_a_lexer_semantic_action"></a><h6>
-<a name="id1118066"></a>
+<a name="id1136454"></a>
           <a class="link" href="lexer_semantic_actions.html#spirit.lex.abstracts.lexer_semantic_actions.the_context_of_a_lexer_semantic_action">The
           context of a lexer semantic action</a>
         </h6>
@@ -120,7 +120,7 @@
           of the available functionality.
         </p>
 <div class="table">
-<a name="id1118086"></a><p class="title"><b>Table 6. Functions exposed by any context passed to a lexer
+<a name="id1136475"></a><p class="title"><b>Table 8. Functions exposed by any context passed to a lexer
         semantic action</b></p>
 <div class="table-contents"><table class="table" summary="Functions exposed by any context passed to a lexer
         semantic action">
@@ -241,7 +241,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="spirit.lex.abstracts.lexer_semantic_actions.lexer_semantic_actions_using_phoenix"></a><h6>
-<a name="id1118605"></a>
+<a name="id1136993"></a>
           <a class="link" href="lexer_semantic_actions.html#spirit.lex.abstracts.lexer_semantic_actions.lexer_semantic_actions_using_phoenix">Lexer
           Semantic Actions Using Phoenix</a>
         </h6>
@@ -253,7 +253,7 @@
           predefined Spirit placeholders:
         </p>
 <div class="table">
-<a name="id1118627"></a><p class="title"><b>Table 7. Predefined Phoenix placeholders for lexer semantic
+<a name="id1137016"></a><p class="title"><b>Table 9. Predefined Phoenix placeholders for lexer semantic
         actions</b></p>
 <div class="table-contents"><table class="table" summary="Predefined Phoenix placeholders for lexer semantic
         actions">
@@ -384,7 +384,7 @@
           table lists the available support functions and describes their functionality:
         </p>
 <div class="table">
-<a name="id1119002"></a><p class="title"><b>Table 8. Support functions usable from Phoenix expressions
+<a name="id1137294"></a><p class="title"><b>Table 10. Support functions usable from Phoenix expressions
         inside lexer semantic actions</b></p>
 <div class="table-contents"><table class="table" summary="Support functions usable from Phoenix expressions
         inside lexer semantic actions">

Modified: trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,17 +27,17 @@
 <a name="spirit.lex.abstracts.lexer_states"></a><a class="link" href="lexer_states.html" title="Lexer States"> Lexer States</a>
 </h4></div></div></div>
 <a name="spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_lexer_semantic_actions"></a><h6>
-<a name="id1122039"></a>
+<a name="id1141998"></a>
           <a class="link" href="lexer_states.html#spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_lexer_semantic_actions">Controlling
           the Lexer State from Lexer Semantic Actions</a>
         </h6>
 <a name="spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_parser_semantic_actions"></a><h6>
-<a name="id1122052"></a>
+<a name="id1142011"></a>
           <a class="link" href="lexer_states.html#spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_parser_semantic_actions">Controlling
           the Lexer State from Parser Semantic Actions</a>
         </h6>
 <a name="spirit.lex.abstracts.lexer_states.using_a_lexer_state_for_the_skip_parser"></a><h6>
-<a name="id1122065"></a>
+<a name="id1142024"></a>
           <a class="link" href="lexer_states.html#spirit.lex.abstracts.lexer_states.using_a_lexer_state_for_the_skip_parser">Using
           a Lexer State for the Skip Parser</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -176,7 +176,7 @@
 <p>
         </p>
 <a name="spirit.lex.abstracts.lexer_static_model.generating_the_static_analyzer"></a><h6>
-<a name="id1120452"></a>
+<a name="id1140415"></a>
           <a class="link" href="lexer_static_model.html#spirit.lex.abstracts.lexer_static_model.generating_the_static_analyzer">Generating
           the Static Analyzer</a>
         </h6>
@@ -225,7 +225,7 @@
           the next topic (the full generated code can be viewed here).
         </p>
 <a name="spirit.lex.abstracts.lexer_static_model.modifying_the_dynamic_analyzer"></a><h6>
-<a name="id1120779"></a>
+<a name="id1140742"></a>
           <a class="link" href="lexer_static_model.html#spirit.lex.abstracts.lexer_static_model.modifying_the_dynamic_analyzer">Modifying
           the Dynamic Analyzer</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -28,7 +28,7 @@
         Input Data</a>
 </h4></div></div></div>
 <a name="spirit.lex.abstracts.lexer_tokenizing.the_tokenize_function"></a><h6>
-<a name="id1113555"></a>
+<a name="id1133609"></a>
           <a class="link" href="lexer_tokenizing.html#spirit.lex.abstracts.lexer_tokenizing.the_tokenize_function">The
           tokenize function</a>
         </h6>
@@ -228,7 +228,7 @@
 </dl>
 </div>
 <a name="spirit.lex.abstracts.lexer_tokenizing.the_generate_static_function"></a><h6>
-<a name="id1117444"></a>
+<a name="id1135833"></a>
           <a class="link" href="lexer_tokenizing.html#spirit.lex.abstracts.lexer_tokenizing.the_generate_static_function">The
           generate_static function</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -56,7 +56,7 @@
         </li>
 </ul></div>
 <a name="spirit.lex.lexer_introduction.why_use_a_separate_lexer_"></a><h5>
-<a name="id1098030"></a>
+<a name="id1118146"></a>
         <a class="link" href="lexer_introduction.html#spirit.lex.lexer_introduction.why_use_a_separate_lexer_">Why
         Use a Separate Lexer?</a>
       </h5>
@@ -155,7 +155,7 @@
         grammar recognizers.
       </p>
 <a name="spirit.lex.lexer_introduction.advantages_of_using__emphasis_spirit_lex__emphasis_"></a><h5>
-<a name="id1098239"></a>
+<a name="id1118355"></a>
         <a class="link" href="lexer_introduction.html#spirit.lex.lexer_introduction.advantages_of_using__emphasis_spirit_lex__emphasis_">Advantages
         of using <span class="emphasis"><em>Spirit.Lex</em></span></a>
       </h5>
@@ -203,12 +203,12 @@
         application.
       </p>
 <a name="spirit.lex.lexer_introduction.the_library_structure_of__emphasis_spirit_lex__emphasis_"></a><h5>
-<a name="id1100346"></a>
+<a name="id1118458"></a>
         <a class="link" href="lexer_introduction.html#spirit.lex.lexer_introduction.the_library_structure_of__emphasis_spirit_lex__emphasis_">The
         Library Structure of <span class="emphasis"><em>Spirit.Lex</em></span></a>
       </h5>
 <p>
- The <a class="link" href="lexer_introduction.html#spirit.lexerflow" title="Figure 3. The Library structure and Common Flow of Information while using Spirit.Lex in an application">figure</a> below shows a high level
+ The <a class="link" href="lexer_introduction.html#spirit.lexerflow" title="Figure 5. The Library structure and Common Flow of Information while using Spirit.Lex in an application">figure</a> below shows a high level
         overview of how the <span class="emphasis"><em>Spirit.Lex</em></span> library might be used
         in an application. <span class="emphasis"><em>Spirit.Lex</em></span> allows to create lexical
         analyzers based on patterns. These patterns are regular expression based
@@ -224,7 +224,7 @@
 <p>
         </p>
 <div class="figure">
-<a name="spirit.lexerflow"></a><p class="title"><b>Figure 3. The Library structure and Common Flow of Information while
+<a name="spirit.lexerflow"></a><p class="title"><b>Figure 5. The Library structure and Common Flow of Information while
         using <span class="emphasis"><em>Spirit.Lex</em></span> in an application</b></p>
 <div class="figure-contents"><span class="inlinemediaobject"><img src="../.././images/lexerflow.png" alt="The Library structure and Common Flow of Information while using Spirit.Lex in an application"></span></div>
 </div>

Modified: trunk/libs/spirit/doc/html/spirit/lex/reference/concepts/lexer.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/reference/concepts/lexer.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/reference/concepts/lexer.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.lex.reference.concepts.lexer"></a><a class="link" href="lexer.html" title="Lexer">Lexer</a>
 </h5></div></div></div>
 <div class="table">
-<a name="id1122117"></a><p class="title"><b>Table 9. Regular expressions support</b></p>
+<a name="id1142076"></a><p class="title"><b>Table 11. Regular expressions support</b></p>
 <div class="table-contents"><table class="table" summary="Regular expressions support">
 <colgroup>
 <col>
@@ -502,7 +502,7 @@
             </p></td></tr>
 </table></div>
 <a name="spirit.lex.reference.concepts.lexer.regular_expression_precedence"></a><h6>
-<a name="id1125341"></a>
+<a name="id1143654"></a>
             <a class="link" href="lexer.html#spirit.lex.reference.concepts.lexer.regular_expression_precedence">Regular
             Expression Precedence</a>
           </h6>
@@ -521,7 +521,7 @@
             </li>
 </ul></div>
 <a name="spirit.lex.reference.concepts.lexer.macros"></a><h6>
-<a name="id1125444"></a>
+<a name="id1143757"></a>
             <a class="link" href="lexer.html#spirit.lex.reference.concepts.lexer.macros">Macros</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_class.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_class.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_class.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,22 +27,22 @@
 <a name="spirit.lex.reference.lexer_class"></a><a class="link" href="lexer_class.html" title="Lexer Class">Lexer Class</a>
 </h4></div></div></div>
 <a name="spirit.lex.reference.lexer_class.the_lexertl_lexer_class_implementing_the_dynamic_model"></a><h6>
-<a name="id1125567"></a>
+<a name="id1145532"></a>
           <a class="link" href="lexer_class.html#spirit.lex.reference.lexer_class.the_lexertl_lexer_class_implementing_the_dynamic_model">The
           lexertl_lexer Class Implementing the Dynamic Model</a>
         </h6>
 <a name="spirit.lex.reference.lexer_class.the_lexertl_actor_lexer_class_implementing_the_dynamic_model"></a><h6>
-<a name="id1125580"></a>
+<a name="id1145545"></a>
           <a class="link" href="lexer_class.html#spirit.lex.reference.lexer_class.the_lexertl_actor_lexer_class_implementing_the_dynamic_model">The
           lexertl_actor_lexer Class Implementing the Dynamic Model</a>
         </h6>
 <a name="spirit.lex.reference.lexer_class.the_lexertl_static_lexer_class_implementing_the_static_model"></a><h6>
-<a name="id1125593"></a>
+<a name="id1145558"></a>
           <a class="link" href="lexer_class.html#spirit.lex.reference.lexer_class.the_lexertl_static_lexer_class_implementing_the_static_model">The
           lexertl_static_lexer Class Implementing the Static Model</a>
         </h6>
 <a name="spirit.lex.reference.lexer_class.the_lexertl_static_actor_lexer_class_implementing_the_static_model"></a><h6>
-<a name="id1125606"></a>
+<a name="id1145572"></a>
           <a class="link" href="lexer_class.html#spirit.lex.reference.lexer_class.the_lexertl_static_actor_lexer_class_implementing_the_static_model">The
           lexertl_static_actor_lexer Class Implementing the Static Model</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -39,7 +39,7 @@
           (for the full example code see here: word_count_functor.cpp).
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart1.prerequisites"></a><h6>
-<a name="id1100614"></a>
+<a name="id1120073"></a>
           <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.prerequisites">Prerequisites</a>
         </h6>
 <p>
@@ -78,7 +78,7 @@
 <p>
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart1.defining_tokens"></a><h6>
-<a name="id1100859"></a>
+<a name="id1120318"></a>
           <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.defining_tokens">Defining
           Tokens</a>
         </h6>
@@ -133,7 +133,7 @@
 <p>
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart1.doing_the_useful_work"></a><h6>
-<a name="id1101168"></a>
+<a name="id1120626"></a>
           <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.doing_the_useful_work">Doing
           the Useful Work</a>
         </h6>
@@ -198,7 +198,7 @@
           as well.
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart1.pulling_everything_together"></a><h6>
-<a name="id1101667"></a>
+<a name="id1121125"></a>
           <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.pulling_everything_together">Pulling
           Everything Together</a>
         </h6>
@@ -251,7 +251,7 @@
 <p>
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart1.comparing__emphasis_spirit_lex__emphasis__with__ulink_url__http___flex_sourceforge_net___flex__ulink_"></a><h6>
-<a name="id1102494"></a>
+<a name="id1121952"></a>
           <a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.comparing__emphasis_spirit_lex__emphasis__with__ulink_url__http___flex_sourceforge_net___flex__ulink_">Comparing
           <span class="emphasis"><em>Spirit.Lex</em></span> with Flex</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -40,7 +40,7 @@
           options along the lines (for the full example code see here: word_count_lexer.cpp).
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart2.prerequisites"></a><h6>
-<a name="id1104556"></a>
+<a name="id1124583"></a>
           <a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.prerequisites">Prerequisites</a>
         </h6>
 <p>
@@ -114,7 +114,7 @@
 <p>
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart2.semantic_actions_in__emphasis_spirit_lex__emphasis_"></a><h6>
-<a name="id1105205"></a>
+<a name="id1125232"></a>
           <a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.semantic_actions_in__emphasis_spirit_lex__emphasis_">Semantic
           Actions in <span class="emphasis"><em>Spirit.Lex</em></span></a>
         </h6>
@@ -173,7 +173,7 @@
           Semantic Actions</a>.
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart2.associating_token_definitions_with_the_lexer"></a><h6>
-<a name="id1105823"></a>
+<a name="id1125850"></a>
           <a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.associating_token_definitions_with_the_lexer">Associating
           Token Definitions with the Lexer</a>
         </h6>
@@ -209,7 +209,7 @@
           with the constant defined by <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">min_token_id</span></code>.
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart2.pulling_everything_together"></a><h6>
-<a name="id1106198"></a>
+<a name="id1126138"></a>
           <a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.pulling_everything_together">Pulling
           everything together</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html (original)
+++ trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -39,14 +39,14 @@
           usage of possibly different lexical analyzer libraries. The utilization
           of iterators seemed to be the right choice from this standpoint as well,
           mainly because these can be used as an abstraction layer hiding implementation
- specifics of the used lexer library. The <a class="link" href="lexer_quickstart3.html#spirit.lex.flowcontrol" title="Figure 4. The common flow control implemented while parsing combined with lexical analysis">picture</a>
+ specifics of the used lexer library. The <a class="link" href="lexer_quickstart3.html#spirit.lex.flowcontrol" title="Figure 6. The common flow control implemented while parsing combined with lexical analysis">picture</a>
           below shows the common flow control implemented while parsing combined
           with lexical analysis.
         </p>
 <p>
           </p>
 <div class="figure">
-<a name="spirit.lex.flowcontrol"></a><p class="title"><b>Figure 4. The common flow control implemented while parsing
+<a name="spirit.lex.flowcontrol"></a><p class="title"><b>Figure 6. The common flow control implemented while parsing
           combined with lexical analysis</b></p>
 <div class="figure-contents"><span class="inlinemediaobject"><img src="../../.././images/flowofcontrol.png" alt="The common flow control implemented while parsing combined with lexical analysis"></span></div>
 </div>
@@ -65,7 +65,7 @@
           code see here: word_count.cpp).
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart3.prerequisites"></a><h6>
-<a name="id1107172"></a>
+<a name="id1127210"></a>
           <a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.prerequisites">Prerequisites</a>
         </h6>
 <p>
@@ -115,7 +115,7 @@
 <p>
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart3.defining_tokens"></a><h6>
-<a name="id1107603"></a>
+<a name="id1127641"></a>
           <a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.defining_tokens">Defining
           Tokens</a>
         </h6>
@@ -168,7 +168,7 @@
 <p>
         </p>
 <a name="spirit.lex.tutorials.lexer_quickstart3.using_token_definition_instances_as_parsers"></a><h6>
-<a name="id1107940"></a>
+<a name="id1127978"></a>
           <a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.using_token_definition_instances_as_parsers">Using
           Token Definition Instances as Parsers</a>
         </h6>
@@ -339,7 +339,7 @@
           </p></td></tr>
 </table></div>
 <a name="spirit.lex.tutorials.lexer_quickstart3.pulling_everything_together"></a><h6>
-<a name="id1110919"></a>
+<a name="id1130963"></a>
           <a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.pulling_everything_together">Pulling
           Everything Together</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/preface.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/preface.html (original)
+++ trunk/libs/spirit/doc/html/spirit/preface.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -41,11 +41,11 @@
       </p>
 </blockquote></div>
 <a name="spirit.preface.history"></a><h4>
-<a name="id1024285"></a>
+<a name="id1038484"></a>
       <a class="link" href="preface.html#spirit.preface.history">History</a>
     </h4>
 <a name="spirit.preface._emphasis_80s__emphasis_"></a><h4>
-<a name="id1024298"></a>
+<a name="id1038497"></a>
       <a class="link" href="preface.html#spirit.preface._emphasis_80s__emphasis_"><span class="emphasis"><em>80s</em></span></a>
     </h4>
 <p>
@@ -59,7 +59,7 @@
       parser. This worked very well.
     </p>
 <a name="spirit.preface._emphasis_90s__emphasis_"></a><h4>
-<a name="id1024316"></a>
+<a name="id1038515"></a>
       <a class="link" href="preface.html#spirit.preface._emphasis_90s__emphasis_"><span class="emphasis"><em>90s</em></span></a>
     </h4>
 <p>
@@ -97,7 +97,7 @@
       here: pre-Spirit.
     </p>
 <a name="spirit.preface._emphasis_2001_to_2006__emphasis_"></a><h4>
-<a name="id1024358"></a>
+<a name="id1038557"></a>
       <a class="link" href="preface.html#spirit.preface._emphasis_2001_to_2006__emphasis_"><span class="emphasis"><em>2001
       to 2006</em></span></a>
     </h4>
@@ -127,7 +127,7 @@
       for design and implementation quality, robustness, and reusability.
     </p>
 <a name="spirit.preface._emphasis_2007__emphasis_"></a><h4>
-<a name="id1024393"></a>
+<a name="id1038592"></a>
       <a class="link" href="preface.html#spirit.preface._emphasis_2007__emphasis_"><span class="emphasis"><em>2007</em></span></a>
     </h4>
 <p>
@@ -164,7 +164,7 @@
       gives you the right ingredients to create a sledgehammer easily.
     </p>
 <a name="spirit.preface.new_ideas__spirit_v2"></a><h4>
-<a name="id1024468"></a>
+<a name="id1038668"></a>
       <a class="link" href="preface.html#spirit.preface.new_ideas__spirit_v2">New Ideas: Spirit V2</a>
     </h4>
 <p>
@@ -202,7 +202,7 @@
       same underlying component library as for the parser and generator libraries.
     </p>
 <a name="spirit.preface.how_to_use_this_manual"></a><h4>
-<a name="id1024519"></a>
+<a name="id1038718"></a>
       <a class="link" href="preface.html#spirit.preface.how_to_use_this_manual">How to use this manual</a>
     </h4>
 <p>
@@ -233,7 +233,7 @@
       icons precede some text to indicate:
     </p>
 <div class="table">
-<a name="id1024571"></a><p class="title"><b>Table 1. Icons</b></p>
+<a name="id1038771"></a><p class="title"><b>Table 1. Icons</b></p>
 <div class="table-contents"><table class="table" summary="Icons">
 <colgroup>
 <col>
@@ -354,7 +354,7 @@
       Tools</a>.
     </p>
 <a name="spirit.preface.support"></a><h4>
-<a name="id1024813"></a>
+<a name="id1039012"></a>
       <a class="link" href="preface.html#spirit.preface.support">Support</a>
     </h4>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -41,7 +41,7 @@
           <span class="identifier">b</span></code> will be <code class="computeroutput"><span class="identifier">tuple</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">&gt;</span></code>.
         </p>
 <div class="table">
-<a name="id1062884"></a><p class="title"><b>Table 4. compound parser attribute types</b></p>
+<a name="id1077084"></a><p class="title"><b>Table 4. compound parser attribute types</b></p>
 <div class="table-contents"><table class="table" summary="compound parser attribute types">
 <colgroup>
 <col>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.reference.basics"></a><a class="link" href="basics.html" title="Basics">Basics</a>
 </h4></div></div></div>
 <a name="spirit.qi.reference.basics.lazy_argument"></a><h6>
-<a name="id1072196"></a>
+<a name="id1086395"></a>
           <a class="link" href="basics.html#spirit.qi.reference.basics.lazy_argument">Lazy Argument</a>
         </h6>
 <p>
@@ -51,7 +51,7 @@
           second argument. This is done for uniformity with Semantic Actions).
         </p>
 <a name="spirit.qi.reference.basics.character_encoding_namespace"></a><h6>
-<a name="id1072333"></a>
+<a name="id1086532"></a>
           <a class="link" href="basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
           Encoding Namespace</a>
         </h6>

Added: trunk/libs/spirit/doc/html/spirit/qi/reference/char_.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/char_.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -0,0 +1,65 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>char_</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="basics.html" title="Basics">
+<link rel="next" href="../string.html" title="String">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="basics.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../string.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="char_">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.reference.char_"></a><a class="link" href="char_.html" title="char_">char_</a>
+</h4></div></div></div>
+<a name="spirit.qi.reference.char_.description"></a><h6>
+<a name="id1086727"></a>
+ <a class="link" href="char_.html#spirit.qi.reference.char_.description">Description</a>
+ </h6>
+<p>
+ The char_ parser matches any character.
+ </p>
+<a name="spirit.qi.reference.char_.header"></a><h6>
+<a name="id1086745"></a>
+ <a class="link" href="char_.html#spirit.qi.reference.char_.header">Header</a>
+ </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">qi</span><span class="special">/</span><span class="keyword">char</span><span class="special">/</span><span class="keyword">char</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span> <span class="comment">// main include
+</span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_char</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span> <span class="comment">// or, forwarding header
+</span></pre>
+<a name="spirit.qi.reference.char_.module_headers"></a><h6>
+<a name="id1086874"></a>
+ <a class="link" href="char_.html#spirit.qi.reference.char_.module_headers">Module Headers</a>
+ </h6>
+<p>
+ Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+ de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="basics.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../string.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.reference.parser_concepts.binaryparser"></a><a class="link" href="binaryparser.html" title="BinaryParser">BinaryParser</a>
 </h5></div></div></div>
 <a name="spirit.qi.reference.parser_concepts.binaryparser.description"></a><h6>
-<a name="id1070866"></a>
+<a name="id1085066"></a>
             <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.description">Description</a>
           </h6>
 <p>
@@ -37,7 +37,7 @@
             following the Composite Design Pattern.
           </p>
 <a name="spirit.qi.reference.parser_concepts.binaryparser.refinement_of"></a><h6>
-<a name="id1070918"></a>
+<a name="id1085117"></a>
             <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.refinement_of">Refinement
             of</a>
           </h6>
@@ -64,7 +64,7 @@
 </dl>
 </div>
 <a name="spirit.qi.reference.parser_concepts.binaryparser.valid_expressions"></a><h6>
-<a name="id1070997"></a>
+<a name="id1085196"></a>
             <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -133,7 +133,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.binaryparser.type_expressions"></a><h6>
-<a name="id1071158"></a>
+<a name="id1085357"></a>
             <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.type_expressions">Type
             Expressions</a>
           </h6>
@@ -198,7 +198,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.binaryparser.invariants"></a><h6>
-<a name="id1071358"></a>
+<a name="id1085558"></a>
             <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.invariants">Invariants</a>
           </h6>
 <p>
@@ -214,7 +214,7 @@
 </li>
 </ul></div>
 <a name="spirit.qi.reference.parser_concepts.binaryparser.models"></a><h6>
-<a name="id1071497"></a>
+<a name="id1085697"></a>
             <a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.reference.parser_concepts.naryparser"></a><a class="link" href="naryparser.html" title="NaryParser">NaryParser</a>
 </h5></div></div></div>
 <a name="spirit.qi.reference.parser_concepts.naryparser.description"></a><h6>
-<a name="id1071532"></a>
+<a name="id1085732"></a>
             <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.description">Description</a>
           </h6>
 <p>
@@ -37,7 +37,7 @@
             Design Pattern.
           </p>
 <a name="spirit.qi.reference.parser_concepts.naryparser.refinement_of"></a><h6>
-<a name="id1071568"></a>
+<a name="id1085768"></a>
             <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.refinement_of">Refinement
             of</a>
           </h6>
@@ -64,7 +64,7 @@
 </dl>
 </div>
 <a name="spirit.qi.reference.parser_concepts.naryparser.valid_expressions"></a><h6>
-<a name="id1071647"></a>
+<a name="id1085847"></a>
             <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -115,7 +115,7 @@
 </tr></tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.naryparser.type_expressions"></a><h6>
-<a name="id1071770"></a>
+<a name="id1085969"></a>
             <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.type_expressions">Type
             Expressions</a>
           </h6>
@@ -168,7 +168,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.naryparser.invariants"></a><h6>
-<a name="id1071940"></a>
+<a name="id1086140"></a>
             <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.invariants">Invariants</a>
           </h6>
 <p>
@@ -180,7 +180,7 @@
 <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_parser</span><span class="special">&lt;</span><span class="identifier">E</span><span class="special">&gt;::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
 </li></ul></div>
 <a name="spirit.qi.reference.parser_concepts.naryparser.models"></a><h6>
-<a name="id1072162"></a>
+<a name="id1086362"></a>
             <a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.reference.parser_concepts.parser"></a><a class="link" href="parser.html" title="Parser">Parser</a>
 </h5></div></div></div>
 <a name="spirit.qi.reference.parser_concepts.parser.description"></a><h6>
-<a name="id1068594"></a>
+<a name="id1082793"></a>
             <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.description">Description</a>
           </h6>
 <p>
@@ -82,7 +82,7 @@
 </dl>
 </div>
 <a name="spirit.qi.reference.parser_concepts.parser.valid_expressions"></a><h6>
-<a name="id1068857"></a>
+<a name="id1083056"></a>
             <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -162,7 +162,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.parser.type_expressions"></a><h6>
-<a name="id1069124"></a>
+<a name="id1083324"></a>
             <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.type_expressions">Type
             Expressions</a>
           </h6>
@@ -215,7 +215,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.parser.postcondition"></a><h6>
-<a name="id1069872"></a>
+<a name="id1084072"></a>
             <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.postcondition">Postcondition</a>
           </h6>
 <p>
@@ -249,7 +249,7 @@
             </li>
 </ul></div>
 <a name="spirit.qi.reference.parser_concepts.parser.models"></a><h6>
-<a name="id1070000"></a>
+<a name="id1084199"></a>
             <a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.reference.parser_concepts.primitiveparser"></a><a class="link" href="primitiveparser.html" title="PrimitiveParser">PrimitiveParser</a>
 </h5></div></div></div>
 <a name="spirit.qi.reference.parser_concepts.primitiveparser.description"></a><h6>
-<a name="id1070034"></a>
+<a name="id1084234"></a>
             <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.description">Description</a>
           </h6>
 <p>
@@ -35,7 +35,7 @@
             that the client uses to build more complex parsers.
           </p>
 <a name="spirit.qi.reference.parser_concepts.primitiveparser.refinement_of"></a><h6>
-<a name="id1070057"></a>
+<a name="id1084257"></a>
             <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.refinement_of">Refinement
             of</a>
           </h6>
@@ -49,7 +49,7 @@
             </p>
 </blockquote></div>
 <a name="spirit.qi.reference.parser_concepts.primitiveparser.pre_skip"></a><h6>
-<a name="id1070093"></a>
+<a name="id1084293"></a>
             <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.pre_skip">Pre-skip</a>
           </h6>
 <p>
@@ -63,7 +63,7 @@
 <pre class="programlisting"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">skip_over</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">skip</span><span class="special">);</span>
 </pre>
 <a name="spirit.qi.reference.parser_concepts.primitiveparser.type_expressions"></a><h6>
-<a name="id1070184"></a>
+<a name="id1084384"></a>
             <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.type_expressions">Type
             Expressions</a>
           </h6>
@@ -102,7 +102,7 @@
 </tr></tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.primitiveparser.models"></a><h6>
-<a name="id1070320"></a>
+<a name="id1084520"></a>
             <a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.models">Models</a>
           </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.reference.parser_concepts.unaryparser"></a><a class="link" href="unaryparser.html" title="UnaryParser">UnaryParser</a>
 </h5></div></div></div>
 <a name="spirit.qi.reference.parser_concepts.unaryparser.description"></a><h6>
-<a name="id1070361"></a>
+<a name="id1084560"></a>
             <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.description">Description</a>
           </h6>
 <p>
@@ -36,7 +36,7 @@
             the Delegate Design Pattern.
           </p>
 <a name="spirit.qi.reference.parser_concepts.unaryparser.refinement_of"></a><h6>
-<a name="id1070386"></a>
+<a name="id1084586"></a>
             <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.refinement_of">Refinement
             of</a>
           </h6>
@@ -63,7 +63,7 @@
 </dl>
 </div>
 <a name="spirit.qi.reference.parser_concepts.unaryparser.valid_expressions"></a><h6>
-<a name="id1070465"></a>
+<a name="id1084665"></a>
             <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.valid_expressions">Valid
             Expressions</a>
           </h6>
@@ -113,7 +113,7 @@
 </tr></tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.unaryparser.type_expressions"></a><h6>
-<a name="id1070579"></a>
+<a name="id1084779"></a>
             <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.type_expressions">Type
             Expressions</a>
           </h6>
@@ -166,7 +166,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.reference.parser_concepts.unaryparser.invariants"></a><h6>
-<a name="id1070746"></a>
+<a name="id1084946"></a>
             <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.invariants">Invariants</a>
           </h6>
 <p>
@@ -177,7 +177,7 @@
 <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_parser</span><span class="special">&lt;</span><span class="identifier">P</span><span class="special">::</span><span class="identifier">subject_type</span><span class="special">&gt;::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
 </li></ul></div>
 <a name="spirit.qi.reference.parser_concepts.unaryparser.models"></a><h6>
-<a name="id1070831"></a>
+<a name="id1085031"></a>
             <a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.models">Models</a>
           </h6>
 <p>

Added: trunk/libs/spirit/doc/html/spirit/qi/string.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/qi/string.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>String</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../qi.html" title="Qi">
+<link rel="prev" href="reference/char_.html" title="char_">
+<link rel="next" href="string/lit_string.html" title="lit/string">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/char_.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="string/lit_string.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="String">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="spirit.qi.string"></a><a class="link" href="string.html" title="String">String</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">lit/string</span></dt>
+<dt><span class="section">symbols</span></dt>
+</dl></div>
+<p>
+ This module includes parsers for strings. Currently, this module includes
+ the literal and string parsers and the symbol table.
+ </p>
+<a name="spirit.qi.string.module_header"></a><h5>
+<a name="id1086911"></a>
+ <a class="link" href="string.html#spirit.qi.string.module_header">Module Header</a>
+ </h5>
+<pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/home/qi/string.hpp&gt;
+</span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_string</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+ de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/char_.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../qi.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="string/lit_string.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/qi/string/lit_string.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/qi/string/lit_string.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -0,0 +1,451 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>lit/string</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../string.html" title="String">
+<link rel="prev" href="../string.html" title="String">
+<link rel="next" href="symbols.html" title="symbols">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../string.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="symbols.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="lit/string">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.string.lit_string"></a><a class="link" href="lit_string.html" title="lit/string">lit/string</a>
+</h4></div></div></div>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lit</span></code>: generates a string parser (Same
+ as <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span></code>)
+ </li>
+<li class="listitem">
+<code class="computeroutput"><span class="identifier">NS</span><span class="special">::</span><span class="identifier">string</span></code>: generates a string parser for
+ the character encoding. <code class="computeroutput"><span class="identifier">NS</span></code>
+ is a <a class="link" href="../reference/basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+ Encoding Namespace</a>.
+ </li>
+</ul></div>
+<a name="spirit.qi.string.lit_string.description"></a><h6>
+<a name="id1087075"></a>
+ <a class="link" href="lit_string.html#spirit.qi.string.lit_string.description">Description</a>
+ </h6>
+<p>
+ The lit/string parser matches a string of characters. The lit/string parser
+ is an implicit lexeme: the <code class="computeroutput"><span class="identifier">skip</span></code>
+ parser is not applied in between characters of the string.
+ </p>
+<a name="spirit.qi.string.lit_string.header"></a><h6>
+<a name="id1087099"></a>
+ <a class="link" href="lit_string.html#spirit.qi.string.lit_string.header">Header</a>
+ </h6>
+<pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/home/qi/string/lit.hpp&gt;
+</span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_lit</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+ </p>
+<a name="spirit.qi.string.lit_string.model_of"></a><h6>
+<a name="id1087173"></a>
+ <a class="link" href="lit_string.html#spirit.qi.string.lit_string.model_of">Model of</a>
+ </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <a class="link" href="../reference/parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">s</span></code></span></dt>
+<dd><p>
+ A literal string, e.g. "Hello", or a pointer/reference to
+ a null-terminated array of characters or a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">fs</span></code></span></dt>
+<dd><p>
+ A <a class="link" href="../reference/basics.html#spirit.qi.reference.basics.lazy_argument">Lazy Argument</a>
+ that evaluates to a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span></code>
+ or a pointer/reference to a null-terminated array of characters.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">ns</span></code></span></dt>
+<dd><p>
+ A <a class="link" href="../reference/basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
+ Encoding Namespace</a>.
+ </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.string.lit_string.expression_semantics"></a><h6>
+<a name="id1087306"></a>
+ <a class="link" href="lit_string.html#spirit.qi.string.lit_string.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+ Semantics of an expression is defined only where it differs from, or is
+ not defined in <a class="link" href="../reference/parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">s</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate a string parser from a string, <code class="computeroutput"><span class="identifier">s</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate a string parser from a string, <code class="computeroutput"><span class="identifier">s</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate a string parser from a string, <code class="computeroutput"><span class="identifier">s</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">fs</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate a string parser from a string, <code class="computeroutput"><span class="identifier">s</span></code>,
+ returned by invoking <code class="computeroutput"><span class="identifier">fs</span></code>
+ at parse time. See <a class="link" href="../reference/basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+ Argument</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">fs</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate a string parser from a string, <code class="computeroutput"><span class="identifier">s</span></code>,
+ returned by invoking <code class="computeroutput"><span class="identifier">fs</span></code>
+ at parse time. See <a class="link" href="../reference/basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+ Argument</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">fs</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Generate a string parser from a string, <code class="computeroutput"><span class="identifier">s</span></code>,
+ returned by invoking <code class="computeroutput"><span class="identifier">fs</span></code>
+ at parse time. See <a class="link" href="../reference/basics.html#spirit.qi.reference.basics.lazy_argument">Lazy
+ Argument</a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.string.lit_string.attributes"></a><h6>
+<a name="id1087654"></a>
+ <a class="link" href="lit_string.html#spirit.qi.string.lit_string.attributes">Attributes</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Attribute
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">s</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unused</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unused</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>
+ where <code class="computeroutput"><span class="identifier">T</span></code> is the
+ underlying character type of <code class="computeroutput"><span class="identifier">s</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">fs</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>
+ where <code class="computeroutput"><span class="identifier">T</span></code> is the
+ underlying character type of <code class="computeroutput"><span class="identifier">s</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="identifier">fs</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>
+ where <code class="computeroutput"><span class="identifier">T</span></code> is the
+ underlying character type of <code class="computeroutput"><span class="identifier">s</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">ns</span><span class="special">::</span><span class="identifier">string</span><span class="special">(</span><span class="identifier">fs</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>
+ where <code class="computeroutput"><span class="identifier">T</span></code> is the
+ underlying character type of <code class="computeroutput"><span class="identifier">s</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.string.lit_string.complexity"></a><h6>
+<a name="id1088075"></a>
+ <a class="link" href="lit_string.html#spirit.qi.string.lit_string.complexity">Complexity</a>
+ </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ O(N)
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<p>
+ where <code class="computeroutput"><span class="identifier">N</span></code> is the number of
+ characters in the string to be parsed.
+ </p>
+<a name="spirit.qi.string.lit_string.example"></a><h6>
+<a name="id1088110"></a>
+ <a class="link" href="lit_string.html#spirit.qi.string.lit_string.example">Example</a>
+ </h6>
+<p>
+ Some includes:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ All code snippets below use this common test function:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">P</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_parser</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">input</span><span class="special">,</span> <span class="identifier">P</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">(</span><span class="identifier">input</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">begin</span><span class="special">());</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">p</span><span class="special">))</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"ok"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">else</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"fail"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Some using declarations:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">lit</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">string</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Basic literals:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="string">"boost"</span><span class="special">);</span> <span class="comment">// plain literal
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="string">"boost"</span><span class="special">));</span> <span class="comment">// explicit literal
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="string">"boost"</span><span class="special">));</span> <span class="comment">// ascii::string
+</span></pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ From a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code>
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">(</span><span class="string">"boost"</span><span class="special">);</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">s</span><span class="special">);</span> <span class="comment">// direct
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">));</span> <span class="comment">// explicit
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="identifier">s</span><span class="special">));</span> <span class="comment">// ascii::string
+</span></pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Lazy strings using Phoenix
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">phx</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">phoenix</span><span class="special">;</span>
+<span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">phx</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="string">"boost"</span><span class="special">));</span> <span class="comment">// direct
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">lit</span><span class="special">(</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="string">"boost"</span><span class="special">)));</span> <span class="comment">// explicit
+</span><span class="identifier">test_parser</span><span class="special">(</span><span class="string">"boost"</span><span class="special">,</span> <span class="identifier">string</span><span class="special">(</span><span class="identifier">phx</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="string">"boost"</span><span class="special">)));</span> <span class="comment">// ascii::string
+</span></pre>
+<p>
+ </p>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+ de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../string.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="symbols.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/qi/string/symbols.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/qi/string/symbols.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -0,0 +1,532 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>symbols</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../string.html" title="String">
+<link rel="prev" href="lit_string.html" title="lit/string">
+<link rel="next" href="../../karma.html" title="Karma">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lit_string.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../karma.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" title="symbols">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="spirit.qi.string.symbols"></a><a class="link" href="symbols.html" title="symbols">symbols</a>
+</h4></div></div></div>
+<a name="spirit.qi.string.symbols.description"></a><h6>
+<a name="id1090929"></a>
+ <a class="link" href="symbols.html#spirit.qi.string.symbols.description">Description</a>
+ </h6>
+<p>
+ This class <code class="computeroutput"><span class="identifier">symbols</span></code> implements
+ a symbol table: an associative container (or map) of key-value pairs where
+ the keys are strings. The <code class="computeroutput"><span class="identifier">symbols</span></code>
+ class can work efficiently with 8, 16, 32 and even 64 bit characters.
+ </p>
+<p>
+ Traditionally, symbol table management is maintained seperately outside
+ the grammar through semantic actions. Contrary to standard practice, the
+ Spirit symbol table class symbols is-a parser. An instance of which may
+ be used anywhere in the grammar specification. It is an example of a dynamic
+ parser. A dynamic parser is characterized by its ability to modify its
+ behavior at run time. Initially, an empty symbols object matches nothing.
+ At any time, symbols may be added, thus, dynamically altering its behavior.
+ </p>
+<a name="spirit.qi.string.symbols.header"></a><h6>
+<a name="id1090963"></a>
+ <a class="link" href="symbols.html#spirit.qi.string.symbols.header">Header</a>
+ </h6>
+<pre class="programlisting"><span class="comment">// forwards to &lt;boost/spirit/home/qi/string/symbols.hpp&gt;
+</span><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_symbols</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+ </p>
+<a name="spirit.qi.string.symbols.synopsis"></a><h6>
+<a name="id1091038"></a>
+ <a class="link" href="symbols.html#spirit.qi.string.symbols.synopsis">Synopsis</a>
+ </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Char</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">symbols</span><span class="special">;</span>
+</pre>
+<a name="spirit.qi.string.symbols.template_parameters"></a><h6>
+<a name="id1091103"></a>
+ <a class="link" href="symbols.html#spirit.qi.string.symbols.template_parameters">Template parameters</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Char</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The character type of the symbol strings.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">char</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type associated with each symbol.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">unused_type</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.string.symbols.model_of"></a><h6>
+<a name="id1091230"></a>
+ <a class="link" href="symbols.html#spirit.qi.string.symbols.model_of">Model of</a>
+ </h6>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+ </p>
+<p>
+ <a class="link" href="../reference/parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>
+ </p>
+<p>
+ </p>
+</blockquote></div>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Sym</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">symbols</span></code> type.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Char</span></code></span></dt>
+<dd><p>
+ A character type.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span></code></span></dt>
+<dd><p>
+ A data type.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">sym</span></code></span></dt>
+<dd><p>
+ A <code class="computeroutput"><span class="identifier">symbols</span></code> object.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">sym2</span></code></span></dt>
+<dd><p>
+ Another <code class="computeroutput"><span class="identifier">symbols</span></code> object.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">sseq</span></code></span></dt>
+<dd><p>
+ An STL container
+ of strings.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">dseq</span></code></span></dt>
+<dd><p>
+ An STL container
+ of data with <code class="computeroutput"><span class="identifier">value_type</span></code>
+ <code class="computeroutput"><span class="identifier">T</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code></span></dt>
+<dd><p>
+ A literal string, e.g. "Hello", or a pointer/reference to
+ a null-terminated array of characters or a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">d1</span></code>...<code class="computeroutput"><span class="identifier">dN</span></code></span></dt>
+<dd><p>
+ Objects of type <code class="computeroutput"><span class="identifier">T</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
+<dd><p>
+ A callable function or function object.
+ </p></dd>
+</dl>
+</div>
+<a name="spirit.qi.string.symbols.expression_semantics"></a><h6>
+<a name="id1091532"></a>
+ <a class="link" href="symbols.html#spirit.qi.string.symbols.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<p>
+ Semantics of an expression is defined only where it differs from, or is
+ not defined in <a class="link" href="../reference/parser_concepts/primitiveparser.html" title="PrimitiveParser"><code class="computeroutput"><span class="identifier">PrimitiveParser</span></code></a>.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Sym</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Construct an empty symbols.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Sym</span><span class="special">(</span><span class="identifier">sym</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy construct a symbols from <code class="computeroutput"><span class="identifier">sym2</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Sym</span><span class="special">(</span><span class="identifier">sseq</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Construct symbols from <code class="computeroutput"><span class="identifier">sseq</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Sym</span><span class="special">(</span><span class="identifier">sseq</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Construct symbols from <code class="computeroutput"><span class="identifier">sseq</span></code>
+ and <code class="computeroutput"><span class="identifier">dseq</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sym</span> <span class="special">=</span>
+ <span class="identifier">sym</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assign <code class="computeroutput"><span class="identifier">sym2</span></code> to
+ <code class="computeroutput"><span class="identifier">sym</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sym</span> <span class="special">=</span>
+ <span class="identifier">s1</span><span class="special">,</span>
+ <span class="identifier">s2</span><span class="special">,...</span>
+ <span class="identifier">sN</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assigns one or more symbols (<code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code>) to <code class="computeroutput"><span class="identifier">sym</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sym</span> <span class="special">+=</span>
+ <span class="identifier">s1</span><span class="special">,</span>
+ <span class="identifier">s2</span><span class="special">,...</span>
+ <span class="identifier">sN</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Adds one or more symbols (<code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code>) to <code class="computeroutput"><span class="identifier">sym</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">s1</span><span class="special">)(</span><span class="identifier">s2</span><span class="special">)...(</span><span class="identifier">sN</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Adds one or more symbols (<code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code>) to <code class="computeroutput"><span class="identifier">sym</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">add</span><span class="special">(</span><span class="identifier">s1</span><span class="special">,</span>
+ <span class="identifier">d1</span><span class="special">)(</span><span class="identifier">s2</span><span class="special">,</span>
+ <span class="identifier">d2</span><span class="special">)...(</span><span class="identifier">sN</span><span class="special">,</span>
+ <span class="identifier">dN</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Adds one or more symbols (<code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code>) with associated data (<code class="computeroutput"><span class="identifier">d1</span></code>...<code class="computeroutput"><span class="identifier">dN</span></code>)
+ to <code class="computeroutput"><span class="identifier">sym</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sym</span> <span class="special">-=</span>
+ <span class="identifier">s1</span><span class="special">,</span>
+ <span class="identifier">s2</span><span class="special">,...</span>
+ <span class="identifier">sN</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Remove one or more symbols (<code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code>) from <code class="computeroutput"><span class="identifier">sym</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">remove</span><span class="special">(</span><span class="identifier">s1</span><span class="special">)(</span><span class="identifier">s2</span><span class="special">)...(</span><span class="identifier">sN</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Remove one or more symbols (<code class="computeroutput"><span class="identifier">s1</span></code>...<code class="computeroutput"><span class="identifier">sN</span></code>) from <code class="computeroutput"><span class="identifier">sym</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">clear</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Erase all of the symbols in <code class="computeroutput"><span class="identifier">sym</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">at</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a reference to the object associated with symbol, <code class="computeroutput"><span class="identifier">s</span></code>. If <code class="computeroutput"><span class="identifier">sym</span></code>
+ does not already contain such an object, <code class="computeroutput"><span class="identifier">at</span></code>
+ inserts the default object <code class="computeroutput"><span class="identifier">T</span><span class="special">()</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">find</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a pointer to the object associated with symbol, <code class="computeroutput"><span class="identifier">s</span></code>. If <code class="computeroutput"><span class="identifier">sym</span></code>
+ does not already contain such an object, <code class="computeroutput"><span class="identifier">find</span></code>
+ returns a null pointer.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">sym</span><span class="special">.</span><span class="identifier">for_each</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ For each symbol in <code class="computeroutput"><span class="identifier">sym</span></code>,
+ <code class="computeroutput"><span class="identifier">s</span></code>, a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_string</span><span class="special">&lt;</span><span class="identifier">Char</span><span class="special">&gt;</span></code>
+ with associated data, <code class="computeroutput"><span class="identifier">d</span></code>,
+ an object of type <code class="computeroutput"><span class="identifier">T</span></code>,
+ invoke <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">s</span><span class="special">,</span>
+ <span class="identifier">d</span><span class="special">)</span></code>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.qi.string.symbols.attributes"></a><h6>
+<a name="id1092608"></a>
+ <a class="link" href="symbols.html#spirit.qi.string.symbols.attributes">Attributes</a>
+ </h6>
+<p>
+ The attribute of <code class="computeroutput"><span class="identifier">symbol</span><span class="special">&lt;</span><span class="identifier">Char</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;</span></code>
+ is <code class="computeroutput"><span class="identifier">T</span></code>.
+ </p>
+<a name="spirit.qi.string.symbols.example"></a><h6>
+<a name="id1092659"></a>
+ <a class="link" href="symbols.html#spirit.qi.string.symbols.example">Example</a>
+ </h6>
+<p>
+ Some includes:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_core</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">phoenix_operator</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">string</span><span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Our test function:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">P</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="keyword">void</span> <span class="identifier">test_parser_attr</span><span class="special">(</span><span class="keyword">char</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">input</span><span class="special">,</span> <span class="identifier">P</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">attr</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">s</span><span class="special">(</span><span class="identifier">input</span><span class="special">);</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">::</span><span class="identifier">iterator</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">s</span><span class="special">.</span><span class="identifier">begin</span><span class="special">());</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">s</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">p</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">))</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"ok"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+ <span class="keyword">else</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="string">"fail"</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Some using declarations:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span><span class="special">;</span>
+<span class="keyword">using</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">symbols</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Symbols with data:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">symbols</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">,</span> <span class="keyword">int</span><span class="special">&gt;</span> <span class="identifier">sym</span><span class="special">;</span>
+
+<span class="identifier">sym</span><span class="special">.</span><span class="identifier">add</span>
+ <span class="special">(</span><span class="string">"Apple"</span><span class="special">,</span> <span class="number">1</span><span class="special">)</span>
+ <span class="special">(</span><span class="string">"Banana"</span><span class="special">,</span> <span class="number">2</span><span class="special">)</span>
+ <span class="special">(</span><span class="string">"orange"</span><span class="special">,</span> <span class="number">3</span><span class="special">)</span>
+<span class="special">;</span>
+
+<span class="keyword">int</span> <span class="identifier">i</span><span class="special">;</span>
+<span class="identifier">test_parser_attr</span><span class="special">(</span><span class="string">"Banana"</span><span class="special">,</span> <span class="identifier">sym</span><span class="special">,</span> <span class="identifier">i</span><span class="special">);</span>
+<span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">i</span> <span class="special">&lt;&lt;</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">endl</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2009 Joel
+ de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="lit_string.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../string.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../../karma.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -179,7 +179,7 @@
           has a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code> attribute.
         </p>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.lexeme"></a><h6>
-<a name="id1047709"></a>
+<a name="id1061908"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.lexeme">Lexeme</a>
         </h6>
 <pre class="programlisting"><span class="identifier">lexeme</span><span class="special">[</span><span class="char">'"'</span> <span class="special">&gt;&gt;</span> <span class="special">+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span> <span class="special">&gt;&gt;</span> <span class="char">'"'</span><span class="special">];</span>
@@ -196,7 +196,7 @@
           a double quote.
         </p>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.difference"></a><h6>
-<a name="id1047822"></a>
+<a name="id1062021"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.difference">Difference</a>
         </h6>
 <p>
@@ -215,7 +215,7 @@
           is just <code class="computeroutput"><span class="keyword">char</span></code>.
         </p>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.plus"></a><h6>
-<a name="id1047930"></a>
+<a name="id1062129"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.plus">Plus</a>
         </h6>
 <pre class="programlisting"><span class="special">+</span><span class="identifier">a</span>
@@ -234,7 +234,7 @@
 <pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;</span>
 </pre>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.sequence_attribute"></a><h6>
-<a name="id1048056"></a>
+<a name="id1062255"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.sequence_attribute">Sequence
           Attribute</a>
         </h6>
@@ -275,7 +275,7 @@
           </p></td></tr>
 </table></div>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.attribute_collapsing"></a><h6>
-<a name="id1048278"></a>
+<a name="id1062477"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.attribute_collapsing">Attribute
           Collapsing</a>
         </h6>
@@ -307,7 +307,7 @@
 <pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;</span>
 </pre>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.auto_rules"></a><h6>
-<a name="id1048517"></a>
+<a name="id1062716"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.auto_rules">Auto
           Rules</a>
         </h6>
@@ -345,7 +345,7 @@
           directly into the rule's attribute, in-situ.
         </p>
 <a name="spirit.qi.tutorials.employee___parsing_into_structs.finally"></a><h6>
-<a name="id1048836"></a>
+<a name="id1063035"></a>
           <a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.finally">Finally</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -69,7 +69,7 @@
           for testing purposes. "4.toyxml" has an error in it.
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.first_cut"></a><h6>
-<a name="id1049826"></a>
+<a name="id1064025"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.first_cut">First Cut</a>
         </h6>
 <p>
@@ -145,7 +145,7 @@
           by the placeholder <code class="computeroutput"><span class="identifier">_val</span></code>).
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.alternates"></a><h6>
-<a name="id1051006"></a>
+<a name="id1065206"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.alternates">Alternates</a>
         </h6>
 <pre class="programlisting"><span class="identifier">rule</span><span class="special">&lt;</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml_node</span><span class="special">(),</span> <span class="identifier">space_type</span><span class="special">&gt;</span> <span class="identifier">node</span><span class="special">;</span>
@@ -175,7 +175,7 @@
 <span class="special">;</span>
 </pre>
 <a name="spirit.qi.tutorials.mini_xml___asts_.not_predicate"></a><h6>
-<a name="id1051334"></a>
+<a name="id1065534"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.not_predicate">Not
           Predicate</a>
         </h6>
@@ -202,7 +202,7 @@
           at this point.
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.inherited_attribute"></a><h6>
-<a name="id1051489"></a>
+<a name="id1065688"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.inherited_attribute">Inherited
           Attribute</a>
         </h6>
@@ -228,7 +228,7 @@
           <code class="computeroutput"><span class="identifier">_r3</span></code>, etc. if you have more).
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.a_lazy_lit"></a><h6>
-<a name="id1051683"></a>
+<a name="id1065883"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.a_lazy_lit">A Lazy
           Lit</a>
         </h6>
@@ -262,7 +262,7 @@
           accessors, provided by Phoenix.
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.how_it_all_works"></a><h6>
-<a name="id1053112"></a>
+<a name="id1067311"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.how_it_all_works">How
           it all works</a>
         </h6>
@@ -309,7 +309,7 @@
           as <code class="computeroutput"><span class="identifier">_r1</span></code>.
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.the_structures"></a><h6>
-<a name="id1053408"></a>
+<a name="id1067607"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.the_structures">The
           Structures</a>
         </h6>
@@ -342,7 +342,7 @@
 <p>
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.of_alternates_and_variants"></a><h6>
-<a name="id1053604"></a>
+<a name="id1067803"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.of_alternates_and_variants">Of
           Alternates and Variants</a>
         </h6>
@@ -369,7 +369,7 @@
           of <code class="computeroutput"><span class="identifier">a</span></code> and <code class="computeroutput"><span class="identifier">B</span></code> is the attribute of <code class="computeroutput"><span class="identifier">b</span></code>.
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.adapting_structs_again"></a><h6>
-<a name="id1053784"></a>
+<a name="id1067983"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.adapting_structs_again">Adapting
           structs again</a>
         </h6>
@@ -395,7 +395,7 @@
 <p>
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.one_more_take"></a><h6>
-<a name="id1053924"></a>
+<a name="id1068123"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.one_more_take">One
           More Take</a>
         </h6>
@@ -464,7 +464,7 @@
           in the <code class="computeroutput"><span class="identifier">xml</span></code> rule:
         </p>
 <a name="spirit.qi.tutorials.mini_xml___asts_.local_variables"></a><h6>
-<a name="id1054840"></a>
+<a name="id1069039"></a>
           <a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.local_variables">Local
           Variables</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -44,7 +44,7 @@
           What's new?
         </p>
 <a name="spirit.qi.tutorials.mini_xml___error_handling.readable_names"></a><h6>
-<a name="id1056243"></a>
+<a name="id1070443"></a>
           <a class="link" href="mini_xml___error_handling.html#spirit.qi.tutorials.mini_xml___error_handling.readable_names">Readable
           Names</a>
         </h6>
@@ -63,7 +63,7 @@
 <span class="identifier">end_tag</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="string">"end_tag"</span><span class="special">);</span>
 </pre>
 <a name="spirit.qi.tutorials.mini_xml___error_handling.on_error"></a><h6>
-<a name="id1056423"></a>
+<a name="id1070623"></a>
           <a class="link" href="mini_xml___error_handling.html#spirit.qi.tutorials.mini_xml___error_handling.on_error">On
           Error</a>
         </h6>
@@ -241,7 +241,7 @@
 </tbody>
 </table></div>
 <a name="spirit.qi.tutorials.mini_xml___error_handling.expectation_points"></a><h6>
-<a name="id1056932"></a>
+<a name="id1071132"></a>
           <a class="link" href="mini_xml___error_handling.html#spirit.qi.tutorials.mini_xml___error_handling.expectation_points">Expectation
           Points</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.qi.tutorials.quick_start"></a><a class="link" href="quick_start.html" title="Quick Start">Quick Start</a>
 </h4></div></div></div>
 <a name="spirit.qi.tutorials.quick_start.why_would_you_want_to_use_spirit_qi_"></a><h6>
-<a name="id1034316"></a>
+<a name="id1048516"></a>
           <a class="link" href="quick_start.html#spirit.qi.tutorials.quick_start.why_would_you_want_to_use_spirit_qi_">Why
           would you want to use Spirit.Qi?</a>
         </h6>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -41,7 +41,7 @@
           </li>
 </ul></div>
 <a name="spirit.qi.tutorials.roman_numerals.symbol_table"></a><h6>
-<a name="id1041643"></a>
+<a name="id1055843"></a>
           <a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.symbol_table">Symbol
           Table</a>
         </h6>
@@ -173,7 +173,7 @@
           They are all parsers.
         </p>
 <a name="spirit.qi.tutorials.roman_numerals.rules"></a><h6>
-<a name="id1043669"></a>
+<a name="id1057868"></a>
           <a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.rules">Rules</a>
         </h6>
 <p>
@@ -253,7 +253,7 @@
 <pre class="programlisting"><span class="identifier">r</span> <span class="special">=</span> <span class="identifier">double_</span> <span class="special">&gt;&gt;</span> <span class="special">*(</span><span class="char">','</span> <span class="special">&gt;&gt;</span> <span class="identifier">double_</span><span class="special">);</span>
 </pre>
 <a name="spirit.qi.tutorials.roman_numerals.grammars"></a><h6>
-<a name="id1044061"></a>
+<a name="id1058261"></a>
           <a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.grammars">Grammars</a>
         </h6>
 <p>
@@ -358,7 +358,7 @@
           </li>
 </ul></div>
 <a name="spirit.qi.tutorials.roman_numerals.let_s_parse_"></a><h6>
-<a name="id1044789"></a>
+<a name="id1058988"></a>
           <a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.let_s_parse_">Let's Parse!</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -233,7 +233,7 @@
           The examples above can be found here: ../../example/qi/actions.cpp
         </p>
 <a name="spirit.qi.tutorials.semantic_actions.phoenix"></a><h6>
-<a name="id1036519"></a>
+<a name="id1050718"></a>
           <a class="link" href="semantic_actions.html#spirit.qi.tutorials.semantic_actions.phoenix">Phoenix</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html (original)
+++ trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -31,7 +31,7 @@
           on how to build parsers from the simplest parser, building up as we go.
         </p>
 <a name="spirit.qi.tutorials.warming_up.trivial_example__1_parsing_a_number"></a><h6>
-<a name="id1034362"></a>
+<a name="id1048562"></a>
           <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__1_parsing_a_number">Trivial
           Example #1 Parsing a number</a>
         </h6>
@@ -46,7 +46,7 @@
           parsers and consistent naming conventions help you keep from going insane!
         </p>
 <a name="spirit.qi.tutorials.warming_up.trivial_example__2_parsing_two_numbers"></a><h6>
-<a name="id1034391"></a>
+<a name="id1048590"></a>
           <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__2_parsing_two_numbers">Trivial
           Example #2 Parsing two numbers</a>
         </h6>
@@ -79,7 +79,7 @@
           </p></td></tr>
 </table></div>
 <a name="spirit.qi.tutorials.warming_up.trivial_example__3_parsing_one_or_more_numbers"></a><h6>
-<a name="id1034452"></a>
+<a name="id1048652"></a>
           <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__3_parsing_one_or_more_numbers">Trivial
           Example #3 Parsing one or more numbers</a>
         </h6>
@@ -103,7 +103,7 @@
           in most places.
         </p>
 <a name="spirit.qi.tutorials.warming_up.trivial_example__4_parsing_a_comma_delimited_list_of_numbers"></a><h6>
-<a name="id1034496"></a>
+<a name="id1048696"></a>
           <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__4_parsing_a_comma_delimited_list_of_numbers">Trivial
           Example #4 Parsing a comma-delimited list of numbers</a>
         </h6>
@@ -126,7 +126,7 @@
           star encloses the complete expression above.
         </p>
 <a name="spirit.qi.tutorials.warming_up.let_s_parse_"></a><h6>
-<a name="id1034639"></a>
+<a name="id1048839"></a>
           <a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.let_s_parse_">Let's Parse!</a>
         </h6>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/support/multi_pass.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/support/multi_pass.html (original)
+++ trunk/libs/spirit/doc/html/spirit/support/multi_pass.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -61,7 +61,7 @@
         iterator was created.
       </p>
 <a name="spirit.support.multi_pass.using_the_multi_pass"></a><h5>
-<a name="id1125757"></a>
+<a name="id1145723"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.using_the_multi_pass">Using the
         multi_pass</a>
       </h5>
@@ -77,11 +77,47 @@
         A grammar must be designed with care if the <code class="computeroutput"><span class="identifier">multi_pass</span></code>
         iterator is used. Any rule that may need to backtrack, such as one that contains
         an alternative, will cause data to be buffered. The rules that are optimal
- to use are sequence and repetition. Sequences of the form <code class="computeroutput"><span class="identifier">a</span>
- <span class="special">&gt;&gt;</span> <span class="identifier">b</span></code>
- will not buffer data at all. Any rule that repeats, such as kleene_star (<code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>) or
- positive such as (<code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>),
- will only buffer the data for the current repetition.
+ to use are repetition constructs (as kleene and plus).
+ </p>
+<p>
+ Sequences of the form <code class="computeroutput"><span class="identifier">a</span> <span class="special">&gt;&gt;</span> <span class="identifier">b</span></code>
+ will buffer data as well. This is different from the behaviour of <span class="emphasis"><em>Spirit.Classic</em></span>
+ but for a good reason. Sequences need to reset the current iterator to its
+ initial state if one of the components of a seqeunce fails to match. To compensate
+ for this behaviour we added functionality to the <code class="computeroutput"><span class="identifier">expect</span></code>
+ parsers (i.e. constructs like <code class="computeroutput"><span class="identifier">a</span>
+ <span class="special">&gt;</span> <span class="identifier">b</span></code>).
+ Expectation points introduce deterministic points into the grammar ensuring
+ no backtracking can occur if they match. For this reason we clear the buffers
+ of any multi_pass iterator on each expectation point, ensuring minimal buffer
+ content even for large grammars.
+ </p>
+<div class="important" title="Important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top">
+<p>
+ If you use an error handler in conjunction with the <code class="computeroutput"><span class="identifier">expect</span></code>
+ parser while utilizing a <code class="computeroutput"><span class="identifier">multi_pass</span></code>
+ iterator and you intend to use the error handler to force a <code class="computeroutput"><span class="identifier">retry</span></code> or a <code class="computeroutput"><span class="identifier">fail</span></code>
+ (see the description of error handlers - <span class="bold"><strong>FIXME</strong></span>:
+ insert link), then you need to instantiate the error handler using <code class="computeroutput"><span class="identifier">retry</span></code> or <code class="computeroutput"><span class="identifier">fail</span></code>,
+ for instance:
+</p>
+<pre class="programlisting"><span class="identifier">rule</span> <span class="identifier">r</span><span class="special">&lt;</span><span class="identifier">iterator_type</span><span class="special">&gt;</span> <span class="identifier">r</span><span class="special">;</span>
+<span class="identifier">on_error</span><span class="special">&lt;</span><span class="identifier">retry</span><span class="special">&gt;(</span><span class="identifier">r</span><span class="special">,</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special">&lt;&lt;</span> <span class="identifier">phoenix</span><span class="special">::</span><span class="identifier">val</span><span class="special">(</span><span class="string">"Error!"</span><span class="special">));</span>
+</pre>
+<p>
+ If you fail to do so the resulting code will trigger an assert statement
+ at runtime.
+ </p>
+</td></tr>
+</table></div>
+<p>
+ Any rule that repeats, such as kleene_star (<code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>) or positive such as (<code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>), will only buffer the data for the current
+ repetition.
       </p>
 <p>
         In typical grammars, ambiguity and therefore lookahead is often localized.
@@ -173,7 +209,7 @@
 <p>
       </p>
 <a name="spirit.support.multi_pass.using_the_flush_multi_pass_parser"></a><h5>
-<a name="id1126840"></a>
+<a name="id1146991"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.using_the_flush_multi_pass_parser">Using
         the flush_multi_pass parser</a>
       </h5>
@@ -195,7 +231,7 @@
         thrown.
       </p>
 <a name="spirit.support.multi_pass.the_multi_pass_policies"></a><h5>
-<a name="id1126933"></a>
+<a name="id1147085"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.the_multi_pass_policies">The multi_pass
         Policies</a>
       </h5>
@@ -236,7 +272,7 @@
         the functionality groups:
       </p>
 <div class="table">
-<a name="id1127039"></a><p class="title"><b>Table 10. Policies needed for default_policy template</b></p>
+<a name="id1147190"></a><p class="title"><b>Table 12. Policies needed for default_policy template</b></p>
 <div class="table-contents"><table class="table" summary="Policies needed for default_policy template">
 <colgroup>
 <col>
@@ -319,7 +355,7 @@
         implementations.
       </p>
 <a name="spirit.support.multi_pass.predefined_policies"></a><h5>
-<a name="id1127231"></a>
+<a name="id1147382"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.predefined_policies">Predefined
         policies</a>
       </h5>
@@ -328,7 +364,7 @@
         policies are defined in the namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">iterator_policies</span></code>.
       </p>
 <div class="table">
-<a name="id1127273"></a><p class="title"><b>Table 11. Predefined policy classes</b></p>
+<a name="id1147424"></a><p class="title"><b>Table 13. Predefined policy classes</b></p>
 <div class="table-contents"><table class="table" summary="Predefined policy classes">
 <colgroup>
 <col>
@@ -353,10 +389,7 @@
               <span class="bold"><strong>InputPolicy</strong></span> classes
             </p>
             </td>
-<td>
- <p>
- </p>
- </td>
+<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
@@ -427,10 +460,7 @@
               <span class="bold"><strong>OwnershipPolicy</strong></span> classes
             </p>
             </td>
-<td>
- <p>
- </p>
- </td>
+<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
@@ -467,10 +497,7 @@
               <span class="bold"><strong>CheckingPolicy</strong></span> classes
             </p>
             </td>
-<td>
- <p>
- </p>
- </td>
+<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
@@ -528,10 +555,7 @@
               <span class="bold"><strong>StoragePolicy</strong></span> classes
             </p>
             </td>
-<td>
- <p>
- </p>
- </td>
+<td class="auto-generated"> </td>
 </tr>
 <tr>
 <td>
@@ -577,7 +601,7 @@
 </table></div>
 </div>
 <br class="table-break"><a name="spirit.support.multi_pass.combinations__how_to_specify_your_own_custom_multi_pass"></a><h5>
-<a name="id1128058"></a>
+<a name="id1148189"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.combinations__how_to_specify_your_own_custom_multi_pass">Combinations:
         How to specify your own custom multi_pass</a>
       </h5>
@@ -623,7 +647,7 @@
         behaviors while wrapping an <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream_iterator</span><span class="special">&lt;</span><span class="keyword">char</span><span class="special">&gt;</span></code>.
       </p>
 <a name="spirit.support.multi_pass.dealing_with_constant_look_ahead"></a><h5>
-<a name="id1128480"></a>
+<a name="id1148612"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.dealing_with_constant_look_ahead">Dealing
         with constant look ahead</a>
       </h5>
@@ -642,7 +666,7 @@
         StoragePolicy.
       </p>
 <a name="spirit.support.multi_pass.how_to_write_a_functor_for_use_with_the__code__phrase_role__identifier__functor_input__phrase___code__inputpolicy"></a><h5>
-<a name="id1128612"></a>
+<a name="id1148744"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.how_to_write_a_functor_for_use_with_the__code__phrase_role__identifier__functor_input__phrase___code__inputpolicy">How
         to write a functor for use with the <code class="computeroutput"><span class="identifier">functor_input</span></code>
         InputPolicy</a>
@@ -701,7 +725,7 @@
 <span class="special">}</span>
 </pre>
 <a name="spirit.support.multi_pass.how_to_write_policies_for_use_with_multi_pass"></a><h5>
-<a name="id1129199"></a>
+<a name="id1149331"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.how_to_write_policies_for_use_with_multi_pass">How
         to write policies for use with multi_pass</a>
       </h5>
@@ -718,7 +742,7 @@
         copies of a particular <code class="computeroutput"><span class="identifier">multi_pass</span></code>.
       </p>
 <a name="spirit.support.multi_pass.inputpolicy"></a><h5>
-<a name="id1129273"></a>
+<a name="id1149405"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.inputpolicy">InputPolicy</a>
       </h5>
 <p>
@@ -814,7 +838,7 @@
         constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
       </p>
 <a name="spirit.support.multi_pass.ownershippolicy"></a><h5>
-<a name="id1131811"></a>
+<a name="id1150304"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.ownershippolicy">OwnershipPolicy</a>
       </h5>
 <p>
@@ -881,7 +905,7 @@
         constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
       </p>
 <a name="spirit.support.multi_pass.checkingpolicy"></a><h5>
-<a name="id1132345"></a>
+<a name="id1150838"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.checkingpolicy">CheckingPolicy</a>
       </h5>
 <p>
@@ -940,7 +964,7 @@
         constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
       </p>
 <a name="spirit.support.multi_pass.storagepolicy"></a><h5>
-<a name="id1132796"></a>
+<a name="id1151289"></a>
         <a class="link" href="multi_pass.html#spirit.support.multi_pass.storagepolicy">StoragePolicy</a>
       </h5>
 <p>

Modified: trunk/libs/spirit/doc/html/spirit/what_s_new.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/what_s_new.html (original)
+++ trunk/libs/spirit/doc/html/spirit/what_s_new.html 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -27,7 +27,7 @@
 <a name="spirit.what_s_new"></a><a class="link" href="what_s_new.html" title="What's New">What's New</a>
 </h2></div></div></div>
 <a name="spirit.what_s_new.spirit_classic"></a><h4>
-<a name="id1024865"></a>
+<a name="id1039065"></a>
       <a class="link" href="what_s_new.html#spirit.what_s_new.spirit_classic">Spirit Classic</a>
     </h4>
 <p>
@@ -66,11 +66,11 @@
       for existing applications.
     </p>
 <a name="spirit.what_s_new.spirit_v2_1"></a><h4>
-<a name="id1025056"></a>
+<a name="id1039256"></a>
       <a class="link" href="what_s_new.html#spirit.what_s_new.spirit_v2_1">Spirit V2.1</a>
     </h4>
 <a name="spirit.what_s_new.what_s_changed_in__emphasis_spirit_qi__emphasis__and__emphasis_spirit_karma__emphasis__from_v2_0_to_2_x"></a><h4>
-<a name="id1025069"></a>
+<a name="id1039269"></a>
       <a class="link" href="what_s_new.html#spirit.what_s_new.what_s_changed_in__emphasis_spirit_qi__emphasis__and__emphasis_spirit_karma__emphasis__from_v2_0_to_2_x">What's
       changed in <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span>
       from V2.0 to 2.x</a>
@@ -159,7 +159,7 @@
       </li>
 </ul></div>
 <a name="spirit.what_s_new.what_s_changed_in__emphasis_spirit_lex__emphasis__from_v2_0_to_2_x"></a><h4>
-<a name="id1025621"></a>
+<a name="id1039821"></a>
       <a class="link" href="what_s_new.html#spirit.what_s_new.what_s_changed_in__emphasis_spirit_lex__emphasis__from_v2_0_to_2_x">What's
       changed in <span class="emphasis"><em>Spirit.Lex</em></span> from V2.0 to 2.x</a>
     </h4>

Modified: trunk/libs/spirit/doc/karma.qbk
==============================================================================
--- trunk/libs/spirit/doc/karma.qbk (original)
+++ trunk/libs/spirit/doc/karma.qbk 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -34,5 +34,9 @@
 [/include karma/debug.qbk]
 [endsect]
 
+[section Performance Measurements]
+[include karma/numeric_performance.qbk]
+[endsect]
+
 [endsect]
 

Added: trunk/libs/spirit/doc/karma/numeric_performance.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/karma/numeric_performance.qbk 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -0,0 +1,135 @@
+[/==============================================================================
+ Copyright (C) 2001-2009 Joel de Guzman
+ Copyright (C) 2001-2009 Hartmut Kaiser
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+===============================================================================/]
+
+[section:numeric_performance Performance of Numeric Generators]
+
+[section:double_performance Comparing the performance of a single double_ generator]
+
+For the full source code of the performance test please see here:
+[@../../example/karma/double_performance.cpp double_performance.cpp]). All the
+measurements have been done by doing 1000000 iterations for each formatting
+type (`NUMITERATIONS == 1000000`).
+
+[import ../example/karma/double_performance.cpp]
+
+Code used to measure the performance for printf:
+
+[karma_double_performance_karma_printf]
+
+Code used to measure the performance for standard iostreams:
+
+[karma_double_performance_karma_iostreams]
+
+Code used to measure the performance for Boost.Format:
+
+[karma_double_performance_karma_format]
+
+The following code shows the common definitions used by all Karma performance
+measurements as listed below:
+
+[karma_double_performance_karma_definitions]
+
+Code used to measure the performance for Karma using a plain character buffer:
+
+[karma_double_performance_karma_plain]
+
+Code used to measure the performance for Karma using an output iterator on top
+of a std::string as the destination buffer:
+
+[karma_double_performance_karma_string]
+
+Code used to measure the performance for Karma using a plain character buffer,
+but utilizing a karma::rule as the generator:
+
+[karma_double_performance_karma_rule]
+
+Code used to measure the performance using Karma's low level formatting routine
+for floating point numbers.
+
+[karma_double_performance_karma_direct]
+
+[table Performance comparison for a single `double`
+ [[Library] [gcc 4.4.0 (MingW, 32Bit)] [VC++ 8 SP1 (32Bit)] [VC++ 10 beta (32Bit)] [gcc 4.1.2 (Linux, 64Bit)] [VC++ 10 beta (64Bit)]]
+ [[printf] [0.739 \[s\]] [0.894 \[s\]] [0.965 \[s\]] [1.032 \[s\]] [0.807 \[s\]]]
+ [[iostreams] [2.396 \[s\]] [2.013 \[s\]] [2.624 \[s\]] [0.924 \[s\]] [1.468 \[s\]]]
+ [[Boost.Format] [9.394 \[s\]] [6.888 \[s\]] [8.045 \[s\]] [3.034 \[s\]] [5.750 \[s\]]]
+ [[Karma (char buffer)] [0.832 \[s\]] [0.483 \[s\]] [0.561 \[s\]] [0.394 \[s\]] [0.260 \[s\]]]
+ [[Karma (string)] [0.873 \[s\]] [1.193 \[s\]] [0.701 \[s\]] [0.478 \[s\]] [0.384 \[s\]]]
+ [[Karma (rule)] [0.824 \[s\]] [0.501 \[s\]] [0.609 \[s\]] [0.415 \[s\]] [0.268 \[s\]]]
+ [[Karma (direct)] [0.608 \[s\]] [0.419 \[s\]] [0.475 \[s\]] [0.254 \[s\]] [0.207 \[s\]]]
+]
+
+[fig ./images/double_performance.png..Performance comparison for a single double..spirit.karma.double_performance]
+
+[heading Platforms]
+
+* Windows7, Intel Core Duo(tm) Processor, 2.8GHz, 4GByte RAM
+* Linux, 8 Quad-Core AMD Opteron(tm) Processor, 2.8GHz, 64GByte RAM
+
+[endsect]
+
+[section:format_performance Comparing the performance of a sequence of several generators]
+
+For the full source code of the performance test please see here:
+[@../../example/karma/format_performance.cpp format_performance.cpp]). All the
+measurements have been done by doing 1000000 iterations for each formatting
+type (`NUMITERATIONS == 1000000`).
+
+[import ../example/karma/format_performance.cpp]
+
+Code used to measure the performance for printf:
+
+[karma_format_performance_karma_printf]
+
+Code used to measure the performance for standard iostreams:
+
+[karma_format_performance_karma_iostreams]
+
+Code used to measure the performance for Boost.Format:
+
+[karma_format_performance_karma_format]
+
+The following code shows the common definitions used by all Karma performance
+measurements as listed below:
+
+[karma_format_performance_karma_definitions]
+
+Code used to measure the performance for Karma using a plain character buffer:
+
+[karma_format_performance_karma_plain]
+
+Code used to measure the performance for Karma using an output iterator on top
+of a std::string as the destination buffer:
+
+[karma_format_performance_karma_string]
+
+Code used to measure the performance for Karma using a plain character buffer,
+but utilizing a karma::rule as the generator:
+
+[karma_format_performance_karma_rule]
+
+[table Performance comparison for a sequence of several items
+ [[Library] [gcc 4.4.0 (MingW, 32Bit)] [VC++ 8 SP1 (32Bit)] [VC++ 10 beta (32Bit)] [gcc 4.1.2 (Linux, 64Bit)] [VC++ 10 beta (64Bit)]]
+ [[printf] [1.597 \[s\]] [2.058 \[s\]] [1.989 \[s\]] [1.742 \[s\]] [1.693 \[s\]]]
+ [[iostreams] [4.727 \[s\]] [4.166 \[s\]] [5.294 \[s\]] [2.223 \[s\]] [3.272 \[s\]]]
+ [[Boost.Format] [9.541 \[s\]] [11.308 \[s\]] [11.862 \[s\]] [5.146 \[s\]] [9.110 \[s\]]]
+ [[Karma (char buffer)] [4.779 \[s\]] [4.366 \[s\]] [2.450 \[s\]] [1.867 \[s\]] [1.592 \[s\]]]
+ [[Karma (string)] [4.861 \[s\]] [6.500 \[s\]] [2.972 \[s\]] [1.658 \[s\]] [2.024 \[s\]]]
+ [[Karma (rule)] [4.723 \[s\]] [4.344 \[s\]] [2.579 \[s\]] [1.893 \[s\]] [1.574 \[s\]]]
+]
+
+[fig ./images/format_performance.png..Performance comparison for a sequence of several items..spirit.karma.format_performance]
+
+[heading Platforms]
+
+* Windows7, Intel Core Duo(tm) Processor, 2.8GHz, 4GByte RAM
+* Linux, 8 Quad-Core AMD Opteron(tm) Processor, 2.8GHz, 64GByte RAM
+
+[endsect]
+
+[endsect]

Added: trunk/libs/spirit/doc/karma_performance.xlsx
==============================================================================
Binary file. No diff available.

Modified: trunk/libs/spirit/doc/support/multi_pass.qbk
==============================================================================
--- trunk/libs/spirit/doc/support/multi_pass.qbk (original)
+++ trunk/libs/spirit/doc/support/multi_pass.qbk 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -43,8 +43,32 @@
 
 A grammar must be designed with care if the `multi_pass` iterator is used.
 Any rule that may need to backtrack, such as one that contains an alternative,
-will cause data to be buffered. The rules that are optimal to use are sequence
-and repetition. Sequences of the form `a >> b` will not buffer data at all.
+will cause data to be buffered. The rules that are optimal to use are
+repetition constructs (as kleene and plus).
+
+Sequences of the form `a >> b` will buffer data as well. This is different from
+the behaviour of __classic__ but for a good reason. Sequences need to reset the
+current iterator to its initial state if one of the components of a seqeunce
+fails to match. To compensate for this behaviour we added functionality to
+the `expect` parsers (i.e. constructs like `a > b`). Expectation points introduce
+deterministic points into the grammar ensuring no backtracking can occur if
+they match. For this reason we clear the buffers of any multi_pass iterator
+on each expectation point, ensuring minimal buffer content even for large
+grammars.
+
+[important If you use an error handler in conjunction with the `expect` parser
+ while utilizing a `multi_pass` iterator and you intend to use
+ the error handler to force a `retry` or a `fail` (see the
+ description of error handlers - __fixme__: insert link), then
+ you need to instantiate the error handler using `retry` or `fail`,
+ for instance:
+``
+ rule r<iterator_type> r;
+ on_error<retry>(r, std::cout << phoenix::val("Error!"));
+``
+ If you fail to do so the resulting code will trigger an assert
+ statement at runtime.]
+
 Any rule that repeats, such as kleene_star (`*a`) or positive such as (`+a`),
 will only buffer the data for the current repetition.
 
@@ -158,7 +182,7 @@
 
 [table Predefined policy classes
     [[Class name] [Description]]
- [[*InputPolicy* classes] []]
+ [[*InputPolicy* classes]]
     [[`input_iterator`] [This policy directs `multi_pass` to read from an
                            input iterator of type `Input`.]]
     [[`lex_input`] [This policy obtains it's input by calling yylex(),
@@ -183,7 +207,7 @@
                            be integrated with the `multi_pass` members shared
                            by all copies.]]
 
- [[*OwnershipPolicy* classes] []]
+ [[*OwnershipPolicy* classes]]
     [[`ref_counted`] [This class uses a reference counting scheme.
                            The `multi_pass` will delete it's shared components
                            when the count reaches zero.]]
@@ -195,7 +219,7 @@
                            on the stack, so the original iterator has the
                            longest lifespan.]]
 
- [[*CheckingPolicy* classes] []]
+ [[*CheckingPolicy* classes]]
     [[`no_check`] [This policy does no checking at all.]]
     [[`buf_id_check`] [This policy keeps around a buffer id, or a buffer
                            age. Every time `clear_queue()` is called on a
@@ -215,7 +239,7 @@
                            useful for debugging purposes as it will incur
                            significant overhead.]]
 
- [[*StoragePolicy* classes] []]
+ [[*StoragePolicy* classes]]
     [[`split_std_deque`] [Despite its name this policy keeps all buffered data
                            in a `std::vector`. All data is stored as long as
                            there is more than one iterator. Once the iterator

Modified: trunk/libs/spirit/example/karma/double_performance.cpp
==============================================================================
--- trunk/libs/spirit/example/karma/double_performance.cpp (original)
+++ trunk/libs/spirit/example/karma/double_performance.cpp 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -17,6 +17,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // policy for real_generator, which forces to output trailing zeros in the
 // fractional part
+//[karma_double_performance_karma_definitions
 template <typename T>
 struct double3_policy : boost::spirit::karma::real_policies<T>
 {
@@ -27,22 +28,23 @@
 typedef boost::spirit::karma::real_generator<double, double3_policy<double> >
     double3_type;
 double3_type const double3 = double3_type();
+//]
 
 void format_performance_karma()
 {
     using boost::spirit::karma::generate;
 
+ //[karma_double_performance_karma_plain
     char buffer[256];
-
+ //<-
     util::high_resolution_timer t;
-
+ //->
     for (int i = 0; i < NUMITERATIONS; ++i) {
         char *p = buffer;
-
         generate(p, double3, 12345.12345);
-
         *p = '\0';
     }
+ //]
 
     std::cout << "karma: " << t.elapsed() << std::endl;
 // std::cout << buffer << std::endl;
@@ -54,18 +56,18 @@
 
     boost::spirit::karma::rule<char*, double()> r;
 
+ //[karma_double_performance_karma_rule
     char buffer[256];
     r %= double3;
-
+ //<-
     util::high_resolution_timer t;
-
+ //->
     for (int i = 0; i < NUMITERATIONS; ++i) {
         char *p = buffer;
-
         generate(p, r, 12345.12345);
-
         *p = '\0';
     }
+ //]
 
     std::cout << "karma (rule): " << t.elapsed() << std::endl;
 // std::cout << buffer << std::endl;
@@ -76,19 +78,18 @@
     using boost::spirit::karma::generate;
     using boost::spirit::karma::real_inserter;
 
+ //[karma_double_performance_karma_direct
     typedef real_inserter<double, double3_policy<double> > inserter;
-
     char buffer[256];
-
+ //<-
     util::high_resolution_timer t;
-
+ //->
     for (int i = 0; i < NUMITERATIONS; ++i) {
         char *p = buffer;
-
         inserter::call(p, 12345.12345, double3_policy<double>());
-
         *p = '\0';
     }
+ //]
 
     std::cout << "karma (direct): " << t.elapsed() << std::endl;
 // std::cout << buffer << std::endl;
@@ -98,16 +99,17 @@
 {
     using boost::spirit::karma::generate;
 
+ //[karma_double_performance_karma_string
     std::string generated;
     std::back_insert_iterator<std::string> sink(generated);
-
+ //<-
     util::high_resolution_timer t;
-
+ //->
     for (int i = 0; i < NUMITERATIONS; ++i) {
         generated.clear();
-
         generate(sink, double3, 12345.12345);
     }
+ //]
 
     std::cout << "karma (string): " << t.elapsed() << std::endl;
 // std::cout << generated << std::endl;
@@ -116,14 +118,16 @@
 // Boost.Format
 void format_performance_boost_format()
 {
+ //[karma_double_performance_karma_format
     std::stringstream strm;
-
+ //<-
     util::high_resolution_timer t;
-
+ //->
     for (int i = 0; i < NUMITERATIONS; ++i) {
         strm.str("");
         strm << boost::format("%f") % 12345.12345;
     }
+ //]
 
     std::cout << "format: " << t.elapsed() << std::endl;
 // std::cout << strm.str() << std::endl;
@@ -133,10 +137,12 @@
 {
     util::high_resolution_timer t;
 
+ //[karma_double_performance_karma_printf
     char buffer[256];
     for (int i = 0; i < NUMITERATIONS; ++i) {
         sprintf(buffer, "%f", 12345.12345);
     }
+ //]
 
     std::cout << "printf: " << t.elapsed() << std::endl;
 // std::cout << buffer << std::endl;
@@ -144,15 +150,16 @@
 
 void format_performance_iostreams()
 {
+ //[karma_double_performance_karma_iostreams
     std::stringstream strm;
-
+ //<-
     util::high_resolution_timer t;
-
+ //->
     for (int i = 0; i < NUMITERATIONS; ++i) {
         strm.str("");
-
         strm << 12345.12345;
     }
+ //]
 
     std::cout << "iostreams: " << t.elapsed() << std::endl;
 // std::cout << strm.str() << std::endl;

Modified: trunk/libs/spirit/example/karma/format_performance.cpp
==============================================================================
--- trunk/libs/spirit/example/karma/format_performance.cpp (original)
+++ trunk/libs/spirit/example/karma/format_performance.cpp 2009-07-14 21:30:19 EDT (Tue, 14 Jul 2009)
@@ -17,6 +17,7 @@
 ///////////////////////////////////////////////////////////////////////////////
 // policy for real_generator, which forces to output trailing zeros in the
 // fractional part
+//[karma_format_performance_karma_definitions
 template <typename T>
 struct double3_policy : boost::spirit::karma::real_policies<T>
 {
@@ -27,25 +28,26 @@
 typedef boost::spirit::karma::real_generator<double, double3_policy<double> >
     double3_type;
 double3_type const double3 = double3_type();
+//]
 
 void format_performance_karma()
 {
     using boost::spirit::karma::left_align;
     using boost::spirit::karma::generate;
 
+ //[karma_format_performance_karma_plain
     char buffer[256];
-
+ //<-
     util::high_resolution_timer t;
-
+ //->
     for (int i = 0; i < NUMITERATIONS; ++i) {
         char *p = buffer;
-
         generate(p
           , '[' << left_align(14)[double3] << left_align(14)[double3] << ']'
           , 12345.12345, 12345.12345);
-
         *p = '\0';
     }
+ //]
 
     std::cout << "karma: " << t.elapsed() << std::endl;
 // std::cout << buffer << std::endl;
@@ -59,18 +61,18 @@
     typedef boost::fusion::vector<double, double> rtype;
     boost::spirit::karma::rule<char*, rtype()> r;
 
+ //[karma_format_performance_karma_rule
     char buffer[256];
     r %= '[' << left_align(14)[double3] << left_align(14)[double3] << ']';
-
+ //<-
     util::high_resolution_timer t;
-
+ //->
     for (int i = 0; i < NUMITERATIONS; ++i) {
         char *p = buffer;
-
         generate(p, r, 12345.12345, 12345.12345);
-
         *p = '\0';
     }
+ //]
 
     std::cout << "karma (rule): " << t.elapsed() << std::endl;
 // std::cout << buffer << std::endl;
@@ -81,18 +83,19 @@
     using boost::spirit::karma::left_align;
     using boost::spirit::karma::generate;
 
+ //[karma_format_performance_karma_string
     std::string generated;
     std::back_insert_iterator<std::string> sink(generated);
-
+ //<-
     util::high_resolution_timer t;
-
+ //->
     for (int i = 0; i < NUMITERATIONS; ++i) {
         generated.clear();
-
         generate(sink
           , '[' << left_align(14)[double3] << left_align(14)[double3] << ']'
           , 12345.12345, 12345.12345);
     }
+ //]
 
     std::cout << "karma (string): " << t.elapsed() << std::endl;
 // std::cout << generated << std::endl;
@@ -101,14 +104,16 @@
 // Boost.Format
 void format_performance_boost_format()
 {
+ //[karma_format_performance_karma_format
     std::stringstream strm;
-
+ //<-
     util::high_resolution_timer t;
-
+ //->
     for (int i = 0; i < NUMITERATIONS; ++i) {
         strm.str("");
         strm << boost::format("[%-14.3f%-14.3f]") % 12345.12345 % 12345.12345;
     }
+ //]
 
     std::cout << "format: " << t.elapsed() << std::endl;
 // std::cout << strm.str() << std::endl;
@@ -118,10 +123,12 @@
 {
     util::high_resolution_timer t;
 
+ //[karma_format_performance_karma_printf
     char buffer[256];
     for (int i = 0; i < NUMITERATIONS; ++i) {
         sprintf(buffer, "[%-14.3f%-14.3f]", 12345.12345, 12345.12345);
     }
+ //]
 
     std::cout << "printf: " << t.elapsed() << std::endl;
 // std::cout << buffer << std::endl;
@@ -129,13 +136,13 @@
 
 void format_performance_iostreams()
 {
+ //[karma_format_performance_karma_iostreams
     std::stringstream strm;
-
+ //<-
     util::high_resolution_timer t;
-
+ //->
     for (int i = 0; i < NUMITERATIONS; ++i) {
         strm.str("");
-
         strm << '['
           << std::setiosflags(std::ios::fixed)
           << std::left
@@ -146,6 +153,7 @@
           << 12345.12345
           << ']';
     }
+ //]
 
     std::cout << "iostreams: " << t.elapsed() << std::endl;
 // std::cout << strm.str() << std::endl;


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk