Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r56767 - in trunk/libs/spirit/doc: . abstracts advanced html html/spirit html/spirit/abstracts html/spirit/abstracts/attributes html/spirit/advanced html/spirit/advanced/customize html/spirit/advanced/customize/assign_to html/spirit/advanced/customize/store_value html/spirit/advanced/indepth html/spirit/karma html/spirit/karma/performance_measurements html/spirit/karma/performance_measurements/numeric_performance html/spirit/karma/quick_reference html/spirit/karma/quick_reference/primitive_generators html/spirit/karma/reference html/spirit/karma/reference/auxiliary html/spirit/karma/reference/binary html/spirit/karma/reference/char html/spirit/karma/reference/directive html/spirit/karma/reference/generator_concepts html/spirit/karma/reference/numeric html/spirit/karma/reference/operator html/spirit/karma/reference/stream html/spirit/karma/reference/string html/spirit/karma/tutorials html/spirit/lex html/spirit/lex/abstracts html/spirit/lex/abstracts/lexer_primitives html/spirit/lex/quick_reference html/spirit/lex/reference html/spirit/lex/reference/lexer_concepts html/spirit/lex/reference/primitives html/spirit/lex/tutorials html/spirit/notes html/spirit/qi html/spirit/qi/quick_reference html/spirit/qi/quick_reference/qi_parsers html/spirit/qi/reference html/spirit/qi/reference/auxiliary html/spirit/qi/reference/binary html/spirit/qi/reference/char html/spirit/qi/reference/directive html/spirit/qi/reference/numeric html/spirit/qi/reference/operator html/spirit/qi/reference/parser_concepts html/spirit/qi/reference/string html/spirit/qi/tutorials html/spirit/structure html/spirit/support
From: joel_at_[hidden]
Date: 2009-10-12 23:10:16


Author: djowel
Date: 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
New Revision: 56767
URL: http://svn.boost.org/trac/boost/changeset/56767

Log:
moving things around
Added:
   trunk/libs/spirit/doc/advanced/
   trunk/libs/spirit/doc/advanced.qbk (contents, props changed)
   trunk/libs/spirit/doc/advanced/customization_points.qbk (contents, props changed)
   trunk/libs/spirit/doc/advanced/indepth.qbk (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/
   trunk/libs/spirit/doc/html/spirit/advanced.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/customize/
   trunk/libs/spirit/doc/html/spirit/advanced/customize.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/
   trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_iterators.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_value.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/customize/clear_value.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/customize/extract_from.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/customize/is_container.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/
   trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/container_value.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/push_back.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/customize/transform.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/indepth/
   trunk/libs/spirit/doc/html/spirit/advanced/indepth.html (contents, props changed)
   trunk/libs/spirit/doc/html/spirit/advanced/indepth/parsers_indepth.html (contents, props changed)
   trunk/libs/spirit/doc/operator_template.qbk (contents, props changed)
Removed:
   trunk/libs/spirit/doc/abstracts/customization_points.qbk
   trunk/libs/spirit/doc/abstracts/indepth.qbk
Text files modified:
   trunk/libs/spirit/doc/abstracts.qbk | 2
   trunk/libs/spirit/doc/html/index.html | 54 +-
   trunk/libs/spirit/doc/html/spirit/abstracts.html | 34 -
   trunk/libs/spirit/doc/html/spirit/abstracts/attributes.html | 21
   trunk/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html | 185 +++----
   trunk/libs/spirit/doc/html/spirit/abstracts/attributes/more_sompound_attributes.html | 166 +++---
   trunk/libs/spirit/doc/html/spirit/abstracts/attributes/nonterminal_attributes.html | 44 +
   trunk/libs/spirit/doc/html/spirit/abstracts/attributes/primitive_attributes.html | 49 +
   trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html | 111 ++--
   trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html | 76 +-
   trunk/libs/spirit/doc/html/spirit/acknowledgments.html | 121 ++--
   trunk/libs/spirit/doc/html/spirit/faq.html | 94 ++-
   trunk/libs/spirit/doc/html/spirit/introduction.html | 303 +++++-------
   trunk/libs/spirit/doc/html/spirit/karma.html | 17
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements.html | 21
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html | 22
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html | 257 ++++------
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html | 255 ++++------
   trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html | 257 ++++------
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference.html | 21
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/common_notation.html | 102 ++--
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html | 237 ++++-----
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/non_terminals.html | 299 +++++-------
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/phoenix.html | 40
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators.html | 23
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/action.html | 70 +-
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/auxiliary.html | 236 ++++-----
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/binary.html | 280 ++++------
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/boolean.html | 144 ++---
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/char.html | 649 +++++++++++---------------
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/directives.html | 674 +++++++++++----------------
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/operators.html | 273 ++++------
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/real_number.html | 306 +++++-------
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/signed_int.html | 302 +++++-------
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/stream.html | 228 ++++-----
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/string.html | 140 ++---
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/unsigned_int.html | 402 +++++++---------
   trunk/libs/spirit/doc/html/spirit/karma/quick_reference/semantic_actions.html | 25
   trunk/libs/spirit/doc/html/spirit/karma/reference.html | 20
   trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary.html | 43 +
   trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/attr_cast.html | 158 +++---
   trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html | 141 ++---
   trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html | 240 ++++-----
   trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html | 197 +++----
   trunk/libs/spirit/doc/html/spirit/karma/reference/binary.html | 33
   trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html | 336 +++++--------
   trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html | 339 +++++--------
   trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html | 428 +++++++----------
   trunk/libs/spirit/doc/html/spirit/karma/reference/char.html | 44 +
   trunk/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html | 430 +++++++----------
   trunk/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html | 687 ++++++++++++----------------
   trunk/libs/spirit/doc/html/spirit/karma/reference/directive.html | 52 +-
   trunk/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html | 592 ++++++++++--------------
   trunk/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html | 160 +++---
   trunk/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html | 239 ++++-----
   trunk/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html | 189 +++----
   trunk/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html | 148 ++---
   trunk/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html | 330 ++++++-------
   trunk/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html | 217 ++++----
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts.html | 19
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html | 198 +++----
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html | 235 ++++-----
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html | 168 +++---
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html | 98 ++--
   trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html | 243 ++++-----
   trunk/libs/spirit/doc/html/spirit/karma/reference/karma_basics.html | 116 ++--
   trunk/libs/spirit/doc/html/spirit/karma/reference/numeric.html | 48 +
   trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/boolean.html | 621 +++++++++++--------------
   trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html | 956 ++++++++++++++++++---------------------
   trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html | 685 ++++++++++++----------------
   trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html | 709 ++++++++++++----------------
   trunk/libs/spirit/doc/html/spirit/karma/reference/operator.html | 71 +-
   trunk/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html | 140 ++---
   trunk/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html | 127 ++--
   trunk/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html | 144 ++---
   trunk/libs/spirit/doc/html/spirit/karma/reference/operator/list.html | 155 +++---
   trunk/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html | 124 ++--
   trunk/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html | 133 ++--
   trunk/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html | 141 ++---
   trunk/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html | 146 ++---
   trunk/libs/spirit/doc/html/spirit/karma/reference/stream.html | 35
   trunk/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html | 459 ++++++++-----------
   trunk/libs/spirit/doc/html/spirit/karma/reference/string.html | 33
   trunk/libs/spirit/doc/html/spirit/karma/reference/string/string.html | 297 +++++-------
   trunk/libs/spirit/doc/html/spirit/karma/tutorials.html | 17
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/karma_complex.html | 46 +
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html | 142 +++--
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/num_list.html | 76 +-
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/num_matrix.html | 22
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html | 32
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html | 86 +-
   trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html | 161 +++---
   trunk/libs/spirit/doc/html/spirit/lex.html | 20
   trunk/libs/spirit/doc/html/spirit/lex/abstracts.html | 20
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_attributes.html | 20
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_parsing.html | 22
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives.html | 20
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_primitives.html | 20
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_definition.html | 21
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html | 134 ++--
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html | 448 +++++++-----------
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html | 45 +
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html | 71 +-
   trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html | 83 +-
   trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html | 88 ++-
   trunk/libs/spirit/doc/html/spirit/lex/quick_reference.html | 22
   trunk/libs/spirit/doc/html/spirit/lex/quick_reference/common_notation.html | 56 +-
   trunk/libs/spirit/doc/html/spirit/lex/quick_reference/lexers.html | 229 +++-----
   trunk/libs/spirit/doc/html/spirit/lex/quick_reference/phoenix.html | 47 +
   trunk/libs/spirit/doc/html/spirit/lex/quick_reference/semantic_actions.html | 29
   trunk/libs/spirit/doc/html/spirit/lex/reference.html | 21
   trunk/libs/spirit/doc/html/spirit/lex/reference/lex_basics.html | 50 +
   trunk/libs/spirit/doc/html/spirit/lex/reference/lexer.html | 54 +-
   trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts.html | 19
   trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/lexer.html | 189 +++----
   trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/narylexer.html | 153 ++---
   trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/primitivelexer.html | 85 +-
   trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/unarylexer.html | 147 ++---
   trunk/libs/spirit/doc/html/spirit/lex/reference/primitives.html | 38
   trunk/libs/spirit/doc/html/spirit/lex/reference/primitives/char_tokendef.html | 155 ++---
   trunk/libs/spirit/doc/html/spirit/lex/reference/token.html | 19
   trunk/libs/spirit/doc/html/spirit/lex/reference/tokendef.html | 23
   trunk/libs/spirit/doc/html/spirit/lex/tutorials.html | 24
   trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html | 108 ++--
   trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html | 125 ++--
   trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html | 196 ++++----
   trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_tutorials.html | 51 +
   trunk/libs/spirit/doc/html/spirit/notes.html | 18
   trunk/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html | 331 ++++++-------
   trunk/libs/spirit/doc/html/spirit/notes/style_guide.html | 52 +-
   trunk/libs/spirit/doc/html/spirit/preface.html | 223 +++-----
   trunk/libs/spirit/doc/html/spirit/qi.html | 22
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference.html | 18
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/common_notation.html | 91 +-
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html | 250 ++++-----
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/non_terminals.html | 305 +++++-------
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/phoenix.html | 38
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers.html | 20
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/action.html | 67 +-
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/auxiliary.html | 221 +++-----
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/binary.html | 243 +++------
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/char.html | 590 +++++++++--------------
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/directive.html | 313 +++++-------
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/numeric.html | 391 ++++++---------
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/operator.html | 395 ++++++---------
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/string.html | 199 +++----
   trunk/libs/spirit/doc/html/spirit/qi/quick_reference/semantic_actions.html | 23
   trunk/libs/spirit/doc/html/spirit/qi/reference.html | 17
   trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary.html | 43
   trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr.html | 141 ++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html | 135 ++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html | 132 ++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html | 194 +++----
   trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html | 183 +++----
   trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html | 230 ++++-----
   trunk/libs/spirit/doc/html/spirit/qi/reference/binary.html | 30
   trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html | 346 ++++++--------
   trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html | 349 ++++++--------
   trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html | 430 +++++++----------
   trunk/libs/spirit/doc/html/spirit/qi/reference/char.html | 42
   trunk/libs/spirit/doc/html/spirit/qi/reference/char/char.html | 519 +++++++++------------
   trunk/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html | 365 ++++++---------
   trunk/libs/spirit/doc/html/spirit/qi/reference/directive.html | 52 +
   trunk/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html | 162 +++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html | 155 +++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html | 151 ++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html | 161 +++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html | 281 +++++------
   trunk/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html | 188 +++----
   trunk/libs/spirit/doc/html/spirit/qi/reference/numeric.html | 43 +
   trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/boolean.html | 407 +++++++---------
   trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html | 551 +++++++++-------------
   trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html | 945 ++++++++++++++++-----------------------
   trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html | 618 ++++++++++---------------
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator.html | 85 +-
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html | 150 +++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html | 131 ++--
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html | 142 ++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html | 173 +++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html | 119 ++--
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator/list.html | 138 ++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html | 130 ++--
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html | 128 ++--
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html | 136 ++--
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html | 121 ++--
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html | 137 ++--
   trunk/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html | 147 ++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts.html | 15
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html | 189 +++----
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html | 147 ++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html | 227 ++++-----
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html | 77 +-
   trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html | 143 ++---
   trunk/libs/spirit/doc/html/spirit/qi/reference/string.html | 33
   trunk/libs/spirit/doc/html/spirit/qi/reference/string/string.html | 241 ++++-----
   trunk/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html | 564 +++++++++-------------
   trunk/libs/spirit/doc/html/spirit/qi/tutorials.html | 17
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/complex___our_first_complex_parser.html | 50 +
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html | 191 ++++---
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html | 267 +++++-----
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html | 185 +++----
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/number_list___stuffing_numbers_into_a_std__vector.html | 33
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/number_list_attribute___one_more__with_style.html | 44 +
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/number_list_redux___list_syntax.html | 25
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html | 23
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html | 153 +++---
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html | 68 +-
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/sum___adding_numbers.html | 113 ++--
   trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html | 153 +++---
   trunk/libs/spirit/doc/html/spirit/references.html | 447 ++++++------------
   trunk/libs/spirit/doc/html/spirit/repository.html | 17
   trunk/libs/spirit/doc/html/spirit/structure.html | 15
   trunk/libs/spirit/doc/html/spirit/structure/include.html | 77 +-
   trunk/libs/spirit/doc/html/spirit/support.html | 24
   trunk/libs/spirit/doc/html/spirit/support/multi_pass.html | 717 +++++++++++++----------------
   trunk/libs/spirit/doc/html/spirit/what_s_new.html | 278 ++++++-----
   trunk/libs/spirit/doc/spirit2.qbk | 3
   217 files changed, 17062 insertions(+), 20989 deletions(-)

Modified: trunk/libs/spirit/doc/abstracts.qbk
==============================================================================
--- trunk/libs/spirit/doc/abstracts.qbk (original)
+++ trunk/libs/spirit/doc/abstracts.qbk 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -22,8 +22,6 @@
 [/include abstracts/debugging.qbk]
 [/include abstracts/error_handling.qbk]
 [/include abstracts/parse_trees_and_asts.qbk]
-[include abstracts/indepth.qbk]
-[include abstracts/customization_points.qbk]
 
 [endsect]
 

Deleted: trunk/libs/spirit/doc/abstracts/customization_points.qbk
==============================================================================
--- trunk/libs/spirit/doc/abstracts/customization_points.qbk 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
+++ (empty file)
@@ -1,960 +0,0 @@
-[/==============================================================================
- Copyright (C) 2001-2009 Hartmut Kaiser
- Copyright (C) 2001-2009 Joel de Guzman
-
- 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)
-===============================================================================/]
-
-[def __customize_is_container__ [link spirit.abstracts.customize.is_container `is_container`]]
-[def __customize_transform_attribute__ [link spirit.abstracts.customize.transform `transform_attribute`]]
-[def __customize_optional_attribute__ [link spirit.abstracts.customize.optional `optional_attribute`]]
-[def __customize_assign_to__ [link spirit.abstracts.customize.assign_to `assign_to`]]
-[def __customize_push_back_container__ [link spirit.abstracts.customize.store_value.push_back `push_back_container`]]
-[def __customize_container_value__ [link spirit.abstracts.customize.store_value.container_value `container_value`]]
-[def __customize_clear_value__ [link spirit.abstracts.customize.clear_value `clear_value`]]
-[def __customize_extract_from__ [link spirit.abstracts.customize.extract_from `extract_from`]]
-[def __customize_container_iterator__ [link spirit.abstracts.customize.iterate.container_iterator `container_iterator`]]
-[def __customize_begin_container__ [link spirit.abstracts.customize.iterate.begin_container `begin_container`]]
-[def __customize_end_container__ [link spirit.abstracts.customize.iterate.end_container `end_container`]]
-[def __customize_next_iterator__ [link spirit.abstracts.customize.iterate.next_iterator `next_iterator`]]
-[def __customize_deref_iterator__ [link spirit.abstracts.customize.iterate.deref_iterator `deref_iterator`]]
-[def __customize_compare_iterators__ [link spirit.abstracts.customize.iterate.compare_iterators `compare_iterators`]]
-
-[section:customize Customization of Spirit's Attribute Handling]
-
-[heading Why do we need Attribute Customization Points]
-
-[important Before you read on please be aware that the interfaces described in
- this section are not finalized and may change in the future without
- attempting to be backwards compatible. We document the customization
- point interfaces anyways as we think they are important.
- Understanding customization points helps understanding Spirit.
- Additionally they prove to be powerful tools enabling full
- integration of the user's data structures with /Qi's/ parsers and
- /Karma's/ generators.]
-
-__spirit__ has been written with extensibility in mind. It provides many
-different attribute customization points allowing to integrate custom data
-types with the process of parsing in __qi__ or output generation with
-__karma__. All attribute customization points are exposed using a similar
-technique: full or partial template specialization. __spirit__ generally
-implements the main template, providing a default implementation. You as the
-user have to provide a partial or full specialization of this template for the
-data types you want to integrate with the library. In fact, the library uses
-these customization points itself for instance to handle the magic of the
-__unused_type__ attribute type.
-
-Here is an example showing the __customize_container_value__ customization point
-used by different parsers (such as __qi_kleene__, __qi_plus__, etc.) to find
-the attribute type to be stored in a supplied STL container:
-
-[import ../../../../boost/spirit/home/support/container.hpp]
-
-[customization_container_value_default]
-
-This template is instantiated by the library at the appropriate places while
-using the supplied container type as the template argument. The embedded `type`
-is used as the attribute type while parsing the elements to be store in that
-container.
-
-The following example shows the predefined specialization for __unused_type__:
-
-[customization_container_value_unused]
-
-which defines its embedded `type` to be __unused_type__ as well, this way
-propagating the 'don't care' attribute status to the embedded parser.
-
-All attribute customization points follow the same scheme. The last template
-parameter is always `typename Enable = void` allowing to apply SFINAE for
-fine grained control over the template specialization process. But most of the
-time you can safely forget about its existence.
-
-The following sections will describe all customization points, together with a
-description which needs to be specialized for what purpose.
-
-[heading The Usage of Customization Points]
-
-The different customizations points are used by different parts of the library.
-Part of the customizations points are used by both, __qi__ and __karma__,
-whereas others are specialized to be applied for one of the sub-libraries only.
-We will explain when a specific customization point needs to be implemented and,
-equally important, which customization points need to be implemented at the
-same time. Often it is not sufficient to provide a specialization for one
-single customization point only, in this case you as the user have to provide
-all necessary customizations for your data type you want to integrate with the
-library.
-
-[/////////////////////////////////////////////////////////////////////////////]
-[section:is_container Determine if a Type Should be Treated as a Container (Qi and Karma)]
-
-[heading is_container]
-
-The template `is_container` is a template meta-function used as an attribute
-customization point. It is invoked by the /Qi/ __qi_sequence__ (`>>`) and
-/Karma/ __karma_sequence__ operators in order to determine whether a supplied
-attribute can potentially be treated as a container.
-
-[heading Header]
-
- #include <boost/spirit/home/support/container.hpp>
-
-Also, see __include_structure__.
-
-[note This header file does not need to be included directly by any user
- program as it is normally included by other Spirit header files relying
- on its content.]
-
-[heading Namespace]
-
-[table
- [[Name]]
- [[`boost::spirit::traits`]]
-]
-
-[heading Synopsis]
-
- template <typename Container, typename Enable>
- struct is_container;
-
-[heading Template parameters]
-
-[table
- [[Parameter] [Description] [Default]]
- [[`Container`] [The type, `Container` needs to
- be tested whether it has to be treated
- as a container] [none]]
- [[`Enable`] [Helper template parameter usable to selectively
- enable or disable certain specializations
- of `is_container` utilizing SFINAE (i.e.
- `boost::enable_if` or `boost::disable_if`).] [`void`]]
-]
-
-[heading Notation]
-
-[variablelist
- [[`C`] [A type to be tested whether it needs to be treated
- as a container.]]
- [[`T1`, `T2`, ...] [Arbitrary types]]
-]
-
-[heading Expression Semantics]
-
-[table
- [[Expression] [Semantics]]
- [[`is_container<C>::type`] [Metafunction that evaluates to `mpl::true_`
- if a given type, `C`, is to be treated as a
- container, `mpl::false_` otherwise (See
- __mpl_boolean_constant__).]]
-]
-
-[heading Predefined Specializations]
-
-__spirit__ predefines specializations of this customization point for
-several types. The following table lists those types together with the
-conditions for which the corresponding specializations will evaluate to
-`mpl::true_` (see __mpl_boolean_constant__):
-
-[table
- [[Template Parameters] [Value]]
- [[`T`] [Returns `mpl::true_` if `T` has the following
- embedded types defined: `value_type`,
- `iterator`, `size_type`, and`reference`.
- Otherwise it will return `mpl::false_`.]]
- [[`boost::optional<T>`] [Returns `is_container<T>::type`]]
- [[`boost::variant<T1, T2, ...>`]
- [Returns `mpl::true_` if at least one of the
- `is_container<TN>::type` returns `mpl::true_`
- (where `TN` is `T1`, `T2`, ...).
- Otherwise it will return `mpl::false_`.]]
- [[__unused_type__] [Returns `mpl::false_`.]]
-]
-
-[heading When to implement]
-
-The customization point `is_container` needs to be implemented for a specific
-type whenever this type is to be used as an attribute in place of a STL
-container. It is applicable for parsers (__qi__) and generators (__karma__).
-As a rule of thumb: it has to be implemented whenever a certain type
-is to be passed as an attribute to a parser or a generator normally exposing a
-STL container and if the type does not expose the interface of a STL container
-(i.e. `is_container<C>::type` would normally return `mpl::false_`). These
-components have an attribute propagation rule in the form:
-
- a: A --> Op(a): vector<A>
-
-where `Op(a)` stands for any meaningful operation on the component `a`.
-
-[heading Related Attribute Customization Points]
-
-If this customization point is implemented, the following other customization
-points need to be implemented as well.
-
-[table
- [[Name] [When to implement]]
- [[__customize_container_value__] [Needs to be implemented whenever `is_container` is implemented.]]
- [[__customize_push_back_container__] [Qi: __qi_list__, __qi_kleene__, __qi_plus__, [qi_repeat Repeat].]]
- [[`container_iterator`] [Karma: __karma_list__, [karma_kleene Kleene (unary `*`)], __karma_plus__, [karma_repeat Repeat].]]
- [[`begin_container`] [Karma: __karma_list__, [karma_kleene Kleene (unary `*`)], __karma_plus__, [karma_repeat Repeat].]]
- [[`end_container`] [Karma: __karma_list__, [karma_kleene Kleene (unary `*`)], __karma_plus__, [karma_repeat Repeat].]]
- [[`deref_iterator`] [Karma: __karma_list__, [karma_kleene Kleene (unary `*`)], __karma_plus__, [karma_repeat Repeat].]]
- [[`next_iterator`] [Karma: __karma_list__, [karma_kleene Kleene (unary `*`)], __karma_plus__, [karma_repeat Repeat].]]
- [[`compare_iterators`] [Karma: __karma_list__, [karma_kleene Kleene (unary `*`)], __karma_plus__, [karma_repeat Repeat].]]
-]
-
-[heading Example]
-
-TBD
-
-[endsect]
-
-[/////////////////////////////////////////////////////////////////////////////]
-[section:transform Transform an Attribute to a Different Type (Qi and Karma)]
-
-[heading transform_attribute]
-
-Short description here...
-
-[heading Module Headers]
-
- #include <boost/spirit/xxx.hpp>
-
-Also, see __include_structure__.
-
-[note This header file does not need to be included directly by any user
- program as it is normally included by other Spirit header files relying
- on its content.]
-
-[heading Namespace]
-
-[table
- [[Name]]
- [[`boost::spirit::xxx`]]
-]
-
-[heading Synopsis]
-
- template <typename T>
- struct XXX;
-
-[heading Template parameters]
-
-[table
- [[Parameter] [Description] [Default]]
- [[`T`] [What is T] []]
-]
-
-[heading Notation]
-
-[variablelist Notation
- [[`xxx`] [An XXX]]
-]
-
-[heading Expression Semantics]
-
-Semantics of an expression is defined only where it differs from, or is not
-defined in _concept-of_XXX_.
-
-[table
- [[Expression] [Semantics]]
- [[`xxx`] [Semantics of `xxx`]]
-]
-
-[heading Predefined Specializations]
-
-[table
- [[Type] [Condition]]
- [[`xxx`] [when does it evaluate to mpl::true_]]
-]
-
-[heading When to implement]
-
-Describe when this customization point needs to be implemented by the user.
-
-[heading Related Attribute Customization Points]
-
-If this customization point is implemented, the following other customization
-points need to be implemented as well.
-
-[table
- [[Name] [When to implement]]
-]
-
-[heading Example]
-
-TBD
-
-[endsect]
-
-[/////////////////////////////////////////////////////////////////////////////]
-[/ section:optional Handling of Optional Attributes (Qi and Karma)]
-
-[/ optional_attribute]
-
-[/ endsect]
-
-[/////////////////////////////////////////////////////////////////////////////]
-[section:assign_to Store a Parsed Attribute Value (Qi)]
-
-After parsing input and generting an attribute value this value needs to
-assigned to the attribute instance provided by the user. The customization
-points `assign_to_attribute_from_iterators` and `assign_to_attribute_from_value`
-are utilized to adapt this assignment to the concrete type to be assigned.
-This section describes both.
-
-[section:assign_to_attribute_from_iterators Store an Attribute after a Parser Produced a Pair of Iterators (Qi)]
-
-[heading assign_to_attribute_from_iterators]
-
-The template `assign_to_attribute_from_iterators` is a type used as an attribute
-customization point. It is invoked by the those /Qi/ parsers not producing any
-attribute value but returning a pair of iterators pointing to the matched input
-sequence. It is used to either store the iterator pair into the attribute
-instance provided by the user or to convert the iterator pair into an attribute
-as provided by the user.
-
-[heading Module Headers]
-
- #include <boost/spirit/home/qi/detail/assign_to.hpp>
-
-Also, see __include_structure__.
-
-[note This header file does not need to be included directly by any user
- program as it is normally included by other Spirit header files relying
- on its content.]
-
-[heading Namespace]
-
-[table
- [[Name]]
- [[`boost::spirit::traits`]]
-]
-
-[heading Synopsis]
-
- template <typename Attrib, typename Iterator, typename Enable>
- struct assign_to_attribute_from_iterators;
-
-[heading Template parameters]
-
-[table
- [[Parameter] [Description] [Default]]
- [[`Attrib`] [The type, `Attrib` is the type of the attribute as
- passed in by the user.] [none]]
- [[`Iterator`] [The type, `Iterator` is the type of the iterators
- as produced by the parser.] [none]]
- [[`Enable`] [Helper template parameter usable to selectively
- enable or disable certain specializations
- of `assign_to_attribute_from_value` utilizing SFINAE (i.e.
- `boost::enable_if` or `boost::disable_if`).] [`void`]]
-]
-
-[heading Notation]
-
-[variablelist Notation
- [[`Attrib`] [A type to be used as the target to store the attribute value in.]]
- [[`attr`] [A attribute instance of type `Attrib`.]]
- [[`Iterator`] [The iterator type used by the parser. This type usually
- corresponds to the iterators as passed in by the user.]]
- [[`begin`, `end`] [Iterator instances of type `Iterator` pointing to the
- begin and the end of the matched input sequence.]]
-]
-
-[heading Expression Semantics]
-
-[table
- [[Expression] [Semantics]]
- [[
-``assign_to_attribute_from_iterators<Attrib, Iterator>::call(b, e, attr)``]
- [Use the iterators `begin` and `end` to initialize
- the attribute `attr`.]]
-]
-
-[heading Predefined Specializations]
-
-[table
- [[Type] [Semantics]]
- [[`Attrib`, `Iterator`] [Execute an assignment `attr = Attrib(begin, end)`.]]
- [[__unused_type__, `T`] [Do nothing.]]
-]
-
-[heading When to implement]
-
-The customization point `assign_to_attribute_from_iterators` needs to be
-implemented for a specific type whenever the default implementation as shown
-above is not applicable. Examples for this could be that the type `Attrib` is
-not constructible from the pair of iterators.
-
-[heading Example]
-
-TBD
-
-[endsect]
-
-[section:assign_to_attribute_from_value Store an Attribute Value after a Parser Produced a Value (Qi)]
-
-[heading assign_to_attribute_from_value]
-
-The template `assign_to_attribute_from_value` is a type used as an attribute
-customization point. It is invoked by the all primitive /Qi/ parsers in order
-to store a parsed attribute value into the attribute instance provided by the
-user.
-
-[heading Module Headers]
-
- #include <boost/spirit/home/qi/detail/assign_to.hpp>
-
-Also, see __include_structure__.
-
-[note This header file does not need to be included directly by any user
- program as it is normally included by other Spirit header files relying
- on its content.]
-
-[heading Namespace]
-
-[table
- [[Name]]
- [[`boost::spirit::traits`]]
-]
-
-[heading Synopsis]
-
- template <typename Attrib, typename T, typename Enable>
- struct assign_to_attribute_from_value;
-
-[heading Template parameters]
-
-[table
- [[Parameter] [Description] [Default]]
- [[`Attrib`] [The type, `Attrib` is the type of the attribute as
- passed in by the user.] [none]]
- [[`T`] [The type, `T` is the type of the attribute instance
- as produced by the parser.] [none]]
- [[`Enable`] [Helper template parameter usable to selectively
- enable or disable certain specializations
- of `assign_to_attribute_from_value` utilizing SFINAE (i.e.
- `boost::enable_if` or `boost::disable_if`).] [`void`]]
-]
-
-[heading Notation]
-
-[variablelist Notation
- [[`Attrib`] [A type to be used as the target to store the attribute value in.]]
- [[`attr`] [A attribute instance of type `Attrib`.]]
- [[`T`] [A type as produced by the parser. The parser temporarily stores
- its parsed values using this type.]]
- [[`t`] [A attribute instance of type `T`.]]
-]
-
-[heading Expression Semantics]
-
-[table
- [[Expression] [Semantics]]
- [[
-``assign_to_attribute_from_value<Attrib, T>::call(t, attr)``]
- [Copy (assign) the value, `t` to the attribute `attr`.]]
-]
-
-[heading Predefined Specializations]
-
-[table
- [[Type] [Semantics]]
- [[`Attrib`, `T`] [Assign the argument `t` to `attr`.]]
- [[__unused_type__, `T`] [Do nothing.]]
-]
-
-[heading When to implement]
-
-The customization point `assign_to_attribute_from_value` needs to be
-implemented for a specific type whenever the default implementation as shown
-above is not applicable. Examples for this could be that the type `Attrib` is
-not copy constructible.
-
-[heading Example]
-
-TBD
-
-[endsect]
-
-[endsect]
-
-[/////////////////////////////////////////////////////////////////////////////]
-[section:store_value Store Parsed Attribute Values into a Container (Qi)]
-
-In order to customize Spirit to accept a given data type as a container for
-elements parsed by any of the repetitive parsers (__qi_kleene__, __qi_plus__,
-__qi_list__, and [qi_repeat Repeat]) two attribute customization points have to be
-specialized: __customize_container_value__ and __customize_push_back_container__.
-This section describes both.
-
-[section:container_value Determine the Type to be Stored in a Container (Qi)]
-
-[heading container_value]
-
-The template `container_value` is a template meta function used as an attribute
-customization point. It is invoked by the /Qi/ repetitive parsers
-(__qi_kleene__, __qi_plus__, __qi_list__, and [qi_repeat Repeat]) to determine the
-type to store in a container.
-
-[heading Module Headers]
-
- #include <boost/spirit/home/support/container.hpp>
-
-Also, see __include_structure__.
-
-[note This header file does not need to be included directly by any user
- program as it is normally included by other Spirit header files relying
- on its content.]
-
-[heading Namespace]
-
-[table
- [[Name]]
- [[`boost::spirit::traits`]]
-]
-
-[heading Synopsis]
-
- template <typename Container, typename Enable>
- struct container_value;
-
-[heading Template parameters]
-
-[table
- [[Parameter] [Description] [Default]]
- [[`Container`] [The type, `Container` needs to
- be tested whether it has to be treated
- as a container] [none]]
- [[`Enable`] [Helper template parameter usable to selectively
- enable or disable certain specializations
- of `container_value` utilizing SFINAE (i.e.
- `boost::enable_if` or `boost::disable_if`).] [`void`]]
-]
-
-[heading Notation]
-
-[variablelist
- [[`C`] [A type to be tested whether it needs to be treated
- as a container.]]
- [[`T1`, `T2`, ...] [Arbitrary types]]
-]
-
-[heading Expression Semantics]
-
-[table
- [[Expression] [Semantics]]
- [[`container_value<C>::type`] [Metafunction that evaluates to the type
- to be stored in a given container type,
- `C`.]]
-]
-
-[heading Predefined Specializations]
-
-__spirit__ predefines specializations of this customization point for
-several types. The following table lists those types together with the types
-exposed and the corresponding semantics:
-
-[table
- [[Template Parameters] [Value]]
- [[`C`] [The non-const `value_type` of the given container
- type, `C`. ]]
- [[`boost::optional<C>`] [Returns `container_value<C>::type`]]
- [[`boost::variant<T1, T2, ...>`]
- [Returns `container_value<TN>::value` for the
- first `TN` (out of `T1`, `T2`, ...) for which
- `is_container<TN>::type` evaluates to `mpl::true_`.
- Otherwise it will return __unused_type__.]]
- [[__unused_type__] [Returns __unused_type__.]]
-]
-
-[heading When to implement]
-
-The customization point `is_container` needs to be implemented for a specific
-type whenever this type is to be used as an attribute in place of a STL
-container. It is applicable for parsers (__qi__) only. As a rule of thumb: it
-has to be implemented whenever a certain type is to be passed as an attribute
-to a parser normally exposing a STL container and if the type does not expose
-the interface of a STL container (i.e. no embedded typedef for `value_type`).
-These components have an attribute propagation rule in the form:
-
- a: A --> Op(a): vector<A>
-
-where `Op(a)` stands for any meaningful operation on the component `a`.
-
-[heading Related Attribute Customization Points]
-
-If this customization point is implemented, the following other customization
-points need to be implemented as well.
-
-[table
- [[Name] [When to implement]]
- [[__customize_push_back_container__] [Qi: __qi_list__, __qi_kleene__, __qi_plus__, [qi_repeat Repeat].]]
- [[__customize_clear_value__] [Qi: __qi_list__, __qi_kleene__, __qi_plus__, [qi_repeat Repeat].]]
-]
-
-[heading Example]
-
-TBD
-
-[endsect]
-
-[section:push_back Store a Parsed Attribute Value into a Container (Qi)]
-
-[heading push_back_container]
-
-The template `push_back_container` is a type used as an attribute customization
-point. It is invoked by the /Qi/ repetitive parsers (__qi_kleene__, __qi_plus__,
-__qi_list__, and [qi_repeat Repeat]) to store a parsed attribute value into a
-container.
-
-[heading Module Headers]
-
- #include <boost/spirit/home/support/container.hpp>
-
-Also, see __include_structure__.
-
-[note This header file does not need to be included directly by any user
- program as it is normally included by other Spirit header files relying
- on its content.]
-
-[heading Namespace]
-
-[table
- [[Name]]
- [[`boost::spirit::traits`]]
-]
-
-[heading Synopsis]
-
- template <typename Container, typename Attrib, typename Enable>
- struct push_back_container;
-
-[heading Template parameters]
-
-[table
- [[Parameter] [Description] [Default]]
- [[`Container`] [The type, `Container` needs to
- be tested whether it has to be treated
- as a container] [none]]
- [[`Attrib`] [The type, `Attrib` is the one returned from the
- customization point __customize_container_value__
- and represents the attribute value to be stored in
- the container of type `Container`.] [none]]
- [[`Enable`] [Helper template parameter usable to selectively
- enable or disable certain specializations
- of `push_back_container` utilizing SFINAE (i.e.
- `boost::enable_if` or `boost::disable_if`).] [`void`]]
-]
-
-[heading Notation]
-
-[variablelist
- [[`C`] [A type to be used as a container to store attribute values in.]]
- [[`c`] [A container instance of type `C`.]
- [[`Attrib`] [A type to be used as a container to store attribute values in.]]
- [[`attr`] [A attribute instance of type `Attrib`.]]
- [[`T1`, `T2`, ...] [Arbitrary types]]
-]
-
-[heading Expression Semantics]
-
-[table
- [[Expression] [Semantics]]
- [[
-``push_back_container<C, Attrib>::call(c, attr)``]
- [Static function that is invoked whenever an
- attribute value, `attr` needs to be stored
- into the container instance `c`.]]
-]
-
-[heading Predefined Specializations]
-
-__spirit__ predefines specializations of this customization point for
-several types. The following table lists those types together with the types
-exposed and the corresponding semantics:
-
-[table
- [[Template Parameters] [Value]]
- [[`C`, `Attrib`] [Store the provided attribute instance `attr` into
- the given container `c` using the function call
- `c.insert(c.end(), attr)`.]]
- [[`boost::optional<C>`, `Attrib`]
- [If the provided instance of `boost::optional<>` is not
- initialized, invoke the appropriate initialization
- and afterwards apply the customization point
- `push_back_container<C, Attrib>`, treating the
- instance held by the optional (of type `C`) as
- the container to store the attribute in.]]
- [[`boost::variant<T1, T2, ...>`, `Attrib`]
- [If the instance of the variant currently holds a
- value with a type, `TN`, for which `is_container<TN>::type`
- evaluates to `mpl::true_`, this customization
- point specialization will apply
- `push_back_container<TN, Attrib>`, treating the
- instance held by the variant (of type `TN`) as
- the container to store the attribute in. Otherwise
- it will raise an assertion.]]
- [[__unused_type__] [Do nothing.]]
-]
-
-[heading When to Implement]
-
-The customization point `push_back_container` needs to be implemented for a
-specific type whenever this type is to be used as an attribute in place of a STL
-container. It is applicable for parsers (__qi__) only. As a rule of thumb: it
-has to be implemented whenever a certain type is to be passed as an attribute
-to a parser normally exposing a STL container and if the type does not expose
-the interface of a STL container (i.e. no function being equivalent to
-`c.insert(c.end(), attr)`. These components have an attribute propagation rule
-in the form:
-
- a: A --> Op(a): vector<A>
-
-where `Op(a)` stands for any meaningful operation on the component `a`.
-
-[heading Related Attribute Customization Points]
-
-If this customization point is implemented, the following other customization
-points need to be implemented as well.
-
-[table
- [[Name] [When to implement]]
- [[__customize_container_value__] [Qi: __qi_list__, __qi_kleene__, __qi_plus__, [qi_repeat Repeat].]]
- [[__customize_clear_value__] [Qi: __qi_list__, __qi_kleene__, __qi_plus__, [qi_repeat Repeat].]]
-]
-
-[heading Example]
-
-TBD
-
-[endsect]
-
-[endsect]
-
-[/////////////////////////////////////////////////////////////////////////////]
-[section:clear_value Re-Initialize an Attribute Value before Parsing (Qi)]
-
-[heading clear_value]
-
-The template `clear_value` is a type used as an attribute customization point.
-It is invoked by the /Qi/ repetitive parsers (__qi_kleene__, __qi_plus__,
-__qi_list__, and [qi_repeat Repeat]) in order to re-initialize the attribute
-instance passed to the embedded parser after it has been stored in the provided
-container. This re-initialized attribute instance is reused during the next
-iteration of the repetitive parser.
-
-[heading Module Headers]
-
- #include <boost/spirit/home/support/attributes.hpp>
-
-Also, see __include_structure__.
-
-[note This header file does not need to be included directly by any user
- program as it is normally included by other Spirit header files relying
- on its content.]
-
-[heading Namespace]
-
-[table
- [[Name]]
- [[`boost::spirit::traits`]]
-]
-
-[heading Synopsis]
-
- template <typename Attrib, typename Enable>
- struct clear_value;
-
-[heading Template parameters]
-
-[table
- [[Parameter] [Description] [Default]]
- [[`Attrib`] [The type, `Attrib` of the attribute to be
- re-initialized.] [none]]
- [[`Enable`] [Helper template parameter usable to selectively
- enable or disable certain specializations
- of `clear_value` utilizing SFINAE (i.e.
- `boost::enable_if` or `boost::disable_if`).] [`void`]]
-]
-
-[heading Notation]
-
-[variablelist Notation
- [[`Attrib`] [A type to be used as a container to store attribute values in.]]
- [[`attr`] [A attribute instance of type `Attrib`.]]
- [[`T1`, `T2`, ...] [Arbitrary types]]
-]
-
-[heading Expression Semantics]
-
-[table
- [[Expression] [Semantics]]
- [[
-``clear_value<Attrib>::call(Attrib& attr)``] [Re-initialize the instance referred to by
- `attr` in the most efficient way.]]
-]
-
-[heading Predefined Specializations]
-
-__spirit__ predefines specializations of this customization point for
-several types. The following table lists those types together with the types
-exposed and the corresponding semantics:
-
-[table
- [[Template Parameters] [Value]]
- [[`Attrib`] [Re-initialize using assignment of default
- constructed value.]]
- [[Any type `T` for which `is_container<>::type` is `mpl::true_`]
- [Call the member function `attr.clear()` for the
- passed attribute instance.]]
- [[`boost::optional<Attrib>`] [Clear the `optional` instance and leave it
- uninitialized.]]
- [[`boost::variant<T1, T2, ...>`][Invoke the `clear_value` customization
- point for the currently held value.]]
- [[`fusion::tuple<T1, T2, ...>`][Invoke the `clear_value` customization
- point for all elements of the tuple.]]
- [[__unused_type__] [Do nothing.]]
-]
-
-[heading When to Implement]
-
-The customization point `clear_value` needs to be implemented for a
-specific type whenever this type is to be used as an attribute to be stored
-into a STL container and if the type cannot be re-initialized using one of the
-specializations listed above. Examples for this might be types not being default
-constructible or container types not exposing a member function `clear()`.
-
-[heading Example]
-
-TBD
-
-[endsect]
-
-[/////////////////////////////////////////////////////////////////////////////]
-[section:extract_from Extract an Attribute Value to Generate Output (Karma)]
-
-[heading extract_from]
-
-Before generating output for an value this value needs to extracted from the
-attribute instance provided by the user. The customization point
-`extract_from` is utilized to adapt this extraction for any data type possibly
-used to store the values to output.
-
-Short description here...
-
-[heading Module Headers]
-
- #include <boost/spirit/home/karma/detail/extract_from.hpp>
-
-Also, see __include_structure__.
-
-[note This header file does not need to be included directly by any user
- program as it is normally included by other Spirit header files relying
- on its content.]
-
-[heading Namespace]
-
-[table
- [[Name]]
- [[`boost::spirit::traits`]]
-]
-
-[heading Synopsis]
-
- template <typename Attrib, typename Enable>
- struct extract_from_attribute;
-
-[heading Template parameters]
-
-[table
- [[Parameter] [Description] [Default]]
- [[`Attrib`] [The type, `Attrib` of the attribute to be used to
- generate output from.] [none]]
- [[`Enable`] [Helper template parameter usable to selectively
- enable or disable certain specializations
- of `clear_value` utilizing SFINAE (i.e.
- `boost::enable_if` or `boost::disable_if`).] [`void`]]
-]
-
-[heading Notation]
-
-[variablelist Notation
- [[`Attrib`] [A type to be used to generate output from.]]
- [[`attr`] [A attribute instance of type `Attrib`.]]
-]
-
-[heading Expression Semantics]
-
-Semantics of an expression is defined only where it differs from, or is not
-defined in _concept-of_XXX_.
-
-[table
- [[Expression] [Semantics]]
- [[
-``extract_from_attribute<Attrib>::call(attr)``] [Extract the value to generate
- output from and return it to the caller.]]
-]
-
-[heading Predefined Specializations]
-
-__spirit__ predefines specializations of this customization point for
-several types. The following table lists those types together with the types
-exposed and the corresponding semantics:
-
-[table
- [[Template Parameters] [Value]]
- [[`Attrib`] [The exposed typedef `type` is defined to
- `Attrib const&`. The function `call()` returns
- the argument by reference without change.]]
- [[`boost::optional<Attrib>`] [The exposed typedef `type` is defined to
- `Attrib const&`. The function `call()` returns
- the value held by the `optional<>` argument
- by reference without change.]]
- [[`boost::reference_wrapper<Attrib>`]
- [The exposed typedef `type` is defined to
- `Attrib const&`. The function `call()` returns
- the value held by the `reference_wrapper<>`
- argument by reference without change.]]
- [[__unused_type__] [The exposed typedef `type` is defined to
- __unused_type__. The function `call()` returns
- an instance of __unused_type__.]]
-]
-
-[heading When to implement]
-
-The customization point `extract_from_attribute` needs to be implemented for a
-specific type whenever the default implementation as shown above is not
-applicable. Examples for this could be that the type to be extracted is
-different from `Attrib` and is not copy constructible.
-
-[heading Example]
-
-TBD
-
-[endsect]
-
-[/////////////////////////////////////////////////////////////////////////////]
-[/ section:iterate Extract Attribute Values to Generate Output from a Container (Karma)]
-
-[/ container_iterator]
-[/ endsect]
-
-[/ begin_container]
-[/ endsect]
-
-[/ end_container]
-[/ endsect]
-
-[/ next_iterator]
-[/ endsect]
-
-[/ deref_iterator]
-[/ endsect]
-
-[/ compare_iterators]
-[/ endsect]
-
-[/ endsect]
-
-[endsect]
-

Deleted: trunk/libs/spirit/doc/abstracts/indepth.qbk
==============================================================================
--- trunk/libs/spirit/doc/abstracts/indepth.qbk 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
+++ (empty file)
@@ -1,279 +0,0 @@
-[/==============================================================================
- Copyright (C) 2001-2009 Joel de Guzman
- Copyright (C) 2001-2009 Hartmut Kaiser
- Copyright (C) 2009 Andreas Haberstroh?
-
- 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:indepth In Depth]
-
-[section:parsers_indepth Parsers in Depth]
-
-This section is not for the faint of heart. In here, are distilled the inner
-workings of __qi__ parsers, using real code from the __spirit__ library as
-examples. On the other hand, here is no reason to fear reading on, though.
-We tried to explain things step by step while highlighting the important
-insights.
-
-The `__parser_concept__` class is the base class for all parsers.
-
-[import ../../../../boost/spirit/home/qi/parser.hpp]
-[parser_base_parser]
-
-The `__parser_concept__` class does not really know how to parse anything but
-instead relies on the template parameter `Derived` to do the actual parsing.
-This technique is known as the "Curiously Recurring Template Pattern" in template
-meta-programming circles. This inheritance strategy gives us the power of
-polymorphism without the virtual function overhead. In essence this is a way to
-implement compile time polymorphism.
-
-The Derived parsers, `__primitive_parser_concept__`, `__unary_parser_concept__`,
-`__binary_parser_concept__` and `__nary_parser_concept__` provide the necessary
-facilities for parser detection, introspection, transformation and visitation.
-
-Derived parsers must support the following:
-
-[variablelist bool parse(f, l, context, skip, attr)
- [[`f`, `l`] [first/last iterator pair]]
- [[`context`] [enclosing rule context (can be unused_type)]]
- [[`skip`] [skipper (can be unused_type)]]
- [[`attr`] [attribute (can be unused_type)]]
-]
-
-The /parse/ is the main parser entry point. /skipper/ can be an `unused_type`.
-It's a type used every where in __spirit__ to signify "don't-care". There
-is an overload for /skip/ for `unused_type` that is simply a no-op.
-That way, we do not have to write multiple parse functions for
-phrase and character level parsing.
-
-Here are the basic rules for parsing:
-
-* The parser returns `true` if successful, `false` otherwise.
-* If successful, `first` is incremented N number of times, where N
- is the number of characters parsed. N can be zero --an empty (epsilon)
- match.
-* If successful, the parsed attribute is assigned to /attr/
-* If unsuccessful, `first` is reset to its position before entering
- the parser function. /attr/ is untouched.
-
-[variablelist void what(context)
- [[`context`] [enclosing rule context (can be `unused_type`)]]
-]
-
-The /what/ function should be obvious. It provides some information
-about ["what] the parser is. It is used as a debugging aid, for
-example.
-
-[variablelist P::template attribute<context>::type
- [[`P`] [a parser type]]
- [[`context`] [A context type (can be unused_type)]]
-]
-
-The /attribute/ metafunction returns the expected attribute type
-of the parser. In some cases, this is context dependent.
-
-In this section, we will dissect two parser types:
-
-[variablelist Parsers
- [[`__primitive_parser_concept__`] [A parser for primitive data (e.g. integer parsing).]]
- [[`__unary_parser_concept__`] [A parser that has single subject (e.g. kleene star).]]
-]
-
-[/------------------------------------------------------------------------------]
-[heading Primitive Parsers]
-
-For our disection study, we will use a __spirit__ primitive, the `int_parser`
-in the boost::spirit::qi namespace.
-
-[import ../../../../boost/spirit/home/qi/numeric/int.hpp]
-[primitive_parsers_int]
-
-The `int_parser` is derived from a `__primitive_parser_concept__<Derived>`, which
-in turn derives from `parser<Derived>`. Therefore, it supports the following
-requirements:
-
-* The `parse` member function
-* The `what` member function
-* The nested `attribute` metafunction
-
-/parse/ is the main entry point. For primitive parsers, our first thing to do is
-call:
-
-``
-qi::skip(first, last, skipper);
-``
-
-to do a pre-skip. After pre-skipping, the parser proceeds to do its thing. The
-actual parsing code is placed in `extract_int<T, Radix, MinDigits,
-MaxDigits>::call(first, last, attr);`
-
-This simple no-frills protocol is one of the reasons why __spirit__ is
-fast. If you know the internals of __classic__ and perhaps
-even wrote some parsers with it, this simple __spirit__ mechanism
-is a joy to work with. There are no scanners and all that crap.
-
-The /what/ function just tells us that it is an integer parser. Simple.
-
-The /attribute/ metafunction returns the T template parameter. We associate the
-`int_parser` to some placeholders for `short_`, `int_`, `long_` and `long_long`
-types. But, first, we enable these placeholders in namespace boost::spirit:
-
-[primitive_parsers_enable_short_]
-[primitive_parsers_enable_int_]
-[primitive_parsers_enable_long_]
-[primitive_parsers_enable_long_long_]
-
-Notice that `int_parser` is placed in the namespace boost::spirit::qi
-while these /enablers/ are in namespace boost::spirit. The reason is
-that these placeholders are shared by other __spirit__ /domains/. __qi__,
-the parser is one domain. __karma__, the generator is another domain.
-Other parser technologies may be developed and placed in yet
-another domain. Yet, all these can potentially share the same
-placeholders for interoperability. The interpretation of these
-placeholders is domain-specific.
-
-Now that we enabled the placeholders, we have to write generators
-for them. The make_xxx stuff (in boost::spirit::qi namespace):
-
-[primitive_parsers_make_int]
-
-This one above is our main generator. It's a simple function object
-with 2 (unused) arguments. These arguments are
-
-# The actual terminal value obtained by proto. In this case, either
- a short_, int_, long_ or long_long. We don't care about this.
-
-# Modifiers. We also don't care about this. This allows directives
- such as `no_case[p]` to pass information to inner parser nodes.
- We'll see how that works later.
-
-Now:
-
-[primitive_parsers_short_]
-[primitive_parsers_int_]
-[primitive_parsers_long_]
-[primitive_parsers_long_long_]
-
-These, specialize `qi:make_primitive` for specific tags. They all
-inherit from `make_int` which does the actual work.
-
-[heading Composite Parsers]
-
-Let me present the kleene star (also in namespace spirit::qi):
-
-[import ../../../../boost/spirit/home/qi/operator/kleene.hpp]
-[composite_parsers_kleene]
-
-Looks similar in form to its primitive cousin, the `int_parser`. And, again, it
-has the same basic ingredients required by `Derived`.
-
-* The nested attribute metafunction
-* The parse member function
-* The what member function
-
-kleene is a composite parser. It is a parser that composes another
-parser, its ["subject]. It is a `__unary_parser_concept__` and subclasses from it.
-Like `__primitive_parser_concept__`, `__unary_parser_concept__<Derived>` derives
-from `parser<Derived>`.
-
-unary_parser<Derived>, has these expression requirements on Derived:
-
-* p.subject -> subject parser ( ['p] is a __unary_parser_concept__ parser.)
-* P::subject_type -> subject parser type ( ['P] is a __unary_parser_concept__ type.)
-
-/parse/ is the main parser entry point. Since this is not a primitive
-parser, we do not need to call `qi::skip(first, last, skipper)`. The
-['subject], if it is a primitive, will do the pre-skip. If if it is
-another composite parser, it will eventually call a primitive parser
-somewhere down the line which will do the pre-skip. This makes it a
-lot more efficient than __classic__. __classic__ puts the skipping business
-into the so-called "scanner" which blindly attempts a pre-skip
-everytime we increment the iterator.
-
-What is the /attribute/ of the kleene? In general, it is a `std::vector<T>`
-where `T` is the attribute of the subject. There is a special case though.
-If `T` is an `unused_type`, then the attribute of kleene is also `unused_type`.
-`traits::build_std_vector` takes care of that minor detail.
-
-So, let's parse. First, we need to provide a local attribute of for
-the subject:
-
-``
-typename traits::attribute_of<Subject, Context>::type val;
-``
-
-`traits::attribute_of<Subject, Context>` simply calls the subject's
-`struct attribute<Context>` nested metafunction.
-
-/val/ starts out default initialized. This val is the one we'll
-pass to the subject's parse function.
-
-The kleene repeats indefinitely while the subject parser is
-successful. On each successful parse, we `push_back` the parsed
-attribute to the kleen's attribute, which is expected to be,
-at the very least, compatible with a `std::vector`. In other words,
-although we say that we want our attribute to be a `std::vector`,
-we try to be more lenient than that. The caller of kleene's
-parse may pass a different attribute type. For as long as it is
-also a conforming STL container with `push_back`, we are ok. Here
-is the kleene loop:
-
-``
-while (subject.parse(first, last, context, skipper, val))
-{
- // push the parsed value into our attribute
- traits::push_back(attr, val);
- traits::clear(val);
-}
-return true;
-``
-Take note that we didn't call attr.push_back(val). Instead, we
-called a Spirit provided function:
-
-``
-traits::push_back(attr, val);
-``
-
-This is a recurring pattern. The reason why we do it this way is
-because attr [*can] be `unused_type`. `traits::push_back` takes care
-of that detail. The overload for unused_type is a no-op. Now, you
-can imagine why __spirit__ is fast! The parsers are so simple and the
-generated code is as efficient as a hand rolled loop. All these
-parser compositions and recursive parse invocations are extensively
-inlined by a modern C++ compiler. In the end, you get a tight loop
-when you use the kleene. No more excess baggage. If the attribute
-is unused, then there is no code generated for that. That's how
-__spirit__ is designed.
-
-The /what/ function simply wraps the output of the subject in a
-"kleene[" ... "]".
-
-Ok, now, like the `int_parser`, we have to hook our parser to the
-_qi_ engine. Here's how we do it:
-
-First, we enable the prefix star operator. In proto, it's called
-the "dereference":
-
-[composite_parsers_kleene_enable_]
-
-This is done in namespace `boost::spirit` like its friend, the `use_terminal`
-specialization for our `int_parser`. Obviously, we use /use_operator/ to
-enable the dereference for the qi::domain.
-
-Then, we need to write our generator (in namespace qi):
-
-[composite_parsers_kleene_generator]
-
-This essentially says; for all expressions of the form: `*p`, to build a kleene
-parser. Elements is a __fusion__ sequence. For the kleene, which is a unary
-operator, expect only one element in the sequence. That element is the subject
-of the kleene.
-
-We still don't care about the Modifiers. We'll see how the modifiers is
-all about when we get to deep directives.
-
-[endsect]
-
-[endsect]

Added: trunk/libs/spirit/doc/advanced.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/advanced.qbk 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,6 @@
+[section Advanced]
+
+[include advanced/indepth.qbk]
+[include advanced/customization_points.qbk]
+
+[endsect]

Added: trunk/libs/spirit/doc/advanced/customization_points.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/advanced/customization_points.qbk 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,960 @@
+[/==============================================================================
+ Copyright (C) 2001-2009 Hartmut Kaiser
+ Copyright (C) 2001-2009 Joel de Guzman
+
+ 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)
+===============================================================================/]
+
+[def __customize_is_container__ [link spirit.advanced.customize.is_container `is_container`]]
+[def __customize_transform_attribute__ [link spirit.advanced.customize.transform `transform_attribute`]]
+[def __customize_optional_attribute__ [link spirit.advanced.customize.optional `optional_attribute`]]
+[def __customize_assign_to__ [link spirit.advanced.customize.assign_to `assign_to`]]
+[def __customize_push_back_container__ [link spirit.advanced.customize.store_value.push_back `push_back_container`]]
+[def __customize_container_value__ [link spirit.advanced.customize.store_value.container_value `container_value`]]
+[def __customize_clear_value__ [link spirit.advanced.customize.clear_value `clear_value`]]
+[def __customize_extract_from__ [link spirit.advanced.customize.extract_from `extract_from`]]
+[def __customize_container_iterator__ [link spirit.advanced.customize.iterate.container_iterator `container_iterator`]]
+[def __customize_begin_container__ [link spirit.advanced.customize.iterate.begin_container `begin_container`]]
+[def __customize_end_container__ [link spirit.advanced.customize.iterate.end_container `end_container`]]
+[def __customize_next_iterator__ [link spirit.advanced.customize.iterate.next_iterator `next_iterator`]]
+[def __customize_deref_iterator__ [link spirit.advanced.customize.iterate.deref_iterator `deref_iterator`]]
+[def __customize_compare_iterators__ [link spirit.advanced.customize.iterate.compare_iterators `compare_iterators`]]
+
+[section:customize Customization of Spirit's Attribute Handling]
+
+[heading Why do we need Attribute Customization Points]
+
+[important Before you read on please be aware that the interfaces described in
+ this section are not finalized and may change in the future without
+ attempting to be backwards compatible. We document the customization
+ point interfaces anyways as we think they are important.
+ Understanding customization points helps understanding Spirit.
+ Additionally they prove to be powerful tools enabling full
+ integration of the user's data structures with /Qi's/ parsers and
+ /Karma's/ generators.]
+
+__spirit__ has been written with extensibility in mind. It provides many
+different attribute customization points allowing to integrate custom data
+types with the process of parsing in __qi__ or output generation with
+__karma__. All attribute customization points are exposed using a similar
+technique: full or partial template specialization. __spirit__ generally
+implements the main template, providing a default implementation. You as the
+user have to provide a partial or full specialization of this template for the
+data types you want to integrate with the library. In fact, the library uses
+these customization points itself for instance to handle the magic of the
+__unused_type__ attribute type.
+
+Here is an example showing the __customize_container_value__ customization point
+used by different parsers (such as __qi_kleene__, __qi_plus__, etc.) to find
+the attribute type to be stored in a supplied STL container:
+
+[import ../../../../boost/spirit/home/support/container.hpp]
+
+[customization_container_value_default]
+
+This template is instantiated by the library at the appropriate places while
+using the supplied container type as the template argument. The embedded `type`
+is used as the attribute type while parsing the elements to be store in that
+container.
+
+The following example shows the predefined specialization for __unused_type__:
+
+[customization_container_value_unused]
+
+which defines its embedded `type` to be __unused_type__ as well, this way
+propagating the 'don't care' attribute status to the embedded parser.
+
+All attribute customization points follow the same scheme. The last template
+parameter is always `typename Enable = void` allowing to apply SFINAE for
+fine grained control over the template specialization process. But most of the
+time you can safely forget about its existence.
+
+The following sections will describe all customization points, together with a
+description which needs to be specialized for what purpose.
+
+[heading The Usage of Customization Points]
+
+The different customizations points are used by different parts of the library.
+Part of the customizations points are used by both, __qi__ and __karma__,
+whereas others are specialized to be applied for one of the sub-libraries only.
+We will explain when a specific customization point needs to be implemented and,
+equally important, which customization points need to be implemented at the
+same time. Often it is not sufficient to provide a specialization for one
+single customization point only, in this case you as the user have to provide
+all necessary customizations for your data type you want to integrate with the
+library.
+
+[/////////////////////////////////////////////////////////////////////////////]
+[section:is_container Determine if a Type Should be Treated as a Container (Qi and Karma)]
+
+[heading is_container]
+
+The template `is_container` is a template meta-function used as an attribute
+customization point. It is invoked by the /Qi/ __qi_sequence__ (`>>`) and
+/Karma/ __karma_sequence__ operators in order to determine whether a supplied
+attribute can potentially be treated as a container.
+
+[heading Header]
+
+ #include <boost/spirit/home/support/container.hpp>
+
+Also, see __include_structure__.
+
+[note This header file does not need to be included directly by any user
+ program as it is normally included by other Spirit header files relying
+ on its content.]
+
+[heading Namespace]
+
+[table
+ [[Name]]
+ [[`boost::spirit::traits`]]
+]
+
+[heading Synopsis]
+
+ template <typename Container, typename Enable>
+ struct is_container;
+
+[heading Template parameters]
+
+[table
+ [[Parameter] [Description] [Default]]
+ [[`Container`] [The type, `Container` needs to
+ be tested whether it has to be treated
+ as a container] [none]]
+ [[`Enable`] [Helper template parameter usable to selectively
+ enable or disable certain specializations
+ of `is_container` utilizing SFINAE (i.e.
+ `boost::enable_if` or `boost::disable_if`).] [`void`]]
+]
+
+[heading Notation]
+
+[variablelist
+ [[`C`] [A type to be tested whether it needs to be treated
+ as a container.]]
+ [[`T1`, `T2`, ...] [Arbitrary types]]
+]
+
+[heading Expression Semantics]
+
+[table
+ [[Expression] [Semantics]]
+ [[`is_container<C>::type`] [Metafunction that evaluates to `mpl::true_`
+ if a given type, `C`, is to be treated as a
+ container, `mpl::false_` otherwise (See
+ __mpl_boolean_constant__).]]
+]
+
+[heading Predefined Specializations]
+
+__spirit__ predefines specializations of this customization point for
+several types. The following table lists those types together with the
+conditions for which the corresponding specializations will evaluate to
+`mpl::true_` (see __mpl_boolean_constant__):
+
+[table
+ [[Template Parameters] [Value]]
+ [[`T`] [Returns `mpl::true_` if `T` has the following
+ embedded types defined: `value_type`,
+ `iterator`, `size_type`, and`reference`.
+ Otherwise it will return `mpl::false_`.]]
+ [[`boost::optional<T>`] [Returns `is_container<T>::type`]]
+ [[`boost::variant<T1, T2, ...>`]
+ [Returns `mpl::true_` if at least one of the
+ `is_container<TN>::type` returns `mpl::true_`
+ (where `TN` is `T1`, `T2`, ...).
+ Otherwise it will return `mpl::false_`.]]
+ [[__unused_type__] [Returns `mpl::false_`.]]
+]
+
+[heading When to implement]
+
+The customization point `is_container` needs to be implemented for a specific
+type whenever this type is to be used as an attribute in place of a STL
+container. It is applicable for parsers (__qi__) and generators (__karma__).
+As a rule of thumb: it has to be implemented whenever a certain type
+is to be passed as an attribute to a parser or a generator normally exposing a
+STL container and if the type does not expose the interface of a STL container
+(i.e. `is_container<C>::type` would normally return `mpl::false_`). These
+components have an attribute propagation rule in the form:
+
+ a: A --> Op(a): vector<A>
+
+where `Op(a)` stands for any meaningful operation on the component `a`.
+
+[heading Related Attribute Customization Points]
+
+If this customization point is implemented, the following other customization
+points need to be implemented as well.
+
+[table
+ [[Name] [When to implement]]
+ [[__customize_container_value__] [Needs to be implemented whenever `is_container` is implemented.]]
+ [[__customize_push_back_container__] [Qi: __qi_list__, __qi_kleene__, __qi_plus__, [qi_repeat Repeat].]]
+ [[`container_iterator`] [Karma: __karma_list__, [karma_kleene Kleene (unary `*`)], __karma_plus__, [karma_repeat Repeat].]]
+ [[`begin_container`] [Karma: __karma_list__, [karma_kleene Kleene (unary `*`)], __karma_plus__, [karma_repeat Repeat].]]
+ [[`end_container`] [Karma: __karma_list__, [karma_kleene Kleene (unary `*`)], __karma_plus__, [karma_repeat Repeat].]]
+ [[`deref_iterator`] [Karma: __karma_list__, [karma_kleene Kleene (unary `*`)], __karma_plus__, [karma_repeat Repeat].]]
+ [[`next_iterator`] [Karma: __karma_list__, [karma_kleene Kleene (unary `*`)], __karma_plus__, [karma_repeat Repeat].]]
+ [[`compare_iterators`] [Karma: __karma_list__, [karma_kleene Kleene (unary `*`)], __karma_plus__, [karma_repeat Repeat].]]
+]
+
+[heading Example]
+
+TBD
+
+[endsect]
+
+[/////////////////////////////////////////////////////////////////////////////]
+[section:transform Transform an Attribute to a Different Type (Qi and Karma)]
+
+[heading transform_attribute]
+
+Short description here...
+
+[heading Module Headers]
+
+ #include <boost/spirit/xxx.hpp>
+
+Also, see __include_structure__.
+
+[note This header file does not need to be included directly by any user
+ program as it is normally included by other Spirit header files relying
+ on its content.]
+
+[heading Namespace]
+
+[table
+ [[Name]]
+ [[`boost::spirit::xxx`]]
+]
+
+[heading Synopsis]
+
+ template <typename T>
+ struct XXX;
+
+[heading Template parameters]
+
+[table
+ [[Parameter] [Description] [Default]]
+ [[`T`] [What is T] []]
+]
+
+[heading Notation]
+
+[variablelist Notation
+ [[`xxx`] [An XXX]]
+]
+
+[heading Expression Semantics]
+
+Semantics of an expression is defined only where it differs from, or is not
+defined in _concept-of_XXX_.
+
+[table
+ [[Expression] [Semantics]]
+ [[`xxx`] [Semantics of `xxx`]]
+]
+
+[heading Predefined Specializations]
+
+[table
+ [[Type] [Condition]]
+ [[`xxx`] [when does it evaluate to mpl::true_]]
+]
+
+[heading When to implement]
+
+Describe when this customization point needs to be implemented by the user.
+
+[heading Related Attribute Customization Points]
+
+If this customization point is implemented, the following other customization
+points need to be implemented as well.
+
+[table
+ [[Name] [When to implement]]
+]
+
+[heading Example]
+
+TBD
+
+[endsect]
+
+[/////////////////////////////////////////////////////////////////////////////]
+[/ section:optional Handling of Optional Attributes (Qi and Karma)]
+
+[/ optional_attribute]
+
+[/ endsect]
+
+[/////////////////////////////////////////////////////////////////////////////]
+[section:assign_to Store a Parsed Attribute Value (Qi)]
+
+After parsing input and generting an attribute value this value needs to
+assigned to the attribute instance provided by the user. The customization
+points `assign_to_attribute_from_iterators` and `assign_to_attribute_from_value`
+are utilized to adapt this assignment to the concrete type to be assigned.
+This section describes both.
+
+[section:assign_to_attribute_from_iterators Store an Attribute after a Parser Produced a Pair of Iterators (Qi)]
+
+[heading assign_to_attribute_from_iterators]
+
+The template `assign_to_attribute_from_iterators` is a type used as an attribute
+customization point. It is invoked by the those /Qi/ parsers not producing any
+attribute value but returning a pair of iterators pointing to the matched input
+sequence. It is used to either store the iterator pair into the attribute
+instance provided by the user or to convert the iterator pair into an attribute
+as provided by the user.
+
+[heading Module Headers]
+
+ #include <boost/spirit/home/qi/detail/assign_to.hpp>
+
+Also, see __include_structure__.
+
+[note This header file does not need to be included directly by any user
+ program as it is normally included by other Spirit header files relying
+ on its content.]
+
+[heading Namespace]
+
+[table
+ [[Name]]
+ [[`boost::spirit::traits`]]
+]
+
+[heading Synopsis]
+
+ template <typename Attrib, typename Iterator, typename Enable>
+ struct assign_to_attribute_from_iterators;
+
+[heading Template parameters]
+
+[table
+ [[Parameter] [Description] [Default]]
+ [[`Attrib`] [The type, `Attrib` is the type of the attribute as
+ passed in by the user.] [none]]
+ [[`Iterator`] [The type, `Iterator` is the type of the iterators
+ as produced by the parser.] [none]]
+ [[`Enable`] [Helper template parameter usable to selectively
+ enable or disable certain specializations
+ of `assign_to_attribute_from_value` utilizing SFINAE (i.e.
+ `boost::enable_if` or `boost::disable_if`).] [`void`]]
+]
+
+[heading Notation]
+
+[variablelist Notation
+ [[`Attrib`] [A type to be used as the target to store the attribute value in.]]
+ [[`attr`] [A attribute instance of type `Attrib`.]]
+ [[`Iterator`] [The iterator type used by the parser. This type usually
+ corresponds to the iterators as passed in by the user.]]
+ [[`begin`, `end`] [Iterator instances of type `Iterator` pointing to the
+ begin and the end of the matched input sequence.]]
+]
+
+[heading Expression Semantics]
+
+[table
+ [[Expression] [Semantics]]
+ [[
+``assign_to_attribute_from_iterators<Attrib, Iterator>::call(b, e, attr)``]
+ [Use the iterators `begin` and `end` to initialize
+ the attribute `attr`.]]
+]
+
+[heading Predefined Specializations]
+
+[table
+ [[Type] [Semantics]]
+ [[`Attrib`, `Iterator`] [Execute an assignment `attr = Attrib(begin, end)`.]]
+ [[__unused_type__, `T`] [Do nothing.]]
+]
+
+[heading When to implement]
+
+The customization point `assign_to_attribute_from_iterators` needs to be
+implemented for a specific type whenever the default implementation as shown
+above is not applicable. Examples for this could be that the type `Attrib` is
+not constructible from the pair of iterators.
+
+[heading Example]
+
+TBD
+
+[endsect]
+
+[section:assign_to_attribute_from_value Store an Attribute Value after a Parser Produced a Value (Qi)]
+
+[heading assign_to_attribute_from_value]
+
+The template `assign_to_attribute_from_value` is a type used as an attribute
+customization point. It is invoked by the all primitive /Qi/ parsers in order
+to store a parsed attribute value into the attribute instance provided by the
+user.
+
+[heading Module Headers]
+
+ #include <boost/spirit/home/qi/detail/assign_to.hpp>
+
+Also, see __include_structure__.
+
+[note This header file does not need to be included directly by any user
+ program as it is normally included by other Spirit header files relying
+ on its content.]
+
+[heading Namespace]
+
+[table
+ [[Name]]
+ [[`boost::spirit::traits`]]
+]
+
+[heading Synopsis]
+
+ template <typename Attrib, typename T, typename Enable>
+ struct assign_to_attribute_from_value;
+
+[heading Template parameters]
+
+[table
+ [[Parameter] [Description] [Default]]
+ [[`Attrib`] [The type, `Attrib` is the type of the attribute as
+ passed in by the user.] [none]]
+ [[`T`] [The type, `T` is the type of the attribute instance
+ as produced by the parser.] [none]]
+ [[`Enable`] [Helper template parameter usable to selectively
+ enable or disable certain specializations
+ of `assign_to_attribute_from_value` utilizing SFINAE (i.e.
+ `boost::enable_if` or `boost::disable_if`).] [`void`]]
+]
+
+[heading Notation]
+
+[variablelist Notation
+ [[`Attrib`] [A type to be used as the target to store the attribute value in.]]
+ [[`attr`] [A attribute instance of type `Attrib`.]]
+ [[`T`] [A type as produced by the parser. The parser temporarily stores
+ its parsed values using this type.]]
+ [[`t`] [A attribute instance of type `T`.]]
+]
+
+[heading Expression Semantics]
+
+[table
+ [[Expression] [Semantics]]
+ [[
+``assign_to_attribute_from_value<Attrib, T>::call(t, attr)``]
+ [Copy (assign) the value, `t` to the attribute `attr`.]]
+]
+
+[heading Predefined Specializations]
+
+[table
+ [[Type] [Semantics]]
+ [[`Attrib`, `T`] [Assign the argument `t` to `attr`.]]
+ [[__unused_type__, `T`] [Do nothing.]]
+]
+
+[heading When to implement]
+
+The customization point `assign_to_attribute_from_value` needs to be
+implemented for a specific type whenever the default implementation as shown
+above is not applicable. Examples for this could be that the type `Attrib` is
+not copy constructible.
+
+[heading Example]
+
+TBD
+
+[endsect]
+
+[endsect]
+
+[/////////////////////////////////////////////////////////////////////////////]
+[section:store_value Store Parsed Attribute Values into a Container (Qi)]
+
+In order to customize Spirit to accept a given data type as a container for
+elements parsed by any of the repetitive parsers (__qi_kleene__, __qi_plus__,
+__qi_list__, and [qi_repeat Repeat]) two attribute customization points have to be
+specialized: __customize_container_value__ and __customize_push_back_container__.
+This section describes both.
+
+[section:container_value Determine the Type to be Stored in a Container (Qi)]
+
+[heading container_value]
+
+The template `container_value` is a template meta function used as an attribute
+customization point. It is invoked by the /Qi/ repetitive parsers
+(__qi_kleene__, __qi_plus__, __qi_list__, and [qi_repeat Repeat]) to determine the
+type to store in a container.
+
+[heading Module Headers]
+
+ #include <boost/spirit/home/support/container.hpp>
+
+Also, see __include_structure__.
+
+[note This header file does not need to be included directly by any user
+ program as it is normally included by other Spirit header files relying
+ on its content.]
+
+[heading Namespace]
+
+[table
+ [[Name]]
+ [[`boost::spirit::traits`]]
+]
+
+[heading Synopsis]
+
+ template <typename Container, typename Enable>
+ struct container_value;
+
+[heading Template parameters]
+
+[table
+ [[Parameter] [Description] [Default]]
+ [[`Container`] [The type, `Container` needs to
+ be tested whether it has to be treated
+ as a container] [none]]
+ [[`Enable`] [Helper template parameter usable to selectively
+ enable or disable certain specializations
+ of `container_value` utilizing SFINAE (i.e.
+ `boost::enable_if` or `boost::disable_if`).] [`void`]]
+]
+
+[heading Notation]
+
+[variablelist
+ [[`C`] [A type to be tested whether it needs to be treated
+ as a container.]]
+ [[`T1`, `T2`, ...] [Arbitrary types]]
+]
+
+[heading Expression Semantics]
+
+[table
+ [[Expression] [Semantics]]
+ [[`container_value<C>::type`] [Metafunction that evaluates to the type
+ to be stored in a given container type,
+ `C`.]]
+]
+
+[heading Predefined Specializations]
+
+__spirit__ predefines specializations of this customization point for
+several types. The following table lists those types together with the types
+exposed and the corresponding semantics:
+
+[table
+ [[Template Parameters] [Value]]
+ [[`C`] [The non-const `value_type` of the given container
+ type, `C`. ]]
+ [[`boost::optional<C>`] [Returns `container_value<C>::type`]]
+ [[`boost::variant<T1, T2, ...>`]
+ [Returns `container_value<TN>::value` for the
+ first `TN` (out of `T1`, `T2`, ...) for which
+ `is_container<TN>::type` evaluates to `mpl::true_`.
+ Otherwise it will return __unused_type__.]]
+ [[__unused_type__] [Returns __unused_type__.]]
+]
+
+[heading When to implement]
+
+The customization point `is_container` needs to be implemented for a specific
+type whenever this type is to be used as an attribute in place of a STL
+container. It is applicable for parsers (__qi__) only. As a rule of thumb: it
+has to be implemented whenever a certain type is to be passed as an attribute
+to a parser normally exposing a STL container and if the type does not expose
+the interface of a STL container (i.e. no embedded typedef for `value_type`).
+These components have an attribute propagation rule in the form:
+
+ a: A --> Op(a): vector<A>
+
+where `Op(a)` stands for any meaningful operation on the component `a`.
+
+[heading Related Attribute Customization Points]
+
+If this customization point is implemented, the following other customization
+points need to be implemented as well.
+
+[table
+ [[Name] [When to implement]]
+ [[__customize_push_back_container__] [Qi: __qi_list__, __qi_kleene__, __qi_plus__, [qi_repeat Repeat].]]
+ [[__customize_clear_value__] [Qi: __qi_list__, __qi_kleene__, __qi_plus__, [qi_repeat Repeat].]]
+]
+
+[heading Example]
+
+TBD
+
+[endsect]
+
+[section:push_back Store a Parsed Attribute Value into a Container (Qi)]
+
+[heading push_back_container]
+
+The template `push_back_container` is a type used as an attribute customization
+point. It is invoked by the /Qi/ repetitive parsers (__qi_kleene__, __qi_plus__,
+__qi_list__, and [qi_repeat Repeat]) to store a parsed attribute value into a
+container.
+
+[heading Module Headers]
+
+ #include <boost/spirit/home/support/container.hpp>
+
+Also, see __include_structure__.
+
+[note This header file does not need to be included directly by any user
+ program as it is normally included by other Spirit header files relying
+ on its content.]
+
+[heading Namespace]
+
+[table
+ [[Name]]
+ [[`boost::spirit::traits`]]
+]
+
+[heading Synopsis]
+
+ template <typename Container, typename Attrib, typename Enable>
+ struct push_back_container;
+
+[heading Template parameters]
+
+[table
+ [[Parameter] [Description] [Default]]
+ [[`Container`] [The type, `Container` needs to
+ be tested whether it has to be treated
+ as a container] [none]]
+ [[`Attrib`] [The type, `Attrib` is the one returned from the
+ customization point __customize_container_value__
+ and represents the attribute value to be stored in
+ the container of type `Container`.] [none]]
+ [[`Enable`] [Helper template parameter usable to selectively
+ enable or disable certain specializations
+ of `push_back_container` utilizing SFINAE (i.e.
+ `boost::enable_if` or `boost::disable_if`).] [`void`]]
+]
+
+[heading Notation]
+
+[variablelist
+ [[`C`] [A type to be used as a container to store attribute values in.]]
+ [[`c`] [A container instance of type `C`.]
+ [[`Attrib`] [A type to be used as a container to store attribute values in.]]
+ [[`attr`] [A attribute instance of type `Attrib`.]]
+ [[`T1`, `T2`, ...] [Arbitrary types]]
+]
+
+[heading Expression Semantics]
+
+[table
+ [[Expression] [Semantics]]
+ [[
+``push_back_container<C, Attrib>::call(c, attr)``]
+ [Static function that is invoked whenever an
+ attribute value, `attr` needs to be stored
+ into the container instance `c`.]]
+]
+
+[heading Predefined Specializations]
+
+__spirit__ predefines specializations of this customization point for
+several types. The following table lists those types together with the types
+exposed and the corresponding semantics:
+
+[table
+ [[Template Parameters] [Value]]
+ [[`C`, `Attrib`] [Store the provided attribute instance `attr` into
+ the given container `c` using the function call
+ `c.insert(c.end(), attr)`.]]
+ [[`boost::optional<C>`, `Attrib`]
+ [If the provided instance of `boost::optional<>` is not
+ initialized, invoke the appropriate initialization
+ and afterwards apply the customization point
+ `push_back_container<C, Attrib>`, treating the
+ instance held by the optional (of type `C`) as
+ the container to store the attribute in.]]
+ [[`boost::variant<T1, T2, ...>`, `Attrib`]
+ [If the instance of the variant currently holds a
+ value with a type, `TN`, for which `is_container<TN>::type`
+ evaluates to `mpl::true_`, this customization
+ point specialization will apply
+ `push_back_container<TN, Attrib>`, treating the
+ instance held by the variant (of type `TN`) as
+ the container to store the attribute in. Otherwise
+ it will raise an assertion.]]
+ [[__unused_type__] [Do nothing.]]
+]
+
+[heading When to Implement]
+
+The customization point `push_back_container` needs to be implemented for a
+specific type whenever this type is to be used as an attribute in place of a STL
+container. It is applicable for parsers (__qi__) only. As a rule of thumb: it
+has to be implemented whenever a certain type is to be passed as an attribute
+to a parser normally exposing a STL container and if the type does not expose
+the interface of a STL container (i.e. no function being equivalent to
+`c.insert(c.end(), attr)`. These components have an attribute propagation rule
+in the form:
+
+ a: A --> Op(a): vector<A>
+
+where `Op(a)` stands for any meaningful operation on the component `a`.
+
+[heading Related Attribute Customization Points]
+
+If this customization point is implemented, the following other customization
+points need to be implemented as well.
+
+[table
+ [[Name] [When to implement]]
+ [[__customize_container_value__] [Qi: __qi_list__, __qi_kleene__, __qi_plus__, [qi_repeat Repeat].]]
+ [[__customize_clear_value__] [Qi: __qi_list__, __qi_kleene__, __qi_plus__, [qi_repeat Repeat].]]
+]
+
+[heading Example]
+
+TBD
+
+[endsect]
+
+[endsect]
+
+[/////////////////////////////////////////////////////////////////////////////]
+[section:clear_value Re-Initialize an Attribute Value before Parsing (Qi)]
+
+[heading clear_value]
+
+The template `clear_value` is a type used as an attribute customization point.
+It is invoked by the /Qi/ repetitive parsers (__qi_kleene__, __qi_plus__,
+__qi_list__, and [qi_repeat Repeat]) in order to re-initialize the attribute
+instance passed to the embedded parser after it has been stored in the provided
+container. This re-initialized attribute instance is reused during the next
+iteration of the repetitive parser.
+
+[heading Module Headers]
+
+ #include <boost/spirit/home/support/attributes.hpp>
+
+Also, see __include_structure__.
+
+[note This header file does not need to be included directly by any user
+ program as it is normally included by other Spirit header files relying
+ on its content.]
+
+[heading Namespace]
+
+[table
+ [[Name]]
+ [[`boost::spirit::traits`]]
+]
+
+[heading Synopsis]
+
+ template <typename Attrib, typename Enable>
+ struct clear_value;
+
+[heading Template parameters]
+
+[table
+ [[Parameter] [Description] [Default]]
+ [[`Attrib`] [The type, `Attrib` of the attribute to be
+ re-initialized.] [none]]
+ [[`Enable`] [Helper template parameter usable to selectively
+ enable or disable certain specializations
+ of `clear_value` utilizing SFINAE (i.e.
+ `boost::enable_if` or `boost::disable_if`).] [`void`]]
+]
+
+[heading Notation]
+
+[variablelist Notation
+ [[`Attrib`] [A type to be used as a container to store attribute values in.]]
+ [[`attr`] [A attribute instance of type `Attrib`.]]
+ [[`T1`, `T2`, ...] [Arbitrary types]]
+]
+
+[heading Expression Semantics]
+
+[table
+ [[Expression] [Semantics]]
+ [[
+``clear_value<Attrib>::call(Attrib& attr)``] [Re-initialize the instance referred to by
+ `attr` in the most efficient way.]]
+]
+
+[heading Predefined Specializations]
+
+__spirit__ predefines specializations of this customization point for
+several types. The following table lists those types together with the types
+exposed and the corresponding semantics:
+
+[table
+ [[Template Parameters] [Value]]
+ [[`Attrib`] [Re-initialize using assignment of default
+ constructed value.]]
+ [[Any type `T` for which `is_container<>::type` is `mpl::true_`]
+ [Call the member function `attr.clear()` for the
+ passed attribute instance.]]
+ [[`boost::optional<Attrib>`] [Clear the `optional` instance and leave it
+ uninitialized.]]
+ [[`boost::variant<T1, T2, ...>`][Invoke the `clear_value` customization
+ point for the currently held value.]]
+ [[`fusion::tuple<T1, T2, ...>`][Invoke the `clear_value` customization
+ point for all elements of the tuple.]]
+ [[__unused_type__] [Do nothing.]]
+]
+
+[heading When to Implement]
+
+The customization point `clear_value` needs to be implemented for a
+specific type whenever this type is to be used as an attribute to be stored
+into a STL container and if the type cannot be re-initialized using one of the
+specializations listed above. Examples for this might be types not being default
+constructible or container types not exposing a member function `clear()`.
+
+[heading Example]
+
+TBD
+
+[endsect]
+
+[/////////////////////////////////////////////////////////////////////////////]
+[section:extract_from Extract an Attribute Value to Generate Output (Karma)]
+
+[heading extract_from]
+
+Before generating output for an value this value needs to extracted from the
+attribute instance provided by the user. The customization point
+`extract_from` is utilized to adapt this extraction for any data type possibly
+used to store the values to output.
+
+Short description here...
+
+[heading Module Headers]
+
+ #include <boost/spirit/home/karma/detail/extract_from.hpp>
+
+Also, see __include_structure__.
+
+[note This header file does not need to be included directly by any user
+ program as it is normally included by other Spirit header files relying
+ on its content.]
+
+[heading Namespace]
+
+[table
+ [[Name]]
+ [[`boost::spirit::traits`]]
+]
+
+[heading Synopsis]
+
+ template <typename Attrib, typename Enable>
+ struct extract_from_attribute;
+
+[heading Template parameters]
+
+[table
+ [[Parameter] [Description] [Default]]
+ [[`Attrib`] [The type, `Attrib` of the attribute to be used to
+ generate output from.] [none]]
+ [[`Enable`] [Helper template parameter usable to selectively
+ enable or disable certain specializations
+ of `clear_value` utilizing SFINAE (i.e.
+ `boost::enable_if` or `boost::disable_if`).] [`void`]]
+]
+
+[heading Notation]
+
+[variablelist Notation
+ [[`Attrib`] [A type to be used to generate output from.]]
+ [[`attr`] [A attribute instance of type `Attrib`.]]
+]
+
+[heading Expression Semantics]
+
+Semantics of an expression is defined only where it differs from, or is not
+defined in _concept-of_XXX_.
+
+[table
+ [[Expression] [Semantics]]
+ [[
+``extract_from_attribute<Attrib>::call(attr)``] [Extract the value to generate
+ output from and return it to the caller.]]
+]
+
+[heading Predefined Specializations]
+
+__spirit__ predefines specializations of this customization point for
+several types. The following table lists those types together with the types
+exposed and the corresponding semantics:
+
+[table
+ [[Template Parameters] [Value]]
+ [[`Attrib`] [The exposed typedef `type` is defined to
+ `Attrib const&`. The function `call()` returns
+ the argument by reference without change.]]
+ [[`boost::optional<Attrib>`] [The exposed typedef `type` is defined to
+ `Attrib const&`. The function `call()` returns
+ the value held by the `optional<>` argument
+ by reference without change.]]
+ [[`boost::reference_wrapper<Attrib>`]
+ [The exposed typedef `type` is defined to
+ `Attrib const&`. The function `call()` returns
+ the value held by the `reference_wrapper<>`
+ argument by reference without change.]]
+ [[__unused_type__] [The exposed typedef `type` is defined to
+ __unused_type__. The function `call()` returns
+ an instance of __unused_type__.]]
+]
+
+[heading When to implement]
+
+The customization point `extract_from_attribute` needs to be implemented for a
+specific type whenever the default implementation as shown above is not
+applicable. Examples for this could be that the type to be extracted is
+different from `Attrib` and is not copy constructible.
+
+[heading Example]
+
+TBD
+
+[endsect]
+
+[/////////////////////////////////////////////////////////////////////////////]
+[/ section:iterate Extract Attribute Values to Generate Output from a Container (Karma)]
+
+[/ container_iterator]
+[/ endsect]
+
+[/ begin_container]
+[/ endsect]
+
+[/ end_container]
+[/ endsect]
+
+[/ next_iterator]
+[/ endsect]
+
+[/ deref_iterator]
+[/ endsect]
+
+[/ compare_iterators]
+[/ endsect]
+
+[/ endsect]
+
+[endsect]
+

Added: trunk/libs/spirit/doc/advanced/indepth.qbk
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/advanced/indepth.qbk 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,279 @@
+[/==============================================================================
+ Copyright (C) 2001-2009 Joel de Guzman
+ Copyright (C) 2001-2009 Hartmut Kaiser
+ Copyright (C) 2009 Andreas Haberstroh?
+
+ 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:indepth In Depth]
+
+[section:parsers_indepth Parsers in Depth]
+
+This section is not for the faint of heart. In here, are distilled the inner
+workings of __qi__ parsers, using real code from the __spirit__ library as
+examples. On the other hand, here is no reason to fear reading on, though.
+We tried to explain things step by step while highlighting the important
+insights.
+
+The `__parser_concept__` class is the base class for all parsers.
+
+[import ../../../../boost/spirit/home/qi/parser.hpp]
+[parser_base_parser]
+
+The `__parser_concept__` class does not really know how to parse anything but
+instead relies on the template parameter `Derived` to do the actual parsing.
+This technique is known as the "Curiously Recurring Template Pattern" in template
+meta-programming circles. This inheritance strategy gives us the power of
+polymorphism without the virtual function overhead. In essence this is a way to
+implement compile time polymorphism.
+
+The Derived parsers, `__primitive_parser_concept__`, `__unary_parser_concept__`,
+`__binary_parser_concept__` and `__nary_parser_concept__` provide the necessary
+facilities for parser detection, introspection, transformation and visitation.
+
+Derived parsers must support the following:
+
+[variablelist bool parse(f, l, context, skip, attr)
+ [[`f`, `l`] [first/last iterator pair]]
+ [[`context`] [enclosing rule context (can be unused_type)]]
+ [[`skip`] [skipper (can be unused_type)]]
+ [[`attr`] [attribute (can be unused_type)]]
+]
+
+The /parse/ is the main parser entry point. /skipper/ can be an `unused_type`.
+It's a type used every where in __spirit__ to signify "don't-care". There
+is an overload for /skip/ for `unused_type` that is simply a no-op.
+That way, we do not have to write multiple parse functions for
+phrase and character level parsing.
+
+Here are the basic rules for parsing:
+
+* The parser returns `true` if successful, `false` otherwise.
+* If successful, `first` is incremented N number of times, where N
+ is the number of characters parsed. N can be zero --an empty (epsilon)
+ match.
+* If successful, the parsed attribute is assigned to /attr/
+* If unsuccessful, `first` is reset to its position before entering
+ the parser function. /attr/ is untouched.
+
+[variablelist void what(context)
+ [[`context`] [enclosing rule context (can be `unused_type`)]]
+]
+
+The /what/ function should be obvious. It provides some information
+about ["what] the parser is. It is used as a debugging aid, for
+example.
+
+[variablelist P::template attribute<context>::type
+ [[`P`] [a parser type]]
+ [[`context`] [A context type (can be unused_type)]]
+]
+
+The /attribute/ metafunction returns the expected attribute type
+of the parser. In some cases, this is context dependent.
+
+In this section, we will dissect two parser types:
+
+[variablelist Parsers
+ [[`__primitive_parser_concept__`] [A parser for primitive data (e.g. integer parsing).]]
+ [[`__unary_parser_concept__`] [A parser that has single subject (e.g. kleene star).]]
+]
+
+[/------------------------------------------------------------------------------]
+[heading Primitive Parsers]
+
+For our disection study, we will use a __spirit__ primitive, the `int_parser`
+in the boost::spirit::qi namespace.
+
+[import ../../../../boost/spirit/home/qi/numeric/int.hpp]
+[primitive_parsers_int]
+
+The `int_parser` is derived from a `__primitive_parser_concept__<Derived>`, which
+in turn derives from `parser<Derived>`. Therefore, it supports the following
+requirements:
+
+* The `parse` member function
+* The `what` member function
+* The nested `attribute` metafunction
+
+/parse/ is the main entry point. For primitive parsers, our first thing to do is
+call:
+
+``
+qi::skip(first, last, skipper);
+``
+
+to do a pre-skip. After pre-skipping, the parser proceeds to do its thing. The
+actual parsing code is placed in `extract_int<T, Radix, MinDigits,
+MaxDigits>::call(first, last, attr);`
+
+This simple no-frills protocol is one of the reasons why __spirit__ is
+fast. If you know the internals of __classic__ and perhaps
+even wrote some parsers with it, this simple __spirit__ mechanism
+is a joy to work with. There are no scanners and all that crap.
+
+The /what/ function just tells us that it is an integer parser. Simple.
+
+The /attribute/ metafunction returns the T template parameter. We associate the
+`int_parser` to some placeholders for `short_`, `int_`, `long_` and `long_long`
+types. But, first, we enable these placeholders in namespace boost::spirit:
+
+[primitive_parsers_enable_short_]
+[primitive_parsers_enable_int_]
+[primitive_parsers_enable_long_]
+[primitive_parsers_enable_long_long_]
+
+Notice that `int_parser` is placed in the namespace boost::spirit::qi
+while these /enablers/ are in namespace boost::spirit. The reason is
+that these placeholders are shared by other __spirit__ /domains/. __qi__,
+the parser is one domain. __karma__, the generator is another domain.
+Other parser technologies may be developed and placed in yet
+another domain. Yet, all these can potentially share the same
+placeholders for interoperability. The interpretation of these
+placeholders is domain-specific.
+
+Now that we enabled the placeholders, we have to write generators
+for them. The make_xxx stuff (in boost::spirit::qi namespace):
+
+[primitive_parsers_make_int]
+
+This one above is our main generator. It's a simple function object
+with 2 (unused) arguments. These arguments are
+
+# The actual terminal value obtained by proto. In this case, either
+ a short_, int_, long_ or long_long. We don't care about this.
+
+# Modifiers. We also don't care about this. This allows directives
+ such as `no_case[p]` to pass information to inner parser nodes.
+ We'll see how that works later.
+
+Now:
+
+[primitive_parsers_short_]
+[primitive_parsers_int_]
+[primitive_parsers_long_]
+[primitive_parsers_long_long_]
+
+These, specialize `qi:make_primitive` for specific tags. They all
+inherit from `make_int` which does the actual work.
+
+[heading Composite Parsers]
+
+Let me present the kleene star (also in namespace spirit::qi):
+
+[import ../../../../boost/spirit/home/qi/operator/kleene.hpp]
+[composite_parsers_kleene]
+
+Looks similar in form to its primitive cousin, the `int_parser`. And, again, it
+has the same basic ingredients required by `Derived`.
+
+* The nested attribute metafunction
+* The parse member function
+* The what member function
+
+kleene is a composite parser. It is a parser that composes another
+parser, its ["subject]. It is a `__unary_parser_concept__` and subclasses from it.
+Like `__primitive_parser_concept__`, `__unary_parser_concept__<Derived>` derives
+from `parser<Derived>`.
+
+unary_parser<Derived>, has these expression requirements on Derived:
+
+* p.subject -> subject parser ( ['p] is a __unary_parser_concept__ parser.)
+* P::subject_type -> subject parser type ( ['P] is a __unary_parser_concept__ type.)
+
+/parse/ is the main parser entry point. Since this is not a primitive
+parser, we do not need to call `qi::skip(first, last, skipper)`. The
+['subject], if it is a primitive, will do the pre-skip. If if it is
+another composite parser, it will eventually call a primitive parser
+somewhere down the line which will do the pre-skip. This makes it a
+lot more efficient than __classic__. __classic__ puts the skipping business
+into the so-called "scanner" which blindly attempts a pre-skip
+everytime we increment the iterator.
+
+What is the /attribute/ of the kleene? In general, it is a `std::vector<T>`
+where `T` is the attribute of the subject. There is a special case though.
+If `T` is an `unused_type`, then the attribute of kleene is also `unused_type`.
+`traits::build_std_vector` takes care of that minor detail.
+
+So, let's parse. First, we need to provide a local attribute of for
+the subject:
+
+``
+typename traits::attribute_of<Subject, Context>::type val;
+``
+
+`traits::attribute_of<Subject, Context>` simply calls the subject's
+`struct attribute<Context>` nested metafunction.
+
+/val/ starts out default initialized. This val is the one we'll
+pass to the subject's parse function.
+
+The kleene repeats indefinitely while the subject parser is
+successful. On each successful parse, we `push_back` the parsed
+attribute to the kleen's attribute, which is expected to be,
+at the very least, compatible with a `std::vector`. In other words,
+although we say that we want our attribute to be a `std::vector`,
+we try to be more lenient than that. The caller of kleene's
+parse may pass a different attribute type. For as long as it is
+also a conforming STL container with `push_back`, we are ok. Here
+is the kleene loop:
+
+``
+while (subject.parse(first, last, context, skipper, val))
+{
+ // push the parsed value into our attribute
+ traits::push_back(attr, val);
+ traits::clear(val);
+}
+return true;
+``
+Take note that we didn't call attr.push_back(val). Instead, we
+called a Spirit provided function:
+
+``
+traits::push_back(attr, val);
+``
+
+This is a recurring pattern. The reason why we do it this way is
+because attr [*can] be `unused_type`. `traits::push_back` takes care
+of that detail. The overload for unused_type is a no-op. Now, you
+can imagine why __spirit__ is fast! The parsers are so simple and the
+generated code is as efficient as a hand rolled loop. All these
+parser compositions and recursive parse invocations are extensively
+inlined by a modern C++ compiler. In the end, you get a tight loop
+when you use the kleene. No more excess baggage. If the attribute
+is unused, then there is no code generated for that. That's how
+__spirit__ is designed.
+
+The /what/ function simply wraps the output of the subject in a
+"kleene[" ... "]".
+
+Ok, now, like the `int_parser`, we have to hook our parser to the
+_qi_ engine. Here's how we do it:
+
+First, we enable the prefix star operator. In proto, it's called
+the "dereference":
+
+[composite_parsers_kleene_enable_]
+
+This is done in namespace `boost::spirit` like its friend, the `use_terminal`
+specialization for our `int_parser`. Obviously, we use /use_operator/ to
+enable the dereference for the qi::domain.
+
+Then, we need to write our generator (in namespace qi):
+
+[composite_parsers_kleene_generator]
+
+This essentially says; for all expressions of the form: `*p`, to build a kleene
+parser. Elements is a __fusion__ sequence. For the kleene, which is a unary
+operator, expect only one element in the sequence. That element is the subject
+of the kleene.
+
+We still don't care about the Modifiers. We'll see how the modifiers is
+all about when we get to deep directives.
+
+[endsect]
+
+[endsect]

Modified: trunk/libs/spirit/doc/html/index.html
==============================================================================
--- trunk/libs/spirit/doc/html/index.html (original)
+++ trunk/libs/spirit/doc/html/index.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -3,7 +3,7 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Spirit 2.1</title>
 <link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="index.html" title="Spirit 2.1">
 <link rel="next" href="spirit/preface.html" title="Preface">
 </head>
@@ -18,7 +18,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav"><a accesskey="n" href="spirit/preface.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
-<div class="article" title="Spirit 2.1">
+<div class="article" lang="en">
 <div class="titlepage">
 <div>
 <div><h2 class="title">
@@ -33,13 +33,12 @@
 </div></div>
 <div><p class="copyright">Copyright © 2001-2009 Joel
       de Guzman, Hartmut Kaiser</p></div>
-<div><div class="legalnotice" title="Legal Notice">
-<a name="id573782"></a><p>
+<div><div class="legalnotice"><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></div>
+ </p></div></div>
 </div>
+<div></div>
 <hr>
 </div>
 <div class="toc">
@@ -66,25 +65,6 @@
 <dt><span class="section"><a href="spirit/abstracts/attributes/nonterminal_attributes.html">
         Attributes of Rules and Grammars</a></span></dt>
 </dl></dd>
-<dt><span class="section"> In Depth</span></dt>
-<dd><dl><dt><span class="section"><a href="spirit/abstracts/indepth/parsers_indepth.html"> Parsers
- in Depth</a></span></dt></dl></dd>
-<dt><span class="section"><a href="spirit/abstracts/customize.html"> Customization of Spirit's
- Attribute Handling</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="spirit/abstracts/customize/is_container.html"> Determine
- if a Type Should be Treated as a Container (Qi and Karma)</a></span></dt>
-<dt><span class="section"><a href="spirit/abstracts/customize/transform.html"> Transform an
- Attribute to a Different Type (Qi and Karma)</a></span></dt>
-<dt><span class="section"><a href="spirit/abstracts/customize/assign_to.html"> Store a Parsed
- Attribute Value (Qi)</a></span></dt>
-<dt><span class="section"><a href="spirit/abstracts/customize/store_value.html"> Store Parsed
- Attribute Values into a Container (Qi)</a></span></dt>
-<dt><span class="section"><a href="spirit/abstracts/customize/clear_value.html"> Re-Initialize
- an Attribute Value before Parsing (Qi)</a></span></dt>
-<dt><span class="section"><a href="spirit/abstracts/customize/extract_from.html"> Extract an
- Attribute Value to Generate Output (Karma)</a></span></dt>
-</dl></dd>
 </dl></dd>
 <dt><span class="section"> Qi - Writing Parsers</span></dt>
 <dd><dl>
@@ -231,6 +211,28 @@
 <dt><span class="section"> TokenDef Class</span></dt>
 </dl></dd>
 </dl></dd>
+<dt><span class="section">Advanced</span></dt>
+<dd><dl>
+<dt><span class="section"> In Depth</span></dt>
+<dd><dl><dt><span class="section"><a href="spirit/advanced/indepth/parsers_indepth.html"> Parsers in
+ Depth</a></span></dt></dl></dd>
+<dt><span class="section"><a href="spirit/advanced/customize.html"> Customization of Spirit's
+ Attribute Handling</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="spirit/advanced/customize/is_container.html"> Determine
+ if a Type Should be Treated as a Container (Qi and Karma)</a></span></dt>
+<dt><span class="section"><a href="spirit/advanced/customize/transform.html"> Transform an
+ Attribute to a Different Type (Qi and Karma)</a></span></dt>
+<dt><span class="section"><a href="spirit/advanced/customize/assign_to.html"> Store a Parsed
+ Attribute Value (Qi)</a></span></dt>
+<dt><span class="section"><a href="spirit/advanced/customize/store_value.html"> Store Parsed
+ Attribute Values into a Container (Qi)</a></span></dt>
+<dt><span class="section"><a href="spirit/advanced/customize/clear_value.html"> Re-Initialize
+ an Attribute Value before Parsing (Qi)</a></span></dt>
+<dt><span class="section"><a href="spirit/advanced/customize/extract_from.html"> Extract an
+ Attribute Value to Generate Output (Karma)</a></span></dt>
+</dl></dd>
+</dl></dd>
 <dt><span class="section"> Supporting libraries</span></dt>
 <dd><dl><dt><span class="section"> The multi pass iterator</span></dt></dl></dd>
 <dt><span class="section"> Spirit FAQ</span></dt>
@@ -252,7 +254,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: October 11, 2009 at 12:34:42 GMT</small></p></td>
+<td align="left"><p><small>Last revised: October 13, 2009 at 03:00:39 GMT</small></p></td>
 <td align="right"><div class="copyright-footer"></div></td>
 </tr></table>
 <hr>

Modified: trunk/libs/spirit/doc/html/spirit/abstracts.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/abstracts.html (original)
+++ trunk/libs/spirit/doc/html/spirit/abstracts.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -3,10 +3,10 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Abstracts</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../index.html" title="Spirit 2.1">
 <link rel="up" href="../index.html" title="Spirit 2.1">
-<link rel="prev" href="structure/include.html" title="Include">
+<link rel="previous" href="structure/include.html" title="Include">
 <link rel="next" href="abstracts/syntax_diagram.html" title="Syntax Diagram">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -22,10 +22,13 @@
 <div class="spirit-nav">
 <a accesskey="p" href="structure/include.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="abstracts/syntax_diagram.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Abstracts">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="spirit.abstracts"></a><a class="link" href="abstracts.html" title="Abstracts">Abstracts</a>
-</h2></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="spirit.abstracts"></a>Abstracts
+</h2></div></div>
+<div></div>
+</div>
 <div class="toc"><dl>
 <dt><span class="section">Syntax Diagram</span></dt>
 <dt><span class="section"><a href="abstracts/parsing_expression_grammar.html">Parsing
@@ -41,25 +44,6 @@
 <dt><span class="section"><a href="abstracts/attributes/nonterminal_attributes.html">
         Attributes of Rules and Grammars</a></span></dt>
 </dl></dd>
-<dt><span class="section"> In Depth</span></dt>
-<dd><dl><dt><span class="section"><a href="abstracts/indepth/parsers_indepth.html"> Parsers
- in Depth</a></span></dt></dl></dd>
-<dt><span class="section"><a href="abstracts/customize.html"> Customization of Spirit's
- Attribute Handling</a></span></dt>
-<dd><dl>
-<dt><span class="section"><a href="abstracts/customize/is_container.html"> Determine
- if a Type Should be Treated as a Container (Qi and Karma)</a></span></dt>
-<dt><span class="section"><a href="abstracts/customize/transform.html"> Transform an
- Attribute to a Different Type (Qi and Karma)</a></span></dt>
-<dt><span class="section"><a href="abstracts/customize/assign_to.html"> Store a Parsed
- Attribute Value (Qi)</a></span></dt>
-<dt><span class="section"><a href="abstracts/customize/store_value.html"> Store Parsed
- Attribute Values into a Container (Qi)</a></span></dt>
-<dt><span class="section"><a href="abstracts/customize/clear_value.html"> Re-Initialize
- an Attribute Value before Parsing (Qi)</a></span></dt>
-<dt><span class="section"><a href="abstracts/customize/extract_from.html"> Extract an
- Attribute Value to Generate Output (Karma)</a></span></dt>
-</dl></dd>
 </dl></div>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/spirit/doc/html/spirit/abstracts/attributes.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/abstracts/attributes.html (original)
+++ trunk/libs/spirit/doc/html/spirit/abstracts/attributes.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,15 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Attributes</title>
+<title> Attributes</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../index.html" title="Spirit 2.1">
 <link rel="up" href="../abstracts.html" title="Abstracts">
-<link rel="prev" href="parsing_expression_grammar.html" title="Parsing Expression Grammar">
-<link rel="next" href="attributes/primitive_attributes.html" title="Attributes of Primitive Components">
+<link rel="previous" href="parsing_expression_grammar.html" title="Parsing
+ Expression Grammar">
+<link rel="next" href="attributes/primitive_attributes.html" title="
+ Attributes of Primitive Components">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,10 +24,13 @@
 <div class="spirit-nav">
 <a accesskey="p" href="parsing_expression_grammar.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.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="attributes/primitive_attributes.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Attributes">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="spirit.abstracts.attributes"></a><a class="link" href="attributes.html" title="Attributes"> Attributes</a>
-</h3></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h3 class="title">
+<a name="spirit.abstracts.attributes"></a> Attributes
+</h3></div></div>
+<div></div>
+</div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="attributes/primitive_attributes.html">
         Attributes of Primitive Components</a></span></dt>

Modified: trunk/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html (original)
+++ trunk/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,16 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Attributes of Compound Components</title>
+<title> Attributes
+ of Compound Components</title>
 <link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../index.html" title="Spirit 2.1">
-<link rel="up" href="../attributes.html" title="Attributes">
-<link rel="prev" href="primitive_attributes.html" title="Attributes of Primitive Components">
-<link rel="next" href="more_sompound_attributes.html" title="More About Attributes of Compound Components">
+<link rel="up" href="../attributes.html" title=" Attributes">
+<link rel="previous" href="primitive_attributes.html" title="
+ Attributes of Primitive Components">
+<link rel="next" href="more_sompound_attributes.html" title="
+ More About Attributes of Compound Components">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,11 +25,15 @@
 <div class="spirit-nav">
 <a accesskey="p" href="primitive_attributes.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../attributes.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="more_sompound_attributes.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Attributes of Compound Components">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.abstracts.attributes.compound_attributes"></a><a class="link" href="compound_attributes.html" title="Attributes of Compound Components"> Attributes
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.abstracts.attributes.compound_attributes"></a><a href="compound_attributes.html" title=" Attributes
+ of Compound Components"> Attributes
         of Compound Components</a>
-</h4></div></div></div>
+</h4></div></div>
+<div></div>
+</div>
 <p>
           <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span> implement
           well defined attribute type propagation rules for all compound generators,
@@ -39,51 +46,39 @@
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                   Library
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   Sequence attribute propagation rule
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
+<td><p>
                   Qi
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
                   <span class="identifier">A</span><span class="special">,</span>
                   <span class="identifier">b</span><span class="special">:</span>
                   <span class="identifier">B</span> <span class="special">--&gt;</span>
                   <span class="special">(</span><span class="identifier">a</span>
- <span class="special">&gt;&gt;</span> <span class="identifier">b</span><span class="special">):</span> <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>
- </td>
+ <span class="special">&gt;&gt;</span> <span class="identifier">b</span><span class="special">):</span> <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></tt>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   Karma
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
                   <span class="identifier">A</span><span class="special">,</span>
                   <span class="identifier">b</span><span class="special">:</span>
                   <span class="identifier">B</span> <span class="special">--&gt;</span>
                   <span class="special">(</span><span class="identifier">a</span>
- <span class="special">&lt;&lt;</span> <span class="identifier">b</span><span class="special">):</span> <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>
- </td>
+ <span class="special">&lt;&lt;</span> <span class="identifier">b</span><span class="special">):</span> <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></tt>
+ </p></td>
 </tr>
 </tbody>
 </table></div>
@@ -94,36 +89,36 @@
 <p>
             </p>
 <p>
- Given <code class="computeroutput"><span class="identifier">a</span></code> and <code class="computeroutput"><span class="identifier">b</span></code> are parsers (generators), and
- <code class="computeroutput"><span class="identifier">A</span></code> is the attribute
- type of <code class="computeroutput"><span class="identifier">a</span></code>, and <code class="computeroutput"><span class="identifier">B</span></code> is the attribute type of <code class="computeroutput"><span class="identifier">b</span></code>, then the attribute type of <code class="computeroutput"><span class="identifier">a</span> <span class="special">&gt;&gt;</span>
- <span class="identifier">b</span></code> (<code class="computeroutput"><span class="identifier">a</span>
- <span class="special">&lt;&lt;</span> <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>.
+ Given <tt class="computeroutput"><span class="identifier">a</span></tt> and <tt class="computeroutput"><span class="identifier">b</span></tt> are parsers (generators), and
+ <tt class="computeroutput"><span class="identifier">A</span></tt> is the attribute
+ type of <tt class="computeroutput"><span class="identifier">a</span></tt>, and <tt class="computeroutput"><span class="identifier">B</span></tt> is the attribute type of <tt class="computeroutput"><span class="identifier">b</span></tt>, then the attribute type of <tt class="computeroutput"><span class="identifier">a</span> <span class="special">&gt;&gt;</span>
+ <span class="identifier">b</span></tt> (<tt class="computeroutput"><span class="identifier">a</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">b</span></tt>)
+ will be <tt 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></tt>.
             </p>
 <p>
           </p>
 </blockquote></div>
-<div class="note" title="Note"><table border="0" summary="Note">
+<div class="note"><table border="0" summary="Note">
 <tr>
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td align="left" valign="top"><p>
- The notation <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>
+<tr><td colspan="2" align="left" valign="top"><p>
+ The notation <tt 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></tt>
             is used as a placeholder expression for any fusion sequence holding the
- types A and B, such as <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><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> or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</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> (for more information see Boost.Fusion).
+ types A and B, such as <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><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></tt> or <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</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></tt> (for more information see Boost.Fusion).
           </p></td></tr>
 </table></div>
 <p>
           As you can see, in order for a type to be compatible with the attribute
           type of a compound expression it has to
         </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
+<div class="itemizedlist"><ul type="disc">
+<li>
             either be convertible to the attribute type,
           </li>
-<li class="listitem">
+<li>
             or it has to expose certain functionalities, i.e. it needs to conform
             to a concept compatible with the component.
           </li>
@@ -131,15 +126,17 @@
 <p>
           Each compound component implements its own set of attribute propagation
           rules. For a full list of how the different compound generators consume
- attributes see the sections <a class="link" href="../../qi/quick_reference/compound_attribute_rules.html" title="Compound Attribute Rules">Parser
- Compound Attribute Rules</a> and <a class="link" href="../../karma/quick_reference/compound_attribute_rules.html" title="Compound Attribute Rules">Generator
+ attributes see the sections <a href="../../qi/quick_reference/compound_attribute_rules.html" title="Compound
+ Attribute Rules">Parser
+ Compound Attribute Rules</a> and <a href="../../karma/quick_reference/compound_attribute_rules.html" title="Compound
+ Attribute Rules">Generator
           Compound Attribute Rules</a>.
         </p>
-<a name="spirit.abstracts.attributes.compound_attributes.the_attribute_of_sequence_parsers_and_generators"></a><h6>
-<a name="id585605"></a>
- <a class="link" href="compound_attributes.html#spirit.abstracts.attributes.compound_attributes.the_attribute_of_sequence_parsers_and_generators">The
+<a name="spirit.abstracts.attributes.compound_attributes.the_attribute_of_sequence_parsers_and_generators"></a><h5>
+<a name="id417507"></a>
+ <a href="compound_attributes.html#spirit.abstracts.attributes.compound_attributes.the_attribute_of_sequence_parsers_and_generators">The
           Attribute of Sequence Parsers and Generators</a>
- </h6>
+ </h5>
 <p>
           Sequences require an attribute type to expose the concept of a fusion sequence,
           where all elements of that fusion sequence have to be compatible with the
@@ -151,54 +148,42 @@
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                   Library
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   Sequence expression
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
+<td><p>
                   Qi
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">double_</span> <span class="special">&gt;&gt;</span>
- <span class="identifier">double_</span></code>
- </p>
- </td>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">double_</span> <span class="special">&gt;&gt;</span>
+ <span class="identifier">double_</span></tt>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   Karma
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">double_</span> <span class="special">&lt;&lt;</span>
- <span class="identifier">double_</span></code>
- </p>
- </td>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">double_</span> <span class="special">&lt;&lt;</span>
+ <span class="identifier">double_</span></tt>
+ </p></td>
 </tr>
 </tbody>
 </table></div>
 <p>
           is compatible any fusion sequence holding two types, where both types have
- to be compatible to <code class="computeroutput"><span class="keyword">double</span></code>.
+ to be compatible to <tt class="computeroutput"><span class="keyword">double</span></tt>.
           The first element of the fusion sequence has to be compatible with the
- attribute of the first <code class="computeroutput"><span class="identifier">double_</span></code>,
+ attribute of the first <tt class="computeroutput"><span class="identifier">double_</span></tt>,
           and the second element of the fusion sequence has to be compatible with
- the attribute of the second <code class="computeroutput"><span class="identifier">double_</span></code>.
- If we assume to have an instance of a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&gt;</span></code>, we can directly use the expressions
+ the attribute of the second <tt class="computeroutput"><span class="identifier">double_</span></tt>.
+ If we assume to have an instance of a <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">double</span><span class="special">&gt;</span></tt>, we can directly use the expressions
           above to do both, parse input to fill the attribute:
         </p>
 <pre class="programlisting"><span class="comment">// the following parses "1.0 2.0" into a pair of double
@@ -221,23 +206,23 @@
 </span> <span class="identifier">p</span><span class="special">);</span> <span class="comment">// data to use as the attribute
 </span></pre>
 <p>
- (where the <code class="computeroutput"><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span></code> generator is used as the delimiter,
+ (where the <tt class="computeroutput"><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">space</span></tt> generator is used as the delimiter,
           allowing to automatically skip/insert delimiting spaces in between all
           primitives).
         </p>
-<div class="tip" title="Tip"><table border="0" summary="Tip">
+<div class="tip"><table border="0" summary="Tip">
 <tr>
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../images/tip.png"></td>
 <th align="left">Tip</th>
 </tr>
-<tr><td align="left" valign="top">
+<tr><td colspan="2" align="left" valign="top">
 <p>
- <span class="bold"><strong>For sequences only:</strong></span> <span class="emphasis"><em>Spirit.Qi</em></span>
+ <span class="bold"><b>For sequences only:</b></span> <span class="emphasis"><em>Spirit.Qi</em></span>
             and <span class="emphasis"><em>Spirit.Karma</em></span> expose a set of API functions usable
- mainly with sequences. Very much like the functions of the <code class="computeroutput"><span class="identifier">scanf</span></code> and <code class="computeroutput"><span class="identifier">printf</span></code>
+ mainly with sequences. Very much like the functions of the <tt class="computeroutput"><span class="identifier">scanf</span></tt> and <tt class="computeroutput"><span class="identifier">printf</span></tt>
             families these functions allow to pass the attributes for each of the
             elements of the sequence separately. Using the corresponding overload
- of <span class="emphasis"><em>Qi's</em></span> parse or <span class="emphasis"><em>Karma's</em></span> <code class="computeroutput"><span class="identifier">generate</span><span class="special">()</span></code>
+ of <span class="emphasis"><em>Qi's</em></span> parse or <span class="emphasis"><em>Karma's</em></span> <tt class="computeroutput"><span class="identifier">generate</span><span class="special">()</span></tt>
             the expression above could be rewritten as:
 </p>
 <pre class="programlisting"><span class="keyword">double</span> <span class="identifier">d1</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">,</span> <span class="identifier">d2</span> <span class="special">=</span> <span class="number">0.0</span><span class="special">;</span>
@@ -245,16 +230,16 @@
 <span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">double_</span> <span class="special">&lt;&lt;</span> <span class="identifier">double_</span><span class="special">,</span> <span class="identifier">space</span><span class="special">,</span> <span class="identifier">d1</span><span class="special">,</span> <span class="identifier">d2</span><span class="special">);</span>
 </pre>
 <p>
- where the first attribute is used for the first <code class="computeroutput"><span class="identifier">double_</span></code>,
- and the second attribute is used for the second <code class="computeroutput"><span class="identifier">double_</span></code>.
+ where the first attribute is used for the first <tt class="computeroutput"><span class="identifier">double_</span></tt>,
+ and the second attribute is used for the second <tt class="computeroutput"><span class="identifier">double_</span></tt>.
           </p>
 </td></tr>
 </table></div>
-<a name="spirit.abstracts.attributes.compound_attributes.the_attribute_of_alternative_parsers_and_generators"></a><h6>
-<a name="id586388"></a>
- <a class="link" href="compound_attributes.html#spirit.abstracts.attributes.compound_attributes.the_attribute_of_alternative_parsers_and_generators">The
+<a name="spirit.abstracts.attributes.compound_attributes.the_attribute_of_alternative_parsers_and_generators"></a><h5>
+<a name="id418548"></a>
+ <a href="compound_attributes.html#spirit.abstracts.attributes.compound_attributes.the_attribute_of_alternative_parsers_and_generators">The
           Attribute of Alternative Parsers and Generators</a>
- </h6>
+ </h5>
 <p>
           Alternative parsers and generators are all about - well - alternatives.
           In order to store possibly different result (attribute) types from the

Modified: trunk/libs/spirit/doc/html/spirit/abstracts/attributes/more_sompound_attributes.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/abstracts/attributes/more_sompound_attributes.html (original)
+++ trunk/libs/spirit/doc/html/spirit/abstracts/attributes/more_sompound_attributes.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,16 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>More About Attributes of Compound Components</title>
+<title>
+ More About Attributes of Compound Components</title>
 <link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../index.html" title="Spirit 2.1">
-<link rel="up" href="../attributes.html" title="Attributes">
-<link rel="prev" href="compound_attributes.html" title="Attributes of Compound Components">
-<link rel="next" href="nonterminal_attributes.html" title="Attributes of Rules and Grammars">
+<link rel="up" href="../attributes.html" title=" Attributes">
+<link rel="previous" href="compound_attributes.html" title=" Attributes
+ of Compound Components">
+<link rel="next" href="nonterminal_attributes.html" title="
+ Attributes of Rules and Grammars">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,17 +25,21 @@
 <div class="spirit-nav">
 <a accesskey="p" href="compound_attributes.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../attributes.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="nonterminal_attributes.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="More About Attributes of Compound Components">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.abstracts.attributes.more_sompound_attributes"></a><a class="link" href="more_sompound_attributes.html" title="More About Attributes of Compound Components">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.abstracts.attributes.more_sompound_attributes"></a><a href="more_sompound_attributes.html" title="
+ More About Attributes of Compound Components">
         More About Attributes of Compound Components</a>
-</h4></div></div></div>
+</h4></div></div>
+<div></div>
+</div>
 <p>
           While parsing input or generating output it is often desirable to combine
           some constant elements with variable parts. For instance, let us look at
           the example of parsing or formatting a complex number, which is written
- as <code class="computeroutput"><span class="special">(</span><span class="identifier">real</span><span class="special">,</span> <span class="identifier">imag</span><span class="special">)</span></code>, where <code class="computeroutput"><span class="identifier">real</span></code>
- and <code class="computeroutput"><span class="identifier">imag</span> </code> are the variables
+ as <tt class="computeroutput"><span class="special">(</span><span class="identifier">real</span><span class="special">,</span> <span class="identifier">imag</span><span class="special">)</span></tt>, where <tt class="computeroutput"><span class="identifier">real</span></tt>
+ and <tt class="computeroutput"><span class="identifier">imag</span> </tt> are the variables
           representing the real and imaginary parts of our complex number. This can
           be achieved by writing:
         </p>
@@ -42,56 +49,44 @@
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                   Library
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   Sequence expression
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
+<td><p>
                   Qi
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="char">'('</span> <span class="special">&lt;&lt;</span>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="char">'('</span> <span class="special">&lt;&lt;</span>
                   <span class="identifier">double_</span> <span class="special">&gt;&gt;</span>
                   <span class="string">", "</span> <span class="special">&lt;&lt;</span>
                   <span class="identifier">double_</span> <span class="special">&gt;&gt;</span>
- <span class="char">')'</span></code>
- </p>
- </td>
+ <span class="char">')'</span></tt>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   Karma
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="char">'('</span> <span class="special">&lt;&lt;</span>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="char">'('</span> <span class="special">&lt;&lt;</span>
                   <span class="identifier">double_</span> <span class="special">&lt;&lt;</span>
                   <span class="string">", "</span> <span class="special">&lt;&lt;</span>
                   <span class="identifier">double_</span> <span class="special">&lt;&lt;</span>
- <span class="char">')'</span></code>
- </p>
- </td>
+ <span class="char">')'</span></tt>
+ </p></td>
 </tr>
 </tbody>
 </table></div>
 <p>
- Fortunately, literals (such as <code class="computeroutput"><span class="char">'('</span></code>
- and <code class="computeroutput"><span class="string">", "</span></code>) do <span class="emphasis"><em>not</em></span>
- expose any attribute (well actually, they do expose the special type <code class="computeroutput"><span class="identifier">unused_type</span></code>, but in this context <code class="computeroutput"><span class="identifier">unused_type</span></code> is interpreted as if the
+ Fortunately, literals (such as <tt class="computeroutput"><span class="char">'('</span></tt>
+ and <tt class="computeroutput"><span class="string">", "</span></tt>) do <span class="emphasis"><em>not</em></span>
+ expose any attribute (well actually, they do expose the special type <tt class="computeroutput"><span class="identifier">unused_type</span></tt>, but in this context <tt class="computeroutput"><span class="identifier">unused_type</span></tt> is interpreted as if the
           component does not expose any attribute at all). It is very important to
           understand that the literals don't consume any of the elements of a fusion
           sequence passed to this component sequence. As said, they just don't expose
@@ -117,25 +112,25 @@
 </span></pre>
 <p>
           where the first element of the pair passed in as the data to generate is
- still associated with the first <code class="computeroutput"><span class="identifier">double_</span></code>,
- and the second element is associated with the second <code class="computeroutput"><span class="identifier">double_</span></code>
+ still associated with the first <tt class="computeroutput"><span class="identifier">double_</span></tt>,
+ and the second element is associated with the second <tt class="computeroutput"><span class="identifier">double_</span></tt>
           generator.
         </p>
 <p>
           This behavior should be familiar as it conforms to the way other input
- and output formatting libraries such as <code class="computeroutput"><span class="identifier">scanf</span></code>,
- <code class="computeroutput"><span class="identifier">printf</span></code> or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span></code> are handling their variable parts.
+ and output formatting libraries such as <tt class="computeroutput"><span class="identifier">scanf</span></tt>,
+ <tt class="computeroutput"><span class="identifier">printf</span></tt> or <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span></tt> are handling their variable parts.
           In this context you can think about <span class="emphasis"><em>Spirit.Qi</em></span>'s and
           <span class="emphasis"><em>Spirit.Karma</em></span>'s primitive components (such as the
- <code class="computeroutput"><span class="identifier">double_</span></code> above) as of being
+ <tt class="computeroutput"><span class="identifier">double_</span></tt> above) as of being
           typesafe placeholders for the attribute values.
         </p>
-<div class="tip" title="Tip"><table border="0" summary="Tip">
+<div class="tip"><table border="0" summary="Tip">
 <tr>
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Tip]" src="../../../images/tip.png"></td>
 <th align="left">Tip</th>
 </tr>
-<tr><td align="left" valign="top">
+<tr><td colspan="2" align="left" valign="top">
 <p>
             Similarly to the tip provided above, this example could be rewritten
             using <span class="emphasis"><em>Spirit's</em></span> multi-attribute API function:
@@ -146,16 +141,17 @@
 </pre>
 <p>
             which provides a clear and comfortable syntax, more similar to the placeholder
- based syntax as exposed by <code class="computeroutput"><span class="identifier">printf</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span></code>.
+ based syntax as exposed by <tt class="computeroutput"><span class="identifier">printf</span></tt>
+ or <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">format</span></tt>.
           </p>
 </td></tr>
 </table></div>
 <p>
           Let's take a look at this from a more formal perspective. The sequence
           attribute propagation rules define a special behavior if generators exposing
- <code class="computeroutput"><span class="identifier">unused_type</span></code> as their attribute
- are involved (see <a class="link" href="../../karma/quick_reference/compound_attribute_rules.html" title="Compound Attribute Rules">Generator
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt> as their attribute
+ are involved (see <a href="../../karma/quick_reference/compound_attribute_rules.html" title="Compound
+ Attribute Rules">Generator
           Compound Attribute Rules</a>):
         </p>
 <div class="informaltable"><table class="table">
@@ -164,51 +160,39 @@
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                   Library
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   Sequence attribute propagation rule
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
+<td><p>
                   Qi
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
                   <span class="identifier">A</span><span class="special">,</span>
                   <span class="identifier">b</span><span class="special">:</span>
                   <span class="identifier">Unused</span> <span class="special">--&gt;</span>
                   <span class="special">(</span><span class="identifier">a</span>
- <span class="special">&gt;&gt;</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span></code>
- </p>
- </td>
+ <span class="special">&gt;&gt;</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span></tt>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   Karma
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
                   <span class="identifier">A</span><span class="special">,</span>
                   <span class="identifier">b</span><span class="special">:</span>
                   <span class="identifier">Unused</span> <span class="special">--&gt;</span>
                   <span class="special">(</span><span class="identifier">a</span>
- <span class="special">&lt;&lt;</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span></code>
- </p>
- </td>
+ <span class="special">&lt;&lt;</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span></tt>
+ </p></td>
 </tr>
 </tbody>
 </table></div>
@@ -219,16 +203,16 @@
 <p>
             </p>
 <p>
- Given <code class="computeroutput"><span class="identifier">a</span></code> and <code class="computeroutput"><span class="identifier">b</span></code> are parsers (generators), and
- <code class="computeroutput"><span class="identifier">A</span></code> is the attribute
- type of <code class="computeroutput"><span class="identifier">a</span></code>, and <code class="computeroutput"><span class="identifier">unused_type</span></code> is the attribute type
- of <code class="computeroutput"><span class="identifier">b</span></code>, then the attribute
- type of <code class="computeroutput"><span class="identifier">a</span> <span class="special">&gt;&gt;</span>
- <span class="identifier">b</span></code> (<code class="computeroutput"><span class="identifier">a</span>
- <span class="special">&lt;&lt;</span> <span class="identifier">b</span></code>)
- will be <code class="computeroutput"><span class="identifier">A</span></code> as well.
+ Given <tt class="computeroutput"><span class="identifier">a</span></tt> and <tt class="computeroutput"><span class="identifier">b</span></tt> are parsers (generators), and
+ <tt class="computeroutput"><span class="identifier">A</span></tt> is the attribute
+ type of <tt class="computeroutput"><span class="identifier">a</span></tt>, and <tt class="computeroutput"><span class="identifier">unused_type</span></tt> is the attribute type
+ of <tt class="computeroutput"><span class="identifier">b</span></tt>, then the attribute
+ type of <tt class="computeroutput"><span class="identifier">a</span> <span class="special">&gt;&gt;</span>
+ <span class="identifier">b</span></tt> (<tt class="computeroutput"><span class="identifier">a</span>
+ <span class="special">&lt;&lt;</span> <span class="identifier">b</span></tt>)
+ will be <tt class="computeroutput"><span class="identifier">A</span></tt> as well.
               This rule applies regardless of the position the element exposing the
- <code class="computeroutput"><span class="identifier">unused_type</span></code> is at.
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt> is at.
             </p>
 <p>
           </p>
@@ -236,7 +220,7 @@
 <p>
           This rule is the key to the understanding of the attribute handling in
           sequences as soon as literals are involved. It is as if elements with
- <code class="computeroutput"><span class="identifier">unused_type</span></code> attributes
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt> attributes
           'disappeared' during attribute propagation. Notably, this is not only true
           for sequences but for any compound components. For instance, for alternative
           componets the corresponding rule is:

Modified: trunk/libs/spirit/doc/html/spirit/abstracts/attributes/nonterminal_attributes.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/abstracts/attributes/nonterminal_attributes.html (original)
+++ trunk/libs/spirit/doc/html/spirit/abstracts/attributes/nonterminal_attributes.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,15 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Attributes of Rules and Grammars</title>
+<title>
+ Attributes of Rules and Grammars</title>
 <link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../index.html" title="Spirit 2.1">
-<link rel="up" href="../attributes.html" title="Attributes">
-<link rel="prev" href="more_sompound_attributes.html" title="More About Attributes of Compound Components">
-<link rel="next" href="../indepth.html" title="In Depth">
+<link rel="up" href="../attributes.html" title=" Attributes">
+<link rel="previous" href="more_sompound_attributes.html" title="
+ More About Attributes of Compound Components">
+<link rel="next" href="../../qi.html" title=" Qi - Writing Parsers">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -20,13 +22,17 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="more_sompound_attributes.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../attributes.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="../indepth.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="more_sompound_attributes.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../attributes.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="../../qi.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Attributes of Rules and Grammars">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.abstracts.attributes.nonterminal_attributes"></a><a class="link" href="nonterminal_attributes.html" title="Attributes of Rules and Grammars">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.abstracts.attributes.nonterminal_attributes"></a><a href="nonterminal_attributes.html" title="
+ Attributes of Rules and Grammars">
         Attributes of Rules and Grammars</a>
-</h4></div></div></div>
+</h4></div></div>
+<div></div>
+</div>
 <p>
           Nonterminals are well known from parsers where they are used as the main
           means of constructing more complex parsers out of simpler ones. The nonterminals
@@ -40,14 +46,14 @@
         </p>
 <p>
           Both, the types of the inherited and the synthesized attributes have to
- be explicitely specified while defining the particular <code class="computeroutput"><span class="identifier">grammar</span></code>
- or the <code class="computeroutput"><span class="identifier">rule</span></code> (the Spirit
+ be explicitely specified while defining the particular <tt class="computeroutput"><span class="identifier">grammar</span></tt>
+ or the <tt class="computeroutput"><span class="identifier">rule</span></tt> (the Spirit
           <a href="../../../../../repository/doc/html/index.html" target="_top">Repository</a> additionally
- has <code class="computeroutput"><span class="identifier">subrules</span></code> which conform
+ has <tt class="computeroutput"><span class="identifier">subrules</span></tt> which conform
           to a similar interface). As an example, the following code declares a
- <span class="emphasis"><em>Spirit.Qi</em></span> <code class="computeroutput"><span class="identifier">rule</span></code>
- exposing an <code class="computeroutput"><span class="keyword">int</span></code> as its synthesized
- attribute, while expecting a single <code class="computeroutput"><span class="keyword">double</span></code>
+ <span class="emphasis"><em>Spirit.Qi</em></span> <tt class="computeroutput"><span class="identifier">rule</span></tt>
+ exposing an <tt class="computeroutput"><span class="keyword">int</span></tt> as its synthesized
+ attribute, while expecting a single <tt class="computeroutput"><span class="keyword">double</span></tt>
           as its inherited attribute (see the section about the <span class="emphasis"><em>Spirit.Qi</em></span>
           Rule for more information):
         </p>
@@ -68,8 +74,8 @@
           creates its output from. Even if the consumed attribute is not 'returned'
           from the generator we chose to use the same function style declaration
           syntax as used in <span class="emphasis"><em>Spirit.Qi</em></span>. The example below declares
- a <span class="emphasis"><em>Spirit.Karma</em></span> <code class="computeroutput"><span class="identifier">rule</span></code>
- consuming a <code class="computeroutput"><span class="keyword">double</span></code> while not
+ a <span class="emphasis"><em>Spirit.Karma</em></span> <tt class="computeroutput"><span class="identifier">rule</span></tt>
+ consuming a <tt class="computeroutput"><span class="keyword">double</span></tt> while not
           expecting any additional inherited attributes.
         </p>
 <pre class="programlisting"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">rule</span><span class="special">&lt;</span><span class="identifier">OutputIterator</span><span class="special">,</span> <span class="keyword">double</span><span class="special">()&gt;</span> <span class="identifier">r</span><span class="special">;</span>
@@ -92,7 +98,7 @@
 </tr></table>
 <hr>
 <div class="spirit-nav">
-<a accesskey="p" href="more_sompound_attributes.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../attributes.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="../indepth.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+<a accesskey="p" href="more_sompound_attributes.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../attributes.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="../../qi.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
 </body>
 </html>

Modified: trunk/libs/spirit/doc/html/spirit/abstracts/attributes/primitive_attributes.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/abstracts/attributes/primitive_attributes.html (original)
+++ trunk/libs/spirit/doc/html/spirit/abstracts/attributes/primitive_attributes.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,15 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Attributes of Primitive Components</title>
+<title>
+ Attributes of Primitive Components</title>
 <link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../index.html" title="Spirit 2.1">
-<link rel="up" href="../attributes.html" title="Attributes">
-<link rel="prev" href="../attributes.html" title="Attributes">
-<link rel="next" href="compound_attributes.html" title="Attributes of Compound Components">
+<link rel="up" href="../attributes.html" title=" Attributes">
+<link rel="previous" href="../attributes.html" title=" Attributes">
+<link rel="next" href="compound_attributes.html" title=" Attributes
+ of Compound Components">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,26 +24,30 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../attributes.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../attributes.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="compound_attributes.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Attributes of Primitive Components">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.abstracts.attributes.primitive_attributes"></a><a class="link" href="primitive_attributes.html" title="Attributes of Primitive Components">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.abstracts.attributes.primitive_attributes"></a><a href="primitive_attributes.html" title="
+ Attributes of Primitive Components">
         Attributes of Primitive Components</a>
-</h4></div></div></div>
+</h4></div></div>
+<div></div>
+</div>
 <p>
           Parsers and generators in Spirit
           are fully attributed. <span class="emphasis"><em>Spirit.Qi</em></span> parsers always <span class="emphasis"><em>expose</em></span>
           an attribute specific to their type. This is called <span class="emphasis"><em>synthesized
           attribute</em></span> as it is returned from a successful match representing
- the matched input sequence. For instance, numeric parsers, such as <code class="computeroutput"><span class="identifier">int_</span></code> or <code class="computeroutput"><span class="identifier">double_</span></code>,
- return the <code class="computeroutput"><span class="keyword">int</span></code> or <code class="computeroutput"><span class="keyword">double</span></code> value converted from the matched
+ the matched input sequence. For instance, numeric parsers, such as <tt class="computeroutput"><span class="identifier">int_</span></tt> or <tt class="computeroutput"><span class="identifier">double_</span></tt>,
+ return the <tt class="computeroutput"><span class="keyword">int</span></tt> or <tt class="computeroutput"><span class="keyword">double</span></tt> value converted from the matched
           input sequence. Other primitive parser components have other intuitive
- attribute types, such as for instance <code class="computeroutput"><span class="identifier">int_</span></code>
- which has <code class="computeroutput"><span class="keyword">int</span></code>, or <code class="computeroutput"><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span></code> which has <code class="computeroutput"><span class="keyword">char</span></code>.
+ attribute types, such as for instance <tt class="computeroutput"><span class="identifier">int_</span></tt>
+ which has <tt class="computeroutput"><span class="keyword">int</span></tt>, or <tt class="computeroutput"><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span></tt> which has <tt class="computeroutput"><span class="keyword">char</span></tt>.
           For primitive parsers apply the normal C++ convertibility rules: you can
           use any C++ type to receive the parsed value as long as the attribute type
           of the parser is convertible to the type provided. The following example
- shows how a synthesized parser attribute (the <code class="computeroutput"><span class="keyword">int</span></code>
- value) is extracted by calling the API function <code class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span></code>:
+ shows how a synthesized parser attribute (the <tt class="computeroutput"><span class="keyword">int</span></tt>
+ value) is extracted by calling the API function <tt class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span></tt>:
         </p>
 <pre class="programlisting"><span class="keyword">int</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
 <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span><span class="special">(</span><span class="string">"123"</span><span class="special">);</span>
@@ -57,8 +63,8 @@
           primitive generators the normal C++ convertibility rules apply. Any data
           type convertible to the attribute type of a primitive generator can be
           used to provide the data to generate. We present a similar example as above,
- this time the consumed generator attribute (the <code class="computeroutput"><span class="keyword">int</span></code>
- value) is passed to the API function <code class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span></code>:
+ this time the consumed generator attribute (the <tt class="computeroutput"><span class="keyword">int</span></tt>
+ value) is passed to the API function <tt class="computeroutput"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span></tt>:
         </p>
 <pre class="programlisting"><span class="keyword">int</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">123</span><span class="special">;</span>
 <span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span> <span class="identifier">str</span><span class="special">;</span>
@@ -68,11 +74,12 @@
 <p>
           Other primitive generator components have other intuitive attribute types,
           very similar to the corresponding parser components, such as for instance
- <code class="computeroutput"><span class="identifier">int_</span></code> which has <code class="computeroutput"><span class="keyword">int</span></code>, or <code class="computeroutput"><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span></code>
- which has <code class="computeroutput"><span class="keyword">char</span></code>. For a full
+ <tt class="computeroutput"><span class="identifier">int_</span></tt> which has <tt class="computeroutput"><span class="keyword">int</span></tt>, or <tt class="computeroutput"><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span></tt>
+ which has <tt class="computeroutput"><span class="keyword">char</span></tt>. For a full
           list of available parser and generator primitives and their attribute types
- please see the sections <a class="link" href="../../qi/quick_reference/qi_parsers.html" title="Qi Parsers">Qi
- Parsers</a> and <a class="link" href="../../karma/quick_reference/primitive_generators.html" title="Karma Generators">Karma
+ please see the sections <a href="../../qi/quick_reference/qi_parsers.html" title=" Qi Parsers">Qi
+ Parsers</a> and <a href="../../karma/quick_reference/primitive_generators.html" title="
+ Karma Generators">Karma
           Generators</a>.
         </p>
 </div>

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-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,14 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Parsing Expression Grammar</title>
+<title>Parsing
+ Expression Grammar</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../index.html" title="Spirit 2.1">
 <link rel="up" href="../abstracts.html" title="Abstracts">
-<link rel="prev" href="syntax_diagram.html" title="Syntax Diagram">
-<link rel="next" href="attributes.html" title="Attributes">
+<link rel="previous" href="syntax_diagram.html" title="Syntax Diagram">
+<link rel="next" href="attributes.html" title=" Attributes">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,16 +23,20 @@
 <div class="spirit-nav">
 <a accesskey="p" href="syntax_diagram.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.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="attributes.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Parsing Expression Grammar">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="spirit.abstracts.parsing_expression_grammar"></a><a class="link" href="parsing_expression_grammar.html" title="Parsing Expression Grammar">Parsing
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h3 class="title">
+<a name="spirit.abstracts.parsing_expression_grammar"></a><a href="parsing_expression_grammar.html" title="Parsing
+ Expression Grammar">Parsing
       Expression Grammar</a>
-</h3></div></div></div>
+</h3></div></div>
+<div></div>
+</div>
 <p>
         Parsing Expression Grammars (PEG)
- <sup>[<a name="id583827" href="#ftn.id583827" class="footnote">5</a>]</sup>
+ <sup>[<a name="id415550" href="#ftn.id415550">5</a>]</sup>
         are a derivative of Extended Backus-Naur Form (EBNF)
- <sup>[<a name="id583839" href="#ftn.id583839" class="footnote">6</a>]</sup>
+ <sup>[<a name="id415567" href="#ftn.id415567">6</a>]</sup>
         with a different interpretation, designed to represent a recursive descent
         parser. A PEG can be directly represented as a recursive-descent parser.
       </p>
@@ -41,24 +46,24 @@
         PEGs have an exact interpretation. There is only one valid parse tree (see
         Abstract Syntax Tree) for each PEG grammar.
       </p>
-<a name="spirit.abstracts.parsing_expression_grammar.sequences"></a><h5>
-<a name="id583859"></a>
- <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.sequences">Sequences</a>
- </h5>
+<a name="spirit.abstracts.parsing_expression_grammar.sequences"></a><h4>
+<a name="id415604"></a>
+ Sequences
+ </h4>
 <p>
         Sequences are represented by juxtaposition like in EBNF:
       </p>
 <pre class="programlisting"><span class="identifier">a</span> <span class="identifier">b</span>
 </pre>
 <p>
- The PEG expression above states that, in order for this to succeed, <code class="computeroutput"><span class="identifier">a</span></code> must follow <code class="computeroutput"><span class="identifier">b</span></code>.
+ The PEG expression above states that, in order for this to succeed, <tt class="computeroutput"><span class="identifier">a</span></tt> must follow <tt class="computeroutput"><span class="identifier">b</span></tt>.
         Here's the syntax diagram:
       </p>
 <div class="blockquote"><blockquote class="blockquote">
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/sequence.png" alt="sequence"></span>
+ <span class="inlinemediaobject"><img src="./images/sequence.png" alt="sequence"></span>
           </p>
 <p>
         </p>
@@ -69,68 +74,68 @@
 <pre class="programlisting"><span class="char">'x'</span> <span class="identifier">digit</span>
 </pre>
 <p>
- which means the character <code class="computeroutput"><span class="identifier">x</span></code>
+ which means the character <tt class="computeroutput"><span class="identifier">x</span></tt>
         must be followed by a digit.
       </p>
-<div class="note" title="Note"><table border="0" summary="Note">
+<div class="note"><table border="0" summary="Note">
 <tr>
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td align="left" valign="top"><p>
- In <span class="emphasis"><em>Spirit.Qi</em></span>, we use the <code class="computeroutput"><span class="special">&gt;&gt;</span></code>
+<tr><td colspan="2" align="left" valign="top"><p>
+ In <span class="emphasis"><em>Spirit.Qi</em></span>, we use the <tt class="computeroutput"><span class="special">&gt;&gt;</span></tt>
           for sequences since C++ does not allow juxtaposition, while in <span class="emphasis"><em>Spirit.Karma</em></span>
- we use the <code class="computeroutput"><span class="special">&lt;&lt;</span></code> instead.
+ we use the <tt class="computeroutput"><span class="special">&lt;&lt;</span></tt> instead.
         </p></td></tr>
 </table></div>
-<a name="spirit.abstracts.parsing_expression_grammar.alternatives"></a><h5>
-<a name="id583991"></a>
- <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.alternatives">Alternatives</a>
- </h5>
+<a name="spirit.abstracts.parsing_expression_grammar.alternatives"></a><h4>
+<a name="id415770"></a>
+ Alternatives
+ </h4>
 <p>
         Alternatives are represented in PEG using the slash:
       </p>
 <pre class="programlisting"><span class="identifier">a</span> <span class="special">/</span> <span class="identifier">b</span>
 </pre>
-<div class="note" title="Note"><table border="0" summary="Note">
+<div class="note"><table border="0" summary="Note">
 <tr>
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td align="left" valign="top"><p>
+<tr><td colspan="2" align="left" valign="top"><p>
           In <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span>,
- we use the <code class="computeroutput"><span class="special">|</span></code> for alternatives
+ we use the <tt class="computeroutput"><span class="special">|</span></tt> for alternatives
           just as in EBNF.
         </p></td></tr>
 </table></div>
 <p>
         Alternatives allow for choices. The expression above reads: try to match
- <code class="computeroutput"><span class="identifier">a</span></code>. If <code class="computeroutput"><span class="identifier">a</span></code>
- succeeds, success, if not try to match <code class="computeroutput"><span class="identifier">b</span></code>.
+ <tt class="computeroutput"><span class="identifier">a</span></tt>. If <tt class="computeroutput"><span class="identifier">a</span></tt>
+ succeeds, success, if not try to match <tt class="computeroutput"><span class="identifier">b</span></tt>.
         This is a bit of a deviation from the usual EBNF interpretation where you
- simply match <code class="computeroutput"><span class="identifier">a</span></code> <span class="bold"><strong>or</strong></span> <code class="computeroutput"><span class="identifier">b</span></code>.
+ simply match <tt class="computeroutput"><span class="identifier">a</span></tt> <span class="bold"><b>or</b></span> <tt class="computeroutput"><span class="identifier">b</span></tt>.
         Here's the syntax diagram:
       </p>
 <div class="blockquote"><blockquote class="blockquote">
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/alternative.png" alt="alternative"></span>
+ <span class="inlinemediaobject"><img src="./images/alternative.png" alt="alternative"></span>
           </p>
 <p>
         </p>
 </blockquote></div>
 <p>
         PEGs allow for ambiguity in the alternatives. In the expression above, both
- <code class="computeroutput"><span class="identifier">a</span></code> or <code class="computeroutput"><span class="identifier">b</span></code>
+ <tt class="computeroutput"><span class="identifier">a</span></tt> or <tt class="computeroutput"><span class="identifier">b</span></tt>
         can both match an input string. However, only the first matching alternative
         is valid. As noted, there can only be one valid parse tree ($$$ explain more
         about this $$$).
       </p>
-<a name="spirit.abstracts.parsing_expression_grammar.loops"></a><h5>
-<a name="id584411"></a>
- <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.loops">Loops</a>
- </h5>
+<a name="spirit.abstracts.parsing_expression_grammar.loops"></a><h4>
+<a name="id415962"></a>
+ Loops
+ </h4>
 <p>
         Again, like EBNF, PEG uses the regular-expression Kleene star and the plus
         loops:
@@ -138,12 +143,12 @@
 <pre class="programlisting"><span class="identifier">a</span><span class="special">*</span>
 <span class="identifier">a</span><span class="special">+</span>
 </pre>
-<div class="note" title="Note"><table border="0" summary="Note">
+<div class="note"><table border="0" summary="Note">
 <tr>
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td align="left" valign="top"><p>
+<tr><td colspan="2" align="left" valign="top"><p>
           <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span> use
           the prefix star and plus since there is no postfix star or plus in C++.
         </p></td></tr>
@@ -155,7 +160,7 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/kleene.png" alt="kleene"></span>
+ <span class="inlinemediaobject"><img src="./images/kleene.png" alt="kleene"></span>
           </p>
 <p>
         </p>
@@ -164,14 +169,14 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/plus.png" alt="plus"></span>
+ <span class="inlinemediaobject"><img src="./images/plus.png" alt="plus"></span>
           </p>
 <p>
         </p>
 </blockquote></div>
 <p>
- The first, called the Kleene star, matches zero or more of its subject <code class="computeroutput"><span class="identifier">a</span></code>. The second, plus, matches one ore more
- of its subject <code class="computeroutput"><span class="identifier">a</span></code>.
+ The first, called the Kleene star, matches zero or more of its subject <tt class="computeroutput"><span class="identifier">a</span></tt>. The second, plus, matches one ore more
+ of its subject <tt class="computeroutput"><span class="identifier">a</span></tt>.
       </p>
 <p>
         Unlike EBNF, PEGs have greedy loops. It will match as much as it can until
@@ -190,10 +195,10 @@
         a major gotcha. PEG provides a couple of other mechanisms to circumvent this.
         We will see more of these other mechanisms shortly.
       </p>
-<a name="spirit.abstracts.parsing_expression_grammar.difference"></a><h5>
-<a name="id584559"></a>
- <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.difference">Difference</a>
- </h5>
+<a name="spirit.abstracts.parsing_expression_grammar.difference"></a><h4>
+<a name="id416140"></a>
+ Difference
+ </h4>
 <p>
         In certain cases, you may want to restrict a certain expression. You can
         think of a PEG expression as a match for a potentially infinite set of strings.
@@ -202,26 +207,26 @@
 <pre class="programlisting"><span class="identifier">a</span> <span class="special">-</span> <span class="identifier">b</span>
 </pre>
 <p>
- The expression reads: match <code class="computeroutput"><span class="identifier">a</span></code>
- but not <code class="computeroutput"><span class="identifier">b</span></code>.
+ The expression reads: match <tt class="computeroutput"><span class="identifier">a</span></tt>
+ but not <tt class="computeroutput"><span class="identifier">b</span></tt>.
       </p>
-<div class="note" title="Note"><table border="0" summary="Note">
+<div class="note"><table border="0" summary="Note">
 <tr>
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td align="left" valign="top"><p>
+<tr><td colspan="2" align="left" valign="top"><p>
           There is no difference operator in <span class="emphasis"><em>Spirit.Karma</em></span>, as
           the concept does not make sense in the context of output generation.
         </p></td></tr>
 </table></div>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id583827" href="#id583827" class="para">5</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id415550" href="#id415550">5</a>] </sup>
             Bryan Ford: Parsing Expression Grammars: A Recognition-Based Syntactic
             Foundation, http://pdos.csail.mit.edu/~baford/packrat/popl04/
           </p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id583839" href="#id583839" class="para">6</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id415567" href="#id415567">6</a>] </sup>
             Richard E. Pattis: EBNF: A Notation to Describe Syntax, http://www.cs.cmu.edu/~pattis/misc/ebnf.pdf
           </p></div>
 </div>

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-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -3,11 +3,12 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Syntax Diagram</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../index.html" title="Spirit 2.1">
 <link rel="up" href="../abstracts.html" title="Abstracts">
-<link rel="prev" href="../abstracts.html" title="Abstracts">
-<link rel="next" href="parsing_expression_grammar.html" title="Parsing Expression Grammar">
+<link rel="previous" href="../abstracts.html" title="Abstracts">
+<link rel="next" href="parsing_expression_grammar.html" title="Parsing
+ Expression Grammar">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,19 +23,22 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../abstracts.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../abstracts.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="parsing_expression_grammar.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Syntax Diagram">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="spirit.abstracts.syntax_diagram"></a><a class="link" href="syntax_diagram.html" title="Syntax Diagram">Syntax Diagram</a>
-</h3></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h3 class="title">
+<a name="spirit.abstracts.syntax_diagram"></a>Syntax Diagram
+</h3></div></div>
+<div></div>
+</div>
 <p>
         In the next section, we will deal with Parsing Expression Grammars (PEG)
- <sup>[<a name="id583384" href="#ftn.id583384" class="footnote">2</a>]</sup>
+ <sup>[<a name="id415010" href="#ftn.id415010">2</a>]</sup>
         , a variant of Extended Backus-Naur Form (EBNF)
- <sup>[<a name="id583396" href="#ftn.id583396" class="footnote">3</a>]</sup>
+ <sup>[<a name="id415028" href="#ftn.id415028">3</a>]</sup>
         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="id583408" href="#ftn.id583408" class="footnote">4</a>]</sup>
+ <sup>[<a name="id415048" href="#ftn.id415048">4</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
@@ -47,10 +51,10 @@
         the concepts described here are equally applicable to <span class="emphasis"><em>Spirit.Qi</em></span>
         parsers as they are for <span class="emphasis"><em>Spirit.Karma</em></span> generators.
       </p>
-<a name="spirit.abstracts.syntax_diagram.elements"></a><h5>
-<a name="id583436"></a>
- <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.elements">Elements</a>
- </h5>
+<a name="spirit.abstracts.syntax_diagram.elements"></a><h4>
+<a name="id415088"></a>
+ Elements
+ </h4>
 <p>
         All diagrams have one entry and exit point. Arrows connect all possible paths
         through the grammar from the entry point to the exit point.
@@ -59,7 +63,7 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/start_stop.png" alt="start_stop"></span>
+ <span class="inlinemediaobject"><img src="./images/start_stop.png" alt="start_stop"></span>
           </p>
 <p>
         </p>
@@ -72,7 +76,7 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/terminal.png" alt="terminal"></span>
+ <span class="inlinemediaobject"><img src="./images/terminal.png" alt="terminal"></span>
           </p>
 <p>
         </p>
@@ -86,15 +90,15 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/non-terminal.png" alt="non-terminal"></span>
+ <span class="inlinemediaobject"><img src="./images/non-terminal.png" alt="non-terminal"></span>
           </p>
 <p>
         </p>
 </blockquote></div>
-<a name="spirit.abstracts.syntax_diagram.constructs"></a><h5>
-<a name="id583535"></a>
- <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.constructs">Constructs</a>
- </h5>
+<a name="spirit.abstracts.syntax_diagram.constructs"></a><h4>
+<a name="id415207"></a>
+ Constructs
+ </h4>
 <p>
         The most basic composition is the Sequence. B follows A:
       </p>
@@ -102,7 +106,7 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/sequence.png" alt="sequence"></span>
+ <span class="inlinemediaobject"><img src="./images/sequence.png" alt="sequence"></span>
           </p>
 <p>
         </p>
@@ -117,7 +121,7 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/alternative.png" alt="alternative"></span>
+ <span class="inlinemediaobject"><img src="./images/alternative.png" alt="alternative"></span>
           </p>
 <p>
         </p>
@@ -129,7 +133,7 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/optional.png" alt="optional"></span>
+ <span class="inlinemediaobject"><img src="./images/optional.png" alt="optional"></span>
           </p>
 <p>
         </p>
@@ -141,7 +145,7 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/kleene.png" alt="kleene"></span>
+ <span class="inlinemediaobject"><img src="./images/kleene.png" alt="kleene"></span>
           </p>
 <p>
         </p>
@@ -150,7 +154,7 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/plus.png" alt="plus"></span>
+ <span class="inlinemediaobject"><img src="./images/plus.png" alt="plus"></span>
           </p>
 <p>
         </p>
@@ -162,10 +166,10 @@
         is a crucial difference between PEG and general Context Free Grammars (CFGs).
         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="id583696"></a>
- <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.predicates">Predicates</a>
- </h5>
+<a name="spirit.abstracts.syntax_diagram.predicates"></a><h4>
+<a name="id415389"></a>
+ Predicates
+ </h4>
 <p>
         Now, the following are Syntax Diagram versions of PEG predicates. These are
         not traditionally found in Syntax Diagrams. These are special extensions
@@ -178,7 +182,7 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/predicate.png" alt="predicate"></span>
+ <span class="inlinemediaobject"><img src="./images/predicate.png" alt="predicate"></span>
           </p>
 <p>
         </p>
@@ -195,7 +199,7 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/and_predicate.png" alt="and_predicate"></span>
+ <span class="inlinemediaobject"><img src="./images/and_predicate.png" alt="and_predicate"></span>
           </p>
 <p>
         </p>
@@ -204,7 +208,7 @@
 <p>
           </p>
 <p>
- <span class="inlinemediaobject"><img src="../.././images/not_predicate.png" alt="not_predicate"></span>
+ <span class="inlinemediaobject"><img src="./images/not_predicate.png" alt="not_predicate"></span>
           </p>
 <p>
         </p>
@@ -218,14 +222,14 @@
       </p>
 <div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id583384" href="#id583384" class="para">2</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id415010" href="#id415010">2</a>] </sup>
             Bryan Ford: Parsing Expression Grammars: A Recognition-Based Syntactic
             Foundation, http://pdos.csail.mit.edu/~baford/packrat/popl04/
           </p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id583396" href="#id583396" class="para">3</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id415028" href="#id415028">3</a>] </sup>
             Richard E. Pattis: EBNF: A Notation to Describe Syntax, http://www.cs.cmu.edu/~pattis/misc/ebnf.pdf
           </p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id583408" href="#id583408" class="para">4</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id415048" href="#id415048">4</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-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -3,10 +3,10 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Acknowledgments</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../index.html" title="Spirit 2.1">
 <link rel="up" href="../index.html" title="Spirit 2.1">
-<link rel="prev" href="repository.html" title="Spirit Repository">
+<link rel="previous" href="repository.html" title=" Spirit Repository">
 <link rel="next" href="references.html" title="References">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -22,10 +22,13 @@
 <div class="spirit-nav">
 <a accesskey="p" href="repository.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="references.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Acknowledgments">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="spirit.acknowledgments"></a><a class="link" href="acknowledgments.html" title="Acknowledgments">Acknowledgments</a>
-</h2></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="spirit.acknowledgments"></a>Acknowledgments
+</h2></div></div>
+<div></div>
+</div>
 <p>
       This version of Spirit is a complete rewrite of the <span class="emphasis"><em>classic</em></span>
       Spirit many people have been contributing to (see below). But there are a couple
@@ -33,63 +36,63 @@
       would like to express our special acknowledgement to:
     </p>
 <p>
- <span class="bold"><strong>Eric Niebler</strong></span> for writing Boost.Proto, without
+ <span class="bold"><b>Eric Niebler</b></span> for writing Boost.Proto, without
       which this rewrite wouldn't have been possible, and helping with examples,
       advices, and suggestions on how to use Boost.Proto in the best possible way.
     </p>
 <p>
- <span class="bold"><strong>Ben Hanson</strong></span> for providing us with an early
+ <span class="bold"><b>Ben Hanson</b></span> for providing us with an early
       version of his Lexertl library, which is proposed to be included into Boost
       (as Boost.Lexer). At the time of this writing the Boost review for this library
       is still pending.
     </p>
 <p>
- <span class="bold"><strong>Francois Barel</strong></span> for his silent but steady work
+ <span class="bold"><b>Francois Barel</b></span> for his silent but steady work
       on making and keeping Spirit compatible with all versions of gcc, older and
       newest ones. He not only contributed subrules to Spirit V2.1, but always keeps
       an eye on the small details which are so important to make a difference.
     </p>
 <p>
- <span class="bold"><strong>Andreas Haberstroh</strong></span> for proof reading the documentation
+ <span class="bold"><b>Andreas Haberstroh</b></span> for proof reading the documentation
       and fixing those non-native-speaker-quirks we managed to introduce into the
       first versions of the documentation.
     </p>
 <p>
- <span class="bold"><strong>FIXME</strong></span>: Add more people
+ <span class="bold"><b>FIXME</b></span>: Add more people
     </p>
-<a name="spirit.acknowledgments.acknowledgements_from_the_spirit_v1__emphasis_classic__emphasis__documentation"></a><h4>
-<a name="id927506"></a>
- <a class="link" href="acknowledgments.html#spirit.acknowledgments.acknowledgements_from_the_spirit_v1__emphasis_classic__emphasis__documentation">Acknowledgements
+<a name="spirit.acknowledgments.acknowledgements_from_the_spirit_v1__emphasis_classic__emphasis__documentation"></a><h3>
+<a name="id758179"></a>
+ <a 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>
+ </h3>
 <p>
       Special thanks for working on Spirit <span class="emphasis"><em>classic</em></span> to:
     </p>
 <p>
- <span class="bold"><strong>Dan Nuffer</strong></span> for his work on lexers, parse trees,
+ <span class="bold"><b>Dan Nuffer</b></span> for his work on lexers, parse trees,
       ASTs, XML parsers, the multi-pass iterator as well as administering Spirit's
       site, editing, maintaining the CVS and doing the releases plus a zillion of
       other chores that were almost taken for granted.
     </p>
 <p>
- <span class="bold"><strong>Hartmut Kaiser</strong></span> for his work on the C parser,
+ <span class="bold"><b>Hartmut Kaiser</b></span> for his work on the C parser,
       the work on the C/C++ preprocessor, utility parsers, the original port to Intel
       5.0, various work on Phoenix, porting to v1.5, the meta-parsers, the grouping-parsers,
       extensive testing and painstaking attention to details.
     </p>
 <p>
- <span class="bold"><strong>Martin Wille</strong></span> who improved grammar multi thread
+ <span class="bold"><b>Martin Wille</b></span> who improved grammar multi thread
       safety, contributed the eol_p parser, the dynamic parsers, documentation and
       for taking an active role in almost every aspect from brainstorming and design
       to coding. And, as always, helps keep the regression tests for g++ on Linux
       as green as ever :-).
     </p>
 <p>
- <span class="bold"><strong>Martijn W. Van Der Lee</strong></span> our Web site administrator
+ <span class="bold"><b>Martijn W. Van Der Lee</b></span> our Web site administrator
       and for contributing the RFC821 parser.
     </p>
 <p>
- <span class="bold"><strong>Giovanni Bajo</strong></span> for last minute tweaks of Spirit
+ <span class="bold"><b>Giovanni Bajo</b></span> for last minute tweaks of Spirit
       1.8.0 for CodeWarrior 8.3. Actually, I'm ashamed Giovanni was not in this list
       already. He's done a lot since Spirit 1.5, the first Boost.Spirit release.
       He's instrumental in the porting of the Spirit iterators stuff to the new Boost
@@ -97,107 +100,107 @@
       tests here and there.
     </p>
 <p>
- <span class="bold"><strong>Juan Carlos Arevalo-Baeza (JCAB)*</strong></span> for his
+ <span class="bold"><b>Juan Carlos Arevalo-Baeza (JCAB)*</b></span> for his
       work on the C++ parser, the position iterator, ports to v1.5 and keeping the
       mailing list discussions alive and kicking.
     </p>
 <p>
- <span class="bold"><strong>Vaclav Vesely</strong></span>, lots of stuff, the no_actions
+ <span class="bold"><b>Vaclav Vesely</b></span>, lots of stuff, the no_actions
       directive, various patches fixes, the distinct parsers, the lazy parser, some
       phoenix tweaks and add-ons (e.g. new_). Also, *Stefan Slapeta] and wife for
       editing Vaclav's distinct parser doc.
     </p>
 <p>
- <span class="bold"><strong>Raghavendra Satish</strong></span> for doing the original
+ <span class="bold"><b>Raghavendra Satish</b></span> for doing the original
       v1.3 port to VC++ and his work on Phoenix.
     </p>
 <p>
- <span class="bold"><strong>Noah Stein</strong></span> for following up and helping Ragav
+ <span class="bold"><b>Noah Stein</b></span> for following up and helping Ragav
       on the VC++ ports.
     </p>
 <p>
- <span class="bold"><strong>Hakki Dogusan</strong></span>, for his original v1.0 Pascal
+ <span class="bold"><b>Hakki Dogusan</b></span>, for his original v1.0 Pascal
       parser.
     </p>
 <p>
- <span class="bold"><strong>John (EBo) David</strong></span> for his work on the VM and
+ <span class="bold"><b>John (EBo) David</b></span> for his work on the VM and
       watching over my shoulder as I code giving the impression of distance eXtreme
       programming.
     </p>
 <p>
- <span class="bold"><strong>Chris Uzdavinis</strong></span> for feeding in comments and
+ <span class="bold"><b>Chris Uzdavinis</b></span> for feeding in comments and
       valuable suggestions as well as editing the documentation.
     </p>
 <p>
- <span class="bold"><strong>Carsten Stoll</strong></span>, for his work on dynamic parsers.
+ <span class="bold"><b>Carsten Stoll</b></span>, for his work on dynamic parsers.
     </p>
 <p>
- <span class="bold"><strong>Andy Elvey</strong></span> and his conifer parser.
+ <span class="bold"><b>Andy Elvey</b></span> and his conifer parser.
     </p>
 <p>
- <span class="bold"><strong>Bruce Florman</strong></span>, who did the original v1.0 port
+ <span class="bold"><b>Bruce Florman</b></span>, who did the original v1.0 port
       to VC++.
     </p>
 <p>
- <span class="bold"><strong>Jeff Westfahl</strong></span> for porting the loop parsers
+ <span class="bold"><b>Jeff Westfahl</b></span> for porting the loop parsers
       to v1.5 and contributing the file iterator.
     </p>
 <p>
- <span class="bold"><strong>Peter Simons</strong></span> for the RFC date parser example
+ <span class="bold"><b>Peter Simons</b></span> for the RFC date parser example
       and tutorial plus helping out with some nitty gritty details.
     </p>
 <p>
- <span class="bold"><strong>Markus Schöpflin</strong></span> for suggesting the end_p parser
+ <span class="bold"><b>Markus Schöpflin</b></span> for suggesting the end_p parser
       and lots of other nifty things and his active presence in the mailing list.
     </p>
 <p>
- <span class="bold"><strong>Doug Gregor</strong></span> for mentoring and his ability
+ <span class="bold"><b>Doug Gregor</b></span> for mentoring and his ability
       to see things that others don't.
     </p>
 <p>
- <span class="bold"><strong>David Abrahams</strong></span> for giving Joel a job that
+ <span class="bold"><b>David Abrahams</b></span> for giving Joel a job that
       allows him to still work on Spirit, plus countless advice and help on C++ and
       specifically template metaprogramming.
     </p>
 <p>
- <span class="bold"><strong>Aleksey Gurtovoy</strong></span> for his MPL library from
+ <span class="bold"><b>Aleksey Gurtovoy</b></span> for his MPL library from
       which we stole many metaprogramming tricks especially for less conforming compilers
       such as Borland and VC6/7.
     </p>
 <p>
- <span class="bold"><strong>Gustavo Guerra</strong></span> for his last minute review
+ <span class="bold"><b>Gustavo Guerra</b></span> for his last minute review
       of Spirit and constant feedback, plus patches here and there (e.g. proposing
       the new dot behavior of the real numerics parsers).
     </p>
 <p>
- <span class="bold"><strong>Nicola Musatti</strong></span>, <span class="bold"><strong>Paul
- Snively</strong></span>, <span class="bold"><strong>Alisdair Meredith</strong></span> and
- <span class="bold"><strong>Hugo Duncan</strong></span> for testing and sending in various
+ <span class="bold"><b>Nicola Musatti</b></span>, <span class="bold"><b>Paul
+ Snively</b></span>, <span class="bold"><b>Alisdair Meredith</b></span> and
+ <span class="bold"><b>Hugo Duncan</b></span> for testing and sending in various
       patches.
     </p>
 <p>
- <span class="bold"><strong>Steve Rowe</strong></span> for his splendid work on the TSTs
+ <span class="bold"><b>Steve Rowe</b></span> for his splendid work on the TSTs
       that will soon be taken into Spirit.
     </p>
 <p>
- <span class="bold"><strong>Jonathan de Halleux</strong></span> for his work on actors.
+ <span class="bold"><b>Jonathan de Halleux</b></span> for his work on actors.
     </p>
 <p>
- <span class="bold"><strong>Angus Leeming</strong></span> for last minute editing work
+ <span class="bold"><b>Angus Leeming</b></span> for last minute editing work
       on the 1.8.0 release documentation, his work on Phoenix and his active presence
       in the Spirit mailing list.
     </p>
 <p>
- <span class="bold"><strong>Joao Abecasis</strong></span> for his active presence in the
+ <span class="bold"><b>Joao Abecasis</b></span> for his active presence in the
       Spirit mailing list, providing user support, participating in the discussions
       and so on.
     </p>
 <p>
- <span class="bold"><strong>Guillaume Melquiond</strong></span> for a last minute patch
+ <span class="bold"><b>Guillaume Melquiond</b></span> for a last minute patch
       to multi_pass for 1.8.1.
     </p>
 <p>
- <span class="bold"><strong>Peder Holt</strong></span> for his porting work on Phoenix,
+ <span class="bold"><b>Peder Holt</b></span> for his porting work on Phoenix,
       Fusion and Spirit to VC6.
     </p>
 <p>
@@ -214,19 +217,19 @@
       in the review:
     </p>
 <p>
- <span class="bold"><strong>John Maddock</strong></span>, our review manager, <span class="bold"><strong>Aleksey Gurtovoy</strong></span>, <span class="bold"><strong>Andre Hentz</strong></span>,
- <span class="bold"><strong>Beman Dawes</strong></span>, <span class="bold"><strong>Carl Daniel</strong></span>,
- <span class="bold"><strong>Christopher Currie</strong></span>, <span class="bold"><strong>Dan
- Gohman</strong></span>, <span class="bold"><strong>Dan Nuffer</strong></span>, <span class="bold"><strong>Daryle
- Walker</strong></span>, <span class="bold"><strong>David Abrahams</strong></span>, <span class="bold"><strong>David B. Held</strong></span>, <span class="bold"><strong>Dirk Gerrits</strong></span>,
- <span class="bold"><strong>Douglas Gregor</strong></span>, <span class="bold"><strong>Hartmut
- Kaiser</strong></span>, <span class="bold"><strong>Iain K.Hanson</strong></span>, <span class="bold"><strong>Juan Carlos Arevalo-Baeza</strong></span>, <span class="bold"><strong>Larry
- Evans</strong></span>, <span class="bold"><strong>Martin Wille</strong></span>, <span class="bold"><strong>Mattias Flodin</strong></span>, <span class="bold"><strong>Noah Stein</strong></span>,
- <span class="bold"><strong>Nuno Lucas</strong></span>, <span class="bold"><strong>Peter Dimov</strong></span>,
- <span class="bold"><strong>Peter Simons</strong></span>, <span class="bold"><strong>Petr Kocmid</strong></span>,
- <span class="bold"><strong>Ross Smith</strong></span>, <span class="bold"><strong>Scott Kirkwood</strong></span>,
- <span class="bold"><strong>Steve Cleary</strong></span>, <span class="bold"><strong>Thorsten
- Ottosen</strong></span>, <span class="bold"><strong>Tom Wenisch</strong></span>, <span class="bold"><strong>Vladimir Prus</strong></span>
+ <span class="bold"><b>John Maddock</b></span>, our review manager, <span class="bold"><b>Aleksey Gurtovoy</b></span>, <span class="bold"><b>Andre Hentz</b></span>,
+ <span class="bold"><b>Beman Dawes</b></span>, <span class="bold"><b>Carl Daniel</b></span>,
+ <span class="bold"><b>Christopher Currie</b></span>, <span class="bold"><b>Dan
+ Gohman</b></span>, <span class="bold"><b>Dan Nuffer</b></span>, <span class="bold"><b>Daryle
+ Walker</b></span>, <span class="bold"><b>David Abrahams</b></span>, <span class="bold"><b>David B. Held</b></span>, <span class="bold"><b>Dirk Gerrits</b></span>,
+ <span class="bold"><b>Douglas Gregor</b></span>, <span class="bold"><b>Hartmut
+ Kaiser</b></span>, <span class="bold"><b>Iain K.Hanson</b></span>, <span class="bold"><b>Juan Carlos Arevalo-Baeza</b></span>, <span class="bold"><b>Larry
+ Evans</b></span>, <span class="bold"><b>Martin Wille</b></span>, <span class="bold"><b>Mattias Flodin</b></span>, <span class="bold"><b>Noah Stein</b></span>,
+ <span class="bold"><b>Nuno Lucas</b></span>, <span class="bold"><b>Peter Dimov</b></span>,
+ <span class="bold"><b>Peter Simons</b></span>, <span class="bold"><b>Petr Kocmid</b></span>,
+ <span class="bold"><b>Ross Smith</b></span>, <span class="bold"><b>Scott Kirkwood</b></span>,
+ <span class="bold"><b>Steve Cleary</b></span>, <span class="bold"><b>Thorsten
+ Ottosen</b></span>, <span class="bold"><b>Tom Wenisch</b></span>, <span class="bold"><b>Vladimir Prus</b></span>
     </p>
 <p>
       Finally thanks to SourceForge for hosting the Spirit project and Boost: a C++

Added: trunk/libs/spirit/doc/html/spirit/advanced.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,68 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Advanced</title>
+<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../index.html" title="Spirit 2.1">
+<link rel="up" href="../index.html" title="Spirit 2.1">
+<link rel="previous" href="lex/reference/tokendef.html" title=" TokenDef Class">
+<link rel="next" href="advanced/indepth.html" title=" In Depth">
+</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="lex/reference/tokendef.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="advanced/indepth.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="spirit.advanced"></a>Advanced
+</h2></div></div>
+<div></div>
+</div>
+<div class="toc"><dl>
+<dt><span class="section"> In Depth</span></dt>
+<dd><dl><dt><span class="section"><a href="advanced/indepth/parsers_indepth.html"> Parsers in
+ Depth</a></span></dt></dl></dd>
+<dt><span class="section"><a href="advanced/customize.html"> Customization of Spirit's
+ Attribute Handling</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="advanced/customize/is_container.html"> Determine
+ if a Type Should be Treated as a Container (Qi and Karma)</a></span></dt>
+<dt><span class="section"><a href="advanced/customize/transform.html"> Transform an
+ Attribute to a Different Type (Qi and Karma)</a></span></dt>
+<dt><span class="section"><a href="advanced/customize/assign_to.html"> Store a Parsed
+ Attribute Value (Qi)</a></span></dt>
+<dt><span class="section"><a href="advanced/customize/store_value.html"> Store Parsed
+ Attribute Values into a Container (Qi)</a></span></dt>
+<dt><span class="section"><a href="advanced/customize/clear_value.html"> Re-Initialize
+ an Attribute Value before Parsing (Qi)</a></span></dt>
+<dt><span class="section"><a href="advanced/customize/extract_from.html"> Extract an
+ Attribute Value to Generate Output (Karma)</a></span></dt>
+</dl></dd>
+</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="lex/reference/tokendef.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="advanced/indepth.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/customize.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,176 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Customization of Spirit's
+ Attribute Handling</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../advanced.html" title="Advanced">
+<link rel="previous" href="indepth/parsers_indepth.html" title=" Parsers in
+ Depth">
+<link rel="next" href="customize/is_container.html" title=" Determine
+ if a Type Should be Treated as a Container (Qi and 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="indepth/parsers_indepth.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced.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="customize/is_container.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h3 class="title">
+<a name="spirit.advanced.customize"></a><a href="customize.html" title=" Customization of Spirit's
+ Attribute Handling"> Customization of Spirit's
+ Attribute Handling</a>
+</h3></div></div>
+<div></div>
+</div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="customize/is_container.html"> Determine
+ if a Type Should be Treated as a Container (Qi and Karma)</a></span></dt>
+<dt><span class="section"><a href="customize/transform.html"> Transform an
+ Attribute to a Different Type (Qi and Karma)</a></span></dt>
+<dt><span class="section"><a href="customize/assign_to.html"> Store a Parsed
+ Attribute Value (Qi)</a></span></dt>
+<dt><span class="section"><a href="customize/store_value.html"> Store Parsed
+ Attribute Values into a Container (Qi)</a></span></dt>
+<dt><span class="section"><a href="customize/clear_value.html"> Re-Initialize
+ an Attribute Value before Parsing (Qi)</a></span></dt>
+<dt><span class="section"><a href="customize/extract_from.html"> Extract an
+ Attribute Value to Generate Output (Karma)</a></span></dt>
+</dl></div>
+<a name="spirit.advanced.customize.why_do_we_need_attribute_customization_points"></a><h4>
+<a name="id724737"></a>
+ <a href="customize.html#spirit.advanced.customize.why_do_we_need_attribute_customization_points">Why
+ do we need Attribute Customization Points</a>
+ </h4>
+<div class="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 colspan="2" align="left" valign="top"><p>
+ Before you read on please be aware that the interfaces described in this
+ section are not finalized and may change in the future without attempting
+ to be backwards compatible. We document the customization point interfaces
+ anyways as we think they are important. Understanding customization points
+ helps understanding Spirit. Additionally they prove to be powerful tools
+ enabling full integration of the user's data structures with <span class="emphasis"><em>Qi's</em></span>
+ parsers and <span class="emphasis"><em>Karma's</em></span> generators.
+ </p></td></tr>
+</table></div>
+<p>
+ Spirit has been written
+ with extensibility in mind. It provides many different attribute customization
+ points allowing to integrate custom data types with the process of parsing
+ in <span class="emphasis"><em>Spirit.Qi</em></span> or output generation with <span class="emphasis"><em>Spirit.Karma</em></span>.
+ All attribute customization points are exposed using a similar technique:
+ full or partial template specialization. Spirit
+ generally implements the main template, providing a default implementation.
+ You as the user have to provide a partial or full specialization of this
+ template for the data types you want to integrate with the library. In fact,
+ the library uses these customization points itself for instance to handle
+ the magic of the <tt class="computeroutput"><span class="identifier">unused_type</span></tt>
+ attribute type.
+ </p>
+<p>
+ Here is an example showing the <a href="customize/store_value/container_value.html" title="
+ Determine the Type to be Stored in a Container (Qi)"><tt class="computeroutput"><span class="identifier">container_value</span></tt></a> customization point
+ used by different parsers (such as Kleene,
+ Plus, etc.) to find
+ the attribute type to be stored in a supplied STL container:
+ </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">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="comment">/* = void*/</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">container_value</span>
+ <span class="special">:</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">remove_value_const</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">::</span><span class="identifier">value_type</span><span class="special">&gt;</span>
+<span class="special">{};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ This template is instantiated by the library at the appropriate places while
+ using the supplied container type as the template argument. The embedded
+ <tt class="computeroutput"><span class="identifier">type</span></tt> is used as the attribute
+ type while parsing the elements to be store in that container.
+ </p>
+<p>
+ The following example shows the predefined specialization for <tt class="computeroutput"><span class="identifier">unused_type</span></tt>:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">container_value</span><span class="special">&lt;</span><span class="identifier">unused_type</span><span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unused_type</span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ which defines its embedded <tt class="computeroutput"><span class="identifier">type</span></tt>
+ to be <tt class="computeroutput"><span class="identifier">unused_type</span></tt> as well,
+ this way propagating the 'don't care' attribute status to the embedded parser.
+ </p>
+<p>
+ All attribute customization points follow the same scheme. The last template
+ parameter is always <tt class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Enable</span> <span class="special">=</span> <span class="keyword">void</span></tt> allowing to apply SFINAE for fine grained
+ control over the template specialization process. But most of the time you
+ can safely forget about its existence.
+ </p>
+<p>
+ The following sections will describe all customization points, together with
+ a description which needs to be specialized for what purpose.
+ </p>
+<a name="spirit.advanced.customize.the_usage_of_customization_points"></a><h4>
+<a name="id725224"></a>
+ <a href="customize.html#spirit.advanced.customize.the_usage_of_customization_points">The
+ Usage of Customization Points</a>
+ </h4>
+<p>
+ The different customizations points are used by different parts of the library.
+ Part of the customizations points are used by both, <span class="emphasis"><em>Spirit.Qi</em></span>
+ and <span class="emphasis"><em>Spirit.Karma</em></span>, whereas others are specialized to
+ be applied for one of the sub-libraries only. We will explain when a specific
+ customization point needs to be implemented and, equally important, which
+ customization points need to be implemented at the same time. Often it is
+ not sufficient to provide a specialization for one single customization point
+ only, in this case you as the user have to provide all necessary customizations
+ for your data type you want to integrate with the library.
+ </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="indepth/parsers_indepth.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced.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="customize/is_container.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,67 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Store a Parsed
+ Attribute Value (Qi)</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../customize.html" title=" Customization of Spirit's
+ Attribute Handling">
+<link rel="previous" href="transform.html" title=" Transform an
+ Attribute to a Different Type (Qi and Karma)">
+<link rel="next" href="assign_to/assign_to_attribute_from_iterators.html" title="
+ Store an Attribute after a Parser Produced a Pair of Iterators (Qi)">
+</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="transform.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.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="assign_to/assign_to_attribute_from_iterators.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.advanced.customize.assign_to"></a><a href="assign_to.html" title=" Store a Parsed
+ Attribute Value (Qi)"> Store a Parsed
+ Attribute Value (Qi)</a>
+</h4></div></div>
+<div></div>
+</div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="assign_to/assign_to_attribute_from_iterators.html">
+ Store an Attribute after a Parser Produced a Pair of Iterators (Qi)</a></span></dt>
+<dt><span class="section"><a href="assign_to/assign_to_attribute_from_value.html">
+ Store an Attribute Value after a Parser Produced a Value (Qi)</a></span></dt>
+</dl></div>
+<p>
+ After parsing input and generting an attribute value this value needs to
+ assigned to the attribute instance provided by the user. The customization
+ points <tt class="computeroutput"><span class="identifier">assign_to_attribute_from_iterators</span></tt>
+ and <tt class="computeroutput"><span class="identifier">assign_to_attribute_from_value</span></tt>
+ are utilized to adapt this assignment to the concrete type to be assigned.
+ This section describes both.
+ </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="transform.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.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="assign_to/assign_to_attribute_from_iterators.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_iterators.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_iterators.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,290 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Store an Attribute after a Parser Produced a Pair of Iterators (Qi)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../assign_to.html" title=" Store a Parsed
+ Attribute Value (Qi)">
+<link rel="previous" href="../assign_to.html" title=" Store a Parsed
+ Attribute Value (Qi)">
+<link rel="next" href="assign_to_attribute_from_value.html" title="
+ Store an Attribute Value after a Parser Produced a Value (Qi)">
+</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="../assign_to.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign_to.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="assign_to_attribute_from_value.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators"></a><a href="assign_to_attribute_from_iterators.html" title="
+ Store an Attribute after a Parser Produced a Pair of Iterators (Qi)">
+ Store an Attribute after a Parser Produced a Pair of Iterators (Qi)</a>
+</h5></div></div>
+<div></div>
+</div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.assign_to_attribute_from_iterators"></a><h6>
+<a name="id728724"></a>
+ assign_to_attribute_from_iterators
+ </h6>
+<p>
+ The template <tt class="computeroutput"><span class="identifier">assign_to_attribute_from_iterators</span></tt>
+ is a type used as an attribute customization point. It is invoked by
+ the those <span class="emphasis"><em>Qi</em></span> parsers not producing any attribute
+ value but returning a pair of iterators pointing to the matched input
+ sequence. It is used to either store the iterator pair into the attribute
+ instance provided by the user or to convert the iterator pair into an
+ attribute as provided by the user.
+ </p>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.module_headers"></a><h6>
+<a name="id728780"></a>
+ <a href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.module_headers">Module
+ Headers</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="identifier">detail</span><span class="special">/</span><span class="identifier">assign_to</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see Include Structure.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ This header file does not need to be included directly by any user
+ program as it is normally included by other Spirit header files relying
+ on its content.
+ </p></td></tr>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.namespace"></a><h6>
+<a name="id728920"></a>
+ Namespace
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th><p>
+ Name
+ </p></th></tr></thead>
+<tbody><tr><td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></tt>
+ </p></td></tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.synopsis"></a><h6>
+<a name="id729020"></a>
+ Synopsis
+ </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Attrib</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">assign_to_attribute_from_iterators</span><span class="special">;</span>
+</pre>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.template_parameters"></a><h6>
+<a name="id729138"></a>
+ <a href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.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>
+ <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ </p></td>
+<td><p>
+ The type, <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ is the type of the attribute as passed in by the user.
+ </p></td>
+<td><p>
+ none
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Iterator</span></tt>
+ </p></td>
+<td><p>
+ The type, <tt class="computeroutput"><span class="identifier">Iterator</span></tt>
+ is the type of the iterators as produced by the parser.
+ </p></td>
+<td><p>
+ none
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Enable</span></tt>
+ </p></td>
+<td><p>
+ Helper template parameter usable to selectively enable or disable
+ certain specializations of <tt class="computeroutput"><span class="identifier">assign_to_attribute_from_value</span></tt>
+ utilizing SFINAE (i.e. <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></tt>
+ or <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></tt>).
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="keyword">void</span></tt>
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.notation"></a><h6>
+<a name="id729412"></a>
+ Notation
+ </h6>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Attrib</span></tt></span></dt>
+<dd><p>
+ A type to be used as the target to store the attribute value in.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">attr</span></tt></span></dt>
+<dd><p>
+ A attribute instance of type <tt class="computeroutput"><span class="identifier">Attrib</span></tt>.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Iterator</span></tt></span></dt>
+<dd><p>
+ The iterator type used by the parser. This type usually corresponds
+ to the iterators as passed in by the user.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">begin</span></tt>,
+ <tt class="computeroutput"><span class="identifier">end</span></tt></span></dt>
+<dd><p>
+ Iterator instances of type <tt class="computeroutput"><span class="identifier">Iterator</span></tt>
+ pointing to the begin and the end of the matched input sequence.
+ </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.expression_semantics"></a><h6>
+<a name="id729580"></a>
+ <a href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<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>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">assign_to_attribute_from_iterators</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">,</span> <span class="identifier">Iterator</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span></pre>
+<p>
+ </p>
+</td>
+<td><p>
+ Use the iterators <tt class="computeroutput"><span class="identifier">begin</span></tt>
+ and <tt class="computeroutput"><span class="identifier">end</span></tt> to initialize
+ the attribute <tt class="computeroutput"><span class="identifier">attr</span></tt>.
+ </p></td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.predefined_specializations"></a><h6>
+<a name="id729783"></a>
+ <a href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.predefined_specializations">Predefined
+ Specializations</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th><p>
+ Type
+ </p></th>
+<th><p>
+ Semantics
+ </p></th>
+</tr></thead>
+<tbody>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Attrib</span></tt>, <tt class="computeroutput"><span class="identifier">Iterator</span></tt>
+ </p></td>
+<td><p>
+ Execute an assignment <tt class="computeroutput"><span class="identifier">attr</span>
+ <span class="special">=</span> <span class="identifier">Attrib</span><span class="special">(</span><span class="identifier">begin</span><span class="special">,</span> <span class="identifier">end</span><span class="special">)</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt>,
+ <tt class="computeroutput"><span class="identifier">T</span></tt>
+ </p></td>
+<td><p>
+ Do nothing.
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.when_to_implement"></a><h6>
+<a name="id729980"></a>
+ <a href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.when_to_implement">When
+ to implement</a>
+ </h6>
+<p>
+ The customization point <tt class="computeroutput"><span class="identifier">assign_to_attribute_from_iterators</span></tt>
+ needs to be implemented for a specific type whenever the default implementation
+ as shown above is not applicable. Examples for this could be that the
+ type <tt class="computeroutput"><span class="identifier">Attrib</span></tt> is not constructible
+ from the pair of iterators.
+ </p>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.example"></a><h6>
+<a name="id730039"></a>
+ Example
+ </h6>
+<p>
+ TBD
+ </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="../assign_to.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign_to.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="assign_to_attribute_from_value.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_value.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_value.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,284 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Store an Attribute Value after a Parser Produced a Value (Qi)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../assign_to.html" title=" Store a Parsed
+ Attribute Value (Qi)">
+<link rel="previous" href="assign_to_attribute_from_iterators.html" title="
+ Store an Attribute after a Parser Produced a Pair of Iterators (Qi)">
+<link rel="next" href="../store_value.html" title=" Store Parsed
+ Attribute Values into a Container (Qi)">
+</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="assign_to_attribute_from_iterators.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign_to.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="../store_value.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value"></a><a href="assign_to_attribute_from_value.html" title="
+ Store an Attribute Value after a Parser Produced a Value (Qi)">
+ Store an Attribute Value after a Parser Produced a Value (Qi)</a>
+</h5></div></div>
+<div></div>
+</div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.assign_to_attribute_from_value"></a><h6>
+<a name="id730091"></a>
+ assign_to_attribute_from_value
+ </h6>
+<p>
+ The template <tt class="computeroutput"><span class="identifier">assign_to_attribute_from_value</span></tt>
+ is a type used as an attribute customization point. It is invoked by
+ the all primitive <span class="emphasis"><em>Qi</em></span> parsers in order to store a
+ parsed attribute value into the attribute instance provided by the user.
+ </p>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.module_headers"></a><h6>
+<a name="id730143"></a>
+ <a href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.module_headers">Module
+ Headers</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="identifier">detail</span><span class="special">/</span><span class="identifier">assign_to</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see Include Structure.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ This header file does not need to be included directly by any user
+ program as it is normally included by other Spirit header files relying
+ on its content.
+ </p></td></tr>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.namespace"></a><h6>
+<a name="id730284"></a>
+ Namespace
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th><p>
+ Name
+ </p></th></tr></thead>
+<tbody><tr><td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></tt>
+ </p></td></tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.synopsis"></a><h6>
+<a name="id730383"></a>
+ Synopsis
+ </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Attrib</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">assign_to_attribute_from_value</span><span class="special">;</span>
+</pre>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.template_parameters"></a><h6>
+<a name="id730498"></a>
+ <a href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.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>
+ <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ </p></td>
+<td><p>
+ The type, <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ is the type of the attribute as passed in by the user.
+ </p></td>
+<td><p>
+ none
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">T</span></tt>
+ </p></td>
+<td><p>
+ The type, <tt class="computeroutput"><span class="identifier">T</span></tt> is
+ the type of the attribute instance as produced by the parser.
+ </p></td>
+<td><p>
+ none
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Enable</span></tt>
+ </p></td>
+<td><p>
+ Helper template parameter usable to selectively enable or disable
+ certain specializations of <tt class="computeroutput"><span class="identifier">assign_to_attribute_from_value</span></tt>
+ utilizing SFINAE (i.e. <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></tt>
+ or <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></tt>).
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="keyword">void</span></tt>
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.notation"></a><h6>
+<a name="id730771"></a>
+ Notation
+ </h6>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Attrib</span></tt></span></dt>
+<dd><p>
+ A type to be used as the target to store the attribute value in.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">attr</span></tt></span></dt>
+<dd><p>
+ A attribute instance of type <tt class="computeroutput"><span class="identifier">Attrib</span></tt>.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">T</span></tt></span></dt>
+<dd><p>
+ A type as produced by the parser. The parser temporarily stores its
+ parsed values using this type.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">t</span></tt></span></dt>
+<dd><p>
+ A attribute instance of type <tt class="computeroutput"><span class="identifier">T</span></tt>.
+ </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.expression_semantics"></a><h6>
+<a name="id730922"></a>
+ <a href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<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>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">assign_to_attribute_from_value</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span></pre>
+<p>
+ </p>
+</td>
+<td><p>
+ Copy (assign) the value, <tt class="computeroutput"><span class="identifier">t</span></tt>
+ to the attribute <tt class="computeroutput"><span class="identifier">attr</span></tt>.
+ </p></td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.predefined_specializations"></a><h6>
+<a name="id731100"></a>
+ <a href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.predefined_specializations">Predefined
+ Specializations</a>
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th><p>
+ Type
+ </p></th>
+<th><p>
+ Semantics
+ </p></th>
+</tr></thead>
+<tbody>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Attrib</span></tt>, <tt class="computeroutput"><span class="identifier">T</span></tt>
+ </p></td>
+<td><p>
+ Assign the argument <tt class="computeroutput"><span class="identifier">t</span></tt>
+ to <tt class="computeroutput"><span class="identifier">attr</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt>,
+ <tt class="computeroutput"><span class="identifier">T</span></tt>
+ </p></td>
+<td><p>
+ Do nothing.
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.when_to_implement"></a><h6>
+<a name="id731270"></a>
+ <a href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.when_to_implement">When
+ to implement</a>
+ </h6>
+<p>
+ The customization point <tt class="computeroutput"><span class="identifier">assign_to_attribute_from_value</span></tt>
+ needs to be implemented for a specific type whenever the default implementation
+ as shown above is not applicable. Examples for this could be that the
+ type <tt class="computeroutput"><span class="identifier">Attrib</span></tt> is not copy
+ constructible.
+ </p>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.example"></a><h6>
+<a name="id731330"></a>
+ Example
+ </h6>
+<p>
+ TBD
+ </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="assign_to_attribute_from_iterators.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign_to.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="../store_value.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/customize/clear_value.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/clear_value.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,319 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Re-Initialize
+ an Attribute Value before Parsing (Qi)</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../customize.html" title=" Customization of Spirit's
+ Attribute Handling">
+<link rel="previous" href="store_value/push_back.html" title="
+ Store a Parsed Attribute Value into a Container (Qi)">
+<link rel="next" href="extract_from.html" title=" Extract an
+ Attribute Value to Generate Output (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="store_value/push_back.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.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="extract_from.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.advanced.customize.clear_value"></a><a href="clear_value.html" title=" Re-Initialize
+ an Attribute Value before Parsing (Qi)"> Re-Initialize
+ an Attribute Value before Parsing (Qi)</a>
+</h4></div></div>
+<div></div>
+</div>
+<a name="spirit.advanced.customize.clear_value.clear_value"></a><h5>
+<a name="id735411"></a>
+ clear_value
+ </h5>
+<p>
+ The template <tt class="computeroutput"><span class="identifier">clear_value</span></tt>
+ is a type used as an attribute customization point. It is invoked by the
+ <span class="emphasis"><em>Qi</em></span> repetitive parsers (Kleene,
+ Plus, List,
+ and <a href="../../qi/reference/directive/repeat.html" title=" Repetition
+ (repeat[])">Repeat</a>)
+ in order to re-initialize the attribute instance passed to the embedded
+ parser after it has been stored in the provided container. This re-initialized
+ attribute instance is reused during the next iteration of the repetitive
+ parser.
+ </p>
+<a name="spirit.advanced.customize.clear_value.module_headers"></a><h5>
+<a name="id735497"></a>
+ <a href="clear_value.html#spirit.advanced.customize.clear_value.module_headers">Module
+ Headers</a>
+ </h5>
+<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">support</span><span class="special">/</span><span class="identifier">attributes</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see Include Structure.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ This header file does not need to be included directly by any user program
+ as it is normally included by other Spirit header files relying on its
+ content.
+ </p></td></tr>
+</table></div>
+<a name="spirit.advanced.customize.clear_value.namespace"></a><h5>
+<a name="id735627"></a>
+ Namespace
+ </h5>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th><p>
+ Name
+ </p></th></tr></thead>
+<tbody><tr><td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></tt>
+ </p></td></tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.clear_value.synopsis"></a><h5>
+<a name="id735723"></a>
+ Synopsis
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Attrib</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">clear_value</span><span class="special">;</span>
+</pre>
+<a name="spirit.advanced.customize.clear_value.template_parameters"></a><h5>
+<a name="id735818"></a>
+ <a href="clear_value.html#spirit.advanced.customize.clear_value.template_parameters">Template
+ parameters</a>
+ </h5>
+<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>
+ <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ </p></td>
+<td><p>
+ The type, <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ of the attribute to be re-initialized.
+ </p></td>
+<td><p>
+ none
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Enable</span></tt>
+ </p></td>
+<td><p>
+ Helper template parameter usable to selectively enable or disable
+ certain specializations of <tt class="computeroutput"><span class="identifier">clear_value</span></tt>
+ utilizing SFINAE (i.e. <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></tt>
+ or <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></tt>).
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="keyword">void</span></tt>
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.clear_value.notation"></a><h5>
+<a name="id736043"></a>
+ Notation
+ </h5>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Attrib</span></tt></span></dt>
+<dd><p>
+ A type to be used as a container to store attribute values in.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">attr</span></tt></span></dt>
+<dd><p>
+ A attribute instance of type <tt class="computeroutput"><span class="identifier">Attrib</span></tt>.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">T1</span></tt>,
+ <tt class="computeroutput"><span class="identifier">T2</span></tt>, ...</span></dt>
+<dd><p>
+ Arbitrary types
+ </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.clear_value.expression_semantics"></a><h5>
+<a name="id736169"></a>
+ <a href="clear_value.html#spirit.advanced.customize.clear_value.expression_semantics">Expression
+ Semantics</a>
+ </h5>
+<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>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">clear_value</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">Attrib</span><span class="special">&amp;</span> <span class="identifier">attr</span><span class="special">)</span></pre>
+<p>
+ </p>
+</td>
+<td><p>
+ Re-initialize the instance referred to by <tt class="computeroutput"><span class="identifier">attr</span></tt>
+ in the most efficient way.
+ </p></td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.clear_value.predefined_specializations"></a><h5>
+<a name="id736322"></a>
+ <a href="clear_value.html#spirit.advanced.customize.clear_value.predefined_specializations">Predefined
+ Specializations</a>
+ </h5>
+<p>
+ Spirit predefines specializations
+ of this customization point for several types. The following table lists
+ those types together with the types exposed and the corresponding semantics:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th><p>
+ Template Parameters
+ </p></th>
+<th><p>
+ Value
+ </p></th>
+</tr></thead>
+<tbody>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ </p></td>
+<td><p>
+ Re-initialize using assignment of default constructed value.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ Any type <tt class="computeroutput"><span class="identifier">T</span></tt> for
+ which <tt class="computeroutput"><span class="identifier">is_container</span><span class="special">&lt;&gt;::</span><span class="identifier">type</span></tt>
+ is <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></tt>
+ </p></td>
+<td><p>
+ Call the member function <tt class="computeroutput"><span class="identifier">attr</span><span class="special">.</span><span class="identifier">clear</span><span class="special">()</span></tt> for the passed attribute instance.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">&gt;</span></tt>
+ </p></td>
+<td><p>
+ Clear the <tt class="computeroutput"><span class="identifier">optional</span></tt>
+ instance and leave it uninitialized.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special">&lt;</span><span class="identifier">T1</span><span class="special">,</span>
+ <span class="identifier">T2</span><span class="special">,</span>
+ <span class="special">...&gt;</span></tt>
+ </p></td>
+<td><p>
+ Invoke the <tt class="computeroutput"><span class="identifier">clear_value</span></tt>
+ customization point for the currently held value.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">tuple</span><span class="special">&lt;</span><span class="identifier">T1</span><span class="special">,</span>
+ <span class="identifier">T2</span><span class="special">,</span>
+ <span class="special">...&gt;</span></tt>
+ </p></td>
+<td><p>
+ Invoke the <tt class="computeroutput"><span class="identifier">clear_value</span></tt>
+ customization point for all elements of the tuple.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt>
+ </p></td>
+<td><p>
+ Do nothing.
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.clear_value.when_to_implement"></a><h5>
+<a name="id736793"></a>
+ <a href="clear_value.html#spirit.advanced.customize.clear_value.when_to_implement">When
+ to Implement</a>
+ </h5>
+<p>
+ The customization point <tt class="computeroutput"><span class="identifier">clear_value</span></tt>
+ needs to be implemented for a specific type whenever this type is to be
+ used as an attribute to be stored into a STL container and if the type
+ cannot be re-initialized using one of the specializations listed above.
+ Examples for this might be types not being default constructible or container
+ types not exposing a member function <tt class="computeroutput"><span class="identifier">clear</span><span class="special">()</span></tt>.
+ </p>
+<a name="spirit.advanced.customize.clear_value.example"></a><h5>
+<a name="id736858"></a>
+ Example
+ </h5>
+<p>
+ TBD
+ </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="store_value/push_back.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.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="extract_from.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/customize/extract_from.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/extract_from.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,303 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Extract an
+ Attribute Value to Generate Output (Karma)</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../customize.html" title=" Customization of Spirit's
+ Attribute Handling">
+<link rel="previous" href="clear_value.html" title=" Re-Initialize
+ an Attribute Value before Parsing (Qi)">
+<link rel="next" href="../../support.html" title=" Supporting libraries">
+</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="clear_value.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.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="../../support.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.advanced.customize.extract_from"></a><a href="extract_from.html" title=" Extract an
+ Attribute Value to Generate Output (Karma)"> Extract an
+ Attribute Value to Generate Output (Karma)</a>
+</h4></div></div>
+<div></div>
+</div>
+<a name="spirit.advanced.customize.extract_from.extract_from"></a><h5>
+<a name="id736907"></a>
+ extract_from
+ </h5>
+<p>
+ Before generating output for an value this value needs to extracted from
+ the attribute instance provided by the user. The customization point <tt class="computeroutput"><span class="identifier">extract_from</span></tt> is utilized to adapt this
+ extraction for any data type possibly used to store the values to output.
+ </p>
+<p>
+ Short description here...
+ </p>
+<a name="spirit.advanced.customize.extract_from.module_headers"></a><h5>
+<a name="id736957"></a>
+ <a href="extract_from.html#spirit.advanced.customize.extract_from.module_headers">Module
+ Headers</a>
+ </h5>
+<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">karma</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">extract_from</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see Include Structure.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ This header file does not need to be included directly by any user program
+ as it is normally included by other Spirit header files relying on its
+ content.
+ </p></td></tr>
+</table></div>
+<a name="spirit.advanced.customize.extract_from.namespace"></a><h5>
+<a name="id737096"></a>
+ Namespace
+ </h5>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th><p>
+ Name
+ </p></th></tr></thead>
+<tbody><tr><td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></tt>
+ </p></td></tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.extract_from.synopsis"></a><h5>
+<a name="id737193"></a>
+ Synopsis
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Attrib</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">extract_from_attribute</span><span class="special">;</span>
+</pre>
+<a name="spirit.advanced.customize.extract_from.template_parameters"></a><h5>
+<a name="id737287"></a>
+ <a href="extract_from.html#spirit.advanced.customize.extract_from.template_parameters">Template
+ parameters</a>
+ </h5>
+<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>
+ <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ </p></td>
+<td><p>
+ The type, <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ of the attribute to be used to generate output from.
+ </p></td>
+<td><p>
+ none
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Enable</span></tt>
+ </p></td>
+<td><p>
+ Helper template parameter usable to selectively enable or disable
+ certain specializations of <tt class="computeroutput"><span class="identifier">clear_value</span></tt>
+ utilizing SFINAE (i.e. <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></tt>
+ or <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></tt>).
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="keyword">void</span></tt>
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.extract_from.notation"></a><h5>
+<a name="id737512"></a>
+ Notation
+ </h5>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Attrib</span></tt></span></dt>
+<dd><p>
+ A type to be used to generate output from.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">attr</span></tt></span></dt>
+<dd><p>
+ A attribute instance of type <tt class="computeroutput"><span class="identifier">Attrib</span></tt>.
+ </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.extract_from.expression_semantics"></a><h5>
+<a name="id737599"></a>
+ <a href="extract_from.html#spirit.advanced.customize.extract_from.expression_semantics">Expression
+ Semantics</a>
+ </h5>
+<p>
+ Semantics of an expression is defined only where it differs from, or is
+ not defined in _concept-of<span class="underline">XXX</span>.
+ </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>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">extract_from_attribute</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">attr</span><span class="special">)</span></pre>
+<p>
+ </p>
+</td>
+<td><p>
+ Extract the value to generate output from and return it to the
+ caller.
+ </p></td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.extract_from.predefined_specializations"></a><h5>
+<a name="id737742"></a>
+ <a href="extract_from.html#spirit.advanced.customize.extract_from.predefined_specializations">Predefined
+ Specializations</a>
+ </h5>
+<p>
+ Spirit predefines specializations
+ of this customization point for several types. The following table lists
+ those types together with the types exposed and the corresponding semantics:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th><p>
+ Template Parameters
+ </p></th>
+<th><p>
+ Value
+ </p></th>
+</tr></thead>
+<tbody>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ </p></td>
+<td><p>
+ The exposed typedef <tt class="computeroutput"><span class="identifier">type</span></tt>
+ is defined to <tt class="computeroutput"><span class="identifier">Attrib</span>
+ <span class="keyword">const</span><span class="special">&amp;</span></tt>.
+ The function <tt class="computeroutput"><span class="identifier">call</span><span class="special">()</span></tt> returns the argument by reference
+ without change.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">&gt;</span></tt>
+ </p></td>
+<td><p>
+ The exposed typedef <tt class="computeroutput"><span class="identifier">type</span></tt>
+ is defined to <tt class="computeroutput"><span class="identifier">Attrib</span>
+ <span class="keyword">const</span><span class="special">&amp;</span></tt>.
+ The function <tt class="computeroutput"><span class="identifier">call</span><span class="special">()</span></tt> returns the value held by the
+ <tt class="computeroutput"><span class="identifier">optional</span><span class="special">&lt;&gt;</span></tt>
+ argument by reference without change.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">reference_wrapper</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">&gt;</span></tt>
+ </p></td>
+<td><p>
+ The exposed typedef <tt class="computeroutput"><span class="identifier">type</span></tt>
+ is defined to <tt class="computeroutput"><span class="identifier">Attrib</span>
+ <span class="keyword">const</span><span class="special">&amp;</span></tt>.
+ The function <tt class="computeroutput"><span class="identifier">call</span><span class="special">()</span></tt> returns the value held by the
+ <tt class="computeroutput"><span class="identifier">reference_wrapper</span><span class="special">&lt;&gt;</span></tt> argument by reference without
+ change.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt>
+ </p></td>
+<td><p>
+ The exposed typedef <tt class="computeroutput"><span class="identifier">type</span></tt>
+ is defined to <tt class="computeroutput"><span class="identifier">unused_type</span></tt>.
+ The function <tt class="computeroutput"><span class="identifier">call</span><span class="special">()</span></tt> returns an instance of <tt class="computeroutput"><span class="identifier">unused_type</span></tt>.
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.extract_from.when_to_implement"></a><h5>
+<a name="id738237"></a>
+ <a href="extract_from.html#spirit.advanced.customize.extract_from.when_to_implement">When
+ to implement</a>
+ </h5>
+<p>
+ The customization point <tt class="computeroutput"><span class="identifier">extract_from_attribute</span></tt>
+ needs to be implemented for a specific type whenever the default implementation
+ as shown above is not applicable. Examples for this could be that the type
+ to be extracted is different from <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ and is not copy constructible.
+ </p>
+<a name="spirit.advanced.customize.extract_from.example"></a><h5>
+<a name="id738294"></a>
+ Example
+ </h5>
+<p>
+ TBD
+ </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="clear_value.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.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="../../support.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/customize/is_container.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/is_container.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,439 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Determine
+ if a Type Should be Treated as a Container (Qi and Karma)</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../customize.html" title=" Customization of Spirit's
+ Attribute Handling">
+<link rel="previous" href="../customize.html" title=" Customization of Spirit's
+ Attribute Handling">
+<link rel="next" href="transform.html" title=" Transform an
+ Attribute to a Different Type (Qi and 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="../customize.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.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="transform.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.advanced.customize.is_container"></a><a href="is_container.html" title=" Determine
+ if a Type Should be Treated as a Container (Qi and Karma)"> Determine
+ if a Type Should be Treated as a Container (Qi and Karma)</a>
+</h4></div></div>
+<div></div>
+</div>
+<a name="spirit.advanced.customize.is_container.is_container"></a><h5>
+<a name="id725294"></a>
+ is_container
+ </h5>
+<p>
+ The template <tt class="computeroutput"><span class="identifier">is_container</span></tt>
+ is a template meta-function used as an attribute customization point. It
+ is invoked by the <span class="emphasis"><em>Qi</em></span> <a href="../../qi/reference/operator/sequence.html" title=" Sequence
+ (a &gt;&gt;
+ b)">Sequence</a>
+ (<tt class="computeroutput"><span class="special">&gt;&gt;</span></tt>) and <span class="emphasis"><em>Karma</em></span>
+ <a href="../../karma/reference/operator/sequence.html" title=" Sequences
+ (a &lt;&lt;
+ b)">Sequence (<tt class="computeroutput"><span class="special">&lt;&lt;</span></tt>)</a> operators in order to determine
+ whether a supplied attribute can potentially be treated as a container.
+ </p>
+<a name="spirit.advanced.customize.is_container.header"></a><h5>
+<a name="id725389"></a>
+ Header
+ </h5>
+<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">support</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see Include Structure.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ This header file does not need to be included directly by any user program
+ as it is normally included by other Spirit header files relying on its
+ content.
+ </p></td></tr>
+</table></div>
+<a name="spirit.advanced.customize.is_container.namespace"></a><h5>
+<a name="id725515"></a>
+ Namespace
+ </h5>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th><p>
+ Name
+ </p></th></tr></thead>
+<tbody><tr><td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></tt>
+ </p></td></tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.is_container.synopsis"></a><h5>
+<a name="id725612"></a>
+ Synopsis
+ </h5>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">is_container</span><span class="special">;</span>
+</pre>
+<a name="spirit.advanced.customize.is_container.template_parameters"></a><h5>
+<a name="id725707"></a>
+ <a href="is_container.html#spirit.advanced.customize.is_container.template_parameters">Template
+ parameters</a>
+ </h5>
+<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>
+ <tt class="computeroutput"><span class="identifier">Container</span></tt>
+ </p></td>
+<td><p>
+ The type, <tt class="computeroutput"><span class="identifier">Container</span></tt>
+ needs to be tested whether it has to be treated as a container
+ </p></td>
+<td><p>
+ none
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Enable</span></tt>
+ </p></td>
+<td><p>
+ Helper template parameter usable to selectively enable or disable
+ certain specializations of <tt class="computeroutput"><span class="identifier">is_container</span></tt>
+ utilizing SFINAE (i.e. <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></tt>
+ or <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></tt>).
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="keyword">void</span></tt>
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.is_container.notation"></a><h5>
+<a name="id725932"></a>
+ Notation
+ </h5>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">C</span></tt></span></dt>
+<dd><p>
+ A type to be tested whether it needs to be treated as a container.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">T1</span></tt>,
+ <tt class="computeroutput"><span class="identifier">T2</span></tt>, ...</span></dt>
+<dd><p>
+ Arbitrary types
+ </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.is_container.expression_semantics"></a><h5>
+<a name="id726022"></a>
+ <a href="is_container.html#spirit.advanced.customize.is_container.expression_semantics">Expression
+ Semantics</a>
+ </h5>
+<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>
+ <tt class="computeroutput"><span class="identifier">is_container</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
+ </p></td>
+<td><p>
+ Metafunction that evaluates to <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></tt>
+ if a given type, <tt class="computeroutput"><span class="identifier">C</span></tt>,
+ is to be treated as a container, <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></tt>
+ otherwise (See <a href="../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+ Boolean Constant</a>).
+ </p></td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.is_container.predefined_specializations"></a><h5>
+<a name="id726198"></a>
+ <a href="is_container.html#spirit.advanced.customize.is_container.predefined_specializations">Predefined
+ Specializations</a>
+ </h5>
+<p>
+ Spirit predefines specializations
+ of this customization point for several types. The following table lists
+ those types together with the conditions for which the corresponding specializations
+ will evaluate to <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></tt> (see <a href="../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+ Boolean Constant</a>):
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th><p>
+ Template Parameters
+ </p></th>
+<th><p>
+ Value
+ </p></th>
+</tr></thead>
+<tbody>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">T</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></tt> if <tt class="computeroutput"><span class="identifier">T</span></tt>
+ has the following embedded types defined: <tt class="computeroutput"><span class="identifier">value_type</span></tt>,
+ <tt class="computeroutput"><span class="identifier">iterator</span></tt>, <tt class="computeroutput"><span class="identifier">size_type</span></tt>, and<tt class="computeroutput"><span class="identifier">reference</span></tt>.
+ Otherwise it will return <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">is_container</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special">&lt;</span><span class="identifier">T1</span><span class="special">,</span>
+ <span class="identifier">T2</span><span class="special">,</span>
+ <span class="special">...&gt;</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></tt> if at least one of the
+ <tt class="computeroutput"><span class="identifier">is_container</span><span class="special">&lt;</span><span class="identifier">TN</span><span class="special">&gt;::</span><span class="identifier">type</span></tt> returns <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></tt>
+ (where <tt class="computeroutput"><span class="identifier">TN</span></tt> is <tt class="computeroutput"><span class="identifier">T1</span></tt>, <tt class="computeroutput"><span class="identifier">T2</span></tt>,
+ ...). Otherwise it will return <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></tt>.
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.is_container.when_to_implement"></a><h5>
+<a name="id726779"></a>
+ <a href="is_container.html#spirit.advanced.customize.is_container.when_to_implement">When
+ to implement</a>
+ </h5>
+<p>
+ The customization point <tt class="computeroutput"><span class="identifier">is_container</span></tt>
+ needs to be implemented for a specific type whenever this type is to be
+ used as an attribute in place of a STL container. It is applicable for
+ parsers (<span class="emphasis"><em>Spirit.Qi</em></span>) and generators (<span class="emphasis"><em>Spirit.Karma</em></span>).
+ As a rule of thumb: it has to be implemented whenever a certain type is
+ to be passed as an attribute to a parser or a generator normally exposing
+ a STL container and if the type does not expose the interface of a STL
+ container (i.e. <tt class="computeroutput"><span class="identifier">is_container</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
+ would normally return <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></tt>).
+ These components have an attribute propagation rule in the form:
+ </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">):</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
+</pre>
+<p>
+ where <tt class="computeroutput"><span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></tt> stands
+ for any meaningful operation on the component <tt class="computeroutput"><span class="identifier">a</span></tt>.
+ </p>
+<a name="spirit.advanced.customize.is_container.related_attribute_customization_points"></a><h5>
+<a name="id727008"></a>
+ <a href="is_container.html#spirit.advanced.customize.is_container.related_attribute_customization_points">Related
+ Attribute Customization Points</a>
+ </h5>
+<p>
+ If this customization point is implemented, the following other customization
+ points need to be implemented as well.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th><p>
+ Name
+ </p></th>
+<th><p>
+ When to implement
+ </p></th>
+</tr></thead>
+<tbody>
+<tr>
+<td><p>
+ <a href="store_value/container_value.html" title="
+ Determine the Type to be Stored in a Container (Qi)"><tt class="computeroutput"><span class="identifier">container_value</span></tt></a>
+ </p></td>
+<td><p>
+ Needs to be implemented whenever <tt class="computeroutput"><span class="identifier">is_container</span></tt>
+ is implemented.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="store_value/push_back.html" title="
+ Store a Parsed Attribute Value into a Container (Qi)"><tt class="computeroutput"><span class="identifier">push_back_container</span></tt></a>
+ </p></td>
+<td><p>
+ Qi: List,
+ Kleene,
+ Plus,
+ <a href="../../qi/reference/directive/repeat.html" title=" Repetition
+ (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">container_iterator</span></tt>
+ </p></td>
+<td><p>
+ Karma: <a href="../../karma/reference/operator/list.html" title=" Lists (a % b)">List
+ (<tt class="computeroutput"><span class="special">%</span></tt>)</a>, <a href="../../karma/reference/operator/kleene.html" title=" Kleene Star
+ (*a)">Kleene (unary
+ <tt class="computeroutput"><span class="special">*</span></tt>)</a>, <a href="../../karma/reference/operator/plus.html" title=" Plus (+a)">Plus
+ (unary <tt class="computeroutput"><span class="special">+</span></tt>)</a>,
+ <a href="../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">begin_container</span></tt>
+ </p></td>
+<td><p>
+ Karma: <a href="../../karma/reference/operator/list.html" title=" Lists (a % b)">List
+ (<tt class="computeroutput"><span class="special">%</span></tt>)</a>, <a href="../../karma/reference/operator/kleene.html" title=" Kleene Star
+ (*a)">Kleene (unary
+ <tt class="computeroutput"><span class="special">*</span></tt>)</a>, <a href="../../karma/reference/operator/plus.html" title=" Plus (+a)">Plus
+ (unary <tt class="computeroutput"><span class="special">+</span></tt>)</a>,
+ <a href="../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">end_container</span></tt>
+ </p></td>
+<td><p>
+ Karma: <a href="../../karma/reference/operator/list.html" title=" Lists (a % b)">List
+ (<tt class="computeroutput"><span class="special">%</span></tt>)</a>, <a href="../../karma/reference/operator/kleene.html" title=" Kleene Star
+ (*a)">Kleene (unary
+ <tt class="computeroutput"><span class="special">*</span></tt>)</a>, <a href="../../karma/reference/operator/plus.html" title=" Plus (+a)">Plus
+ (unary <tt class="computeroutput"><span class="special">+</span></tt>)</a>,
+ <a href="../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">deref_iterator</span></tt>
+ </p></td>
+<td><p>
+ Karma: <a href="../../karma/reference/operator/list.html" title=" Lists (a % b)">List
+ (<tt class="computeroutput"><span class="special">%</span></tt>)</a>, <a href="../../karma/reference/operator/kleene.html" title=" Kleene Star
+ (*a)">Kleene (unary
+ <tt class="computeroutput"><span class="special">*</span></tt>)</a>, <a href="../../karma/reference/operator/plus.html" title=" Plus (+a)">Plus
+ (unary <tt class="computeroutput"><span class="special">+</span></tt>)</a>,
+ <a href="../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">next_iterator</span></tt>
+ </p></td>
+<td><p>
+ Karma: <a href="../../karma/reference/operator/list.html" title=" Lists (a % b)">List
+ (<tt class="computeroutput"><span class="special">%</span></tt>)</a>, <a href="../../karma/reference/operator/kleene.html" title=" Kleene Star
+ (*a)">Kleene (unary
+ <tt class="computeroutput"><span class="special">*</span></tt>)</a>, <a href="../../karma/reference/operator/plus.html" title=" Plus (+a)">Plus
+ (unary <tt class="computeroutput"><span class="special">+</span></tt>)</a>,
+ <a href="../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">compare_iterators</span></tt>
+ </p></td>
+<td><p>
+ Karma: <a href="../../karma/reference/operator/list.html" title=" Lists (a % b)">List
+ (<tt class="computeroutput"><span class="special">%</span></tt>)</a>, <a href="../../karma/reference/operator/kleene.html" title=" Kleene Star
+ (*a)">Kleene (unary
+ <tt class="computeroutput"><span class="special">*</span></tt>)</a>, <a href="../../karma/reference/operator/plus.html" title=" Plus (+a)">Plus
+ (unary <tt class="computeroutput"><span class="special">+</span></tt>)</a>,
+ <a href="../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.is_container.example"></a><h5>
+<a name="id727794"></a>
+ Example
+ </h5>
+<p>
+ TBD
+ </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="../customize.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.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="transform.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,70 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Store Parsed
+ Attribute Values into a Container (Qi)</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../customize.html" title=" Customization of Spirit's
+ Attribute Handling">
+<link rel="previous" href="assign_to/assign_to_attribute_from_value.html" title="
+ Store an Attribute Value after a Parser Produced a Value (Qi)">
+<link rel="next" href="store_value/container_value.html" title="
+ Determine the Type to be Stored in a Container (Qi)">
+</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="assign_to/assign_to_attribute_from_value.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.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="store_value/container_value.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.advanced.customize.store_value"></a><a href="store_value.html" title=" Store Parsed
+ Attribute Values into a Container (Qi)"> Store Parsed
+ Attribute Values into a Container (Qi)</a>
+</h4></div></div>
+<div></div>
+</div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="store_value/container_value.html">
+ Determine the Type to be Stored in a Container (Qi)</a></span></dt>
+<dt><span class="section"><a href="store_value/push_back.html">
+ Store a Parsed Attribute Value into a Container (Qi)</a></span></dt>
+</dl></div>
+<p>
+ In order to customize Spirit to accept a given data type as a container
+ for elements parsed by any of the repetitive parsers (Kleene,
+ Plus, List,
+ and <a href="../../qi/reference/directive/repeat.html" title=" Repetition
+ (repeat[])">Repeat</a>)
+ two attribute customization points have to be specialized: <a href="store_value/container_value.html" title="
+ Determine the Type to be Stored in a Container (Qi)"><tt class="computeroutput"><span class="identifier">container_value</span></tt></a> and <a href="store_value/push_back.html" title="
+ Store a Parsed Attribute Value into a Container (Qi)"><tt class="computeroutput"><span class="identifier">push_back_container</span></tt></a>. This section
+ describes both.
+ </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="assign_to/assign_to_attribute_from_value.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.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="store_value/container_value.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/container_value.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/container_value.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,351 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Determine the Type to be Stored in a Container (Qi)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../store_value.html" title=" Store Parsed
+ Attribute Values into a Container (Qi)">
+<link rel="previous" href="../store_value.html" title=" Store Parsed
+ Attribute Values into a Container (Qi)">
+<link rel="next" href="push_back.html" title="
+ Store a Parsed Attribute Value into a Container (Qi)">
+</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="../store_value.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../store_value.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="push_back.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.advanced.customize.store_value.container_value"></a><a href="container_value.html" title="
+ Determine the Type to be Stored in a Container (Qi)">
+ Determine the Type to be Stored in a Container (Qi)</a>
+</h5></div></div>
+<div></div>
+</div>
+<a name="spirit.advanced.customize.store_value.container_value.container_value"></a><h6>
+<a name="id731482"></a>
+ container_value
+ </h6>
+<p>
+ The template <tt class="computeroutput"><span class="identifier">container_value</span></tt>
+ is a template meta function used as an attribute customization point.
+ It is invoked by the <span class="emphasis"><em>Qi</em></span> repetitive parsers (Kleene, Plus,
+ List, and <a href="../../../qi/reference/directive/repeat.html" title=" Repetition
+ (repeat[])">Repeat</a>) to determine
+ the type to store in a container.
+ </p>
+<a name="spirit.advanced.customize.store_value.container_value.module_headers"></a><h6>
+<a name="id731566"></a>
+ <a href="container_value.html#spirit.advanced.customize.store_value.container_value.module_headers">Module
+ Headers</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">support</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see Include Structure.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ This header file does not need to be included directly by any user
+ program as it is normally included by other Spirit header files relying
+ on its content.
+ </p></td></tr>
+</table></div>
+<a name="spirit.advanced.customize.store_value.container_value.namespace"></a><h6>
+<a name="id731696"></a>
+ Namespace
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th><p>
+ Name
+ </p></th></tr></thead>
+<tbody><tr><td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></tt>
+ </p></td></tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.container_value.synopsis"></a><h6>
+<a name="id731792"></a>
+ Synopsis
+ </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">container_value</span><span class="special">;</span>
+</pre>
+<a name="spirit.advanced.customize.store_value.container_value.template_parameters"></a><h6>
+<a name="id731890"></a>
+ <a href="container_value.html#spirit.advanced.customize.store_value.container_value.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>
+ <tt class="computeroutput"><span class="identifier">Container</span></tt>
+ </p></td>
+<td><p>
+ The type, <tt class="computeroutput"><span class="identifier">Container</span></tt>
+ needs to be tested whether it has to be treated as a container
+ </p></td>
+<td><p>
+ none
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Enable</span></tt>
+ </p></td>
+<td><p>
+ Helper template parameter usable to selectively enable or disable
+ certain specializations of <tt class="computeroutput"><span class="identifier">container_value</span></tt>
+ utilizing SFINAE (i.e. <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></tt>
+ or <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></tt>).
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="keyword">void</span></tt>
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.container_value.notation"></a><h6>
+<a name="id732114"></a>
+ Notation
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">C</span></tt></span></dt>
+<dd><p>
+ A type to be tested whether it needs to be treated as a container.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">T1</span></tt>,
+ <tt class="computeroutput"><span class="identifier">T2</span></tt>, ...</span></dt>
+<dd><p>
+ Arbitrary types
+ </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.store_value.container_value.expression_semantics"></a><h6>
+<a name="id732206"></a>
+ <a href="container_value.html#spirit.advanced.customize.store_value.container_value.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<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>
+ <tt class="computeroutput"><span class="identifier">container_value</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
+ </p></td>
+<td><p>
+ Metafunction that evaluates to the type to be stored in a given
+ container type, <tt class="computeroutput"><span class="identifier">C</span></tt>.
+ </p></td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.container_value.predefined_specializations"></a><h6>
+<a name="id732332"></a>
+ <a href="container_value.html#spirit.advanced.customize.store_value.container_value.predefined_specializations">Predefined
+ Specializations</a>
+ </h6>
+<p>
+ Spirit predefines
+ specializations of this customization point for several types. The following
+ table lists those types together with the types exposed and the corresponding
+ semantics:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th><p>
+ Template Parameters
+ </p></th>
+<th><p>
+ Value
+ </p></th>
+</tr></thead>
+<tbody>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">C</span></tt>
+ </p></td>
+<td><p>
+ The non-const <tt class="computeroutput"><span class="identifier">value_type</span></tt>
+ of the given container type, <tt class="computeroutput"><span class="identifier">C</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">container_value</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special">&lt;</span><span class="identifier">T1</span><span class="special">,</span>
+ <span class="identifier">T2</span><span class="special">,</span>
+ <span class="special">...&gt;</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">container_value</span><span class="special">&lt;</span><span class="identifier">TN</span><span class="special">&gt;::</span><span class="identifier">value</span></tt>
+ for the first <tt class="computeroutput"><span class="identifier">TN</span></tt>
+ (out of <tt class="computeroutput"><span class="identifier">T1</span></tt>,
+ <tt class="computeroutput"><span class="identifier">T2</span></tt>, ...) for
+ which <tt class="computeroutput"><span class="identifier">is_container</span><span class="special">&lt;</span><span class="identifier">TN</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
+ evaluates to <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></tt>.
+ Otherwise it will return <tt class="computeroutput"><span class="identifier">unused_type</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">unused_type</span></tt>.
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.container_value.when_to_implement"></a><h6>
+<a name="id732797"></a>
+ <a href="container_value.html#spirit.advanced.customize.store_value.container_value.when_to_implement">When
+ to implement</a>
+ </h6>
+<p>
+ The customization point <tt class="computeroutput"><span class="identifier">is_container</span></tt>
+ needs to be implemented for a specific type whenever this type is to
+ be used as an attribute in place of a STL container. It is applicable
+ for parsers (<span class="emphasis"><em>Spirit.Qi</em></span>) only. As a rule of thumb:
+ it has to be implemented whenever a certain type is to be passed as an
+ attribute to a parser normally exposing a STL container and if the type
+ does not expose the interface of a STL container (i.e. no embedded typedef
+ for <tt class="computeroutput"><span class="identifier">value_type</span></tt>). These
+ components have an attribute propagation rule in the form:
+ </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">):</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
+</pre>
+<p>
+ where <tt class="computeroutput"><span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></tt>
+ stands for any meaningful operation on the component <tt class="computeroutput"><span class="identifier">a</span></tt>.
+ </p>
+<a name="spirit.advanced.customize.store_value.container_value.related_attribute_customization_points"></a><h6>
+<a name="id732979"></a>
+ <a href="container_value.html#spirit.advanced.customize.store_value.container_value.related_attribute_customization_points">Related
+ Attribute Customization Points</a>
+ </h6>
+<p>
+ If this customization point is implemented, the following other customization
+ points need to be implemented as well.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th><p>
+ Name
+ </p></th>
+<th><p>
+ When to implement
+ </p></th>
+</tr></thead>
+<tbody>
+<tr>
+<td><p>
+ <a href="push_back.html" title="
+ Store a Parsed Attribute Value into a Container (Qi)"><tt class="computeroutput"><span class="identifier">push_back_container</span></tt></a>
+ </p></td>
+<td><p>
+ Qi: List,
+ Kleene,
+ Plus,
+ <a href="../../../qi/reference/directive/repeat.html" title=" Repetition
+ (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="../clear_value.html" title=" Re-Initialize
+ an Attribute Value before Parsing (Qi)"><tt class="computeroutput"><span class="identifier">clear_value</span></tt></a>
+ </p></td>
+<td><p>
+ Qi: List,
+ Kleene,
+ Plus,
+ <a href="../../../qi/reference/directive/repeat.html" title=" Repetition
+ (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.container_value.example"></a><h6>
+<a name="id733194"></a>
+ Example
+ </h6>
+<p>
+ TBD
+ </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="../store_value.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../store_value.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="push_back.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/push_back.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/push_back.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,395 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>
+ Store a Parsed Attribute Value into a Container (Qi)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../store_value.html" title=" Store Parsed
+ Attribute Values into a Container (Qi)">
+<link rel="previous" href="container_value.html" title="
+ Determine the Type to be Stored in a Container (Qi)">
+<link rel="next" href="../clear_value.html" title=" Re-Initialize
+ an Attribute Value before Parsing (Qi)">
+</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="container_value.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../store_value.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="../clear_value.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.advanced.customize.store_value.push_back"></a><a href="push_back.html" title="
+ Store a Parsed Attribute Value into a Container (Qi)">
+ Store a Parsed Attribute Value into a Container (Qi)</a>
+</h5></div></div>
+<div></div>
+</div>
+<a name="spirit.advanced.customize.store_value.push_back.push_back_container"></a><h6>
+<a name="id733245"></a>
+ push_back_container
+ </h6>
+<p>
+ The template <tt class="computeroutput"><span class="identifier">push_back_container</span></tt>
+ is a type used as an attribute customization point. It is invoked by
+ the <span class="emphasis"><em>Qi</em></span> repetitive parsers (Kleene,
+ Plus, List, and <a href="../../../qi/reference/directive/repeat.html" title=" Repetition
+ (repeat[])">Repeat</a>)
+ to store a parsed attribute value into a container.
+ </p>
+<a name="spirit.advanced.customize.store_value.push_back.module_headers"></a><h6>
+<a name="id733328"></a>
+ <a href="push_back.html#spirit.advanced.customize.store_value.push_back.module_headers">Module
+ Headers</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">support</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see Include Structure.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ This header file does not need to be included directly by any user
+ program as it is normally included by other Spirit header files relying
+ on its content.
+ </p></td></tr>
+</table></div>
+<a name="spirit.advanced.customize.store_value.push_back.namespace"></a><h6>
+<a name="id733457"></a>
+ Namespace
+ </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th><p>
+ Name
+ </p></th></tr></thead>
+<tbody><tr><td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span></tt>
+ </p></td></tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.push_back.synopsis"></a><h6>
+<a name="id733554"></a>
+ Synopsis
+ </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Attrib</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">push_back_container</span><span class="special">;</span>
+</pre>
+<a name="spirit.advanced.customize.store_value.push_back.template_parameters"></a><h6>
+<a name="id733668"></a>
+ <a href="push_back.html#spirit.advanced.customize.store_value.push_back.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>
+ <tt class="computeroutput"><span class="identifier">Container</span></tt>
+ </p></td>
+<td><p>
+ The type, <tt class="computeroutput"><span class="identifier">Container</span></tt>
+ needs to be tested whether it has to be treated as a container
+ </p></td>
+<td><p>
+ none
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ </p></td>
+<td><p>
+ The type, <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ is the one returned from the customization point <a href="container_value.html" title="
+ Determine the Type to be Stored in a Container (Qi)"><tt class="computeroutput"><span class="identifier">container_value</span></tt></a> and
+ represents the attribute value to be stored in the container
+ of type <tt class="computeroutput"><span class="identifier">Container</span></tt>.
+ </p></td>
+<td><p>
+ none
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Enable</span></tt>
+ </p></td>
+<td><p>
+ Helper template parameter usable to selectively enable or disable
+ certain specializations of <tt class="computeroutput"><span class="identifier">push_back_container</span></tt>
+ utilizing SFINAE (i.e. <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></tt>
+ or <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></tt>).
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="keyword">void</span></tt>
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.push_back.notation"></a><h6>
+<a name="id733974"></a>
+ Notation
+ </h6>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">C</span></tt></span></dt>
+<dd><p>
+ A type to be used as a container to store attribute values in.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">c</span></tt></span></dt>
+<dd>
+<p>
+ A container instance of type <tt class="computeroutput"><span class="identifier">C</span></tt>.
+ </p>
+<p>
+ [<tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ </p>
+<p>
+ A type to be used as a container to store attribute values in.
+ </p>
+</dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">attr</span></tt></span></dt>
+<dd><p>
+ A attribute instance of type <tt class="computeroutput"><span class="identifier">Attrib</span></tt>.
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">T1</span></tt>,
+ <tt class="computeroutput"><span class="identifier">T2</span></tt>, ...</span></dt>
+<dd><p>
+ Arbitrary types
+ </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.store_value.push_back.expression_semantics"></a><h6>
+<a name="id734163"></a>
+ <a href="push_back.html#spirit.advanced.customize.store_value.push_back.expression_semantics">Expression
+ Semantics</a>
+ </h6>
+<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>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">push_back_container</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">Attrib</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span></pre>
+<p>
+ </p>
+</td>
+<td><p>
+ Static function that is invoked whenever an attribute value,
+ <tt class="computeroutput"><span class="identifier">attr</span></tt> needs to
+ be stored into the container instance <tt class="computeroutput"><span class="identifier">c</span></tt>.
+ </p></td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.push_back.predefined_specializations"></a><h6>
+<a name="id734338"></a>
+ <a href="push_back.html#spirit.advanced.customize.store_value.push_back.predefined_specializations">Predefined
+ Specializations</a>
+ </h6>
+<p>
+ Spirit predefines
+ specializations of this customization point for several types. The following
+ table lists those types together with the types exposed and the corresponding
+ semantics:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th><p>
+ Template Parameters
+ </p></th>
+<th><p>
+ Value
+ </p></th>
+</tr></thead>
+<tbody>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">C</span></tt>, <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ </p></td>
+<td><p>
+ Store the provided attribute instance <tt class="computeroutput"><span class="identifier">attr</span></tt>
+ into the given container <tt class="computeroutput"><span class="identifier">c</span></tt>
+ using the function call <tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">c</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">attr</span><span class="special">)</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;</span></tt>,
+ <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ </p></td>
+<td><p>
+ If the provided instance of <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">&lt;&gt;</span></tt> is not initialized, invoke
+ the appropriate initialization and afterwards apply the customization
+ point <tt class="computeroutput"><span class="identifier">push_back_container</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">Attrib</span><span class="special">&gt;</span></tt>, treating the instance held
+ by the optional (of type <tt class="computeroutput"><span class="identifier">C</span></tt>)
+ as the container to store the attribute in.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special">&lt;</span><span class="identifier">T1</span><span class="special">,</span>
+ <span class="identifier">T2</span><span class="special">,</span>
+ <span class="special">...&gt;</span></tt>, <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ </p></td>
+<td><p>
+ If the instance of the variant currently holds a value with a
+ type, <tt class="computeroutput"><span class="identifier">TN</span></tt>, for
+ which <tt class="computeroutput"><span class="identifier">is_container</span><span class="special">&lt;</span><span class="identifier">TN</span><span class="special">&gt;::</span><span class="identifier">type</span></tt>
+ evaluates to <tt class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></tt>,
+ this customization point specialization will apply <tt class="computeroutput"><span class="identifier">push_back_container</span><span class="special">&lt;</span><span class="identifier">TN</span><span class="special">,</span>
+ <span class="identifier">Attrib</span><span class="special">&gt;</span></tt>,
+ treating the instance held by the variant (of type <tt class="computeroutput"><span class="identifier">TN</span></tt>) as the container to store
+ the attribute in. Otherwise it will raise an assertion.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt>
+ </p></td>
+<td><p>
+ Do nothing.
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.push_back.when_to_implement"></a><h6>
+<a name="id734918"></a>
+ <a href="push_back.html#spirit.advanced.customize.store_value.push_back.when_to_implement">When
+ to Implement</a>
+ </h6>
+<p>
+ The customization point <tt class="computeroutput"><span class="identifier">push_back_container</span></tt>
+ needs to be implemented for a specific type whenever this type is to
+ be used as an attribute in place of a STL container. It is applicable
+ for parsers (<span class="emphasis"><em>Spirit.Qi</em></span>) only. As a rule of thumb:
+ it has to be implemented whenever a certain type is to be passed as an
+ attribute to a parser normally exposing a STL container and if the type
+ does not expose the interface of a STL container (i.e. no function being
+ equivalent to <tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">c</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">attr</span><span class="special">)</span></tt>.
+ These components have an attribute propagation rule in the form:
+ </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">):</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
+</pre>
+<p>
+ where <tt class="computeroutput"><span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></tt>
+ stands for any meaningful operation on the component <tt class="computeroutput"><span class="identifier">a</span></tt>.
+ </p>
+<a name="spirit.advanced.customize.store_value.push_back.related_attribute_customization_points"></a><h6>
+<a name="id735146"></a>
+ <a href="push_back.html#spirit.advanced.customize.store_value.push_back.related_attribute_customization_points">Related
+ Attribute Customization Points</a>
+ </h6>
+<p>
+ If this customization point is implemented, the following other customization
+ points need to be implemented as well.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th><p>
+ Name
+ </p></th>
+<th><p>
+ When to implement
+ </p></th>
+</tr></thead>
+<tbody>
+<tr>
+<td><p>
+ <a href="container_value.html" title="
+ Determine the Type to be Stored in a Container (Qi)"><tt class="computeroutput"><span class="identifier">container_value</span></tt></a>
+ </p></td>
+<td><p>
+ Qi: List,
+ Kleene,
+ Plus,
+ <a href="../../../qi/reference/directive/repeat.html" title=" Repetition
+ (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="../clear_value.html" title=" Re-Initialize
+ an Attribute Value before Parsing (Qi)"><tt class="computeroutput"><span class="identifier">clear_value</span></tt></a>
+ </p></td>
+<td><p>
+ Qi: List,
+ Kleene,
+ Plus,
+ <a href="../../../qi/reference/directive/repeat.html" title=" Repetition
+ (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.push_back.example"></a><h6>
+<a name="id735362"></a>
+ Example
+ </h6>
+<p>
+ TBD
+ </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="container_value.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../store_value.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="../clear_value.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/customize/transform.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/transform.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,243 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Transform an
+ Attribute to a Different Type (Qi and Karma)</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../customize.html" title=" Customization of Spirit's
+ Attribute Handling">
+<link rel="previous" href="is_container.html" title=" Determine
+ if a Type Should be Treated as a Container (Qi and Karma)">
+<link rel="next" href="assign_to.html" title=" Store a Parsed
+ Attribute Value (Qi)">
+</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="is_container.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.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="assign_to.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.advanced.customize.transform"></a><a href="transform.html" title=" Transform an
+ Attribute to a Different Type (Qi and Karma)"> Transform an
+ Attribute to a Different Type (Qi and Karma)</a>
+</h4></div></div>
+<div></div>
+</div>
+<a name="spirit.advanced.customize.transform.transform_attribute"></a><h5>
+<a name="id727844"></a>
+ transform_attribute
+ </h5>
+<p>
+ Short description here...
+ </p>
+<a name="spirit.advanced.customize.transform.module_headers"></a><h5>
+<a name="id727873"></a>
+ <a href="transform.html#spirit.advanced.customize.transform.module_headers">Module
+ Headers</a>
+ </h5>
+<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">xxx</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see Include Structure.
+ </p>
+<div class="note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td colspan="2" align="left" valign="top"><p>
+ This header file does not need to be included directly by any user program
+ as it is normally included by other Spirit header files relying on its
+ content.
+ </p></td></tr>
+</table></div>
+<a name="spirit.advanced.customize.transform.namespace"></a><h5>
+<a name="id727982"></a>
+ Namespace
+ </h5>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<thead><tr><th><p>
+ Name
+ </p></th></tr></thead>
+<tbody><tr><td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">xxx</span></tt>
+ </p></td></tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.transform.synopsis"></a><h5>
+<a name="id728078"></a>
+ Synopsis
+ </h5>
+<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">XXX</span><span class="special">;</span>
+</pre>
+<a name="spirit.advanced.customize.transform.template_parameters"></a><h5>
+<a name="id728154"></a>
+ <a href="transform.html#spirit.advanced.customize.transform.template_parameters">Template
+ parameters</a>
+ </h5>
+<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>
+ <tt class="computeroutput"><span class="identifier">T</span></tt>
+ </p></td>
+<td><p>
+ What is T
+ </p></td>
+<td><p>
+ </p></td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.transform.notation"></a><h5>
+<a name="id728259"></a>
+ Notation
+ </h5>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">xxx</span></tt></span></dt>
+<dd><p>
+ An XXX
+ </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.transform.expression_semantics"></a><h5>
+<a name="id728314"></a>
+ <a href="transform.html#spirit.advanced.customize.transform.expression_semantics">Expression
+ Semantics</a>
+ </h5>
+<p>
+ Semantics of an expression is defined only where it differs from, or is
+ not defined in _concept-of<span class="underline">XXX</span>.
+ </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>
+ <tt class="computeroutput"><span class="identifier">xxx</span></tt>
+ </p></td>
+<td><p>
+ Semantics of <tt class="computeroutput"><span class="identifier">xxx</span></tt>
+ </p></td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.transform.predefined_specializations"></a><h5>
+<a name="id728429"></a>
+ <a href="transform.html#spirit.advanced.customize.transform.predefined_specializations">Predefined
+ Specializations</a>
+ </h5>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th><p>
+ Type
+ </p></th>
+<th><p>
+ Condition
+ </p></th>
+</tr></thead>
+<tbody><tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">xxx</span></tt>
+ </p></td>
+<td><p>
+ when does it evaluate to mpl::true_
+ </p></td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.transform.when_to_implement"></a><h5>
+<a name="id728520"></a>
+ <a href="transform.html#spirit.advanced.customize.transform.when_to_implement">When
+ to implement</a>
+ </h5>
+<p>
+ Describe when this customization point needs to be implemented by the user.
+ </p>
+<a name="spirit.advanced.customize.transform.related_attribute_customization_points"></a><h5>
+<a name="id728550"></a>
+ <a href="transform.html#spirit.advanced.customize.transform.related_attribute_customization_points">Related
+ Attribute Customization Points</a>
+ </h5>
+<p>
+ If this customization point is implemented, the following other customization
+ points need to be implemented as well.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<tbody><tr>
+<td><p>
+ Name
+ </p></td>
+<td><p>
+ When to implement
+ </p></td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.transform.example"></a><h5>
+<a name="id728616"></a>
+ Example
+ </h5>
+<p>
+ TBD
+ </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="is_container.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.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="assign_to.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/indepth.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/indepth.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,50 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> In Depth</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../advanced.html" title="Advanced">
+<link rel="previous" href="../advanced.html" title="Advanced">
+<link rel="next" href="indepth/parsers_indepth.html" title=" Parsers in
+ Depth">
+</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="../advanced.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced.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="indepth/parsers_indepth.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h3 class="title">
+<a name="spirit.advanced.indepth"></a> In Depth
+</h3></div></div>
+<div></div>
+</div>
+<div class="toc"><dl><dt><span class="section"><a href="indepth/parsers_indepth.html"> Parsers in
+ Depth</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="../advanced.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced.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="indepth/parsers_indepth.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: trunk/libs/spirit/doc/html/spirit/advanced/indepth/parsers_indepth.html
==============================================================================
--- (empty file)
+++ trunk/libs/spirit/doc/html/spirit/advanced/indepth/parsers_indepth.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -0,0 +1,718 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title> Parsers in
+ Depth</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../indepth.html" title=" In Depth">
+<link rel="previous" href="../indepth.html" title=" In Depth">
+<link rel="next" href="../customize.html" title=" Customization of Spirit's
+ Attribute Handling">
+</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="../indepth.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indepth.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="../customize.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.advanced.indepth.parsers_indepth"></a><a href="parsers_indepth.html" title=" Parsers in
+ Depth"> Parsers in
+ Depth</a>
+</h4></div></div>
+<div></div>
+</div>
+<p>
+ This section is not for the faint of heart. In here, are distilled the
+ inner workings of <span class="emphasis"><em>Spirit.Qi</em></span> parsers, using real code
+ from the Spirit library
+ as examples. On the other hand, here is no reason to fear reading on, though.
+ We tried to explain things step by step while highlighting the important
+ insights.
+ </p>
+<p>
+ The <tt class="computeroutput">Parser</tt> class is the base
+ class for all parsers.
+ </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">Derived</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">parser</span>
+<span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">parser_id</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">Derived</span> <span class="identifier">derived_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">domain</span> <span class="identifier">domain</span><span class="special">;</span>
+
+ <span class="comment">// Requirement: p.parse(f, l, context, skip, attr) -&gt; bool
+</span> <span class="comment">//
+</span> <span class="comment">// p: a parser
+</span> <span class="comment">// f, l: first/last iterator pair
+</span> <span class="comment">// context: enclosing rule context (can be unused_type)
+</span> <span class="comment">// skip: skipper (can be unused_type)
+</span> <span class="comment">// attr: attribute (can be unused_type)
+</span>
+ <span class="comment">// Requirement: p.what(context) -&gt; info
+</span> <span class="comment">//
+</span> <span class="comment">// p: a parser
+</span> <span class="comment">// context: enclosing rule context (can be unused_type)
+</span>
+ <span class="comment">// Requirement: P::template attribute&lt;Ctx, Iter&gt;::type
+</span> <span class="comment">//
+</span> <span class="comment">// P: a parser type
+</span> <span class="comment">// Ctx: A context type (can be unused_type)
+</span> <span class="comment">// Iter: An iterator type (can be unused_type)
+</span>
+ <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">derived</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">static_cast</span><span class="special">&lt;</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">*&gt;(</span><span class="keyword">this</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ The <tt class="computeroutput">Parser</tt> class does not really
+ know how to parse anything but instead relies on the template parameter
+ <tt class="computeroutput"><span class="identifier">Derived</span></tt> to do the actual
+ parsing. This technique is known as the "Curiously Recurring Template
+ Pattern" in template meta-programming circles. This inheritance strategy
+ gives us the power of polymorphism without the virtual function overhead.
+ In essence this is a way to implement compile time polymorphism.
+ </p>
+<p>
+ The Derived parsers, <tt class="computeroutput">PrimitiveParser</tt>, <tt class="computeroutput">UnaryParser</tt>, <tt class="computeroutput">BinaryParser</tt> and <tt class="computeroutput">NaryParser</tt> provide the
+ necessary facilities for parser detection, introspection, transformation
+ and visitation.
+ </p>
+<p>
+ Derived parsers must support the following:
+ </p>
+<div class="variablelist">
+<p class="title"><b>bool parse(f, l, context, skip, attr)</b></p>
+<dl>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">f</span></tt>, <tt class="computeroutput"><span class="identifier">l</span></tt></span></dt>
+<dd><p>
+ first/last iterator pair
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">context</span></tt></span></dt>
+<dd><p>
+ enclosing rule context (can be unused_type)
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">skip</span></tt></span></dt>
+<dd><p>
+ skipper (can be unused_type)
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">attr</span></tt></span></dt>
+<dd><p>
+ attribute (can be unused_type)
+ </p></dd>
+</dl>
+</div>
+<p>
+ The <span class="emphasis"><em>parse</em></span> is the main parser entry point. <span class="emphasis"><em>skipper</em></span>
+ can be an <tt class="computeroutput"><span class="identifier">unused_type</span></tt>.
+ It's a type used every where in Spirit
+ to signify "don't-care". There is an overload for <span class="emphasis"><em>skip</em></span>
+ for <tt class="computeroutput"><span class="identifier">unused_type</span></tt> that is
+ simply a no-op. That way, we do not have to write multiple parse functions
+ for phrase and character level parsing.
+ </p>
+<p>
+ Here are the basic rules for parsing:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ The parser returns <tt class="computeroutput"><span class="keyword">true</span></tt>
+ if successful, <tt class="computeroutput"><span class="keyword">false</span></tt> otherwise.
+ </li>
+<li>
+ If successful, <tt class="computeroutput"><span class="identifier">first</span></tt>
+ is incremented N number of times, where N is the number of characters
+ parsed. N can be zero --an empty (epsilon) match.
+ </li>
+<li>
+ If successful, the parsed attribute is assigned to <span class="emphasis"><em>attr</em></span>
+</li>
+<li>
+ If unsuccessful, <tt class="computeroutput"><span class="identifier">first</span></tt>
+ is reset to its position before entering the parser function. <span class="emphasis"><em>attr</em></span>
+ is untouched.
+ </li>
+</ul></div>
+<div class="variablelist">
+<p class="title"><b>void what(context)</b></p>
+<dl>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">context</span></tt></span></dt>
+<dd><p>
+ enclosing rule context (can be <tt class="computeroutput"><span class="identifier">unused_type</span></tt>)
+ </p></dd>
+</dl>
+</div>
+<p>
+ The <span class="emphasis"><em>what</em></span> function should be obvious. It provides some
+ information about &#8220;<span class="quote">what</span>&#8221; the parser is. It is used as a debugging
+ aid, for example.
+ </p>
+<div class="variablelist">
+<p class="title"><b>P::template attribute&lt;context&gt;::type</b></p>
+<dl>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">P</span></tt></span></dt>
+<dd><p>
+ a parser type
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">context</span></tt></span></dt>
+<dd><p>
+ A context type (can be unused_type)
+ </p></dd>
+</dl>
+</div>
+<p>
+ The <span class="emphasis"><em>attribute</em></span> metafunction returns the expected attribute
+ type of the parser. In some cases, this is context dependent.
+ </p>
+<p>
+ In this section, we will dissect two parser types:
+ </p>
+<div class="variablelist">
+<p class="title"><b>Parsers</b></p>
+<dl>
+<dt><span class="term"><tt class="computeroutput">PrimitiveParser</tt></span></dt>
+<dd><p>
+ A parser for primitive data (e.g. integer parsing).
+ </p></dd>
+<dt><span class="term"><tt class="computeroutput">UnaryParser</tt></span></dt>
+<dd><p>
+ A parser that has single subject (e.g. kleene star).
+ </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.indepth.parsers_indepth.primitive_parsers"></a><h5>
+<a name="id719287"></a>
+ <a href="parsers_indepth.html#spirit.advanced.indepth.parsers_indepth.primitive_parsers">Primitive
+ Parsers</a>
+ </h5>
+<p>
+ For our disection study, we will use a Spirit
+ primitive, the <tt class="computeroutput"><span class="identifier">int_parser</span></tt>
+ in the boost::spirit::qi namespace.
+ </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">,</span> <span class="keyword">unsigned</span> <span class="identifier">Radix</span> <span class="special">=</span> <span class="number">10</span>
+ <span class="special">,</span> <span class="keyword">unsigned</span> <span class="identifier">MinDigits</span> <span class="special">=</span> <span class="number">1</span>
+ <span class="special">,</span> <span class="keyword">int</span> <span class="identifier">MaxDigits</span> <span class="special">=</span> <span class="special">-</span><span class="number">1</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">int_parser_impl</span>
+ <span class="special">:</span> <span class="identifier">primitive_parser</span><span class="special">&lt;</span><span class="identifier">int_parser_impl</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">MinDigits</span><span class="special">,</span> <span class="identifier">MaxDigits</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="comment">// check template parameter 'Radix' for validity
+</span> <span class="identifier">BOOST_SPIRIT_ASSERT_MSG</span><span class="special">(</span>
+ <span class="identifier">Radix</span> <span class="special">==</span> <span class="number">2</span> <span class="special">||</span> <span class="identifier">Radix</span> <span class="special">==</span> <span class="number">8</span> <span class="special">||</span> <span class="identifier">Radix</span> <span class="special">==</span> <span class="number">10</span> <span class="special">||</span> <span class="identifier">Radix</span> <span class="special">==</span> <span class="number">16</span><span class="special">,</span>
+ <span class="identifier">not_supported_radix</span><span class="special">,</span> <span class="special">());</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Context</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">attribute</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Context</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Skipper</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Attribute</span><span class="special">&gt;</span>
+ <span class="keyword">bool</span> <span class="identifier">parse</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&amp;</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">last</span>
+ <span class="special">,</span> <span class="identifier">Context</span><span class="special">&amp;</span> <span class="comment">/*context*/</span><span class="special">,</span> <span class="identifier">Skipper</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">skipper</span>
+ <span class="special">,</span> <span class="identifier">Attribute</span><span class="special">&amp;</span> <span class="identifier">attr</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="identifier">qi</span><span class="special">::</span><span class="identifier">skip_over</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">skipper</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">extract_int</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">MinDigits</span><span class="special">,</span> <span class="identifier">MaxDigits</span><span class="special">&gt;</span>
+ <span class="special">::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Context</span><span class="special">&gt;</span>
+ <span class="identifier">info</span> <span class="identifier">what</span><span class="special">(</span><span class="identifier">Context</span><span class="special">&amp;</span> <span class="comment">/*context*/</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">info</span><span class="special">(</span><span class="string">"integer"</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ The <tt class="computeroutput"><span class="identifier">int_parser</span></tt> is derived
+ from a <tt class="computeroutput">PrimitiveParser<span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;</span></tt>,
+ which in turn derives from <tt class="computeroutput"><span class="identifier">parser</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;</span></tt>. Therefore, it supports the following
+ requirements:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ The <tt class="computeroutput"><span class="identifier">parse</span></tt> member function
+ </li>
+<li>
+ The <tt class="computeroutput"><span class="identifier">what</span></tt> member function
+ </li>
+<li>
+ The nested <tt class="computeroutput"><span class="identifier">attribute</span></tt>
+ metafunction
+ </li>
+</ul></div>
+<p>
+ <span class="emphasis"><em>parse</em></span> is the main entry point. For primitive parsers,
+ our first thing to do is call:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">skip</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">skipper</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+<p>
+ to do a pre-skip. After pre-skipping, the parser proceeds to do its thing.
+ The actual parsing code is placed in <tt class="computeroutput"><span class="identifier">extract_int</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">Radix</span><span class="special">,</span> <span class="identifier">MinDigits</span><span class="special">,</span> <span class="identifier">MaxDigits</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">);</span></tt>
+ </p>
+<p>
+ This simple no-frills protocol is one of the reasons why Spirit
+ is fast. If you know the internals of Spirit.Classic
+ and perhaps even wrote some parsers with it, this simple Spirit
+ mechanism is a joy to work with. There are no scanners and all that crap.
+ </p>
+<p>
+ The <span class="emphasis"><em>what</em></span> function just tells us that it is an integer
+ parser. Simple.
+ </p>
+<p>
+ The <span class="emphasis"><em>attribute</em></span> metafunction returns the T template
+ parameter. We associate the <tt class="computeroutput"><span class="identifier">int_parser</span></tt>
+ to some placeholders for <tt class="computeroutput"><span class="identifier">short_</span></tt>,
+ <tt class="computeroutput"><span class="identifier">int_</span></tt>, <tt class="computeroutput"><span class="identifier">long_</span></tt>
+ and <tt class="computeroutput"><span class="identifier">long_long</span></tt> types. But,
+ first, we enable these placeholders in namespace boost::spirit:
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">use_terminal</span><span class="special">&lt;</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">domain</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">short_</span><span class="special">&gt;</span> <span class="comment">// enables short_
+</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> <span class="special">{};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">use_terminal</span><span class="special">&lt;</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">domain</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">int_</span><span class="special">&gt;</span> <span class="comment">// enables int_
+</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> <span class="special">{};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">use_terminal</span><span class="special">&lt;</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">domain</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">long_</span><span class="special">&gt;</span> <span class="comment">// enables long_
+</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> <span class="special">{};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">use_terminal</span><span class="special">&lt;</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">domain</span><span class="special">,</span> <span class="identifier">tag</span><span class="special">::</span><span class="identifier">long_long</span><span class="special">&gt;</span> <span class="comment">// enables long_long
+</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> <span class="special">{};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Notice that <tt class="computeroutput"><span class="identifier">int_parser</span></tt>
+ is placed in the namespace boost::spirit::qi while these <span class="emphasis"><em>enablers</em></span>
+ are in namespace boost::spirit. The reason is that these placeholders are
+ shared by other Spirit
+ <span class="emphasis"><em>domains</em></span>. <span class="emphasis"><em>Spirit.Qi</em></span>, the parser
+ is one domain. <span class="emphasis"><em>Spirit.Karma</em></span>, the generator is another
+ domain. Other parser technologies may be developed and placed in yet another
+ domain. Yet, all these can potentially share the same placeholders for
+ interoperability. The interpretation of these placeholders is domain-specific.
+ </p>
+<p>
+ Now that we enabled the placeholders, we have to write generators for them.
+ The make_xxx stuff (in boost::spirit::qi namespace):
+ </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">make_int</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">int_parser_impl</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">result_type</span><span class="special">;</span>
+ <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">unused_type</span><span class="special">,</span> <span class="identifier">unused_type</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">result_type</span><span class="special">();</span>
+ <span class="special">}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ This one above is our main generator. It's a simple function object with
+ 2 (unused) arguments. These arguments are
+ </p>
+<div class="orderedlist"><ol type="1">
+<li>
+ The actual terminal value obtained by proto. In this case, either a short<span class="underline">, int</span>, long_ or long_long. We don't care
+ about this.
+ </li>
+<li>
+ Modifiers. We also don't care about this. This allows directives such
+ as <tt class="computeroutput"><span class="identifier">no_case</span><span class="special">[</span><span class="identifier">p</span><span class="special">]</span></tt>
+ to pass information to inner parser nodes. We'll see how that works later.
+ </li>
+</ol></div>
+<p>
+ Now:
+ </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">Modifiers</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">make_primitive</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">short_</span><span class="special">,</span> <span class="identifier">Modifiers</span><span class="special">&gt;</span> <span class="special">:</span> <span class="identifier">make_int</span><span class="special">&lt;</span><span class="keyword">short</span><span class="special">&gt;</span> <span class="special">{};</span>
+</pre>
+<p>
+ </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">Modifiers</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">make_primitive</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">int_</span><span class="special">,</span> <span class="identifier">Modifiers</span><span class="special">&gt;</span> <span class="special">:</span> <span class="identifier">make_int</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">{};</span>
+</pre>
+<p>
+ </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">Modifiers</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">make_primitive</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">long_</span><span class="special">,</span> <span class="identifier">Modifiers</span><span class="special">&gt;</span> <span class="special">:</span> <span class="identifier">make_int</span><span class="special">&lt;</span><span class="keyword">long</span><span class="special">&gt;</span> <span class="special">{};</span>
+</pre>
+<p>
+ </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">Modifiers</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">make_primitive</span><span class="special">&lt;</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">long_long</span><span class="special">,</span> <span class="identifier">Modifiers</span><span class="special">&gt;</span> <span class="special">:</span> <span class="identifier">make_int</span><span class="special">&lt;</span><span class="keyword">long</span> <span class="keyword">long</span><span class="special">&gt;</span> <span class="special">{};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ These, specialize <tt class="computeroutput"><span class="identifier">qi</span><span class="special">:</span><span class="identifier">make_primitive</span></tt> for specific tags. They
+ all inherit from <tt class="computeroutput"><span class="identifier">make_int</span></tt>
+ which does the actual work.
+ </p>
+<a name="spirit.advanced.indepth.parsers_indepth.composite_parsers"></a><h5>
+<a name="id722066"></a>
+ <a href="parsers_indepth.html#spirit.advanced.indepth.parsers_indepth.composite_parsers">Composite
+ Parsers</a>
+ </h5>
+<p>
+ Let me present the kleene star (also in namespace spirit::qi):
+ </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">Subject</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">kleene</span> <span class="special">:</span> <span class="identifier">unary_parser</span><span class="special">&lt;</span><span class="identifier">kleene</span><span class="special">&lt;</span><span class="identifier">Subject</span><span class="special">&gt;</span> <span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">Subject</span> <span class="identifier">subject_type</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Context</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">attribute</span>
+ <span class="special">{</span>
+ <span class="comment">// Build a std::vector from the subject's attribute. Note
+</span> <span class="comment">// that build_std_vector may return unused_type if the
+</span> <span class="comment">// subject's attribute is an unused_type.
+</span> <span class="keyword">typedef</span> <span class="keyword">typename</span>
+ <span class="identifier">traits</span><span class="special">::</span><span class="identifier">build_std_vector</span><span class="special">&lt;</span>
+ <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span>
+ <span class="identifier">attribute_of</span><span class="special">&lt;</span><span class="identifier">Subject</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">,</span> <span class="identifier">Iterator</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="identifier">kleene</span><span class="special">(</span><span class="identifier">Subject</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">subject</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">subject</span><span class="special">(</span><span class="identifier">subject</span><span class="special">)</span> <span class="special">{}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Context</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Skipper</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Attribute</span><span class="special">&gt;</span>
+ <span class="keyword">bool</span> <span class="identifier">parse</span><span class="special">(</span><span class="identifier">Iterator</span><span class="special">&amp;</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">last</span>
+ <span class="special">,</span> <span class="identifier">Context</span><span class="special">&amp;</span> <span class="identifier">context</span><span class="special">,</span> <span class="identifier">Skipper</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">skipper</span>
+ <span class="special">,</span> <span class="identifier">Attribute</span><span class="special">&amp;</span> <span class="identifier">attr</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="comment">// create a local value if Attribute is not unused_type
+</span> <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">container_value</span><span class="special">&lt;</span><span class="identifier">Attribute</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="identifier">value_type</span> <span class="identifier">val</span> <span class="special">=</span> <span class="identifier">value_type</span><span class="special">();</span>
+
+ <span class="comment">// Repeat while subject parses ok
+</span> <span class="keyword">while</span> <span class="special">(</span><span class="identifier">subject</span><span class="special">.</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">context</span><span class="special">,</span> <span class="identifier">skipper</span><span class="special">,</span> <span class="identifier">val</span><span class="special">))</span>
+ <span class="special">{</span>
+ <span class="comment">// push the parsed value into our attribute
+</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">attr</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+ <span class="identifier">traits</span><span class="special">::</span><span class="identifier">clear</span><span class="special">(</span><span class="identifier">val</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="keyword">return</span> <span class="keyword">true</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Context</span><span class="special">&gt;</span>
+ <span class="identifier">info</span> <span class="identifier">what</span><span class="special">(</span><span class="identifier">Context</span><span class="special">&amp;</span> <span class="identifier">context</span><span class="special">)</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">info</span><span class="special">(</span><span class="string">"kleene"</span><span class="special">,</span> <span class="identifier">subject</span><span class="special">.</span><span class="identifier">what</span><span class="special">(</span><span class="identifier">context</span><span class="special">));</span>
+ <span class="special">}</span>
+
+ <span class="identifier">Subject</span> <span class="identifier">subject</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ Looks similar in form to its primitive cousin, the <tt class="computeroutput"><span class="identifier">int_parser</span></tt>.
+ And, again, it has the same basic ingredients required by <tt class="computeroutput"><span class="identifier">Derived</span></tt>.
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ The nested attribute metafunction
+ </li>
+<li>
+ The parse member function
+ </li>
+<li>
+ The what member function
+ </li>
+</ul></div>
+<p>
+ kleene is a composite parser. It is a parser that composes another parser,
+ its &#8220;<span class="quote">subject</span>&#8221;. It is a <tt class="computeroutput">UnaryParser</tt> and subclasses
+ from it. Like <tt class="computeroutput">PrimitiveParser</tt>, <tt class="computeroutput">UnaryParser<span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;</span></tt>
+ derives from <tt class="computeroutput"><span class="identifier">parser</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;</span></tt>.
+ </p>
+<p>
+ unary_parser&lt;Derived&gt;, has these expression requirements on Derived:
+ </p>
+<div class="itemizedlist"><ul type="disc">
+<li>
+ p.subject -&gt; subject parser ( <span class="emphasis"><em>p</em></span> is a UnaryParser parser.)
+ </li>
+<li>
+ P::subject_type -&gt; subject parser type ( <span class="emphasis"><em>P</em></span> is
+ a UnaryParser type.)
+ </li>
+</ul></div>
+<p>
+ <span class="emphasis"><em>parse</em></span> is the main parser entry point. Since this is
+ not a primitive parser, we do not need to call <tt class="computeroutput"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">skip</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">skipper</span><span class="special">)</span></tt>. The <span class="emphasis"><em>subject</em></span>, if
+ it is a primitive, will do the pre-skip. If if it is another composite
+ parser, it will eventually call a primitive parser somewhere down the line
+ which will do the pre-skip. This makes it a lot more efficient than Spirit.Classic.
+ Spirit.Classic
+ puts the skipping business into the so-called "scanner" which
+ blindly attempts a pre-skip everytime we increment the iterator.
+ </p>
+<p>
+ What is the <span class="emphasis"><em>attribute</em></span> of the kleene? In general, it
+ is a <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></tt>
+ where <tt class="computeroutput"><span class="identifier">T</span></tt> is the attribute
+ of the subject. There is a special case though. If <tt class="computeroutput"><span class="identifier">T</span></tt>
+ is an <tt class="computeroutput"><span class="identifier">unused_type</span></tt>, then
+ the attribute of kleene is also <tt class="computeroutput"><span class="identifier">unused_type</span></tt>.
+ <tt class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">build_std_vector</span></tt> takes care of that minor
+ detail.
+ </p>
+<p>
+ So, let's parse. First, we need to provide a local attribute of for the
+ subject:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">attribute_of</span><span class="special">&lt;</span><span class="identifier">Subject</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">&gt;::</span><span class="identifier">type</span> <span class="identifier">val</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <tt class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">attribute_of</span><span class="special">&lt;</span><span class="identifier">Subject</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">&gt;</span></tt>
+ simply calls the subject's <tt class="computeroutput"><span class="keyword">struct</span>
+ <span class="identifier">attribute</span><span class="special">&lt;</span><span class="identifier">Context</span><span class="special">&gt;</span></tt>
+ nested metafunction.
+ </p>
+<p>
+ <span class="emphasis"><em>val</em></span> starts out default initialized. This val is the
+ one we'll pass to the subject's parse function.
+ </p>
+<p>
+ The kleene repeats indefinitely while the subject parser is successful.
+ On each successful parse, we <tt class="computeroutput"><span class="identifier">push_back</span></tt>
+ the parsed attribute to the kleen's attribute, which is expected to be,
+ at the very least, compatible with a <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span></tt>.
+ In other words, although we say that we want our attribute to be a <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span></tt>, we try to be more lenient than
+ that. The caller of kleene's parse may pass a different attribute type.
+ For as long as it is also a conforming STL container with <tt class="computeroutput"><span class="identifier">push_back</span></tt>, we are ok. Here is the kleene
+ loop:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">while</span> <span class="special">(</span><span class="identifier">subject</span><span class="special">.</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">context</span><span class="special">,</span> <span class="identifier">skipper</span><span class="special">,</span> <span class="identifier">val</span><span class="special">))</span>
+<span class="special">{</span>
+ <span class="comment">// push the parsed value into our attribute
+</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">attr</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+ <span class="identifier">traits</span><span class="special">::</span><span class="identifier">clear</span><span class="special">(</span><span class="identifier">val</span><span class="special">);</span>
+<span class="special">}</span>
+<span class="keyword">return</span> <span class="keyword">true</span><span class="special">;</span>
+</pre>
+<p>
+ Take note that we didn't call attr.push_back(val). Instead, we called a
+ Spirit provided function:
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">attr</span><span class="special">,</span> <span class="identifier">val</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+<p>
+ This is a recurring pattern. The reason why we do it this way is because
+ attr <span class="bold"><b>can</b></span> be <tt class="computeroutput"><span class="identifier">unused_type</span></tt>.
+ <tt class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">push_back</span></tt> takes care of that detail.
+ The overload for unused_type is a no-op. Now, you can imagine why Spirit is fast! The parsers
+ are so simple and the generated code is as efficient as a hand rolled loop.
+ All these parser compositions and recursive parse invocations are extensively
+ inlined by a modern C++ compiler. In the end, you get a tight loop when
+ you use the kleene. No more excess baggage. If the attribute is unused,
+ then there is no code generated for that. That's how Spirit
+ is designed.
+ </p>
+<p>
+ The <span class="emphasis"><em>what</em></span> function simply wraps the output of the subject
+ in a "kleene&#8220;<span class="quote">... "</span>&#8221;".
+ </p>
+<p>
+ Ok, now, like the <tt class="computeroutput"><span class="identifier">int_parser</span></tt>,
+ we have to hook our parser to the <span class="underline">qi</span>
+ engine. Here's how we do it:
+ </p>
+<p>
+ First, we enable the prefix star operator. In proto, it's called the "dereference":
+ </p>
+<p>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">use_operator</span><span class="special">&lt;</span><span class="identifier">qi</span><span class="special">::</span><span class="identifier">domain</span><span class="special">,</span> <span class="identifier">proto</span><span class="special">::</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">dereference</span><span class="special">&gt;</span> <span class="comment">// enables *p
+</span> <span class="special">:</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span> <span class="special">{};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ This is done in namespace <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span></tt>
+ like its friend, the <tt class="computeroutput"><span class="identifier">use_terminal</span></tt>
+ specialization for our <tt class="computeroutput"><span class="identifier">int_parser</span></tt>.
+ Obviously, we use <span class="emphasis"><em>use_operator</em></span> to enable the dereference
+ for the qi::domain.
+ </p>
+<p>
+ Then, we need to write our generator (in namespace qi):
+ </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">Elements</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Modifiers</span><span class="special">&gt;</span>
+<span class="keyword">struct</span> <span class="identifier">make_composite</span><span class="special">&lt;</span><span class="identifier">proto</span><span class="special">::</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">dereference</span><span class="special">,</span> <span class="identifier">Elements</span><span class="special">,</span> <span class="identifier">Modifiers</span><span class="special">&gt;</span>
+ <span class="special">:</span> <span class="identifier">make_unary_composite</span><span class="special">&lt;</span><span class="identifier">Elements</span><span class="special">,</span> <span class="identifier">kleene</span><span class="special">&gt;</span>
+<span class="special">{};</span>
+</pre>
+<p>
+ </p>
+<p>
+ </p>
+<p>
+ This essentially says; for all expressions of the form: <tt class="computeroutput"><span class="special">*</span><span class="identifier">p</span></tt>, to build a kleene parser. Elements
+ is a Boost.Fusion
+ sequence. For the kleene, which is a unary operator, expect only one element
+ in the sequence. That element is the subject of the kleene.
+ </p>
+<p>
+ We still don't care about the Modifiers. We'll see how the modifiers is
+ all about when we get to deep directives.
+ </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="../indepth.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../indepth.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="../customize.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

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-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,12 +1,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Spirit FAQ</title>
+<title> Spirit FAQ</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../index.html" title="Spirit 2.1">
 <link rel="up" href="../index.html" title="Spirit 2.1">
-<link rel="prev" href="support/multi_pass.html" title="The multi pass iterator">
+<link rel="previous" href="support/multi_pass.html" title=" The multi pass iterator">
 <link rel="next" href="notes.html" title="Notes">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -22,30 +22,33 @@
 <div class="spirit-nav">
 <a accesskey="p" href="support/multi_pass.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="notes.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Spirit FAQ">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<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="id917447"></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
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="spirit.faq"></a> Spirit FAQ
+</h2></div></div>
+<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><h3>
+<a name="id747563"></a>
+ <a 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>
- </h4>
+ </h3>
 <p>
- Do you see strange multiple symbol definition linker errors mentioning <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">failed</span></code>
- and <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">rule</span></code>?
+ Do you see strange multiple symbol definition linker errors mentioning <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">failed</span></tt>
+ and <tt 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">rule</span></tt>?
       Then this FAQ entry might be for you.
     </p>
 <p>
       <a href="http://www.boost.org/libs/mpl/index.html" target="_top">Boost.Mpl</a> implements
- a macro <code class="computeroutput"><span class="identifier">BOOST_MPL_ASSERT_MSG</span><span class="special">()</span></code> which essentially is a more powerfull version
+ a macro <tt class="computeroutput"><span class="identifier">BOOST_MPL_ASSERT_MSG</span><span class="special">()</span></tt> which essentially is a more powerfull version
       of static_assert. Unfortunately under certain circumstances using this macro
       may lead to the aformentioned linker errors.
     </p>
 <p>
       <a href="http://spirit.sourceforge.net" target="_top">Spirit</a> allows you to define
- a preprocessor constant disabling the usage of <code class="computeroutput"><span class="identifier">BOOST_MPL_ASSERT_MSG</span><span class="special">()</span></code>, while switching to <code class="computeroutput"><span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">()</span></code> instead. For that you need define BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG=1.
+ a preprocessor constant disabling the usage of <tt class="computeroutput"><span class="identifier">BOOST_MPL_ASSERT_MSG</span><span class="special">()</span></tt>, while switching to <tt class="computeroutput"><span class="identifier">BOOST_STATIC_ASSERT</span><span class="special">()</span></tt> instead. For that you need define BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG=1.
       Do this by adding
     </p>
 <pre class="programlisting"><span class="special">-</span><span class="identifier">DBOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG</span><span class="special">=</span><span class="number">1</span>
@@ -63,12 +66,12 @@
       see while using this workaround is less verbose error messages generated from
       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="id917618"></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
+<a name="spirit.faq.i_m_very_confused_about_the_header_hell_in_my_boost_spirit_directory__what_s_all_this_about_"></a><h3>
+<a name="id747828"></a>
+ <a 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>
- </h4>
+ </h3>
 <p>
       The boost/spirit directory currently holds two versions of the Spirit library:
       <a href="../../../../../libs/spirit/classic/index.html" target="_top"><span class="emphasis"><em>Spirit.Classic</em></span></a>
@@ -171,26 +174,27 @@
       as we will probably redirect to the Boost.Phoenix headers as soon as these
       are available.
     </p>
-<a name="spirit.faq.why_doesn_t_my_symbol_table_work_in_a__code__phrase_role__identifier__no_case__phrase___code__directive_"></a><h4>
-<a name="id918142"></a>
- <a class="link" href="faq.html#spirit.faq.why_doesn_t_my_symbol_table_work_in_a__code__phrase_role__identifier__no_case__phrase___code__directive_">Why
- doesn't my symbol table work in a <code class="computeroutput"><span class="identifier">no_case</span></code>
+<a name="spirit.faq.why_doesn_t_my_symbol_table_work_in_a__code__phrase_role__identifier__no_case__phrase___code__directive_"></a><h3>
+<a name="id748604"></a>
+ <a href="faq.html#spirit.faq.why_doesn_t_my_symbol_table_work_in_a__code__phrase_role__identifier__no_case__phrase___code__directive_">Why
+ doesn't my symbol table work in a <tt class="computeroutput"><span class="identifier">no_case</span></tt>
       directive?</a>
- </h4>
+ </h3>
 <p>
- In order to perform case-insensitive parsing (using <a class="link" href="qi/reference/directive/no_case.html" title="Inhibiting Case Sensitivity (no_case[])"><code class="computeroutput"><span class="identifier">no_case</span></code></a>) with a symbol table (i.e.
- use a <a class="link" href="qi/reference/string/symbols.html" title="Symbols (symbols)"><code class="computeroutput"><span class="identifier">symbols</span><span class="special">&lt;</span><span class="identifier">Ch</span><span class="special">,</span>
- <span class="identifier">T</span><span class="special">&gt;</span></code></a>
- parser in a <code class="computeroutput"><span class="identifier">no_case</span></code> directive),
+ In order to perform case-insensitive parsing (using <a href="qi/reference/directive/no_case.html" title=" Inhibiting
+ Case Sensitivity (no_case[])"><tt class="computeroutput"><span class="identifier">no_case</span></tt></a>) with a symbol table (i.e.
+ use a <a href="qi/reference/string/symbols.html" title=" Symbols (symbols)"><tt class="computeroutput"><span class="identifier">symbols</span><span class="special">&lt;</span><span class="identifier">Ch</span><span class="special">,</span>
+ <span class="identifier">T</span><span class="special">&gt;</span></tt></a>
+ parser in a <tt class="computeroutput"><span class="identifier">no_case</span></tt> directive),
       that symbol table needs to be filled with all-lowercase contents. Entries containing
       one or more uppercase characters will not match any input.
     </p>
-<a name="spirit.faq.i_m_getting_a_compilation_error_mentioning__code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function__phrase___code__and_or___________code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function4__phrase___code___what_does_this_mean_"></a><h4>
-<a name="id918213"></a>
- <a class="link" href="faq.html#spirit.faq.i_m_getting_a_compilation_error_mentioning__code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function__phrase___code__and_or___________code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function4__phrase___code___what_does_this_mean_">I'm
- getting a compilation error mentioning <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span></code>
- and/or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function4</span></code>. What does this mean?</a>
- </h4>
+<a name="spirit.faq.i_m_getting_a_compilation_error_mentioning__code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function__phrase___code__and_or___________code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function4__phrase___code___what_does_this_mean_"></a><h3>
+<a name="id748741"></a>
+ <a href="faq.html#spirit.faq.i_m_getting_a_compilation_error_mentioning__code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function__phrase___code__and_or___________code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function4__phrase___code___what_does_this_mean_">I'm
+ getting a compilation error mentioning <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span></tt>
+ and/or <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function4</span></tt>. What does this mean?</a>
+ </h3>
 <p>
       If you are using Visual C++ and have an error like:
     </p>
@@ -211,30 +215,30 @@
       it means that non-terminal can only be used with a skip parser of a compatible
       type. The error above arises when this is not the case, i.e.:
     </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
+<div class="itemizedlist"><ul type="disc">
+<li>
         a non-terminal defined with a skip parser type is used without a skip parser;
- for example, a rule with a skip parser type is used inside a <code class="computeroutput"><span class="identifier">lexeme</span></code> directive, or a grammar with a skip
- parser type is used in <code class="computeroutput"><span class="identifier">parse</span></code>
- instead of <code class="computeroutput"><span class="identifier">phrase_parse</span></code>,
+ for example, a rule with a skip parser type is used inside a <tt class="computeroutput"><span class="identifier">lexeme</span></tt> directive, or a grammar with a skip
+ parser type is used in <tt class="computeroutput"><span class="identifier">parse</span></tt>
+ instead of <tt class="computeroutput"><span class="identifier">phrase_parse</span></tt>,
       </li>
-<li class="listitem">
+<li>
         or a non-terminal is used with a skip parser of an incompatible type; for
         example, a rule defined with one skip parser type calls a second rule defined
         with another, incompatible skip parser type.
       </li>
 </ul></div>
-<div class="note" title="Note"><table border="0" summary="Note">
+<div class="note"><table border="0" summary="Note">
 <tr>
 <td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../images/note.png"></td>
 <th align="left">Note</th>
 </tr>
-<tr><td align="left" valign="top"><p>
+<tr><td colspan="2" align="left" valign="top"><p>
         The same applies to <span class="emphasis"><em>Spirit.Karma</em></span>, replacing 'skip parser'
- and <code class="computeroutput"><span class="identifier">lexeme</span></code> by 'delimit generator'
- and <code class="computeroutput"><span class="identifier">verbatim</span></code>. Similarily,
+ and <tt class="computeroutput"><span class="identifier">lexeme</span></tt> by 'delimit generator'
+ and <tt class="computeroutput"><span class="identifier">verbatim</span></tt>. Similarily,
         corresponding error messages in <span class="emphasis"><em>Spirit.Karma</em></span> reference
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function3</span></code> and the 3rd parameter (instead
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function3</span></tt> and the 3rd parameter (instead
         of the 4th).
       </p></td></tr>
 </table></div>

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-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -3,10 +3,10 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Introduction</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../index.html" title="Spirit 2.1">
 <link rel="up" href="../index.html" title="Spirit 2.1">
-<link rel="prev" href="what_s_new.html" title="What's New">
+<link rel="previous" href="what_s_new.html" title="What's New">
 <link rel="next" href="structure.html" title="Structure">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -22,15 +22,18 @@
 <div class="spirit-nav">
 <a accesskey="p" href="what_s_new.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="structure.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Introduction">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="spirit.introduction"></a><a class="link" href="introduction.html" title="Introduction">Introduction</a>
-</h2></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="spirit.introduction"></a>Introduction
+</h2></div></div>
+<div></div>
+</div>
 <p>
       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="id579556" href="#ftn.id579556" class="footnote">1</a>]</sup>
+ <sup>[<a name="id411540" href="#ftn.id411540">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
@@ -42,14 +45,14 @@
       embedded languages (DSEL). In fact, Spirit exposes 3 different DSELs to the
       user:
     </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
+<div class="itemizedlist"><ul type="disc">
+<li>
         one for creating parser grammars,
       </li>
-<li class="listitem">
+<li>
         one for the specification of the required tokens to be used for parsing,
       </li>
-<li class="listitem">
+<li>
         and one for the description of the required output formats.
       </li>
 </ul></div>
@@ -67,32 +70,32 @@
       used to generate arbitrarily-formatted output.
     </p>
 <p>
- The <a class="link" href="introduction.html#spirit.spiritstructure" title="Figure 1. The overall structure of the Boost Spirit library">figure</a> below depicts the
+ The figure below depicts the
       overall structure of the Boost Spirit library. The library consists of 4 major
       parts:
     </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
+<div class="itemizedlist"><ul type="disc">
+<li>
 <a href="../../../../../libs/spirit/classic/index.html" target="_top"><span class="emphasis"><em>Spirit.Classic</em></span></a>:
         This is the almost-unchanged code base taken from the former Boost Spirit
         V1.8 distribution. It has been moved into the namespace boost::spirit::classic.
         A special compatibility layer has been added to ensure complete compatibility
         with existing code using Spirit V1.8.
       </li>
-<li class="listitem">
+<li>
 <span class="emphasis"><em>Spirit.Qi</em></span>: This is the parser library allowing you to
         build recursive descent parsers. The exposed domain-specific language can
         be used to describe the grammars to implement, and the rules for storing
         the parsed information.
       </li>
-<li class="listitem">
+<li>
 <span class="emphasis"><em>Spirit.Lex</em></span>: This is the library usable to create tokenizers
         (lexers). The domain-specific language exposed by <span class="emphasis"><em>Spirit.Lex</em></span>
         allows to define regular expressions used to match tokens (create token definitions),
         associate these regular expressions with code to be executed whenever they
         are matched, and to add the token definitions to the lexical analyzer.
       </li>
-<li class="listitem">
+<li>
 <span class="emphasis"><em>Spirit.Karma</em></span>: This is the generator library allowing
         you to create code for recursive descent, data type-driven output formatting.
         The exposed domain-specific language is almost equivalent to the parser description
@@ -104,9 +107,10 @@
       </p>
 <div class="figure">
 <a name="spirit.spiritstructure"></a><p class="title"><b>Figure 1. The overall structure of the Boost Spirit library</b></p>
-<div class="figure-contents"><span class="inlinemediaobject"><img src=".././images/spiritstructure.png" alt="The overall structure of the Boost Spirit library"></span></div>
+<span class="inlinemediaobject"><img src="./images/spiritstructure.png" alt="The
+ overall structure of the Boost Spirit library"></span>
 </div>
-<p><br class="figure-break">
+<p>
     </p>
 <p>
       The three components, <span class="emphasis"><em>Spirit.Qi</em></span>, <span class="emphasis"><em>Spirit.Karma</em></span>
@@ -119,7 +123,8 @@
       there is nothing to stop you from using any of these components all by themselves.
     </p>
 <p>
- The <a class="link" href="introduction.html#spirit.spiritkarmaflow" title="Figure 2. The place of Spirit.Qi and Spirit.Karma in a data transformation flow of a typical application">figure</a> below shows the typical
+ The <a href="introduction.html#spirit.spiritkarmaflow" title="Figure 2. The place of Spirit.Qi and Spirit.Karma
+ in a data transformation flow of a typical application">figure</a> below shows the typical
       data flow of some input being converted to some internal representation. After
       some (optional) transformation these data are converted back into some different,
       external representation. The picture highlights Spirit's place in this data
@@ -130,15 +135,17 @@
 <div class="figure">
 <a name="spirit.spiritkarmaflow"></a><p class="title"><b>Figure 2. The place of <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span>
       in a data transformation flow of a typical application</b></p>
-<div class="figure-contents"><span class="inlinemediaobject"><img src=".././images/spiritkarmaflow.png" alt="The place of Spirit.Qi and Spirit.Karma in a data transformation flow of a typical application"></span></div>
+<span class="inlinemediaobject"><img src="./images/spiritkarmaflow.png" alt="The
+ place of Spirit.Qi and Spirit.Karma
+ in a data transformation flow of a typical application"></span>
 </div>
-<p><br class="figure-break">
+<p>
     </p>
-<a name="spirit.introduction.a_quick_overview_of_parsing_with__emphasis_spirit_qi__emphasis_"></a><h4>
-<a name="id579774"></a>
- <a class="link" href="introduction.html#spirit.introduction.a_quick_overview_of_parsing_with__emphasis_spirit_qi__emphasis_">A
+<a name="spirit.introduction.a_quick_overview_of_parsing_with__emphasis_spirit_qi__emphasis_"></a><h3>
+<a name="id411834"></a>
+ <a 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>
+ </h3>
 <p>
       <span class="emphasis"><em>Spirit.Qi</em></span> is Spirit's sublibrary dealing with generating
       parsers based on a given target grammar (essentially a format description of
@@ -163,14 +170,14 @@
 </pre>
 <p>
       Through the magic of expression templates, this is perfectly valid and executable
- C++ code. The production rule <code class="computeroutput"><span class="identifier">expression</span></code>
- is, in fact, an object that has a member function <code class="computeroutput"><span class="identifier">parse</span></code>
+ C++ code. The production rule <tt class="computeroutput"><span class="identifier">expression</span></tt>
+ is, in fact, an object that has a member function <tt class="computeroutput"><span class="identifier">parse</span></tt>
       that does the work given a source code written in the grammar that we have
       just declared. Yes, it's a calculator. We shall simplify for now by skipping
- the type declarations and the definition of the rule <code class="computeroutput"><span class="identifier">integer</span></code>
- invoked by <code class="computeroutput"><span class="identifier">factor</span></code>. Now, the
- production rule <code class="computeroutput"><span class="identifier">expression</span></code>
- in our grammar specification, traditionally called the <code class="computeroutput"><span class="identifier">start</span></code>
+ the type declarations and the definition of the rule <tt class="computeroutput"><span class="identifier">integer</span></tt>
+ invoked by <tt class="computeroutput"><span class="identifier">factor</span></tt>. Now, the
+ production rule <tt class="computeroutput"><span class="identifier">expression</span></tt>
+ in our grammar specification, traditionally called the <tt class="computeroutput"><span class="identifier">start</span></tt>
       symbol, can recognize inputs such as:
     </p>
 <pre class="programlisting"><span class="number">12345</span>
@@ -197,19 +204,19 @@
 <p>
       as seen in math syntax, for example, to mean multiplication or, in our case,
       as seen in EBNF syntax to mean sequencing (b should follow a). <span class="emphasis"><em>Spirit.Qi</em></span>
- uses the shift <code class="computeroutput"><span class="special">&gt;&gt;</span></code> operator
- instead for this purpose. We take the <code class="computeroutput"><span class="special">&gt;&gt;</span></code>
+ uses the shift <tt class="computeroutput"><span class="special">&gt;&gt;</span></tt> operator
+ instead for this purpose. We take the <tt class="computeroutput"><span class="special">&gt;&gt;</span></tt>
       operator, with arrows pointing to the right, to mean "is followed by".
       Thus we write:
     </p>
 <pre class="programlisting"><span class="identifier">a</span> <span class="special">&gt;&gt;</span> <span class="identifier">b</span>
 </pre>
 <p>
- The alternative operator <code class="computeroutput"><span class="special">|</span></code> and
- the parentheses <code class="computeroutput"><span class="special">()</span></code> remain as is.
- The assignment operator <code class="computeroutput"><span class="special">=</span></code> is used
- in place of EBNF's <code class="computeroutput"><span class="special">::=</span></code>. Last but
- not least, the Kleene star <code class="computeroutput"><span class="special">*</span></code>,
+ The alternative operator <tt class="computeroutput"><span class="special">|</span></tt> and
+ the parentheses <tt class="computeroutput"><span class="special">()</span></tt> remain as is.
+ The assignment operator <tt class="computeroutput"><span class="special">=</span></tt> is used
+ in place of EBNF's <tt class="computeroutput"><span class="special">::=</span></tt>. Last but
+ not least, the Kleene star <tt class="computeroutput"><span class="special">*</span></tt>,
       which in this case is a postfix operator in EBNF becomes a prefix. Instead
       of:
     </p>
@@ -221,15 +228,15 @@
 <pre class="programlisting"><span class="special">*</span><span class="identifier">a</span> <span class="comment">//... in Spirit.
 </span></pre>
 <p>
- since there are no postfix stars, <code class="computeroutput"><span class="special">*</span></code>,
+ since there are no postfix stars, <tt class="computeroutput"><span class="special">*</span></tt>,
       in C/C++. Finally, we terminate each rule with the ubiquitous semi-colon,
- <code class="computeroutput"><span class="special">;</span></code>.
+ <tt class="computeroutput"><span class="special">;</span></tt>.
     </p>
-<a name="spirit.introduction.a_quick_overview_of_output_generation_with__emphasis_spirit_karma__emphasis_"></a><h4>
-<a name="id580730"></a>
- <a class="link" href="introduction.html#spirit.introduction.a_quick_overview_of_output_generation_with__emphasis_spirit_karma__emphasis_">A
+<a name="spirit.introduction.a_quick_overview_of_output_generation_with__emphasis_spirit_karma__emphasis_"></a><h3>
+<a name="id413046"></a>
+ <a 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>
+ </h3>
 <p>
       Spirit not only allows you to describe the structure of the input, it also
       enables the specification of the output format for your data in a similar way,
@@ -237,7 +244,7 @@
     </p>
 <p>
       Let's assume we need to generate a textual representation from a simple data
- structure such as a <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>. Conventional
+ structure such as a <tt 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></tt>. Conventional
       code probably would look like:
     </p>
 <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">int</span><span class="special">&gt;</span> <span class="identifier">v</span> <span class="special">(</span><span class="identifier">initialize_and_fill</span><span class="special">());</span>
@@ -256,118 +263,88 @@
 </pre>
 <p>
       Here are some more examples of format descriptions for different output representations
- 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>:
+ of the same <tt 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></tt>:
     </p>
 <div class="table">
-<a name="id582164"></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;`">
+<a name="id413480"></a><p class="title"><b>Table 2. Different output formats for `std::vector&lt;int&gt;`</b></p>
+<table class="table" summary="Different output formats for `std::vector&lt;int&gt;`">
 <colgroup>
 <col>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
             Format
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
             Example
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
             Description
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="char">'['</span> <span class="special">&lt;&lt;</span>
+<td><p>
+ <tt class="computeroutput"><span class="char">'['</span> <span class="special">&lt;&lt;</span>
             <span class="special">*(</span><span class="identifier">int_</span>
- <span class="special">&lt;&lt;</span> <span class="char">','</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="char">']'</span></code>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="special">[</span><span class="number">1</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">10</span><span class="special">,]</span></code>
- </p>
- </td>
-<td>
- <p>
+ <span class="special">&lt;&lt;</span> <span class="char">','</span><span class="special">)</span> <span class="special">&lt;&lt;</span> <span class="char">']'</span></tt>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="special">[</span><span class="number">1</span><span class="special">,</span><span class="number">8</span><span class="special">,</span><span class="number">10</span><span class="special">,]</span></tt>
+ </p></td>
+<td><p>
             Comma separated list of integers
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="special">*(</span><span class="char">'('</span>
+<td><p>
+ <tt class="computeroutput"><span class="special">*(</span><span class="char">'('</span>
             <span class="special">&lt;&lt;</span> <span class="identifier">int_</span>
             <span class="special">&lt;&lt;</span> <span class="char">')'</span>
- <span class="special">&lt;&lt;</span> <span class="char">','</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="special">(</span><span class="number">1</span><span class="special">),(</span><span class="number">8</span><span class="special">),(</span><span class="number">10</span><span class="special">),</span></code>
- </p>
- </td>
-<td>
- <p>
+ <span class="special">&lt;&lt;</span> <span class="char">','</span><span class="special">)</span></tt>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="special">(</span><span class="number">1</span><span class="special">),(</span><span class="number">8</span><span class="special">),(</span><span class="number">10</span><span class="special">),</span></tt>
+ </p></td>
+<td><p>
             Comma separated list of integers in parenthesis
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="special">*</span><span class="identifier">hex</span></code>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="number">18</span><span class="identifier">a</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="special">*</span><span class="identifier">hex</span></tt>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="number">18</span><span class="identifier">a</span></tt>
+ </p></td>
+<td><p>
             A list of hexadecimal numbers
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="special">*(</span><span class="identifier">double_</span>
- <span class="special">&lt;&lt;</span> <span class="char">','</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="number">1.0</span><span class="special">,</span><span class="number">8.0</span><span class="special">,</span><span class="number">10.0</span><span class="special">,</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="special">*(</span><span class="identifier">double_</span>
+ <span class="special">&lt;&lt;</span> <span class="char">','</span><span class="special">)</span></tt>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="number">1.0</span><span class="special">,</span><span class="number">8.0</span><span class="special">,</span><span class="number">10.0</span><span class="special">,</span></tt>
+ </p></td>
+<td><p>
             A list of floating point numbers
- </p>
- </td>
+ </p></td>
 </tr>
 </tbody>
-</table></div>
+</table>
 </div>
-<br class="table-break"><p>
+<p>
       We will see later in this documentation how it is possible to avoid printing
- the trailing <code class="computeroutput"><span class="char">','</span></code>.
+ the trailing <tt class="computeroutput"><span class="char">','</span></tt>.
     </p>
 <p>
       Overall, the syntax is similar to <span class="emphasis"><em>Spirit.Qi</em></span> with the exception
- that we use the <code class="computeroutput"><span class="special">&lt;&lt;</span></code> operator
+ that we use the <tt class="computeroutput"><span class="special">&lt;&lt;</span></tt> operator
       for output concatenation. This should be easy to understand as it follows the
       conventions used in the Standard's I/O streams.
     </p>
@@ -378,81 +355,61 @@
       next table gives some related examples.
     </p>
 <div class="table">
-<a name="id582548"></a><p class="title"><b>Table 3. Different data types usable with the output format
+<a name="id413943"></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
+<table class="table" summary="Different data types usable with the output format
     `*(int_ &lt;&lt; eol)`">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
             Data type
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
             Description
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">int</span> <span class="identifier">i</span><span class="special">[</span><span class="number">4</span><span class="special">]</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="keyword">int</span> <span class="identifier">i</span><span class="special">[</span><span class="number">4</span><span class="special">]</span></tt>
+ </p></td>
+<td><p>
             C style arrays
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <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>
- </td>
-<td>
- <p>
+<td><p>
+ <tt 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></tt>
+ </p></td>
+<td><p>
             Standard vector
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">list</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;</span></tt>
+ </p></td>
+<td><p>
             Standard list
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special">&lt;</span><span class="keyword">long</span><span class="special">,</span> <span class="number">20</span><span class="special">&gt;</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">array</span><span class="special">&lt;</span><span class="keyword">long</span><span class="special">,</span> <span class="number">20</span><span class="special">&gt;</span></tt>
+ </p></td>
+<td><p>
             Boost array
- </p>
- </td>
+ </p></td>
 </tr>
 </tbody>
-</table></div>
+</table>
 </div>
-<br class="table-break"><div class="footnotes">
+<div class="footnotes">
 <br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id579556" href="#id579556" class="para">1</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id411540" href="#id411540">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-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,12 +1,12 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Karma - Writing Generators</title>
+<title> Karma - Writing Generators</title>
 <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../index.html" title="Spirit 2.1">
 <link rel="up" href="../index.html" title="Spirit 2.1">
-<link rel="prev" href="qi/reference/string/symbols.html" title="Symbols (symbols)">
+<link rel="previous" href="qi/reference/string/symbols.html" title=" Symbols (symbols)">
 <link rel="next" href="karma/tutorials.html" title="Tutorials">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -22,10 +22,13 @@
 <div class="spirit-nav">
 <a accesskey="p" href="qi/reference/string/symbols.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="karma/tutorials.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Karma - Writing Generators">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="spirit.karma"></a><a class="link" href="karma.html" title="Karma - Writing Generators"> Karma - Writing Generators</a>
-</h2></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h2 class="title" style="clear: both">
+<a name="spirit.karma"></a> Karma - Writing Generators
+</h2></div></div>
+<div></div>
+</div>
 <div class="toc"><dl>
 <dt><span class="section">Tutorials</span></dt>
 <dd><dl>

Modified: trunk/libs/spirit/doc/html/spirit/karma/performance_measurements.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/performance_measurements.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/performance_measurements.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -3,11 +3,13 @@
 <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">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../index.html" title="Spirit 2.1">
-<link rel="up" href="../karma.html" title="Karma - Writing Generators">
-<link rel="prev" href="reference/operator/not_predicate.html" title="Not Predicate (!a)">
-<link rel="next" href="performance_measurements/numeric_performance.html" title="Performance of Numeric Generators">
+<link rel="up" href="../karma.html" title=" Karma - Writing Generators">
+<link rel="previous" href="reference/operator/not_predicate.html" title=" Not
+ Predicate (!a)">
+<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>
@@ -22,10 +24,13 @@
 <div class="spirit-nav">
 <a accesskey="p" href="reference/operator/not_predicate.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="section" lang="en">
+<div class="titlepage">
+<div><div><h3 class="title">
+<a name="spirit.karma.performance_measurements"></a>Performance Measurements
+</h3></div></div>
+<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>

Modified: trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,15 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Performance of Numeric Generators</title>
+<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">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <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/int_performance.html" title="Comparing the performance of a single int_ generator">
+<link rel="previous" href="../performance_measurements.html" title="Performance Measurements">
+<link rel="next" href="numeric_performance/int_performance.html" title="
+ Comparing the performance of a single int_ generator">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,11 +24,15 @@
 <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/int_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">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.karma.performance_measurements.numeric_performance"></a><a href="numeric_performance.html" title="
+ Performance of Numeric Generators">
         Performance of Numeric Generators</a>
-</h4></div></div></div>
+</h4></div></div>
+<div></div>
+</div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="numeric_performance/int_performance.html">
           Comparing the performance of a single int_ generator</a></span></dt>

Modified: trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,17 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Comparing the performance of a single double_ generator</title>
+<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">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <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="int_performance.html" title="Comparing the performance of a single int_ generator">
-<link rel="next" href="format_performance.html" title="Comparing the performance of a sequence of several generators">
+<link rel="up" href="../numeric_performance.html" title="
+ Performance of Numeric Generators">
+<link rel="previous" href="int_performance.html" title="
+ Comparing the performance of a single int_ generator">
+<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>
@@ -22,16 +26,20 @@
 <div class="spirit-nav">
 <a accesskey="p" href="int_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">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.karma.performance_measurements.numeric_performance.double_performance"></a><a 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>
+</h5></div></div>
+<div></div>
+</div>
 <p>
             This performance measurements are centered around default formatting
- of a single <code class="computeroutput"><span class="keyword">double</span></code> floating
+ of a single <tt class="computeroutput"><span class="keyword">double</span></tt> floating
             point number using different libraries and methods. The overall execution
- times for those examples are compared below. We compare using <code class="computeroutput"><span class="identifier">sprintf</span></code>, C++ iostreams, Boost.Format,
+ times for those examples are compared below. We compare using <tt class="computeroutput"><span class="identifier">sprintf</span></tt>, C++ iostreams, Boost.Format,
             and <span class="emphasis"><em>Spirit.Karma</em></span>.
           </p>
 <p>
@@ -41,7 +49,7 @@
             below).
           </p>
 <p>
- Code used to measure the performance for <code class="computeroutput"><span class="identifier">sprintf</span></code>:
+ Code used to measure the performance for <tt class="computeroutput"><span class="identifier">sprintf</span></tt>:
           </p>
 <p>
             </p>
@@ -132,12 +140,12 @@
             using different compilers. All times are in seconds measured for 1000000
             iterations (platform: Windows7, Intel Core Duo(tm) Processor, 2.8GHz,
             4GByte RAM). For a more readable comparison of the results see this
- <a class="link" href="double_performance.html#spirit.karma.double_performance" title="Figure 4. Performance comparison for a single double">figure</a>.
+ figure.
           </p>
 <div class="table">
-<a name="id873456"></a><p class="title"><b>Table 6. Performance comparison for a single double (all
+<a name="id685911"></a><p class="title"><b>Table 6. Performance comparison for a single double (all
           times in [s], 1000000 iterations)</b></p>
-<div class="table-contents"><table class="table" summary="Performance comparison for a single double (all
+<table class="table" summary="Performance comparison for a single double (all
           times in [s], 1000000 iterations)">
 <colgroup>
 <col>
@@ -149,201 +157,132 @@
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                   Library
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   gcc 4.4.0 (32 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   VC++ 10 (32 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   Intel 11.1 (32 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   gcc 4.4.0 (64 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   VC++ 10 (64 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   Intel 11.1 (64 bit)
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
+<td><p>
                   sprintf
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.755
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.965
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.880
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.713
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.807
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.694
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   iostreams
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   2.316
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   2.624
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.964
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.634
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.468
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.354
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   <a href="../../../../../../../../libs/format/index.html" target="_top">Boost.Format</a>
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   3.188
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   3.737
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   2.878
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   3.217
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   2.672
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   2.011
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   <span class="emphasis"><em>Spirit.Karma</em></span> double_
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.813
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.561
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.368
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.426
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.260
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.218
- </p>
- </td>
+ </p></td>
 </tr>
 </tbody>
-</table></div>
+</table>
 </div>
-<br class="table-break"><p>
+<p>
             </p>
 <div class="figure">
 <a name="spirit.karma.double_performance"></a><p class="title"><b>Figure 4. 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>
+<span class="inlinemediaobject"><img src="./images/double_performance.png" alt="Performance
+ comparison for a single double"></span>
 </div>
-<p><br class="figure-break">
+<p>
           </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,16 @@
 <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>
+<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">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <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="Lex - Writing Lexical Analyzers">
+<link rel="up" href="../numeric_performance.html" title="
+ Performance of Numeric Generators">
+<link rel="previous" href="double_performance.html" title="
+ Comparing the performance of a single double_ generator">
+<link rel="next" href="../../../lex.html" title=" Lex - Writing Lexical Analyzers">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,17 +25,21 @@
 <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">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.karma.performance_measurements.numeric_performance.format_performance"></a><a 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>
+</h5></div></div>
+<div></div>
+</div>
 <p>
             This performance measurements are centered around formatting of a sequence
- of different items, including 2 <code class="computeroutput"><span class="keyword">double</span></code>
+ of different items, including 2 <tt class="computeroutput"><span class="keyword">double</span></tt>
             floating point numbers using different libraries and methods. The overall
             execution times for those examples are compared below. We compare using
- <code class="computeroutput"><span class="identifier">sprintf</span></code>, C++ iostreams,
+ <tt class="computeroutput"><span class="identifier">sprintf</span></tt>, C++ iostreams,
             <a href="../../../../../../../../libs/format/index.html" target="_top">Boost.Format</a>, and
             <span class="emphasis"><em>Spirit.Karma</em></span>.
           </p>
@@ -152,12 +159,13 @@
             using different compilers. All times are in seconds measured for 1000000
             iterations (platform: Windows7, Intel Core Duo(tm) Processor, 2.8GHz,
             4GByte RAM). For a more readable comparison of the results see this
- <a class="link" href="format_performance.html#spirit.karma.format_performance" title="Figure 5. Performance comparison for a sequence of several items">figure</a>.
+ <a href="format_performance.html#spirit.karma.format_performance" title="Figure 5. Performance comparison for a sequence
+ of several items">figure</a>.
           </p>
 <div class="table">
-<a name="id876622"></a><p class="title"><b>Table 7. Performance comparison for a sequence of several
+<a name="id687907"></a><p class="title"><b>Table 7. Performance comparison for a sequence of several
           items (all times in [s], 1000000 iterations)</b></p>
-<div class="table-contents"><table class="table" summary="Performance comparison for a sequence of several
+<table class="table" summary="Performance comparison for a sequence of several
           items (all times in [s], 1000000 iterations)">
 <colgroup>
 <col>
@@ -169,202 +177,133 @@
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                   Library
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   gcc 4.4.0 (32 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   VC++ 10 (32 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   Intel 11.1 (32 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   gcc 4.4.0 (64 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   VC++ 10 (64 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   Intel 11.1 (64 bit)
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
+<td><p>
                   sprintf
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.725
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.892
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.903
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.469
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.608
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.493
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   iostreams
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   4.827
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   5.287
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   4.444
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   3.112
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   3.319
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   2.877
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   <a href="../../../../../../../../libs/format/index.html" target="_top">Boost.Format</a>
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   5.881
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   7.089
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   5.801
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   5.455
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   5.254
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   4.164
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   <span class="emphasis"><em>Spirit.Karma</em></span>
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.942
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.242
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.999
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.334
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.758
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.686
- </p>
- </td>
+ </p></td>
 </tr>
 </tbody>
-</table></div>
+</table>
 </div>
-<br class="table-break"><p>
+<p>
             </p>
 <div class="figure">
 <a name="spirit.karma.format_performance"></a><p class="title"><b>Figure 5. 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>
+<span class="inlinemediaobject"><img src="./images/format_performance.png" alt="Performance comparison for a sequence
+ of several items"></span>
 </div>
-<p><br class="figure-break">
+<p>
           </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,17 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Comparing the performance of a single int_ generator</title>
+<title>
+ Comparing the performance of a single int_ generator</title>
 <link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <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="double_performance.html" title="Comparing the performance of a single double_ generator">
+<link rel="up" href="../numeric_performance.html" title="
+ Performance of Numeric Generators">
+<link rel="previous" href="../numeric_performance.html" title="
+ Performance of Numeric Generators">
+<link rel="next" href="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>
@@ -22,16 +26,20 @@
 <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="double_performance.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Comparing the performance of a single int_ generator">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.karma.performance_measurements.numeric_performance.int_performance"></a><a class="link" href="int_performance.html" title="Comparing the performance of a single int_ generator">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.karma.performance_measurements.numeric_performance.int_performance"></a><a href="int_performance.html" title="
+ Comparing the performance of a single int_ generator">
           Comparing the performance of a single int_ generator</a>
-</h5></div></div></div>
+</h5></div></div>
+<div></div>
+</div>
 <p>
             This performance measurements are centered around default formatting
- of a single <code class="computeroutput"><span class="keyword">int</span></code> integer
+ of a single <tt class="computeroutput"><span class="keyword">int</span></tt> integer
             number using different libraries and methods. The overall execution times
- for those examples are compared below. We compare using <code class="computeroutput"><span class="identifier">sprintf</span></code>, C++ iostreams, Boost.Format,
+ for those examples are compared below. We compare using <tt class="computeroutput"><span class="identifier">sprintf</span></tt>, C++ iostreams, Boost.Format,
             and <span class="emphasis"><em>Spirit.Karma</em></span>.
           </p>
 <p>
@@ -41,7 +49,7 @@
             shown below).
           </p>
 <p>
- Code used to measure the performance for <code class="computeroutput"><span class="identifier">ltoa</span></code>:
+ Code used to measure the performance for <tt class="computeroutput"><span class="identifier">ltoa</span></tt>:
           </p>
 <p>
             </p>
@@ -122,12 +130,12 @@
             using different compilers. All times are in seconds measured for 10000000
             iterations (platform: Windows7, Intel Core Duo(tm) Processor, 2.8GHz,
             4GByte RAM). For a more readable comparison of the results see this
- <a class="link" href="int_performance.html#spirit.karma.int_performance" title="Figure 3. Performance comparison for a single int">figure</a>.
+ figure.
           </p>
 <div class="table">
-<a name="id872403"></a><p class="title"><b>Table 5. Performance comparison for a single int (all
+<a name="id684535"></a><p class="title"><b>Table 5. Performance comparison for a single int (all
           times in [s], 10000000 iterations)</b></p>
-<div class="table-contents"><table class="table" summary="Performance comparison for a single int (all
+<table class="table" summary="Performance comparison for a single int (all
           times in [s], 10000000 iterations)">
 <colgroup>
 <col>
@@ -139,201 +147,132 @@
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                   Library
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   gcc 4.4.0 (32 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   VC++ 10 (32 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   Intel 11.1 (32 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   gcc 4.4.0 (64 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   VC++ 10 (64 bit)
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   Intel 11.1 (64 bit)
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
+<td><p>
                   ltoa
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.542
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.895
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.884
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.163
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.099
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.906
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   iostreams
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   6.548
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   13.727
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   11.898
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   3.464
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   8.316
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   8.115
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   <a href="../../../../../../../../libs/format/index.html" target="_top">Boost.Format</a>
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   16.998
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   21.813
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   20.477
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   17.464
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   14.662
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   13.646
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   <span class="emphasis"><em>Spirit.Karma</em></span> int_
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.421
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.744
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.697
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   1.072
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.953
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   0.606
- </p>
- </td>
+ </p></td>
 </tr>
 </tbody>
-</table></div>
+</table>
 </div>
-<br class="table-break"><p>
+<p>
             </p>
 <div class="figure">
 <a name="spirit.karma.int_performance"></a><p class="title"><b>Figure 3. Performance comparison for a single int</b></p>
-<div class="figure-contents"><span class="inlinemediaobject"><img src="../../../.././images/int_performance.png" alt="Performance comparison for a single int"></span></div>
+<span class="inlinemediaobject"><img src="./images/int_performance.png" alt="Performance
+ comparison for a single int"></span>
 </div>
-<p><br class="figure-break">
+<p>
           </p>
 </div>
 <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>

Modified: trunk/libs/spirit/doc/html/spirit/karma/quick_reference.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/quick_reference.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/quick_reference.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -3,11 +3,13 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Quick Reference</title>
 <link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../index.html" title="Spirit 2.1">
-<link rel="up" href="../karma.html" title="Karma - Writing Generators">
-<link rel="prev" href="tutorials/num_matrix.html" title="Matrix of Numbers - Printing Numbers From a Matrix">
-<link rel="next" href="quick_reference/common_notation.html" title="Common Notation">
+<link rel="up" href="../karma.html" title=" Karma - Writing Generators">
+<link rel="previous" href="tutorials/num_matrix.html" title=" Matrix of Numbers
+ - Printing Numbers From a Matrix">
+<link rel="next" href="quick_reference/common_notation.html" title="Common
+ Notation">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,10 +24,13 @@
 <div class="spirit-nav">
 <a accesskey="p" href="tutorials/num_matrix.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="quick_reference/common_notation.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Quick Reference">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="spirit.karma.quick_reference"></a><a class="link" href="quick_reference.html" title="Quick Reference">Quick Reference</a>
-</h3></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h3 class="title">
+<a name="spirit.karma.quick_reference"></a>Quick Reference
+</h3></div></div>
+<div></div>
+</div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="quick_reference/common_notation.html">Common
         Notation</a></span></dt>

Modified: trunk/libs/spirit/doc/html/spirit/karma/quick_reference/common_notation.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/quick_reference/common_notation.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/quick_reference/common_notation.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,15 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Common Notation</title>
+<title>Common
+ Notation</title>
 <link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../index.html" title="Spirit 2.1">
 <link rel="up" href="../quick_reference.html" title="Quick Reference">
-<link rel="prev" href="../quick_reference.html" title="Quick Reference">
-<link rel="next" href="primitive_generators.html" title="Karma Generators">
+<link rel="previous" href="../quick_reference.html" title="Quick Reference">
+<link rel="next" href="primitive_generators.html" title="
+ Karma Generators">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,122 +24,126 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../quick_reference.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_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="primitive_generators.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Common Notation">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.karma.quick_reference.common_notation"></a><a class="link" href="common_notation.html" title="Common Notation">Common
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.karma.quick_reference.common_notation"></a><a href="common_notation.html" title="Common
+ Notation">Common
         Notation</a>
-</h4></div></div></div>
-<div class="variablelist" title="Notation">
+</h4></div></div>
+<div></div>
+</div>
+<div class="variablelist">
 <p class="title"><b>Notation</b></p>
 <dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">G</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">G</span></tt></span></dt>
 <dd><p>
               Generator type
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">g</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">g</span><span class="special">,</span> <span class="identifier">a</span><span class="special">,</span>
           <span class="identifier">b</span><span class="special">,</span>
           <span class="identifier">c</span><span class="special">,</span>
- <span class="identifier">d</span></code></span></dt>
+ <span class="identifier">d</span></tt></span></dt>
 <dd><p>
               Generator objects
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">,</span>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">,</span>
           <span class="identifier">C</span><span class="special">,</span>
- <span class="identifier">D</span></code></span></dt>
+ <span class="identifier">D</span></tt></span></dt>
 <dd><p>
- Attribute types of generators <code class="computeroutput"><span class="identifier">a</span></code>,
- <code class="computeroutput"><span class="identifier">b</span></code>, <code class="computeroutput"><span class="identifier">c</span></code>,
- and <code class="computeroutput"><span class="identifier">d</span></code>
+ Attribute types of generators <tt class="computeroutput"><span class="identifier">a</span></tt>,
+ <tt class="computeroutput"><span class="identifier">b</span></tt>, <tt class="computeroutput"><span class="identifier">c</span></tt>,
+ and <tt class="computeroutput"><span class="identifier">d</span></tt>
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">I</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">I</span></tt></span></dt>
 <dd><p>
               The iterator type used for generation
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">Unused</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Unused</span></tt></span></dt>
 <dd><p>
- An <code class="computeroutput"><span class="identifier">unused_type</span></code>
+ An <tt class="computeroutput"><span class="identifier">unused_type</span></tt>
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">Context</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Context</span></tt></span></dt>
 <dd><p>
- The enclosing rule's <code class="computeroutput"><span class="identifier">Context</span></code>
+ The enclosing rule's <tt class="computeroutput"><span class="identifier">Context</span></tt>
               type
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">attrib</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">attrib</span></tt></span></dt>
 <dd><p>
               A attribute value
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">Attrib</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Attrib</span></tt></span></dt>
 <dd><p>
               An attribute type
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">b</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">b</span></tt></span></dt>
 <dd><p>
               A boolean expression
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">B</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">B</span></tt></span></dt>
 <dd><p>
               A type to be interpreted as in boolean expressions
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">fg</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">fg</span></tt></span></dt>
 <dd><p>
- A (lazy generator) function with signature <code class="computeroutput"><span class="identifier">G</span><span class="special">(</span><span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">)</span></code>
+ A (lazy generator) function with signature <tt class="computeroutput"><span class="identifier">G</span><span class="special">(</span><span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">)</span></tt>
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">fa</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">fa</span></tt></span></dt>
 <dd><p>
- A (semantic action) function with signature <code class="computeroutput"><span class="keyword">void</span><span class="special">(</span><span class="identifier">Attrib</span><span class="special">&amp;,</span> <span class="identifier">Context</span><span class="special">,</span> <span class="keyword">bool</span><span class="special">&amp;)</span></code>. The third parameter is a boolean
+ A (semantic action) function with signature <tt class="computeroutput"><span class="keyword">void</span><span class="special">(</span><span class="identifier">Attrib</span><span class="special">&amp;,</span> <span class="identifier">Context</span><span class="special">,</span> <span class="keyword">bool</span><span class="special">&amp;)</span></tt>. The third parameter is a boolean
               flag that can be set to false to force the generator to fail. Both
- <code class="computeroutput"><span class="identifier">Context</span></code> and the boolean
+ <tt class="computeroutput"><span class="identifier">Context</span></tt> and the boolean
               flag are optional.
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">outiter</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">outiter</span></tt></span></dt>
 <dd><p>
               An output iterator to receive the generated output
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">Ch</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Ch</span></tt></span></dt>
 <dd><p>
               Character-class specific character type (See Character Class Types)
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">ch</span><span class="special">,</span> <span class="identifier">ch2</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">ch</span><span class="special">,</span> <span class="identifier">ch2</span></tt></span></dt>
 <dd><p>
               Character-class specific character (See Character Class Types)
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">charset</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">charset</span></tt></span></dt>
 <dd><p>
               Character-set specifier string (example: "a-z0-9")
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">str</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">str</span></tt></span></dt>
 <dd><p>
               Character-class specific string (See Character Class Types)
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">Str</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Str</span></tt></span></dt>
 <dd><p>
- Attribute of <code class="computeroutput"><span class="identifier">str</span></code>:
- <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">str</span></code>
+ Attribute of <tt class="computeroutput"><span class="identifier">str</span></tt>:
+ <tt 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></tt>
+ where <tt class="computeroutput"><span class="identifier">T</span></tt> is the underlying
+ character type of <tt class="computeroutput"><span class="identifier">str</span></tt>
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">num</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">num</span></tt></span></dt>
 <dd><p>
               Numeric literal, any integer or real number type
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">Num</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Num</span></tt></span></dt>
 <dd><p>
- Attribute of <code class="computeroutput"><span class="identifier">num</span></code>: any
+ Attribute of <tt class="computeroutput"><span class="identifier">num</span></tt>: any
               integer or real number type
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">tuple</span><span class="special">&lt;&gt;</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">tuple</span><span class="special">&lt;&gt;</span></tt></span></dt>
 <dd><p>
               Used as a placeholder for a fusion sequence
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">vector</span><span class="special">&lt;&gt;</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">vector</span><span class="special">&lt;&gt;</span></tt></span></dt>
 <dd><p>
               Used as a placeholder for an STL container
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">variant</span><span class="special">&lt;&gt;</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">variant</span><span class="special">&lt;&gt;</span></tt></span></dt>
 <dd><p>
               Used as a placeholder for a boost::variant
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">optional</span><span class="special">&lt;&gt;</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">optional</span><span class="special">&lt;&gt;</span></tt></span></dt>
 <dd><p>
               Used as a placeholder for a boost::optional
             </p></dd>

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-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,12 +1,14 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Compound Attribute Rules</title>
+<title>Compound
+ Attribute Rules</title>
 <link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../index.html" title="Spirit 2.1">
 <link rel="up" href="../quick_reference.html" title="Quick Reference">
-<link rel="prev" href="primitive_generators/action.html" title="Generator Semantic Actions">
+<link rel="previous" href="primitive_generators/action.html" title="
+ Generator Semantic Actions">
 <link rel="next" href="non_terminals.html" title="Non-terminals">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -22,26 +24,30 @@
 <div class="spirit-nav">
 <a accesskey="p" href="primitive_generators/action.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_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="non_terminals.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Compound Attribute Rules">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.karma.quick_reference.compound_attribute_rules"></a><a class="link" href="compound_attribute_rules.html" title="Compound Attribute Rules">Compound
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.karma.quick_reference.compound_attribute_rules"></a><a href="compound_attribute_rules.html" title="Compound
+ Attribute Rules">Compound
         Attribute Rules</a>
-</h4></div></div></div>
-<a name="spirit.karma.quick_reference.compound_attribute_rules.notation"></a><h6>
-<a name="id751705"></a>
- <a class="link" href="compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Notation</a>
- </h6>
+</h4></div></div>
+<div></div>
+</div>
+<a name="spirit.karma.quick_reference.compound_attribute_rules.notation"></a><h5>
+<a name="id564114"></a>
+ Notation
+ </h5>
 <p>
           The notation we will use will be of the form:
         </p>
 <pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span><span class="special">,</span> <span class="special">...</span> <span class="special">--&gt;</span> <span class="identifier">composite</span><span class="special">-</span><span class="identifier">expression</span><span class="special">:</span> <span class="identifier">composite</span><span class="special">-</span><span class="identifier">attribute</span>
 </pre>
 <p>
- <code class="computeroutput"><span class="identifier">a</span></code>, <code class="computeroutput"><span class="identifier">b</span></code>,
- etc. are the operands. <code class="computeroutput"><span class="identifier">A</span></code>,
- <code class="computeroutput"><span class="identifier">B</span></code>, etc. are the operand's
- attribute types. <code class="computeroutput"><span class="identifier">composite</span><span class="special">-</span><span class="identifier">expression</span></code>
- is the expression involving the operands and <code class="computeroutput"><span class="identifier">composite</span><span class="special">-</span><span class="identifier">attribute</span></code>
+ <tt class="computeroutput"><span class="identifier">a</span></tt>, <tt class="computeroutput"><span class="identifier">b</span></tt>,
+ etc. are the operands. <tt class="computeroutput"><span class="identifier">A</span></tt>,
+ <tt class="computeroutput"><span class="identifier">B</span></tt>, etc. are the operand's
+ attribute types. <tt class="computeroutput"><span class="identifier">composite</span><span class="special">-</span><span class="identifier">expression</span></tt>
+ is the expression involving the operands and <tt class="computeroutput"><span class="identifier">composite</span><span class="special">-</span><span class="identifier">attribute</span></tt>
           is the resulting attribute type of the composite expression.
         </p>
 <p>
@@ -50,64 +56,60 @@
 <pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--&gt;</span> <span class="special">(</span><span class="identifier">a</span> <span class="special">&lt;&lt;</span> <span class="identifier">b</span><span class="special">):</span> <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>
 </pre>
 <p>
- which reads as: given, <code class="computeroutput"><span class="identifier">a</span></code>
- and <code class="computeroutput"><span class="identifier">b</span></code> are generators, and
- <code class="computeroutput"><span class="identifier">A</span></code> is the type of the attribute
- of <code class="computeroutput"><span class="identifier">a</span></code>, and <code class="computeroutput"><span class="identifier">B</span></code> is the type of the attribute of <code class="computeroutput"><span class="identifier">b</span></code>, then the type of the attribute of
- <code class="computeroutput"><span class="identifier">a</span> <span class="special">&lt;&lt;</span>
- <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>.
+ which reads as: given, <tt class="computeroutput"><span class="identifier">a</span></tt>
+ and <tt class="computeroutput"><span class="identifier">b</span></tt> are generators, and
+ <tt class="computeroutput"><span class="identifier">A</span></tt> is the type of the attribute
+ of <tt class="computeroutput"><span class="identifier">a</span></tt>, and <tt class="computeroutput"><span class="identifier">B</span></tt> is the type of the attribute of <tt class="computeroutput"><span class="identifier">b</span></tt>, then the type of the attribute of
+ <tt class="computeroutput"><span class="identifier">a</span> <span class="special">&lt;&lt;</span>
+ <span class="identifier">b</span></tt> will be <tt 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></tt>.
         </p>
-<div class="important" title="Important"><table border="0" summary="Important">
+<div class="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>
- In the attribute tables, we will use <code class="computeroutput"><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span></code> and <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> as placeholders only. The notation
- of <code class="computeroutput"><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span></code>
+<tr><td colspan="2" align="left" valign="top"><p>
+ In the attribute tables, we will use <tt class="computeroutput"><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span></tt> and <tt 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></tt> as placeholders only. The notation
+ of <tt class="computeroutput"><span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span></tt>
             stands for <span class="emphasis"><em>any STL
- container</em></span> holding elements of type <code class="computeroutput"><span class="identifier">A</span></code>
- and the notation <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> stands for <span class="emphasis"><em>any Boost.Fusion sequence</em></span>
- holding <code class="computeroutput"><span class="identifier">A</span></code>, <code class="computeroutput"><span class="identifier">B</span></code>, ... etc. elements. The notation
- of <code class="computeroutput"><span class="identifier">variant</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">,</span> <span class="special">...&gt;</span></code> stands for <span class="emphasis"><em>a Boost.Variant</em></span>
- capable of holding <code class="computeroutput"><span class="identifier">A</span></code>,
- <code class="computeroutput"><span class="identifier">B</span></code>, ... etc. elements.
- Finally, <code class="computeroutput"><span class="identifier">Unused</span></code> stands
- for <code class="computeroutput"><span class="identifier">unused_type</span></code>.
+ container</em></span> holding elements of type <tt class="computeroutput"><span class="identifier">A</span></tt>
+ and the notation <tt 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></tt> stands for <span class="emphasis"><em>any Boost.Fusion sequence</em></span>
+ holding <tt class="computeroutput"><span class="identifier">A</span></tt>, <tt class="computeroutput"><span class="identifier">B</span></tt>, ... etc. elements. The notation
+ of <tt class="computeroutput"><span class="identifier">variant</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">,</span> <span class="special">...&gt;</span></tt> stands for <span class="emphasis"><em>a Boost.Variant</em></span>
+ capable of holding <tt class="computeroutput"><span class="identifier">A</span></tt>,
+ <tt class="computeroutput"><span class="identifier">B</span></tt>, ... etc. elements.
+ Finally, <tt class="computeroutput"><span class="identifier">Unused</span></tt> stands
+ for <tt class="computeroutput"><span class="identifier">unused_type</span></tt>.
           </p></td></tr>
 </table></div>
-<a name="spirit.karma.quick_reference.compound_attribute_rules.compound_generator_attribute_types"></a><h6>
-<a name="id753333"></a>
- <a class="link" href="compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.compound_generator_attribute_types">Compound
+<a name="spirit.karma.quick_reference.compound_attribute_rules.compound_generator_attribute_types"></a><h5>
+<a name="id564897"></a>
+ <a href="compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.compound_generator_attribute_types">Compound
           Generator Attribute Types</a>
- </h6>
+ </h5>
 <div class="informaltable"><table class="table">
 <colgroup>
 <col>
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                   Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   Attribute
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
+<td><p>
+ <a href="../reference/operator/sequence.html" title=" Sequences
+ (a &lt;&lt;
+ b)">Sequence
+ (<tt class="computeroutput"><span class="special">&lt;&lt;</span></tt>)</a>
+ </p></td>
 <td>
- <p>
- <a class="link" href="../reference/operator/sequence.html" title="Sequences (a &lt;&lt; b)">Sequence
- (<code class="computeroutput"><span class="special">&lt;&lt;</span></code>)</a>
- </p>
- </td>
-<td>
- <p>
+<p>
                   
 </p>
 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--&gt;</span> <span class="special">(</span><span class="identifier">a</span> <span class="special">&lt;&lt;</span> <span class="identifier">b</span><span class="special">):</span> <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>
@@ -121,17 +123,17 @@
 <span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span> <span class="special">--&gt;</span> <span class="special">(</span><span class="identifier">a</span> <span class="special">&lt;&lt;</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span></pre>
 <p>
                 </p>
- </td>
+</td>
 </tr>
 <tr>
+<td><p>
+ <a href="../reference/operator/alternative.html" title=" Alternative
+ (a |
+ b)">Alternative
+ (<tt class="computeroutput"><span class="special">|</span></tt>)</a>
+ </p></td>
 <td>
- <p>
- <a class="link" href="../reference/operator/alternative.html" title="Alternative (a | b)">Alternative
- (<code class="computeroutput"><span class="special">|</span></code>)</a>
- </p>
- </td>
-<td>
- <p>
+<p>
                   
 </p>
 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--&gt;</span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">variant</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>
@@ -141,120 +143,107 @@
 <span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="special">(</span><span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">A</span></pre>
 <p>
                 </p>
- </td>
+</td>
 </tr>
 <tr>
+<td><p>
+ <a href="../reference/operator/kleene.html" title=" Kleene Star
+ (*a)">kleene (unary
+ <tt class="computeroutput"><span class="special">*</span></tt>)</a>
+ </p></td>
 <td>
- <p>
- <a class="link" href="../reference/operator/kleene.html" title="Kleene Star (*a)">kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>
- </p>
- </td>
-<td>
- <p>
+<p>
                   
 </p>
 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="special">*</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
 <span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--&gt;</span> <span class="special">*</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
 <p>
                 </p>
- </td>
+</td>
 </tr>
 <tr>
+<td><p>
+ <a href="../reference/operator/plus.html" title=" Plus (+a)">Plus (unary
+ <tt class="computeroutput"><span class="special">+</span></tt>)</a>
+ </p></td>
 <td>
- <p>
- <a class="link" href="../reference/operator/plus.html" title="Plus (+a)">Plus (unary
- <code class="computeroutput"><span class="special">+</span></code>)</a>
- </p>
- </td>
-<td>
- <p>
+<p>
                   
 </p>
 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="special">+</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
 <span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--&gt;</span> <span class="special">+</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
 <p>
                 </p>
- </td>
+</td>
 </tr>
 <tr>
+<td><p>
+ List (%)
+ </p></td>
 <td>
- <p>
- <a class="link" href="../reference/operator/list.html" title="Lists (a % b)">List (<code class="computeroutput"><span class="special">%</span></code>)</a>
- </p>
- </td>
-<td>
- <p>
+<p>
                   
 </p>
 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--&gt;</span> <span class="special">(</span><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
 <span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--&gt;</span> <span class="special">(</span><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">Unused</span></pre>
 <p>
                 </p>
- </td>
+</td>
 </tr>
 <tr>
+<td><p>
+ <a href="../reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">repetition</a>
+ </p></td>
 <td>
- <p>
- <a class="link" href="../reference/directive/repeat.html" title="Repetition Directive (repeat[])">repetition</a>
- </p>
- </td>
-<td>
- <p>
+<p>
                   
 </p>
 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="identifier">repeat</span><span class="special">(...,...)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
 <span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--&gt;</span> <span class="identifier">repeat</span><span class="special">(...,...)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">Unused</span></pre>
 <p>
                 </p>
- </td>
+</td>
 </tr>
 <tr>
+<td><p>
+ <a href="../reference/operator/optional.html" title=" Optional
+ (-a)">Optional
+ (unary <tt class="computeroutput"><span class="special">-</span></tt>)</a>
+ </p></td>
 <td>
- <p>
- <a class="link" href="../reference/operator/optional.html" title="Optional (-a)">Optional
- (unary <code class="computeroutput"><span class="special">-</span></code>)</a>
- </p>
- </td>
-<td>
- <p>
+<p>
                   
 </p>
 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="special">-</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">optional</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
 <span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span> <span class="special">--&gt;</span> <span class="special">-</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">Unused</span></pre>
 <p>
                 </p>
- </td>
+</td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../reference/operator/and_predicate.html" title="And Predicate (&amp;a)">And
- predicate (unary <code class="computeroutput"><span class="special">&amp;</span></code>)</a>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+<td><p>
+ <a href="../reference/operator/and_predicate.html" title=" And
+ Predicate (&amp;a)">And
+ predicate (unary <tt class="computeroutput"><span class="special">&amp;</span></tt>)</a>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
                   <span class="identifier">A</span> <span class="special">--&gt;</span>
- <span class="special">&amp;</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span></code>
- </p>
- </td>
+ <span class="special">&amp;</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span></tt>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../reference/operator/not_predicate.html" title="Not Predicate (!a)">Not
- predicate (unary <code class="computeroutput"><span class="special">!</span></code>)</a>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+<td><p>
+ <a href="../reference/operator/not_predicate.html" title=" Not
+ Predicate (!a)">Not
+ predicate (unary <tt class="computeroutput"><span class="special">!</span></tt>)</a>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
                   <span class="identifier">A</span> <span class="special">--&gt;</span>
- <span class="special">!</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span></code>
- </p>
- </td>
+ <span class="special">!</span><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span></tt>
+ </p></td>
 </tr>
 </tbody>
 </table></div>

Modified: trunk/libs/spirit/doc/html/spirit/karma/quick_reference/non_terminals.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/quick_reference/non_terminals.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/quick_reference/non_terminals.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -3,11 +3,13 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Non-terminals</title>
 <link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../index.html" title="Spirit 2.1">
 <link rel="up" href="../quick_reference.html" title="Quick Reference">
-<link rel="prev" href="compound_attribute_rules.html" title="Compound Attribute Rules">
-<link rel="next" href="semantic_actions.html" title="Semantic Actions">
+<link rel="previous" href="compound_attribute_rules.html" title="Compound
+ Attribute Rules">
+<link rel="next" href="semantic_actions.html" title="Semantic
+ Actions">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,58 +24,61 @@
 <div class="spirit-nav">
 <a accesskey="p" href="compound_attribute_rules.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_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="semantic_actions.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Non-terminals">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.karma.quick_reference.non_terminals"></a><a class="link" href="non_terminals.html" title="Non-terminals">Non-terminals</a>
-</h4></div></div></div>
-<div class="variablelist" title="Notation">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.karma.quick_reference.non_terminals"></a>Non-terminals
+</h4></div></div>
+<div></div>
+</div>
+<div class="variablelist">
 <p class="title"><b>Notation</b></p>
 <dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">RT</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">RT</span></tt></span></dt>
 <dd><p>
               Synthesized attribute. The rule or grammar's return type.
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">Arg1</span></code>,
- <code class="computeroutput"><span class="identifier">Arg2</span></code>, <code class="computeroutput"><span class="identifier">ArgN</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Arg1</span></tt>,
+ <tt class="computeroutput"><span class="identifier">Arg2</span></tt>, <tt class="computeroutput"><span class="identifier">ArgN</span></tt></span></dt>
 <dd><p>
               Inherited attributes. Zero or more arguments.
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">L1</span></code>,
- <code class="computeroutput"><span class="identifier">L2</span></code>, <code class="computeroutput"><span class="identifier">LN</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">L1</span></tt>,
+ <tt class="computeroutput"><span class="identifier">L2</span></tt>, <tt class="computeroutput"><span class="identifier">LN</span></tt></span></dt>
 <dd><p>
               Zero or more local variables.
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">r</span><span class="special">,</span> <span class="identifier">r2</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">r</span><span class="special">,</span> <span class="identifier">r2</span></tt></span></dt>
 <dd><p>
               Rules
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">g</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">g</span></tt></span></dt>
 <dd><p>
               A grammar
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">p</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">p</span></tt></span></dt>
 <dd><p>
               A generator expression
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">my_grammar</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">my_grammar</span></tt></span></dt>
 <dd><p>
               A user defined grammar
             </p></dd>
 </dl>
 </div>
-<div class="variablelist" title="Terminology">
+<div class="variablelist">
 <p class="title"><b>Terminology</b></p>
 <dl>
 <dt><span class="term">Signature</span></dt>
 <dd><p>
- <code class="computeroutput"><span class="identifier">RT</span><span class="special">(</span><span class="identifier">Arg1</span><span class="special">,</span> <span class="identifier">Arg2</span> <span class="special">...</span>
- <span class="special">,</span><span class="identifier">ArgN</span><span class="special">)</span></code>. The signature specifies the synthesized
+ <tt class="computeroutput"><span class="identifier">RT</span><span class="special">(</span><span class="identifier">Arg1</span><span class="special">,</span> <span class="identifier">Arg2</span> <span class="special">...</span>
+ <span class="special">,</span><span class="identifier">ArgN</span><span class="special">)</span></tt>. The signature specifies the synthesized
               (return value) and inherited (arguments) attributes.
             </p></dd>
 <dt><span class="term">Locals</span></dt>
 <dd><p>
- <code class="computeroutput"><span class="identifier">locals</span><span class="special">&lt;</span><span class="identifier">L1</span><span class="special">,</span> <span class="identifier">L2</span> <span class="special">...,</span>
- <span class="identifier">LN</span><span class="special">&gt;</span></code>.
+ <tt class="computeroutput"><span class="identifier">locals</span><span class="special">&lt;</span><span class="identifier">L1</span><span class="special">,</span> <span class="identifier">L2</span> <span class="special">...,</span>
+ <span class="identifier">LN</span><span class="special">&gt;</span></tt>.
               The local variables.
             </p></dd>
 <dt><span class="term">Delimiter</span></dt>
@@ -82,15 +87,15 @@
             </p></dd>
 </dl>
 </div>
-<div class="variablelist" title="Template Arguments">
+<div class="variablelist">
 <p class="title"><b>Template Arguments</b></p>
 <dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">Iterator</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Iterator</span></tt></span></dt>
 <dd><p>
               The iterator type you will use for parsing.
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">A1</span></code>,
- <code class="computeroutput"><span class="identifier">A2</span></code>, <code class="computeroutput"><span class="identifier">A3</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">A1</span></tt>,
+ <tt class="computeroutput"><span class="identifier">A2</span></tt>, <tt class="computeroutput"><span class="identifier">A3</span></tt></span></dt>
 <dd><p>
               Can be one of 1)Signature 2)Locals 3)Skipper.
             </p></dd>
@@ -102,149 +107,109 @@
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                   Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                   Description
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">rule</span><span class="special">&lt;</span><span class="identifier">Iterator</span><span class="special">,</span>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">rule</span><span class="special">&lt;</span><span class="identifier">Iterator</span><span class="special">,</span>
                   <span class="identifier">A1</span><span class="special">,</span>
                   <span class="identifier">A2</span><span class="special">,</span>
                   <span class="identifier">A3</span><span class="special">&gt;</span>
- <span class="identifier">r</span><span class="special">(</span><span class="identifier">name</span><span class="special">);</span></code>
- </p>
- </td>
-<td>
- <p>
- Rule declaration. <code class="computeroutput"><span class="identifier">Iterator</span></code>
- is required. <code class="computeroutput"><span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">,</span> <span class="identifier">A3</span></code>
- are optional and can be specified in any order. <code class="computeroutput"><span class="identifier">name</span></code>
+ <span class="identifier">r</span><span class="special">(</span><span class="identifier">name</span><span class="special">);</span></tt>
+ </p></td>
+<td><p>
+ Rule declaration. <tt class="computeroutput"><span class="identifier">Iterator</span></tt>
+ is required. <tt class="computeroutput"><span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">,</span> <span class="identifier">A3</span></tt>
+ are optional and can be specified in any order. <tt class="computeroutput"><span class="identifier">name</span></tt>
                   is an optional string that gives the rule its name, useful for
                   debugging and error handling.
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">rule</span><span class="special">&lt;</span><span class="identifier">Iterator</span><span class="special">,</span>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">rule</span><span class="special">&lt;</span><span class="identifier">Iterator</span><span class="special">,</span>
                   <span class="identifier">A1</span><span class="special">,</span>
                   <span class="identifier">A2</span><span class="special">,</span>
                   <span class="identifier">A3</span><span class="special">&gt;</span>
- <span class="identifier">r</span><span class="special">(</span><span class="identifier">r2</span><span class="special">);</span></code>
- </p>
- </td>
-<td>
- <p>
- Copy construct rule <code class="computeroutput"><span class="identifier">r</span></code>
- from rule <code class="computeroutput"><span class="identifier">r2</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">r</span> <span class="special">=</span>
- <span class="identifier">r2</span><span class="special">;</span></code>
- </p>
- </td>
-<td>
- <p>
- Assign rule <code class="computeroutput"><span class="identifier">r2</span></code>
- to <code class="computeroutput"><span class="identifier">r</span></code>. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span></code> semantics.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">alias</span><span class="special">()</span></code>
- </p>
- </td>
-<td>
- <p>
- return an alias of <code class="computeroutput"><span class="identifier">r</span></code>.
- The alias is a generator that holds a reference to <code class="computeroutput"><span class="identifier">r</span></code>. Reference semantics.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">copy</span><span class="special">()</span></code>
- </p>
- </td>
-<td>
- <p>
- Get a copy of <code class="computeroutput"><span class="identifier">r</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
+ <span class="identifier">r</span><span class="special">(</span><span class="identifier">r2</span><span class="special">);</span></tt>
+ </p></td>
+<td><p>
+ Copy construct rule <tt class="computeroutput"><span class="identifier">r</span></tt>
+ from rule <tt class="computeroutput"><span class="identifier">r2</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">r</span> <span class="special">=</span>
+ <span class="identifier">r2</span><span class="special">;</span></tt>
+ </p></td>
+<td><p>
+ Assign rule <tt class="computeroutput"><span class="identifier">r2</span></tt>
+ to <tt class="computeroutput"><span class="identifier">r</span></tt>. <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span></tt> semantics.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">alias</span><span class="special">()</span></tt>
+ </p></td>
+<td><p>
+ return an alias of <tt class="computeroutput"><span class="identifier">r</span></tt>.
+ The alias is a generator that holds a reference to <tt class="computeroutput"><span class="identifier">r</span></tt>. Reference semantics.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">copy</span><span class="special">()</span></tt>
+ </p></td>
+<td><p>
+ Get a copy of <tt class="computeroutput"><span class="identifier">r</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span></tt>
+ </p></td>
+<td><p>
                   Naming a rule
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">name</span><span class="special">()</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">r</span><span class="special">.</span><span class="identifier">name</span><span class="special">()</span></tt>
+ </p></td>
+<td><p>
                   Getting the name of a rule
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">r</span> <span class="special">=</span>
- <span class="identifier">g</span><span class="special">;</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">r</span> <span class="special">=</span>
+ <span class="identifier">g</span><span class="special">;</span></tt>
+ </p></td>
+<td><p>
                   Rule definition
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">r</span> <span class="special">%=</span>
- <span class="identifier">g</span><span class="special">;</span></code>
- </p>
- </td>
-<td>
- <p>
- Auto-rule definition. The attribute of <code class="computeroutput"><span class="identifier">g</span></code>
- should be compatible with the synthesized attribute of <code class="computeroutput"><span class="identifier">r</span></code>. When <code class="computeroutput"><span class="identifier">g</span></code>
- is successful, its attribute is automatically propagated to <code class="computeroutput"><span class="identifier">r</span></code>'s synthesized attribute.
- </p>
- </td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">r</span> <span class="special">%=</span>
+ <span class="identifier">g</span><span class="special">;</span></tt>
+ </p></td>
+<td><p>
+ Auto-rule definition. The attribute of <tt class="computeroutput"><span class="identifier">g</span></tt>
+ should be compatible with the synthesized attribute of <tt class="computeroutput"><span class="identifier">r</span></tt>. When <tt class="computeroutput"><span class="identifier">g</span></tt>
+ is successful, its attribute is automatically propagated to <tt class="computeroutput"><span class="identifier">r</span></tt>'s synthesized attribute.
+ </p></td>
 </tr>
 <tr>
 <td>
- <p>
+<p>
                   
 </p>
 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">&gt;</span>
@@ -262,50 +227,36 @@
 </pre>
 <p>
                 </p>
- </td>
-<td>
- <p>
- Grammar definition. <code class="computeroutput"><span class="identifier">name</span></code>
+</td>
+<td><p>
+ Grammar definition. <tt class="computeroutput"><span class="identifier">name</span></tt>
                   is an optional string that gives the grammar its name, useful for
                   debugging and error handling.
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
+<td><p>
                   my_grammar&lt;Iterator&gt; g
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                   Instantiating a grammar
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="identifier">name</span><span class="special">)</span></tt>
+ </p></td>
+<td><p>
                   Naming a grammar
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">name</span><span class="special">()</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">g</span><span class="special">.</span><span class="identifier">name</span><span class="special">()</span></tt>
+ </p></td>
+<td><p>
                   Getting the name of a grammar
- </p>
- </td>
+ </p></td>
 </tr>
 </tbody>
 </table></div>

Modified: trunk/libs/spirit/doc/html/spirit/karma/quick_reference/phoenix.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/quick_reference/phoenix.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/quick_reference/phoenix.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -3,10 +3,11 @@
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
 <title>Phoenix</title>
 <link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../index.html" title="Spirit 2.1">
 <link rel="up" href="../quick_reference.html" title="Quick Reference">
-<link rel="prev" href="semantic_actions.html" title="Semantic Actions">
+<link rel="previous" href="semantic_actions.html" title="Semantic
+ Actions">
 <link rel="next" href="../reference.html" title="Reference">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
@@ -22,10 +23,13 @@
 <div class="spirit-nav">
 <a accesskey="p" href="semantic_actions.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_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="../reference.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Phoenix">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.karma.quick_reference.phoenix"></a><a class="link" href="phoenix.html" title="Phoenix">Phoenix</a>
-</h4></div></div></div>
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.karma.quick_reference.phoenix"></a>Phoenix
+</h4></div></div>
+<div></div>
+</div>
 <p>
           <a href="../../../../../phoenix/doc/html/index.html" target="_top">Boost.Phoenix</a> makes
           it easier to attach semantic actions. You just inline your lambda expressions:
@@ -34,38 +38,38 @@
 </pre>
 <p>
           <span class="emphasis"><em>Spirit.Karma</em></span> provides some Boost.Phoenix
- placeholders to access important information from the <code class="computeroutput"><span class="identifier">Attrib</span></code>
- and <code class="computeroutput"><span class="identifier">Context</span></code> that are otherwise
+ placeholders to access important information from the <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ and <tt class="computeroutput"><span class="identifier">Context</span></tt> that are otherwise
           fiddly to extract.
         </p>
-<div class="variablelist" title="Spirit.Karma specific Phoenix placeholders">
+<div class="variablelist">
 <p class="title"><b>Spirit.Karma specific Phoenix placeholders</b></p>
 <dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">_1</span><span class="special">,</span> <span class="identifier">_2</span><span class="special">...</span> <span class="special">,</span> <span class="identifier">_N</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">_1</span><span class="special">,</span> <span class="identifier">_2</span><span class="special">...</span> <span class="special">,</span> <span class="identifier">_N</span></tt></span></dt>
 <dd><p>
- Nth attribute of <code class="computeroutput"><span class="identifier">g</span></code>
+ Nth attribute of <tt class="computeroutput"><span class="identifier">g</span></tt>
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">_val</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">_val</span></tt></span></dt>
 <dd><p>
               The enclosing rule's synthesized attribute.
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">_r1</span><span class="special">,</span> <span class="identifier">_r2</span><span class="special">...</span> <span class="special">,</span> <span class="identifier">_rN</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">_r1</span><span class="special">,</span> <span class="identifier">_r2</span><span class="special">...</span> <span class="special">,</span> <span class="identifier">_rN</span></tt></span></dt>
 <dd><p>
               The enclosing rule's Nth inherited attribute.
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">_a</span><span class="special">,</span> <span class="identifier">_b</span><span class="special">...</span> <span class="special">,</span> <span class="identifier">_j</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">_a</span><span class="special">,</span> <span class="identifier">_b</span><span class="special">...</span> <span class="special">,</span> <span class="identifier">_j</span></tt></span></dt>
 <dd><p>
- The enclosing rule's local variables (<code class="computeroutput"><span class="identifier">_a</span></code>
+ The enclosing rule's local variables (<tt class="computeroutput"><span class="identifier">_a</span></tt>
               refers to the first).
             </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">_pass</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">_pass</span></tt></span></dt>
 <dd><p>
- Assign <code class="computeroutput"><span class="keyword">false</span></code> to <code class="computeroutput"><span class="identifier">_pass</span></code> to force a generator failure.
+ Assign <tt class="computeroutput"><span class="keyword">false</span></tt> to <tt class="computeroutput"><span class="identifier">_pass</span></tt> to force a generator failure.
             </p></dd>
 </dl>
 </div>
 <p>
- For more information see <a class="link" href="../tutorials/semantic_actions.html" title="Semantic Actions">Semantic
+ For more information see <a href="../tutorials/semantic_actions.html" title="Semantic Actions">Semantic
           Actions</a>.
         </p>
 </div>

Modified: trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,16 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Karma Generators</title>
+<title>
+ Karma Generators</title>
 <link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../index.html" title="Spirit 2.1">
 <link rel="up" href="../quick_reference.html" title="Quick Reference">
-<link rel="prev" href="common_notation.html" title="Common Notation">
-<link rel="next" href="primitive_generators/char.html" title="Character Generators">
+<link rel="previous" href="common_notation.html" title="Common
+ Notation">
+<link rel="next" href="primitive_generators/char.html" title="
+ Character Generators">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,11 +25,15 @@
 <div class="spirit-nav">
 <a accesskey="p" href="common_notation.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../quick_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="primitive_generators/char.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Karma Generators">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.karma.quick_reference.primitive_generators"></a><a class="link" href="primitive_generators.html" title="Karma Generators">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators"></a><a href="primitive_generators.html" title="
+ Karma Generators">
         Karma Generators</a>
-</h4></div></div></div>
+</h4></div></div>
+<div></div>
+</div>
 <div class="toc"><dl>
 <dt><span class="section"><a href="primitive_generators/char.html">
           Character Generators</a></span></dt>

Modified: trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/action.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/action.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/action.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,17 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Generator Semantic Actions</title>
+<title>
+ Generator Semantic Actions</title>
 <link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../../index.html" title="Spirit 2.1">
-<link rel="up" href="../primitive_generators.html" title="Karma Generators">
-<link rel="prev" href="directives.html" title="Generator Directives">
-<link rel="next" href="../compound_attribute_rules.html" title="Compound Attribute Rules">
+<link rel="up" href="../primitive_generators.html" title="
+ Karma Generators">
+<link rel="previous" href="directives.html" title="
+ Generator Directives">
+<link rel="next" href="../compound_attribute_rules.html" title="Compound
+ Attribute Rules">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,11 +26,15 @@
 <div class="spirit-nav">
 <a accesskey="p" href="directives.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.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="../compound_attribute_rules.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Generator Semantic Actions">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.karma.quick_reference.primitive_generators.action"></a><a class="link" href="action.html" title="Generator Semantic Actions">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.action"></a><a href="action.html" title="
+ Generator Semantic Actions">
           Generator Semantic Actions</a>
-</h5></div></div></div>
+</h5></div></div>
+<div></div>
+</div>
 <div class="informaltable"><table class="table">
 <colgroup>
 <col>
@@ -34,39 +42,27 @@
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                     Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                     Attribute
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                     Description
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody><tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">g</span><span class="special">[</span><span class="identifier">fa</span><span class="special">]</span></code>
- </p>
- </td>
-<td>
- <p>
- Attribute of <code class="computeroutput"><span class="identifier">g</span></code>
- </p>
- </td>
-<td>
- <p>
- Call semantic action, <code class="computeroutput"><span class="identifier">fa</span></code>
- before invoking <code class="computeroutput"><span class="identifier">g</span></code>.
- </p>
- </td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">g</span><span class="special">[</span><span class="identifier">fa</span><span class="special">]</span></tt>
+ </p></td>
+<td><p>
+ Attribute of <tt class="computeroutput"><span class="identifier">g</span></tt>
+ </p></td>
+<td><p>
+ Call semantic action, <tt class="computeroutput"><span class="identifier">fa</span></tt>
+ before invoking <tt class="computeroutput"><span class="identifier">g</span></tt>.
+ </p></td>
 </tr></tbody>
 </table></div>
 </div>

Modified: trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/auxiliary.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/auxiliary.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/auxiliary.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,17 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Auxiliary Generators</title>
+<title>
+ Auxiliary Generators</title>
 <link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../../index.html" title="Spirit 2.1">
-<link rel="up" href="../primitive_generators.html" title="Karma Generators">
-<link rel="prev" href="binary.html" title="Binary Generators">
-<link rel="next" href="operators.html" title="Generator Operators">
+<link rel="up" href="../primitive_generators.html" title="
+ Karma Generators">
+<link rel="previous" href="binary.html" title="
+ Binary Generators">
+<link rel="next" href="operators.html" title="
+ Generator Operators">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,13 +26,17 @@
 <div class="spirit-nav">
 <a accesskey="p" href="binary.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.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="operators.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Auxiliary Generators">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.karma.quick_reference.primitive_generators.auxiliary"></a><a class="link" href="auxiliary.html" title="Auxiliary Generators">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.auxiliary"></a><a href="auxiliary.html" title="
+ Auxiliary Generators">
           Auxiliary Generators</a>
-</h5></div></div></div>
+</h5></div></div>
+<div></div>
+</div>
 <p>
- See here for more information about <a class="link" href="../../reference/auxiliary.html" title="Auxiliary">Auxiliary
+ See here for more information about <a href="../../reference/auxiliary.html" title="Auxiliary">Auxiliary
             Generators</a>.
           </p>
 <div class="informaltable"><table class="table">
@@ -38,149 +46,103 @@
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                     Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                     Attribute
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                     Description
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/auxiliary/attr_cast.html" title="Attribute Transformation Pseudo Generator (attr_cast)"><code class="computeroutput"><span class="identifier">attr_cast</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">&gt;(</span><span class="identifier">g</span><span class="special">)</span></code></a>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Attrib</span></code>
- </p>
- </td>
-<td>
- <p>
- Invokes <code class="computeroutput"><span class="identifier">g</span></code> while
- supplying an attribute of type <code class="computeroutput"><span class="identifier">Attrib</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="../../reference/auxiliary/eol.html" title="End of Line (eol)"><code class="computeroutput"><span class="identifier">eol</span></code></a>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Unused</span></code>
- </p>
- </td>
-<td>
- <p>
- Generates the end of line (<code class="computeroutput"><span class="special">\</span><span class="identifier">n</span></code>)
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="../../reference/auxiliary/eps.html" title="Epsilon (eps)"><code class="computeroutput"><span class="identifier">eps</span></code></a>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Unused</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../../reference/auxiliary/attr_cast.html" title=" Attribute
+ Transformation Pseudo Generator (attr_cast)"><tt class="computeroutput"><span class="identifier">attr_cast</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">&gt;(</span><span class="identifier">g</span><span class="special">)</span></tt></a>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Attrib</span></tt>
+ </p></td>
+<td><p>
+ Invokes <tt class="computeroutput"><span class="identifier">g</span></tt> while
+ supplying an attribute of type <tt class="computeroutput"><span class="identifier">Attrib</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="../../reference/auxiliary/eol.html" title=" End of Line
+ (eol)"><tt class="computeroutput"><span class="identifier">eol</span></tt></a>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Unused</span></tt>
+ </p></td>
+<td><p>
+ Generates the end of line (<tt class="computeroutput"><span class="special">\</span><span class="identifier">n</span></tt>)
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ eps
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Unused</span></tt>
+ </p></td>
+<td><p>
                     Generate an empty string
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/auxiliary/eps.html" title="Epsilon (eps)"><code class="computeroutput"><span class="identifier">eps</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code></a>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Unused</span></code>
- </p>
- </td>
-<td>
- <p>
- If <code class="computeroutput"><span class="identifier">b</span></code> is true,
+<td><p>
+ eps(b)
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Unused</span></tt>
+ </p></td>
+<td><p>
+ If <tt class="computeroutput"><span class="identifier">b</span></tt> is true,
                     generate an empty string
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/auxiliary/lazy.html" title="Lazy (lazy)"><code class="computeroutput"><span class="identifier">lazy</span><span class="special">(</span><span class="identifier">fg</span><span class="special">)</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Attribute of <code class="computeroutput"><span class="identifier">G</span></code>
- where <code class="computeroutput"><span class="identifier">G</span></code> is the
- return type of <code class="computeroutput"><span class="identifier">fg</span></code>
- </p>
- </td>
-<td>
- <p>
- Invoke <code class="computeroutput"><span class="identifier">fg</span></code> at
- generation time, returning a generator <code class="computeroutput"><span class="identifier">g</span></code>
+<td><p>
+ lazy(fg)
+ </p></td>
+<td><p>
+ Attribute of <tt class="computeroutput"><span class="identifier">G</span></tt>
+ where <tt class="computeroutput"><span class="identifier">G</span></tt> is the
+ return type of <tt class="computeroutput"><span class="identifier">fg</span></tt>
+ </p></td>
+<td><p>
+ Invoke <tt class="computeroutput"><span class="identifier">fg</span></tt> at
+ generation time, returning a generator <tt class="computeroutput"><span class="identifier">g</span></tt>
                     which is then called to generate.
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/auxiliary/lazy.html" title="Lazy (lazy)"><code class="computeroutput"><span class="identifier">fg</span></code></a>
- </p>
- </td>
-<td>
- <p>
- see <a class="link" href="../../reference/auxiliary/lazy.html" title="Lazy (lazy)"><code class="computeroutput"><span class="identifier">lazy</span><span class="special">(</span><span class="identifier">fg</span><span class="special">)</span></code></a>
+<td><p>
+ fg
+ </p></td>
+<td><p>
+ see lazy(fg)
                     above
- </p>
- </td>
-<td>
- <p>
- Equivalent to <a class="link" href="../../reference/auxiliary/lazy.html" title="Lazy (lazy)"><code class="computeroutput"><span class="identifier">lazy</span><span class="special">(</span><span class="identifier">fg</span><span class="special">)</span></code></a>
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">g</span><span class="special">[</span><span class="identifier">fa</span><span class="special">]</span></code>
- </p>
- </td>
-<td>
- <p>
- Attribute of <code class="computeroutput"><span class="identifier">g</span></code>
- </p>
- </td>
-<td>
- <p>
- Call semantic action <code class="computeroutput"><span class="identifier">fa</span></code>
- (before executing <code class="computeroutput"><span class="identifier">g</span></code>).
- </p>
- </td>
+ </p></td>
+<td><p>
+ Equivalent to lazy(fg)
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">g</span><span class="special">[</span><span class="identifier">fa</span><span class="special">]</span></tt>
+ </p></td>
+<td><p>
+ Attribute of <tt class="computeroutput"><span class="identifier">g</span></tt>
+ </p></td>
+<td><p>
+ Call semantic action <tt class="computeroutput"><span class="identifier">fa</span></tt>
+ (before executing <tt class="computeroutput"><span class="identifier">g</span></tt>).
+ </p></td>
 </tr>
 </tbody>
 </table></div>

Modified: trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/binary.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/binary.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/binary.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,17 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Binary Generators</title>
+<title>
+ Binary Generators</title>
 <link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../../index.html" title="Spirit 2.1">
-<link rel="up" href="../primitive_generators.html" title="Karma Generators">
-<link rel="prev" href="stream.html" title="Stream Generators">
-<link rel="next" href="auxiliary.html" title="Auxiliary Generators">
+<link rel="up" href="../primitive_generators.html" title="
+ Karma Generators">
+<link rel="previous" href="stream.html" title="
+ Stream Generators">
+<link rel="next" href="auxiliary.html" title="
+ Auxiliary Generators">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,13 +26,17 @@
 <div class="spirit-nav">
 <a accesskey="p" href="stream.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.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="auxiliary.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Binary Generators">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.karma.quick_reference.primitive_generators.binary"></a><a class="link" href="binary.html" title="Binary Generators">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.binary"></a><a href="binary.html" title="
+ Binary Generators">
           Binary Generators</a>
-</h5></div></div></div>
+</h5></div></div>
+<div></div>
+</div>
 <p>
- See here for more information about <a class="link" href="../../reference/binary.html" title="Binary">Binary
+ See here for more information about <a href="../../reference/binary.html" title=" Binary">Binary
             Generators</a>.
           </p>
 <div class="informaltable"><table class="table">
@@ -38,210 +46,148 @@
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                     Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                     Attribute
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                     Description
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/binary/binary_native.html" title="Binary Native Endianness Generators"><code class="computeroutput"><span class="identifier">byte_</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../../reference/binary/binary_native.html" title=" Binary
+ Native Endianness Generators"><tt class="computeroutput"><span class="identifier">byte_</span></tt></a>
+ </p></td>
+<td><p>
                     8 bits native endian
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                     Generates an 8 bit binary
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/binary/binary_native.html" title="Binary Native Endianness Generators"><code class="computeroutput"><span class="identifier">word</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../../reference/binary/binary_native.html" title=" Binary
+ Native Endianness Generators"><tt class="computeroutput"><span class="identifier">word</span></tt></a>
+ </p></td>
+<td><p>
                     16 bits native endian
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                     Generates a 16 bit binary in native endian representation
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/binary/binary_big.html" title="Binary Big Endianness Generators"><code class="computeroutput"><span class="identifier">big_word</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../../reference/binary/binary_big.html" title=" Binary
+ Big Endianness Generators"><tt class="computeroutput"><span class="identifier">big_word</span></tt></a>
+ </p></td>
+<td><p>
                     16 bits big endian
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                     Generates a 16 bit binary in big endian representation
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/binary/binary_little.html" title="Binary Little Endianness Generators"><code class="computeroutput"><span class="identifier">little_word</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../../reference/binary/binary_little.html" title=" Binary
+ Little Endianness Generators"><tt class="computeroutput"><span class="identifier">little_word</span></tt></a>
+ </p></td>
+<td><p>
                     16 bits little endian
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                     Generates a 16 bit binary in little endian representation
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/binary/binary_native.html" title="Binary Native Endianness Generators"><code class="computeroutput"><span class="identifier">dword</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../../reference/binary/binary_native.html" title=" Binary
+ Native Endianness Generators"><tt class="computeroutput"><span class="identifier">dword</span></tt></a>
+ </p></td>
+<td><p>
                     32 bits native endian
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                     Generates a 32 bit binary in native endian representation
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/binary/binary_big.html" title="Binary Big Endianness Generators"><code class="computeroutput"><span class="identifier">big_dword</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../../reference/binary/binary_big.html" title=" Binary
+ Big Endianness Generators"><tt class="computeroutput"><span class="identifier">big_dword</span></tt></a>
+ </p></td>
+<td><p>
                     32 bits big endian
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                     Generates a 32 bit binary in big endian representation
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/binary/binary_little.html" title="Binary Little Endianness Generators"><code class="computeroutput"><span class="identifier">little_dword</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../../reference/binary/binary_little.html" title=" Binary
+ Little Endianness Generators"><tt class="computeroutput"><span class="identifier">little_dword</span></tt></a>
+ </p></td>
+<td><p>
                     32 bits little endian
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                     Generates a 32 bit binary in little endian representation
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/binary/binary_native.html" title="Binary Native Endianness Generators"><code class="computeroutput"><span class="identifier">qword</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../../reference/binary/binary_native.html" title=" Binary
+ Native Endianness Generators"><tt class="computeroutput"><span class="identifier">qword</span></tt></a>
+ </p></td>
+<td><p>
                     64 bits native endian
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                     Generates a 64 bit binary in native endian representation
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/binary/binary_big.html" title="Binary Big Endianness Generators"><code class="computeroutput"><span class="identifier">big_qword</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../../reference/binary/binary_big.html" title=" Binary
+ Big Endianness Generators"><tt class="computeroutput"><span class="identifier">big_qword</span></tt></a>
+ </p></td>
+<td><p>
                     64 bits big endian
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                     Generates a 64 bit binary in big endian representation
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/binary/binary_little.html" title="Binary Little Endianness Generators"><code class="computeroutput"><span class="identifier">little_qword</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../../reference/binary/binary_little.html" title=" Binary
+ Little Endianness Generators"><tt class="computeroutput"><span class="identifier">little_qword</span></tt></a>
+ </p></td>
+<td><p>
                     64 bits little endian
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
                     Generates a 64 bit binary in little endian representation
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">pad</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Unused</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">pad</span><span class="special">(</span><span class="identifier">num</span><span class="special">)</span></tt>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Unused</span></tt>
+ </p></td>
+<td><p>
                     Generate additional null bytes allowing to align generated output
- with memory addresses divisible by <code class="computeroutput"><span class="identifier">num</span></code>.
- </p>
- </td>
+ with memory addresses divisible by <tt class="computeroutput"><span class="identifier">num</span></tt>.
+ </p></td>
 </tr>
 </tbody>
 </table></div>

Modified: trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/boolean.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/boolean.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/boolean.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,17 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Boolean Generators</title>
+<title>
+ Boolean Generators</title>
 <link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../../index.html" title="Spirit 2.1">
-<link rel="up" href="../primitive_generators.html" title="Karma Generators">
-<link rel="prev" href="unsigned_int.html" title="Unsigned Integer Generators">
-<link rel="next" href="stream.html" title="Stream Generators">
+<link rel="up" href="../primitive_generators.html" title="
+ Karma Generators">
+<link rel="previous" href="unsigned_int.html" title="
+ Unsigned Integer Generators">
+<link rel="next" href="stream.html" title="
+ Stream Generators">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,11 +26,15 @@
 <div class="spirit-nav">
 <a accesskey="p" href="unsigned_int.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.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="stream.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
 </div>
-<div class="section" title="Boolean Generators">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.karma.quick_reference.primitive_generators.boolean"></a><a class="link" href="boolean.html" title="Boolean Generators">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.karma.quick_reference.primitive_generators.boolean"></a><a href="boolean.html" title="
+ Boolean Generators">
           Boolean Generators</a>
-</h5></div></div></div>
+</h5></div></div>
+<div></div>
+</div>
 <div class="informaltable"><table class="table">
 <colgroup>
 <col>
@@ -34,101 +42,75 @@
 <col>
 </colgroup>
 <thead><tr>
-<th>
- <p>
+<th><p>
                     Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                     Attribute
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
                     Description
- </p>
- </th>
+ </p></th>
 </tr></thead>
 <tbody>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/numeric/boolean.html" title="Boolean Generators (bool_)"><code class="computeroutput"><span class="identifier">bool_</span></code></a>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">bool</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../../reference/numeric/boolean.html" title=" Boolean
+ Generators (bool_)"><tt class="computeroutput"><span class="identifier">bool_</span></tt></a>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="keyword">bool</span></tt>
+ </p></td>
+<td><p>
                     Generate a boolean
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/numeric/boolean.html" title="Boolean Generators (bool_)"><code class="computeroutput"><span class="identifier">bool_</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></code></a>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">bool</span></code>
- </p>
- </td>
-<td>
- <p>
- Generate <code class="computeroutput"><span class="identifier">b</span></code> as
+<td><p>
+ <a href="../../reference/numeric/boolean.html" title=" Boolean
+ Generators (bool_)"><tt class="computeroutput"><span class="identifier">bool_</span><span class="special">(</span><span class="identifier">b</span><span class="special">)</span></tt></a>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="keyword">bool</span></tt>
+ </p></td>
+<td><p>
+ Generate <tt class="computeroutput"><span class="identifier">b</span></tt> as
                     a boolean, if an attribute is supplied it must match
- </p>
- </td>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/numeric/boolean.html" title="Boolean Generators (bool_)">
+<td><p>
+ <a href="../../reference/numeric/boolean.html" title=" Boolean
+ Generators (bool_)">
 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">bool_generator</span><span class="special">&lt;</span>
     <span class="identifier">B</span><span class="special">,</span> <span class="identifier">Policies</span>
 <span class="special">&gt;()</span></pre>
                     </a>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">B</span></code>
- </p>
- </td>
-<td>
- <p>
- Generate a boolean of type <code class="computeroutput"><span class="identifier">B</span></code>
- </p>
- </td>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">B</span></tt>
+ </p></td>
+<td><p>
+ Generate a boolean of type <tt class="computeroutput"><span class="identifier">B</span></tt>
+ </p></td>
 </tr>
 <tr>
-<td>
- <p>
- <a class="link" href="../../reference/numeric/boolean.html" title="Boolean Generators (bool_)">
+<td><p>
+ <a href="../../reference/numeric/boolean.html" title=" Boolean
+ Generators (bool_)">
 <pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">bool_generator</span><span class="special">&lt;</span>
     <span class="identifier">B</span><span class="special">,</span> <span class="identifier">Policies</span>
 <span class="special">&gt;()(</span><span class="identifier">b</span><span class="special">)</span></pre>
                     </a>
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">B</span></code>
- </p>
- </td>
-<td>
- <p>
- Generate a boolean <code class="computeroutput"><span class="identifier">b</span></code>
- as a <code class="computeroutput"><span class="identifier">B</span></code>, if an
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">B</span></tt>
+ </p></td>
+<td><p>
+ Generate a boolean <tt class="computeroutput"><span class="identifier">b</span></tt>
+ as a <tt class="computeroutput"><span class="identifier">B</span></tt>, if an
                     attribute is supplied it must match
- </p>
- </td>
+ </p></td>
 </tr>
 </tbody>
 </table></div>

Modified: trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/char.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/char.html (original)
+++ trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/char.html 2009-10-12 23:09:50 EDT (Mon, 12 Oct 2009)
@@ -1,13 +1,17 @@
 <html>
 <head>
 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Character Generators</title>
+<title>
+ Character Generators</title>
 <link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
-<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<meta name="generator" content="DocBook XSL Stylesheets V1.65.1">
 <link rel="home" href="../../../../index.html" title="Spirit 2.1">
-<link rel="up" href="../primitive_generators.html" title="Karma Generators">
-<link rel="prev" href="../primitive_generators.html" title="Karma Generators">
-<link rel="next" href="string.html" title="String Generators">
+<link rel="up" href="../primitive_generators.html" title="
+ Karma Generators">
+<link rel="previous" href="../primitive_generators.html" title="
+ Karma Generators">
+<link rel="next" href="string.html" title="
+ String Generators">
 </head>
 <body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
 <table cellpadding="2" width="100%"><tr>
@@ -22,13 +26,17 @@
 <div class="spirit-nav">
 <a accesskey="p" href="../primitive_generators.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../primitive_generators.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=&quo