[boost-doc-zh] r352 committed - 升级至1.41.0,第四批,libs/目录下s-t子目录

  • From: boost-doc-zh@xxxxxxxxxxxxxx
  • To: boost-doc-zh-notify@xxxxxxxxxxxxx
  • Date: Fri, 04 Dec 2009 07:12:08 +0000

Revision: 352
Author: alai04
Date: Thu Dec  3 23:11:44 2009
Log: 升级至1.41.0,第四批,libs/目录下s-t子目录
http://code.google.com/p/boost-doc-zh/source/detail?r=352

Added:
 /trunk/libs/spirit/doc/html/images/alternative.png
 /trunk/libs/spirit/doc/html/images/and_predicate.png
 /trunk/libs/spirit/doc/html/images/callouts/Thumbs.db
 /trunk/libs/spirit/doc/html/images/double_performance.png
 /trunk/libs/spirit/doc/html/images/format_performance.png
 /trunk/libs/spirit/doc/html/images/int_performance.png
 /trunk/libs/spirit/doc/html/images/kleene.png
 /trunk/libs/spirit/doc/html/images/lexerflow.png
 /trunk/libs/spirit/doc/html/images/non-terminal.png
 /trunk/libs/spirit/doc/html/images/not_predicate.png
 /trunk/libs/spirit/doc/html/images/optional.png
 /trunk/libs/spirit/doc/html/images/pascal_string.png
 /trunk/libs/spirit/doc/html/images/plus.png
 /trunk/libs/spirit/doc/html/images/predicate.png
 /trunk/libs/spirit/doc/html/images/sequence.png
 /trunk/libs/spirit/doc/html/images/start_stop.png
 /trunk/libs/spirit/doc/html/images/terminal.png
 /trunk/libs/spirit/doc/html/spirit/abstracts
 /trunk/libs/spirit/doc/html/spirit/abstracts/attributes
/trunk/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/more_compound_attributes.html /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/nonterminal_attributes.html /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/primitive_attributes.html
 /trunk/libs/spirit/doc/html/spirit/abstracts/attributes.html
/trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html
 /trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html
 /trunk/libs/spirit/doc/html/spirit/abstracts.html
 /trunk/libs/spirit/doc/html/spirit/advanced
 /trunk/libs/spirit/doc/html/spirit/advanced/customize
 /trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to
/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_value.html
 /trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to.html
 /trunk/libs/spirit/doc/html/spirit/advanced/customize/clear_value.html
 /trunk/libs/spirit/doc/html/spirit/advanced/customize/extract_from.html
 /trunk/libs/spirit/doc/html/spirit/advanced/customize/is_container.html
 /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate
/trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/begin_container.html /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/compare_iterators.html /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/container_iterator.html /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/deref_iterator.html /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/end_container.html /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/next_iterator.html
 /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate.html
 /trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value
/trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/container_value.html /trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/push_back.html
 /trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value.html
 /trunk/libs/spirit/doc/html/spirit/advanced/customize/transform.html
 /trunk/libs/spirit/doc/html/spirit/advanced/customize.html
 /trunk/libs/spirit/doc/html/spirit/advanced/indepth
 /trunk/libs/spirit/doc/html/spirit/advanced/indepth/parsers_indepth.html
 /trunk/libs/spirit/doc/html/spirit/advanced/indepth.html
 /trunk/libs/spirit/doc/html/spirit/advanced.html
 /trunk/libs/spirit/doc/html/spirit/karma
 /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements
/trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html
 /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements.html
 /trunk/libs/spirit/doc/html/spirit/karma/quick_reference
/trunk/libs/spirit/doc/html/spirit/karma/quick_reference/common_notation.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html
 /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/non_terminals.html
 /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/phoenix.html
/trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/action.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/auxiliary.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/binary.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/boolean.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/char.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/directives.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/operators.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/real_number.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/signed_int.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/stream.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/string.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/unsigned_int.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators.html /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/semantic_actions.html
 /trunk/libs/spirit/doc/html/spirit/karma/quick_reference.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference
 /trunk/libs/spirit/doc/html/spirit/karma/reference/action.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary
 /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/attr_cast.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/binary
 /trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html
/trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html /trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/binary.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/char
 /trunk/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/char.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/directive
 /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html
/trunk/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/directive.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/generate_api
/trunk/libs/spirit/doc/html/spirit/karma/reference/generate_api/iterator_api.html /trunk/libs/spirit/doc/html/spirit/karma/reference/generate_api/stream_api.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/generate_api.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts
/trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/nonterminal.html /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/karma_basics.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/nonterminal
 /trunk/libs/spirit/doc/html/spirit/karma/reference/nonterminal/grammar.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/nonterminal/rule.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/nonterminal.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric
 /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/boolean.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html
/trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/operator
/trunk/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/list.html
/trunk/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/operator.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/stream
 /trunk/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/stream.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/string
 /trunk/libs/spirit/doc/html/spirit/karma/reference/string/string.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference/string.html
 /trunk/libs/spirit/doc/html/spirit/karma/reference.html
 /trunk/libs/spirit/doc/html/spirit/karma/tutorials
 /trunk/libs/spirit/doc/html/spirit/karma/tutorials/karma_complex.html
/trunk/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html
 /trunk/libs/spirit/doc/html/spirit/karma/tutorials/num_list.html
 /trunk/libs/spirit/doc/html/spirit/karma/tutorials/num_matrix.html
 /trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html
 /trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html
 /trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html
 /trunk/libs/spirit/doc/html/spirit/karma/tutorials.html
 /trunk/libs/spirit/doc/html/spirit/karma.html
 /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives
/trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html
 /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives.html
 /trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html
 /trunk/libs/spirit/doc/html/spirit/lex/quick_reference
 /trunk/libs/spirit/doc/html/spirit/lex/quick_reference/common_notation.html
 /trunk/libs/spirit/doc/html/spirit/lex/quick_reference/lexer.html
 /trunk/libs/spirit/doc/html/spirit/lex/quick_reference/lexers.html
 /trunk/libs/spirit/doc/html/spirit/lex/quick_reference/phoenix.html
/trunk/libs/spirit/doc/html/spirit/lex/quick_reference/semantic_actions.html
 /trunk/libs/spirit/doc/html/spirit/lex/reference/lex_basics.html
 /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_api.html
 /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts
 /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/lexer.html
/trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/narylexer.html /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/primitivelexer.html /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/unarylexer.html
 /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts.html
 /trunk/libs/spirit/doc/html/spirit/lex/reference/primitives
/trunk/libs/spirit/doc/html/spirit/lex/reference/primitives/char_tokendef.html
 /trunk/libs/spirit/doc/html/spirit/lex/reference/primitives.html
 /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_tutorials.html
 /trunk/libs/spirit/doc/html/spirit/preface.html
 /trunk/libs/spirit/doc/html/spirit/qi
 /trunk/libs/spirit/doc/html/spirit/qi/quick_reference
 /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/common_notation.html
/trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html
 /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/non_terminals.html
 /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/phoenix.html
 /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers
/trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/action.html /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/auxiliary.html /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/binary.html
 /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/char.html
/trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/directive.html /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/numeric.html /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/operator.html /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/string.html
 /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers.html
 /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/semantic_actions.html
 /trunk/libs/spirit/doc/html/spirit/qi/quick_reference.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference
 /trunk/libs/spirit/doc/html/spirit/qi/reference/action.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary
 /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr_cast.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/binary
 /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/binary.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/char
 /trunk/libs/spirit/doc/html/spirit/qi/reference/char/char.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/char.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/concepts
 /trunk/libs/spirit/doc/html/spirit/qi/reference/directive
 /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/directive.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/nonterminal
 /trunk/libs/spirit/doc/html/spirit/qi/reference/nonterminal/grammar.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/nonterminal/rule.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/nonterminal.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric
 /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/boolean.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/list.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/operator.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/parse_api
 /trunk/libs/spirit/doc/html/spirit/qi/reference/parse_api/iterator_api.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/parse_api/stream_api.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/parse_api.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts
/trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/nonterminal.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html
/trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/stream
 /trunk/libs/spirit/doc/html/spirit/qi/reference/stream/stream.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/stream.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/string
 /trunk/libs/spirit/doc/html/spirit/qi/reference/string/string.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference/string.html
 /trunk/libs/spirit/doc/html/spirit/qi/reference.html
 /trunk/libs/spirit/doc/html/spirit/qi/string
 /trunk/libs/spirit/doc/html/spirit/qi/tutorials
/trunk/libs/spirit/doc/html/spirit/qi/tutorials/complex___our_first_complex_parser.html /trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html
 /trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html
/trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html /trunk/libs/spirit/doc/html/spirit/qi/tutorials/number_list___stuffing_numbers_into_a_std__vector.html /trunk/libs/spirit/doc/html/spirit/qi/tutorials/number_list_attribute___one_more__with_style.html /trunk/libs/spirit/doc/html/spirit/qi/tutorials/number_list_redux___list_syntax.html
 /trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html
 /trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html
 /trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html
 /trunk/libs/spirit/doc/html/spirit/qi/tutorials/sum___adding_numbers.html
 /trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html
 /trunk/libs/spirit/doc/html/spirit/qi/tutorials.html
 /trunk/libs/spirit/doc/html/spirit/qi.html
 /trunk/libs/spirit/doc/html/spirit/repository.html
 /trunk/libs/spirit/doc/html/spirit/structure
 /trunk/libs/spirit/doc/html/spirit/structure/include.html
 /trunk/libs/spirit/doc/html/spirit/structure.html
 /trunk/libs/spirit/doc/html/spirit/support
 /trunk/libs/spirit/doc/html/spirit/support/multi_pass.html
 /trunk/libs/spirit/doc/html/spirit/support.html
 /trunk/libs/spirit/repository
 /trunk/libs/spirit/repository/doc
 /trunk/libs/spirit/repository/doc/html
 /trunk/libs/spirit/repository/doc/html/images
 /trunk/libs/spirit/repository/doc/html/images/alert.png
 /trunk/libs/spirit/repository/doc/html/images/callouts
 /trunk/libs/spirit/repository/doc/html/images/callouts/1.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/10.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/11.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/12.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/13.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/14.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/15.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/2.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/3.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/4.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/5.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/6.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/7.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/8.png
 /trunk/libs/spirit/repository/doc/html/images/callouts/9.png
 /trunk/libs/spirit/repository/doc/html/images/caution.png
 /trunk/libs/spirit/repository/doc/html/images/important.png
 /trunk/libs/spirit/repository/doc/html/images/note.png
 /trunk/libs/spirit/repository/doc/html/images/tip.png
 /trunk/libs/spirit/repository/doc/html/index.html
 /trunk/libs/spirit/repository/doc/html/spirit_repository
 /trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components
/trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/directives /trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/directives/karma_confix_generator.html /trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/directives.html /trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal /trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal/subrule.html /trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal.html /trunk/libs/spirit/repository/doc/html/spirit_repository/karma_components.html
 /trunk/libs/spirit/repository/doc/html/spirit_repository/preface.html
 /trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components
/trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives /trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/confix.html /trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/distinct.html /trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives.html /trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal /trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal/subrule.html /trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal.html /trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive /trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive/flush_multi_pass.html /trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive.html
 /trunk/libs/spirit/repository/doc/html/spirit_repository/qi_components.html
Deleted:
 /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_attributes.html
 /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_parsing.html
 /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html
 /trunk/libs/spirit/doc/html/spirit/notes/techniques.html
 /trunk/libs/spirit/doc/html/spirit/qi_and_karma
 /trunk/libs/spirit/doc/html/spirit/qi_and_karma.html
 /trunk/libs/spirit/doc/html/spirit/rationale.html
Modified:
 /trunk/libs/serialization/doc/acknowledgments.html
 /trunk/libs/serialization/doc/archive_reference.html
 /trunk/libs/serialization/doc/contents.html
 /trunk/libs/serialization/doc/exceptions.html
 /trunk/libs/serialization/doc/extended_type_info.html
 /trunk/libs/serialization/doc/rationale.html
 /trunk/libs/serialization/doc/special.html
 /trunk/libs/serialization/doc/traits.html
 /trunk/libs/spirit/doc/html/index.html
 /trunk/libs/spirit/doc/html/spirit/acknowledgments.html
 /trunk/libs/spirit/doc/html/spirit/faq.html
 /trunk/libs/spirit/doc/html/spirit/introduction.html
/trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html
 /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html
 /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html
 /trunk/libs/spirit/doc/html/spirit/lex/abstracts.html
 /trunk/libs/spirit/doc/html/spirit/lex/quick_reference.html
 /trunk/libs/spirit/doc/html/spirit/lex/reference.html
 /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html
 /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html
 /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html
 /trunk/libs/spirit/doc/html/spirit/lex/tutorials.html
 /trunk/libs/spirit/doc/html/spirit/lex.html
 /trunk/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html
 /trunk/libs/spirit/doc/html/spirit/notes/style_guide.html
 /trunk/libs/spirit/doc/html/spirit/notes.html
 /trunk/libs/spirit/doc/html/spirit/references.html
 /trunk/libs/spirit/doc/html/spirit/what_s_new.html
 /trunk/libs/spirit/index.html
 /trunk/libs/spirit/phoenix/index.html

