![]() |
Boost-Commit : |
Subject: [Boost-commit] svn:boost r57167 - in trunk/libs/spirit: doc doc/html doc/html/spirit doc/html/spirit/abstracts doc/html/spirit/abstracts/attributes doc/html/spirit/advanced doc/html/spirit/advanced/customize doc/html/spirit/advanced/customize/assign_to doc/html/spirit/advanced/customize/iterate doc/html/spirit/advanced/customize/store_value doc/html/spirit/advanced/indepth doc/html/spirit/karma doc/html/spirit/karma/performance_measurements doc/html/spirit/karma/performance_measurements/numeric_performance doc/html/spirit/karma/quick_reference doc/html/spirit/karma/quick_reference/primitive_generators doc/html/spirit/karma/reference doc/html/spirit/karma/reference/auxiliary doc/html/spirit/karma/reference/binary doc/html/spirit/karma/reference/char doc/html/spirit/karma/reference/directive doc/html/spirit/karma/reference/generator_concepts doc/html/spirit/karma/reference/nonterminal doc/html/spirit/karma/reference/numeric doc/html/spirit/karma/reference/operator doc/html/spirit/karma/reference/stream doc/html/spirit/karma/reference/string doc/html/spirit/karma/tutorials doc/html/spirit/lex doc/html/spirit/lex/abstracts doc/html/spirit/lex/abstracts/lexer_primitives doc/html/spirit/lex/quick_reference doc/html/spirit/lex/reference doc/html/spirit/lex/reference/lexer_concepts doc/html/spirit/lex/reference/primitives doc/html/spirit/lex/tutorials doc/html/spirit/notes doc/html/spirit/qi doc/html/spirit/qi/quick_reference doc/html/spirit/qi/quick_reference/qi_parsers doc/html/spirit/qi/reference doc/html/spirit/qi/reference/auxiliary doc/html/spirit/qi/reference/binary doc/html/spirit/qi/reference/char doc/html/spirit/qi/reference/directive doc/html/spirit/qi/reference/nonterminal doc/html/spirit/qi/reference/numeric doc/html/spirit/qi/reference/operator doc/html/spirit/qi/reference/parser_concepts doc/html/spirit/qi/reference/string doc/html/spirit/qi/tutorials doc/html/spirit/structure doc/html/spirit/support doc/qi example/qi
From: joel_at_[hidden]
Date: 2009-10-27 03:13:02
Author: djowel
Date: 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
New Revision: 57167
URL: http://svn.boost.org/trac/boost/changeset/57167
Log:
new nonterminal concept doc
rule doc update
grammar doc
Added:
trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/nonterminal.html (contents, props changed)
Text files modified:
trunk/libs/spirit/doc/html/index.html | 13
trunk/libs/spirit/doc/html/spirit/abstracts.html | 15
trunk/libs/spirit/doc/html/spirit/abstracts/attributes.html | 21
trunk/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html | 173 +++---
trunk/libs/spirit/doc/html/spirit/abstracts/attributes/more_sompound_attributes.html | 166 +++---
trunk/libs/spirit/doc/html/spirit/abstracts/attributes/nonterminal_attributes.html | 40
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/advanced.html | 18
trunk/libs/spirit/doc/html/spirit/advanced/customize.html | 62 +-
trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to.html | 30
trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_iterators.html | 272 ++++------
trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_value.html | 268 ++++------
trunk/libs/spirit/doc/html/spirit/advanced/customize/clear_value.html | 355 ++++++--------
trunk/libs/spirit/doc/html/spirit/advanced/customize/extract_from.html | 346 ++++++--------
trunk/libs/spirit/doc/html/spirit/advanced/customize/is_container.html | 613 +++++++++++-------------
trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate.html | 26
trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/begin_container.html | 495 +++++++++-----------
trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/compare_iterators.html | 466 ++++++++----------
trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/container_iterator.html | 507 +++++++++-----------
trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/deref_iterator.html | 493 +++++++++-----------
trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/end_container.html | 476 ++++++++----------
trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/next_iterator.html | 467 ++++++++----------
trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value.html | 37
trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/container_value.html | 359 ++++++--------
trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/push_back.html | 398 +++++++---------
trunk/libs/spirit/doc/html/spirit/advanced/customize/transform.html | 565 ++++++++++-------------
trunk/libs/spirit/doc/html/spirit/advanced/indepth.html | 20
trunk/libs/spirit/doc/html/spirit/advanced/indepth/parsers_indepth.html | 218 ++++----
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 | 345 ++++++--------
trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html | 147 ++---
trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html | 246 ++++-----
trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html | 203 +++----
trunk/libs/spirit/doc/html/spirit/karma/reference/binary.html | 33
trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html | 342 +++++--------
trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html | 345 +++++--------
trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html | 434 +++++++----------
trunk/libs/spirit/doc/html/spirit/karma/reference/char.html | 44
trunk/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html | 436 +++++++----------
trunk/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html | 693 ++++++++++++----------------
trunk/libs/spirit/doc/html/spirit/karma/reference/directive.html | 52 +
trunk/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html | 598 ++++++++++--------------
trunk/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html | 166 +++---
trunk/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html | 245 ++++-----
trunk/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html | 195 +++----
trunk/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html | 154 ++---
trunk/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html | 336 ++++++-------
trunk/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html | 223 ++++-----
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/nonterminal.html | 26
trunk/libs/spirit/doc/html/spirit/karma/reference/nonterminal/rule.html | 600 ++++++++++--------------
trunk/libs/spirit/doc/html/spirit/karma/reference/numeric.html | 48 +
trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/boolean.html | 627 +++++++++++--------------
trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html | 962 ++++++++++++++++++---------------------
trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html | 691 ++++++++++++----------------
trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html | 715 ++++++++++++----------------
trunk/libs/spirit/doc/html/spirit/karma/reference/operator.html | 71 +-
trunk/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html | 146 ++---
trunk/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html | 133 ++--
trunk/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html | 150 ++---
trunk/libs/spirit/doc/html/spirit/karma/reference/operator/list.html | 161 +++---
trunk/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html | 130 ++--
trunk/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html | 139 ++---
trunk/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html | 147 ++---
trunk/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html | 152 +++---
trunk/libs/spirit/doc/html/spirit/karma/reference/stream.html | 34
trunk/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html | 465 ++++++++-----------
trunk/libs/spirit/doc/html/spirit/karma/reference/string.html | 33
trunk/libs/spirit/doc/html/spirit/karma/reference/string/string.html | 311 +++++-------
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_primitives.html | 20
trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html | 131 ++--
trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html | 448 +++++++----------
trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html | 70 +-
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 | 23
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_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 | 153 ++---
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 | 194 ++++----
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 | 18
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 | 266 ++++------
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 | 151 ++---
trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html | 141 ++---
trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html | 138 ++---
trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html | 210 +++----
trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html | 199 +++----
trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html | 234 ++++-----
trunk/libs/spirit/doc/html/spirit/qi/reference/binary.html | 30
trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html | 352 ++++++--------
trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html | 355 ++++++--------
trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html | 436 +++++++----------
trunk/libs/spirit/doc/html/spirit/qi/reference/char.html | 42
trunk/libs/spirit/doc/html/spirit/qi/reference/char/char.html | 525 +++++++++------------
trunk/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html | 371 ++++++---------
trunk/libs/spirit/doc/html/spirit/qi/reference/directive.html | 52 +
trunk/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html | 168 +++---
trunk/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html | 161 +++---
trunk/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html | 157 ++---
trunk/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html | 167 +++---
trunk/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html | 289 +++++------
trunk/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html | 194 +++----
trunk/libs/spirit/doc/html/spirit/qi/reference/nonterminal.html | 26
trunk/libs/spirit/doc/html/spirit/qi/reference/nonterminal/grammar.html | 372 ++++++++++-----
trunk/libs/spirit/doc/html/spirit/qi/reference/nonterminal/rule.html | 625 +++++++------------------
trunk/libs/spirit/doc/html/spirit/qi/reference/numeric.html | 42
trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/boolean.html | 413 +++++++---------
trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html | 557 +++++++++-------------
trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html | 951 ++++++++++++++++-----------------------
trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html | 624 ++++++++++---------------
trunk/libs/spirit/doc/html/spirit/qi/reference/operator.html | 85 +-
trunk/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html | 156 +++---
trunk/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html | 137 ++--
trunk/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html | 148 ++---
trunk/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html | 179 +++---
trunk/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html | 125 ++--
trunk/libs/spirit/doc/html/spirit/qi/reference/operator/list.html | 144 ++---
trunk/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html | 136 ++---
trunk/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html | 134 ++--
trunk/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html | 142 ++---
trunk/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html | 127 ++--
trunk/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html | 143 ++---
trunk/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html | 153 +++---
trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts.html | 16
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 | 153 ++---
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 | 249 ++++-----
trunk/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html | 570 +++++++++-------------
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 | 20
trunk/libs/spirit/doc/html/spirit/support/multi_pass.html | 717 +++++++++++++----------------
trunk/libs/spirit/doc/html/spirit/what_s_new.html | 302 ++++++------
trunk/libs/spirit/doc/qi/concepts.qbk | 113 ++++
trunk/libs/spirit/doc/qi/nonterminal.qbk | 164 ++---
trunk/libs/spirit/doc/qi/quick_reference.qbk | 1
trunk/libs/spirit/doc/spirit2.qbk | 8
trunk/libs/spirit/example/qi/reference.cpp | 28 +
238 files changed, 21083 insertions(+), 25752 deletions(-)
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-27 03:12:35 EDT (Tue, 27 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="id614079"></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">
@@ -252,7 +251,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 27, 2009 at 00:35:27 GMT</small></p></td>
+<td align="left"><p><small>Last revised: October 27, 2009 at 06:57:30 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-27 03:12:35 EDT (Tue, 27 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
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-27 03:12:35 EDT (Tue, 27 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-27 03:12:35 EDT (Tue, 27 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 parsers
@@ -36,38 +43,30 @@
<div class="informaltable"><table class="table">
<colgroup><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>
- <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+<tr><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">--></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">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code>
- </p>
- </td></tr>
-<tr><td>
- <p>
- <code class="computeroutput"><span class="identifier">a</span><span class="special">:</span>
+ <span class="special">>></span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></tt>
+ </p></td></tr>
+<tr><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">--></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">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code>
- </p>
- </td></tr>
+ <span class="special"><<</span> <span class="identifier">b</span><span class="special">):</span> <span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></tt>
+ </p></td></tr>
</tbody>
</table></div>
<p>
@@ -77,36 +76,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">>></span>
- <span class="identifier">b</span></code> (<code class="computeroutput"><span class="identifier">a</span>
- <span class="special"><<</span> <span class="identifier">b</span></code>)
- will be <code class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></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">>></span>
+ <span class="identifier">b</span></tt> (<tt class="computeroutput"><span class="identifier">a</span>
+ <span class="special"><<</span> <span class="identifier">b</span></tt>)
+ will be <tt class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></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"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code>
+<tr><td colspan="2" align="left" valign="top"><p>
+ The notation <tt class="computeroutput"><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></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"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></code> or <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></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"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></span></tt> or <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">A</span><span class="special">,</span> <span class="identifier">B</span><span class="special">></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>
@@ -114,15 +113,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="id626108"></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="id417648"></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
@@ -134,54 +135,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">>></span>
- <span class="identifier">double_</span></code>
- </p>
- </td>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">double_</span> <span class="special">>></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"><<</span>
- <span class="identifier">double_</span></code>
- </p>
- </td>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">double_</span> <span class="special"><<</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"><</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></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"><</span><span class="keyword">double</span><span class="special">,</span> <span class="keyword">double</span><span class="special">></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
@@ -204,23 +193,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>
@@ -228,16 +217,16 @@
<span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate_delimited</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span> <span class="special"><<</span> <span class="identifier">karma</span><span class="special">::</span><span class="identifier">double_</span><span class="special">,</span> <span class="identifier">karma</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="id628327"></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="id418806"></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-27 03:12:35 EDT (Tue, 27 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">>></span>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="char">'('</span> <span class="special">>></span>
<span class="identifier">double_</span> <span class="special">>></span>
<span class="string">", "</span> <span class="special">>></span>
<span class="identifier">double_</span> <span class="special">>></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"><<</span>
+ </p></td>
+<td><p>
+ <tt class="computeroutput"><span class="char">'('</span> <span class="special"><<</span>
<span class="identifier">double_</span> <span class="special"><<</span>
<span class="string">", "</span> <span class="special"><<</span>
<span class="identifier">double_</span> <span class="special"><<</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">--></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></code>
- </p>
- </td>
+ <span class="special">>></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">--></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></code>
- </p>
- </td>
+ <span class="special"><<</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">>></span>
- <span class="identifier">b</span></code> (<code class="computeroutput"><span class="identifier">a</span>
- <span class="special"><<</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">>></span>
+ <span class="identifier">b</span></tt> (<tt class="computeroutput"><span class="identifier">a</span>
+ <span class="special"><<</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-27 03:12:35 EDT (Tue, 27 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="../../qi.html" title="Qi - Writing Parsers">
+<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>
@@ -22,11 +24,15 @@
<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="../../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"><</span><span class="identifier">OutputIterator</span><span class="special">,</span> <span class="keyword">double</span><span class="special">()></span> <span class="identifier">r</span><span class="special">;</span>
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-27 03:12:35 EDT (Tue, 27 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-27 03:12:35 EDT (Tue, 27 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="id624205" href="#ftn.id624205" class="footnote">5</a>]</sup>
+ <sup>[<a name="id415703" href="#ftn.id415703">5</a>]</sup>
are a derivative of Extended Backus-Naur Form (EBNF)
- <sup>[<a name="id624217" href="#ftn.id624217" class="footnote">6</a>]</sup>
+ <sup>[<a name="id415721" href="#ftn.id415721">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="id624237"></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="id415758"></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">>></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">>></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"><<</span></code> instead.
+ we use the <tt class="computeroutput"><span class="special"><<</span></tt> instead.
</p></td></tr>
</table></div>
-<a name="spirit.abstracts.parsing_expression_grammar.alternatives"></a><h5>
-<a name="id624780"></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="id415923"></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="id624926"></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="id416116"></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="id625074"></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="id416295"></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.id624205" href="#id624205" class="para">5</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id415703" href="#id415703">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.id624217" href="#id624217" class="para">6</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id415721" href="#id415721">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-27 03:12:35 EDT (Tue, 27 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="id623762" href="#ftn.id623762" class="footnote">2</a>]</sup>
+ <sup>[<a name="id415164" href="#ftn.id415164">2</a>]</sup>
, a variant of Extended Backus-Naur Form (EBNF)
- <sup>[<a name="id623774" href="#ftn.id623774" class="footnote">3</a>]</sup>
+ <sup>[<a name="id415182" href="#ftn.id415182">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="id623786" href="#ftn.id623786" class="footnote">4</a>]</sup>
+ <sup>[<a name="id415202" href="#ftn.id415202">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="id623814"></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="id415242"></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="id623913"></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="id415361"></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="id624074"></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="id415543"></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.id623762" href="#id623762" class="para">2</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id415164" href="#id415164">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.id623774" href="#id623774" class="para">3</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id415182" href="#id415182">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.id623786" href="#id623786" class="para">4</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id415202" href="#id415202">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-27 03:12:35 EDT (Tue, 27 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="id983328"></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="id775954"></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++
Modified: trunk/libs/spirit/doc/html/spirit/advanced.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -3,11 +3,12 @@
<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.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="lex/reference/primitives/char_tokendef.html" title="Tokens Matching Single Characters">
-<link rel="next" href="advanced/indepth.html" title="In Depth">
+<link rel="previous" href="lex/reference/primitives/char_tokendef.html" title=" Tokens
+ Matching Single Characters">
+<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>
@@ -22,10 +23,13 @@
<div class="spirit-nav">
<a accesskey="p" href="lex/reference/primitives/char_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" title="Advanced">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="spirit.advanced"></a><a class="link" href="advanced.html" title="Advanced">Advanced</a>
-</h2></div></div></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
Modified: trunk/libs/spirit/doc/html/spirit/advanced/customize.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,16 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Customization of Spirit's Attribute Handling</title>
+<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.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="../advanced.html" title="Advanced">
-<link rel="prev" 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)">
+<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>
@@ -22,11 +25,15 @@
<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" title="Customization of Spirit's Attribute Handling">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="spirit.advanced.customize"></a><a class="link" href="customize.html" title="Customization of Spirit's Attribute Handling"> Customization of Spirit's
+<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>
+</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>
@@ -43,17 +50,17 @@
<dt><span class="section"><a href="customize/iterate.html"> Extract Attribute
Values to Generate Output from a Container (Karma)</a></span></dt>
</dl></div>
-<a name="spirit.advanced.customize.why_do_we_need_attribute_customization_points"></a><h5>
-<a name="id927259"></a>
- <a class="link" href="customize.html#spirit.advanced.customize.why_do_we_need_attribute_customization_points">Why
+<a name="spirit.advanced.customize.why_do_we_need_attribute_customization_points"></a><h4>
+<a name="id719745"></a>
+ <a href="customize.html#spirit.advanced.customize.why_do_we_need_attribute_customization_points">Why
do we need Attribute Customization Points</a>
- </h5>
-<div class="important" title="Important"><table border="0" summary="Important">
+ </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 align="left" valign="top"><p>
+<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
@@ -74,13 +81,14 @@
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 <code class="computeroutput"><span class="identifier">unused_type</span></code>
+ 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 class="link" href="customize/store_value/container_value.html" title="Determine the Type to be Stored in a Container (Qi)"><code class="computeroutput"><span class="identifier">container_value</span></code></a> customization point
- used by different parsers (such as <a class="link" href="../qi/reference/operator/kleene.html" title="Kleene (*a)">Kleene</a>,
- <a class="link" href="../qi/reference/operator/plus.html" title="Plus (+a)">Plus</a>, etc.) to find
+ 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>
@@ -100,11 +108,11 @@
<p>
This template is instantiated by the library at the appropriate places while
using the supplied container type as the template argument. The embedded
- <code class="computeroutput"><span class="identifier">type</span></code> is used as the attribute
+ <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 <code class="computeroutput"><span class="identifier">unused_type</span></code>:
+ The following example shows the predefined specialization for <tt class="computeroutput"><span class="identifier">unused_type</span></tt>:
</p>
<p>
</p>
@@ -122,13 +130,13 @@
<p>
</p>
<p>
- which defines its embedded <code class="computeroutput"><span class="identifier">type</span></code>
- to be <code class="computeroutput"><span class="identifier">unused_type</span></code> as well,
+ 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 <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">Enable</span> <span class="special">=</span> <span class="keyword">void</span></code> allowing to apply SFINAE for fine grained
+ 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>
@@ -136,11 +144,11 @@
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><h5>
-<a name="id927579"></a>
- <a class="link" href="customize.html#spirit.advanced.customize.the_usage_of_customization_points">The
+<a name="spirit.advanced.customize.the_usage_of_customization_points"></a><h4>
+<a name="id720232"></a>
+ <a href="customize.html#spirit.advanced.customize.the_usage_of_customization_points">The
Usage of Customization Points</a>
- </h5>
+ </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>
Modified: trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Store a Parsed Attribute Value (Qi)</title>
+<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.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="../customize.html" title="Customization of Spirit's Attribute Handling">
-<link rel="prev" 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)">
+<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>
@@ -22,11 +26,15 @@
<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" title="Store a Parsed Attribute Value (Qi)">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.advanced.customize.assign_to"></a><a class="link" href="assign_to.html" title="Store a Parsed Attribute Value (Qi)"> Store a Parsed
+<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>
+</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>
@@ -36,8 +44,8 @@
<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 <code class="computeroutput"><span class="identifier">assign_to_attribute_from_iterators</span></code>
- and <code class="computeroutput"><span class="identifier">assign_to_attribute_from_value</span></code>
+ 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>
Modified: trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_iterators.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_iterators.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_iterators.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<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>
+<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.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="../assign_to.html" title="Store a Parsed Attribute Value (Qi)">
-<link rel="prev" 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)">
+<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>
@@ -22,17 +26,21 @@
<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" title="Store an Attribute after a Parser Produced a Pair of Iterators (Qi)">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators"></a><a class="link" href="assign_to_attribute_from_iterators.html" title="Store an Attribute after a Parser Produced a Pair of Iterators (Qi)">
+<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>
+</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="id933126"></a>
- <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.assign_to_attribute_from_iterators">assign_to_attribute_from_iterators</a>
+<a name="id725800"></a>
+ assign_to_attribute_from_iterators
</h6>
<p>
- The template <code class="computeroutput"><span class="identifier">assign_to_attribute_from_iterators</span></code>
+ 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
@@ -41,46 +49,42 @@
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="id933154"></a>
- <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.module_headers">Module
+<a name="id725856"></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"><</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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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="id933246"></a>
- <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.namespace">Namespace</a>
+<a name="id725996"></a>
+ Namespace
</h6>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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="id933320"></a>
- <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.synopsis">Synopsis</a>
+<a name="id726096"></a>
+ Synopsis
</h6>
<pre class="programlisting"><span class="keyword">template</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">Iterator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">assign_to_attribute_from_iterators</span>
@@ -89,8 +93,8 @@
<span class="special">};</span>
</pre>
<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.template_parameters"></a><h6>
-<a name="id933480"></a>
- <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.template_parameters">Template
+<a name="id726324"></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">
@@ -100,112 +104,88 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Attrib</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Attrib</span></code>
+<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>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Iterator</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Iterator</span></code>
+<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>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">assign_to_attribute_from_value</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ 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="id933681"></a>
- <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.notation">Notation</a>
+<a name="id726597"></a>
+ Notation
</h6>
-<div class="variablelist" title="Notation">
+<div class="variablelist">
<p class="title"><b>Notation</b></p>
<dl>
-<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 type to be used as the target to store the attribute value in.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">attr</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">attr</span></tt></span></dt>
<dd><p>
- A attribute instance of type <code class="computeroutput"><span class="identifier">Attrib</span></code>.
+ A attribute instance of type <tt class="computeroutput"><span class="identifier">Attrib</span></tt>.
</p></dd>
-<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 used by the parser. This type usually corresponds
to the iterators as passed in by the user.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">begin</span></code>,
- <code class="computeroutput"><span class="identifier">end</span></code></span></dt>
+<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 <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ 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="id933795"></a>
- <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.expression_semantics">Expression
+<a name="id726766"></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">
@@ -214,38 +194,32 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody><tr>
<td>
- <p>
+<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"><</span><span class="identifier">Attrib</span><span class="special">,</span> <span class="identifier">Iterator</span><span class="special">>::</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 <code class="computeroutput"><span class="identifier">begin</span></code>
- and <code class="computeroutput"><span class="identifier">end</span></code> to initialize
- the attribute <code class="computeroutput"><span class="identifier">attr</span></code>.
- </p>
- </td>
+</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="id933938"></a>
- <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.predefined_specializations">Predefined
+<a name="id726969"></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">
@@ -254,61 +228,49 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Attrib</span></code>, <code class="computeroutput"><span class="identifier">Iterator</span></code>
- </p>
- </td>
-<td>
- <p>
- Execute an assignment <code 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></code>.
- </p>
- </td>
+<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>
- <code class="computeroutput"><span class="identifier">unused_type</span></code>,
- <code class="computeroutput"><span class="identifier">T</span></code>
- </p>
- </td>
-<td>
- <p>
+<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>
+ </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="id934084"></a>
- <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.when_to_implement">When
+<a name="id727166"></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 <code class="computeroutput"><span class="identifier">assign_to_attribute_from_iterators</span></code>
+ 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 <code class="computeroutput"><span class="identifier">Attrib</span></code> is not constructible
+ 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="id934115"></a>
- <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.example">Example</a>
+<a name="id727226"></a>
+ Example
</h6>
<p>
TBD
Modified: trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_value.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_value.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_value.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<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>
+<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.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="../assign_to.html" title="Store a Parsed Attribute Value (Qi)">
-<link rel="prev" 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)">
+<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>
@@ -22,62 +26,62 @@
<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" title="Store an Attribute Value after a Parser Produced a Value (Qi)">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value"></a><a class="link" href="assign_to_attribute_from_value.html" title="Store an Attribute Value after a Parser Produced a Value (Qi)">
+<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>
+</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="id934143"></a>
- <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.assign_to_attribute_from_value">assign_to_attribute_from_value</a>
+<a name="id727278"></a>
+ assign_to_attribute_from_value
</h6>
<p>
- The template <code class="computeroutput"><span class="identifier">assign_to_attribute_from_value</span></code>
+ 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="id934170"></a>
- <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.module_headers">Module
+<a name="id727330"></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"><</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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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="id934263"></a>
- <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.namespace">Namespace</a>
+<a name="id727471"></a>
+ Namespace
</h6>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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="id934336"></a>
- <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.synopsis">Synopsis</a>
+<a name="id727569"></a>
+ Synopsis
</h6>
<pre class="programlisting"><span class="keyword">template</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">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">assign_to_attribute_from_value</span>
@@ -86,8 +90,8 @@
<span class="special">};</span>
</pre>
<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.template_parameters"></a><h6>
-<a name="id934475"></a>
- <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.template_parameters">Template
+<a name="id727765"></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">
@@ -97,110 +101,86 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Attrib</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Attrib</span></code>
+<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>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">T</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">T</span></code> is
+<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>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">assign_to_attribute_from_value</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ 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="id935433"></a>
- <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.notation">Notation</a>
+<a name="id728039"></a>
+ Notation
</h6>
-<div class="variablelist" title="Notation">
+<div class="variablelist">
<p class="title"><b>Notation</b></p>
<dl>
-<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 type to be used as the target to store the attribute value in.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">attr</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">attr</span></tt></span></dt>
<dd><p>
- A attribute instance of type <code class="computeroutput"><span class="identifier">Attrib</span></code>.
+ A attribute instance of type <tt class="computeroutput"><span class="identifier">Attrib</span></tt>.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span></code></span></dt>
+<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"><code class="computeroutput"><span class="identifier">t</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">t</span></tt></span></dt>
<dd><p>
- A attribute instance of type <code class="computeroutput"><span class="identifier">T</span></code>.
+ 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="id935540"></a>
- <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.expression_semantics">Expression
+<a name="id728189"></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">
@@ -209,37 +189,31 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody><tr>
<td>
- <p>
+<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"><</span><span class="identifier">Attrib</span><span class="special">,</span> <span class="identifier">T</span><span class="special">>::</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, <code class="computeroutput"><span class="identifier">t</span></code>
- to the attribute <code class="computeroutput"><span class="identifier">attr</span></code>.
- </p>
- </td>
+</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="id935667"></a>
- <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.predefined_specializations">Predefined
+<a name="id728367"></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">
@@ -248,61 +222,49 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Attrib</span></code>, <code class="computeroutput"><span class="identifier">T</span></code>
- </p>
- </td>
-<td>
- <p>
- Assign the argument <code class="computeroutput"><span class="identifier">t</span></code>
- to <code class="computeroutput"><span class="identifier">attr</span></code>.
- </p>
- </td>
+<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>
- <code class="computeroutput"><span class="identifier">unused_type</span></code>,
- <code class="computeroutput"><span class="identifier">T</span></code>
- </p>
- </td>
-<td>
- <p>
+<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>
+ </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="id935792"></a>
- <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.when_to_implement">When
+<a name="id728538"></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 <code class="computeroutput"><span class="identifier">assign_to_attribute_from_value</span></code>
+ 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 <code class="computeroutput"><span class="identifier">Attrib</span></code> is not copy
+ 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="id935823"></a>
- <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.example">Example</a>
+<a name="id728597"></a>
+ Example
</h6>
<p>
TBD
Modified: trunk/libs/spirit/doc/html/spirit/advanced/customize/clear_value.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/clear_value.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/clear_value.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Re-Initialize an Attribute Value before Parsing (Qi)</title>
+<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.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="../customize.html" title="Customization of Spirit's Attribute Handling">
-<link rel="prev" 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)">
+<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>
@@ -22,79 +26,80 @@
<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" title="Re-Initialize an Attribute Value before Parsing (Qi)">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.advanced.customize.clear_value"></a><a class="link" href="clear_value.html" title="Re-Initialize an Attribute Value before Parsing (Qi)"> Re-Initialize
+<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>
-<a name="spirit.advanced.customize.clear_value.clear_value"></a><h6>
-<a name="id939900"></a>
- <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.clear_value">clear_value</a>
- </h6>
+</h4></div></div>
+<div></div>
+</div>
+<a name="spirit.advanced.customize.clear_value.clear_value"></a><h5>
+<a name="id732802"></a>
+ clear_value
+ </h5>
<p>
- The template <code class="computeroutput"><span class="identifier">clear_value</span></code>
+ 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 (<a class="link" href="../../qi/reference/operator/kleene.html" title="Kleene (*a)">Kleene</a>,
- <a class="link" href="../../qi/reference/operator/plus.html" title="Plus (+a)">Plus</a>, <a class="link" href="../../qi/reference/operator/list.html" title="List (a % b)">List</a>,
- and <a class="link" href="../../qi/reference/directive/repeat.html" title="Repetition (repeat[])">Repeat</a>)
+ <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><h6>
-<a name="id939947"></a>
- <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.module_headers">Module
+<a name="spirit.advanced.customize.clear_value.module_headers"></a><h5>
+<a name="id732888"></a>
+ <a href="clear_value.html#spirit.advanced.customize.clear_value.module_headers">Module
Headers</a>
- </h6>
+ </h5>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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><h6>
-<a name="id940032"></a>
- <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.namespace">Namespace</a>
- </h6>
+<a name="spirit.advanced.customize.clear_value.namespace"></a><h5>
+<a name="id733017"></a>
+ Namespace
+ </h5>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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><h6>
-<a name="id940105"></a>
- <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.synopsis">Synopsis</a>
- </h6>
+<a name="spirit.advanced.customize.clear_value.synopsis"></a><h5>
+<a name="id733114"></a>
+ Synopsis
+ </h5>
<pre class="programlisting"><span class="keyword">template</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">></span>
<span class="keyword">struct</span> <span class="identifier">clear_value</span>
<span class="special">{</span>
<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">call</span><span class="special">(</span><span class="identifier">Attrib</span><span class="special">&</span> <span class="identifier">val</span><span class="special">);</span>
<span class="special">};</span>
</pre>
-<a name="spirit.advanced.customize.clear_value.template_parameters"></a><h6>
-<a name="id940212"></a>
- <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.template_parameters">Template
+<a name="spirit.advanced.customize.clear_value.template_parameters"></a><h5>
+<a name="id733260"></a>
+ <a href="clear_value.html#spirit.advanced.customize.clear_value.template_parameters">Template
parameters</a>
- </h6>
+ </h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
@@ -102,129 +107,105 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Attrib</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Attrib</span></code>
+<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>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">clear_value</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ 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><h6>
-<a name="id940378"></a>
- <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.notation">Notation</a>
- </h6>
-<div class="variablelist" title="Notation">
+<a name="spirit.advanced.customize.clear_value.notation"></a><h5>
+<a name="id733485"></a>
+ Notation
+ </h5>
+<div class="variablelist">
<p class="title"><b>Notation</b></p>
<dl>
-<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 type to be used as a container to store attribute values in.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">attr</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">attr</span></tt></span></dt>
<dd><p>
- A attribute instance of type <code class="computeroutput"><span class="identifier">Attrib</span></code>.
+ A attribute instance of type <tt class="computeroutput"><span class="identifier">Attrib</span></tt>.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">T1</span></code>,
- <code class="computeroutput"><span class="identifier">T2</span></code>, ...</span></dt>
+<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><h6>
-<a name="id940470"></a>
- <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.expression_semantics">Expression
+<a name="spirit.advanced.customize.clear_value.expression_semantics"></a><h5>
+<a name="id733611"></a>
+ <a href="clear_value.html#spirit.advanced.customize.clear_value.expression_semantics">Expression
Semantics</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>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody><tr>
<td>
- <p>
+<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"><</span><span class="identifier">Attrib</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">Attrib</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">)</span></pre>
<p>
</p>
- </td>
-<td>
- <p>
- Re-initialize the instance referred to by <code class="computeroutput"><span class="identifier">attr</span></code>
+</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>
+ </p></td>
</tr></tbody>
</table></div>
-<a name="spirit.advanced.customize.clear_value.predefined_specializations"></a><h6>
-<a name="id940586"></a>
- <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.predefined_specializations">Predefined
+<a name="spirit.advanced.customize.clear_value.predefined_specializations"></a><h5>
+<a name="id733764"></a>
+ <a href="clear_value.html#spirit.advanced.customize.clear_value.predefined_specializations">Predefined
Specializations</a>
- </h6>
+ </h5>
<p>
<a href="http://spirit.sourceforge.net" target="_top">Spirit</a> predefines specializations
of this customization point for several types. The following table lists
@@ -236,118 +217,90 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Value
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Attrib</span></code>
- </p>
- </td>
-<td>
- <p>
+<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>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- Any type <code class="computeroutput"><span class="identifier">T</span></code> for
- which <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><>::</span><span class="identifier">type</span></code>
- is <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
- </p>
- </td>
-<td>
- <p>
- Call the member function <code class="computeroutput"><span class="identifier">attr</span><span class="special">.</span><span class="identifier">clear</span><span class="special">()</span></code> for the passed attribute instance.
- </p>
- </td>
+<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"><>::</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>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">Attrib</span><span class="special">></span></code>
- </p>
- </td>
-<td>
- <p>
- Clear the <code class="computeroutput"><span class="identifier">optional</span></code>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">Attrib</span><span class="special">></span></tt>
+ </p></td>
+<td><p>
+ Clear the <tt class="computeroutput"><span class="identifier">optional</span></tt>
instance and leave it uninitialized.
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span>
<span class="identifier">T2</span><span class="special">,</span>
- <span class="special">...></span></code>
- </p>
- </td>
-<td>
- <p>
- Invoke the <code class="computeroutput"><span class="identifier">clear_value</span></code>
+ <span class="special">...></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>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">tuple</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span>
<span class="identifier">T2</span><span class="special">,</span>
- <span class="special">...></span></code>
- </p>
- </td>
-<td>
- <p>
- Invoke the <code class="computeroutput"><span class="identifier">clear_value</span></code>
+ <span class="special">...></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>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">unused_type</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt>
+ </p></td>
+<td><p>
Do nothing.
- </p>
- </td>
+ </p></td>
</tr>
</tbody>
</table></div>
-<a name="spirit.advanced.customize.clear_value.when_to_implement"></a><h6>
-<a name="id942169"></a>
- <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.when_to_implement">When
+<a name="spirit.advanced.customize.clear_value.when_to_implement"></a><h5>
+<a name="id734236"></a>
+ <a href="clear_value.html#spirit.advanced.customize.clear_value.when_to_implement">When
to Implement</a>
- </h6>
+ </h5>
<p>
- The customization point <code class="computeroutput"><span class="identifier">clear_value</span></code>
+ 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 <code class="computeroutput"><span class="identifier">clear</span><span class="special">()</span></code>.
+ 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><h6>
-<a name="id942204"></a>
- <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.example">Example</a>
- </h6>
+<a name="spirit.advanced.customize.clear_value.example"></a><h5>
+<a name="id734312"></a>
+ Example
+ </h5>
<p>
TBD
</p>
Modified: trunk/libs/spirit/doc/html/spirit/advanced/customize/extract_from.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/extract_from.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/extract_from.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Extract an Attribute Value to Generate Output (Karma)</title>
+<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.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="../customize.html" title="Customization of Spirit's Attribute Handling">
-<link rel="prev" href="clear_value.html" title="Re-Initialize an Attribute Value before Parsing (Qi)">
-<link rel="next" href="iterate.html" title="Extract Attribute Values to Generate Output from a Container (Karma)">
+<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="iterate.html" title=" Extract Attribute
+ Values to Generate Output from a Container (Karma)">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -22,62 +26,62 @@
<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="iterate.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
-<div class="section" title="Extract an Attribute Value to Generate Output (Karma)">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.advanced.customize.extract_from"></a><a class="link" href="extract_from.html" title="Extract an Attribute Value to Generate Output (Karma)"> Extract an
+<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>
-<a name="spirit.advanced.customize.extract_from.extract_from"></a><h6>
-<a name="id942232"></a>
- <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.extract_from">extract_from</a>
- </h6>
+</h4></div></div>
+<div></div>
+</div>
+<a name="spirit.advanced.customize.extract_from.extract_from"></a><h5>
+<a name="id734362"></a>
+ extract_from
+ </h5>
<p>
Before generating output for a value this value needs to extracted from
- the attribute instance provided by the user. The customization point <code class="computeroutput"><span class="identifier">extract_from</span></code> is utilized to adapt this
+ 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>
-<a name="spirit.advanced.customize.extract_from.module_headers"></a><h6>
-<a name="id942256"></a>
- <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.module_headers">Module
+<a name="spirit.advanced.customize.extract_from.module_headers"></a><h5>
+<a name="id734407"></a>
+ <a href="extract_from.html#spirit.advanced.customize.extract_from.module_headers">Module
Headers</a>
- </h6>
+ </h5>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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><h6>
-<a name="id942349"></a>
- <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.namespace">Namespace</a>
- </h6>
+<a name="spirit.advanced.customize.extract_from.namespace"></a><h5>
+<a name="id734546"></a>
+ Namespace
+ </h5>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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><h6>
-<a name="id942422"></a>
- <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.synopsis">Synopsis</a>
- </h6>
+<a name="spirit.advanced.customize.extract_from.synopsis"></a><h5>
+<a name="id734643"></a>
+ Synopsis
+ </h5>
<pre class="programlisting"><span class="keyword">template</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">></span>
<span class="keyword">struct</span> <span class="identifier">extract_from_attribute</span>
<span class="special">{</span>
@@ -87,148 +91,120 @@
<span class="keyword">static</span> <span class="identifier">type</span> <span class="identifier">call</span><span class="special">(</span><span class="identifier">Attrib</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">attr</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">&</span> <span class="identifier">context</span><span class="special">);</span>
<span class="special">};</span>
</pre>
-<a name="spirit.advanced.customize.extract_from.template_parameters"></a><h6>
-<a name="id942597"></a>
- <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.template_parameters">Template
+<a name="spirit.advanced.customize.extract_from.template_parameters"></a><h5>
+<a name="id734882"></a>
+ <a href="extract_from.html#spirit.advanced.customize.extract_from.template_parameters">Template
parameters</a>
- </h6>
+ </h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Attrib</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Attrib</span></code>
+<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>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">clear_value</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ 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>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Context</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Context</span></tt>
+ </p></td>
+<td><p>
This is the type of the current generator execution context.
- </p>
- </td>
+ </p></td>
<td class="auto-generated"> </td>
</tr>
</tbody>
</table></div>
-<a name="spirit.advanced.customize.extract_from.notation"></a><h6>
-<a name="id942787"></a>
- <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.notation">Notation</a>
- </h6>
-<div class="variablelist" title="Notation">
+<a name="spirit.advanced.customize.extract_from.notation"></a><h5>
+<a name="id735136"></a>
+ Notation
+ </h5>
+<div class="variablelist">
<p class="title"><b>Notation</b></p>
<dl>
-<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 type to be used to generate output from.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">attr</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">attr</span></tt></span></dt>
<dd><p>
- A attribute instance of type <code class="computeroutput"><span class="identifier">Attrib</span></code>.
+ 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><h6>
-<a name="id942853"></a>
- <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.expression_semantics">Expression
+<a name="spirit.advanced.customize.extract_from.expression_semantics"></a><h5>
+<a name="id735224"></a>
+ <a href="extract_from.html#spirit.advanced.customize.extract_from.expression_semantics">Expression
Semantics</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>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody><tr>
<td>
- <p>
+<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"><</span><span class="identifier">Attrib</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">attr</span><span class="special">,</span> <span class="identifier">ctx</span><span class="special">)</span></pre>
<p>
</p>
- </td>
-<td>
- <p>
+</td>
+<td><p>
Extract the value to generate output from and return it to the
caller.
- </p>
- </td>
+ </p></td>
</tr></tbody>
</table></div>
-<a name="spirit.advanced.customize.extract_from.predefined_specializations"></a><h6>
-<a name="id942960"></a>
- <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.predefined_specializations">Predefined
+<a name="spirit.advanced.customize.extract_from.predefined_specializations"></a><h5>
+<a name="id735366"></a>
+ <a href="extract_from.html#spirit.advanced.customize.extract_from.predefined_specializations">Predefined
Specializations</a>
- </h6>
+ </h5>
<p>
<a href="http://spirit.sourceforge.net" target="_top">Spirit</a> predefines specializations
of this customization point for several types. The following table lists
@@ -240,100 +216,80 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Value
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Attrib</span></code>
- </p>
- </td>
-<td>
- <p>
- The exposed typedef <code class="computeroutput"><span class="identifier">type</span></code>
- is defined to <code class="computeroutput"><span class="identifier">Attrib</span>
- <span class="keyword">const</span><span class="special">&</span></code>.
- The function <code class="computeroutput"><span class="identifier">call</span><span class="special">()</span></code> returns the argument by reference
+<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">&</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>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">Attrib</span><span class="special">></span></code>
- </p>
- </td>
-<td>
- <p>
- The exposed typedef <code class="computeroutput"><span class="identifier">type</span></code>
- is defined to <code class="computeroutput"><span class="identifier">Attrib</span>
- <span class="keyword">const</span><span class="special">&</span></code>.
- The function <code class="computeroutput"><span class="identifier">call</span><span class="special">()</span></code> returns the value held by the
- <code class="computeroutput"><span class="identifier">optional</span><span class="special"><></span></code>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">Attrib</span><span class="special">></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">&</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"><></span></tt>
argument by reference without change.
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">reference_wrapper</span><span class="special"><</span><span class="identifier">Attrib</span><span class="special">></span></code>
- </p>
- </td>
-<td>
- <p>
- The exposed typedef <code class="computeroutput"><span class="identifier">type</span></code>
- is defined to <code class="computeroutput"><span class="identifier">Attrib</span>
- <span class="keyword">const</span><span class="special">&</span></code>.
- The function <code class="computeroutput"><span class="identifier">call</span><span class="special">()</span></code> returns the value held by the
- <code class="computeroutput"><span class="identifier">reference_wrapper</span><span class="special"><></span></code> argument by reference without
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">reference_wrapper</span><span class="special"><</span><span class="identifier">Attrib</span><span class="special">></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">&</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"><></span></tt> argument by reference without
change.
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">unused_type</span></code>
- </p>
- </td>
-<td>
- <p>
- The exposed typedef <code class="computeroutput"><span class="identifier">type</span></code>
- is defined to <code class="computeroutput"><span class="identifier">unused_type</span></code>.
- The function <code class="computeroutput"><span class="identifier">call</span><span class="special">()</span></code> returns an instance of <code class="computeroutput"><span class="identifier">unused_type</span></code>.
- </p>
- </td>
+<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><h6>
-<a name="id943304"></a>
- <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.when_to_implement">When
+<a name="spirit.advanced.customize.extract_from.when_to_implement"></a><h5>
+<a name="id735859"></a>
+ <a href="extract_from.html#spirit.advanced.customize.extract_from.when_to_implement">When
to implement</a>
- </h6>
+ </h5>
<p>
- The customization point <code class="computeroutput"><span class="identifier">extract_from_attribute</span></code>
+ 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 <code class="computeroutput"><span class="identifier">Attrib</span></code>
+ 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><h6>
-<a name="id943338"></a>
- <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.example">Example</a>
- </h6>
+<a name="spirit.advanced.customize.extract_from.example"></a><h5>
+<a name="id735918"></a>
+ Example
+ </h5>
<p>
TBD
</p>
Modified: trunk/libs/spirit/doc/html/spirit/advanced/customize/is_container.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/is_container.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/is_container.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<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>
+<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.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="../customize.html" title="Customization of Spirit's Attribute Handling">
-<link rel="prev" 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)">
+<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>
@@ -22,75 +26,79 @@
<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" title="Determine if a Type Should be Treated as a Container (Qi and Karma)">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.advanced.customize.is_container"></a><a class="link" href="is_container.html" title="Determine if a Type Should be Treated as a Container (Qi and Karma)"> Determine
+<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>
-<a name="spirit.advanced.customize.is_container.is_container"></a><h6>
-<a name="id927615"></a>
- <a class="link" href="is_container.html#spirit.advanced.customize.is_container.is_container">is_container</a>
- </h6>
+</h4></div></div>
+<div></div>
+</div>
+<a name="spirit.advanced.customize.is_container.is_container"></a><h5>
+<a name="id720302"></a>
+ is_container
+ </h5>
<p>
- The template <code class="computeroutput"><span class="identifier">is_container</span></code>
+ 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 class="link" href="../../qi/reference/operator/sequence.html" title="Sequence (a >> b)">Sequence</a>
- (<code class="computeroutput"><span class="special">>></span></code>) and <span class="emphasis"><em>Karma</em></span>
- <a class="link" href="../../karma/reference/operator/sequence.html" title="Sequences (a << b)">Sequence (<code class="computeroutput"><span class="special"><<</span></code>)</a> operators in order to determine
+ is invoked by the <span class="emphasis"><em>Qi</em></span> <a href="../../qi/reference/operator/sequence.html" title=" Sequence
+ (a >>
+ b)">Sequence</a>
+ (<tt class="computeroutput"><span class="special">>></span></tt>) and <span class="emphasis"><em>Karma</em></span>
+ <a href="../../karma/reference/operator/sequence.html" title=" Sequences
+ (a <<
+ b)">Sequence (<tt class="computeroutput"><span class="special"><<</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><h6>
-<a name="id927670"></a>
- <a class="link" href="is_container.html#spirit.advanced.customize.is_container.header">Header</a>
- </h6>
+<a name="spirit.advanced.customize.is_container.header"></a><h5>
+<a name="id720397"></a>
+ Header
+ </h5>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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><h6>
-<a name="id927756"></a>
- <a class="link" href="is_container.html#spirit.advanced.customize.is_container.namespace">Namespace</a>
- </h6>
+<a name="spirit.advanced.customize.is_container.namespace"></a><h5>
+<a name="id720523"></a>
+ Namespace
+ </h5>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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><h6>
-<a name="id927829"></a>
- <a class="link" href="is_container.html#spirit.advanced.customize.is_container.synopsis">Synopsis</a>
- </h6>
+<a name="spirit.advanced.customize.is_container.synopsis"></a><h5>
+<a name="id720620"></a>
+ Synopsis
+ </h5>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></span>
<span class="keyword">struct</span> <span class="identifier">is_container</span>
<span class="special">{</span>
<span class="keyword">typedef</span> <span class="special"><</span><span class="identifier">unspecified</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
<span class="special">};</span>
</pre>
-<a name="spirit.advanced.customize.is_container.template_parameters"></a><h6>
-<a name="id927927"></a>
- <a class="link" href="is_container.html#spirit.advanced.customize.is_container.template_parameters">Template
+<a name="spirit.advanced.customize.is_container.template_parameters"></a><h5>
+<a name="id720756"></a>
+ <a href="is_container.html#spirit.advanced.customize.is_container.template_parameters">Template
parameters</a>
- </h6>
+ </h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
@@ -98,130 +106,104 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Container</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Container</span></code>
+<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>
which needs to be tested whether it has to be treated as a container
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">is_container</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ 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><h6>
-<a name="id928093"></a>
- <a class="link" href="is_container.html#spirit.advanced.customize.is_container.notation">Notation</a>
- </h6>
+<a name="spirit.advanced.customize.is_container.notation"></a><h5>
+<a name="id720982"></a>
+ Notation
+ </h5>
<div class="variablelist">
<p class="title"><b></b></p>
<dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">C</span></code></span></dt>
+<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"><code class="computeroutput"><span class="identifier">T1</span></code>,
- <code class="computeroutput"><span class="identifier">T2</span></code>, ...</span></dt>
+<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><h6>
-<a name="id928159"></a>
- <a class="link" href="is_container.html#spirit.advanced.customize.is_container.expression_semantics">Expression
+<a name="spirit.advanced.customize.is_container.expression_semantics"></a><h5>
+<a name="id721071"></a>
+ <a href="is_container.html#spirit.advanced.customize.is_container.expression_semantics">Expression
Semantics</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>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody><tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code>
- </p>
- </td>
-<td>
- <p>
- Result of the metafunction that evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
- if a given type, <code class="computeroutput"><span class="identifier">C</span></code>,
- is to be treated as a container, <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></tt>
+ </p></td>
+<td><p>
+ Result of the 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>
+ </p></td>
</tr></tbody>
</table></div>
-<a name="spirit.advanced.customize.is_container.predefined_specializations"></a><h6>
-<a name="id928288"></a>
- <a class="link" href="is_container.html#spirit.advanced.customize.is_container.predefined_specializations">Predefined
+<a name="spirit.advanced.customize.is_container.predefined_specializations"></a><h5>
+<a name="id721248"></a>
+ <a href="is_container.html#spirit.advanced.customize.is_container.predefined_specializations">Predefined
Specializations</a>
- </h6>
+ </h5>
<p>
<a href="http://spirit.sourceforge.net" target="_top">Spirit</a> 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 <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> (see <a href="../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+ 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">
@@ -230,103 +212,83 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Value
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">T</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> if <code class="computeroutput"><span class="identifier">T</span></code>
- has the following embedded types defined: <code class="computeroutput"><span class="identifier">value_type</span></code>,
- <code class="computeroutput"><span class="identifier">iterator</span></code>, <code class="computeroutput"><span class="identifier">size_type</span></code>, and<code class="computeroutput"><span class="identifier">reference</span></code>.
- Otherwise it will return <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span></code>
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span>
+<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"><</span><span class="identifier">T</span><span class="special">></span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</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"><</span><span class="identifier">T1</span><span class="special">,</span>
<span class="identifier">T2</span><span class="special">,</span>
- <span class="special">...></span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code> if at least one of the
- <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">TN</span><span class="special">>::</span><span class="identifier">type</span></code> returns <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
- (where <code class="computeroutput"><span class="identifier">TN</span></code> is <code class="computeroutput"><span class="identifier">T1</span></code>, <code class="computeroutput"><span class="identifier">T2</span></code>,
- ...). Otherwise it will return <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">unused_type</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>.
- </p>
- </td>
+ <span class="special">...></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"><</span><span class="identifier">TN</span><span class="special">>::</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><h6>
-<a name="id928738"></a>
- <a class="link" href="is_container.html#spirit.advanced.customize.is_container.when_to_implement">When
+<a name="spirit.advanced.customize.is_container.when_to_implement"></a><h5>
+<a name="id721828"></a>
+ <a href="is_container.html#spirit.advanced.customize.is_container.when_to_implement">When
to implement</a>
- </h6>
+ </h5>
<p>
- The customization point <code class="computeroutput"><span class="identifier">is_container</span></code>
+ 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, <code class="computeroutput"><span class="identifier">C</span></code> and
- if the type does not expose the interface of a STL container (i.e. <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code> would normally return <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>). These components have an attribute
+ a STL container, <tt class="computeroutput"><span class="identifier">C</span></tt> 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"><</span><span class="identifier">C</span><span class="special">>::</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">--></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"><</span><span class="identifier">A</span><span class="special">></span>
</pre>
<p>
- where <code class="computeroutput"><span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code> stands
- for any meaningful operation on the component <code class="computeroutput"><span class="identifier">a</span></code>.
+ 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><h6>
-<a name="id928897"></a>
- <a class="link" href="is_container.html#spirit.advanced.customize.is_container.related_attribute_customization_points">Related
+<a name="spirit.advanced.customize.is_container.related_attribute_customization_points"></a><h5>
+<a name="id722068"></a>
+ <a href="is_container.html#spirit.advanced.customize.is_container.related_attribute_customization_points">Related
Attribute Customization Points</a>
- </h6>
+ </h5>
<p>
If this customization point is implemented, the following other customization
points might need to be implemented as well.
@@ -337,153 +299,138 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Name
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
When to implement
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <a class="link" href="store_value/container_value.html" title="Determine the Type to be Stored in a Container (Qi)"><code class="computeroutput"><span class="identifier">container_value</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Needs to be implemented whenever <code class="computeroutput"><span class="identifier">is_container</span></code>
+<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>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <a class="link" href="store_value/push_back.html" title="Store a Parsed Attribute Value into a Container (Qi)"><code class="computeroutput"><span class="identifier">push_back_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Qi: <a class="link" href="../../qi/reference/operator/list.html" title="List (a % b)">List</a>,
- <a class="link" href="../../qi/reference/operator/kleene.html" title="Kleene (*a)">Kleene</a>,
- <a class="link" href="../../qi/reference/operator/plus.html" title="Plus (+a)">Plus</a>,
- <a class="link" href="../../qi/reference/directive/repeat.html" title="Repetition (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="iterate/container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../karma/reference/operator/plus.html" title="Plus (+a)">Plus
- (unary <code class="computeroutput"><span class="special">+</span></code>)</a>,
- <a class="link" href="../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="iterate/begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute"><code class="computeroutput"><span class="identifier">begin_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../karma/reference/operator/plus.html" title="Plus (+a)">Plus
- (unary <code class="computeroutput"><span class="special">+</span></code>)</a>,
- <a class="link" href="../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="iterate/end_container.html" title="Get the Iterator pointing to the End of a Container Attribute"><code class="computeroutput"><span class="identifier">end_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../karma/reference/operator/plus.html" title="Plus (+a)">Plus
- (unary <code class="computeroutput"><span class="special">+</span></code>)</a>,
- <a class="link" href="../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="iterate/deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">deref_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../karma/reference/operator/plus.html" title="Plus (+a)">Plus
- (unary <code class="computeroutput"><span class="special">+</span></code>)</a>,
- <a class="link" href="../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="iterate/next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">next_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../karma/reference/operator/plus.html" title="Plus (+a)">Plus
- (unary <code class="computeroutput"><span class="special">+</span></code>)</a>,
- <a class="link" href="../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="iterate/compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality"><code class="computeroutput"><span class="identifier">compare_iterators</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../karma/reference/operator/plus.html" title="Plus (+a)">Plus
- (unary <code class="computeroutput"><span class="special">+</span></code>)</a>,
- <a class="link" href="../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
+<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>
+ <a href="iterate/container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>
+ </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>
+ <a href="iterate/begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute"><tt class="computeroutput"><span class="identifier">begin_container</span></tt></a>
+ </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>
+ <a href="iterate/end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute"><tt class="computeroutput"><span class="identifier">end_container</span></tt></a>
+ </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>
+ <a href="iterate/deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">deref_iterator</span></tt></a>
+ </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>
+ <a href="iterate/next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">next_iterator</span></tt></a>
+ </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>
+ <a href="iterate/compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality"><tt class="computeroutput"><span class="identifier">compare_iterators</span></tt></a>
+ </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><h6>
-<a name="id929430"></a>
- <a class="link" href="is_container.html#spirit.advanced.customize.is_container.example">Example</a>
- </h6>
+<a name="spirit.advanced.customize.is_container.example"></a><h5>
+<a name="id722904"></a>
+ Example
+ </h5>
<p>
- For examples of how to use the customization point <code class="computeroutput"><span class="identifier">is_container</span></code>
- please see here: <a class="link" href="iterate/container_iterator.html#spirit.advanced.customize.iterate.container_iterator.example">embedded_container_example</a>,
- <a class="link" href="iterate/next_iterator.html#spirit.advanced.customize.iterate.next_iterator.example">use_as_container</a>,
- and <a class="link" href="iterate/deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.example">counter_example</a>.
+ For examples of how to use the customization point <tt class="computeroutput"><span class="identifier">is_container</span></tt>
+ please see here: embedded_container_example,
+ use_as_container,
+ and counter_example.
</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/advanced/customize/iterate.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Extract Attribute Values to Generate Output from a Container (Karma)</title>
+<title> Extract Attribute
+ Values to Generate Output from a Container (Karma)</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="../customize.html" title="Customization of Spirit's Attribute Handling">
-<link rel="prev" href="extract_from.html" title="Extract an Attribute Value to Generate Output (Karma)">
-<link rel="next" href="iterate/container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)">
+<link rel="up" href="../customize.html" title=" Customization of Spirit's
+ Attribute Handling">
+<link rel="previous" href="extract_from.html" title=" Extract an
+ Attribute Value to Generate Output (Karma)">
+<link rel="next" href="iterate/container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)">
</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="extract_from.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="iterate/container_iterator.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
-<div class="section" title="Extract Attribute Values to Generate Output from a Container (Karma)">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.advanced.customize.iterate"></a><a class="link" href="iterate.html" title="Extract Attribute Values to Generate Output from a Container (Karma)"> Extract Attribute
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h4 class="title">
+<a name="spirit.advanced.customize.iterate"></a><a href="iterate.html" title=" Extract Attribute
+ Values to Generate Output from a Container (Karma)"> Extract Attribute
Values to Generate Output from a Container (Karma)</a>
-</h4></div></div></div>
+</h4></div></div>
+<div></div>
+</div>
<div class="toc"><dl>
<dt><span class="section"><a href="iterate/container_iterator.html">
Determine the Type of the Iterator of a Container (Karma)</a></span></dt>
Modified: trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/begin_container.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/begin_container.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/begin_container.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Get the Iterator pointing to the Begin of a Container Attribute</title>
+<title>
+ Get the Iterator pointing to the Begin of a Container Attribute</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="../iterate.html" title="Extract Attribute Values to Generate Output from a Container (Karma)">
-<link rel="prev" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)">
-<link rel="next" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute">
+<link rel="up" href="../iterate.html" title=" Extract Attribute
+ Values to Generate Output from a Container (Karma)">
+<link rel="previous" href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)">
+<link rel="next" href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -22,65 +26,67 @@
<div class="spirit-nav">
<a accesskey="p" href="container_iterator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../iterate.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="end_container.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
-<div class="section" title="Get the Iterator pointing to the Begin of a Container Attribute">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.advanced.customize.iterate.begin_container"></a><a class="link" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.advanced.customize.iterate.begin_container"></a><a href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute">
Get the Iterator pointing to the Begin of a Container Attribute</a>
-</h5></div></div></div>
+</h5></div></div>
+<div></div>
+</div>
<a name="spirit.advanced.customize.iterate.begin_container.begin_container"></a><h6>
-<a name="id946517"></a>
- <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.begin_container">begin_container</a>
+<a name="id739920"></a>
+ begin_container
</h6>
<p>
- The template <code class="computeroutput"><span class="identifier">begin_container</span></code>
+ The template <tt class="computeroutput"><span class="identifier">begin_container</span></tt>
is a type used as an attribute customization point. It is invoked by
- the <span class="emphasis"><em>Karma</em></span> repetitive generators (such as <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene
- (unary <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, and <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>)
+ the <span class="emphasis"><em>Karma</em></span> repetitive generators (such as <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>, Plus (unary +), and <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>)
in order to get an iterator pointing to the first element of the container
holding the attributes to generate output from.
</p>
<a name="spirit.advanced.customize.iterate.begin_container.module_headers"></a><h6>
-<a name="id946585"></a>
- <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.module_headers">Module
+<a name="id740039"></a>
+ <a href="begin_container.html#spirit.advanced.customize.iterate.begin_container.module_headers">Module
Headers</a>
</h6>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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.iterate.begin_container.namespace"></a><h6>
-<a name="id946673"></a>
- <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.namespace">Namespace</a>
+<a name="id740169"></a>
+ Namespace
</h6>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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.iterate.begin_container.synopsis"></a><h6>
-<a name="id946751"></a>
- <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.synopsis">Synopsis</a>
+<a name="id740266"></a>
+ Synopsis
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></span>
<span class="keyword">struct</span> <span class="identifier">begin_container</span>
@@ -90,8 +96,8 @@
<span class="special">};</span>
</pre>
<a name="spirit.advanced.customize.iterate.begin_container.template_parameters"></a><h6>
-<a name="id946877"></a>
- <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.template_parameters">Template
+<a name="id740442"></a>
+ <a href="begin_container.html#spirit.advanced.customize.iterate.begin_container.template_parameters">Template
parameters</a>
</h6>
<div class="informaltable"><table class="table">
@@ -101,84 +107,66 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Container</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Container</span></code>
+<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>
for which the iterator pointing to the first element has to be
returned
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">begin_container</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ certain specializations of <tt class="computeroutput"><span class="identifier">begin_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.iterate.begin_container.notation"></a><h6>
-<a name="id948681"></a>
- <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.notation">Notation</a>
+<a name="id740667"></a>
+ Notation
</h6>
<div class="variablelist">
<p class="title"><b></b></p>
<dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">C</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">C</span></tt></span></dt>
<dd><p>
A container type the begin iterator needs to be returned for.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">c</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">c</span></tt></span></dt>
<dd><p>
- An instance of a container, <code class="computeroutput"><span class="identifier">C</span></code>.
+ An instance of a container, <tt class="computeroutput"><span class="identifier">C</span></tt>.
</p></dd>
</dl>
</div>
<a name="spirit.advanced.customize.iterate.begin_container.expression_semantics"></a><h6>
-<a name="id948746"></a>
- <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.expression_semantics">Expression
+<a name="id740755"></a>
+ <a href="begin_container.html#spirit.advanced.customize.iterate.begin_container.expression_semantics">Expression
Semantics</a>
</h6>
<div class="informaltable"><table class="table">
@@ -187,31 +175,24 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody><tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">begin_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">begin_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt>
+ </p></td>
+<td><p>
Return the iterator usable to dereference the first element of
- the given container, <code class="computeroutput"><span class="identifier">c</span></code>.
+ the given container, <tt class="computeroutput"><span class="identifier">c</span></tt>.
The type of the returned iterator is expected to be the same
- as the type returned by the customization point <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>.
- </p>
- </td>
+ as the type returned by the customization point <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>.
+ </p></td>
</tr></tbody>
</table></div>
<p>
@@ -219,32 +200,35 @@
forward iterator. But it does not have to expose the standardized interface.
If this customization point is implemented for a certain container type,
all related customization points need to be implemented as well (see
- <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.related_attribute_customization_points">Related
+ <a href="begin_container.html#spirit.advanced.customize.iterate.begin_container.related_attribute_customization_points">Related
Attribute Customization Points</a> below). This encapsulates the specific
iterator interface required for a given type. The minimal requirements
for a type to be exposed as an iterator in this context are:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
- it needs to be comparable for equality (see <a class="link" href="compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality"><code class="computeroutput"><span class="identifier">compare_iterators</span></code></a>),
+<div class="itemizedlist"><ul type="disc">
+<li>
+ it needs to be comparable for equality (see <a href="compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality"><tt class="computeroutput"><span class="identifier">compare_iterators</span></tt></a>),
</li>
-<li class="listitem">
- it needs to be incrementable (see <a class="link" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">next_iterator</span></code></a>),
+<li>
+ it needs to be incrementable (see <a href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">next_iterator</span></tt></a>),
</li>
-<li class="listitem">
- it needs to be dereferencible (see <a class="link" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">deref_iterator</span></code></a>).
+<li>
+ it needs to be dereferencible (see <a href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">deref_iterator</span></tt></a>).
</li>
</ul></div>
<a name="spirit.advanced.customize.iterate.begin_container.predefined_specializations"></a><h6>
-<a name="id948912"></a>
- <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.predefined_specializations">Predefined
+<a name="id741019"></a>
+ <a href="begin_container.html#spirit.advanced.customize.iterate.begin_container.predefined_specializations">Predefined
Specializations</a>
</h6>
<p>
<a href="http://spirit.sourceforge.net" target="_top">Spirit</a> predefines
specializations of this customization point for several types. The following
table lists those types together with the types returned by the embedded
- typedef <code class="computeroutput"><span class="identifier">type</span></code>:
+ typedef <tt class="computeroutput"><span class="identifier">type</span></tt>:
</p>
<div class="informaltable"><table class="table">
<colgroup>
@@ -252,74 +236,58 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Value
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">C</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">C</span> <span class="keyword">const</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">unused_type</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="special">&</span><span class="identifier">unused</span></code>.
- </p>
- </td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">C</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">C</span> <span class="keyword">const</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</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="special">&</span><span class="identifier">unused</span></tt>.
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.begin_container.when_to_implement"></a><h6>
-<a name="id949099"></a>
- <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.when_to_implement">When
+<a name="id741272"></a>
+ <a href="begin_container.html#spirit.advanced.customize.iterate.begin_container.when_to_implement">When
to implement</a>
</h6>
<p>
- The customization point <code class="computeroutput"><span class="identifier">begin_container</span></code>
+ The customization point <tt class="computeroutput"><span class="identifier">begin_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 generators (<span class="emphasis"><em>Spirit.Karma</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 generator normally exposing a STL container, <code class="computeroutput"><span class="identifier">C</span></code> and if the type does not expose the
- interface of a STL container (i.e. <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code>
- would normally return <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>).
+ as an attribute to a generator normally exposing a STL container, <tt class="computeroutput"><span class="identifier">C</span></tt> 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"><</span><span class="identifier">C</span><span class="special">>::</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>).
</p>
<a name="spirit.advanced.customize.iterate.begin_container.related_attribute_customization_points"></a><h6>
-<a name="id949170"></a>
- <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.related_attribute_customization_points">Related
+<a name="id741392"></a>
+ <a href="begin_container.html#spirit.advanced.customize.iterate.begin_container.related_attribute_customization_points">Related
Attribute Customization Points</a>
</h6>
<p>
@@ -332,126 +300,113 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Name
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
When to implement
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <a class="link" href="../is_container.html" title="Determine if a Type Should be Treated as a Container (Qi and Karma)"><code class="computeroutput"><span class="identifier">is_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../is_container.html" title=" Determine
+ if a Type Should be Treated as a Container (Qi and Karma)"><tt class="computeroutput"><span class="identifier">is_container</span></tt></a>
+ </p></td>
+<td><p>
Needs to be implemented whenever a type is to be used as a container
attribute in <span class="emphasis"><em>Karma</em></span>.
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute"><code class="computeroutput"><span class="identifier">begin_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute"><code class="computeroutput"><span class="identifier">end_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">deref_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">next_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality"><code class="computeroutput"><span class="identifier">compare_iterators</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
+<td><p>
+ <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute"><tt class="computeroutput"><span class="identifier">begin_container</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute"><tt class="computeroutput"><span class="identifier">end_container</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">deref_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">next_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality"><tt class="computeroutput"><span class="identifier">compare_iterators</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.begin_container.example"></a><h6>
-<a name="id949657"></a>
- <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.example">Example</a>
+<a name="id742130"></a>
+ Example
</h6>
<p>
- For examples of how to use the customization point <code class="computeroutput"><span class="identifier">begin_container</span></code>
- please see here: <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.example">embedded_container_example</a>,
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.example">use_as_container</a>,
- and <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.example">counter_example</a>.
+ For examples of how to use the customization point <tt class="computeroutput"><span class="identifier">begin_container</span></tt>
+ please see here: embedded_container_example,
+ use_as_container,
+ and counter_example.
</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/advanced/customize/iterate/compare_iterators.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/compare_iterators.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/compare_iterators.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,16 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Compare two Iterator pointing into a Container Attribute for Equality</title>
+<title>
+ Compare two Iterator pointing into a Container Attribute for Equality</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="../iterate.html" title="Extract Attribute Values to Generate Output from a Container (Karma)">
-<link rel="prev" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute">
-<link rel="next" href="../../../support.html" title="Supporting libraries">
+<link rel="up" href="../iterate.html" title=" Extract Attribute
+ Values to Generate Output from a Container (Karma)">
+<link rel="previous" href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute">
+<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>
@@ -22,66 +25,71 @@
<div class="spirit-nav">
<a accesskey="p" href="deref_iterator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../iterate.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" title="Compare two Iterator pointing into a Container Attribute for Equality">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.advanced.customize.iterate.compare_iterators"></a><a class="link" href="compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.advanced.customize.iterate.compare_iterators"></a><a href="compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality">
Compare two Iterator pointing into a Container Attribute for Equality</a>
-</h5></div></div></div>
+</h5></div></div>
+<div></div>
+</div>
<a name="spirit.advanced.customize.iterate.compare_iterators.compare_iterators"></a><h6>
-<a name="id961920"></a>
- <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.compare_iterators">compare_iterators</a>
+<a name="id753855"></a>
+ compare_iterators
</h6>
<p>
- The template <code class="computeroutput"><span class="identifier">compare_iterators</span></code>
+ The template <tt class="computeroutput"><span class="identifier">compare_iterators</span></tt>
is a type used as an attribute customization point. It is invoked by
- the <span class="emphasis"><em>Karma</em></span> repetitive generators (such as <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene
- (unary <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, and <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>)
- in order to compare the current iterator (returned either from <a class="link" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute"><code class="computeroutput"><span class="identifier">begin_container</span></code></a> or from <a class="link" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">next_iterator</span></code></a>) with the end
- iterator (returned from <a class="link" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute"><code class="computeroutput"><span class="identifier">end_container</span></code></a>) in order to find
+ the <span class="emphasis"><em>Karma</em></span> repetitive generators (such as <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>, Plus (unary +), and <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>)
+ in order to compare the current iterator (returned either from <a href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute"><tt class="computeroutput"><span class="identifier">begin_container</span></tt></a> or from <a href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">next_iterator</span></tt></a>) with the end
+ iterator (returned from <a href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute"><tt class="computeroutput"><span class="identifier">end_container</span></tt></a>) in order to find
the end of the element sequence to gerenate output for.
</p>
<a name="spirit.advanced.customize.iterate.compare_iterators.module_headers"></a><h6>
-<a name="id962018"></a>
- <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.module_headers">Module
+<a name="id754029"></a>
+ <a href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.module_headers">Module
Headers</a>
</h6>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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.iterate.compare_iterators.namespace"></a><h6>
-<a name="id962105"></a>
- <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.namespace">Namespace</a>
+<a name="id754158"></a>
+ Namespace
</h6>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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.iterate.compare_iterators.synopsis"></a><h6>
-<a name="id962183"></a>
- <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.synopsis">Synopsis</a>
+<a name="id754256"></a>
+ Synopsis
</h6>
<pre class="programlisting"><span class="keyword">template</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">></span>
<span class="keyword">struct</span> <span class="identifier">compare_iterators</span>
@@ -90,8 +98,8 @@
<span class="special">};</span>
</pre>
<a name="spirit.advanced.customize.iterate.compare_iterators.template_parameters"></a><h6>
-<a name="id962316"></a>
- <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.template_parameters">Template
+<a name="id754440"></a>
+ <a href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.template_parameters">Template
parameters</a>
</h6>
<div class="informaltable"><table class="table">
@@ -101,90 +109,73 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Iterator</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Iterator</span></code>
+<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>
of the iterator to dereference. This is the same as the type
- returned by the customization point <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>.
- </p>
- </td>
-<td>
- <p>
+ returned by the customization point <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>.
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">compare_iterators</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ certain specializations of <tt class="computeroutput"><span class="identifier">compare_iterators</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.iterate.compare_iterators.notation"></a><h6>
-<a name="id962492"></a>
- <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.notation">Notation</a>
+<a name="id754686"></a>
+ Notation
</h6>
<div class="variablelist">
<p class="title"><b></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>
An iterator type.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">it1</span></code>,
- <code class="computeroutput"><span class="identifier">it2</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">it1</span></tt>,
+ <tt class="computeroutput"><span class="identifier">it2</span></tt></span></dt>
<dd><p>
- Instance of iterators of type, <code class="computeroutput"><span class="identifier">Iterator</span></code>.
+ Instance of iterators of type, <tt class="computeroutput"><span class="identifier">Iterator</span></tt>.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">C</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">C</span></tt></span></dt>
<dd><p>
- A container type a iterator type, <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ A container type a iterator type, <tt class="computeroutput"><span class="identifier">Iterator</span></tt>
belongs to.
</p></dd>
</dl>
</div>
<a name="spirit.advanced.customize.iterate.compare_iterators.expression_semantics"></a><h6>
-<a name="id962589"></a>
- <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.expression_semantics">Expression
+<a name="id754823"></a>
+ <a href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.expression_semantics">Expression
Semantics</a>
</h6>
<div class="informaltable"><table class="table">
@@ -193,42 +184,34 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody><tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">compare_iterators</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">it1</span><span class="special">,</span> <span class="identifier">it2</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns whether the iterators <code class="computeroutput"><span class="identifier">it1</span></code>
- <code class="computeroutput"><span class="identifier">it2</span></code> are to be
+<td><p>
+ <tt class="computeroutput"><span class="identifier">compare_iterators</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">it1</span><span class="special">,</span> <span class="identifier">it2</span><span class="special">)</span></tt>
+ </p></td>
+<td><p>
+ Returns whether the iterators <tt class="computeroutput"><span class="identifier">it1</span></tt>
+ <tt class="computeroutput"><span class="identifier">it2</span></tt> are to be
treated as beeing equal.
- </p>
- </td>
+ </p></td>
</tr></tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.compare_iterators.predefined_specializations"></a><h6>
-<a name="id962708"></a>
- <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.predefined_specializations">Predefined
+<a name="id754987"></a>
+ <a href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.predefined_specializations">Predefined
Specializations</a>
</h6>
<p>
<a href="http://spirit.sourceforge.net" target="_top">Spirit</a> predefines
specializations of this customization point for several types. The following
table lists those types together with the types returned by the embedded
- typedef <code class="computeroutput"><span class="identifier">type</span></code>:
+ typedef <tt class="computeroutput"><span class="identifier">type</span></tt>:
</p>
<div class="informaltable"><table class="table">
<colgroup>
@@ -236,64 +219,52 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Value
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Iterator</span></code>
- </p>
- </td>
-<td>
- <p>
- The function <code class="computeroutput"><span class="identifier">call</span><span class="special">()</span></code> returns it1 == it2.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">unused_type</span></code><code class="computeroutput">
- <span class="keyword">const</span><span class="special">*</span></code>
- </p>
- </td>
-<td>
- <p>
- The function <code class="computeroutput"><span class="identifier">call</span><span class="special">()</span></code> always returns false.
- </p>
- </td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Iterator</span></tt>
+ </p></td>
+<td><p>
+ The function <tt class="computeroutput"><span class="identifier">call</span><span class="special">()</span></tt> returns it1 == it2.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt><tt class="computeroutput">
+ <span class="keyword">const</span><span class="special">*</span></tt>
+ </p></td>
+<td><p>
+ The function <tt class="computeroutput"><span class="identifier">call</span><span class="special">()</span></tt> always returns false.
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.compare_iterators.when_to_implement"></a><h6>
-<a name="id962852"></a>
- <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.when_to_implement">When
+<a name="id755185"></a>
+ <a href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.when_to_implement">When
to implement</a>
</h6>
<p>
- The customization point <code class="computeroutput"><span class="identifier">compare_iterators</span></code>
+ The customization point <tt class="computeroutput"><span class="identifier">compare_iterators</span></tt>
needs to be implemented for a specific iterator type whenever the container
this iterator belongs to is to be used as an attribute in place of a
STL container. It is applicable for generators (<span class="emphasis"><em>Spirit.Karma</em></span>)
only. As a rule of thumb: it has to be implemented whenever a certain
iterator type belongs to a container which is to be passed as an attribute
- to a generator normally exposing a STL container, <code class="computeroutput"><span class="identifier">C</span></code>
+ to a generator normally exposing a STL container, <tt class="computeroutput"><span class="identifier">C</span></tt>
and if the container type does not expose the interface of a STL container
- (i.e. <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code> would normally return <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>).
+ (i.e. <tt class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</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>).
</p>
<a name="spirit.advanced.customize.iterate.compare_iterators.related_attribute_customization_points"></a><h6>
-<a name="id962922"></a>
- <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.related_attribute_customization_points">Related
+<a name="id755309"></a>
+ <a href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.related_attribute_customization_points">Related
Attribute Customization Points</a>
</h6>
<p>
@@ -306,124 +277,111 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Name
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
When to implement
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <a class="link" href="../is_container.html" title="Determine if a Type Should be Treated as a Container (Qi and Karma)"><code class="computeroutput"><span class="identifier">is_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../is_container.html" title=" Determine
+ if a Type Should be Treated as a Container (Qi and Karma)"><tt class="computeroutput"><span class="identifier">is_container</span></tt></a>
+ </p></td>
+<td><p>
Needs to be implemented whenever a type is to be used as a container
attribute in <span class="emphasis"><em>Karma</em></span>.
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute"><code class="computeroutput"><span class="identifier">begin_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute"><code class="computeroutput"><span class="identifier">end_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">deref_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">next_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality"><code class="computeroutput"><span class="identifier">compare_iterators</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
+<td><p>
+ <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute"><tt class="computeroutput"><span class="identifier">begin_container</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute"><tt class="computeroutput"><span class="identifier">end_container</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">deref_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">next_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality"><tt class="computeroutput"><span class="identifier">compare_iterators</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.compare_iterators.example"></a><h6>
-<a name="id963410"></a>
- <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.example">Example</a>
+<a name="id756049"></a>
+ Example
</h6>
<p>
- For an example of how to use the customization point <code class="computeroutput"><span class="identifier">compare_iterators</span></code>
- please see here: <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.example">use_as_container</a>.
+ For an example of how to use the customization point <tt class="computeroutput"><span class="identifier">compare_iterators</span></tt>
+ please see here: use_as_container.
</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/advanced/customize/iterate/container_iterator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/container_iterator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/container_iterator.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Determine the Type of the Iterator of a Container (Karma)</title>
+<title>
+ Determine the Type of the Iterator of a Container (Karma)</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="../iterate.html" title="Extract Attribute Values to Generate Output from a Container (Karma)">
-<link rel="prev" href="../iterate.html" title="Extract Attribute Values to Generate Output from a Container (Karma)">
-<link rel="next" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute">
+<link rel="up" href="../iterate.html" title=" Extract Attribute
+ Values to Generate Output from a Container (Karma)">
+<link rel="previous" href="../iterate.html" title=" Extract Attribute
+ Values to Generate Output from a Container (Karma)">
+<link rel="next" href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -22,65 +26,67 @@
<div class="spirit-nav">
<a accesskey="p" href="../iterate.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../iterate.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="begin_container.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
-<div class="section" title="Determine the Type of the Iterator of a Container (Karma)">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.advanced.customize.iterate.container_iterator"></a><a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.advanced.customize.iterate.container_iterator"></a><a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)">
Determine the Type of the Iterator of a Container (Karma)</a>
-</h5></div></div></div>
+</h5></div></div>
+<div></div>
+</div>
<a name="spirit.advanced.customize.iterate.container_iterator.container_iterator"></a><h6>
-<a name="id943375"></a>
- <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.container_iterator">container_iterator</a>
+<a name="id735987"></a>
+ container_iterator
</h6>
<p>
- The template <code class="computeroutput"><span class="identifier">container_iterator</span></code>
+ The template <tt class="computeroutput"><span class="identifier">container_iterator</span></tt>
is a template meta-function used as an attribute customization point.
It is invoked by the <span class="emphasis"><em>Karma</em></span> repetitive generators
- (such as <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene
- (unary <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, and <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>)
+ (such as List (%), <a href="../../../karma/reference/operator/kleene.html" title=" Kleene Star
+ (*a)">Kleene
+ (unary <tt class="computeroutput"><span class="special">*</span></tt>)</a>, Plus (unary +), and <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>)
in order to determine the type of the iterator to use to iterate over
the items to be exposed as the elements of a container.
</p>
<a name="spirit.advanced.customize.iterate.container_iterator.module_headers"></a><h6>
-<a name="id943443"></a>
- <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.module_headers">Module
+<a name="id736107"></a>
+ <a href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.module_headers">Module
Headers</a>
</h6>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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.iterate.container_iterator.namespace"></a><h6>
-<a name="id943531"></a>
- <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.namespace">Namespace</a>
+<a name="id736237"></a>
+ Namespace
</h6>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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.iterate.container_iterator.synopsis"></a><h6>
-<a name="id943609"></a>
- <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.synopsis">Synopsis</a>
+<a name="id736334"></a>
+ Synopsis
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></span>
<span class="keyword">struct</span> <span class="identifier">container_iterator</span>
@@ -89,8 +95,8 @@
<span class="special">};</span>
</pre>
<a name="spirit.advanced.customize.iterate.container_iterator.template_parameters"></a><h6>
-<a name="id943707"></a>
- <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.template_parameters">Template
+<a name="id736474"></a>
+ <a href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.template_parameters">Template
parameters</a>
</h6>
<div class="informaltable"><table class="table">
@@ -100,79 +106,61 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Container</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Container</span></code>
+<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>
for which the iterator type has to be returned
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">container_iterator</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ certain specializations of <tt class="computeroutput"><span class="identifier">container_iterator</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.iterate.container_iterator.notation"></a><h6>
-<a name="id943873"></a>
- <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.notation">Notation</a>
+<a name="id736698"></a>
+ Notation
</h6>
<div class="variablelist">
<p class="title"><b></b></p>
<dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">C</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">C</span></tt></span></dt>
<dd><p>
A container type the iterator type needs to be evaluated for.
</p></dd>
</dl>
</div>
<a name="spirit.advanced.customize.iterate.container_iterator.expression_semantics"></a><h6>
-<a name="id943912"></a>
- <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.expression_semantics">Expression
+<a name="id736753"></a>
+ <a href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.expression_semantics">Expression
Semantics</a>
</h6>
<div class="informaltable"><table class="table">
@@ -181,29 +169,21 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody><tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">container_iterator</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">container_iterator</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></tt>
+ </p></td>
+<td><p>
Result of the metafunction that evaluates the type to be used
- as the iterator for accessing all elements of a container, <code class="computeroutput"><span class="identifier">C</span></code>.
- </p>
- </td>
+ as the iterator for accessing all elements of a container, <tt class="computeroutput"><span class="identifier">C</span></tt>.
+ </p></td>
</tr></tbody>
</table></div>
<p>
@@ -211,32 +191,35 @@
iterator. But it does not have to expose the standardized interface.
If this customization point is implemented for a certain container type,
all related customization points need to be implemented as well (see
- <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.related_attribute_customization_points">Related
+ <a href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.related_attribute_customization_points">Related
Attribute Customization Points</a> below). This encapsulates the specific
iterator interface required for a given type. The minimal requirements
for a type to be exposed as an iterator in this context are:
</p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
- it needs to be comparable for equality (see <a class="link" href="compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality"><code class="computeroutput"><span class="identifier">compare_iterators</span></code></a>),
+<div class="itemizedlist"><ul type="disc">
+<li>
+ it needs to be comparable for equality (see <a href="compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality"><tt class="computeroutput"><span class="identifier">compare_iterators</span></tt></a>),
</li>
-<li class="listitem">
- it needs to be incrementable (see <a class="link" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">next_iterator</span></code></a>),
+<li>
+ it needs to be incrementable (see <a href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">next_iterator</span></tt></a>),
</li>
-<li class="listitem">
- it needs to be dereferencible (see <a class="link" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">deref_iterator</span></code></a>).
+<li>
+ it needs to be dereferencible (see <a href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">deref_iterator</span></tt></a>).
</li>
</ul></div>
<a name="spirit.advanced.customize.iterate.container_iterator.predefined_specializations"></a><h6>
-<a name="id944058"></a>
- <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.predefined_specializations">Predefined
+<a name="id736975"></a>
+ <a href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.predefined_specializations">Predefined
Specializations</a>
</h6>
<p>
<a href="http://spirit.sourceforge.net" target="_top">Spirit</a> predefines
specializations of this customization point for several types. The following
table lists those types together with the types returned by the embedded
- typedef <code class="computeroutput"><span class="identifier">type</span></code>:
+ typedef <tt class="computeroutput"><span class="identifier">type</span></tt>:
</p>
<div class="informaltable"><table class="table">
<colgroup>
@@ -244,75 +227,59 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Value
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">C</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">C</span><span class="special">::</span><span class="identifier">iterator</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">C</span> <span class="keyword">const</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">C</span><span class="special">::</span><span class="identifier">const_iterator</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">unused_type</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">unused_type</span></code><code class="computeroutput">
- <span class="keyword">const</span><span class="special">*</span></code>.
- </p>
- </td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">C</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">C</span><span class="special">::</span><span class="identifier">iterator</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">C</span> <span class="keyword">const</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">C</span><span class="special">::</span><span class="identifier">const_iterator</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><tt class="computeroutput">
+ <span class="keyword">const</span><span class="special">*</span></tt>.
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.container_iterator.when_to_implement"></a><h6>
-<a name="id944245"></a>
- <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.when_to_implement">When
+<a name="id737230"></a>
+ <a href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.when_to_implement">When
to implement</a>
</h6>
<p>
- The customization point <code class="computeroutput"><span class="identifier">container_iterator</span></code>
+ The customization point <tt class="computeroutput"><span class="identifier">container_iterator</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 generators (<span class="emphasis"><em>Spirit.Karma</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 generator normally exposing a STL container, <code class="computeroutput"><span class="identifier">C</span></code> and if the type does not expose the
- interface of a STL container (i.e. <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code>
- would normally return <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>).
+ as an attribute to a generator normally exposing a STL container, <tt class="computeroutput"><span class="identifier">C</span></tt> 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"><</span><span class="identifier">C</span><span class="special">>::</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>).
</p>
<a name="spirit.advanced.customize.iterate.container_iterator.related_attribute_customization_points"></a><h6>
-<a name="id944738"></a>
- <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.related_attribute_customization_points">Related
+<a name="id737350"></a>
+ <a href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.related_attribute_customization_points">Related
Attribute Customization Points</a>
</h6>
<p>
@@ -325,120 +292,107 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Name
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
When to implement
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <a class="link" href="../is_container.html" title="Determine if a Type Should be Treated as a Container (Qi and Karma)"><code class="computeroutput"><span class="identifier">is_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../is_container.html" title=" Determine
+ if a Type Should be Treated as a Container (Qi and Karma)"><tt class="computeroutput"><span class="identifier">is_container</span></tt></a>
+ </p></td>
+<td><p>
Needs to be implemented whenever a type is to be used as a container
attribute in <span class="emphasis"><em>Karma</em></span>.
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute"><code class="computeroutput"><span class="identifier">begin_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute"><code class="computeroutput"><span class="identifier">end_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">deref_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">next_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality"><code class="computeroutput"><span class="identifier">compare_iterators</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
+<td><p>
+ <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute"><tt class="computeroutput"><span class="identifier">begin_container</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute"><tt class="computeroutput"><span class="identifier">end_container</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">deref_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">next_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality"><tt class="computeroutput"><span class="identifier">compare_iterators</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.container_iterator.example"></a><h6>
-<a name="id945225"></a>
- <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.example">Example</a>
+<a name="id738087"></a>
+ Example
</h6>
<p>
Here are the header files needed to make the example code below compile:
@@ -486,12 +440,19 @@
<p>
</p>
<p>
- as a direct container attribute to the <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a> generator. In
+ as a direct container attribute to the <a href="../../../karma/reference/operator/list.html" title=" Lists (a % b)">List
+ (<tt class="computeroutput"><span class="special">%</span></tt>)</a> generator. In
order to make this data structure compatible we need to specialize a
- couple of attribute customization points: <a class="link" href="../is_container.html" title="Determine if a Type Should be Treated as a Container (Qi and Karma)"><code class="computeroutput"><span class="identifier">is_container</span></code></a>, <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>, <a class="link" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute"><code class="computeroutput"><span class="identifier">begin_container</span></code></a>, and <a class="link" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute"><code class="computeroutput"><span class="identifier">end_container</span></code></a>. As you can see
- the specializations simply expose the embedded <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span></code> as the container to use. We don't
- need to specialize the customization points related to iterators (<a class="link" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">deref_iterator</span></code></a>, <a class="link" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">next_iterator</span></code></a>, and <a class="link" href="compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality"><code class="computeroutput"><span class="identifier">compare_iterators</span></code></a>) as we expose
+ couple of attribute customization points: <a href="../is_container.html" title=" Determine
+ if a Type Should be Treated as a Container (Qi and Karma)"><tt class="computeroutput"><span class="identifier">is_container</span></tt></a>, <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>, <a href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute"><tt class="computeroutput"><span class="identifier">begin_container</span></tt></a>, and <a href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute"><tt class="computeroutput"><span class="identifier">end_container</span></tt></a>. As you can see
+ the specializations simply expose the embedded <tt class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span></tt> as the container to use. We don't
+ need to specialize the customization points related to iterators (<a href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">deref_iterator</span></tt></a>, <a href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">next_iterator</span></tt></a>, and <a href="compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality"><tt class="computeroutput"><span class="identifier">compare_iterators</span></tt></a>) as we expose
a standard iterator and the default implementation of these customizations
handles standard iterators out of the box.
</p>
@@ -560,8 +521,8 @@
</p>
<p>
The last code snippet shows an example using an instance of the data
- structure <code class="computeroutput"><span class="identifier">client</span><span class="special">::</span><span class="identifier">embedded_container</span></code> to generate output
- from a <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List (<code class="computeroutput"><span class="special">%</span></code>)</a> generator:
+ structure <tt class="computeroutput"><span class="identifier">client</span><span class="special">::</span><span class="identifier">embedded_container</span></tt> to generate output
+ from a List (%) generator:
</p>
<p>
</p>
@@ -587,9 +548,9 @@
having to modify the output format or the generator itself.
</p>
<p>
- For other examples of how to use the customization point <code class="computeroutput"><span class="identifier">container_iterator</span></code> please see here:
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.example">use_as_container</a>
- and <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.example">counter_example</a>.
+ For other examples of how to use the customization point <tt class="computeroutput"><span class="identifier">container_iterator</span></tt> please see here:
+ use_as_container
+ and counter_example.
</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/advanced/customize/iterate/deref_iterator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/deref_iterator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/deref_iterator.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Dereference the Iterator pointing into a Container Attribute</title>
+<title>
+ Dereference the Iterator pointing into a Container Attribute</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="../iterate.html" title="Extract Attribute Values to Generate Output from a Container (Karma)">
-<link rel="prev" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute">
-<link rel="next" href="compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality">
+<link rel="up" href="../iterate.html" title=" Extract Attribute
+ Values to Generate Output from a Container (Karma)">
+<link rel="previous" href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute">
+<link rel="next" href="compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -22,65 +26,67 @@
<div class="spirit-nav">
<a accesskey="p" href="next_iterator.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../iterate.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="compare_iterators.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
-<div class="section" title="Dereference the Iterator pointing into a Container Attribute">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.advanced.customize.iterate.deref_iterator"></a><a class="link" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.advanced.customize.iterate.deref_iterator"></a><a href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute">
Dereference the Iterator pointing into a Container Attribute</a>
-</h5></div></div></div>
+</h5></div></div>
+<div></div>
+</div>
<a name="spirit.advanced.customize.iterate.deref_iterator.deref_iterator"></a><h6>
-<a name="id956235"></a>
- <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.deref_iterator">deref_iterator</a>
+<a name="id749644"></a>
+ deref_iterator
</h6>
<p>
- The template <code class="computeroutput"><span class="identifier">deref_iterator</span></code>
+ The template <tt class="computeroutput"><span class="identifier">deref_iterator</span></tt>
is a type used as an attribute customization point. It is invoked by
- the <span class="emphasis"><em>Karma</em></span> repetitive generators (such as <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene
- (unary <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, and <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>)
+ the <span class="emphasis"><em>Karma</em></span> repetitive generators (such as <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>, Plus (unary +), and <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>)
in order to dereference an iterator pointing to an element of a container
holding the attributes to generate output from.
</p>
<a name="spirit.advanced.customize.iterate.deref_iterator.module_headers"></a><h6>
-<a name="id956308"></a>
- <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.module_headers">Module
+<a name="id749763"></a>
+ <a href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.module_headers">Module
Headers</a>
</h6>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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.iterate.deref_iterator.namespace"></a><h6>
-<a name="id956398"></a>
- <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.namespace">Namespace</a>
+<a name="id749892"></a>
+ Namespace
</h6>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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.iterate.deref_iterator.synopsis"></a><h6>
-<a name="id959215"></a>
- <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.synopsis">Synopsis</a>
+<a name="id749990"></a>
+ Synopsis
</h6>
<pre class="programlisting"><span class="keyword">template</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">></span>
<span class="keyword">struct</span> <span class="identifier">deref_iterator</span>
@@ -90,8 +96,8 @@
<span class="special">};</span>
</pre>
<a name="spirit.advanced.customize.iterate.deref_iterator.template_parameters"></a><h6>
-<a name="id959347"></a>
- <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.template_parameters">Template
+<a name="id750174"></a>
+ <a href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.template_parameters">Template
parameters</a>
</h6>
<div class="informaltable"><table class="table">
@@ -101,89 +107,72 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Iterator</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Iterator</span></code>
+<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>
of the iterator to dereference. This is the same as the type
- returned by the customization point <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>.
- </p>
- </td>
-<td>
- <p>
+ returned by the customization point <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>.
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">deref_iterator</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ certain specializations of <tt class="computeroutput"><span class="identifier">deref_iterator</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.iterate.deref_iterator.notation"></a><h6>
-<a name="id959522"></a>
- <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.notation">Notation</a>
+<a name="id750419"></a>
+ Notation
</h6>
<div class="variablelist">
<p class="title"><b></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>
An iterator type.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">it</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">it</span></tt></span></dt>
<dd><p>
- An instance of an iterator, <code class="computeroutput"><span class="identifier">Iterator</span></code>.
+ An instance of an iterator, <tt class="computeroutput"><span class="identifier">Iterator</span></tt>.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">C</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">C</span></tt></span></dt>
<dd><p>
- A container type a iterator type, <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ A container type a iterator type, <tt class="computeroutput"><span class="identifier">Iterator</span></tt>
belongs to.
</p></dd>
</dl>
</div>
<a name="spirit.advanced.customize.iterate.deref_iterator.expression_semantics"></a><h6>
-<a name="id959612"></a>
- <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.expression_semantics">Expression
+<a name="id750543"></a>
+ <a href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.expression_semantics">Expression
Semantics</a>
</h6>
<div class="informaltable"><table class="table">
@@ -192,57 +181,45 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">deref_iterator</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">type</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">deref_iterator</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">type</span></tt>
+ </p></td>
+<td><p>
Metafunction result evaluating to the type returned by dereferencing
the iterator.
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">deref_iterator</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">it</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">deref_iterator</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">it</span><span class="special">)</span></tt>
+ </p></td>
+<td><p>
Return the element in the container the itertor is referring
to. The type of the returned value is the same as returned by
- the metafunction result <code class="computeroutput"><span class="identifier">type</span></code>.
- </p>
- </td>
+ the metafunction result <tt class="computeroutput"><span class="identifier">type</span></tt>.
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.deref_iterator.predefined_specializations"></a><h6>
-<a name="id959753"></a>
- <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.predefined_specializations">Predefined
+<a name="id750739"></a>
+ <a href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.predefined_specializations">Predefined
Specializations</a>
</h6>
<p>
<a href="http://spirit.sourceforge.net" target="_top">Spirit</a> predefines
specializations of this customization point for several types. The following
table lists those types together with the types returned by the embedded
- typedef <code class="computeroutput"><span class="identifier">type</span></code>:
+ typedef <tt class="computeroutput"><span class="identifier">type</span></tt>:
</p>
<div class="informaltable"><table class="table">
<colgroup>
@@ -250,68 +227,56 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Value
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Iterator</span></code>
- </p>
- </td>
-<td>
- <p>
- The metafunction result <code class="computeroutput"><span class="identifier">type</span></code>
- evaluates to <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">reference</span></code>
- and the function <code class="computeroutput"><span class="identifier">call</span><span class="special">()</span></code> returns <code class="computeroutput"><span class="special">*</span><span class="identifier">it</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">unused_type</span></code><code class="computeroutput">
- <span class="keyword">const</span><span class="special">*</span></code>
- </p>
- </td>
-<td>
- <p>
- The metafunction result <code class="computeroutput"><span class="identifier">type</span></code>
- evaluates to <code class="computeroutput"><span class="identifier">unused_type</span></code>
- and the function <code class="computeroutput"><span class="identifier">call</span><span class="special">()</span></code> returns <code class="computeroutput"><span class="identifier">unused</span></code>.
- </p>
- </td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Iterator</span></tt>
+ </p></td>
+<td><p>
+ The metafunction result <tt class="computeroutput"><span class="identifier">type</span></tt>
+ evaluates to <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">detail</span><span class="special">::</span><span class="identifier">iterator_traits</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">reference</span></tt>
+ and the function <tt class="computeroutput"><span class="identifier">call</span><span class="special">()</span></tt> returns <tt class="computeroutput"><span class="special">*</span><span class="identifier">it</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt><tt class="computeroutput">
+ <span class="keyword">const</span><span class="special">*</span></tt>
+ </p></td>
+<td><p>
+ The metafunction result <tt class="computeroutput"><span class="identifier">type</span></tt>
+ evaluates to <tt class="computeroutput"><span class="identifier">unused_type</span></tt>
+ and the function <tt class="computeroutput"><span class="identifier">call</span><span class="special">()</span></tt> returns <tt class="computeroutput"><span class="identifier">unused</span></tt>.
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.deref_iterator.when_to_implement"></a><h6>
-<a name="id959973"></a>
- <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.when_to_implement">When
+<a name="id751055"></a>
+ <a href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.when_to_implement">When
to implement</a>
</h6>
<p>
- The customization point <code class="computeroutput"><span class="identifier">deref_iterator</span></code>
+ The customization point <tt class="computeroutput"><span class="identifier">deref_iterator</span></tt>
needs to be implemented for a specific iterator type whenever the container
this iterator belongs to is to be used as an attribute in place of a
STL container. It is applicable for generators (<span class="emphasis"><em>Spirit.Karma</em></span>)
only. As a rule of thumb: it has to be implemented whenever a certain
iterator type belongs to a container which is to be passed as an attribute
- to a generator normally exposing a STL container, <code class="computeroutput"><span class="identifier">C</span></code>
+ to a generator normally exposing a STL container, <tt class="computeroutput"><span class="identifier">C</span></tt>
and if the container type does not expose the interface of a STL container
- (i.e. <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code> would normally return <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>).
+ (i.e. <tt class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</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>).
</p>
<a name="spirit.advanced.customize.iterate.deref_iterator.related_attribute_customization_points"></a><h6>
-<a name="id960044"></a>
- <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.related_attribute_customization_points">Related
+<a name="id751179"></a>
+ <a href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.related_attribute_customization_points">Related
Attribute Customization Points</a>
</h6>
<p>
@@ -324,120 +289,107 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Name
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
When to implement
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <a class="link" href="../is_container.html" title="Determine if a Type Should be Treated as a Container (Qi and Karma)"><code class="computeroutput"><span class="identifier">is_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../is_container.html" title=" Determine
+ if a Type Should be Treated as a Container (Qi and Karma)"><tt class="computeroutput"><span class="identifier">is_container</span></tt></a>
+ </p></td>
+<td><p>
Needs to be implemented whenever a type is to be used as a container
attribute in <span class="emphasis"><em>Karma</em></span>.
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute"><code class="computeroutput"><span class="identifier">begin_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute"><code class="computeroutput"><span class="identifier">end_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">deref_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">next_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality"><code class="computeroutput"><span class="identifier">compare_iterators</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
+<td><p>
+ <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute"><tt class="computeroutput"><span class="identifier">begin_container</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute"><tt class="computeroutput"><span class="identifier">end_container</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">deref_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">next_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality"><tt class="computeroutput"><span class="identifier">compare_iterators</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.deref_iterator.example"></a><h6>
-<a name="id960531"></a>
- <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.example">Example</a>
+<a name="id751919"></a>
+ Example
</h6>
<p>
Here are the header files needed to make the example code below compile:
@@ -488,8 +440,8 @@
<p>
</p>
<p>
- as a direct attribute to the <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a> generator. This
+ as a direct attribute to the <a href="../../../karma/reference/operator/list.html" title=" Lists (a % b)">List
+ (<tt class="computeroutput"><span class="special">%</span></tt>)</a> generator. This
type does not expose any of the interfaces of an STL container. It does
not even expose the usual semantics of a container. The presented customization
points build a counter instance which is incrememnted each time it is
@@ -498,9 +450,14 @@
</p>
<p>
In order to make this data structure compatible we need to specialize
- a couple of attribute customization points: <a class="link" href="../is_container.html" title="Determine if a Type Should be Treated as a Container (Qi and Karma)"><code class="computeroutput"><span class="identifier">is_container</span></code></a>, <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>, <a class="link" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute"><code class="computeroutput"><span class="identifier">begin_container</span></code></a>, and <a class="link" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute"><code class="computeroutput"><span class="identifier">end_container</span></code></a>. In addition,
+ a couple of attribute customization points: <a href="../is_container.html" title=" Determine
+ if a Type Should be Treated as a Container (Qi and Karma)"><tt class="computeroutput"><span class="identifier">is_container</span></tt></a>, <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>, <a href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute"><tt class="computeroutput"><span class="identifier">begin_container</span></tt></a>, and <a href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute"><tt class="computeroutput"><span class="identifier">end_container</span></tt></a>. In addition,
we specialize one of the iterator related customization points as well:
- <a class="link" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">deref_iterator</span></code></a>.
+ <a href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">deref_iterator</span></tt></a>.
</p>
<p>
</p>
@@ -593,8 +550,8 @@
</p>
<p>
The last code snippet shows an example using an instance of the data
- structure <code class="computeroutput"><span class="identifier">client</span><span class="special">::</span><span class="identifier">counter</span></code> to generate output from a
- <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List (<code class="computeroutput"><span class="special">%</span></code>)</a> generator:
+ structure <tt class="computeroutput"><span class="identifier">client</span><span class="special">::</span><span class="identifier">counter</span></tt> to generate output from a
+ List (%) generator:
</p>
<p>
</p>
@@ -615,7 +572,7 @@
having to modify the output format or the generator itself.
</p>
<p>
- For other examples of how to use the customization point <code class="computeroutput"><span class="identifier">deref_iterator</span></code> please see here: <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.example">use_as_container</a>.
+ For other examples of how to use the customization point <tt class="computeroutput"><span class="identifier">deref_iterator</span></tt> please see here: use_as_container.
</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/advanced/customize/iterate/end_container.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/end_container.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/end_container.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Get the Iterator pointing to the End of a Container Attribute</title>
+<title>
+ Get the Iterator pointing to the End of a Container Attribute</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="../iterate.html" title="Extract Attribute Values to Generate Output from a Container (Karma)">
-<link rel="prev" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute">
-<link rel="next" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute">
+<link rel="up" href="../iterate.html" title=" Extract Attribute
+ Values to Generate Output from a Container (Karma)">
+<link rel="previous" href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute">
+<link rel="next" href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -22,65 +26,67 @@
<div class="spirit-nav">
<a accesskey="p" href="begin_container.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../iterate.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="next_iterator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
-<div class="section" title="Get the Iterator pointing to the End of a Container Attribute">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.advanced.customize.iterate.end_container"></a><a class="link" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.advanced.customize.iterate.end_container"></a><a href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute">
Get the Iterator pointing to the End of a Container Attribute</a>
-</h5></div></div></div>
+</h5></div></div>
+<div></div>
+</div>
<a name="spirit.advanced.customize.iterate.end_container.end_container"></a><h6>
-<a name="id949716"></a>
- <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.end_container">end_container</a>
+<a name="id742219"></a>
+ end_container
</h6>
<p>
- The template <code class="computeroutput"><span class="identifier">end_container</span></code>
+ The template <tt class="computeroutput"><span class="identifier">end_container</span></tt>
is a type used as an attribute customization point. It is invoked by
- the <span class="emphasis"><em>Karma</em></span> repetitive generators (such as <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene
- (unary <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, and <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>)
+ the <span class="emphasis"><em>Karma</em></span> repetitive generators (such as <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>, Plus (unary +), and <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>)
in order to get an iterator pointing to the end of the container holding
the attributes to generate output from.
</p>
<a name="spirit.advanced.customize.iterate.end_container.module_headers"></a><h6>
-<a name="id949789"></a>
- <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.module_headers">Module
+<a name="id742338"></a>
+ <a href="end_container.html#spirit.advanced.customize.iterate.end_container.module_headers">Module
Headers</a>
</h6>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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.iterate.end_container.namespace"></a><h6>
-<a name="id949879"></a>
- <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.namespace">Namespace</a>
+<a name="id742467"></a>
+ Namespace
</h6>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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.iterate.end_container.synopsis"></a><h6>
-<a name="id949957"></a>
- <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.synopsis">Synopsis</a>
+<a name="id742565"></a>
+ Synopsis
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></span>
<span class="keyword">struct</span> <span class="identifier">end_container</span>
@@ -90,8 +96,8 @@
<span class="special">};</span>
</pre>
<a name="spirit.advanced.customize.iterate.end_container.template_parameters"></a><h6>
-<a name="id950083"></a>
- <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.template_parameters">Template
+<a name="id742742"></a>
+ <a href="end_container.html#spirit.advanced.customize.iterate.end_container.template_parameters">Template
parameters</a>
</h6>
<div class="informaltable"><table class="table">
@@ -101,84 +107,66 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Container</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Container</span></code>
+<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>
for which the iterator pointing to the first element has to be
returned
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">end_container</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ certain specializations of <tt class="computeroutput"><span class="identifier">end_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.iterate.end_container.notation"></a><h6>
-<a name="id950248"></a>
- <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.notation">Notation</a>
+<a name="id742968"></a>
+ Notation
</h6>
<div class="variablelist">
<p class="title"><b></b></p>
<dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">C</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">C</span></tt></span></dt>
<dd><p>
A container type the end iterator needs to be returned for.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">c</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">c</span></tt></span></dt>
<dd><p>
- An instance of a container, <code class="computeroutput"><span class="identifier">C</span></code>.
+ An instance of a container, <tt class="computeroutput"><span class="identifier">C</span></tt>.
</p></dd>
</dl>
</div>
<a name="spirit.advanced.customize.iterate.end_container.expression_semantics"></a><h6>
-<a name="id950313"></a>
- <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.expression_semantics">Expression
+<a name="id743056"></a>
+ <a href="end_container.html#spirit.advanced.customize.iterate.end_container.expression_semantics">Expression
Semantics</a>
</h6>
<div class="informaltable"><table class="table">
@@ -187,44 +175,37 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody><tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">end_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">end_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></tt>
+ </p></td>
+<td><p>
Return the iterator usable to compare a different iterator with
in order to detect whether the other iterator reached the end
- of the given container, <code class="computeroutput"><span class="identifier">c</span></code>.
+ of the given container, <tt class="computeroutput"><span class="identifier">c</span></tt>.
The type of the returned iterator is expected to be the same
- as the type returned by the customization point <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>.
- </p>
- </td>
+ as the type returned by the customization point <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>.
+ </p></td>
</tr></tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.end_container.predefined_specializations"></a><h6>
-<a name="id950426"></a>
- <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.predefined_specializations">Predefined
+<a name="id743220"></a>
+ <a href="end_container.html#spirit.advanced.customize.iterate.end_container.predefined_specializations">Predefined
Specializations</a>
</h6>
<p>
<a href="http://spirit.sourceforge.net" target="_top">Spirit</a> predefines
specializations of this customization point for several types. The following
table lists those types together with the types returned by the embedded
- typedef <code class="computeroutput"><span class="identifier">type</span></code>:
+ typedef <tt class="computeroutput"><span class="identifier">type</span></tt>:
</p>
<div class="informaltable"><table class="table">
<colgroup>
@@ -232,74 +213,58 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Value
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">C</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">C</span> <span class="keyword">const</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">c</span><span class="special">.</span><span class="identifier">end</span><span class="special">()</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">unused_type</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="special">&</span><span class="identifier">unused</span></code>.
- </p>
- </td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">C</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">c</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">C</span> <span class="keyword">const</span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">c</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>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="special">&</span><span class="identifier">unused</span></tt>.
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.end_container.when_to_implement"></a><h6>
-<a name="id950613"></a>
- <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.when_to_implement">When
+<a name="id743472"></a>
+ <a href="end_container.html#spirit.advanced.customize.iterate.end_container.when_to_implement">When
to implement</a>
</h6>
<p>
- The customization point <code class="computeroutput"><span class="identifier">end_container</span></code>
+ The customization point <tt class="computeroutput"><span class="identifier">end_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 generators (<span class="emphasis"><em>Spirit.Karma</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 generator normally exposing a STL container, <code class="computeroutput"><span class="identifier">C</span></code> and if the type does not expose the
- interface of a STL container (i.e. <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code>
- would normally return <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>).
+ as an attribute to a generator normally exposing a STL container, <tt class="computeroutput"><span class="identifier">C</span></tt> 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"><</span><span class="identifier">C</span><span class="special">>::</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>).
</p>
<a name="spirit.advanced.customize.iterate.end_container.related_attribute_customization_points"></a><h6>
-<a name="id950684"></a>
- <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.related_attribute_customization_points">Related
+<a name="id743594"></a>
+ <a href="end_container.html#spirit.advanced.customize.iterate.end_container.related_attribute_customization_points">Related
Attribute Customization Points</a>
</h6>
<p>
@@ -312,126 +277,113 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Name
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
When to implement
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <a class="link" href="../is_container.html" title="Determine if a Type Should be Treated as a Container (Qi and Karma)"><code class="computeroutput"><span class="identifier">is_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../is_container.html" title=" Determine
+ if a Type Should be Treated as a Container (Qi and Karma)"><tt class="computeroutput"><span class="identifier">is_container</span></tt></a>
+ </p></td>
+<td><p>
Needs to be implemented whenever a type is to be used as a container
attribute in <span class="emphasis"><em>Karma</em></span>.
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute"><code class="computeroutput"><span class="identifier">begin_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute"><code class="computeroutput"><span class="identifier">end_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">deref_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">next_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality"><code class="computeroutput"><span class="identifier">compare_iterators</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
+<td><p>
+ <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute"><tt class="computeroutput"><span class="identifier">begin_container</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute"><tt class="computeroutput"><span class="identifier">end_container</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">deref_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">next_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality"><tt class="computeroutput"><span class="identifier">compare_iterators</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.end_container.example"></a><h6>
-<a name="id951380"></a>
- <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.example">Example</a>
+<a name="id744332"></a>
+ Example
</h6>
<p>
- For examples of how to use the customization point <code class="computeroutput"><span class="identifier">end_container</span></code>
- please see here: <a class="link" href="container_iterator.html#spirit.advanced.customize.iterate.container_iterator.example">embedded_container_example</a>,
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.example">use_as_container</a>,
- and <a class="link" href="deref_iterator.html#spirit.advanced.customize.iterate.deref_iterator.example">counter_example</a>.
+ For examples of how to use the customization point <tt class="computeroutput"><span class="identifier">end_container</span></tt>
+ please see here: embedded_container_example,
+ use_as_container,
+ and counter_example.
</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/advanced/customize/iterate/next_iterator.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/next_iterator.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/next_iterator.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Increment the Iterator pointing into a Container Attribute</title>
+<title>
+ Increment the Iterator pointing into a Container Attribute</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="../iterate.html" title="Extract Attribute Values to Generate Output from a Container (Karma)">
-<link rel="prev" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute">
-<link rel="next" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute">
+<link rel="up" href="../iterate.html" title=" Extract Attribute
+ Values to Generate Output from a Container (Karma)">
+<link rel="previous" href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute">
+<link rel="next" href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<table cellpadding="2" width="100%"><tr>
@@ -22,65 +26,67 @@
<div class="spirit-nav">
<a accesskey="p" href="end_container.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../iterate.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="deref_iterator.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
</div>
-<div class="section" title="Increment the Iterator pointing into a Container Attribute">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.advanced.customize.iterate.next_iterator"></a><a class="link" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute">
+<div class="section" lang="en">
+<div class="titlepage">
+<div><div><h5 class="title">
+<a name="spirit.advanced.customize.iterate.next_iterator"></a><a href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute">
Increment the Iterator pointing into a Container Attribute</a>
-</h5></div></div></div>
+</h5></div></div>
+<div></div>
+</div>
<a name="spirit.advanced.customize.iterate.next_iterator.next_iterator"></a><h6>
-<a name="id951437"></a>
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.next_iterator">next_iterator</a>
+<a name="id744422"></a>
+ next_iterator
</h6>
<p>
- The template <code class="computeroutput"><span class="identifier">next_iterator</span></code>
+ The template <tt class="computeroutput"><span class="identifier">next_iterator</span></tt>
is a type used as an attribute customization point. It is invoked by
- the <span class="emphasis"><em>Karma</em></span> repetitive generators (such as <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene
- (unary <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, and <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>)
+ the <span class="emphasis"><em>Karma</em></span> repetitive generators (such as <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>, Plus (unary +), and <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>)
in order to get an iterator pointing to the next element of a container
holding the attributes to generate output from.
</p>
<a name="spirit.advanced.customize.iterate.next_iterator.module_headers"></a><h6>
-<a name="id951510"></a>
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.module_headers">Module
+<a name="id744542"></a>
+ <a href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.module_headers">Module
Headers</a>
</h6>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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.iterate.next_iterator.namespace"></a><h6>
-<a name="id951600"></a>
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.namespace">Namespace</a>
+<a name="id744671"></a>
+ Namespace
</h6>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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.iterate.next_iterator.synopsis"></a><h6>
-<a name="id951678"></a>
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.synopsis">Synopsis</a>
+<a name="id744768"></a>
+ Synopsis
</h6>
<pre class="programlisting"><span class="keyword">template</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">></span>
<span class="keyword">struct</span> <span class="identifier">next_iterator</span>
@@ -89,8 +95,8 @@
<span class="special">};</span>
</pre>
<a name="spirit.advanced.customize.iterate.next_iterator.template_parameters"></a><h6>
-<a name="id951785"></a>
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.template_parameters">Template
+<a name="id744918"></a>
+ <a href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.template_parameters">Template
parameters</a>
</h6>
<div class="informaltable"><table class="table">
@@ -100,89 +106,72 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Iterator</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Iterator</span></code>
+<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>
of the iterator to increment. This is the same as the type returned
- by the customization point <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>.
- </p>
- </td>
-<td>
- <p>
+ by the customization point <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>.
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">next_iterator</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ certain specializations of <tt class="computeroutput"><span class="identifier">next_iterator</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.iterate.next_iterator.notation"></a><h6>
-<a name="id951960"></a>
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.notation">Notation</a>
+<a name="id745162"></a>
+ Notation
</h6>
<div class="variablelist">
<p class="title"><b></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>
An iterator type.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">it</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">it</span></tt></span></dt>
<dd><p>
- An instance of an iterator, <code class="computeroutput"><span class="identifier">Iterator</span></code>.
+ An instance of an iterator, <tt class="computeroutput"><span class="identifier">Iterator</span></tt>.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">C</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">C</span></tt></span></dt>
<dd><p>
- A container type a iterator type, <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ A container type a iterator type, <tt class="computeroutput"><span class="identifier">Iterator</span></tt>
belongs to.
</p></dd>
</dl>
</div>
<a name="spirit.advanced.customize.iterate.next_iterator.expression_semantics"></a><h6>
-<a name="id952050"></a>
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.expression_semantics">Expression
+<a name="id745286"></a>
+ <a href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.expression_semantics">Expression
Semantics</a>
</h6>
<div class="informaltable"><table class="table">
@@ -191,41 +180,33 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody><tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">next_iterator</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">it</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">next_iterator</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">it</span><span class="special">)</span></tt>
+ </p></td>
+<td><p>
Increment the iterator pointing so that it is pointing to the
next element.
- </p>
- </td>
+ </p></td>
</tr></tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.next_iterator.predefined_specializations"></a><h6>
-<a name="id952146"></a>
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.predefined_specializations">Predefined
+<a name="id745416"></a>
+ <a href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.predefined_specializations">Predefined
Specializations</a>
</h6>
<p>
<a href="http://spirit.sourceforge.net" target="_top">Spirit</a> predefines
specializations of this customization point for several types. The following
table lists those types together with the types returned by the embedded
- typedef <code class="computeroutput"><span class="identifier">type</span></code>:
+ typedef <tt class="computeroutput"><span class="identifier">type</span></tt>:
</p>
<div class="informaltable"><table class="table">
<colgroup>
@@ -233,64 +214,52 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Value
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Iterator</span></code>
- </p>
- </td>
-<td>
- <p>
- Executes <code class="computeroutput"><span class="special">++</span><span class="identifier">it</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">unused_type</span></code><code class="computeroutput">
- <span class="keyword">const</span><span class="special">*</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Iterator</span></tt>
+ </p></td>
+<td><p>
+ Executes <tt class="computeroutput"><span class="special">++</span><span class="identifier">it</span></tt>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt><tt class="computeroutput">
+ <span class="keyword">const</span><span class="special">*</span></tt>
+ </p></td>
+<td><p>
Does nothing.
- </p>
- </td>
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.next_iterator.when_to_implement"></a><h6>
-<a name="id952279"></a>
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.when_to_implement">When
+<a name="id745597"></a>
+ <a href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.when_to_implement">When
to implement</a>
</h6>
<p>
- The customization point <code class="computeroutput"><span class="identifier">next_iterator</span></code>
+ The customization point <tt class="computeroutput"><span class="identifier">next_iterator</span></tt>
needs to be implemented for a specific iterator type whenever the container
this iterator belongs to is to be used as an attribute in place of a
STL container. It is applicable for generators (<span class="emphasis"><em>Spirit.Karma</em></span>)
only. As a rule of thumb: it has to be implemented whenever a certain
iterator type belongs to a container which is to be passed as an attribute
- to a generator normally exposing a STL container, <code class="computeroutput"><span class="identifier">C</span></code>
+ to a generator normally exposing a STL container, <tt class="computeroutput"><span class="identifier">C</span></tt>
and if the container type does not expose the interface of a STL container
- (i.e. <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code> would normally return <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span></code>).
+ (i.e. <tt class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</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>).
</p>
<a name="spirit.advanced.customize.iterate.next_iterator.related_attribute_customization_points"></a><h6>
-<a name="id952350"></a>
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.related_attribute_customization_points">Related
+<a name="id745718"></a>
+ <a href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.related_attribute_customization_points">Related
Attribute Customization Points</a>
</h6>
<p>
@@ -303,120 +272,107 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Name
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
When to implement
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <a class="link" href="../is_container.html" title="Determine if a Type Should be Treated as a Container (Qi and Karma)"><code class="computeroutput"><span class="identifier">is_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <a href="../is_container.html" title=" Determine
+ if a Type Should be Treated as a Container (Qi and Karma)"><tt class="computeroutput"><span class="identifier">is_container</span></tt></a>
+ </p></td>
+<td><p>
Needs to be implemented whenever a type is to be used as a container
attribute in <span class="emphasis"><em>Karma</em></span>.
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute"><code class="computeroutput"><span class="identifier">begin_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute"><code class="computeroutput"><span class="identifier">end_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">deref_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">next_iterator</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <a class="link" href="compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality"><code class="computeroutput"><span class="identifier">compare_iterators</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Karma: <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/kleene.html" title="Kleene Star (*a)">Kleene (unary
- <code class="computeroutput"><span class="special">*</span></code>)</a>, <a class="link" href="../../../karma/reference/operator/plus.html" title="Plus (+a)">Plus (unary <code class="computeroutput"><span class="special">+</span></code>)</a>, <a class="link" href="../../../karma/reference/directive/repeat.html" title="Repetition Directive (repeat[])">Repeat</a>.
- </p>
- </td>
+<td><p>
+ <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute"><tt class="computeroutput"><span class="identifier">begin_container</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute"><tt class="computeroutput"><span class="identifier">end_container</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">deref_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">next_iterator</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
+</tr>
+<tr>
+<td><p>
+ <a href="compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality"><tt class="computeroutput"><span class="identifier">compare_iterators</span></tt></a>
+ </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>, Plus (unary +), <a href="../../../karma/reference/directive/repeat.html" title=" Repetition
+ Directive (repeat[])">Repeat</a>.
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.iterate.next_iterator.example"></a><h6>
-<a name="id952835"></a>
- <a class="link" href="next_iterator.html#spirit.advanced.customize.iterate.next_iterator.example">Example</a>
+<a name="id746458"></a>
+ Example
</h6>
<p>
Here are the header files needed to make the example code below compile:
@@ -482,8 +438,8 @@
<p>
</p>
<p>
- as a direct attribute to the <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List
- (<code class="computeroutput"><span class="special">%</span></code>)</a> generator. This
+ as a direct attribute to the <a href="../../../karma/reference/operator/list.html" title=" Lists (a % b)">List
+ (<tt class="computeroutput"><span class="special">%</span></tt>)</a> generator. This
type does not expose any of the interfaces of an STL container. It does
not even expose the usual semantics of a container. The purpose of this
artifical example is to demonstrate how the customization points can
@@ -493,9 +449,16 @@
</p>
<p>
In order to make this data structure compatible we need to specialize
- a couple of attribute customization points: <a class="link" href="../is_container.html" title="Determine if a Type Should be Treated as a Container (Qi and Karma)"><code class="computeroutput"><span class="identifier">is_container</span></code></a>, <a class="link" href="container_iterator.html" title="Determine the Type of the Iterator of a Container (Karma)"><code class="computeroutput"><span class="identifier">container_iterator</span></code></a>, <a class="link" href="begin_container.html" title="Get the Iterator pointing to the Begin of a Container Attribute"><code class="computeroutput"><span class="identifier">begin_container</span></code></a>, and <a class="link" href="end_container.html" title="Get the Iterator pointing to the End of a Container Attribute"><code class="computeroutput"><span class="identifier">end_container</span></code></a>. In addition,
+ a couple of attribute customization points: <a href="../is_container.html" title=" Determine
+ if a Type Should be Treated as a Container (Qi and Karma)"><tt class="computeroutput"><span class="identifier">is_container</span></tt></a>, <a href="container_iterator.html" title="
+ Determine the Type of the Iterator of a Container (Karma)"><tt class="computeroutput"><span class="identifier">container_iterator</span></tt></a>, <a href="begin_container.html" title="
+ Get the Iterator pointing to the Begin of a Container Attribute"><tt class="computeroutput"><span class="identifier">begin_container</span></tt></a>, and <a href="end_container.html" title="
+ Get the Iterator pointing to the End of a Container Attribute"><tt class="computeroutput"><span class="identifier">end_container</span></tt></a>. In addition,
we specialize all of the iterator related customization points as well:
- <a class="link" href="deref_iterator.html" title="Dereference the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">deref_iterator</span></code></a>, <a class="link" href="next_iterator.html" title="Increment the Iterator pointing into a Container Attribute"><code class="computeroutput"><span class="identifier">next_iterator</span></code></a>, and <a class="link" href="compare_iterators.html" title="Compare two Iterator pointing into a Container Attribute for Equality"><code class="computeroutput"><span class="identifier">compare_iterators</span></code></a>.
+ <a href="deref_iterator.html" title="
+ Dereference the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">deref_iterator</span></tt></a>, <a href="next_iterator.html" title="
+ Increment the Iterator pointing into a Container Attribute"><tt class="computeroutput"><span class="identifier">next_iterator</span></tt></a>, and <a href="compare_iterators.html" title="
+ Compare two Iterator pointing into a Container Attribute for Equality"><tt class="computeroutput"><span class="identifier">compare_iterators</span></tt></a>.
</p>
<p>
</p>
@@ -610,8 +573,8 @@
</p>
<p>
The last code snippet shows an example using an instance of the data
- structure <code class="computeroutput"><span class="identifier">client</span><span class="special">::</span><span class="identifier">use_as_container</span></code> to generate output
- from a <a class="link" href="../../../karma/reference/operator/list.html" title="Lists (a % b)">List (<code class="computeroutput"><span class="special">%</span></code>)</a> generator:
+ structure <tt class="computeroutput"><span class="identifier">client</span><span class="special">::</span><span class="identifier">use_as_container</span></tt> to generate output
+ from a List (%) generator:
</p>
<p>
</p>
Modified: trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Store Parsed Attribute Values into a Container (Qi)</title>
+<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.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="../customize.html" title="Customization of Spirit's Attribute Handling">
-<link rel="prev" 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)">
+<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>
@@ -22,11 +26,15 @@
<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" title="Store Parsed Attribute Values into a Container (Qi)">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.advanced.customize.store_value"></a><a class="link" href="store_value.html" title="Store Parsed Attribute Values into a Container (Qi)"> Store Parsed
+<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>
+</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>
@@ -35,10 +43,13 @@
</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 (<a class="link" href="../../qi/reference/operator/kleene.html" title="Kleene (*a)">Kleene</a>,
- <a class="link" href="../../qi/reference/operator/plus.html" title="Plus (+a)">Plus</a>, <a class="link" href="../../qi/reference/operator/list.html" title="List (a % b)">List</a>,
- and <a class="link" href="../../qi/reference/directive/repeat.html" title="Repetition (repeat[])">Repeat</a>)
- two attribute customization points have to be specialized: <a class="link" href="store_value/container_value.html" title="Determine the Type to be Stored in a Container (Qi)"><code class="computeroutput"><span class="identifier">container_value</span></code></a> and <a class="link" href="store_value/push_back.html" title="Store a Parsed Attribute Value into a Container (Qi)"><code class="computeroutput"><span class="identifier">push_back_container</span></code></a>. This section
+ 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>
Modified: trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/container_value.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/container_value.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/container_value.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<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>
+<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.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="../store_value.html" title="Store Parsed Attribute Values into a Container (Qi)">
-<link rel="prev" 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)">
+<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>
@@ -22,63 +26,64 @@
<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" title="Determine the Type to be Stored in a Container (Qi)">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.advanced.customize.store_value.container_value"></a><a class="link" href="container_value.html" title="Determine the Type to be Stored in a Container (Qi)">
+<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>
+</h5></div></div>
+<div></div>
+</div>
<a name="spirit.advanced.customize.store_value.container_value.container_value"></a><h6>
-<a name="id935906"></a>
- <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.container_value">container_value</a>
+<a name="id728750"></a>
+ container_value
</h6>
<p>
- The template <code class="computeroutput"><span class="identifier">container_value</span></code>
+ 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 (<a class="link" href="../../../qi/reference/operator/kleene.html" title="Kleene (*a)">Kleene</a>, <a class="link" href="../../../qi/reference/operator/plus.html" title="Plus (+a)">Plus</a>,
- <a class="link" href="../../../qi/reference/operator/list.html" title="List (a % b)">List</a>, and <a class="link" href="../../../qi/reference/directive/repeat.html" title="Repetition (repeat[])">Repeat</a>) to determine
+ 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="id935953"></a>
- <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.module_headers">Module
+<a name="id728834"></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"><</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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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="id936040"></a>
- <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.namespace">Namespace</a>
+<a name="id728964"></a>
+ Namespace
</h6>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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="id936118"></a>
- <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.synopsis">Synopsis</a>
+<a name="id729061"></a>
+ Synopsis
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></span>
<span class="keyword">struct</span> <span class="identifier">container_value</span>
@@ -87,8 +92,8 @@
<span class="special">};</span>
</pre>
<a name="spirit.advanced.customize.store_value.container_value.template_parameters"></a><h6>
-<a name="id936217"></a>
- <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.template_parameters">Template
+<a name="id729199"></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">
@@ -98,84 +103,66 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Container</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Container</span></code>
+<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>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">container_value</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ 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="id936382"></a>
- <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.notation">Notation</a>
+<a name="id729424"></a>
+ Notation
</h6>
<div class="variablelist">
<p class="title"><b></b></p>
<dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">C</span></code></span></dt>
+<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"><code class="computeroutput"><span class="identifier">T1</span></code>,
- <code class="computeroutput"><span class="identifier">T2</span></code>, ...</span></dt>
+<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="id936448"></a>
- <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.expression_semantics">Expression
+<a name="id729515"></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">
@@ -184,34 +171,26 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody><tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">container_value</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">container_value</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</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, <code class="computeroutput"><span class="identifier">C</span></code>.
- </p>
- </td>
+ 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="id936541"></a>
- <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.predefined_specializations">Predefined
+<a name="id729641"></a>
+ <a href="container_value.html#spirit.advanced.customize.store_value.container_value.predefined_specializations">Predefined
Specializations</a>
</h6>
<p>
@@ -226,102 +205,82 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Value
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">C</span></code>
- </p>
- </td>
-<td>
- <p>
- The non-const <code class="computeroutput"><span class="identifier">value_type</span></code>
- of the given container type, <code class="computeroutput"><span class="identifier">C</span></code>.
- </p>
- </td>
+<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>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">C</span><span class="special">></span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">container_value</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></code>
- </p>
- </td>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">C</span><span class="special">></span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">container_value</span><span class="special"><</span><span class="identifier">C</span><span class="special">>::</span><span class="identifier">type</span></tt>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span>
<span class="identifier">T2</span><span class="special">,</span>
- <span class="special">...></span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">container_value</span><span class="special"><</span><span class="identifier">TN</span><span class="special">>::</span><span class="identifier">value</span></code>
- for the first <code class="computeroutput"><span class="identifier">TN</span></code>
- (out of <code class="computeroutput"><span class="identifier">T1</span></code>,
- <code class="computeroutput"><span class="identifier">T2</span></code>, ...) for
- which <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">TN</span><span class="special">>::</span><span class="identifier">type</span></code>
- evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>.
- Otherwise it will return <code class="computeroutput"><span class="identifier">unused_type</span></code>.
- </p>
- </td>
+ <span class="special">...></span></tt>
+ </p></td>
+<td><p>
+ Returns <tt class="computeroutput"><span class="identifier">container_value</span><span class="special"><</span><span class="identifier">TN</span><span class="special">>::</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"><</span><span class="identifier">TN</span><span class="special">>::</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>
- <code class="computeroutput"><span class="identifier">unused_type</span></code>
- </p>
- </td>
-<td>
- <p>
- Returns <code class="computeroutput"><span class="identifier">unused_type</span></code>.
- </p>
- </td>
+<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="id936872"></a>
- <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.when_to_implement">When
+<a name="id730106"></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 <code class="computeroutput"><span class="identifier">is_container</span></code>
+ 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 <code class="computeroutput"><span class="identifier">value_type</span></code>). These
+ 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">--></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"><</span><span class="identifier">A</span><span class="special">></span>
</pre>
<p>
- where <code class="computeroutput"><span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code>
- stands for any meaningful operation on the component <code class="computeroutput"><span class="identifier">a</span></code>.
+ 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="id936988"></a>
- <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.related_attribute_customization_points">Related
+<a name="id730288"></a>
+ <a href="container_value.html#spirit.advanced.customize.store_value.container_value.related_attribute_customization_points">Related
Attribute Customization Points</a>
</h6>
<p>
@@ -334,53 +293,45 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Name
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
When to implement
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <a class="link" href="push_back.html" title="Store a Parsed Attribute Value into a Container (Qi)"><code class="computeroutput"><span class="identifier">push_back_container</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Qi: <a class="link" href="../../../qi/reference/operator/list.html" title="List (a % b)">List</a>,
- <a class="link" href="../../../qi/reference/operator/kleene.html" title="Kleene (*a)">Kleene</a>,
- <a class="link" href="../../../qi/reference/operator/plus.html" title="Plus (+a)">Plus</a>,
- <a class="link" href="../../../qi/reference/directive/repeat.html" title="Repetition (repeat[])">Repeat</a>.
- </p>
- </td>
+<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 class="link" href="../clear_value.html" title="Re-Initialize an Attribute Value before Parsing (Qi)"><code class="computeroutput"><span class="identifier">clear_value</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Qi: <a class="link" href="../../../qi/reference/operator/list.html" title="List (a % b)">List</a>,
- <a class="link" href="../../../qi/reference/operator/kleene.html" title="Kleene (*a)">Kleene</a>,
- <a class="link" href="../../../qi/reference/operator/plus.html" title="Plus (+a)">Plus</a>,
- <a class="link" href="../../../qi/reference/directive/repeat.html" title="Repetition (repeat[])">Repeat</a>.
- </p>
- </td>
+<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="id937133"></a>
- <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.example">Example</a>
+<a name="id730504"></a>
+ Example
</h6>
<p>
TBD
Modified: trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/push_back.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/push_back.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/push_back.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<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>
+<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.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="../store_value.html" title="Store Parsed Attribute Values into a Container (Qi)">
-<link rel="prev" 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)">
+<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>
@@ -22,63 +26,64 @@
<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" title="Store a Parsed Attribute Value into a Container (Qi)">
-<div class="titlepage"><div><div><h5 class="title">
-<a name="spirit.advanced.customize.store_value.push_back"></a><a class="link" href="push_back.html" title="Store a Parsed Attribute Value into a Container (Qi)">
+<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>
+</h5></div></div>
+<div></div>
+</div>
<a name="spirit.advanced.customize.store_value.push_back.push_back_container"></a><h6>
-<a name="id937165"></a>
- <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.push_back_container">push_back_container</a>
+<a name="id730555"></a>
+ push_back_container
</h6>
<p>
- The template <code class="computeroutput"><span class="identifier">push_back_container</span></code>
+ 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 (<a class="link" href="../../../qi/reference/operator/kleene.html" title="Kleene (*a)">Kleene</a>,
- <a class="link" href="../../../qi/reference/operator/plus.html" title="Plus (+a)">Plus</a>, <a class="link" href="../../../qi/reference/operator/list.html" title="List (a % b)">List</a>, and <a class="link" href="../../../qi/reference/directive/repeat.html" title="Repetition (repeat[])">Repeat</a>)
+ 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="id937214"></a>
- <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.module_headers">Module
+<a name="id730637"></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"><</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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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="id937304"></a>
- <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.namespace">Namespace</a>
+<a name="id730766"></a>
+ Namespace
</h6>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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="id937382"></a>
- <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.synopsis">Synopsis</a>
+<a name="id730864"></a>
+ Synopsis
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</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">></span>
<span class="keyword">struct</span> <span class="identifier">push_back_container</span>
@@ -87,8 +92,8 @@
<span class="special">};</span>
</pre>
<a name="spirit.advanced.customize.store_value.push_back.template_parameters"></a><h6>
-<a name="id937523"></a>
- <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.template_parameters">Template
+<a name="id731059"></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">
@@ -98,120 +103,97 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Container</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Container</span></code>
+<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>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Attrib</span></code>
- </p>
- </td>
-<td>
- <p>
- The type, <code class="computeroutput"><span class="identifier">Attrib</span></code>
- is the one returned from the customization point <a class="link" href="container_value.html" title="Determine the Type to be Stored in a Container (Qi)"><code class="computeroutput"><span class="identifier">container_value</span></code></a> and
+<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 <code class="computeroutput"><span class="identifier">Container</span></code>.
- </p>
- </td>
-<td>
- <p>
+ of type <tt class="computeroutput"><span class="identifier">Container</span></tt>.
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">push_back_container</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ 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="id938904"></a>
- <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.notation">Notation</a>
+<a name="id731365"></a>
+ Notation
</h6>
<div class="variablelist">
<p class="title"><b></b></p>
<dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">C</span></code></span></dt>
+<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"><code class="computeroutput"><span class="identifier">c</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">c</span></tt></span></dt>
<dd>
<p>
- A container instance of type <code class="computeroutput"><span class="identifier">C</span></code>.
+ A container instance of type <tt class="computeroutput"><span class="identifier">C</span></tt>.
</p>
<p>
- [<code class="computeroutput"><span class="identifier">Attrib</span></code>
+ [<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"><code class="computeroutput"><span class="identifier">attr</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">attr</span></tt></span></dt>
<dd><p>
- A attribute instance of type <code class="computeroutput"><span class="identifier">Attrib</span></code>.
+ A attribute instance of type <tt class="computeroutput"><span class="identifier">Attrib</span></tt>.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">T1</span></code>,
- <code class="computeroutput"><span class="identifier">T2</span></code>, ...</span></dt>
+<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="id939042"></a>
- <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.expression_semantics">Expression
+<a name="id731553"></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">
@@ -220,38 +202,32 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Expression
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Semantics
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody><tr>
<td>
- <p>
+<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"><</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">Attrib</span><span class="special">>::</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>
+</td>
+<td><p>
Static function that is invoked whenever an attribute value,
- <code class="computeroutput"><span class="identifier">attr</span></code> needs to
- be stored into the container instance <code class="computeroutput"><span class="identifier">c</span></code>.
- </p>
- </td>
+ <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="id939169"></a>
- <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.predefined_specializations">Predefined
+<a name="id731728"></a>
+ <a href="push_back.html#spirit.advanced.customize.store_value.push_back.predefined_specializations">Predefined
Specializations</a>
</h6>
<p>
@@ -266,109 +242,89 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Template Parameters
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Value
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">C</span></code>, <code class="computeroutput"><span class="identifier">Attrib</span></code>
- </p>
- </td>
-<td>
- <p>
- Store the provided attribute instance <code class="computeroutput"><span class="identifier">attr</span></code>
- into the given container <code class="computeroutput"><span class="identifier">c</span></code>
- using the function call <code 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></code>.
- </p>
- </td>
+<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>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">C</span><span class="special">></span></code>,
- <code class="computeroutput"><span class="identifier">Attrib</span></code>
- </p>
- </td>
-<td>
- <p>
- If the provided instance of <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><></span></code> is not initialized, invoke
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special"><</span><span class="identifier">C</span><span class="special">></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"><></span></tt> is not initialized, invoke
the appropriate initialization and afterwards apply the customization
- point <code class="computeroutput"><span class="identifier">push_back_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">Attrib</span><span class="special">></span></code>, treating the instance held
- by the optional (of type <code class="computeroutput"><span class="identifier">C</span></code>)
+ point <tt class="computeroutput"><span class="identifier">push_back_container</span><span class="special"><</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">Attrib</span><span class="special">></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>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">variant</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span>
<span class="identifier">T2</span><span class="special">,</span>
- <span class="special">...></span></code>, <code class="computeroutput"><span class="identifier">Attrib</span></code>
- </p>
- </td>
-<td>
- <p>
+ <span class="special">...></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, <code class="computeroutput"><span class="identifier">TN</span></code>, for
- which <code class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">TN</span><span class="special">>::</span><span class="identifier">type</span></code>
- evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>,
- this customization point specialization will apply <code class="computeroutput"><span class="identifier">push_back_container</span><span class="special"><</span><span class="identifier">TN</span><span class="special">,</span>
- <span class="identifier">Attrib</span><span class="special">></span></code>,
- treating the instance held by the variant (of type <code class="computeroutput"><span class="identifier">TN</span></code>) as the container to store
+ type, <tt class="computeroutput"><span class="identifier">TN</span></tt>, for
+ which <tt class="computeroutput"><span class="identifier">is_container</span><span class="special"><</span><span class="identifier">TN</span><span class="special">>::</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"><</span><span class="identifier">TN</span><span class="special">,</span>
+ <span class="identifier">Attrib</span><span class="special">></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>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">unused_type</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">unused_type</span></tt>
+ </p></td>
+<td><p>
Do nothing.
- </p>
- </td>
+ </p></td>
</tr>
</tbody>
</table></div>
<a name="spirit.advanced.customize.store_value.push_back.when_to_implement"></a><h6>
-<a name="id939577"></a>
- <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.when_to_implement">When
+<a name="id732309"></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 <code class="computeroutput"><span class="identifier">push_back_container</span></code>
+ 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 <code 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></code>.
+ 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">--></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"><</span><span class="identifier">A</span><span class="special">></span>
</pre>
<p>
- where <code class="computeroutput"><span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">)</span></code>
- stands for any meaningful operation on the component <code class="computeroutput"><span class="identifier">a</span></code>.
+ 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="id939727"></a>
- <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.related_attribute_customization_points">Related
+<a name="id732537"></a>
+ <a href="push_back.html#spirit.advanced.customize.store_value.push_back.related_attribute_customization_points">Related
Attribute Customization Points</a>
</h6>
<p>
@@ -381,53 +337,45 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Name
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
When to implement
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <a class="link" href="container_value.html" title="Determine the Type to be Stored in a Container (Qi)"><code class="computeroutput"><span class="identifier">container_value</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Qi: <a class="link" href="../../../qi/reference/operator/list.html" title="List (a % b)">List</a>,
- <a class="link" href="../../../qi/reference/operator/kleene.html" title="Kleene (*a)">Kleene</a>,
- <a class="link" href="../../../qi/reference/operator/plus.html" title="Plus (+a)">Plus</a>,
- <a class="link" href="../../../qi/reference/directive/repeat.html" title="Repetition (repeat[])">Repeat</a>.
- </p>
- </td>
+<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 class="link" href="../clear_value.html" title="Re-Initialize an Attribute Value before Parsing (Qi)"><code class="computeroutput"><span class="identifier">clear_value</span></code></a>
- </p>
- </td>
-<td>
- <p>
- Qi: <a class="link" href="../../../qi/reference/operator/list.html" title="List (a % b)">List</a>,
- <a class="link" href="../../../qi/reference/operator/kleene.html" title="Kleene (*a)">Kleene</a>,
- <a class="link" href="../../../qi/reference/operator/plus.html" title="Plus (+a)">Plus</a>,
- <a class="link" href="../../../qi/reference/directive/repeat.html" title="Repetition (repeat[])">Repeat</a>.
- </p>
- </td>
+<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="id939870"></a>
- <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.example">Example</a>
+<a name="id732752"></a>
+ Example
</h6>
<p>
TBD
Modified: trunk/libs/spirit/doc/html/spirit/advanced/customize/transform.html
==============================================================================
--- trunk/libs/spirit/doc/html/spirit/advanced/customize/transform.html (original)
+++ trunk/libs/spirit/doc/html/spirit/advanced/customize/transform.html 2009-10-27 03:12:35 EDT (Tue, 27 Oct 2009)
@@ -1,13 +1,17 @@
<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>
+<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.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="../customize.html" title="Customization of Spirit's Attribute Handling">
-<link rel="prev" 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)">
+<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>
@@ -22,66 +26,67 @@
<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" title="Transform an Attribute to a Different Type (Qi and Karma)">
-<div class="titlepage"><div><div><h4 class="title">
-<a name="spirit.advanced.customize.transform"></a><a class="link" href="transform.html" title="Transform an Attribute to a Different Type (Qi and Karma)"> Transform an
+<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>
-<a name="spirit.advanced.customize.transform.transform_attribute"></a><h6>
-<a name="id929485"></a>
- <a class="link" href="transform.html#spirit.advanced.customize.transform.transform_attribute">transform_attribute</a>
- </h6>
+</h4></div></div>
+<div></div>
+</div>
+<a name="spirit.advanced.customize.transform.transform_attribute"></a><h5>
+<a name="id722999"></a>
+ transform_attribute
+ </h5>
<p>
- The template <code class="computeroutput"><span class="identifier">transform_attribute</span></code>
+ The template <tt class="computeroutput"><span class="identifier">transform_attribute</span></tt>
is a type used as an attribute customization point. It is invoked by <span class="emphasis"><em>Qi</em></span>
- <code class="computeroutput"><span class="identifier">rule</span></code> and <code class="computeroutput"><span class="identifier">attr_cast</span></code>, and <span class="emphasis"><em>Karma</em></span>
- <code class="computeroutput"><span class="identifier">rule</span></code> and <a class="link" href="../../karma/reference/auxiliary/attr_cast.html" title="Attribute Transformation Pseudo Generator (attr_cast)"><code class="computeroutput"><span class="identifier">attr_cast</span></code></a>. It is used to automatically
+ <tt class="computeroutput"><span class="identifier">rule</span></tt> and <tt class="computeroutput"><span class="identifier">attr_cast</span></tt>, and <span class="emphasis"><em>Karma</em></span>
+ <tt class="computeroutput"><span class="identifier">rule</span></tt> and <a href="../../karma/reference/auxiliary/attr_cast.html" title=" Attribute
+ Transformation Pseudo Generator (attr_cast)"><tt class="computeroutput"><span class="identifier">attr_cast</span></tt></a>. It is used to automatically
transform the user provided attribute to the attribute type expected by
- the right hand side component (for <code class="computeroutput"><span class="identifier">rule</span></code>)
- or the embedded component (for <code class="computeroutput"><span class="identifier">attr_cast</span></code>).
+ the right hand side component (for <tt class="computeroutput"><span class="identifier">rule</span></tt>)
+ or the embedded component (for <tt class="computeroutput"><span class="identifier">attr_cast</span></tt>).
</p>
-<a name="spirit.advanced.customize.transform.module_headers"></a><h6>
-<a name="id929562"></a>
- <a class="link" href="transform.html#spirit.advanced.customize.transform.module_headers">Module
+<a name="spirit.advanced.customize.transform.module_headers"></a><h5>
+<a name="id723129"></a>
+ <a href="transform.html#spirit.advanced.customize.transform.module_headers">Module
Headers</a>
- </h6>
+ </h5>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">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">></span>
</pre>
<p>
- Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+ Also, see Include Structure.
</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>
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><h6>
-<a name="id929647"></a>
- <a class="link" href="transform.html#spirit.advanced.customize.transform.namespace">Namespace</a>
- </h6>
+<a name="spirit.advanced.customize.transform.namespace"></a><h5>
+<a name="id723259"></a>
+ Namespace
+ </h5>
<div class="informaltable"><table class="table">
<colgroup><col></colgroup>
-<thead><tr><th>
- <p>
+<thead><tr><th><p>
Name
- </p>
- </th></tr></thead>
-<tbody><tr><td>
- <p>
- <code 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></code>
- </p>
- </td></tr></tbody>
+ </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.transform.synopsis"></a><h6>
-<a name="id929720"></a>
- <a class="link" href="transform.html#spirit.advanced.customize.transform.synopsis">Synopsis</a>
- </h6>
+<a name="spirit.advanced.customize.transform.synopsis"></a><h5>
+<a name="id723355"></a>
+ Synopsis
+ </h5>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Exposed</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Transformed</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">transform_attribute</span>
<span class="special">{</span>
@@ -90,11 +95,11 @@
<span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">post</span><span class="special">(</span><span class="identifier">Exposed</span><span class="special">&</span> <span class="identifier">val</span><span class="special">,</span> <span class="identifier">type</span> <span class="identifier">attr</span><span class="special">);</span> <span class="comment">// Qi only
</span><span class="special">};</span>
</pre>
-<a name="spirit.advanced.customize.transform.template_parameters"></a><h6>
-<a name="id929913"></a>
- <a class="link" href="transform.html#spirit.advanced.customize.transform.template_parameters">Template
+<a name="spirit.advanced.customize.transform.template_parameters"></a><h5>
+<a name="id723621"></a>
+ <a href="transform.html#spirit.advanced.customize.transform.template_parameters">Template
parameters</a>
- </h6>
+ </h5>
<div class="informaltable"><table class="table">
<colgroup>
<col>
@@ -102,376 +107,304 @@
<col>
</colgroup>
<thead><tr>
-<th>
- <p>
+<th><p>
Parameter
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Description
- </p>
- </th>
-<th>
- <p>
+ </p></th>
+<th><p>
Default
- </p>
- </th>
+ </p></th>
</tr></thead>
<tbody>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Exposed</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Exposed</span></tt>
+ </p></td>
+<td><p>
The attribute type supplied to the component which needs to be
transformed.
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Transformed</span></code>
- </p>
- </td>
-<td>
- <p>
+<td><p>
+ <tt class="computeroutput"><span class="identifier">Transformed</span></tt>
+ </p></td>
+<td><p>
The attribute type expected by the component to be provided as
the result of the transformation.
- </p>
- </td>
-<td>
- <p>
+ </p></td>
+<td><p>
none
- </p>
- </td>
+ </p></td>
</tr>
<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">Enable</span></code>
- </p>
- </td>
-<td>
- <p>
+<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 <code class="computeroutput"><span class="identifier">transform_attribute</span></code>
- utilizing SFINAE (i.e. <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span></code>
- or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">disable_if</span></code>).
- </p>
- </td>
-<td>
- <p>
- <code class="computeroutput"><span class="keyword">void</span></code>
- </p>
- </td>
+ certain specializations of <tt class="computeroutput"><span class="identifier">transform_attribute</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.transform.notation"></a><h6>
-<a name="id930099"></a>
- <a class="link" href="transform.html#spirit.advanced.customize.transform.notation">Notation</a>
- </h6>
-<div class="variablelist" title="Notation">
+<a name="spirit.advanced.customize.transform.notation"></a><h5>
+<a name="id723872"></a>
+ Notation
+ </h5>
+<div class="variablelist">
<p class="title"><b>Notation</b></p>
<dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">Exposed</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Exposed</span></tt></span></dt>
<dd><p>
- The type, <code class="computeroutput"><span class="identifier">Exposed</span></code> is
+ The type, <tt class="computeroutput"><span class="identifier">Exposed</span></tt> is
the type of the attribute as passed in by the user.
</p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">Transformed</span></code></span></dt>
+<dt><span class="term"><tt class="computeroutput"><span class="identifier">Transformed</span></tt></span></dt>
<dd><p>
- The type, <code class="computeroutput"><span class="identifier">Transformed</span></code>
+ The type, <tt class="computeroutput"><span class="identifier">Transformed</span></tt>
is the type of the attribute as passed along to the right hand side
- of the <code class="computeroutput"><span class="identifier">rule</span></code> (embedded
- component of <code class="computeroutput"><span class="identifier">attr_cast</span></code>).
+ of the <tt class="computeroutput"><span class="identifier">rule</span></tt> (embedded
+ component of <tt class="computeroutput"><span class="identifier">attr_cast</span></tt>).
&nbs