=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/alternative.png Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/and_predicate.png Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/callouts/Thumbs.db Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/double_performance.png Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/format_performance.png Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/int_performance.png Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/kleene.png       Thu Dec  3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/lexerflow.png Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/non-terminal.png Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/not_predicate.png Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/optional.png     Thu Dec  3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/pascal_string.png Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/plus.png Thu Dec  3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/predicate.png Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/sequence.png     Thu Dec  3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/start_stop.png Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/images/terminal.png     Thu Dec  3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/more_compound_attributes.html Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/nonterminal_attributes.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,96 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<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">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../attributes.html" title="Attributes">
+<link rel="prev" href="more_compound_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>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="more_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="../../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">
+        Attributes of Rules and Grammars</a>
+</h4></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 + in the parser world are very similar to functions in an imperative programming + language. They can be used to encapsulate parser expressions for a particular + input sequence. After being defined, the nonterminals can be used as 'normal' + parsers in more complex expressions whenever the encapsulated input needs + to be recognized. Parser nonterminals in <span class="emphasis"><em>Spirit.Qi</em></span> + may accept <span class="emphasis"><em>parameters</em></span> (inherited attributes) and usually
+          return a value (the synthesized attribute).
+        </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 + <a href="../../../../../repository/doc/html/index.html" target="_top">Repository</a> additionally + has <code class="computeroutput"><span class="identifier">subrules</span></code> 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> + as its inherited attribute (see the section about the <span class="emphasis"><em>Spirit.Qi</em></span>
+          Rule for more information):
+        </p>
+<pre class="programlisting"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">rule</span><span class="special">&lt;</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">int</span><span class="special">(</span><span class="keyword">double</span><span class="special">)&gt;</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ In the world of generators, nonterminals are just as useful as in the parser + world. Generator nonterminals encapsulate a format description for a particular + data type, and, whenever we need to emit output for this data type, the + corresponding nonterminal is invoked in a similar way as the predefined + <span class="emphasis"><em>Spirit.Karma</em></span> generator primitives. The <span class="emphasis"><em>Spirit.Karma</em></span> + nonterminals are very similar to the <span class="emphasis"><em>Spirit.Qi</em></span> nonterminals. + Generator nonterminals may accept <span class="emphasis"><em>parameters</em></span> as well, + and we call those inherited attributes too. The main difference is that + they do not expose a synthesized attribute (as parsers do), but they require + a special <span class="emphasis"><em>consumed attribute</em></span>. Usually the consumed + attribute is the value the generator 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 expecting any additional inherited attributes.
+        </p>
+<pre class="programlisting"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">rule</span><span class="special">&lt;</span><span class="identifier">OutputIterator</span><span class="special">,</span> <span class="keyword">double</span><span class="special">()&gt;</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ The inherited attributes of nonterminal parsers and generators are normally + passed to the component during its invocation. These are the <span class="emphasis"><em>parameters</em></span> + the parser or generator may accept and they can be used to parameterize
+          the component depending on the context they are invoked from.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="more_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="../../qi.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/primitive_attributes.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,97 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<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">
+<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">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<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">
+        Attributes of Primitive Components</a>
+</h4></div></div></div>
+<p>
+ Parsers and generators in <a href="http://spirit.sourceforge.net"; target="_top">Spirit</a> + 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 + 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>. + Forprimitive parsers apply the normal C++ convertibility rules: you can + use any Other primitive parser components have other intuitive attribute + types, e.g. the parser <code class="computeroutput"><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span></code> + has <code class="computeroutput"><span class="keyword">char</span></code> as attribute type. + For primitive parsers the normal C++ convertibility rules apply: 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>:
+        </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> +<span class="identifier">qi</span><span class="special">::</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">str</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">str</span><span class="special">.</span><span class="identifier">end</span><span class="special">(),</span> <span class="identifier">int_</span><span class="special">,</span> <span class="identifier">value</span><span class="special">);</span> <span class="comment">// value == 123
+</span></pre>
+<p>
+ The attribute type of a generator defines what data types this generator + is able to consume in order to produce its output. <span class="emphasis"><em>Spirit.Karma</em></span> + generators always <span class="emphasis"><em>expect</em></span> an attribute specific to + their type. This is called <span class="emphasis"><em>consumed attribute</em></span> and + is expected to be passed to the generator. The consumed attribute is most + of the time the value the generator is designed to emit output for. For + 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 attribute of the <code class="computeroutput"><span class="identifier">int_</span></code> + generator (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>:
+        </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> +<span class="identifier">std</span><span class="special">::</span><span class="identifier">back_insert_iterator</span><span class="special">&lt;</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span><span class="special">&gt;</span> <span class="identifier">out</span><span class="special">(</span><span class="identifier">str</span><span class="special">);</span> +<span class="identifier">karma</span><span class="special">::</span><span class="identifier">generate</span><span class="special">(</span><span class="identifier">out</span><span class="special">,</span> <span class="identifier">int_</span><span class="special">,</span> <span class="identifier">value</span><span class="special">);</span> <span class="comment">// str == "123"
+</span></pre>
+<p>
+ Other primitive generator components have other intuitive attribute types, + very similar to the corresponding parser components. For instance, the + <code class="computeroutput"><span class="identifier">ascii</span><span class="special">::</span><span class="identifier">char_</span></code> generator has <code class="computeroutput"><span class="keyword">char</span></code> + as consumed attribute. 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
+          Generators</a>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<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>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/abstracts/attributes.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,54 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Attributes</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../index.html" title="Spirit 2.1">
+<link rel="up" href="../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">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<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="toc"><dl>
+<dt><span class="section"><a href="attributes/primitive_attributes.html">
+        Attributes of Primitive Components</a></span></dt>
+<dt><span class="section"><a href="attributes/compound_attributes.html"> Attributes
+        of Compound Components</a></span></dt>
+<dt><span class="section"><a href="attributes/more_compound_attributes.html">
+        More About Attributes of Compound Components</a></span></dt>
+<dt><span class="section"><a href="attributes/nonterminal_attributes.html">
+        Attributes of Rules and Grammars</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<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>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,242 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<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">
+<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">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<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
+      Expression Grammar</a>
+</h3></div></div></div>
+<p>
+        Parsing Expression Grammars (PEG)
+ <sup>[<a name="id604578" href="#ftn.id604578" class="footnote">6</a>]</sup>
+        are a derivative of Extended Backus-Naur Form (EBNF)
+ <sup>[<a name="id604590" href="#ftn.id604590" class="footnote">7</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>
+<p>
+ Like EBNF, PEG is a formal grammar for describing a formal language in terms + of a set of rules used to recognize strings of this language. Unlike EBNF, + 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="id604610"></a>
+ <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.sequences">Sequences</a>
+      </h5>
+<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">b</span></code> must follow <code class="computeroutput"><span class="identifier">a</span></code>.
+        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>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        Here's a trivial example:
+      </p>
+<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>
+        must be followed by a digit.
+      </p>
+<div class="note" title="Note"><table border="0" summary="Note">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Note]" src="../../images/note.png"></td>
+<th align="left">Note</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ In <span class="emphasis"><em>Spirit.Qi</em></span>, we use the <code class="computeroutput"><span class="special">&gt;&gt;</span></code> + for sequences since C++ does not allow juxtaposition, while in <span class="emphasis"><em>Spirit.Karma</em></span> + we use the <code class="computeroutput"><span class="special">&lt;&lt;</span></code> instead.
+        </p></td></tr>
+</table></div>
+<a name="spirit.abstracts.parsing_expression_grammar.alternatives"></a><h5>
+<a name="id605016"></a>
+ <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.alternatives">Alternatives</a>
+      </h5>
+<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">
+<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> and <span class="emphasis"><em>Spirit.Karma</em></span>, + we use the <code class="computeroutput"><span class="special">| </span></code> 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>. + 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>.
+        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>
+          </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> + can both match an input string. However, only the first matching alternative
+        is valid. As noted, there can only be one valid parse tree.
+      </p>
+<a name="spirit.abstracts.parsing_expression_grammar.loops"></a><h5>
+<a name="id605162"></a>
+ <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.loops">Loops</a>
+      </h5>
+<p>
+ Again, like EBNF, PEG uses the regular-expression Kleene star and the plus
+        loops:
+      </p>
+<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">
+<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>
+ <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>
+</table></div>
+<p>
+        Here are the syntax diagrams:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <span class="inlinemediaobject"><img src="../.././images/kleene.png" alt="kleene"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <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>.
+      </p>
+<p>
+ Unlike EBNF, PEGs have greedy loops. It will match as much as it can until + its subject fails to match without regard to what follows. The following + is a classic example of a fairly common EBNF/regex expression failing to
+        match in PEG:
+      </p>
+<pre class="programlisting"><span class="identifier">alnum</span><span class="special">*</span> <span class="identifier">digit</span>
+</pre>
+<p>
+ In PEG, alnum will eat as much alpha-numeric characters as it can leaving + nothing more left behind. Thus, the trailing digit will get nothing. Loops + are simply implemented in recursive descent code as for/while loops making + them extremely efficient. That is a definite advantage. On the other hand, + those who are familiar with EBNF and regex behavior might find the behavior + 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="id605310"></a>
+ <a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.difference">Difference</a>
+      </h5>
+<p>
+ In some 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.
+        The difference operator allows you to restrict this set:
+      </p>
+<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>.
+      </p>
+<div class="note" title="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>
+ 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.id604578" href="#id604578" class="para">6</a>] </sup> + Bryan Ford: Parsing Expression Grammars: A Recognition-Based Syntactic + Foundation, <a href="http://pdos.csail.mit.edu/~baford/packrat/popl04/"; target="_top">http://pdos.csail.mit.edu/~baford/packrat/popl04/</a>
+          </p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id604590" href="#id604590" class="para">7</a>] </sup> + Richard E. Pattis: EBNF: A Notation to Describe Syntax, <a href="http://www.cs.cmu.edu/~pattis/misc/ebnf.pdf"; target="_top">http://www.cs.cmu.edu/~pattis/misc/ebnf.pdf</a>
+          </p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<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>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,247 @@
+<html>
+<head>
+<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">
+<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">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<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>
+<p>
+ In the next section, we will deal with Parsing Expression Grammars (PEG) + <sup>[<a name="id604135" href="#ftn.id604135" class="footnote">3</a>]</sup>
+        , a variant of Extended Backus-Naur Form (EBNF)
+ <sup>[<a name="id604147" href="#ftn.id604147" class="footnote">4</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="id604159" href="#ftn.id604159" class="footnote">5</a>]</sup> + in the "Pascal User Manual". Syntax Diagrams are easily understandable + by programmers due to their similarity to flow charts. The isomorphism of + the diagrams and functions make them ideal for representing Recursive Descent
+        parsers which are essentially mutually recursive functions.
+      </p>
+<p>
+ Historically, Parsing Expression Grammars have been used for describing grammars + for parsers only (hence the name). In <a href="http://spirit.sourceforge.net"; target="_top">Spirit</a> + we use a very similar notation for output generation as well. Almost all + the concepts described here are equally applicable both to <span class="emphasis"><em>Spirit.Qi</em></span> + parsers and to <span class="emphasis"><em>Spirit.Karma</em></span> generators.
+      </p>
+<a name="spirit.abstracts.syntax_diagram.elements"></a><h5>
+<a name="id604187"></a>
+ <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.elements">Elements</a>
+      </h5>
+<p>
+ All diagrams have one entry and one exit point. Arrows connect all possible
+        paths through the grammar from the entry point to the exit point.
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <span class="inlinemediaobject"><img src="../.././images/start_stop.png" alt="start_stop"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+ Terminals are represented by round boxes. Terminals are atomic and usually
+        represent plain characters, strings or tokens.
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <span class="inlinemediaobject"><img src="../.././images/terminal.png" alt="terminal"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+ Non-terminals are represented by boxes. Diagrams are modularized using named + non-terminals. A complex diagram can be broken down into a set of non-terminals. + Non-terminals also allow recursion (i.e. a non-terminal can call itself).
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <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="id604286"></a>
+ <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.constructs">Constructs</a>
+      </h5>
+<p>
+        The most basic composition is the Sequence. B follows A:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <span class="inlinemediaobject"><img src="../.././images/sequence.png" alt="sequence"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+ The ordered choice henceforth we will call <span class="emphasis"><em>alternatives</em></span>. + In PEG, ordered choice and alternatives are not quite the same. PEG allows + ambiguity of choice where one or more branches can succeed. In PEG, in case
+        of ambiguity, the first one always wins.
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <span class="inlinemediaobject"><img src="../.././images/alternative.png" alt="alternative"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        The optional (zero-or-one):
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <span class="inlinemediaobject"><img src="../.././images/optional.png" alt="optional"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+        Now, the loops. We have the zero-or-more and one-or-more:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <span class="inlinemediaobject"><img src="../.././images/kleene.png" alt="kleene"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <span class="inlinemediaobject"><img src="../.././images/plus.png" alt="plus"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+ Take note that, as in PEG, these loops behave greedily. If there is another + 'A' just before the end-point, it will always fail because the preceding + loop has already exhausted all 'A's and there is nothing more left. This + 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="id604447"></a>
+ <a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.predicates">Predicates</a>
+      </h5>
+<p>
+ Now, the following are Syntax Diagram versions of PEG predicates. These are + not traditionally found in Syntax Diagrams. These are special extensions
+        we invented to closely follow PEGs.
+      </p>
+<p>
+        First, we introduce a new element, the Predicate:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <span class="inlinemediaobject"><img src="../.././images/predicate.png" alt="predicate"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+ This is similar to the conditionals in flow charts where the 'No' branch
+        is absent and always signals a failed parse.
+      </p>
+<p>
+ We have two versions of the predicate, the <span class="emphasis"><em>And-Predicate</em></span>
+        and the <span class="emphasis"><em>Not-Predicate</em></span>:
+      </p>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <span class="inlinemediaobject"><img src="../.././images/and_predicate.png" alt="and_predicate"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<div class="blockquote"><blockquote class="blockquote">
+<p>
+          </p>
+<p>
+ <span class="inlinemediaobject"><img src="../.././images/not_predicate.png" alt="not_predicate"></span>
+          </p>
+<p>
+        </p>
+</blockquote></div>
+<p>
+ The <span class="emphasis"><em>And-Predicate</em></span> tries the predicate, P, and succeeds + if P succeeds, or otherwise fail. The opposite is true with the <span class="emphasis"><em>Not-Predicate</em></span>. + It tries the predicate, P, and fails if P succeeds, or otherwise succeeds. + Both versions do a look-ahead but do not consume any input regardless if
+        P succeeds or not.
+      </p>
+<div class="footnotes">
+<br><hr width="100" align="left">
+<div class="footnote"><p><sup>[<a name="ftn.id604135" href="#id604135" class="para">3</a>] </sup> + Bryan Ford: Parsing Expression Grammars: A Recognition-Based Syntactic + Foundation, <a href="http://pdos.csail.mit.edu/~baford/packrat/popl04/"; target="_top">http://pdos.csail.mit.edu/~baford/packrat/popl04/</a>
+          </p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id604147" href="#id604147" class="para">4</a>] </sup> + Richard E. Pattis: EBNF: A Notation to Describe Syntax, <a href="http://www.cs.cmu.edu/~pattis/misc/ebnf.pdf"; target="_top">http://www.cs.cmu.edu/~pattis/misc/ebnf.pdf</a>
+          </p></div>
+<div class="footnote"><p><sup>[<a name="ftn.id604159" href="#id604159" class="para">5</a>] </sup>
+            Niklaus Wirth: The Programming Language Pascal. (July 1973)
+          </p></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<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>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/abstracts.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,60 @@
+<html>
+<head>
+<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">
+<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="next" href="abstracts/syntax_diagram.html" title="Syntax Diagram">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<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="toc"><dl>
+<dt><span class="section"><a href="abstracts/syntax_diagram.html">Syntax Diagram</a></span></dt> +<dt><span class="section"><a href="abstracts/parsing_expression_grammar.html">Parsing
+      Expression Grammar</a></span></dt>
+<dt><span class="section"><a href="abstracts/attributes.html"> Attributes</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="abstracts/attributes/primitive_attributes.html">
+        Attributes of Primitive Components</a></span></dt>
+<dt><span class="section"><a href="abstracts/attributes/compound_attributes.html"> Attributes
+        of Compound Components</a></span></dt>
+<dt><span class="section"><a href="abstracts/attributes/more_compound_attributes.html">
+        More About Attributes of Compound Components</a></span></dt>
+<dt><span class="section"><a href="abstracts/attributes/nonterminal_attributes.html">
+        Attributes of Rules and Grammars</a></span></dt>
+</dl></dd>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<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>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_iterators.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,331 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Store an Attribute after a Parser Produced a Pair of Iterators (Qi)</title> +<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<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)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td> +<td align="center"><a href="../../../../../../../../index.html">Home</a></td> +<td align="center"><a href="../../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../assign_to.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign_to.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="assign_to_attribute_from_value.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" 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)"> + Store an Attribute after a Parser Produced a Pair of Iterators (Qi)</a>
+</h5></div></div></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.assign_to_attribute_from_iterators"></a><h6>
+<a name="id946698"></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>
+          </h6>
+<p>
+ The template <code class="computeroutput"><span class="identifier">assign_to_attribute_from_iterators</span></code> + is a type used as an attribute customization point. It is invoked by + the those <span class="emphasis"><em>Qi</em></span> parsers not producing any attribute + value but returning a pair of iterators pointing to the matched input + sequence. It is used to either store the iterator pair into the attribute + instance provided by the user or to convert the iterator pair into an
+            attribute as provided by the user.
+          </p>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.module_headers"></a><h6>
+<a name="id946726"></a>
+ <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.module_headers">Module
+            Headers</a>
+          </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">qi</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">assign_to</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<div class="note" title="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>
+ 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="id946818"></a>
+ <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<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>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.synopsis"></a><h6>
+<a name="id946891"></a>
+ <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Attrib</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span> +<span class="keyword">struct</span> <span class="identifier">assign_to_attribute_from_iterators</span>
+<span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">call</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">Attrib</span><span class="special">&amp;</span> <span class="identifier">attr</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.template_parameters"></a><h6>
+<a name="id947052"></a>
+ <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <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 type of the attribute as passed in by the user.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    none
+                  </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>
+                    is the type of the iterators as produced by the parser.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    none
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">Enable</span></code>
+                  </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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.notation"></a><h6>
+<a name="id947252"></a>
+ <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.notation">Notation</a>
+          </h6>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Attrib</span></code></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>
+<dd><p>
+ A attribute instance of type <code class="computeroutput"><span class="identifier">Attrib</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iterator</span></code></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>
+<dd><p>
+ Iterator instances of type <code class="computeroutput"><span class="identifier">Iterator</span></code> + 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="id947366"></a>
+ <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; class="table-programlisting"><span class="identifier">assign_to_attribute_from_iterators</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">,</span> <span class="identifier">Iterator</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">b</span><span class="special">,</span> <span class="identifier">e</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+ Use the iterators <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>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.predefined_specializations"></a><h6>
+<a name="id947509"></a>
+ <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.predefined_specializations">Predefined
+            Specializations</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Template Parameters
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </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>
+</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>
+                    Do nothing.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.when_to_implement"></a><h6>
+<a name="id947656"></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
+            to implement</a>
+          </h6>
+<p>
+ The customization point <code class="computeroutput"><span class="identifier">assign_to_attribute_from_iterators</span></code> + 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
+            from the pair of iterators.
+          </p>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.example"></a><h6>
+<a name="id947687"></a>
+ <a class="link" href="assign_to_attribute_from_iterators.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_iterators.example">Example</a>
+          </h6>
+<p>
+            TBD
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../assign_to.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign_to.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="assign_to_attribute_from_value.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to/assign_to_attribute_from_value.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,325 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Store an Attribute Value after a Parser Produced a Value (Qi)</title> +<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<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)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td> +<td align="center"><a href="../../../../../../../../index.html">Home</a></td> +<td align="center"><a href="../../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="assign_to_attribute_from_iterators.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign_to.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../store_value.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" 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)">
+          Store an Attribute Value after a Parser Produced a Value (Qi)</a>
+</h5></div></div></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.assign_to_attribute_from_value"></a><h6>
+<a name="id947714"></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>
+          </h6>
+<p>
+ The template <code class="computeroutput"><span class="identifier">assign_to_attribute_from_value</span></code> + 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="id947742"></a>
+ <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.module_headers">Module
+            Headers</a>
+          </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">qi</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">assign_to</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<div class="note" title="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>
+ 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="id947834"></a>
+ <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<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>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.synopsis"></a><h6>
+<a name="id947908"></a>
+ <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Attrib</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span> +<span class="keyword">struct</span> <span class="identifier">assign_to_attribute_from_value</span>
+<span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">call</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">,</span> <span class="identifier">Attrib</span><span class="special">&amp;</span> <span class="identifier">attr</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.template_parameters"></a><h6>
+<a name="id951967"></a>
+ <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <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 type of the attribute as passed in by the user.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    none
+                  </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 + the type of the attribute instance as produced by the parser.
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    none
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">Enable</span></code>
+                  </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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.notation"></a><h6>
+<a name="id952168"></a>
+ <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.notation">Notation</a>
+          </h6>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Attrib</span></code></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>
+<dd><p>
+ A attribute instance of type <code class="computeroutput"><span class="identifier">Attrib</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span></code></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>
+<dd><p>
+ A attribute instance of type <code class="computeroutput"><span class="identifier">T</span></code>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.expression_semantics"></a><h6>
+<a name="id952275"></a>
+ <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; class="table-programlisting"><span class="identifier">assign_to_attribute_from_value</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">,</span> <span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+ Copy (assign) the value, <code class="computeroutput"><span class="identifier">t</span></code> + to the attribute <code class="computeroutput"><span class="identifier">attr</span></code>.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.predefined_specializations"></a><h6>
+<a name="id952402"></a>
+ <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.predefined_specializations">Predefined
+            Specializations</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Template Parameters
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </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>
+</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>
+                    Do nothing.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.when_to_implement"></a><h6>
+<a name="id952527"></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
+            to implement</a>
+          </h6>
+<p>
+ The customization point <code class="computeroutput"><span class="identifier">assign_to_attribute_from_value</span></code> + 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
+            constructible.
+          </p>
+<a name="spirit.advanced.customize.assign_to.assign_to_attribute_from_value.example"></a><h6>
+<a name="id952558"></a>
+ <a class="link" href="assign_to_attribute_from_value.html#spirit.advanced.customize.assign_to.assign_to_attribute_from_value.example">Example</a>
+          </h6>
+<p>
+            TBD
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="assign_to_attribute_from_iterators.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../assign_to.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../store_value.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/assign_to.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Store a Parsed Attribute Value (Qi)</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<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)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="transform.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="assign_to/assign_to_attribute_from_iterators.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" 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
+        Attribute Value (Qi)</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="assign_to/assign_to_attribute_from_iterators.html"> + Store an Attribute after a Parser Produced a Pair of Iterators (Qi)</a></span></dt> +<dt><span class="section"><a href="assign_to/assign_to_attribute_from_value.html"> + Store an Attribute Value after a Parser Produced a Value (Qi)</a></span></dt>
+</dl></div>
+<p>
+ After parsing input and generting an attribute value this value needs to + assigned to the attribute instance provided by the user. The customization + points <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> + are utilized to adapt this assignment to the concrete type to be assigned.
+          This section describes both.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="transform.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="assign_to/assign_to_attribute_from_iterators.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/clear_value.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,369 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Re-Initialize an Attribute Value before Parsing (Qi)</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<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)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="store_value/push_back.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="extract_from.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" 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
+        an Attribute Value before Parsing (Qi)</a>
+</h4></div></div></div>
+<a name="spirit.advanced.customize.clear_value.clear_value"></a><h6>
+<a name="id955679"></a>
+ <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.clear_value">clear_value</a>
+        </h6>
+<p>
+ The template <code class="computeroutput"><span class="identifier">clear_value</span></code> + 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>) + 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="id955726"></a>
+ <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.module_headers">Module
+          Headers</a>
+        </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">attributes</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+<div class="note" title="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>
+ 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="id955811"></a>
+ <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.namespace">Namespace</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<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>
+</table></div>
+<a name="spirit.advanced.customize.clear_value.synopsis"></a><h6>
+<a name="id955884"></a>
+ <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.synopsis">Synopsis</a>
+        </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Attrib</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span> +<span class="keyword">struct</span> <span class="identifier">clear_value</span>
+<span class="special">{</span>
+ <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">&amp;</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="id955991"></a>
+ <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.template_parameters">Template
+          parameters</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Parameter
+                </p>
+                </th>
+<th>
+                <p>
+                  Description
+                </p>
+                </th>
+<th>
+                <p>
+                  Default
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Attrib</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ The type, <code class="computeroutput"><span class="identifier">Attrib</span></code>
+                  of the attribute to be re-initialized.
+                </p>
+                </td>
+<td>
+                <p>
+                  none
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Enable</span></code>
+                </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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.clear_value.notation"></a><h6>
+<a name="id956157"></a>
+ <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.notation">Notation</a>
+        </h6>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Attrib</span></code></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>
+<dd><p>
+ A attribute instance of type <code class="computeroutput"><span class="identifier">Attrib</span></code>.
+            </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>
+<dd><p>
+              Arbitrary types
+            </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.clear_value.expression_semantics"></a><h6>
+<a name="id956249"></a>
+ <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.expression_semantics">Expression
+          Semantics</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Expression
+                </p>
+                </th>
+<th>
+                <p>
+                  Semantics
+                </p>
+                </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; class="table-programlisting"><span class="identifier">clear_value</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">Attrib</span><span class="special">&amp;</span> <span class="identifier">attr</span><span class="special">)</span></pre>
+<p>
+                </p>
+                </td>
+<td>
+                <p>
+ Re-initialize the instance referred to by <code class="computeroutput"><span class="identifier">attr</span></code>
+                  in the most efficient way.
+                </p>
+                </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.clear_value.predefined_specializations"></a><h6>
+<a name="id956366"></a>
+ <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.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 exposed and the corresponding semantics:
+        </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Template Parameters
+                </p>
+                </th>
+<th>
+                <p>
+                  Value
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Attrib</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ Re-initialize using assignment of default constructed value.
+                </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">&lt;&gt;::</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>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">&gt;</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ Clear the <code class="computeroutput"><span class="identifier">optional</span></code>
+                  instance and leave it uninitialized.
+                </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">&lt;</span><span class="identifier">T1</span><span class="special">,</span> + <span class="identifier">T2</span><span class="special">,</span>
+                  <span class="special">...&gt;</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ Invoke the <code class="computeroutput"><span class="identifier">clear_value</span></code>
+                  customization point for the currently held value.
+                </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">&lt;</span><span class="identifier">T1</span><span class="special">,</span> + <span class="identifier">T2</span><span class="special">,</span>
+                  <span class="special">...&gt;</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ Invoke the <code class="computeroutput"><span class="identifier">clear_value</span></code>
+                  customization point for all elements of the tuple.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">unused_type</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+                  Do nothing.
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.clear_value.when_to_implement"></a><h6>
+<a name="id956719"></a>
+ <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.when_to_implement">When
+          to Implement</a>
+        </h6>
+<p>
+ The customization point <code class="computeroutput"><span class="identifier">clear_value</span></code> + 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>.
+        </p>
+<a name="spirit.advanced.customize.clear_value.example"></a><h6>
+<a name="id956754"></a>
+ <a class="link" href="clear_value.html#spirit.advanced.customize.clear_value.example">Example</a>
+        </h6>
+<p>
+          TBD
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="store_value/push_back.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="extract_from.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/extract_from.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,355 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Extract an Attribute Value to Generate Output (Karma)</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<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)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="clear_value.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="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
+        Attribute Value to Generate Output (Karma)</a>
+</h4></div></div></div>
+<a name="spirit.advanced.customize.extract_from.extract_from"></a><h6>
+<a name="id956783"></a>
+ <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.extract_from">extract_from</a>
+        </h6>
+<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 + 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="id956807"></a>
+ <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.module_headers">Module
+          Headers</a>
+        </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">karma</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">extract_from</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+<div class="note" title="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>
+ 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="id956899"></a>
+ <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.namespace">Namespace</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<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>
+</table></div>
+<a name="spirit.advanced.customize.extract_from.synopsis"></a><h6>
+<a name="id956972"></a>
+ <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.synopsis">Synopsis</a>
+        </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Attrib</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span> +<span class="keyword">struct</span> <span class="identifier">extract_from_attribute</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">&lt;</span><span class="identifier">unspecified</span><span class="special">&gt;</span> <span class="identifier">type</span><span class="special">;</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Context</span><span class="special">&gt;</span> + <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">&amp;</span> <span class="identifier">attr</span><span class="special">,</span> <span class="identifier">Context</span><span class="special">&amp;</span> <span class="identifier">context</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="spirit.advanced.customize.extract_from.template_parameters"></a><h6>
+<a name="id957147"></a>
+ <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.template_parameters">Template
+          parameters</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Parameter
+                </p>
+                </th>
+<th>
+                <p>
+                  Description
+                </p>
+                </th>
+<th>
+                <p>
+                  Default
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Attrib</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ The type, <code class="computeroutput"><span class="identifier">Attrib</span></code>
+                  of the attribute to be used to generate output from.
+                </p>
+                </td>
+<td>
+                <p>
+                  none
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Enable</span></code>
+                </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>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Context</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ This is the type of the current generator execution context.
+                </p>
+                </td>
+<td class="auto-generated"> </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.extract_from.notation"></a><h6>
+<a name="id957337"></a>
+ <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.notation">Notation</a>
+        </h6>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Attrib</span></code></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>
+<dd><p>
+ A attribute instance of type <code class="computeroutput"><span class="identifier">Attrib</span></code>.
+            </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.extract_from.expression_semantics"></a><h6>
+<a name="id957403"></a>
+ <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.expression_semantics">Expression
+          Semantics</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Expression
+                </p>
+                </th>
+<th>
+                <p>
+                  Semantics
+                </p>
+                </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; class="table-programlisting"><span class="identifier">extract_from_attribute</span><span class="special">&lt;</span><span class="identifier">Attrib</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">attr</span><span class="special">,</span> <span class="identifier">ctx</span><span class="special">)</span></pre>
+<p>
+                </p>
+                </td>
+<td>
+                <p>
+ Extract the value to generate output from and return it to the
+                  caller.
+                </p>
+                </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.extract_from.predefined_specializations"></a><h6>
+<a name="id957510"></a>
+ <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.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 exposed and the corresponding semantics:
+        </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Template Parameters
+                </p>
+                </th>
+<th>
+                <p>
+                  Value
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+ <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">&amp;</span></code>. + The function <code class="computeroutput"><span class="identifier">call</span><span class="special">()</span></code> returns the argument by reference
+                  without change.
+                </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">&lt;</span><span class="identifier">Attrib</span><span class="special">&gt;</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">&amp;</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">&lt;&gt;</span></code>
+                  argument by reference without change.
+                </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">&lt;</span><span class="identifier">Attrib</span><span class="special">&gt;</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">&amp;</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">&lt;&gt;</span></code> argument by reference without
+                  change.
+                </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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.extract_from.when_to_implement"></a><h6>
+<a name="id957854"></a>
+ <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.when_to_implement">When
+          to implement</a>
+        </h6>
+<p>
+ The customization point <code class="computeroutput"><span class="identifier">extract_from_attribute</span></code> + 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>
+          and is not copy constructible.
+        </p>
+<a name="spirit.advanced.customize.extract_from.example"></a><h6>
+<a name="id957888"></a>
+ <a class="link" href="extract_from.html#spirit.advanced.customize.extract_from.example">Example</a>
+        </h6>
+<p>
+          TBD
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="clear_value.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="iterate.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/is_container.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,503 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Determine if a Type Should be Treated as a Container (Qi and Karma)</title> +<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<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)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../customize.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="transform.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" 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
+        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="id940739"></a>
+ <a class="link" href="is_container.html#spirit.advanced.customize.is_container.is_container">is_container</a>
+        </h6>
+<p>
+ The template <code class="computeroutput"><span class="identifier">is_container</span></code> + 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 &gt;&gt; b)">Sequence</a> + (<code class="computeroutput"><span class="special">&gt;&gt;</span></code>) and <span class="emphasis"><em>Karma</em></span> + <a class="link" href="../../karma/reference/operator/sequence.html" title="Sequences (a &lt;&lt; b)">Sequence (<code class="computeroutput"><span class="special">&lt;&lt;</span></code>)</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="id940794"></a>
+ <a class="link" href="is_container.html#spirit.advanced.customize.is_container.header">Header</a>
+        </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+<div class="note" title="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>
+ 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="id940879"></a>
+ <a class="link" href="is_container.html#spirit.advanced.customize.is_container.namespace">Namespace</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<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>
+</table></div>
+<a name="spirit.advanced.customize.is_container.synopsis"></a><h6>
+<a name="id940952"></a>
+ <a class="link" href="is_container.html#spirit.advanced.customize.is_container.synopsis">Synopsis</a>
+        </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span> +<span class="keyword">struct</span> <span class="identifier">is_container</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">&lt;</span><span class="identifier">unspecified</span><span class="special">&gt;</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="id941051"></a>
+ <a class="link" href="is_container.html#spirit.advanced.customize.is_container.template_parameters">Template
+          parameters</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Parameter
+                </p>
+                </th>
+<th>
+                <p>
+                  Description
+                </p>
+                </th>
+<th>
+                <p>
+                  Default
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Container</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ The type, <code class="computeroutput"><span class="identifier">Container</span></code> + which needs to be tested whether it has to be treated as a container
+                </p>
+                </td>
+<td>
+                <p>
+                  none
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Enable</span></code>
+                </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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.is_container.notation"></a><h6>
+<a name="id941216"></a>
+ <a class="link" href="is_container.html#spirit.advanced.customize.is_container.notation">Notation</a>
+        </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>
+<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>
+<dd><p>
+              Arbitrary types
+            </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.is_container.expression_semantics"></a><h6>
+<a name="id941282"></a>
+ <a class="link" href="is_container.html#spirit.advanced.customize.is_container.expression_semantics">Expression
+          Semantics</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Expression
+                </p>
+                </th>
+<th>
+                <p>
+                  Semantics
+                </p>
+                </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">is_container</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">type</span></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> + otherwise (See <a href="../../../../../../../libs/mpl/doc/refmanual/integral-constant.html" target="_top">MPL
+                  Boolean Constant</a>).
+                </p>
+                </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.is_container.predefined_specializations"></a><h6>
+<a name="id943082"></a>
+ <a class="link" href="is_container.html#spirit.advanced.customize.is_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 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
+          Boolean Constant</a>):
+        </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Template Parameters
+                </p>
+                </th>
+<th>
+                <p>
+                  Value
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+ <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">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ Returns <code class="computeroutput"><span class="identifier">is_container</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">type</span></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">&lt;</span><span class="identifier">T1</span><span class="special">,</span> + <span class="identifier">T2</span><span class="special">,</span>
+                  <span class="special">...&gt;</span></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">&lt;</span><span class="identifier">TN</span><span class="special">&gt;::</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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.is_container.when_to_implement"></a><h6>
+<a name="id943493"></a>
+ <a class="link" href="is_container.html#spirit.advanced.customize.is_container.when_to_implement">When
+          to implement</a>
+        </h6>
+<p>
+ The customization point <code class="computeroutput"><span class="identifier">is_container</span></code> + 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">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</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
+          propagation rule in the form:
+        </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">):</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
+</pre>
+<p>
+ where <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>.
+        </p>
+<a name="spirit.advanced.customize.is_container.related_attribute_customization_points"></a><h6>
+<a name="id943652"></a>
+ <a class="link" href="is_container.html#spirit.advanced.customize.is_container.related_attribute_customization_points">Related
+          Attribute Customization Points</a>
+        </h6>
+<p>
+ If this customization point is implemented, the following other customization
+          points might need to be implemented as well.
+        </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Name
+                </p>
+                </th>
+<th>
+                <p>
+                  When to implement
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+ <a 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>
+                  is implemented.
+                </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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.is_container.example"></a><h6>
+<a name="id944184"></a>
+ <a class="link" href="is_container.html#spirit.advanced.customize.is_container.example">Example</a>
+        </h6>
+<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>.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../customize.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="transform.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/begin_container.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,471 @@
+<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> +<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../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">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td> +<td align="center"><a href="../../../../../../../../index.html">Home</a></td> +<td align="center"><a href="../../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<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"> + Get the Iterator pointing to the Begin of a Container Attribute</a>
+</h5></div></div></div>
+<a name="spirit.advanced.customize.iterate.begin_container.begin_container"></a><h6>
+<a name="id962296"></a>
+ <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.begin_container">begin_container</a>
+          </h6>
+<p>
+ The template <code class="computeroutput"><span class="identifier">begin_container</span></code> + 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 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="id962364"></a>
+ <a class="link" 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">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<div class="note" title="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>
+ 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="id962862"></a>
+ <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<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>
+</table></div>
+<a name="spirit.advanced.customize.iterate.begin_container.synopsis"></a><h6>
+<a name="id962940"></a>
+ <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span> +<span class="keyword">struct</span> <span class="identifier">begin_container</span>
+<span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">container_iterator</span><span class="special">&lt;</span><span class="identifier">Container</span><span class="special">&gt;::</span><span class="identifier">type</span> + <span class="identifier">call</span><span class="special">(</span><span class="identifier">Container</span><span class="special">&amp;</span> <span class="identifier">c</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="spirit.advanced.customize.iterate.begin_container.template_parameters"></a><h6>
+<a name="id963066"></a>
+ <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">Container</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+ The type, <code class="computeroutput"><span class="identifier">Container</span></code> + for which the iterator pointing to the first element has to be
+                    returned
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    none
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">Enable</span></code>
+                  </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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.iterate.begin_container.notation"></a><h6>
+<a name="id963231"></a>
+ <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.notation">Notation</a>
+          </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>
+<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>
+<dd><p>
+ An instance of a container, <code class="computeroutput"><span class="identifier">C</span></code>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.iterate.begin_container.expression_semantics"></a><h6>
+<a name="id963296"></a>
+ <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">begin_container</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
+                  </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 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>
+</tr></tbody>
+</table></div>
+<p>
+ The returned instance conceptually needs to be equivalent to a standard + 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 + 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>),
+            </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>
+<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>
+</ul></div>
+<a name="spirit.advanced.customize.iterate.begin_container.predefined_specializations"></a><h6>
+<a name="id963462"></a>
+ <a class="link" 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>:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Template Parameters
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Value
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <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">&amp;</span><span class="identifier">unused</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.iterate.begin_container.when_to_implement"></a><h6>
+<a name="id963649"></a>
+ <a class="link" 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> + 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">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</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>).
+          </p>
+<a name="spirit.advanced.customize.iterate.begin_container.related_attribute_customization_points"></a><h6>
+<a name="id963720"></a>
+ <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.related_attribute_customization_points">Related
+            Attribute Customization Points</a>
+          </h6>
+<p>
+ If this customization point is implemented, the following other customization
+            points might need to be implemented as well.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Name
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    When to implement
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <a 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>
+ 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>
+</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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.iterate.begin_container.example"></a><h6>
+<a name="id964207"></a>
+ <a class="link" href="begin_container.html#spirit.advanced.customize.iterate.begin_container.example">Example</a>
+          </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>.
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<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>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/compare_iterators.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,443 @@
+<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> +<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../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">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td> +<td align="center"><a href="../../../../../../../../index.html">Home</a></td> +<td align="center"><a href="../../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<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"> + Compare two Iterator pointing into a Container Attribute for Equality</a>
+</h5></div></div></div>
+<a name="spirit.advanced.customize.iterate.compare_iterators.compare_iterators"></a><h6>
+<a name="id976061"></a>
+ <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.compare_iterators">compare_iterators</a>
+          </h6>
+<p>
+ The template <code class="computeroutput"><span class="identifier">compare_iterators</span></code> + 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 end of the element sequence to gerenate output for.
+          </p>
+<a name="spirit.advanced.customize.iterate.compare_iterators.module_headers"></a><h6>
+<a name="id976158"></a>
+ <a class="link" 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">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<div class="note" title="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>
+ 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="id976246"></a>
+ <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<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>
+</table></div>
+<a name="spirit.advanced.customize.iterate.compare_iterators.synopsis"></a><h6>
+<a name="id976324"></a>
+ <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span> +<span class="keyword">struct</span> <span class="identifier">compare_iterators</span>
+<span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">call</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">it1</span><span class="special">,</span> <span class="identifier">Iterator</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">it2</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="spirit.advanced.customize.iterate.compare_iterators.template_parameters"></a><h6>
+<a name="id976457"></a>
+ <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">Iterator</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+ The type, <code class="computeroutput"><span class="identifier">Iterator</span></code> + 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>
+                    none
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">Enable</span></code>
+                  </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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.iterate.compare_iterators.notation"></a><h6>
+<a name="id976632"></a>
+ <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.notation">Notation</a>
+          </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>
+<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>
+<dd><p>
+ Instance of iterators of type, <code class="computeroutput"><span class="identifier">Iterator</span></code>.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">C</span></code></span></dt>
+<dd><p>
+ A container type a iterator type, <code class="computeroutput"><span class="identifier">Iterator</span></code>
+                belongs to.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.iterate.compare_iterators.expression_semantics"></a><h6>
+<a name="id976729"></a>
+ <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">compare_iterators</span><span class="special">&lt;</span><span class="identifier">Iterator</span><span class="special">&gt;::</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
+                    treated as beeing equal.
+                  </p>
+                  </td>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.iterate.compare_iterators.predefined_specializations"></a><h6>
+<a name="id976848"></a>
+ <a class="link" 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>:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Template Parameters
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Value
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.iterate.compare_iterators.when_to_implement"></a><h6>
+<a name="id976992"></a>
+ <a class="link" 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> + 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> + 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">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</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>).
+          </p>
+<a name="spirit.advanced.customize.iterate.compare_iterators.related_attribute_customization_points"></a><h6>
+<a name="id977063"></a>
+ <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.related_attribute_customization_points">Related
+            Attribute Customization Points</a>
+          </h6>
+<p>
+ If this customization point is implemented, the following other customization
+            points might need to be implemented as well.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Name
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    When to implement
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <a 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>
+ 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>
+</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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.iterate.compare_iterators.example"></a><h6>
+<a name="id979189"></a>
+ <a class="link" href="compare_iterators.html#spirit.advanced.customize.iterate.compare_iterators.example">Example</a>
+          </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>.
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<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>
+</body>
+</html>
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/container_iterator.html Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/deref_iterator.html Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/end_container.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,451 @@
+<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> +<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../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">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td> +<td align="center"><a href="../../../../../../../../index.html">Home</a></td> +<td align="center"><a href="../../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<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">
+          Get the Iterator pointing to the End of a Container Attribute</a>
+</h5></div></div></div>
+<a name="spirit.advanced.customize.iterate.end_container.end_container"></a><h6>
+<a name="id964266"></a>
+ <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.end_container">end_container</a>
+          </h6>
+<p>
+ The template <code class="computeroutput"><span class="identifier">end_container</span></code> + 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 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="id964339"></a>
+ <a class="link" 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">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<div class="note" title="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>
+ 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="id964429"></a>
+ <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<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>
+</table></div>
+<a name="spirit.advanced.customize.iterate.end_container.synopsis"></a><h6>
+<a name="id964507"></a>
+ <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span> +<span class="keyword">struct</span> <span class="identifier">end_container</span>
+<span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">container_iterator</span><span class="special">&lt;</span><span class="identifier">Container</span><span class="special">&gt;::</span><span class="identifier">type</span> + <span class="identifier">call</span><span class="special">(</span><span class="identifier">Container</span><span class="special">&amp;</span> <span class="identifier">c</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="spirit.advanced.customize.iterate.end_container.template_parameters"></a><h6>
+<a name="id964633"></a>
+ <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">Container</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+ The type, <code class="computeroutput"><span class="identifier">Container</span></code> + for which the iterator pointing to the first element has to be
+                    returned
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    none
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">Enable</span></code>
+                  </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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.iterate.end_container.notation"></a><h6>
+<a name="id964799"></a>
+ <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.notation">Notation</a>
+          </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>
+<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>
+<dd><p>
+ An instance of a container, <code class="computeroutput"><span class="identifier">C</span></code>.
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.iterate.end_container.expression_semantics"></a><h6>
+<a name="id964863"></a>
+ <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">end_container</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span></code>
+                  </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>. + 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>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.iterate.end_container.predefined_specializations"></a><h6>
+<a name="id964976"></a>
+ <a class="link" 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>:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Template Parameters
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Value
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <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">&amp;</span><span class="identifier">unused</span></code>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.iterate.end_container.when_to_implement"></a><h6>
+<a name="id965716"></a>
+ <a class="link" 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> + 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">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</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>).
+          </p>
+<a name="spirit.advanced.customize.iterate.end_container.related_attribute_customization_points"></a><h6>
+<a name="id965787"></a>
+ <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.related_attribute_customization_points">Related
+            Attribute Customization Points</a>
+          </h6>
+<p>
+ If this customization point is implemented, the following other customization
+            points might need to be implemented as well.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Name
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    When to implement
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <a 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>
+ 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>
+</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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.iterate.end_container.example"></a><h6>
+<a name="id966272"></a>
+ <a class="link" href="end_container.html#spirit.advanced.customize.iterate.end_container.example">Example</a>
+          </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>.
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<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>
+</body>
+</html>
=======================================
--- /dev/null   
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate/next_iterator.html Thu Dec 3 23:11:44 2009
Binary file, no diff available.
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/iterate.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,59 @@
+<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> +<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<link rel="home" href="../../../index.html" title="Spirit 2.1">
+<link rel="up" href="../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)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<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
+        Values to Generate Output from a Container (Karma)</a>
+</h4></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>
+<dt><span class="section"><a href="iterate/begin_container.html">
+ Get the Iterator pointing to the Begin of a Container Attribute</a></span></dt>
+<dt><span class="section"><a href="iterate/end_container.html">
+ Get the Iterator pointing to the End of a Container Attribute</a></span></dt>
+<dt><span class="section"><a href="iterate/next_iterator.html">
+ Increment the Iterator pointing into a Container Attribute</a></span></dt>
+<dt><span class="section"><a href="iterate/deref_iterator.html">
+ Dereference the Iterator pointing into a Container Attribute</a></span></dt>
+<dt><span class="section"><a href="iterate/compare_iterators.html">
+ Compare two Iterator pointing into a Container Attribute for Equality</a></span></dt>
+</dl></div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<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>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/container_value.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,403 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Determine the Type to be Stored in a Container (Qi)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<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)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td> +<td align="center"><a href="../../../../../../../../index.html">Home</a></td> +<td align="center"><a href="../../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../store_value.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../store_value.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="push_back.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" 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)">
+          Determine the Type to be Stored in a Container (Qi)</a>
+</h5></div></div></div>
+<a name="spirit.advanced.customize.store_value.container_value.container_value"></a><h6>
+<a name="id952641"></a>
+ <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.container_value">container_value</a>
+          </h6>
+<p>
+ The template <code class="computeroutput"><span class="identifier">container_value</span></code> + 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
+            the type to store in a container.
+          </p>
+<a name="spirit.advanced.customize.store_value.container_value.module_headers"></a><h6>
+<a name="id952687"></a>
+ <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.module_headers">Module
+            Headers</a>
+          </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<div class="note" title="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>
+ 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="id952775"></a>
+ <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<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>
+</table></div>
+<a name="spirit.advanced.customize.store_value.container_value.synopsis"></a><h6>
+<a name="id952853"></a>
+ <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span> +<span class="keyword">struct</span> <span class="identifier">container_value</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">&lt;</span><span class="identifier">unspecified</span><span class="special">&gt;</span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<a name="spirit.advanced.customize.store_value.container_value.template_parameters"></a><h6>
+<a name="id952951"></a>
+ <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">Container</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+ The type, <code class="computeroutput"><span class="identifier">Container</span></code> + needs to be tested whether it has to be treated as a container
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    none
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">Enable</span></code>
+                  </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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.container_value.notation"></a><h6>
+<a name="id953117"></a>
+ <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.notation">Notation</a>
+          </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>
+<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>
+<dd><p>
+                Arbitrary types
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.store_value.container_value.expression_semantics"></a><h6>
+<a name="id953183"></a>
+ <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">container_value</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+                  </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>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.container_value.predefined_specializations"></a><h6>
+<a name="id953275"></a>
+ <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.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 exposed and the corresponding
+            semantics:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Template Parameters
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Value
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <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>
+</tr>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+ Returns <code class="computeroutput"><span class="identifier">container_value</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;::</span><span class="identifier">type</span></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">&lt;</span><span class="identifier">T1</span><span class="special">,</span> + <span class="identifier">T2</span><span class="special">,</span>
+                    <span class="special">...&gt;</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+ Returns <code class="computeroutput"><span class="identifier">container_value</span><span class="special">&lt;</span><span class="identifier">TN</span><span class="special">&gt;::</span><span class="identifier">value</span></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">&lt;</span><span class="identifier">TN</span><span class="special">&gt;::</span><span class="identifier">type</span></code> + evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>. + Otherwise it will return <code class="computeroutput"><span class="identifier">unused_type</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>.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.container_value.when_to_implement"></a><h6>
+<a name="id953607"></a>
+ <a class="link" 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> + 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
+            components have an attribute propagation rule in the form:
+          </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">):</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
+</pre>
+<p>
+ where <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>.
+          </p>
+<a name="spirit.advanced.customize.store_value.container_value.related_attribute_customization_points"></a><h6>
+<a name="id953723"></a>
+ <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.related_attribute_customization_points">Related
+            Attribute Customization Points</a>
+          </h6>
+<p>
+ If this customization point is implemented, the following other customization
+            points might need to be implemented as well.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Name
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    When to implement
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <a 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>
+</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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.container_value.example"></a><h6>
+<a name="id953868"></a>
+ <a class="link" href="container_value.html#spirit.advanced.customize.store_value.container_value.example">Example</a>
+          </h6>
+<p>
+            TBD
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../store_value.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../store_value.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="push_back.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value/push_back.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,450 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Store a Parsed Attribute Value into a Container (Qi)</title>
+<link rel="stylesheet" href="../../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<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)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../../boost.png"></td> +<td align="center"><a href="../../../../../../../../index.html">Home</a></td> +<td align="center"><a href="../../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="container_value.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../store_value.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../clear_value.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" 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)">
+          Store a Parsed Attribute Value into a Container (Qi)</a>
+</h5></div></div></div>
+<a name="spirit.advanced.customize.store_value.push_back.push_back_container"></a><h6>
+<a name="id953899"></a>
+ <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.push_back_container">push_back_container</a>
+          </h6>
+<p>
+ The template <code class="computeroutput"><span class="identifier">push_back_container</span></code> + 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>)
+            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="id953949"></a>
+ <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.module_headers">Module
+            Headers</a>
+          </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
+          </p>
+<div class="note" title="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>
+ 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="id954244"></a>
+ <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.namespace">Namespace</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<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>
+</table></div>
+<a name="spirit.advanced.customize.store_value.push_back.synopsis"></a><h6>
+<a name="id954322"></a>
+ <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.synopsis">Synopsis</a>
+          </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Attrib</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">&gt;</span> +<span class="keyword">struct</span> <span class="identifier">push_back_container</span>
+<span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">void</span> <span class="identifier">call</span><span class="special">(</span><span class="identifier">Container</span><span class="special">&amp;</span> <span class="identifier">c</span><span class="special">,</span> <span class="identifier">Attrib</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<a name="spirit.advanced.customize.store_value.push_back.template_parameters"></a><h6>
+<a name="id954464"></a>
+ <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.template_parameters">Template
+            parameters</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Parameter
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Default
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">Container</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+ The type, <code class="computeroutput"><span class="identifier">Container</span></code> + needs to be tested whether it has to be treated as a container
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    none
+                  </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 + 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>
+                    none
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">Enable</span></code>
+                  </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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.push_back.notation"></a><h6>
+<a name="id954683"></a>
+ <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.notation">Notation</a>
+          </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>
+<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>
+<dd>
+<p>
+ A container instance of type <code class="computeroutput"><span class="identifier">C</span></code>.
+              </p>
+<p>
+ [<code class="computeroutput"><span class="identifier">Attrib</span></code>
+              </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>
+<dd><p>
+ A attribute instance of type <code class="computeroutput"><span class="identifier">Attrib</span></code>.
+              </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>
+<dd><p>
+                Arbitrary types
+              </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.store_value.push_back.expression_semantics"></a><h6>
+<a name="id954821"></a>
+ <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.expression_semantics">Expression
+            Semantics</a>
+          </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Expression
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Semantics
+                  </p>
+                  </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                  <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; class="table-programlisting"><span class="identifier">push_back_container</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">Attrib</span><span class="special">&gt;::</span><span class="identifier">call</span><span class="special">(</span><span class="identifier">c</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">)</span></pre>
+<p>
+                  </p>
+                  </td>
+<td>
+                  <p>
+ Static function that is invoked whenever an attribute value, + <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>
+</tr></tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.push_back.predefined_specializations"></a><h6>
+<a name="id954948"></a>
+ <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.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 exposed and the corresponding
+            semantics:
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Template Parameters
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    Value
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <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>
+</tr>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">optional</span><span class="special">&lt;</span><span class="identifier">C</span><span class="special">&gt;</span></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">&lt;&gt;</span></code> 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">&lt;</span><span class="identifier">C</span><span class="special">,</span> <span class="identifier">Attrib</span><span class="special">&gt;</span></code>, treating the instance held + by the optional (of type <code class="computeroutput"><span class="identifier">C</span></code>)
+                    as the container to store the attribute in.
+                  </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">&lt;</span><span class="identifier">T1</span><span class="special">,</span> + <span class="identifier">T2</span><span class="special">,</span> + <span class="special">...&gt;</span></code>, <code class="computeroutput"><span class="identifier">Attrib</span></code>
+                  </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">&lt;</span><span class="identifier">TN</span><span class="special">&gt;::</span><span class="identifier">type</span></code> + evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>, + this customization point specialization will apply <code class="computeroutput"><span class="identifier">push_back_container</span><span class="special">&lt;</span><span class="identifier">TN</span><span class="special">,</span> + <span class="identifier">Attrib</span><span class="special">&gt;</span></code>, + treating the instance held by the variant (of type <code class="computeroutput"><span class="identifier">TN</span></code>) as the container to store
+                    the attribute in. Otherwise it will raise an assertion.
+                  </p>
+                  </td>
+</tr>
+<tr>
+<td>
+                  <p>
+ <code class="computeroutput"><span class="identifier">unused_type</span></code>
+                  </p>
+                  </td>
+<td>
+                  <p>
+                    Do nothing.
+                  </p>
+                  </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.push_back.when_to_implement"></a><h6>
+<a name="id955356"></a>
+ <a class="link" 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> + 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>. + These components have an attribute propagation rule in the form:
+          </p>
+<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span> <span class="special">--&gt;</span> <span class="identifier">Op</span><span class="special">(</span><span class="identifier">a</span><span class="special">):</span> <span class="identifier">vector</span><span class="special">&lt;</span><span class="identifier">A</span><span class="special">&gt;</span>
+</pre>
+<p>
+ where <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>.
+          </p>
+<a name="spirit.advanced.customize.store_value.push_back.related_attribute_customization_points"></a><h6>
+<a name="id955506"></a>
+ <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.related_attribute_customization_points">Related
+            Attribute Customization Points</a>
+          </h6>
+<p>
+ If this customization point is implemented, the following other customization
+            points might need to be implemented as well.
+          </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Name
+                  </p>
+                  </th>
+<th>
+                  <p>
+                    When to implement
+                  </p>
+                  </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+ <a 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>
+</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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.store_value.push_back.example"></a><h6>
+<a name="id955649"></a>
+ <a class="link" href="push_back.html#spirit.advanced.customize.store_value.push_back.example">Example</a>
+          </h6>
+<p>
+            TBD
+          </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="container_value.html"><img src="../../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../store_value.html"><img src="../../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../../index.html"><img src="../../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="../clear_value.html"><img src="../../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/store_value.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Store Parsed Attribute Values into a Container (Qi)</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<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)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="assign_to/assign_to_attribute_from_value.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="store_value/container_value.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" 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
+        Attribute Values into a Container (Qi)</a>
+</h4></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="store_value/container_value.html">
+ Determine the Type to be Stored in a Container (Qi)</a></span></dt>
+<dt><span class="section"><a href="store_value/push_back.html">
+ Store a Parsed Attribute Value into a Container (Qi)</a></span></dt>
+</dl></div>
+<p>
+ In order to customize Spirit to accept a given data type as a container + for elements parsed by any of the repetitive parsers (<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
+          describes both.
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="assign_to/assign_to_attribute_from_value.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="store_value/container_value.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize/transform.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,493 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Transform an Attribute to a Different Type (Qi and Karma)</title>
+<link rel="stylesheet" href="../../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<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)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td> +<td align="center"><a href="../../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_container.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="assign_to.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" 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
+        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="id944240"></a>
+ <a class="link" href="transform.html#spirit.advanced.customize.transform.transform_attribute">transform_attribute</a>
+        </h6>
+<p>
+ The template <code class="computeroutput"><span class="identifier">transform_attribute</span></code> + 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 + 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>).
+        </p>
+<a name="spirit.advanced.customize.transform.module_headers"></a><h6>
+<a name="id944316"></a>
+ <a class="link" href="transform.html#spirit.advanced.customize.transform.module_headers">Module
+          Headers</a>
+        </h6>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">attributes</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span>
+</pre>
+<p>
+ Also, see <a class="link" href="../../structure/include.html" title="Include">Include Structure</a>.
+        </p>
+<div class="note" title="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>
+ 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="id944402"></a>
+ <a class="link" href="transform.html#spirit.advanced.customize.transform.namespace">Namespace</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup><col></colgroup>
+<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>
+</table></div>
+<a name="spirit.advanced.customize.transform.synopsis"></a><h6>
+<a name="id944475"></a>
+ <a class="link" href="transform.html#spirit.advanced.customize.transform.synopsis">Synopsis</a>
+        </h6>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">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">&gt;</span> +<span class="keyword">struct</span> <span class="identifier">transform_attribute</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">&lt;</span><span class="identifier">unspecified</span><span class="special">&gt;</span> <span class="identifier">type</span><span class="special">;</span> + <span class="keyword">static</span> <span class="identifier">type</span> <span class="identifier">pre</span><span class="special">(</span><span class="identifier">Exposed</span><span class="special">&amp;</span> <span class="identifier">val</span><span class="special">);</span> + <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">&amp;</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="id944668"></a>
+ <a class="link" href="transform.html#spirit.advanced.customize.transform.template_parameters">Template
+          parameters</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Parameter
+                </p>
+                </th>
+<th>
+                <p>
+                  Description
+                </p>
+                </th>
+<th>
+                <p>
+                  Default
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Exposed</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ The attribute type supplied to the component which needs to be
+                  transformed.
+                </p>
+                </td>
+<td>
+                <p>
+                  none
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Transformed</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ The attribute type expected by the component to be provided as
+                  the result of the transformation.
+                </p>
+                </td>
+<td>
+                <p>
+                  none
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Enable</span></code>
+                </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>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.transform.notation"></a><h6>
+<a name="id944854"></a>
+ <a class="link" href="transform.html#spirit.advanced.customize.transform.notation">Notation</a>
+        </h6>
+<div class="variablelist" title="Notation">
+<p class="title"><b>Notation</b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Exposed</span></code></span></dt>
+<dd><p>
+ The type, <code class="computeroutput"><span class="identifier">Exposed</span></code> 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>
+<dd><p>
+ The type, <code class="computeroutput"><span class="identifier">Transformed</span></code> + 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>).
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">exposed</span></code></span></dt>
+<dd><p>
+ An instance of type <code class="computeroutput"><span class="identifier">Exposed</span></code>.
+            </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">transformed</span></code></span></dt>
+<dd><p>
+ An instance of type <code class="computeroutput"><span class="identifier">Transformed</span></code>.
+            </p></dd>
+</dl>
+</div>
+<a name="spirit.advanced.customize.transform.expression_semantics"></a><h6>
+<a name="id944992"></a>
+ <a class="link" href="transform.html#spirit.advanced.customize.transform.expression_semantics">Expression
+          Semantics</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Expression
+                </p>
+                </th>
+<th>
+                <p>
+                  Semantics
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">transform_attribute</span><span class="special">&lt;</span><span class="identifier">Exposed</span><span class="special">,</span> <span class="identifier">Transformed</span><span class="special">&gt;::</span><span class="identifier">type</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ Evaluates to the type to be used as the result of the transformation + (to be passed to the right hand side of the <code class="computeroutput"><span class="identifier">rule</span></code> + or to the embedded component of the <code class="computeroutput"><span class="identifier">attr_cast</span></code>. + Most of the time this is equal to <code class="computeroutput"><span class="identifier">Transformed</span></code>, + but in other cases this might evaluate to <code class="computeroutput"><span class="identifier">Transformed</span><span class="special">&amp;</span></code> instead avoiding superfluous
+                  object creation.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; class="table-programlisting"><span class="identifier">type</span> <span class="identifier">transform_attribute</span><span class="special">&lt;</span><span class="identifier">Exposed</span><span class="special">,</span> <span class="identifier">Transformed</span><span class="special">&gt;::</span><span class="identifier">pre</span><span class="special">(</span><span class="identifier">exposed</span><span class="special">)</span></pre>
+<p>
+                </p>
+                </td>
+<td>
+                <p>
+ Do <code class="computeroutput"><span class="identifier">pre</span></code>-transformation + before invoking 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>). + This takes the attribute supplied as by the user (of type <code class="computeroutput"><span class="identifier">Exposed</span></code>) and returns the attribute + to be passed down the component hierarchy (of the type as exposed + by the metafunction <code class="computeroutput"><span class="identifier">type</span></code>). + This function will be called in <span class="emphasis"><em>Qi</em></span> and for
+                  <span class="emphasis"><em>Karma</em></span>.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; class="table-programlisting"><span class="keyword">void</span> <span class="identifier">transform_attribute</span><span class="special">&lt;</span><span class="identifier">Exposed</span><span class="special">,</span> <span class="identifier">Transformed</span><span class="special">&gt;::</span><span class="identifier">post</span><span class="special">(</span><span class="identifier">exposed</span><span class="special">,</span> <span class="identifier">transformed</span><span class="special">)</span></pre>
+<p>
+                </p>
+                </td>
+<td>
+                <p>
+ Do <code class="computeroutput"><span class="identifier">post</span></code>-transformation + after the invocation of 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>). + This takes the original attribute as supplied by the user and the + attribute as returned from the right hand side (embedded) component + and is expected to propagate the result back into the supplied + attribute instance. This function will be called in <span class="emphasis"><em>Qi</em></span>
+                  only.
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.transform.predefined_specializations"></a><h6>
+<a name="id945872"></a>
+ <a class="link" href="transform.html#spirit.advanced.customize.transform.predefined_specializations">Predefined
+          Specializations</a>
+        </h6>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Template parameters
+                </p>
+                </th>
+<th>
+                <p>
+                  Semantics
+                </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Exposed</span></code>, <code class="computeroutput"><span class="identifier">Transformed</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">type</span></code> evaluates + to <code class="computeroutput"><span class="identifier">Transformed</span></code>, + <code class="computeroutput"><span class="identifier">pre</span><span class="special">()</span></code> + returns a new instance of <code class="computeroutput"><span class="identifier">Transformed</span></code> + constructed from the argument of type <code class="computeroutput"><span class="identifier">Exposed</span></code>, + <code class="computeroutput"><span class="identifier">post</span><span class="special">()</span></code> + assigns <code class="computeroutput"><span class="identifier">transformed</span></code> + to <code class="computeroutput"><span class="identifier">exposed</span></code>.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Exposed</span><span class="special">&amp;</span></code>, + <code class="computeroutput"><span class="identifier">Transformed</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">type</span></code> evaluates + to <code class="computeroutput"><span class="identifier">Transformed</span></code>, + <code class="computeroutput"><span class="identifier">pre</span><span class="special">()</span></code> + returns a new instance of <code class="computeroutput"><span class="identifier">Transformed</span></code> + constructed from the argument of type <code class="computeroutput"><span class="identifier">Exposed</span></code>, + <code class="computeroutput"><span class="identifier">post</span><span class="special">()</span></code> + assigns <code class="computeroutput"><span class="identifier">transformed</span></code> + to <code class="computeroutput"><span class="identifier">exposed</span></code>.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Attrib</span><span class="special">&amp;</span></code>, + <code class="computeroutput"><span class="identifier">Attrib</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">type</span></code> evaluates + to <code class="computeroutput"><span class="identifier">Attrib</span><span class="special">&amp;</span></code>, + <code class="computeroutput"><span class="identifier">pre</span><span class="special">()</span></code> + returns it's argument, <code class="computeroutput"><span class="identifier">post</span><span class="special">()</span></code> does nothing.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Exposed</span> <span class="keyword">const</span></code>, + <code class="computeroutput"><span class="identifier">Transformed</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ (usind in <span class="emphasis"><em>Karma</em></span> only) <code class="computeroutput"><span class="identifier">type</span></code> + evaluates to <code class="computeroutput"><span class="identifier">Transformed</span></code>, + <code class="computeroutput"><span class="identifier">pre</span><span class="special">()</span></code> + returns it's argument, <code class="computeroutput"><span class="identifier">post</span><span class="special">()</span></code> is not implemented.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Attrib</span> <span class="keyword">const</span><span class="special">&amp;</span></code>, <code class="computeroutput"><span class="identifier">Attrib</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ (usind in <span class="emphasis"><em>Karma</em></span> only) <code class="computeroutput"><span class="identifier">type</span></code> + evaluates to <code class="computeroutput"><span class="identifier">Attrib</span> <span class="keyword">const</span><span class="special">&amp;</span></code>, + <code class="computeroutput"><span class="identifier">pre</span><span class="special">()</span></code> + returns it's argument, <code class="computeroutput"><span class="identifier">post</span><span class="special">()</span></code> is not implemented.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Attrib</span> <span class="keyword">const</span></code>, + <code class="computeroutput"><span class="identifier">Attrib</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ (usind in <span class="emphasis"><em>Karma</em></span> only) <code class="computeroutput"><span class="identifier">type</span></code> + evaluates to <code class="computeroutput"><span class="identifier">Attrib</span> <span class="keyword">const</span><span class="special">&amp;</span></code>, + <code class="computeroutput"><span class="identifier">pre</span><span class="special">()</span></code> + returns it's argument, <code class="computeroutput"><span class="identifier">post</span><span class="special">()</span></code> is not implemented.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">unused_type</span></code>, <code class="computeroutput"><span class="identifier">Attrib</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">type</span></code> evaluates + to <code class="computeroutput"><span class="identifier">unused_type</span></code>, + <code class="computeroutput"><span class="identifier">pre</span><span class="special">()</span></code> + and <code class="computeroutput"><span class="identifier">post</span><span class="special">()</span></code>
+                  do nothing.
+                </p>
+                </td>
+</tr>
+<tr>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">Attrib</span></code>, <code class="computeroutput"><span class="identifier">unused_type</span></code>
+                </p>
+                </td>
+<td>
+                <p>
+ <code class="computeroutput"><span class="identifier">type</span></code> evaluates + to <code class="computeroutput"><span class="identifier">unused_type</span></code>, + <code class="computeroutput"><span class="identifier">pre</span><span class="special">()</span></code> + and <code class="computeroutput"><span class="identifier">post</span><span class="special">()</span></code>
+                  do nothing.
+                </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+<a name="spirit.advanced.customize.transform.when_to_implement"></a><h6>
+<a name="id946576"></a>
+ <a class="link" href="transform.html#spirit.advanced.customize.transform.when_to_implement">When
+          to implement</a>
+        </h6>
+<p>
+ The customization point <code class="computeroutput"><span class="identifier">transform_attribute</span></code> + needs to be implemented for a specific pair of types whenever the attribute + type supplied to a <code class="computeroutput"><span class="identifier">rule</span></code> + or <code class="computeroutput"><span class="identifier">attr_cast</span></code> cannot automatically + transformed to the attribute type expected by the right hand side of the + <code class="computeroutput"><span class="identifier">rule</span></code> (embedded component + of the <code class="computeroutput"><span class="identifier">attr_cast</span></code>) because + the default implementation as shown above is not applicable. Examples for + this could be that the type <code class="computeroutput"><span class="identifier">Transformed</span></code> + is not constructible from the type <code class="computeroutput"><span class="identifier">Exposed</span></code>.
+        </p>
+<a name="spirit.advanced.customize.transform.example"></a><h6>
+<a name="id946643"></a>
+ <a class="link" href="transform.html#spirit.advanced.customize.transform.example">Example</a>
+        </h6>
+<p>
+          TBD
+        </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="is_container.html"><img src="../../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../customize.html"><img src="../../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../../index.html"><img src="../../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="assign_to.html"><img src="../../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
=======================================
--- /dev/null
+++ /trunk/libs/spirit/doc/html/spirit/advanced/customize.html Thu Dec 3 23:11:44 2009
@@ -0,0 +1,170 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
+<title>Customization of Spirit's Attribute Handling</title>
+<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.75.0">
+<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)">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libraries.htm">Libraries</a></td> +<td align="center"><a href="http://www.boost.org/users/people.html";>People</a></td> +<td align="center"><a href="http://www.boost.org/users/faq.html";>FAQ</a></td>
+<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="indepth/parsers_indepth.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="customize/is_container.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+<div class="section" 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
+      Attribute Handling</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="customize/is_container.html"> Determine
+ if a Type Should be Treated as a Container (Qi and Karma)</a></span></dt>
+<dt><span class="section"><a href="customize/transform.html"> Transform an
+        Attribute to a Different Type (Qi and Karma)</a></span></dt>
+<dt><span class="section"><a href="customize/assign_to.html"> Store a Parsed
+        Attribute Value (Qi)</a></span></dt>
+<dt><span class="section"><a href="customize/store_value.html"> Store Parsed
+        Attribute Values into a Container (Qi)</a></span></dt>
+<dt><span class="section"><a href="customize/clear_value.html"> Re-Initialize
+        an Attribute Value before Parsing (Qi)</a></span></dt>
+<dt><span class="section"><a href="customize/extract_from.html"> Extract an
+        Attribute Value to Generate Output (Karma)</a></span></dt>
+<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="id940382"></a>
+ <a class="link" 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">
+<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>
+ Before you read on please be aware that the interfaces described in this + section are not finalized and may change in the future without attempting + to be backwards compatible. We document the customization point interfaces + anyways as we think they are important. Understanding customization points + helps understanding Spirit. Additionally they prove to be powerful tools + enabling full integration of the user's data structures with <span class="emphasis"><em>Qi's</em></span> + parsers and <span class="emphasis"><em>Karma's</em></span> generators.
+        </p></td></tr>
+</table></div>
+<p>
+ <a href="http://spirit.sourceforge.net"; target="_top">Spirit</a> has been written + with extensibility in mind. It provides many different attribute customization + points allowing to integrate custom data types with the process of parsing + in <span class="emphasis"><em>Spirit.Qi</em></span> or output generation with <span class="emphasis"><em>Spirit.Karma</em></span>. + All attribute customization points are exposed using a similar technique: + full or partial template specialization. <a href="http://spirit.sourceforge.net"; target="_top">Spirit</a> + generally implements the main template, providing a default implementation. + You as the user have to provide a partial or full specialization of this + template for the data types you want to integrate with the library. In fact, + the library uses these customization points itself for instance to handle + the magic of the <code class="computeroutput"><span class="identifier">unused_type</span></code>
+        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
+        the attribute type to be stored in a supplied STL container:
+      </p>
+<p>
+        </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="comment">/* = void*/</span><span class="special">&gt;</span> +<span class="keyword">struct</span> <span class="identifier">container_value</span> + <span class="special">:</span> <span class="identifier">detail</span><span class="special">::</span><span class="identifier">remove_value_const</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">::</span><span class="identifier">value_type</span><span class="special">&gt;</span>
+<span class="special">{};</span>
+</pre>
+<p>
+        </p>
+<p>
+      </p>
+<p>
+ This template is instantiated by the library at the appropriate places while + using the supplied container type as the template argument. The embedded + <code class="computeroutput"><span class="identifier">type</span></code> 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>:
+      </p>
+<p>
+        </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">template</span> <span class="special">&lt;&gt;</span> +<span class="keyword">struct</span> <span class="identifier">container_value</span><span class="special">&lt;</span><span class="identifier">unused_type</span><span class="special">&gt;</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unused_type</span> <span class="identifier">type</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+        </p>
+<p>
+      </p>
+<p>
+ which defines its embedded <code class="computeroutput"><span class="identifier">type</span></code> + to be <code class="computeroutput"><span class="identifier">unused_type</span></code> 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 + control over the template specialization process. But most of the time you
+        can safely forget about its existence.
+      </p>
+<p>
+ The following sections will describe all customization points, together with
+        a description which needs to be specialized for what purpose.
+      </p>
+<a name="spirit.advanced.customize.the_usage_of_customization_points"></a><h5>
+<a name="id940703"></a>
+ <a class="link" href="customize.html#spirit.advanced.customize.the_usage_of_customization_points">The
+        Usage of Customization Points</a>
+      </h5>
+<p>
+ The different customizations points are used by different parts of the library. + Part of the customizations points are used by both, <span class="emphasis"><em>Spirit.Qi</em></span> + and <span class="emphasis"><em>Spirit.Karma</em></span>, whereas others are specialized to + be applied for one of the sub-libraries only. We will explain when a specific + customization point needs to be implemented and, equally important, which + customization points need to be implemented at the same time. Often it is + not sufficient to provide a specialization for one single customization point + only, in this case you as the user have to provide all necessary customizations
+        for your data type you want to integrate with the library.
+      </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"; width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright (c) 2001-2009 Joel
+      de Guzman, Hartmut Kaiser<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying + file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt"; target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="indepth/parsers_indepth.html"><img src="../../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../advanced.html"><img src="../../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="customize/is_container.html"><img src="../../../../../../doc/html/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
=======================================
***Additional files exist in this changeset.***

Other related posts:

  • » [boost-doc-zh] r352 committed - 升级至1.41.0,第四批,libs/目录下s-t子目录 - boost-doc-zh