|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r56628 - in branches/release: boost/spirit boost/spirit/home/karma boost/spirit/home/karma/action boost/spirit/home/karma/auxiliary boost/spirit/home/karma/binary boost/spirit/home/karma/char boost/spirit/home/karma/detail boost/spirit/home/karma/directive boost/spirit/home/karma/nonterminal boost/spirit/home/karma/nonterminal/detail boost/spirit/home/karma/numeric boost/spirit/home/karma/numeric/detail boost/spirit/home/karma/operator boost/spirit/home/karma/stream boost/spirit/home/karma/string boost/spirit/home/lex/lexer boost/spirit/home/lex/lexer/lexertl boost/spirit/home/lex/qi boost/spirit/home/qi boost/spirit/home/qi/action boost/spirit/home/qi/auxiliary boost/spirit/home/qi/binary boost/spirit/home/qi/char boost/spirit/home/qi/detail boost/spirit/home/qi/directive boost/spirit/home/qi/nonterminal boost/spirit/home/qi/nonterminal/detail boost/spirit/home/qi/numeric boost/spirit/home/qi/numeric/detail boost/spirit/home/qi/operator boost/spirit/home/qi/string boost/spirit/home/support boost/spirit/home/support/auxiliary boost/spirit/home/support/char_encoding boost/spirit/include boost/spirit/repository/home/karma/directive boost/spirit/repository/home/karma/nonterminal boost/spirit/repository/home/qi/directive boost/spirit/repository/home/qi/nonterminal libs/spirit libs/spirit/classic/doc libs/spirit/doc libs/spirit/doc/abstracts libs/spirit/doc/html libs/spirit/doc/html/images libs/spirit/doc/html/images/callouts libs/spirit/doc/html/spirit libs/spirit/doc/html/spirit/abstracts libs/spirit/doc/html/spirit/abstracts/attributes libs/spirit/doc/html/spirit/abstracts/customize libs/spirit/doc/html/spirit/abstracts/customize/store_value libs/spirit/doc/html/spirit/abstracts/indepth libs/spirit/doc/html/spirit/karma libs/spirit/doc/html/spirit/karma/performance_measurements libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance libs/spirit/doc/html/spirit/karma/quick_reference libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators libs/spirit/doc/html/spirit/karma/reference libs/spirit/doc/html/spirit/karma/reference/auxiliary libs/spirit/doc/html/spirit/karma/reference/binary libs/spirit/doc/html/spirit/karma/reference/char libs/spirit/doc/html/spirit/karma/reference/directive libs/spirit/doc/html/spirit/karma/reference/generator_concepts libs/spirit/doc/html/spirit/karma/reference/numeric libs/spirit/doc/html/spirit/karma/reference/operator libs/spirit/doc/html/spirit/karma/reference/stream libs/spirit/doc/html/spirit/karma/reference/string libs/spirit/doc/html/spirit/karma/tutorials libs/spirit/doc/html/spirit/lex libs/spirit/doc/html/spirit/lex/abstracts libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives libs/spirit/doc/html/spirit/lex/quick_reference libs/spirit/doc/html/spirit/lex/reference libs/spirit/doc/html/spirit/lex/reference/lexer_concepts libs/spirit/doc/html/spirit/lex/reference/primitives libs/spirit/doc/html/spirit/lex/tutorials libs/spirit/doc/html/spirit/notes libs/spirit/doc/html/spirit/qi libs/spirit/doc/html/spirit/qi/quick_reference libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers libs/spirit/doc/html/spirit/qi/reference libs/spirit/doc/html/spirit/qi/reference/auxiliary libs/spirit/doc/html/spirit/qi/reference/binary libs/spirit/doc/html/spirit/qi/reference/char libs/spirit/doc/html/spirit/qi/reference/concepts libs/spirit/doc/html/spirit/qi/reference/directive libs/spirit/doc/html/spirit/qi/reference/numeric libs/spirit/doc/html/spirit/qi/reference/operator libs/spirit/doc/html/spirit/qi/reference/parser_concepts libs/spirit/doc/html/spirit/qi/reference/string libs/spirit/doc/html/spirit/qi/string libs/spirit/doc/html/spirit/qi/tutorials libs/spirit/doc/html/spirit/structure libs/spirit/doc/html/spirit/support libs/spirit/doc/karma libs/spirit/doc/lex libs/spirit/doc/notes libs/spirit/doc/qi libs/spirit/example/karma libs/spirit/example/lex libs/spirit/example/lex/static_lexer libs/spirit/example/qi libs/spirit/example/qi/mini_c libs/spirit/repository/doc/html libs/spirit/repository/doc/html/spirit_repository libs/spirit/repository/doc/html/spirit_repository/karma_components/directives libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal libs/spirit/repository/doc/html/spirit_repository/qi_components/directives libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive libs/spirit/repository/test/karma libs/spirit/test libs/spirit/test/karma libs/spirit/test/lex libs/spirit/test/qi
From: hartmut.kaiser_at_[hidden]
Date: 2009-10-06 19:57:48
Author: hkaiser
Date: 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
New Revision: 56628
URL: http://svn.boost.org/trac/boost/changeset/56628
Log:
Spirit: merging from trunk
Added:
branches/release/boost/spirit/home/karma/auxiliary/attr_cast.hpp
- copied unchanged from r56617, /trunk/boost/spirit/home/karma/auxiliary/attr_cast.hpp
branches/release/boost/spirit/home/karma/detail/extract_from.hpp
- copied unchanged from r56617, /trunk/boost/spirit/home/karma/detail/extract_from.hpp
branches/release/boost/spirit/home/karma/numeric/bool.hpp
- copied unchanged from r56617, /trunk/boost/spirit/home/karma/numeric/bool.hpp
branches/release/boost/spirit/home/karma/numeric/bool_policies.hpp
- copied unchanged from r56617, /trunk/boost/spirit/home/karma/numeric/bool_policies.hpp
branches/release/boost/spirit/home/karma/numeric/detail/bool_utils.hpp
- copied unchanged from r56617, /trunk/boost/spirit/home/karma/numeric/detail/bool_utils.hpp
branches/release/boost/spirit/home/karma/phoenix_attributes.hpp
- copied unchanged from r56617, /trunk/boost/spirit/home/karma/phoenix_attributes.hpp
branches/release/boost/spirit/home/qi/auxiliary/attr_cast.hpp
- copied unchanged from r56617, /trunk/boost/spirit/home/qi/auxiliary/attr_cast.hpp
branches/release/boost/spirit/home/qi/numeric/bool.hpp
- copied unchanged from r56617, /trunk/boost/spirit/home/qi/numeric/bool.hpp
branches/release/boost/spirit/home/qi/numeric/bool_policies.hpp
- copied unchanged from r56617, /trunk/boost/spirit/home/qi/numeric/bool_policies.hpp
branches/release/boost/spirit/home/support/attributes_fwd.hpp
- copied unchanged from r56617, /trunk/boost/spirit/home/support/attributes_fwd.hpp
branches/release/boost/spirit/home/support/auxiliary/
- copied from r56617, /trunk/boost/spirit/home/support/auxiliary/
branches/release/boost/spirit/home/support/auxiliary/attr_cast.hpp
- copied unchanged from r56617, /trunk/boost/spirit/home/support/auxiliary/attr_cast.hpp
branches/release/boost/spirit/home/support/has_semantic_action.hpp
- copied unchanged from r56617, /trunk/boost/spirit/home/support/has_semantic_action.hpp
branches/release/boost/spirit/include/karma_attr_cast.hpp
- copied unchanged from r56617, /trunk/boost/spirit/include/karma_attr_cast.hpp
branches/release/boost/spirit/include/karma_bool.hpp
- copied unchanged from r56617, /trunk/boost/spirit/include/karma_bool.hpp
branches/release/boost/spirit/include/karma_phoenix_attributes.hpp
- copied unchanged from r56617, /trunk/boost/spirit/include/karma_phoenix_attributes.hpp
branches/release/libs/spirit/doc/abstracts/attributes.qbk
- copied unchanged from r56618, /trunk/libs/spirit/doc/abstracts/attributes.qbk
branches/release/libs/spirit/doc/abstracts/customization_points.qbk
- copied unchanged from r56618, /trunk/libs/spirit/doc/abstracts/customization_points.qbk
branches/release/libs/spirit/doc/abstracts/indepth.qbk
- copied unchanged from r56618, /trunk/libs/spirit/doc/abstracts/indepth.qbk
branches/release/libs/spirit/doc/customization_point_template.qbk
- copied unchanged from r56618, /trunk/libs/spirit/doc/customization_point_template.qbk
branches/release/libs/spirit/doc/html/images/alternative.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/alternative.png
branches/release/libs/spirit/doc/html/images/and_predicate.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/and_predicate.png
branches/release/libs/spirit/doc/html/images/double_performance.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/double_performance.png
branches/release/libs/spirit/doc/html/images/flowofcontrol.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/flowofcontrol.png
branches/release/libs/spirit/doc/html/images/format_performance.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/format_performance.png
branches/release/libs/spirit/doc/html/images/int_performance.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/int_performance.png
branches/release/libs/spirit/doc/html/images/kleene.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/kleene.png
branches/release/libs/spirit/doc/html/images/non-terminal.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/non-terminal.png
branches/release/libs/spirit/doc/html/images/not_predicate.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/not_predicate.png
branches/release/libs/spirit/doc/html/images/optional.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/optional.png
branches/release/libs/spirit/doc/html/images/pascal_string.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/pascal_string.png
branches/release/libs/spirit/doc/html/images/plus.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/plus.png
branches/release/libs/spirit/doc/html/images/predicate.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/predicate.png
branches/release/libs/spirit/doc/html/images/sequence.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/sequence.png
branches/release/libs/spirit/doc/html/images/start_stop.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/start_stop.png
branches/release/libs/spirit/doc/html/images/terminal.png
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/images/terminal.png
branches/release/libs/spirit/doc/html/index.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/index.html
branches/release/libs/spirit/doc/html/spirit/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/
branches/release/libs/spirit/doc/html/spirit/abstracts/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/
branches/release/libs/spirit/doc/html/spirit/abstracts.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts.html
branches/release/libs/spirit/doc/html/spirit/abstracts/attributes/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/
branches/release/libs/spirit/doc/html/spirit/abstracts/attributes.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/attributes.html
branches/release/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html
branches/release/libs/spirit/doc/html/spirit/abstracts/attributes/more_sompound_attributes.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/more_sompound_attributes.html
branches/release/libs/spirit/doc/html/spirit/abstracts/attributes/nonterminal_attributes.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/nonterminal_attributes.html
branches/release/libs/spirit/doc/html/spirit/abstracts/attributes/primitive_attributes.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/primitive_attributes.html
branches/release/libs/spirit/doc/html/spirit/abstracts/customize/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/customize/
branches/release/libs/spirit/doc/html/spirit/abstracts/customize.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/customize.html
branches/release/libs/spirit/doc/html/spirit/abstracts/customize/is_container.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/customize/is_container.html
branches/release/libs/spirit/doc/html/spirit/abstracts/customize/store_value/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/customize/store_value/
branches/release/libs/spirit/doc/html/spirit/abstracts/customize/store_value.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/customize/store_value.html
branches/release/libs/spirit/doc/html/spirit/abstracts/customize/store_value/container_value.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/customize/store_value/container_value.html
branches/release/libs/spirit/doc/html/spirit/abstracts/indepth/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/indepth/
branches/release/libs/spirit/doc/html/spirit/abstracts/indepth.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/indepth.html
branches/release/libs/spirit/doc/html/spirit/abstracts/indepth/parsers_indepth.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/indepth/parsers_indepth.html
branches/release/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html
branches/release/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html
branches/release/libs/spirit/doc/html/spirit/acknowledgments.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/acknowledgments.html
branches/release/libs/spirit/doc/html/spirit/faq.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/faq.html
branches/release/libs/spirit/doc/html/spirit/introduction.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/introduction.html
branches/release/libs/spirit/doc/html/spirit/karma/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/
branches/release/libs/spirit/doc/html/spirit/karma.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma.html
branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/
branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements.html
branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/
branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance.html
branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html
branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html
branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/common_notation.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/common_notation.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/non_terminals.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/non_terminals.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/phoenix.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/phoenix.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/action.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/action.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/auxiliary.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/auxiliary.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/binary.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/binary.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/boolean.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/boolean.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/char.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/char.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/directives.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/directives.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/operators.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/operators.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/real_number.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/real_number.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/signed_int.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/signed_int.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/stream.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/stream.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/string.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/string.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/unsigned_int.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/primitive_generators/unsigned_int.html
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/semantic_actions.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/semantic_actions.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/
branches/release/libs/spirit/doc/html/spirit/karma/reference.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/
branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/attr_cast.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/attr_cast.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/binary/
branches/release/libs/spirit/doc/html/spirit/karma/reference/binary.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/binary.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/char/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/char/
branches/release/libs/spirit/doc/html/spirit/karma/reference/char.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/char.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/
branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/karma_basics.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/karma_basics.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/
branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/boolean.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/boolean.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/list.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/list.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/stream/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/stream/
branches/release/libs/spirit/doc/html/spirit/karma/reference/stream.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/stream.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/string/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/string/
branches/release/libs/spirit/doc/html/spirit/karma/reference/string.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/string.html
branches/release/libs/spirit/doc/html/spirit/karma/reference/string/string.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/string/string.html
branches/release/libs/spirit/doc/html/spirit/karma/tutorials.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/tutorials.html
branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_complex.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/karma/tutorials/karma_complex.html
branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html
branches/release/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html
branches/release/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html
branches/release/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html
branches/release/libs/spirit/doc/html/spirit/lex/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/lex/
branches/release/libs/spirit/doc/html/spirit/lex.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex.html
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/
branches/release/libs/spirit/doc/html/spirit/lex/abstracts.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts.html
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_attributes.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_attributes.html
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_parsing.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_parsing.html
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives.html
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_primitives.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_primitives.html
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_definition.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_definition.html
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html
branches/release/libs/spirit/doc/html/spirit/lex/lexer_introduction.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html
branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/lex/quick_reference/
branches/release/libs/spirit/doc/html/spirit/lex/quick_reference.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/quick_reference.html
branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/common_notation.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/quick_reference/common_notation.html
branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/lexers.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/quick_reference/lexers.html
branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/phoenix.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/quick_reference/phoenix.html
branches/release/libs/spirit/doc/html/spirit/lex/quick_reference/semantic_actions.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/quick_reference/semantic_actions.html
branches/release/libs/spirit/doc/html/spirit/lex/reference/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/
branches/release/libs/spirit/doc/html/spirit/lex/reference.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference.html
branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/
branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts.html
branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/lexer.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/lexer.html
branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/narylexer.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/narylexer.html
branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/primitivelexer.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/primitivelexer.html
branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/unarylexer.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/unarylexer.html
branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/primitives/
branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/primitives.html
branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives/char_tokendef.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/primitives/char_tokendef.html
branches/release/libs/spirit/doc/html/spirit/lex/reference/token.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/token.html
branches/release/libs/spirit/doc/html/spirit/lex/reference/tokendef.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/tokendef.html
branches/release/libs/spirit/doc/html/spirit/lex/tutorials/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/lex/tutorials/
branches/release/libs/spirit/doc/html/spirit/lex/tutorials.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/tutorials.html
branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html
branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html
branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html
branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_tutorials.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_tutorials.html
branches/release/libs/spirit/doc/html/spirit/notes/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/notes/
branches/release/libs/spirit/doc/html/spirit/notes.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/notes.html
branches/release/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html
branches/release/libs/spirit/doc/html/spirit/notes/style_guide.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/notes/style_guide.html
branches/release/libs/spirit/doc/html/spirit/preface.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/preface.html
branches/release/libs/spirit/doc/html/spirit/qi/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/
branches/release/libs/spirit/doc/html/spirit/qi.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/common_notation.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/common_notation.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/non_terminals.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/non_terminals.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/phoenix.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/phoenix.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/action.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/action.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/auxiliary.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/auxiliary.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/binary.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/binary.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/char.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/char.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/directive.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/directive.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/numeric.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/numeric.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/operator.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/operator.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/string.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/qi_parsers/string.html
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/semantic_actions.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/semantic_actions.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/
branches/release/libs/spirit/doc/html/spirit/qi/reference.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/basics.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/
branches/release/libs/spirit/doc/html/spirit/qi/reference/binary.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/binary.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/char/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/char/
branches/release/libs/spirit/doc/html/spirit/qi/reference/char.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/char.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/char/char.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/concepts/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/concepts/
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/
branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/boolean.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/boolean.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/list.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/list.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/
branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/string/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/string/
branches/release/libs/spirit/doc/html/spirit/qi/reference/string.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/string.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/string/string.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/string/string.html
branches/release/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html
branches/release/libs/spirit/doc/html/spirit/qi/string/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/string/
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/
branches/release/libs/spirit/doc/html/spirit/qi/tutorials.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials.html
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/complex___our_first_complex_parser.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/complex___our_first_complex_parser.html
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/number_list___stuffing_numbers_into_a_std__vector.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/number_list___stuffing_numbers_into_a_std__vector.html
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/number_list_attribute___one_more__with_style.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/number_list_attribute___one_more__with_style.html
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/number_list_redux___list_syntax.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/number_list_redux___list_syntax.html
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/sum___adding_numbers.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/sum___adding_numbers.html
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html
branches/release/libs/spirit/doc/html/spirit/references.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/references.html
branches/release/libs/spirit/doc/html/spirit/repository.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/repository.html
branches/release/libs/spirit/doc/html/spirit/structure/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/structure/
branches/release/libs/spirit/doc/html/spirit/structure.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/structure.html
branches/release/libs/spirit/doc/html/spirit/structure/include.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/structure/include.html
branches/release/libs/spirit/doc/html/spirit/support/
- copied from r56618, /trunk/libs/spirit/doc/html/spirit/support/
branches/release/libs/spirit/doc/html/spirit/support.html
- copied unchanged from r56618, /trunk/libs/spirit/doc/html/spirit/support.html
branches/release/libs/spirit/doc/html/spirit/support/multi_pass.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/support/multi_pass.html
branches/release/libs/spirit/doc/html/spirit/what_s_new.html
- copied, changed from r56618, /trunk/libs/spirit/doc/html/spirit/what_s_new.html
branches/release/libs/spirit/doc/karma/num_list.qbk
- copied unchanged from r56618, /trunk/libs/spirit/doc/karma/num_list.qbk
branches/release/libs/spirit/example/karma/num_list2.cpp
- copied unchanged from r56618, /trunk/libs/spirit/example/karma/num_list2.cpp
branches/release/libs/spirit/example/karma/num_list3.cpp
- copied unchanged from r56618, /trunk/libs/spirit/example/karma/num_list3.cpp
branches/release/libs/spirit/example/karma/num_matrix.cpp
- copied unchanged from r56618, /trunk/libs/spirit/example/karma/num_matrix.cpp
branches/release/libs/spirit/example/karma/reorder_struct.cpp
- copied unchanged from r56618, /trunk/libs/spirit/example/karma/reorder_struct.cpp
branches/release/libs/spirit/example/qi/parse_date.cpp
- copied unchanged from r56618, /trunk/libs/spirit/example/qi/parse_date.cpp
branches/release/libs/spirit/example/qi/reorder_struct.cpp
- copied unchanged from r56618, /trunk/libs/spirit/example/qi/reorder_struct.cpp
branches/release/libs/spirit/test/karma/attribute.cpp
- copied unchanged from r56618, /trunk/libs/spirit/test/karma/attribute.cpp
branches/release/libs/spirit/test/karma/bool.cpp
- copied unchanged from r56618, /trunk/libs/spirit/test/karma/bool.cpp
branches/release/libs/spirit/test/lex/regression004.cpp
- copied unchanged from r56618, /trunk/libs/spirit/test/lex/regression004.cpp
branches/release/libs/spirit/test/qi/attribute.cpp
- copied unchanged from r56618, /trunk/libs/spirit/test/qi/attribute.cpp
branches/release/libs/spirit/test/qi/bool.cpp
- copied unchanged from r56618, /trunk/libs/spirit/test/qi/bool.cpp
Removed:
branches/release/libs/spirit/test/karma/functor.cpp
Properties modified:
branches/release/boost/spirit/ (props changed)
branches/release/libs/spirit/ (props changed)
Binary files modified:
branches/release/libs/spirit/doc/html/images/callouts/Thumbs.db
branches/release/libs/spirit/doc/html/images/lexerflow.png
Text files modified:
branches/release/boost/spirit/home/karma/action/action.hpp | 14
branches/release/boost/spirit/home/karma/auxiliary.hpp | 1
branches/release/boost/spirit/home/karma/binary/binary.hpp | 9
branches/release/boost/spirit/home/karma/char/char.hpp | 2
branches/release/boost/spirit/home/karma/char/char_class.hpp | 14 +
branches/release/boost/spirit/home/karma/char/char_generator.hpp | 9
branches/release/boost/spirit/home/karma/detail/alternative_function.hpp | 38 ++-
branches/release/boost/spirit/home/karma/detail/output_iterator.hpp | 10
branches/release/boost/spirit/home/karma/detail/pass_container.hpp | 14
branches/release/boost/spirit/home/karma/directive/buffer.hpp | 8
branches/release/boost/spirit/home/karma/directive/center_alignment.hpp | 13 +
branches/release/boost/spirit/home/karma/directive/delimit.hpp | 12 +
branches/release/boost/spirit/home/karma/directive/left_alignment.hpp | 13 +
branches/release/boost/spirit/home/karma/directive/maxwidth.hpp | 8
branches/release/boost/spirit/home/karma/directive/omit.hpp | 8
branches/release/boost/spirit/home/karma/directive/repeat.hpp | 68 +++--
branches/release/boost/spirit/home/karma/directive/right_alignment.hpp | 13 +
branches/release/boost/spirit/home/karma/directive/verbatim.hpp | 8
branches/release/boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp | 28 ++
branches/release/boost/spirit/home/karma/nonterminal/grammar.hpp | 14 +
branches/release/boost/spirit/home/karma/nonterminal/rule.hpp | 8
branches/release/boost/spirit/home/karma/numeric.hpp | 1
branches/release/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp | 28 ++
branches/release/boost/spirit/home/karma/numeric/detail/real_utils.hpp | 24 --
branches/release/boost/spirit/home/karma/numeric/int.hpp | 162 ++++++++------
branches/release/boost/spirit/home/karma/numeric/real.hpp | 191 ++++++++---------
branches/release/boost/spirit/home/karma/numeric/real_policies.hpp | 2
branches/release/boost/spirit/home/karma/numeric/uint.hpp | 136 +++++++-----
branches/release/boost/spirit/home/karma/operator/alternative.hpp | 8
branches/release/boost/spirit/home/karma/operator/and_predicate.hpp | 8
branches/release/boost/spirit/home/karma/operator/kleene.hpp | 19 +
branches/release/boost/spirit/home/karma/operator/list.hpp | 64 ++++-
branches/release/boost/spirit/home/karma/operator/not_predicate.hpp | 8
branches/release/boost/spirit/home/karma/operator/optional.hpp | 58 +----
branches/release/boost/spirit/home/karma/operator/plus.hpp | 23 +
branches/release/boost/spirit/home/karma/operator/sequence.hpp | 8
branches/release/boost/spirit/home/karma/stream/stream.hpp | 12
branches/release/boost/spirit/home/karma/string/lit.hpp | 81 +------
branches/release/boost/spirit/home/lex/lexer/char_token_def.hpp | 8
branches/release/boost/spirit/home/lex/lexer/lexer.hpp | 2
branches/release/boost/spirit/home/lex/lexer/lexertl/token.hpp | 215 +++++++++++--------
branches/release/boost/spirit/home/lex/lexer/string_token_def.hpp | 6
branches/release/boost/spirit/home/lex/lexer/token_def.hpp | 4
branches/release/boost/spirit/home/lex/qi/plain_token.hpp | 5
branches/release/boost/spirit/home/qi/action/action.hpp | 9
branches/release/boost/spirit/home/qi/auxiliary.hpp | 1
branches/release/boost/spirit/home/qi/auxiliary/attr.hpp | 2
branches/release/boost/spirit/home/qi/binary/binary.hpp | 4
branches/release/boost/spirit/home/qi/char/char.hpp | 37 ++-
branches/release/boost/spirit/home/qi/char/char_class.hpp | 11
branches/release/boost/spirit/home/qi/char/char_parser.hpp | 2
branches/release/boost/spirit/home/qi/detail/alternative_function.hpp | 21 -
branches/release/boost/spirit/home/qi/detail/assign_to.hpp | 121 ++++-------
branches/release/boost/spirit/home/qi/detail/construct.hpp | 184 ++++++++++------
branches/release/boost/spirit/home/qi/detail/pass_container.hpp | 8
branches/release/boost/spirit/home/qi/detail/string_parse.hpp | 8
branches/release/boost/spirit/home/qi/directive/lexeme.hpp | 7
branches/release/boost/spirit/home/qi/directive/omit.hpp | 7
branches/release/boost/spirit/home/qi/directive/raw.hpp | 9
branches/release/boost/spirit/home/qi/directive/repeat.hpp | 9
branches/release/boost/spirit/home/qi/directive/skip.hpp | 11 +
branches/release/boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp | 25 ++
branches/release/boost/spirit/home/qi/nonterminal/grammar.hpp | 15 +
branches/release/boost/spirit/home/qi/nonterminal/rule.hpp | 28 ++
branches/release/boost/spirit/home/qi/nonterminal/simple_trace.hpp | 63 +++++
branches/release/boost/spirit/home/qi/numeric.hpp | 1
branches/release/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp | 7
branches/release/boost/spirit/home/qi/numeric/detail/real_impl.hpp | 17
branches/release/boost/spirit/home/qi/numeric/int.hpp | 20 +
branches/release/boost/spirit/home/qi/operator/alternative.hpp | 64 +++++
branches/release/boost/spirit/home/qi/operator/and_predicate.hpp | 7
branches/release/boost/spirit/home/qi/operator/difference.hpp | 7
branches/release/boost/spirit/home/qi/operator/expect.hpp | 7
branches/release/boost/spirit/home/qi/operator/kleene.hpp | 16 +
branches/release/boost/spirit/home/qi/operator/list.hpp | 9
branches/release/boost/spirit/home/qi/operator/not_predicate.hpp | 7
branches/release/boost/spirit/home/qi/operator/optional.hpp | 9
branches/release/boost/spirit/home/qi/operator/permutation.hpp | 4
branches/release/boost/spirit/home/qi/operator/plus.hpp | 9
branches/release/boost/spirit/home/qi/operator/sequence.hpp | 7
branches/release/boost/spirit/home/qi/operator/sequential_or.hpp | 4
branches/release/boost/spirit/home/qi/parser.hpp | 5
branches/release/boost/spirit/home/qi/string/symbols.hpp | 2
branches/release/boost/spirit/home/qi/string/tst_map.hpp | 3
branches/release/boost/spirit/home/support/attributes.hpp | 238 ++++++++++++++++++---
branches/release/boost/spirit/home/support/char_class.hpp | 39 +++
branches/release/boost/spirit/home/support/char_encoding/iso8859_1.hpp | 4
branches/release/boost/spirit/home/support/char_encoding/standard.hpp | 4
branches/release/boost/spirit/home/support/char_encoding/standard_wide.hpp | 29 ++
branches/release/boost/spirit/home/support/common_terminals.hpp | 8
branches/release/boost/spirit/home/support/container.hpp | 424 +++++++++++++++++++++++++++------------
branches/release/boost/spirit/home/support/terminal.hpp | 46 ++++
branches/release/boost/spirit/home/support/unused.hpp | 4
branches/release/boost/spirit/repository/home/karma/directive/confix.hpp | 14 +
branches/release/boost/spirit/repository/home/karma/nonterminal/subrule.hpp | 12
branches/release/boost/spirit/repository/home/qi/directive/confix.hpp | 17 +
branches/release/boost/spirit/repository/home/qi/directive/distinct.hpp | 8
branches/release/boost/spirit/repository/home/qi/nonterminal/subrule.hpp | 12
branches/release/libs/spirit/classic/doc/multi_pass.html | 30 +-
branches/release/libs/spirit/doc/abstracts.qbk | 6
branches/release/libs/spirit/doc/abstracts/peg.qbk | 16
branches/release/libs/spirit/doc/abstracts/syntax_diagram.qbk | 5
branches/release/libs/spirit/doc/acknowledgments.qbk | 11
branches/release/libs/spirit/doc/concepts_template.qbk | 7
branches/release/libs/spirit/doc/faq.qbk | 20
branches/release/libs/spirit/doc/html/index.html | 4
branches/release/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html | 4
branches/release/libs/spirit/doc/html/spirit/abstracts/customize/is_container.html | 20
branches/release/libs/spirit/doc/html/spirit/abstracts/customize/store_value/container_value.html | 20
branches/release/libs/spirit/doc/html/spirit/abstracts/indepth/parsers_indepth.html | 4
branches/release/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html | 16
branches/release/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html | 18
branches/release/libs/spirit/doc/html/spirit/acknowledgments.html | 2
branches/release/libs/spirit/doc/html/spirit/faq.html | 8
branches/release/libs/spirit/doc/html/spirit/introduction.html | 12
branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html | 4
branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/attr_cast.html | 16
branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html | 16
branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html | 20
branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html | 16
branches/release/libs/spirit/doc/html/spirit/karma/reference/binary.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html | 16
branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html | 16
branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html | 16
branches/release/libs/spirit/doc/html/spirit/karma/reference/char.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html | 16
branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html | 26 +-
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html | 16
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html | 14
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html | 16
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html | 14
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html | 14
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html | 16
branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html | 16
branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html | 12
branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html | 10
branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html | 12
branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html | 10
branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html | 12
branches/release/libs/spirit/doc/html/spirit/karma/reference/karma_basics.html | 8
branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/boolean.html | 26 +-
branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html | 26 +-
branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html | 22 +-
branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html | 22 +-
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html | 14
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html | 14
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html | 14
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/list.html | 14
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html | 14
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html | 14
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html | 14
branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html | 14
branches/release/libs/spirit/doc/html/spirit/karma/reference/stream.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html | 22 +-
branches/release/libs/spirit/doc/html/spirit/karma/reference/string.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/reference/string/string.html | 16
branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html | 8
branches/release/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html | 2
branches/release/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html | 10
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html | 6
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html | 10
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html | 6
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html | 4
branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html | 4
branches/release/libs/spirit/doc/html/spirit/lex/lexer_introduction.html | 6
branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/lexer.html | 10
branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/narylexer.html | 12
branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/primitivelexer.html | 8
branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/unarylexer.html | 12
branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives.html | 2
branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives/char_tokendef.html | 14
branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html | 10
branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html | 8
branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html | 8
branches/release/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html | 10
branches/release/libs/spirit/doc/html/spirit/preface.html | 18
branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html | 4
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary.html | 2
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html | 20
branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/basics.html | 12
branches/release/libs/spirit/doc/html/spirit/qi/reference/binary.html | 2
branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/char.html | 2
branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char.html | 26 +-
branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive.html | 2
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric.html | 2
branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/boolean.html | 31 +-
branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html | 22 +-
branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html | 30 +-
branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html | 22 +-
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator.html | 2
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html | 14
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html | 14
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html | 18
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html | 14
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/list.html | 14
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html | 14
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html | 18
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html | 14
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html | 14
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html | 14
branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html | 14
branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html | 12
branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html | 12
branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html | 10
branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html | 10
branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html | 12
branches/release/libs/spirit/doc/html/spirit/qi/reference/string.html | 2
branches/release/libs/spirit/doc/html/spirit/qi/reference/string/string.html | 16
branches/release/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html | 20
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html | 14
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html | 22 +-
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html | 6
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html | 2
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html | 8
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html | 2
branches/release/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html | 10
branches/release/libs/spirit/doc/html/spirit/support/multi_pass.html | 28 +-
branches/release/libs/spirit/doc/html/spirit/what_s_new.html | 8
branches/release/libs/spirit/doc/introduction.qbk | 33 +-
branches/release/libs/spirit/doc/karma.qbk | 1
branches/release/libs/spirit/doc/karma/auxiliary.qbk | 87 ++++++++
branches/release/libs/spirit/doc/karma/binary.qbk | 6
branches/release/libs/spirit/doc/karma/char.qbk | 12 +
branches/release/libs/spirit/doc/karma/complex.qbk | 284 +++++--------------------
branches/release/libs/spirit/doc/karma/directive.qbk | 27 ++
branches/release/libs/spirit/doc/karma/numeric.qbk | 349 ++++++++++++++++++++++++++++++--
branches/release/libs/spirit/doc/karma/operator.qbk | 36 +-
branches/release/libs/spirit/doc/karma/quick_reference.qbk | 97 ++++++---
branches/release/libs/spirit/doc/karma/stream.qbk | 6
branches/release/libs/spirit/doc/karma/string.qbk | 6
branches/release/libs/spirit/doc/karma/warming_up.qbk | 11 +
branches/release/libs/spirit/doc/lex/concepts.qbk | 2
branches/release/libs/spirit/doc/lex/introduction.qbk | 38 +-
branches/release/libs/spirit/doc/lex/lexer.qbk | 9
branches/release/libs/spirit/doc/lex/lexer_quickstart1.qbk | 4
branches/release/libs/spirit/doc/lex/lexer_quickstart2.qbk | 6
branches/release/libs/spirit/doc/lex/lexer_quickstart3.qbk | 22 +-
branches/release/libs/spirit/doc/lex/lexer_semantic_actions.qbk | 12
branches/release/libs/spirit/doc/lex/lexer_static_model.qbk | 23 +-
branches/release/libs/spirit/doc/lex/lexer_tutorials.qbk | 20 -
branches/release/libs/spirit/doc/lex/quick_reference.qbk | 6
branches/release/libs/spirit/doc/lex/token_primitives.qbk | 20
branches/release/libs/spirit/doc/lex/tokenizing.qbk | 24 +-
branches/release/libs/spirit/doc/lex/tokens_values.qbk | 42 +-
branches/release/libs/spirit/doc/notes/porting_from_1_8.qbk | 20 +
branches/release/libs/spirit/doc/qi/actions.qbk | 32 +-
branches/release/libs/spirit/doc/qi/binary.qbk | 2
branches/release/libs/spirit/doc/qi/concepts.qbk | 2
branches/release/libs/spirit/doc/qi/directive.qbk | 1
branches/release/libs/spirit/doc/qi/employee.qbk | 26 +-
branches/release/libs/spirit/doc/qi/numeric.qbk | 154 ++++++++++++++
branches/release/libs/spirit/doc/qi/quick_reference.qbk | 36 +-
branches/release/libs/spirit/doc/qi/tutorial_intro.qbk | 2
branches/release/libs/spirit/doc/qi/warming_up.qbk | 20 +
branches/release/libs/spirit/doc/reference_template.qbk | 8
branches/release/libs/spirit/doc/spirit2.qbk | 78 +++---
branches/release/libs/spirit/doc/what_s_new.qbk | 46 ++--
branches/release/libs/spirit/example/karma/CMakeLists.txt | 14
branches/release/libs/spirit/example/karma/Jamfile | 33 +-
branches/release/libs/spirit/example/karma/num_list1.cpp | 14
branches/release/libs/spirit/example/karma/printf_style_double_format.cpp | 11
branches/release/libs/spirit/example/karma/reference.cpp | 135 ++++++++----
branches/release/libs/spirit/example/lex/example1.cpp | 21 -
branches/release/libs/spirit/example/lex/example2.cpp | 18
branches/release/libs/spirit/example/lex/example3.cpp | 18
branches/release/libs/spirit/example/lex/example4.cpp | 31 +-
branches/release/libs/spirit/example/lex/example5.cpp | 35 +-
branches/release/libs/spirit/example/lex/example6.cpp | 29 +-
branches/release/libs/spirit/example/lex/print_numbers.cpp | 22 -
branches/release/libs/spirit/example/lex/static_lexer/word_count_generate.cpp | 5
branches/release/libs/spirit/example/lex/static_lexer/word_count_lexer_generate.cpp | 5
branches/release/libs/spirit/example/lex/static_lexer/word_count_lexer_static.cpp | 9
branches/release/libs/spirit/example/lex/static_lexer/word_count_static.cpp | 20 -
branches/release/libs/spirit/example/lex/strip_comments.cpp | 22 +-
branches/release/libs/spirit/example/lex/strip_comments_lexer.cpp | 17
branches/release/libs/spirit/example/lex/word_count.cpp | 22 -
branches/release/libs/spirit/example/lex/word_count_functor.cpp | 8
branches/release/libs/spirit/example/lex/word_count_lexer.cpp | 13
branches/release/libs/spirit/example/qi/CMakeLists.txt | 2
branches/release/libs/spirit/example/qi/Jamfile | 22 +
branches/release/libs/spirit/example/qi/mini_c/mini_c.hpp | 3
branches/release/libs/spirit/example/qi/porting_guide_qi.cpp | 12
branches/release/libs/spirit/example/qi/reference.cpp | 47 ++++
branches/release/libs/spirit/repository/doc/html/index.html | 4
branches/release/libs/spirit/repository/doc/html/spirit_repository/karma_components/directives/karma_confix_generator.html | 18
branches/release/libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal/subrule.html | 24 +-
branches/release/libs/spirit/repository/doc/html/spirit_repository/preface.html | 8
branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/confix.html | 18
branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/distinct.html | 16
branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal/subrule.html | 26 +-
branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive/flush_multi_pass.html | 16
branches/release/libs/spirit/repository/test/karma/subrule.cpp | 2
branches/release/libs/spirit/test/CMakeLists.txt | 4
branches/release/libs/spirit/test/Jamfile | 5
branches/release/libs/spirit/test/karma/alternative.cpp | 17 +
branches/release/libs/spirit/test/karma/binary.cpp | 129 ++++++++++++
branches/release/libs/spirit/test/karma/char.cpp | 44 ++++
branches/release/libs/spirit/test/karma/delimiter.cpp | 8
branches/release/libs/spirit/test/karma/format_manip.cpp | 49 ++--
branches/release/libs/spirit/test/karma/format_manip_attr.cpp | 4
branches/release/libs/spirit/test/karma/grammar.cpp | 6
branches/release/libs/spirit/test/karma/grammar_fail.cpp | 5
branches/release/libs/spirit/test/karma/int_numerics.cpp | 23 ++
branches/release/libs/spirit/test/karma/kleene.cpp | 52 ++++
branches/release/libs/spirit/test/karma/list.cpp | 69 +++++-
branches/release/libs/spirit/test/karma/pattern.cpp | 71 +++++-
branches/release/libs/spirit/test/karma/pattern2.cpp | 33 +-
branches/release/libs/spirit/test/karma/plus.cpp | 50 ++++
branches/release/libs/spirit/test/karma/real_numerics.cpp | 26 ++
branches/release/libs/spirit/test/karma/repeat.cpp | 61 +++++
branches/release/libs/spirit/test/karma/rule_fail.cpp | 3
branches/release/libs/spirit/test/karma/stream.cpp | 7
branches/release/libs/spirit/test/lex/lexertl1.cpp | 4
branches/release/libs/spirit/test/lex/state_switcher_test.cpp | 1
branches/release/libs/spirit/test/qi/alternative.cpp | 13 +
branches/release/libs/spirit/test/qi/grammar_fail.cpp | 15
branches/release/libs/spirit/test/qi/kleene.cpp | 28 ++
branches/release/libs/spirit/test/qi/match_manip.cpp | 2
branches/release/libs/spirit/test/qi/omit.cpp | 13
branches/release/libs/spirit/test/qi/plus.cpp | 30 ++
branches/release/libs/spirit/test/qi/repeat.cpp | 30 ++
branches/release/libs/spirit/test/qi/rule.cpp | 39 +++
branches/release/libs/spirit/test/qi/terminal_ex.cpp | 6
346 files changed, 5130 insertions(+), 2826 deletions(-)
Modified: branches/release/boost/spirit/home/karma/action/action.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/action/action.hpp (original)
+++ branches/release/boost/spirit/home/karma/action/action.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -20,8 +20,8 @@
#include <boost/spirit/home/karma/meta_compiler.hpp>
#include <boost/spirit/home/karma/generator.hpp>
+#include <boost/mpl/bool.hpp>
#include <boost/mpl/if.hpp>
-#include <boost/mpl/identity.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/type_traits/is_same.hpp>
@@ -54,13 +54,12 @@
typedef traits::make_attribute<attr_type, Attribute> make_attribute;
// create a attribute if none is supplied
- // this creates a _copy_ of the parameter because the semantic
- // action likely will change parts of this
+ // this creates a _copy_ of the attribute because the semantic
+ // action will likely change parts of this
typename make_attribute::value_type attr = make_attribute::call(attr_);
// call the function, passing the attribute, the context and a bool
// flag that the client can set to false to fail generating.
- // The client can return false to fail parsing.
return traits::action_dispatch<Subject>()(f, attr, ctx) &&
subject.generate(sink, ctx, d, attr);
}
@@ -114,4 +113,11 @@
};
}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject, typename Action>
+ struct has_semantic_action<karma::action<Subject, Action> >
+ : mpl::true_ {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/auxiliary.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/auxiliary.hpp (original)
+++ branches/release/boost/spirit/home/karma/auxiliary.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -13,5 +13,6 @@
#include <boost/spirit/home/karma/auxiliary/eps.hpp>
#include <boost/spirit/home/karma/auxiliary/eol.hpp>
#include <boost/spirit/home/karma/auxiliary/lazy.hpp>
+#include <boost/spirit/home/karma/auxiliary/attr_cast.hpp>
#endif
Modified: branches/release/boost/spirit/home/karma/binary/binary.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/binary/binary.hpp (original)
+++ branches/release/boost/spirit/home/karma/binary/binary.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -19,7 +19,9 @@
#include <boost/spirit/home/karma/delimit_out.hpp>
#include <boost/spirit/home/karma/auxiliary/lazy.hpp>
#include <boost/spirit/home/karma/detail/generate_to.hpp>
+#include <boost/spirit/home/karma/detail/extract_from.hpp>
#include <boost/spirit/home/support/unused.hpp>
+#include <boost/spirit/home/support/container.hpp>
#include <boost/fusion/include/vector.hpp>
#include <boost/fusion/include/at.hpp>
#include <boost/mpl/or.hpp>
@@ -181,13 +183,16 @@
static bool generate(OutputIterator& sink, Context&, Delimiter const& d
, Attribute const& attr)
{
+ if (!traits::has_optional_value(attr))
+ return false;
+
// Even if the endian types are not pod's (at least not in the
// definition of C++03) it seems to be safe to assume they are.
// This allows us to treat them as a sequence of consecutive bytes.
boost::integer::endian<
endian, typename karma::detail::integer<bits>::type, bits
> p;
- p = attr;
+ p = traits::extract_from(attr);
unsigned char const* bytes =
reinterpret_cast<unsigned char const*>(&p);
@@ -239,7 +244,7 @@
typename OutputIterator, typename Context, typename Delimiter
, typename Attribute>
bool generate(OutputIterator& sink, Context&, Delimiter const& d
- , Attribute const& attr) const
+ , Attribute const&) const
{
// Even if the endian types are not pod's (at least not in the
// definition of C++03) it seems to be safe to assume they are
Modified: branches/release/boost/spirit/home/karma/char/char.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/char/char.hpp (original)
+++ branches/release/boost/spirit/home/karma/char/char.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -113,7 +113,7 @@
template <typename Attribute, typename CharParam, typename Context>
bool test(Attribute const& attr, CharParam& ch, Context&) const
{
- ch = attr;
+ ch = CharParam(attr);
return true;
}
Modified: branches/release/boost/spirit/home/karma/char/char_class.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/char/char_class.hpp (original)
+++ branches/release/boost/spirit/home/karma/char/char_class.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -40,6 +40,18 @@
///////////////////////////////////////////////////////////////////////////////
namespace boost { namespace spirit { namespace karma
{
+ // hoist the char classification namespaces into karma sub-namespaces of
+ // the same name
+ namespace ascii { using namespace boost::spirit::ascii; }
+ namespace iso8859_1 { using namespace boost::spirit::iso8859_1; }
+ namespace standard { using namespace boost::spirit::standard; }
+ namespace standard_wide { using namespace boost::spirit::standard_wide; }
+
+ // Import the standard namespace into the karma namespace. This allows
+ // for default handling of all character/string related operations if not
+ // prefixed with a character set namespace.
+ using namespace boost::spirit::standard;
+
///////////////////////////////////////////////////////////////////////////
//
// char_class
@@ -113,7 +125,7 @@
template <typename Attribute, typename CharParam, typename Context>
bool test(Attribute const& attr, CharParam& ch, Context&) const
{
- ch = attr;
+ ch = CharParam(attr);
using spirit::char_class::classify;
return classify<char_encoding>::is(tag::space(), attr);
Modified: branches/release/boost/spirit/home/karma/char/char_generator.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/char/char_generator.hpp (original)
+++ branches/release/boost/spirit/home/karma/char/char_generator.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -14,10 +14,12 @@
#include <boost/spirit/home/karma/domain.hpp>
#include <boost/spirit/home/karma/generator.hpp>
#include <boost/spirit/home/karma/detail/generate_to.hpp>
+#include <boost/spirit/home/karma/detail/extract_from.hpp>
#include <boost/spirit/home/karma/meta_compiler.hpp>
#include <boost/spirit/home/karma/delimit_out.hpp>
#include <boost/spirit/home/support/unused.hpp>
#include <boost/spirit/home/support/info.hpp>
+#include <boost/spirit/home/support/container.hpp>
namespace boost { namespace spirit
{
@@ -69,8 +71,11 @@
bool generate(OutputIterator& sink, Context& context, Delimiter const& d
, Attribute const& attr) const
{
- Char ch = Char();
- if (!this->derived().test(attr, ch, context))
+ if (!traits::has_optional_value(attr))
+ return false;
+
+ Attr ch = Attr();
+ if (!this->derived().test(traits::extract_from(attr), ch, context))
return false;
return karma::detail::generate_to(sink, ch, char_encoding(), tag()) &&
Modified: branches/release/boost/spirit/home/karma/detail/alternative_function.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/detail/alternative_function.hpp (original)
+++ branches/release/boost/spirit/home/karma/detail/alternative_function.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -32,10 +32,18 @@
// A component is compatible to a given Attribute type if the Attribute
// is the same as the expected type of the component
///////////////////////////////////////////////////////////////////////////
+ template <typename Expected, typename Attribute>
+ struct attribute_is_compatible
+ : is_convertible<Attribute, Expected> {};
+
+ template <typename Expected, typename Attribute>
+ struct attribute_is_compatible<Expected, boost::optional<Attribute> >
+ : is_convertible<Attribute, Expected> {};
+
template <typename Expected, typename Attribute, typename IsNotVariant>
struct compute_compatible_component_variant
: mpl::or_<
- is_convertible<Attribute, Expected>
+ attribute_is_compatible<Expected, Attribute>
, is_same<hold_any, Expected> > {};
template <typename Expected, typename Attribute>
@@ -79,14 +87,14 @@
// this gets instantiated if the Attribute type is _not_ compatible with
// the generator
- template <typename Component, typename Attribute, typename Expected,
- typename Enable = void>
+ template <typename Component, typename Attribute, typename Expected
+ , typename Enable = void>
struct alternative_generate
{
template <typename OutputIterator, typename Context, typename Delimiter>
static bool
- call(Component const&, OutputIterator&, Context&, Delimiter const&,
- Attribute const&)
+ call(Component const&, OutputIterator&, Context&, Delimiter const&
+ , Attribute const&)
{
return false;
}
@@ -97,8 +105,8 @@
{
template <typename OutputIterator, typename Context, typename Delimiter>
static bool
- call(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, unused_type)
+ call(Component const& component, OutputIterator& sink, Context& ctx
+ , Delimiter const& d, unused_type)
{
// return true if any of the generators succeed
return component.generate(sink, ctx, d, unused);
@@ -126,8 +134,8 @@
{
template <typename OutputIterator, typename Context, typename Delimiter>
static bool
- call(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Attribute const& attr)
+ call(Component const& component, OutputIterator& sink
+ , Context& ctx, Delimiter const& d, Attribute const& attr)
{
return call(component, sink, ctx, d, attr
, spirit::traits::not_is_variant<Attribute>());
@@ -135,16 +143,16 @@
template <typename OutputIterator, typename Context, typename Delimiter>
static bool
- call(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Attribute const& attr, mpl::true_)
+ call(Component const& component, OutputIterator& sink
+ , Context& ctx, Delimiter const& d, Attribute const& attr, mpl::true_)
{
return component.generate(sink, ctx, d, attr);
}
template <typename OutputIterator, typename Context, typename Delimiter>
static bool
- call(Component const& component, OutputIterator& sink,
- Context& ctx, Delimiter const& d, Attribute const& attr, mpl::false_)
+ call(Component const& component, OutputIterator& sink
+ , Context& ctx, Delimiter const& d, Attribute const& attr, mpl::false_)
{
typedef
compute_compatible_component<Expected, Attribute>
@@ -175,8 +183,8 @@
typename Attribute>
struct alternative_generate_functor
{
- alternative_generate_functor(OutputIterator& sink_, Context& ctx_,
- Delimiter const& d, Attribute const& attr_)
+ alternative_generate_functor(OutputIterator& sink_, Context& ctx_
+ , Delimiter const& d, Attribute const& attr_)
: sink(sink_), ctx(ctx_), delim(d), attr(attr_) {}
template <typename Component>
Modified: branches/release/boost/spirit/home/karma/detail/output_iterator.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/detail/output_iterator.hpp (original)
+++ branches/release/boost/spirit/home/karma/detail/output_iterator.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -371,7 +371,7 @@
{
// get the most derived type of this class
typedef typename mpl::if_<
- traits::is_not_unused<Derived>, Derived
+ traits::not_is_unused<Derived>, Derived
, output_iterator<OutputIterator, Properties, Derived>
>::type most_derived_type;
@@ -449,12 +449,20 @@
return *this;
}
+#if defined(BOOST_MSVC)
+// 'argument' : conversion from '...' to '...', possible loss of data
+#pragma warning (push)
+#pragma warning (disable: 4244)
+#endif
template <typename T>
void operator=(T const& value)
{
if (this->base_iterator::output(value))
*sink = value;
}
+#if defined(BOOST_MSVC)
+#pragma warning (pop)
+#endif
// plain output iterators are considered to be good all the time
bool good() const { return true; }
Modified: branches/release/boost/spirit/home/karma/detail/pass_container.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/detail/pass_container.hpp (original)
+++ branches/release/boost/spirit/home/karma/detail/pass_container.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -75,7 +75,9 @@
bool dispatch_attribute_element(Component const& component, mpl::false_) const
{
// get the next value to generate from container
- if (!traits::compare(iter, traits::end(attr)) &&
+ typename traits::container_iterator<Attr>::type end =
+ traits::end(attr);
+ if (!traits::compare(iter, end) &&
!f(component, traits::deref(iter)))
{
// needs to return false as long as everything is ok
@@ -92,7 +94,9 @@
template <typename Component>
bool dispatch_attribute_element(Component const& component, mpl::true_) const
{
- bool result = f(component, make_iterator_range(iter, traits::end(attr)));
+ typename traits::container_iterator<Attr>::type end =
+ traits::end(attr);
+ bool result = f(component, make_iterator_range(iter, end));
if (result)
iter = traits::end(attr); // adjust current iter to the end
return result;
@@ -130,7 +134,7 @@
// of the current element (component). If this is has no attribute
// we shouldn't use an element of the container but unused_type
// instead
- typedef traits::is_not_unused<
+ typedef traits::not_is_unused<
typename traits::attribute_of<Component, context_type>::type
> predicate;
@@ -154,7 +158,7 @@
template <typename Component>
bool operator()(Component const& component) const
{
- typedef typename traits::result_of::value<Attr>::type rhs;
+ typedef typename traits::container_value<Attr>::type rhs;
typedef typename traits::attribute_of<
Component, context_type>::type lhs_attribute;
@@ -164,7 +168,7 @@
F f;
Attr const& attr;
- mutable typename traits::result_of::iterator<Attr>::type iter;
+ mutable typename traits::container_iterator<Attr>::type iter;
};
// Utility function to make a pass_container
Modified: branches/release/boost/spirit/home/karma/directive/buffer.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/directive/buffer.hpp (original)
+++ branches/release/boost/spirit/home/karma/directive/buffer.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -99,4 +99,12 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<karma::buffer_directive<Subject> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/directive/center_alignment.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/directive/center_alignment.hpp (original)
+++ branches/release/boost/spirit/home/karma/directive/center_alignment.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -294,6 +294,19 @@
}}} // namespace boost::spirit::karma
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject, typename Width>
+ struct has_semantic_action<karma::simple_center_alignment<Subject, Width> >
+ : unary_has_semantic_action<Subject> {};
+
+ template <typename Subject, typename Padding, typename Width>
+ struct has_semantic_action<
+ karma::padding_center_alignment<Subject, Padding, Width> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/directive/delimit.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/directive/delimit.hpp (original)
+++ branches/release/boost/spirit/home/karma/directive/delimit.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -168,4 +168,16 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<karma::redelimit_generator<Subject> >
+ : unary_has_semantic_action<Subject> {};
+
+ template <typename Subject, typename Delimiter>
+ struct has_semantic_action<karma::delimit_generator<Subject, Delimiter> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/directive/left_alignment.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/directive/left_alignment.hpp (original)
+++ branches/release/boost/spirit/home/karma/directive/left_alignment.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -277,6 +277,19 @@
}}} // namespace boost::spirit::karma
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject, typename Width>
+ struct has_semantic_action<karma::simple_left_alignment<Subject, Width> >
+ : unary_has_semantic_action<Subject> {};
+
+ template <typename Subject, typename Padding, typename Width>
+ struct has_semantic_action<
+ karma::padding_left_alignment<Subject, Padding, Width> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/directive/maxwidth.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/directive/maxwidth.hpp (original)
+++ branches/release/boost/spirit/home/karma/directive/maxwidth.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -219,6 +219,14 @@
}}} // namespace boost::spirit::karma
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<karma::maxwidth_width<Subject> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/directive/omit.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/directive/omit.hpp (original)
+++ branches/release/boost/spirit/home/karma/directive/omit.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -84,4 +84,12 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<karma::omit_directive<Subject> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/directive/repeat.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/directive/repeat.hpp (original)
+++ branches/release/boost/spirit/home/karma/directive/repeat.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -124,11 +124,28 @@
struct repeat_generator
: unary_generator<repeat_generator<Subject, LoopIter> >
{
+ private:
+ // iterate over the given container until its exhausted or the embedded
+ // (left) generator succeeds
+ template <
+ typename OutputIterator, typename Context, typename Delimiter
+ , typename Iterator>
+ bool generate_subject(OutputIterator& sink, Context& ctx
+ , Delimiter const& d, Iterator& it, Iterator& end) const
+ {
+ while (!traits::compare(it, end))
+ {
+ if (subject.generate(sink, ctx, d, traits::deref(it)))
+ return true;
+ traits::next(it);
+ }
+ return false;
+ }
+
+ public:
typedef Subject subject_type;
- typedef mpl::int_<
- generator_properties::countingbuffer | subject_type::properties::value
- > properties;
+ typedef mpl::int_<subject_type::properties::value> properties;
// Build a std::vector from the subject's attribute. Note
// that build_std_vector may return unused_type if the
@@ -148,7 +165,7 @@
bool generate(OutputIterator& sink, Context& ctx, Delimiter const& d
, Attribute const& attr) const
{
- typedef typename traits::result_of::iterator<
+ typedef typename traits::container_iterator<
typename add_const<Attribute>::type
>::type iterator_type;
@@ -156,38 +173,25 @@
iterator_type end = traits::end(attr);
typename LoopIter::type i = iter.start();
+ // generate the minimal required amount of output
+ for (/**/; !iter.got_min(i); ++i, traits::next(it))
{
- // inhibit (redirect) output, disable counting while buffering
- detail::enable_buffering<OutputIterator> buffering(sink);
-
+ if (!generate_subject(sink, ctx, d, it, end))
{
- detail::disable_counting<OutputIterator> nocounting(sink);
-
- // generate the minimal required amount of output
- for (/**/; !iter.got_min(i); ++i, traits::next(it))
- {
- if (traits::compare(it, end) ||
- !subject.generate(sink, ctx, d, traits::deref(it)))
- {
- // if we fail before reaching the minimum iteration
- // required, do not output anything and return false
- return false;
- }
- }
- } // re-enable counting
-
- // copy the output generated so far to the target output iterator
- buffering.buffer_copy();
+ // if we fail before reaching the minimum iteration
+ // required, do not output anything and return false
+ return false;
+ }
}
// generate some more up to the maximum specified
- bool result = true;
- for (/**/; result && !iter.got_max(i) && !traits::compare(it, end);
+ for (/**/; detail::sink_is_good(sink) && !iter.got_max(i);
++i, traits::next(it))
{
- result = subject.generate(sink, ctx, d, traits::deref(it));
+ if (!generate_subject(sink, ctx, d, it, end))
+ break;
}
- return result;
+ return detail::sink_is_good(sink);
}
template <typename Context>
@@ -266,4 +270,12 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject, typename LoopIter>
+ struct has_semantic_action<karma::repeat_generator<Subject, LoopIter> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/directive/right_alignment.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/directive/right_alignment.hpp (original)
+++ branches/release/boost/spirit/home/karma/directive/right_alignment.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -287,6 +287,19 @@
}}} // namespace boost::spirit::karma
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject, typename Width>
+ struct has_semantic_action<karma::simple_right_alignment<Subject, Width> >
+ : unary_has_semantic_action<Subject> {};
+
+ template <typename Subject, typename Padding, typename Width>
+ struct has_semantic_action<
+ karma::padding_right_alignment<Subject, Padding, Width> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/directive/verbatim.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/directive/verbatim.hpp (original)
+++ branches/release/boost/spirit/home/karma/directive/verbatim.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -92,4 +92,12 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<karma::verbatim_generator<Subject> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp (original)
+++ branches/release/boost/spirit/home/karma/nonterminal/detail/generator_binder.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -13,6 +13,7 @@
#include <boost/fusion/include/at.hpp>
#include <boost/mpl/bool.hpp>
+#include <boost/spirit/home/support/has_semantic_action.hpp>
namespace boost { namespace spirit { namespace karma { namespace detail
{
@@ -24,11 +25,31 @@
: g(g) {}
template <typename OutputIterator, typename Delimiter, typename Context>
+ bool call(OutputIterator& sink, Context& context
+ , Delimiter const& delim, mpl::true_) const
+ {
+ // If DeducedAuto is false (semantic actions is present), the
+ // component's attribute is unused.
+ return g.generate(sink, context, delim, unused);
+ }
+
+ template <typename OutputIterator, typename Delimiter, typename Context>
+ bool call(OutputIterator& sink, Context& context
+ , Delimiter const& delim, mpl::false_) const
+ {
+ // If DeducedAuto is true (no semantic action), we pass the rule's
+ // attribute on to the component.
+ return g.generate(sink, context, delim
+ , fusion::at_c<0>(context.attributes));
+ }
+
+ template <typename OutputIterator, typename Delimiter, typename Context>
bool operator()(OutputIterator& sink, Context& context
, Delimiter const& delim) const
{
- // If Auto is false, the component's attribute is unused.
- return g.generate(sink, context, delim, unused);
+ // If Auto is false, we need to deduce whether to apply auto rule
+ typedef typename traits::has_semantic_action<Generator>::type auto_rule;
+ return call(sink, context, delim, auto_rule());
}
Generator g;
@@ -45,7 +66,7 @@
bool operator()(OutputIterator& sink, Context& context
, Delimiter const& delim) const
{
- // If Auto is true, we pass the rule's attribute on to the component.
+ // If Auto is true, the component's attribute is unused.
return g.generate(sink, context, delim
, fusion::at_c<0>(context.attributes));
}
@@ -59,6 +80,7 @@
{
return generator_binder<Generator, Auto>(g);
}
+
}}}}
#endif
Modified: branches/release/boost/spirit/home/karma/nonterminal/grammar.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/nonterminal/grammar.hpp (original)
+++ branches/release/boost/spirit/home/karma/nonterminal/grammar.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -13,6 +13,7 @@
#include <boost/spirit/home/support/unused.hpp>
#include <boost/spirit/home/support/info.hpp>
+#include <boost/spirit/home/support/assert_msg.hpp>
#include <boost/spirit/home/karma/domain.hpp>
#include <boost/spirit/home/karma/nonterminal/rule.hpp>
#include <boost/spirit/home/karma/reference.hpp>
@@ -58,6 +59,19 @@
, name_(name_)
{}
+ // This constructor is used to catch if the start rule is not
+ // compatible with the grammar.
+ template <typename Iterator_, typename T1_, typename T2_, typename T3_>
+ grammar(rule<Iterator_, T1_, T2_, T3_> const&
+ , std::string const& = "unnamed-grammar")
+ {
+ // If you see the assertion below failing then the start rule
+ // passed to the constructor of the grammar is not compatible with
+ // the grammar (i.e. it uses different template parameters).
+ BOOST_SPIRIT_ASSERT_MSG(false, incompatible_start_rule,
+ (rule<Iterator_, T1_, T2_, T3_>));
+ }
+
std::string name() const
{
return name_;
Modified: branches/release/boost/spirit/home/karma/nonterminal/rule.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/nonterminal/rule.hpp (original)
+++ branches/release/boost/spirit/home/karma/nonterminal/rule.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -150,7 +150,7 @@
// the expression (expr) is not a valid spirit karma expression.
BOOST_SPIRIT_ASSERT_MATCH(karma::domain, Expr);
- f = detail::bind_generator<mpl::true_>(compile<karma::domain>(expr));
+ f = detail::bind_generator<mpl::false_>(compile<karma::domain>(expr));
}
rule& operator=(rule const& rhs)
@@ -227,7 +227,8 @@
// If you are seeing a compilation error here, you are probably
// trying to use a rule or a grammar which has inherited
// attributes, without passing values for them.
- context_type context(make_attribute::call(attr));
+ context_type context(traits::pre_transform<attr_type>(
+ make_attribute::call(attr)));
// If you are seeing a compilation error here stating that the
// third parameter can't be converted to a karma::reference
@@ -256,7 +257,8 @@
// If you are seeing a compilation error here, you are probably
// trying to use a rule or a grammar which has inherited
// attributes, passing values of incompatible types for them.
- context_type context(make_attribute::call(attr), params, caller_context);
+ context_type context(traits::pre_transform<attr_type>(
+ make_attribute::call(attr)), params, caller_context);
// If you are seeing a compilation error here stating that the
// third parameter can't be converted to a karma::reference
Modified: branches/release/boost/spirit/home/karma/numeric.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/numeric.hpp (original)
+++ branches/release/boost/spirit/home/karma/numeric.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -10,6 +10,7 @@
#pragma once
#endif
+#include <boost/spirit/home/karma/numeric/bool.hpp>
#include <boost/spirit/home/karma/numeric/int.hpp>
#include <boost/spirit/home/karma/numeric/uint.hpp>
#include <boost/spirit/home/karma/numeric/real.hpp>
Modified: branches/release/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp (original)
+++ branches/release/boost/spirit/home/karma/numeric/detail/numeric_utils.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -102,7 +102,7 @@
template <>
struct absolute_value_helper<float>
{
- typedef long double result_type;
+ typedef float result_type;
static result_type call(float n)
{
return (spirit::detail::signbit)(n) ? -n : n;
@@ -112,7 +112,7 @@
template <>
struct absolute_value_helper<double>
{
- typedef long double result_type;
+ typedef double result_type;
static result_type call(double n)
{
return (spirit::detail::signbit)(n) ? -n : n;
@@ -591,6 +591,30 @@
}
};
+ ///////////////////////////////////////////////////////////////////////////
+ // These are helper functions for the real policies allowing to generate
+ // a single character and a string
+ ///////////////////////////////////////////////////////////////////////////
+ template <typename CharEncoding = unused_type, typename Tag = unused_type>
+ struct char_inserter
+ {
+ template <typename OutputIterator, typename Char>
+ static bool call(OutputIterator& sink, Char c)
+ {
+ return detail::generate_to(sink, c, CharEncoding(), Tag());
+ }
+ };
+
+ template <typename CharEncoding = unused_type, typename Tag = unused_type>
+ struct string_inserter
+ {
+ template <typename OutputIterator, typename String>
+ static bool call(OutputIterator& sink, String str)
+ {
+ return detail::string_generate(sink, str, CharEncoding(), Tag());
+ }
+ };
+
}}}
#endif
Modified: branches/release/boost/spirit/home/karma/numeric/detail/real_utils.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/numeric/detail/real_utils.hpp (original)
+++ branches/release/boost/spirit/home/karma/numeric/detail/real_utils.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -26,30 +26,6 @@
namespace boost { namespace spirit { namespace karma
{
///////////////////////////////////////////////////////////////////////////
- // These are helper functions for the real policies allowing to generate
- // a single character and a string
- ///////////////////////////////////////////////////////////////////////////
- template <typename CharEncoding = unused_type, typename Tag = unused_type>
- struct char_inserter
- {
- template <typename OutputIterator, typename Char>
- static bool call(OutputIterator& sink, Char c)
- {
- return detail::generate_to(sink, c, CharEncoding(), Tag());
- }
- };
-
- template <typename CharEncoding = unused_type, typename Tag = unused_type>
- struct string_inserter
- {
- template <typename OutputIterator, typename String>
- static bool call(OutputIterator& sink, String str)
- {
- return detail::string_generate(sink, str, CharEncoding(), Tag());
- }
- };
-
- ///////////////////////////////////////////////////////////////////////////
//
// The real_inserter template takes care of the floating point number to
// string conversion. The Policies template parameter is used to allow
Modified: branches/release/boost/spirit/home/karma/numeric/int.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/numeric/int.hpp (original)
+++ branches/release/boost/spirit/home/karma/numeric/int.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -16,11 +16,13 @@
#include <boost/spirit/home/support/string_traits.hpp>
#include <boost/spirit/home/support/info.hpp>
#include <boost/spirit/home/support/char_class.hpp>
+#include <boost/spirit/home/support/container.hpp>
#include <boost/spirit/home/support/detail/get_encoding.hpp>
#include <boost/spirit/home/karma/meta_compiler.hpp>
#include <boost/spirit/home/karma/delimit_out.hpp>
#include <boost/spirit/home/karma/auxiliary/lazy.hpp>
#include <boost/spirit/home/karma/detail/get_casetag.hpp>
+#include <boost/spirit/home/karma/detail/extract_from.hpp>
#include <boost/spirit/home/karma/domain.hpp>
#include <boost/spirit/home/karma/numeric/detail/numeric_utils.hpp>
#include <boost/fusion/include/at.hpp>
@@ -179,6 +181,17 @@
: primitive_generator<any_int_generator<T, CharEncoding, Tag, Radix
, force_sign> >
{
+ private:
+ template <typename OutputIterator, typename Attribute>
+ static bool insert_int(OutputIterator& sink, Attribute const& attr)
+ {
+ return sign_inserter::call(sink, detail::is_zero(attr)
+ , detail::is_negative(attr), force_sign) &&
+ int_inserter<Radix, CharEncoding, Tag>::call(sink
+ , detail::absolute_value(attr));
+ }
+
+ public:
template <typename Context, typename Unused>
struct attribute
{
@@ -200,11 +213,11 @@
generate(OutputIterator& sink, Context&, Delimiter const& d
, Attribute const& attr)
{
- return sign_inserter::call(sink, detail::is_zero(attr)
- , detail::is_negative(attr), force_sign) &&
- int_inserter<Radix, CharEncoding, Tag>::call(sink
- , detail::absolute_value(attr)) &&
- karma::delimit_out(sink, d); // always do post-delimiting
+ if (!traits::has_optional_value(attr))
+ return false; // fail if it's an uninitialized optional
+
+ return insert_int(sink, traits::extract_from(attr)) &&
+ delimit_out(sink, d); // always do post-delimiting
}
// this int has no Attribute attached, it needs to have been
@@ -235,6 +248,17 @@
: primitive_generator<literal_int_generator<T, CharEncoding, Tag, Radix
, force_sign, no_attribute> >
{
+ private:
+ template <typename OutputIterator, typename Attribute>
+ static bool insert_int(OutputIterator& sink, Attribute const& attr)
+ {
+ return sign_inserter::call(sink, detail::is_zero(attr)
+ , detail::is_negative(attr), force_sign) &&
+ int_inserter<Radix, CharEncoding, Tag>::call(sink
+ , detail::absolute_value(attr));
+ }
+
+ public:
template <typename Context, typename Unused>
struct attribute
: mpl::if_c<no_attribute, unused_type, T>
@@ -259,14 +283,12 @@
bool generate(OutputIterator& sink, Context&, Delimiter const& d
, Attribute const& attr) const
{
- if (n_ != attr)
+ if (!traits::has_optional_value(attr) ||
+ n_ != traits::extract_from(attr))
+ {
return false;
-
- return sign_inserter::call(sink, detail::is_zero(n_)
- , detail::is_negative(n_), force_sign) &&
- int_inserter<Radix, CharEncoding, Tag>::call(sink
- , detail::absolute_value(n_)) &&
- karma::delimit_out(sink, d); // always do post-delimiting
+ }
+ return insert_int(sink, n_) && delimit_out(sink, d);
}
// A int_(1) without any associated attribute just emits its
@@ -275,11 +297,7 @@
bool generate(OutputIterator& sink, Context&, Delimiter const& d
, unused_type) const
{
- return sign_inserter::call(sink, detail::is_zero(n_)
- , detail::is_negative(n_), force_sign) &&
- int_inserter<Radix, CharEncoding, Tag>::call(sink
- , detail::absolute_value(n_)) &&
- karma::delimit_out(sink, d); // always do post-delimiting
+ return insert_int(sink, n_) && delimit_out(sink, d);
}
template <typename Context>
@@ -294,99 +312,105 @@
///////////////////////////////////////////////////////////////////////////
// Generator generators: make_xxx function (objects)
///////////////////////////////////////////////////////////////////////////
- template <typename T, typename Modifiers, unsigned Radix = 10
- , bool force_sign = false>
- struct make_int
+ namespace detail
{
- static bool const lower =
- has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
- has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
-
- typedef any_int_generator<
- T
- , typename spirit::detail::get_encoding<
- Modifiers, unused_type, lower || upper>::type
- , typename detail::get_casetag<Modifiers, lower || upper>::type
- , Radix
- , force_sign
- > result_type;
-
- result_type operator()(unused_type, unused_type) const
+ template <typename T, typename Modifiers, unsigned Radix = 10
+ , bool force_sign = false>
+ struct make_int
{
- return result_type();
- }
- };
+ static bool const lower =
+ has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
+ static bool const upper =
+ has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
+
+ typedef any_int_generator<
+ T
+ , typename spirit::detail::get_encoding<
+ Modifiers, unused_type, lower || upper>::type
+ , typename detail::get_casetag<Modifiers, lower || upper>::type
+ , Radix
+ , force_sign
+ > result_type;
+
+ result_type operator()(unused_type, unused_type) const
+ {
+ return result_type();
+ }
+ };
+ }
///////////////////////////////////////////////////////////////////////////
template <typename Modifiers>
struct make_primitive<tag::short_, Modifiers>
- : make_int<short, Modifiers> {};
+ : detail::make_int<short, Modifiers> {};
template <typename Modifiers>
struct make_primitive<tag::int_, Modifiers>
- : make_int<int, Modifiers> {};
+ : detail::make_int<int, Modifiers> {};
template <typename Modifiers>
struct make_primitive<tag::long_, Modifiers>
- : make_int<long, Modifiers> {};
+ : detail::make_int<long, Modifiers> {};
#ifdef BOOST_HAS_LONG_LONG
template <typename Modifiers>
struct make_primitive<tag::long_long, Modifiers>
- : make_int<boost::long_long_type, Modifiers> {};
+ : detail::make_int<boost::long_long_type, Modifiers> {};
#endif
template <typename T, unsigned Radix, bool force_sign, typename Modifiers>
struct make_primitive<tag::int_tag<T, Radix, force_sign>, Modifiers>
- : make_int<T, Modifiers, Radix, force_sign> {};
+ : detail::make_int<T, Modifiers, Radix, force_sign> {};
///////////////////////////////////////////////////////////////////////////
- template <typename T, typename Modifiers, unsigned Radix = 10
- , bool force_sign = false>
- struct make_int_direct
+ namespace detail
{
- static bool const lower =
- has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
- has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
-
- typedef literal_int_generator<
- T
- , typename spirit::detail::get_encoding<
- Modifiers, unused_type, lower || upper>::type
- , typename detail::get_casetag<Modifiers, lower || upper>::type
- , Radix, force_sign, false
- > result_type;
-
- template <typename Terminal>
- result_type operator()(Terminal const& term, unused_type) const
+ template <typename T, typename Modifiers, unsigned Radix = 10
+ , bool force_sign = false>
+ struct make_int_direct
{
- return result_type(fusion::at_c<0>(term.args));
- }
- };
+ static bool const lower =
+ has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
+ static bool const upper =
+ has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
+
+ typedef literal_int_generator<
+ T
+ , typename spirit::detail::get_encoding<
+ Modifiers, unused_type, lower || upper>::type
+ , typename detail::get_casetag<Modifiers, lower || upper>::type
+ , Radix, force_sign, false
+ > result_type;
+
+ template <typename Terminal>
+ result_type operator()(Terminal const& term, unused_type) const
+ {
+ return result_type(fusion::at_c<0>(term.args));
+ }
+ };
+ }
///////////////////////////////////////////////////////////////////////////
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::short_, fusion::vector1<A0> >, Modifiers>
- : make_int_direct<short, Modifiers> {};
+ : detail::make_int_direct<short, Modifiers> {};
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::int_, fusion::vector1<A0> >, Modifiers>
- : make_int_direct<int, Modifiers> {};
+ : detail::make_int_direct<int, Modifiers> {};
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::long_, fusion::vector1<A0> >, Modifiers>
- : make_int_direct<long, Modifiers> {};
+ : detail::make_int_direct<long, Modifiers> {};
#ifdef BOOST_HAS_LONG_LONG
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::long_long, fusion::vector1<A0> >, Modifiers>
- : make_int_direct<boost::long_long_type, Modifiers> {};
+ : detail::make_int_direct<boost::long_long_type, Modifiers> {};
#endif
template <typename T, unsigned Radix, bool force_sign, typename A0
@@ -394,7 +418,7 @@
struct make_primitive<
terminal_ex<tag::int_tag<T, Radix, force_sign>, fusion::vector1<A0> >
, Modifiers>
- : make_int_direct<T, Modifiers, Radix, force_sign> {};
+ : detail::make_int_direct<T, Modifiers, Radix, force_sign> {};
///////////////////////////////////////////////////////////////////////////
namespace detail
Modified: branches/release/boost/spirit/home/karma/numeric/real.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/numeric/real.hpp (original)
+++ branches/release/boost/spirit/home/karma/numeric/real.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -15,12 +15,14 @@
#include <boost/spirit/home/support/string_traits.hpp>
#include <boost/spirit/home/support/info.hpp>
#include <boost/spirit/home/support/char_class.hpp>
+#include <boost/spirit/home/support/container.hpp>
#include <boost/spirit/home/support/detail/get_encoding.hpp>
#include <boost/spirit/home/karma/meta_compiler.hpp>
#include <boost/spirit/home/karma/char.hpp>
#include <boost/spirit/home/karma/delimit_out.hpp>
#include <boost/spirit/home/karma/auxiliary/lazy.hpp>
#include <boost/spirit/home/karma/detail/get_casetag.hpp>
+#include <boost/spirit/home/karma/detail/extract_from.hpp>
#include <boost/spirit/home/karma/domain.hpp>
#include <boost/spirit/home/karma/numeric/real_policies.hpp>
#include <boost/spirit/home/karma/numeric/detail/real_utils.hpp>
@@ -30,31 +32,25 @@
namespace boost { namespace spirit
{
- namespace tag
- {
- template <typename T, typename Policies>
- struct real_tag
- {
- real_tag() {}
- real_tag(Policies const& policies)
- : policies_(policies) {}
-
- Policies policies_;
- };
- }
-
namespace karma
{
///////////////////////////////////////////////////////////////////////
+ // forward declaration only
+ template <typename T>
+ struct real_policies;
+
+ ///////////////////////////////////////////////////////////////////////
// This one is the class that the user can instantiate directly in
// order to create a customized real generator
template <typename T = double, typename Policies = real_policies<T> >
struct real_generator
- : spirit::terminal<tag::real_tag<T, Policies> >
+ : spirit::terminal<tag::stateful_tag<Policies, tag::double_, T> >
{
+ typedef tag::stateful_tag<Policies, tag::double_, T> tag_type;
+
real_generator() {}
real_generator(Policies const& p)
- : spirit::terminal<tag::real_tag<T, Policies> >(p) {}
+ : spirit::terminal<tag_type>(p) {}
};
}
@@ -117,20 +113,22 @@
///////////////////////////////////////////////////////////////////////////
// enables custom real generator
- template <typename T, typename Policy>
- struct use_terminal<karma::domain, tag::real_tag<T, Policy> >
+ template <typename T, typename Policies>
+ struct use_terminal<karma::domain
+ , tag::stateful_tag<Policies, tag::double_, T> >
: mpl::true_ {};
- template <typename T, typename Policy, typename A0>
+ template <typename T, typename Policies, typename A0>
struct use_terminal<karma::domain
- , terminal_ex<tag::real_tag<T, Policy>, fusion::vector1<A0> >
- > : mpl::true_ {};
+ , terminal_ex<tag::stateful_tag<Policies, tag::double_, T>
+ , fusion::vector1<A0> > >
+ : mpl::true_ {};
// enables *lazy* custom real generator
- template <typename T, typename Policy>
+ template <typename T, typename Policies>
struct use_lazy_terminal<
karma::domain
- , tag::real_tag<T, Policy>
+ , tag::stateful_tag<Policies, tag::double_, T>
, 1 // arity
> : mpl::true_ {};
@@ -173,8 +171,11 @@
bool generate(OutputIterator& sink, Context&, Delimiter const& d
, Attribute const& attr) const
{
+ if (!traits::has_optional_value(attr))
+ return false; // fail if it's an uninitialized optional
+
typedef real_inserter<T, Policies, CharEncoding, Tag> inserter_type;
- return inserter_type::call(sink, attr, p_) &&
+ return inserter_type::call(sink, traits::extract_from(attr), p_) &&
karma::delimit_out(sink, d); // always do post-delimiting
}
@@ -227,8 +228,11 @@
bool generate(OutputIterator& sink, Context&, Delimiter const& d
, Attribute const& attr) const
{
- if (n_ != attr)
+ if (!traits::has_optional_value(attr) ||
+ n_ != traits::extract_from(attr))
+ {
return false;
+ }
typedef real_inserter<T, Policies, CharEncoding, Tag> inserter_type;
return inserter_type::call(sink, n_, p_) &&
@@ -257,112 +261,107 @@
};
///////////////////////////////////////////////////////////////////////////
- namespace detail
- {
- // extract policies if this is a real_tag
- template <typename Policies>
- struct get_policies
- {
- template <typename Tag>
- static Policies call(Tag) { return Policies(); }
-
- template <typename T>
- static Policies const& call(tag::real_tag<T, Policies> const& p)
- { return p.policies_; }
- };
- }
-
- ///////////////////////////////////////////////////////////////////////////
// Generator generators: make_xxx function (objects)
///////////////////////////////////////////////////////////////////////////
- template <
- typename T, typename Modifiers, typename Policies = real_policies<T> >
- struct make_real
+ namespace detail
{
- static bool const lower =
- has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
- has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
-
- typedef any_real_generator<
- T, Policies
- , typename spirit::detail::get_encoding<
- Modifiers, unused_type, lower || upper>::type
- , typename detail::get_casetag<Modifiers, lower || upper>::type
- > result_type;
-
- template <typename Terminal>
- result_type operator()(Terminal const& term, unused_type) const
+ template <typename T, typename Modifiers
+ , typename Policies = real_policies<T> >
+ struct make_real
{
- using karma::detail::get_policies;
- return result_type(get_policies<Policies>::call(term));
- }
- };
+ static bool const lower =
+ has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
+ static bool const upper =
+ has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
+
+ typedef any_real_generator<
+ T, Policies
+ , typename spirit::detail::get_encoding<
+ Modifiers, unused_type, lower || upper>::type
+ , typename detail::get_casetag<Modifiers, lower || upper>::type
+ > result_type;
+
+ template <typename Terminal>
+ result_type operator()(Terminal const& term, unused_type) const
+ {
+ typedef tag::stateful_tag<Policies, tag::double_, T> tag_type;
+ using spirit::detail::get_stateful_data;
+ return result_type(get_stateful_data<tag_type>::call(term));
+ }
+ };
+ }
template <typename Modifiers>
struct make_primitive<tag::float_, Modifiers>
- : make_real<float, Modifiers> {};
+ : detail::make_real<float, Modifiers> {};
template <typename Modifiers>
struct make_primitive<tag::double_, Modifiers>
- : make_real<double, Modifiers> {};
+ : detail::make_real<double, Modifiers> {};
template <typename Modifiers>
struct make_primitive<tag::long_double, Modifiers>
- : make_real<long double, Modifiers> {};
+ : detail::make_real<long double, Modifiers> {};
///////////////////////////////////////////////////////////////////////////
- template <typename T, typename Policy, typename Modifiers>
- struct make_primitive<tag::real_tag<T, Policy>, Modifiers>
- : make_real<T, Modifiers, Policy> {};
+ template <typename T, typename Policies, typename Modifiers>
+ struct make_primitive<
+ tag::stateful_tag<Policies, tag::double_, T>, Modifiers>
+ : detail::make_real<T, Modifiers, Policies> {};
///////////////////////////////////////////////////////////////////////////
- template <
- typename T, typename Modifiers, typename Policies = real_policies<T> >
- struct make_real_direct
+ namespace detail
{
- static bool const lower =
- has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
- has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
-
- typedef literal_real_generator<
- T, Policies
- , typename spirit::detail::get_encoding<
- Modifiers, unused_type, lower || upper>::type
- , typename detail::get_casetag<Modifiers, lower || upper>::type
- , false
- > result_type;
-
- template <typename Terminal>
- result_type operator()(Terminal const& term, unused_type) const
+ template <typename T, typename Modifiers
+ , typename Policies = real_policies<T> >
+ struct make_real_direct
{
- return result_type(fusion::at_c<0>(term.args)
- , karma::detail::get_policies<Policies>::call(term.term));
- }
- };
+ static bool const lower =
+ has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
+ static bool const upper =
+ has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
+
+ typedef literal_real_generator<
+ T, Policies
+ , typename spirit::detail::get_encoding<
+ Modifiers, unused_type, lower || upper>::type
+ , typename detail::get_casetag<Modifiers, lower || upper>::type
+ , false
+ > result_type;
+
+ template <typename Terminal>
+ result_type operator()(Terminal const& term, unused_type) const
+ {
+ typedef tag::stateful_tag<Policies, tag::double_, T> tag_type;
+ using spirit::detail::get_stateful_data;
+ return result_type(T(fusion::at_c<0>(term.args))
+ , get_stateful_data<tag_type>::call(term.term));
+ }
+ };
+ }
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::float_, fusion::vector1<A0> >, Modifiers>
- : make_real_direct<float, Modifiers> {};
+ : detail::make_real_direct<float, Modifiers> {};
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::double_, fusion::vector1<A0> >, Modifiers>
- : make_real_direct<double, Modifiers> {};
+ : detail::make_real_direct<double, Modifiers> {};
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::long_double, fusion::vector1<A0> >, Modifiers>
- : make_real_direct<long double, Modifiers> {};
+ : detail::make_real_direct<long double, Modifiers> {};
///////////////////////////////////////////////////////////////////////////
- template <typename T, typename Policy, typename A0, typename Modifiers>
+ template <typename T, typename Policies, typename A0, typename Modifiers>
struct make_primitive<
- terminal_ex<tag::real_tag<T, Policy>, fusion::vector1<A0> >
+ terminal_ex<tag::stateful_tag<Policies, tag::double_, T>
+ , fusion::vector1<A0> >
, Modifiers>
- : make_real_direct<T, Modifiers, Policy> {};
+ : detail::make_real_direct<T, Modifiers, Policies> {};
///////////////////////////////////////////////////////////////////////////
namespace detail
@@ -386,7 +385,7 @@
template <typename T_>
result_type operator()(T_ i, unused_type) const
{
- return result_type(i);
+ return result_type(T(i));
}
};
}
Modified: branches/release/boost/spirit/home/karma/numeric/real_policies.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/numeric/real_policies.hpp (original)
+++ branches/release/boost/spirit/home/karma/numeric/real_policies.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -47,7 +47,7 @@
struct real_policies
{
///////////////////////////////////////////////////////////////////////
- // Expose the data type the generator is targeted to
+ // Expose the data type the generator is targeted at
///////////////////////////////////////////////////////////////////////
typedef T value_type;
Modified: branches/release/boost/spirit/home/karma/numeric/uint.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/numeric/uint.hpp (original)
+++ branches/release/boost/spirit/home/karma/numeric/uint.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -16,11 +16,13 @@
#include <boost/spirit/home/support/string_traits.hpp>
#include <boost/spirit/home/support/info.hpp>
#include <boost/spirit/home/support/char_class.hpp>
+#include <boost/spirit/home/support/container.hpp>
#include <boost/spirit/home/support/detail/get_encoding.hpp>
#include <boost/spirit/home/karma/meta_compiler.hpp>
#include <boost/spirit/home/karma/delimit_out.hpp>
#include <boost/spirit/home/karma/auxiliary/lazy.hpp>
#include <boost/spirit/home/karma/detail/get_casetag.hpp>
+#include <boost/spirit/home/karma/detail/extract_from.hpp>
#include <boost/spirit/home/karma/domain.hpp>
#include <boost/spirit/home/karma/numeric/detail/numeric_utils.hpp>
#include <boost/fusion/include/at.hpp>
@@ -241,8 +243,12 @@
generate(OutputIterator& sink, Context&, Delimiter const& d
, Attribute const& attr)
{
- return int_inserter<Radix, CharEncoding, Tag>::call(sink, attr) &&
- karma::delimit_out(sink, d); // always do post-delimiting
+ if (!traits::has_optional_value(attr))
+ return false; // fail if it's an uninitialized optional
+
+ return int_inserter<Radix, CharEncoding, Tag>::
+ call(sink, traits::extract_from(attr)) &&
+ delimit_out(sink, d); // always do post-delimiting
}
// this int has no Attribute attached, it needs to have been
@@ -297,11 +303,13 @@
bool generate(OutputIterator& sink, Context&, Delimiter const& d
, Attribute const& attr) const
{
- if (n_ != attr)
+ if (!traits::has_optional_value(attr) ||
+ n_ != traits::extract_from(attr))
+ {
return false;
-
+ }
return int_inserter<Radix, CharEncoding, Tag>::call(sink, n_) &&
- karma::delimit_out(sink, d); // always do post-delimiting
+ delimit_out(sink, d); // always do post-delimiting
}
// A uint(1U) without any associated attribute just emits its
@@ -311,7 +319,7 @@
, unused_type) const
{
return int_inserter<Radix, CharEncoding, Tag>::call(sink, n_) &&
- karma::delimit_out(sink, d); // always do post-delimiting
+ delimit_out(sink, d); // always do post-delimiting
}
template <typename Context>
@@ -326,129 +334,135 @@
///////////////////////////////////////////////////////////////////////////
// Generator generators: make_xxx function (objects)
///////////////////////////////////////////////////////////////////////////
- template <typename T, typename Modifiers, unsigned Radix = 10>
- struct make_uint
+ namespace detail
{
- static bool const lower =
- has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
- has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
-
- typedef any_uint_generator<
- T
- , typename spirit::detail::get_encoding<
- Modifiers, unused_type, lower || upper>::type
- , typename detail::get_casetag<Modifiers, lower || upper>::type
- , Radix
- > result_type;
-
- result_type operator()(unused_type, unused_type) const
+ template <typename T, typename Modifiers, unsigned Radix = 10>
+ struct make_uint
{
- return result_type();
- }
- };
+ static bool const lower =
+ has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
+ static bool const upper =
+ has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
+
+ typedef any_uint_generator<
+ T
+ , typename spirit::detail::get_encoding<
+ Modifiers, unused_type, lower || upper>::type
+ , typename detail::get_casetag<Modifiers, lower || upper>::type
+ , Radix
+ > result_type;
+
+ result_type operator()(unused_type, unused_type) const
+ {
+ return result_type();
+ }
+ };
+ }
///////////////////////////////////////////////////////////////////////////
template <typename Modifiers>
struct make_primitive<tag::ushort_, Modifiers>
- : make_uint<unsigned short, Modifiers> {};
+ : detail::make_uint<unsigned short, Modifiers> {};
template <typename Modifiers>
struct make_primitive<tag::uint_, Modifiers>
- : make_uint<unsigned int, Modifiers> {};
+ : detail::make_uint<unsigned int, Modifiers> {};
template <typename Modifiers>
struct make_primitive<tag::ulong_, Modifiers>
- : make_uint<unsigned long, Modifiers> {};
+ : detail::make_uint<unsigned long, Modifiers> {};
template <typename Modifiers>
struct make_primitive<tag::bin, Modifiers>
- : make_uint<unsigned, Modifiers, 2> {};
+ : detail::make_uint<unsigned, Modifiers, 2> {};
template <typename Modifiers>
struct make_primitive<tag::oct, Modifiers>
- : make_uint<unsigned, Modifiers, 8> {};
+ : detail::make_uint<unsigned, Modifiers, 8> {};
template <typename Modifiers>
struct make_primitive<tag::hex, Modifiers>
- : make_uint<unsigned, Modifiers, 16> {};
+ : detail::make_uint<unsigned, Modifiers, 16> {};
#ifdef BOOST_HAS_LONG_LONG
template <typename Modifiers>
struct make_primitive<tag::ulong_long, Modifiers>
- : make_uint<boost::ulong_long_type, Modifiers> {};
+ : detail::make_uint<boost::ulong_long_type, Modifiers> {};
#endif
template <typename T, unsigned Radix, typename Modifiers>
struct make_primitive<tag::uint_tag<T, Radix>, Modifiers>
- : make_uint<T, Modifiers, Radix> {};
+ : detail::make_uint<T, Modifiers, Radix> {};
///////////////////////////////////////////////////////////////////////////
- template <typename T, typename Modifiers, unsigned Radix = 10>
- struct make_uint_direct
+ namespace detail
{
- static bool const lower =
- has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
- static bool const upper =
- has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
-
- typedef literal_uint_generator<
- T
- , typename spirit::detail::get_encoding<
- Modifiers, unused_type, lower || upper>::type
- , typename detail::get_casetag<Modifiers, lower || upper>::type
- , Radix, false
- > result_type;
-
- template <typename Terminal>
- result_type operator()(Terminal const& term, unused_type) const
+ template <typename T, typename Modifiers, unsigned Radix = 10>
+ struct make_uint_direct
{
- return result_type(fusion::at_c<0>(term.args));
- }
- };
+ static bool const lower =
+ has_modifier<Modifiers, tag::char_code_base<tag::lower> >::value;
+ static bool const upper =
+ has_modifier<Modifiers, tag::char_code_base<tag::upper> >::value;
+
+ typedef literal_uint_generator<
+ T
+ , typename spirit::detail::get_encoding<
+ Modifiers, unused_type, lower || upper>::type
+ , typename detail::get_casetag<Modifiers, lower || upper>::type
+ , Radix, false
+ > result_type;
+
+ template <typename Terminal>
+ result_type operator()(Terminal const& term, unused_type) const
+ {
+ return result_type(fusion::at_c<0>(term.args));
+ }
+ };
+ }
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::ushort_, fusion::vector1<A0> >, Modifiers>
- : make_uint_direct<unsigned short, Modifiers> {};
+ : detail::make_uint_direct<unsigned short, Modifiers> {};
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::uint_, fusion::vector1<A0> >, Modifiers>
- : make_uint_direct<unsigned int, Modifiers> {};
+ : detail::make_uint_direct<unsigned int, Modifiers> {};
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::ulong_, fusion::vector1<A0> >, Modifiers>
- : make_uint_direct<unsigned long, Modifiers> {};
+ : detail::make_uint_direct<unsigned long, Modifiers> {};
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::bin, fusion::vector1<A0> >, Modifiers>
- : make_uint_direct<unsigned, Modifiers, 2> {};
+ : detail::make_uint_direct<unsigned, Modifiers, 2> {};
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::oct, fusion::vector1<A0> >, Modifiers>
- : make_uint_direct<unsigned, Modifiers, 8> {};
+ : detail::make_uint_direct<unsigned, Modifiers, 8> {};
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::hex, fusion::vector1<A0> >, Modifiers>
- : make_uint_direct<unsigned, Modifiers, 16> {};
+ : detail::make_uint_direct<unsigned, Modifiers, 16> {};
#ifdef BOOST_HAS_LONG_LONG
template <typename Modifiers, typename A0>
struct make_primitive<
terminal_ex<tag::ulong_long, fusion::vector1<A0> >, Modifiers>
- : make_uint_direct<boost::ulong_long_type, Modifiers> {};
+ : detail::make_uint_direct<boost::ulong_long_type, Modifiers> {};
#endif
template <typename T, unsigned Radix, typename A0, typename Modifiers>
struct make_primitive<
terminal_ex<tag::uint_tag<T, Radix>, fusion::vector1<A0> >
, Modifiers>
- : make_uint_direct<T, Modifiers, Radix> {};
+ : detail::make_uint_direct<T, Modifiers, Radix> {};
namespace detail
{
Modified: branches/release/boost/spirit/home/karma/operator/alternative.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/operator/alternative.hpp (original)
+++ branches/release/boost/spirit/home/karma/operator/alternative.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -137,4 +137,12 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Elements>
+ struct has_semantic_action<karma::alternative<Elements> >
+ : nary_has_semantic_action<Elements> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/operator/and_predicate.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/operator/and_predicate.hpp (original)
+++ branches/release/boost/spirit/home/karma/operator/and_predicate.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -78,4 +78,12 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<karma::and_predicate<Subject> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/operator/kleene.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/operator/kleene.hpp (original)
+++ branches/release/boost/spirit/home/karma/operator/kleene.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -61,7 +61,7 @@
bool generate(OutputIterator& sink, Context& ctx
, Delimiter const& d, Attribute const& attr) const
{
- typedef typename traits::result_of::iterator<
+ typedef typename traits::container_iterator<
typename add_const<Attribute>::type
>::type iterator_type;
@@ -69,10 +69,13 @@
iterator_type end = traits::end(attr);
// kleene fails only if the underlying output fails
- bool result = true;
- for (/**/; result && !traits::compare(it, end); traits::next(it))
+ for (/**/; detail::sink_is_good(sink) && !traits::compare(it, end);
+ traits::next(it))
{
- result = subject.generate(sink, ctx, d, traits::deref(it));
+ // Ignore return value, failing subject generators are just
+ // skipped. This allows to selectively generate items in the
+ // provided attribute.
+ subject.generate(sink, ctx, d, traits::deref(it));
}
return detail::sink_is_good(sink);
}
@@ -96,4 +99,12 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<karma::kleene<Subject> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/operator/list.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/operator/list.hpp (original)
+++ branches/release/boost/spirit/home/karma/operator/list.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -1,5 +1,5 @@
-// Copyright (c) 2001-2009 Joel de Guzman
// Copyright (c) 2001-2009 Hartmut Kaiser
+// Copyright (c) 2001-2009 Joel de Guzman
//
// Distributed under the Boost Software License, Version 1.0. (See accompanying
// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -36,11 +36,33 @@
template <typename Left, typename Right>
struct list : binary_generator<list<Left, Right> >
{
+ private:
+ // iterate over the given container until its exhausted or the embedded
+ // (left) generator succeeds
+ template <
+ typename OutputIterator, typename Context, typename Delimiter
+ , typename Iterator>
+ bool generate_left(OutputIterator& sink, Context& ctx
+ , Delimiter const& d, Iterator& it, Iterator& end) const
+ {
+ while (!traits::compare(it, end))
+ {
+ if (left.generate(sink, ctx, d, traits::deref(it)))
+ return true;
+ traits::next(it);
+ }
+ return false;
+ }
+
+ public:
typedef Left left_type;
typedef Right right_type;
typedef mpl::int_<
- left_type::properties::value | right_type::properties::value
+ left_type::properties::value
+ | right_type::properties::value
+ | generator_properties::buffering
+ | generator_properties::counting
> properties;
// Build a std::vector from the LHS's attribute. Note
@@ -49,12 +71,12 @@
template <typename Context, typename Iterator>
struct attribute
: traits::build_std_vector<
- typename traits::attribute_of<Left, Context, Iterator>::type
- >
+ typename traits::attribute_of<Left, Context, Iterator>::type>
{};
list(Left const& left, Right const& right)
- : left(left), right(right) {}
+ : left(left), right(right)
+ {}
template <
typename OutputIterator, typename Context, typename Delimiter
@@ -62,23 +84,31 @@
bool generate(OutputIterator& sink, Context& ctx
, Delimiter const& d, Attribute const& attr) const
{
- typedef typename traits::result_of::iterator<
+ typedef typename traits::container_iterator<
typename add_const<Attribute>::type
>::type iterator_type;
iterator_type it = traits::begin(attr);
iterator_type end = traits::end(attr);
- bool result = !traits::compare(it, end);
- if (result && left.generate(sink, ctx, d, traits::deref(it)))
+ if (generate_left(sink, ctx, d, it, end))
{
- for (traits::next(it); result && !traits::compare(it, end);
- traits::next(it))
+ for (traits::next(it); !traits::compare(it, end); traits::next(it))
{
- result = right.generate(sink, ctx, d, unused) &&
- left.generate(sink, ctx, d, traits::deref(it));
+ // wrap the given output iterator as generate_left might fail
+ detail::enable_buffering<OutputIterator> buffering(sink);
+ {
+ detail::disable_counting<OutputIterator> nocounting(sink);
+
+ if (!right.generate(sink, ctx, d, unused))
+ return false; // shouldn't happen
+
+ if (!generate_left(sink, ctx, d, it, end))
+ break; // return true as one item succeeded
+ }
+ buffering.buffer_copy();
}
- return result;
+ return true;
}
return false;
}
@@ -104,4 +134,12 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Left, typename Right>
+ struct has_semantic_action<karma::list<Left, Right> >
+ : binary_has_semantic_action<Left, Right> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/operator/not_predicate.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/operator/not_predicate.hpp (original)
+++ branches/release/boost/spirit/home/karma/operator/not_predicate.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -79,4 +79,12 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<karma::not_predicate<Subject> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/operator/optional.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/operator/optional.hpp (original)
+++ branches/release/boost/spirit/home/karma/operator/optional.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -17,6 +17,7 @@
#include <boost/spirit/home/support/info.hpp>
#include <boost/spirit/home/support/unused.hpp>
#include <boost/spirit/home/support/attributes.hpp>
+#include <boost/spirit/home/support/container.hpp>
#include <boost/mpl/assert.hpp>
#include <boost/optional.hpp>
#include <boost/type_traits/is_convertible.hpp>
@@ -35,51 +36,6 @@
///////////////////////////////////////////////////////////////////////////////
namespace boost { namespace spirit { namespace karma
{
- namespace detail
- {
- ///////////////////////////////////////////////////////////////////////
- template <typename Attribute>
- inline bool
- optional_is_valid(boost::optional<Attribute> const& opt)
- {
- return opt;
- }
-
- template <typename Attribute>
- inline bool
- optional_is_valid(Attribute const& opt)
- {
- return true;
- }
-
- inline bool
- optional_is_valid(unused_type)
- {
- return true;
- }
-
- ///////////////////////////////////////////////////////////////////////
- template <typename Attribute>
- inline Attribute const&
- optional_get(boost::optional<Attribute> const& opt)
- {
- return get(opt);
- }
-
- template <typename Attribute>
- inline Attribute const&
- optional_get(Attribute const& opt)
- {
- return opt;
- }
-
- inline unused_type
- optional_get(unused_type)
- {
- return unused;
- }
- }
-
///////////////////////////////////////////////////////////////////////////
template <typename Subject>
struct optional : unary_generator<optional<Subject> >
@@ -106,8 +62,8 @@
bool generate(OutputIterator& sink, Context& ctx
, Delimiter const& d, Attribute const& attr) const
{
- if (detail::optional_is_valid(attr))
- subject.generate(sink, ctx, d, detail::optional_get(attr));
+ if (traits::has_optional_value(attr))
+ subject.generate(sink, ctx, d, traits::optional_value(attr));
return sink_is_good(sink);
}
@@ -129,4 +85,12 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<karma::optional<Subject> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/operator/plus.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/operator/plus.hpp (original)
+++ branches/release/boost/spirit/home/karma/operator/plus.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -61,7 +61,7 @@
bool generate(OutputIterator& sink, Context& ctx
, Delimiter const& d, Attribute const& attr) const
{
- typedef typename traits::result_of::iterator<
+ typedef typename traits::container_iterator<
typename add_const<Attribute>::type
>::type iterator_type;
@@ -72,13 +72,16 @@
if (traits::compare(it, end))
return false;
- // from now on plus fails only if the underlying output fails
- bool result = true;
- for (/**/; result && !traits::compare(it, end); traits::next(it))
+ // from now on plus fails if the underlying output fails or overall
+ // no subject generators succeeded
+ bool result = false;
+ for (/**/; detail::sink_is_good(sink) && !traits::compare(it, end);
+ traits::next(it))
{
- result = subject.generate(sink, ctx, d, traits::deref(it));
+ if (subject.generate(sink, ctx, d, traits::deref(it)))
+ result = true;
}
- return detail::sink_is_good(sink);
+ return result && detail::sink_is_good(sink);
}
template <typename Context>
@@ -101,4 +104,12 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<karma::plus<Subject> >
+ : unary_has_semantic_action<Subject> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/operator/sequence.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/operator/sequence.hpp (original)
+++ branches/release/boost/spirit/home/karma/operator/sequence.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -191,4 +191,12 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Elements>
+ struct has_semantic_action<karma::sequence<Elements> >
+ : nary_has_semantic_action<Elements> {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/karma/stream/stream.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/stream/stream.hpp (original)
+++ branches/release/boost/spirit/home/karma/stream/stream.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -12,6 +12,7 @@
#include <boost/spirit/home/support/common_terminals.hpp>
#include <boost/spirit/home/support/info.hpp>
+#include <boost/spirit/home/support/container.hpp>
#include <boost/spirit/home/support/detail/hold_any.hpp>
#include <boost/spirit/home/support/detail/get_encoding.hpp>
#include <boost/spirit/home/karma/domain.hpp>
@@ -21,6 +22,7 @@
#include <boost/spirit/home/karma/stream/detail/format_manip.hpp>
#include <boost/spirit/home/karma/stream/detail/iterator_sink.hpp>
#include <boost/spirit/home/karma/detail/get_casetag.hpp>
+#include <boost/spirit/home/karma/detail/extract_from.hpp>
#include <boost/fusion/include/at.hpp>
#include <boost/fusion/include/vector.hpp>
#include <boost/fusion/include/cons.hpp>
@@ -126,9 +128,12 @@
OutputIterator, Char, CharEncoding, Tag
> sink_device;
+ if (!traits::has_optional_value(attr))
+ return false;
+
// use existing operator<<()
boost::iostreams::stream<sink_device> ostr(sink);
- ostr << attr << std::flush;
+ ostr << traits::extract_from(attr) << std::flush;
if (ostr.good())
return karma::delimit_out(sink, d); // always do post-delimiting
@@ -153,10 +158,13 @@
output_iterator, Char, CharEncoding, Tag
> sink_device;
+ if (!traits::has_optional_value(attr))
+ return false;
+
// use existing operator<<()
boost::iostreams::stream<sink_device> ostr(sink);
ostr.imbue(sink.get_ostream().getloc());
- ostr << attr << std::flush;
+ ostr << traits::extract_from(attr) << std::flush;
if (ostr.good())
return karma::delimit_out(sink, d); // always do post-delimiting
Modified: branches/release/boost/spirit/home/karma/string/lit.hpp
==============================================================================
--- branches/release/boost/spirit/home/karma/string/lit.hpp (original)
+++ branches/release/boost/spirit/home/karma/string/lit.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -14,12 +14,14 @@
#include <boost/spirit/home/support/string_traits.hpp>
#include <boost/spirit/home/support/info.hpp>
#include <boost/spirit/home/support/char_class.hpp>
+#include <boost/spirit/home/support/container.hpp>
#include <boost/spirit/home/support/detail/get_encoding.hpp>
#include <boost/spirit/home/karma/domain.hpp>
#include <boost/spirit/home/karma/meta_compiler.hpp>
#include <boost/spirit/home/karma/delimit_out.hpp>
#include <boost/spirit/home/karma/auxiliary/lazy.hpp>
#include <boost/spirit/home/karma/detail/get_casetag.hpp>
+#include <boost/spirit/home/karma/detail/extract_from.hpp>
#include <boost/spirit/home/karma/detail/string_generate.hpp>
#include <boost/spirit/home/karma/detail/string_compare.hpp>
#include <boost/fusion/include/at.hpp>
@@ -83,16 +85,18 @@
};
// lit has an attached attribute
- template <
- typename OutputIterator, typename Context,
- typename Delimiter, typename Attribute
- >
+ template <typename OutputIterator, typename Context, typename Delimiter
+ , typename Attribute>
static bool
generate(OutputIterator& sink, Context& /*ctx*/, Delimiter const& d,
Attribute const& attr)
{
+ if (!traits::has_optional_value(attr))
+ return false;
+
return
- karma::detail::string_generate(sink, attr, char_encoding(), Tag()) &&
+ karma::detail::string_generate(sink
+ , traits::extract_from(attr), char_encoding(), Tag()) &&
karma::delimit_out(sink, d); // always do post-delimiting
}
@@ -148,10 +152,14 @@
bool generate(OutputIterator& sink, Context&, Delimiter const& d
, Attribute const& attr) const
{
- // fail if attribute isn't matched my immediate literal
+ if (!traits::has_optional_value(attr))
+ return false;
+
+ // fail if attribute isn't matched by immediate literal
using spirit::traits::get_c_string;
- if (!detail::string_compare(get_c_string(attr), get_c_string(str_)
- , char_encoding(), Tag()))
+ if (!detail::string_compare(
+ get_c_string(traits::extract_from(attr))
+ , get_c_string(str_), char_encoding(), Tag()))
{
return false;
}
@@ -178,63 +186,6 @@
string_type str_;
};
- template <typename String, typename Tag, bool no_attribute>
- struct literal_string<String, unused_type, Tag, no_attribute>
- : primitive_generator<literal_string<String, unused_type, Tag, no_attribute> >
- {
- typedef typename
- remove_const<typename traits::char_type_of<String>::type>::type
- char_type;
- typedef std::basic_string<char_type> string_type;
-
- template <typename Context, typename Unused>
- struct attribute
- {
- typedef typename mpl::if_c<
- no_attribute, unused_type, string_type>::type
- type;
- };
-
- literal_string(typename add_reference<String>::type str)
- : str_(str) {}
-
- // A string("...") which additionally has an associated attribute emits
- // its immediate literal only if it matches the attribute, otherwise
- // it fails.
- template <
- typename OutputIterator, typename Context, typename Delimiter
- , typename Attribute>
- bool generate(OutputIterator& sink, Context&, Delimiter const& d
- , Attribute const& attr) const
- {
- // fail if attribute isn't matched my immediate literal
- using spirit::traits::get_c_string;
- if (!detail::string_compare(get_c_string(attr), get_c_string(str_)))
- return false;
-
- return detail::string_generate(sink, str_) &&
- karma::delimit_out(sink, d); // always do post-delimiting
- }
-
- // A string("...") without any associated attribute just emits its
- // immediate literal
- template <typename OutputIterator, typename Context, typename Delimiter>
- bool generate(OutputIterator& sink, Context&, Delimiter const& d
- , unused_type) const
- {
- return detail::string_generate(sink, str_) &&
- karma::delimit_out(sink, d); // always do post-delimiting
- }
-
- template <typename Context>
- info what(Context const& ctx) const
- {
- return info("literal-string", str_);
- }
-
- string_type str_;
- };
-
///////////////////////////////////////////////////////////////////////////
// Generator generators: make_xxx function (objects)
///////////////////////////////////////////////////////////////////////////
Modified: branches/release/boost/spirit/home/lex/lexer/char_token_def.hpp
==============================================================================
--- branches/release/boost/spirit/home/lex/lexer/char_token_def.hpp (original)
+++ branches/release/boost/spirit/home/lex/lexer/char_token_def.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -49,7 +49,11 @@
namespace boost { namespace spirit { namespace lex
{
- using spirit::lit; // lit('x') is equivalent to 'x'
+ using spirit::lit; // lit('x') is equivalent to 'x'
+
+ // use char_ from standard character set by default
+ using spirit::standard::char_type;
+ using spirit::standard::char_;
///////////////////////////////////////////////////////////////////////////
//
@@ -57,7 +61,7 @@
// represents a single character token definition
//
///////////////////////////////////////////////////////////////////////////
- template <typename CharEncoding>
+ template <typename CharEncoding = char_encoding::standard>
struct char_token_def
: primitive_lexer<char_token_def<CharEncoding> >
{
Modified: branches/release/boost/spirit/home/lex/lexer/lexer.hpp
==============================================================================
--- branches/release/boost/spirit/home/lex/lexer/lexer.hpp (original)
+++ branches/release/boost/spirit/home/lex/lexer/lexer.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -90,7 +90,7 @@
token_type &t = *first;
if (token_is_valid(t) && t.state() == first.get_state()) {
// any of the token definitions matched
- qi::detail::assign_to(t, attr);
+ spirit::traits::assign_to(t, attr);
++first;
return true;
}
Modified: branches/release/boost/spirit/home/lex/lexer/lexertl/token.hpp
==============================================================================
--- branches/release/boost/spirit/home/lex/lexer/lexertl/token.hpp (original)
+++ branches/release/boost/spirit/home/lex/lexer/lexertl/token.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -12,6 +12,7 @@
#include <boost/spirit/home/qi/detail/assign_to.hpp>
#include <boost/spirit/home/support/safe_bool.hpp>
+#include <boost/spirit/home/support/attributes.hpp>
#include <boost/spirit/home/support/argument.hpp>
#include <boost/spirit/home/support/detail/lexer/generator.hpp>
#include <boost/spirit/home/support/detail/lexer/rules.hpp>
@@ -356,126 +357,156 @@
return t ? true : false;
}
+}}}}
+
+namespace boost { namespace spirit { namespace traits
+{
///////////////////////////////////////////////////////////////////////////
- // We have to provide overloads for the construct() function allowing
- // to extract the needed value from the token. These overloads have to be
- // defined in the same namespace as the token class itself to allow ADL to
- // find them.
+ // We have to provide specializations for the customization point
+ // assign_to_attribute_from_value allowing to extract the needed value
+ // from the token.
///////////////////////////////////////////////////////////////////////////
// This is called from the parse function of token_def if the token_def
// has been defined to carry a special attribute type
template <typename Attribute, typename Iterator, typename AttributeTypes
, typename HasState>
- inline void
- construct(Attribute& attr, token<Iterator, AttributeTypes, HasState>& t)
+ struct assign_to_attribute_from_value<Attribute
+ , lex::lexertl::token<Iterator, AttributeTypes, HasState> >
{
- // The goal of this function is to avoid the conversion of the pair of
- // iterators (to the matched character sequence) into the token value
- // of the required type being done more than once. For this purpose it
- // checks whether the stored value type is still the default one (pair
- // of iterators) and if yes, replaces the pair of iterators with the
- // converted value to be returned from subsequent calls.
-
- if (0 == t.value().which()) {
- // first access to the token value
- typedef iterator_range<Iterator> iterpair_type;
- iterpair_type const& ip = get<iterpair_type>(t.value());
-
- // Interestingly enough we use the assign_to() framework defined in
- // Spirit.Qi allowing to convert the pair of iterators to almost any
- // required type (assign_to(), if available, uses the standard Spirit
- // parsers to do the conversion, and falls back to boost::lexical_cast
- // otherwise).
- qi::detail::assign_to(ip.begin(), ip.end(), attr);
-
- // If you get an error during the compilation of the following
- // assignment expression, you probably forgot to list one or more
- // types used as token value types (in your token_def<...>
- // definitions) in your definition of the token class. I.e. any token
- // value type used for a token_def<...> definition has to be listed
- // during the declaration of the token type to use. For instance let's
- // assume we have two token_def's:
- //
- // token_def<int> number; number = "...";
- // token_def<std::string> identifier; identifier = "...";
- //
- // Then you'll have to use the following token type definition
- // (assuming you are using the token class):
- //
- // typedef mpl::vector<int, std::string> token_values;
- // typedef token<base_iter_type, token_values> token_type;
- //
- // where: base_iter_type is the iterator type used to expose the
- // underlying input stream.
- //
- // This token_type has to be used as the second template parameter
- // to the lexer class:
- //
- // typedef lexer<base_iter_type, token_type> lexer_type;
- //
- // again, assuming you're using the lexer<> template for your
- // tokenization.
-
- t.value() = attr; // re-assign value
- }
- else {
- // reuse the already assigned value
- qi::detail::assign_to(get<Attribute>(t.value()), attr);
+ static void
+ call(lex::lexertl::token<Iterator, AttributeTypes, HasState> const& t
+ , Attribute& attr)
+ {
+ // The goal of this function is to avoid the conversion of the pair of
+ // iterators (to the matched character sequence) into the token value
+ // of the required type being done more than once. For this purpose it
+ // checks whether the stored value type is still the default one (pair
+ // of iterators) and if yes, replaces the pair of iterators with the
+ // converted value to be returned from subsequent calls.
+
+ if (0 == t.value().which()) {
+ // first access to the token value
+ typedef iterator_range<Iterator> iterpair_type;
+ iterpair_type const& ip = get<iterpair_type>(t.value());
+
+ // Interestingly enough we use the assign_to() framework defined in
+ // Spirit.Qi allowing to convert the pair of iterators to almost any
+ // required type (assign_to(), if available, uses the standard Spirit
+ // parsers to do the conversion, and falls back to boost::lexical_cast
+ // otherwise).
+ spirit::traits::assign_to(ip.begin(), ip.end(), attr);
+
+ // If you get an error during the compilation of the following
+ // assignment expression, you probably forgot to list one or more
+ // types used as token value types (in your token_def<...>
+ // definitions) in your definition of the token class. I.e. any token
+ // value type used for a token_def<...> definition has to be listed
+ // during the declaration of the token type to use. For instance let's
+ // assume we have two token_def's:
+ //
+ // token_def<int> number; number = "...";
+ // token_def<std::string> identifier; identifier = "...";
+ //
+ // Then you'll have to use the following token type definition
+ // (assuming you are using the token class):
+ //
+ // typedef mpl::vector<int, std::string> token_values;
+ // typedef token<base_iter_type, token_values> token_type;
+ //
+ // where: base_iter_type is the iterator type used to expose the
+ // underlying input stream.
+ //
+ // This token_type has to be used as the second template parameter
+ // to the lexer class:
+ //
+ // typedef lexer<base_iter_type, token_type> lexer_type;
+ //
+ // again, assuming you're using the lexer<> template for your
+ // tokenization.
+
+ typedef lex::lexertl::token<
+ Iterator, AttributeTypes, HasState> token_type;
+ const_cast<token_type&>(t).value() = attr; // re-assign value
+ }
+ else {
+ // reuse the already assigned value
+ spirit::traits::assign_to(get<Attribute>(t.value()), attr);
+ }
}
- }
+ };
// These are called from the parse function of token_def if the token type
// has no special attribute type assigned
template <typename Attribute, typename Iterator, typename HasState>
- inline void construct(Attribute& attr,
- token<Iterator, mpl::vector0<>, HasState>& t)
+ struct assign_to_attribute_from_value<
+ Attribute, lex::lexertl::token<Iterator, mpl::vector0<>, HasState> >
{
- // The default type returned by the token_def parser component (if it
- // has no token value type assigned) is the pair of iterators to the
- // matched character sequence.
-
- qi::detail::assign_to(t.value().begin(), t.value().end(), attr);
- }
+ static void
+ call(lex::lexertl::token<Iterator, mpl::vector0<>, HasState> const& t
+ , Attribute& attr)
+ {
+ // The default type returned by the token_def parser component (if
+ // it has no token value type assigned) is the pair of iterators
+ // to the matched character sequence.
+ spirit::traits::assign_to(t.value().begin(), t.value().end(), attr);
+ }
+ };
// same as above but using mpl::vector<> instead of mpl::vector0<>
template <typename Attribute, typename Iterator, typename HasState>
- inline void construct(Attribute& attr,
- token<Iterator, mpl::vector<>, HasState>& t)
+ struct assign_to_attribute_from_value<
+ Attribute, lex::lexertl::token<Iterator, mpl::vector<>, HasState> >
{
- // The default type returned by the token_def parser component (if it
- // has no token value type assigned) is the pair of iterators to the
- // matched character sequence.
-
- qi::detail::assign_to(t.value().begin(), t.value().end(), attr);
- }
+ static void
+ call(lex::lexertl::token<Iterator, mpl::vector<>, HasState> const& t
+ , Attribute& attr)
+ {
+ // The default type returned by the token_def parser component (if
+ // it has no token value type assigned) is the pair of iterators
+ // to the matched character sequence.
+ spirit::traits::assign_to(t.value().begin(), t.value().end(), attr);
+ }
+ };
// This is called from the parse function of token_def if the token type
// has been explicitly omitted (i.e. no attribute value is used), which
// essentially means that every attribute gets initialized using default
// constructed values.
template <typename Attribute, typename Iterator, typename HasState>
- inline void
- construct(Attribute& attr, token<Iterator, lex::omit, HasState>& t) {}
+ struct assign_to_attribute_from_value<
+ Attribute, lex::lexertl::token<Iterator, lex::omit, HasState> >
+ {
+ static void
+ call(lex::lexertl::token<Iterator, lex::omit, HasState> const& t
+ , Attribute& attr)
+ {
+ // do nothing
+ }
+ };
// This is called from the parse function of lexer_def_
template <typename Iterator, typename AttributeTypes, typename HasState>
- inline void
- construct(fusion::vector2<std::size_t, iterator_range<Iterator> >& attr,
- token<Iterator, AttributeTypes, HasState> const& t)
- {
- // The type returned by the lexer_def_ parser components
- // is a fusion::vector containing the token id of the matched token
- // and the pair of iterators to the matched character sequence.
-
- typedef iterator_range<Iterator> iterpair_type;
- typedef fusion::vector2<std::size_t, iterator_range<Iterator> >
- attribute_type;
+ struct assign_to_attribute_from_value<
+ fusion::vector2<std::size_t, iterator_range<Iterator> >
+ , lex::lexertl::token<Iterator, AttributeTypes, HasState> >
+ {
+ static void
+ call(lex::lexertl::token<Iterator, AttributeTypes, HasState> const& t
+ , fusion::vector2<std::size_t, iterator_range<Iterator> >& attr)
+ {
+ // The type returned by the lexer_def_ parser components is a
+ // fusion::vector containing the token id of the matched token
+ // and the pair of iterators to the matched character sequence.
+ typedef iterator_range<Iterator> iterpair_type;
+ typedef fusion::vector2<std::size_t, iterator_range<Iterator> >
+ attribute_type;
- iterpair_type const& ip = get<iterpair_type>(t.value());
- attr = attribute_type(t.id(), get<iterpair_type>(t.value()));
- }
+ iterpair_type const& ip = get<iterpair_type>(t.value());
+ attr = attribute_type(t.id(), get<iterpair_type>(t.value()));
+ }
+ };
-}}}}
+}}}
#endif
Modified: branches/release/boost/spirit/home/lex/lexer/string_token_def.hpp
==============================================================================
--- branches/release/boost/spirit/home/lex/lexer/string_token_def.hpp (original)
+++ branches/release/boost/spirit/home/lex/lexer/string_token_def.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -42,13 +42,17 @@
namespace boost { namespace spirit { namespace lex
{
+ // use string from standard character set by default
+ using spirit::standard::string_type;
+ using spirit::standard::string;
+
///////////////////////////////////////////////////////////////////////////
//
// string_token_def
// represents a string based token definition
//
///////////////////////////////////////////////////////////////////////////
- template <typename String, typename CharEncoding = unused_type>
+ template <typename String, typename CharEncoding = char_encoding::standard>
struct string_token_def
: primitive_lexer<string_token_def<String, CharEncoding> >
{
Modified: branches/release/boost/spirit/home/lex/lexer/token_def.hpp
==============================================================================
--- branches/release/boost/spirit/home/lex/lexer/token_def.hpp (original)
+++ branches/release/boost/spirit/home/lex/lexer/token_def.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -69,7 +69,7 @@
// or unused_type (if omit has been specified).
typedef typename Iterator::base_iterator_type iterator_type;
typedef typename mpl::if_<
- traits::is_not_unused<Attribute>
+ traits::not_is_unused<Attribute>
, typename mpl::if_<
is_same<Attribute, lex::omit>, unused_type, Attribute
>::type
@@ -98,7 +98,7 @@
token_type &t = *first;
if (token_id_ == t.id() && token_state_ == t.state()) {
- qi::detail::assign_to(t, attr);
+ spirit::traits::assign_to(t, attr);
++first;
return true;
}
Modified: branches/release/boost/spirit/home/lex/qi/plain_token.hpp
==============================================================================
--- branches/release/boost/spirit/home/lex/qi/plain_token.hpp (original)
+++ branches/release/boost/spirit/home/lex/qi/plain_token.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -79,10 +79,11 @@
typedef typename
boost::detail::iterator_traits<Iterator>::value_type
token_type;
+ typedef typename token_type::id_type id_type;
token_type &t = *first;
- if (id == t.id()) {
- qi::detail::assign_to(t, attr);
+ if (id_type(id) == t.id()) {
+ spirit::traits::assign_to(t, attr);
++first;
return true;
}
Modified: branches/release/boost/spirit/home/qi/action/action.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/action/action.hpp (original)
+++ branches/release/boost/spirit/home/qi/action/action.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -20,6 +20,7 @@
#include <boost/spirit/home/support/info.hpp>
#include <boost/spirit/home/support/action_dispatch.hpp>
+#include <boost/mpl/bool.hpp>
#include <boost/mpl/if.hpp>
#include <boost/type_traits/remove_const.hpp>
#include <boost/type_traits/is_same.hpp>
@@ -109,4 +110,12 @@
};
}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject, typename Action>
+ struct has_semantic_action<qi::action<Subject, Action> >
+ : mpl::true_ {};
+
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/auxiliary.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/auxiliary.hpp (original)
+++ branches/release/boost/spirit/home/qi/auxiliary.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -17,5 +17,6 @@
#include <boost/spirit/home/qi/auxiliary/eol.hpp>
#include <boost/spirit/home/qi/auxiliary/eoi.hpp>
#include <boost/spirit/home/qi/auxiliary/attr.hpp>
+#include <boost/spirit/home/qi/auxiliary/attr_cast.hpp>
#endif
Modified: branches/release/boost/spirit/home/qi/auxiliary/attr.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/auxiliary/attr.hpp (original)
+++ branches/release/boost/spirit/home/qi/auxiliary/attr.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -59,7 +59,7 @@
, Context& context, Skipper const& skipper
, Attribute& attr) const
{
- qi::detail::assign_to(value_, attr);
+ spirit::traits::assign_to(value_, attr);
return true; // never consume any input, succeed always
}
Modified: branches/release/boost/spirit/home/qi/binary/binary.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/binary/binary.hpp (original)
+++ branches/release/boost/spirit/home/qi/binary/binary.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -193,7 +193,7 @@
}
first = it;
- detail::assign_to(attr_, attr);
+ spirit::traits::assign_to(attr_, attr);
return true;
}
@@ -244,7 +244,7 @@
}
first = it;
- detail::assign_to(attr_, attr);
+ spirit::traits::assign_to(attr_, attr);
return true;
}
Modified: branches/release/boost/spirit/home/qi/char/char.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/char/char.hpp (original)
+++ branches/release/boost/spirit/home/qi/char/char.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -119,9 +119,10 @@
};
template <typename CharParam, typename Context>
- bool test(CharParam ch, Context&) const
+ bool test(CharParam ch_, Context&) const
{
- return this->ch == char_type(ch);
+ return traits::ischar<CharParam, char_encoding>::call(ch_) &&
+ ch == char_type(ch_);
}
template <typename Context>
@@ -156,9 +157,13 @@
};
template <typename CharParam, typename Context>
- bool test(CharParam ch, Context&) const
+ bool test(CharParam ch_, Context&) const
{
- return this->lo == char_type(ch) || this->hi == char_type(ch);
+ if (!traits::ischar<CharParam, char_encoding>::call(ch_))
+ return false;
+
+ char_type ch = char_type(ch_); // optimize for token based parsing
+ return this->lo == ch || this->hi == ch;
}
template <typename Context>
@@ -184,9 +189,13 @@
: from(from), to(to) {}
template <typename CharParam, typename Context>
- bool test(CharParam ch, Context&) const
+ bool test(CharParam ch_, Context&) const
{
- return !(char_type(ch) < from) && !(to < char_type(ch));
+ if (!traits::ischar<CharParam, char_encoding>::call(ch_))
+ return false;
+
+ char_type ch = char_type(ch_); // optimize for token based parsing
+ return !(ch < from) && !(to < ch);
}
template <typename Context>
@@ -216,10 +225,14 @@
{}
template <typename CharParam, typename Context>
- bool test(CharParam ch, Context&) const
+ bool test(CharParam ch_, Context&) const
{
- return (!(char_type(ch) < from_lo) && !(to_lo < char_type(ch)))
- || (!(char_type(ch) < from_hi) && !(to_hi < char_type(ch)))
+ if (!traits::ischar<CharParam, char_encoding>::call(ch_))
+ return false;
+
+ char_type ch = char_type(ch_); // optimize for token based parsing
+ return (!(ch < from_lo) && !(to_lo < ch))
+ || (!(ch < from_hi) && !(to_hi < ch))
;
}
@@ -282,7 +295,8 @@
template <typename CharParam, typename Context>
bool test(CharParam ch, Context&) const
{
- return chset.test(char_type(ch));
+ return traits::ischar<CharParam, char_encoding>::call(ch) &&
+ chset.test(char_type(ch));
}
template <typename Context>
@@ -341,7 +355,8 @@
template <typename CharParam, typename Context>
bool test(CharParam ch, Context&) const
{
- return chset.test(char_type(char_type(ch)));
+ return traits::ischar<CharParam, char_encoding>::call(ch) &&
+ chset.test(char_type(ch));
}
template <typename Context>
Modified: branches/release/boost/spirit/home/qi/char/char_class.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/char/char_class.hpp (original)
+++ branches/release/boost/spirit/home/qi/char/char_class.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -31,12 +31,18 @@
namespace boost { namespace spirit { namespace qi
{
- // hoist the char classification namespaces into qi sub-namespaces of the same name
+ // hoist the char classification namespaces into qi sub-namespaces of the
+ // same name
namespace ascii { using namespace boost::spirit::ascii; }
namespace iso8859_1 { using namespace boost::spirit::iso8859_1; }
namespace standard { using namespace boost::spirit::standard; }
namespace standard_wide { using namespace boost::spirit::standard_wide; }
+ // Import the standard namespace into the qi namespace. This allows
+ // for default handling of all character/string related operations if not
+ // prefixed with a character set namespace.
+ using namespace boost::spirit::standard;
+
///////////////////////////////////////////////////////////////////////////
// Generic char classification parser (for alnum, alpha, graph, etc.)
///////////////////////////////////////////////////////////////////////////
@@ -51,7 +57,8 @@
bool test(CharParam ch, Context&) const
{
using spirit::char_class::classify;
- return classify<char_encoding>::is(classification(), ch);
+ return traits::ischar<CharParam, char_encoding>::call(ch) &&
+ classify<char_encoding>::is(classification(), ch);
}
template <typename Context>
Modified: branches/release/boost/spirit/home/qi/char/char_parser.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/char/char_parser.hpp (original)
+++ branches/release/boost/spirit/home/qi/char/char_parser.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -67,7 +67,7 @@
if (first != last && this->derived().test(*first, context))
{
- qi::detail::assign_to(*first, attr);
+ spirit::traits::assign_to(*first, attr);
++first;
return true;
}
Modified: branches/release/boost/spirit/home/qi/detail/alternative_function.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/detail/alternative_function.hpp (original)
+++ branches/release/boost/spirit/home/qi/detail/alternative_function.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -12,6 +12,7 @@
#endif
#include <boost/spirit/home/qi/domain.hpp>
+#include <boost/spirit/home/qi/detail/assign_to.hpp>
#include <boost/spirit/home/support/unused.hpp>
#include <boost/spirit/home/support/attributes.hpp>
#include <boost/variant.hpp>
@@ -32,33 +33,25 @@
}
template <typename Component>
- bool call(Component const& component, mpl::true_) const
+ bool operator()(Component const& component) const
{
// if Attribute is not a variant, then pass it as-is
return component.parse(first, last, context, skipper, attr);
}
- template <typename Component>
- bool call(Component const& component, mpl::false_) const
+ template <typename Component, typename T>
+ bool operator()(Component const& component, mpl::identity<T>) const
{
- // if Attribute is a variant, then create an attribute for
- // the Component with its expected type.
- typename traits::attribute_of<Component, Context, Iterator>::type val;
+ // if Attribute is a variant, then create an attribute.
+ T val;
if (component.parse(first, last, context, skipper, val))
{
- attr = val;
+ traits::assign_to(val, attr);
return true;
}
return false;
}
- template <typename Component>
- bool operator()(Component const& component) const
- {
- // return true if the parser succeeds
- return call(component, spirit::traits::not_is_variant<Attribute>());
- }
-
Iterator& first;
Iterator const& last;
Context& context;
Modified: branches/release/boost/spirit/home/qi/detail/assign_to.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/detail/assign_to.hpp (original)
+++ branches/release/boost/spirit/home/qi/detail/assign_to.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -15,116 +15,87 @@
#include <boost/spirit/home/qi/detail/construct.hpp>
#include <boost/spirit/home/support/unused.hpp>
+#include <boost/spirit/home/support/attributes_fwd.hpp>
+#include <boost/spirit/home/phoenix/core/actor.hpp>
#include <boost/ref.hpp>
-namespace boost { namespace spirit { namespace qi { namespace detail
+namespace boost { namespace spirit { namespace traits
{
- namespace construct_
+ ///////////////////////////////////////////////////////////////////////////
+ // This file contains assignment utilities. The utilities provided also
+ // accept spirit's unused_type; all no-ops. Compiler optimization will
+ // easily strip these away.
+ ///////////////////////////////////////////////////////////////////////////
+ template <typename Attribute, typename Iterator, typename Enable>
+ struct assign_to_attribute_from_iterators
{
- ///////////////////////////////////////////////////////////////////////
- // This is used to allow to overload of the attribute creation for
- // arbitrary types
- ///////////////////////////////////////////////////////////////////////
- template <typename Attribute, typename Iterator>
- inline void
- construct(Attribute& attr, Iterator const& first, Iterator const& last)
+ static void
+ call(Iterator const& first, Iterator const& last, Attribute& attr)
{
attr = Attribute(first, last);
}
+ };
- template <typename Attribute, typename T>
- inline void
- construct(Attribute& attr, T const& val)
- {
- attr = val;
- }
-
- template <typename Attribute, typename T>
- inline void
- construct(Attribute& attr, T& val)
- {
- attr = val;
- }
-
- template <typename Attribute, typename T>
- inline void
- construct(reference_wrapper<Attribute> attr, T const& val)
+ template <typename Attribute, typename Iterator>
+ struct assign_to_attribute_from_iterators<
+ reference_wrapper<Attribute>, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last
+ , reference_wrapper<Attribute> attr)
{
- attr = val;
- }
-
- template <typename Attribute, typename T>
- inline void
- construct(reference_wrapper<Attribute> attr, T& val)
- {
- attr = val;
+ attr = Attribute(first, last);
}
- }
-
- ///////////////////////////////////////////////////////////////////////////
- // This file contains assignment utilities. The utilities provided also
- // accept spirit's unused_type; all no-ops. Compiler optimization will
- // easily strip these away.
- ///////////////////////////////////////////////////////////////////////////
+ };
template <typename Iterator, typename Attribute>
inline void
assign_to(Iterator const& first, Iterator const& last, Attribute& attr)
{
- using namespace construct_;
- construct(attr, first, last);
+ assign_to_attribute_from_iterators<Attribute, Iterator>::
+ call(first, last, attr);
}
template <typename Iterator>
inline void
- assign_to(Iterator const& /*first*/, Iterator const& /*last*/, unused_type)
+ assign_to(Iterator const&, Iterator const&, unused_type)
{
}
- template <typename T, typename Attribute>
- inline void
- assign_to(T const& val, Attribute& attr)
+ ///////////////////////////////////////////////////////////////////////////
+ template <typename Attribute, typename T, typename Enable>
+ struct assign_to_attribute_from_value
{
- using namespace construct_;
- construct(attr, val);
- }
+ static void
+ call(T const& val, Attribute& attr)
+ {
+ attr = val;
+ }
+ };
- template <typename T, typename Attribute>
- inline void
- assign_to(T& val, Attribute& attr)
+ template <typename Attribute, typename T>
+ struct assign_to_attribute_from_value<reference_wrapper<Attribute>, T>
{
- using namespace construct_;
- construct(attr, val);
- }
-
- template <typename T, typename Attribute>
- inline void
- assign_to(T const& val, reference_wrapper<Attribute> attr)
- {
- using namespace construct_;
- construct(attr, val);
- }
+ static void
+ call(T const& val, reference_wrapper<Attribute> attr)
+ {
+ attr = val;
+ }
+ };
template <typename T, typename Attribute>
inline void
- assign_to(T& val, reference_wrapper<Attribute> attr)
- {
- using namespace construct_;
- construct(attr, val);
- }
-
- template <typename T>
- inline void
- assign_to(T const& /*val*/, unused_type)
+ assign_to(T const& val, Attribute& attr)
{
+ assign_to_attribute_from_value<Attribute, T>::call(val, attr);
}
template <typename T>
inline void
- assign_to(T& /*val*/, unused_type)
+ assign_to(T const&, unused_type)
{
}
-}}}}
+}}}
#endif
Modified: branches/release/boost/spirit/home/qi/detail/construct.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/detail/construct.hpp (original)
+++ branches/release/boost/spirit/home/qi/detail/construct.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -12,135 +12,171 @@
#pragma once
#endif
+#include <boost/config.hpp>
#include <boost/spirit/home/qi/parse.hpp>
#include <boost/spirit/home/support/common_terminals.hpp>
+#include <boost/spirit/home/support/attributes_fwd.hpp>
-namespace boost { namespace spirit { namespace qi { namespace detail
+namespace boost { namespace spirit { namespace traits
{
- namespace construct_
+ ///////////////////////////////////////////////////////////////////////////
+ // We provide overloads for the assign_to_attribute_from_iterators
+ // customization point for all built in types
+ ///////////////////////////////////////////////////////////////////////////
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<char, Iterator>
{
- ///////////////////////////////////////////////////////////////////////
- // We provide overloads for the construct customization point for all
- // built in types
- ///////////////////////////////////////////////////////////////////////
- template <typename Iterator>
- inline void
- construct(char& attr, Iterator const& first, Iterator const& last)
+ static void
+ call(Iterator const& first, Iterator const& last, char& attr)
{
attr = *first;
}
+ };
-#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
- // wchar_t is intrinsic
- template <typename Iterator>
- inline void
- construct(wchar_t& attr, Iterator const& first, Iterator const& last)
+ // wchar_t is intrinsic
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<wchar_t, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, wchar_t& attr)
{
attr = *first;
}
- template <typename Iterator>
- inline void
- construct(unsigned short& attr, Iterator const& first,
- Iterator const& last)
- {
- Iterator first_ = first;
- parse(first_, last, ushort_, attr);
- }
-#else
- // is wchar_t is not an intrinsic type, treat wchar_t only
- template <typename Iterator>
- inline void
- construct(wchar_t& attr, Iterator const& first, Iterator const& last)
+ };
+
+#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
+ // wchar_t is intrinsic, have separate overload for unsigned short
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<unsigned short, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, unsigned short& attr)
{
attr = *first;
}
+ };
#endif
- template <typename Iterator>
- inline void
- construct(short& attr, Iterator const& first, Iterator const& last)
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<bool, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, char& attr)
+ {
+ Iterator first_ = first;
+ qi::parse(first_, last, bool_, attr);
+ }
+ };
+
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<short, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, short& attr)
{
Iterator first_ = first;
- parse(first_, last, short_, attr);
+ qi::parse(first_, last, short_, attr);
}
+ };
- template <typename Iterator>
- inline void
- construct(int& attr, Iterator const& first, Iterator const& last)
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<int, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, int& attr)
{
Iterator first_ = first;
- parse(first_, last, int_, attr);
+ qi::parse(first_, last, int_, attr);
}
- template <typename Iterator>
- inline void
- construct(unsigned int& attr, Iterator const& first,
- Iterator const& last)
+ };
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<unsigned int, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, unsigned int& attr)
{
Iterator first_ = first;
- parse(first_, last, uint_, attr);
+ qi::parse(first_, last, uint_, attr);
}
+ };
- template <typename Iterator>
- inline void
- construct(long& attr, Iterator const& first, Iterator const& last)
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<long, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, long& attr)
{
Iterator first_ = first;
- parse(first_, last, long_, attr);
+ qi::parse(first_, last, long_, attr);
}
- template <typename Iterator>
- inline void
- construct(unsigned long& attr, Iterator const& first,
- Iterator const& last)
+ };
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<unsigned long, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, unsigned long& attr)
{
Iterator first_ = first;
- parse(first_, last, ulong_, attr);
+ qi::parse(first_, last, ulong_, attr);
}
+ };
#ifdef BOOST_HAS_LONG_LONG
- template <typename Iterator>
- inline void
- construct(boost::long_long_type& attr, Iterator const& first,
- Iterator const& last)
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<long_long_type, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, long_long_type& attr)
{
Iterator first_ = first;
- parse(first_, last, long_long, attr);
+ qi::parse(first_, last, long_long, attr);
}
- template <typename Iterator>
- inline void
- construct(boost::ulong_long_type& attr, Iterator const& first,
- Iterator const& last)
+ };
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<ulong_long_type, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, ulong_long_type& attr)
{
Iterator first_ = first;
- parse(first_, last, ulong_long, attr);
+ qi::parse(first_, last, ulong_long, attr);
}
+ };
#endif
- template <typename Iterator>
- inline void
- construct(float& attr, Iterator const& first, Iterator const& last)
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<float, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, float& attr)
{
Iterator first_ = first;
- parse(first_, last, float_, attr);
+ qi::parse(first_, last, float_, attr);
}
+ };
- template <typename Iterator>
- inline void
- construct(double& attr, Iterator const& first, Iterator const& last)
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<double, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, double& attr)
{
Iterator first_ = first;
- parse(first_, last, double_, attr);
+ qi::parse(first_, last, double_, attr);
}
+ };
- template <typename Iterator>
- inline void
- construct(long double& attr, Iterator const& first,
- Iterator const& last)
+ template <typename Iterator>
+ struct assign_to_attribute_from_iterators<long double, Iterator>
+ {
+ static void
+ call(Iterator const& first, Iterator const& last, long double& attr)
{
Iterator first_ = first;
- parse(first_, last, long_double, attr);
+ qi::parse(first_, last, long_double, attr);
}
- }
+ };
-}}}}
+}}}
#endif
Modified: branches/release/boost/spirit/home/qi/detail/pass_container.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/detail/pass_container.hpp (original)
+++ branches/release/boost/spirit/home/qi/detail/pass_container.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -67,8 +67,8 @@
bool dispatch_attribute_element(Component const& component, mpl::false_) const
{
// synthesized attribute needs to be default constructed
- typename traits::result_of::value<Attr>::type val =
- typename traits::result_of::value<Attr>::type();
+ typename traits::container_value<Attr>::type val =
+ typename traits::container_value<Attr>::type();
bool r = f(component, val);
if (!r)
@@ -121,7 +121,7 @@
// we need to dispatch again depending on the type of the attribute
// of the current element (component). If this is has no attribute
// we shouldn't push an element into the container.
- typedef traits::is_not_unused<
+ typedef traits::not_is_unused<
typename traits::attribute_of<
Component, context_type, iterator_type
>::type
@@ -144,7 +144,7 @@
template <typename Component>
bool operator()(Component const& component) const
{
- typedef typename traits::result_of::value<Attr>::type lhs;
+ typedef typename traits::container_value<Attr>::type lhs;
typedef typename traits::attribute_of<
Component, context_type, iterator_type>::type
rhs_attribute;
Modified: branches/release/boost/spirit/home/qi/detail/string_parse.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/detail/string_parse.hpp (original)
+++ branches/release/boost/spirit/home/qi/detail/string_parse.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -30,7 +30,7 @@
ch = *++str;
}
- detail::assign_to(first, i, attr);
+ spirit::traits::assign_to(first, i, attr);
first = i;
return true;
}
@@ -47,7 +47,7 @@
for (; stri != str_last; ++stri, ++i)
if (i == last || (*stri != *i))
return false;
- detail::assign_to(first, i, attr);
+ spirit::traits::assign_to(first, i, attr);
first = i;
return true;
}
@@ -62,7 +62,7 @@
for (; *uc_i && *lc_i; ++uc_i, ++lc_i, ++i)
if (i == last || ((*uc_i != *i) && (*lc_i != *i)))
return false;
- detail::assign_to(first, i, attr);
+ spirit::traits::assign_to(first, i, attr);
first = i;
return true;
}
@@ -80,7 +80,7 @@
for (; uc_i != uc_last; ++uc_i, ++lc_i, ++i)
if (i == last || ((*uc_i != *i) && (*lc_i != *i)))
return false;
- detail::assign_to(first, i, attr);
+ spirit::traits::assign_to(first, i, attr);
first = i;
return true;
}
Modified: branches/release/boost/spirit/home/qi/directive/lexeme.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/directive/lexeme.hpp (original)
+++ branches/release/boost/spirit/home/qi/directive/lexeme.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -85,4 +85,11 @@
};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<qi::lexeme_directive<Subject> >
+ : unary_has_semantic_action<Subject> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/directive/omit.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/directive/omit.hpp (original)
+++ branches/release/boost/spirit/home/qi/directive/omit.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -82,4 +82,11 @@
};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<qi::omit_directive<Subject> >
+ : mpl::false_ {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/directive/raw.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/directive/raw.hpp (original)
+++ branches/release/boost/spirit/home/qi/directive/raw.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -58,7 +58,7 @@
Iterator i = first;
if (subject.parse(i, last, context, skipper, unused))
{
- detail::assign_to(first, i, attr);
+ spirit::traits::assign_to(first, i, attr);
first = i;
return true;
}
@@ -89,4 +89,11 @@
};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<qi::raw_directive<Subject> >
+ : unary_has_semantic_action<Subject> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/directive/repeat.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/directive/repeat.hpp (original)
+++ branches/release/boost/spirit/home/qi/directive/repeat.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -143,7 +143,7 @@
, Attribute& attr) const
{
// create a local value if Attribute is not unused_type
- typedef typename traits::result_of::value<Attribute>::type
+ typedef typename traits::container_value<Attribute>::type
value_type;
value_type val = value_type();
typename LoopIter::type i = iter.start();
@@ -254,4 +254,11 @@
};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject, typename LoopIter>
+ struct has_semantic_action<qi::repeat_parser<Subject, LoopIter> >
+ : unary_has_semantic_action<Subject> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/directive/skip.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/directive/skip.hpp (original)
+++ branches/release/boost/spirit/home/qi/directive/skip.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -158,4 +158,15 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<qi::reskip_parser<Subject> >
+ : unary_has_semantic_action<Subject> {};
+
+ template <typename Subject, typename Skipper>
+ struct has_semantic_action<qi::skip_parser<Subject, Skipper> >
+ : unary_has_semantic_action<Subject> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp (original)
+++ branches/release/boost/spirit/home/qi/nonterminal/detail/parser_binder.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -13,6 +13,7 @@
#include <boost/fusion/include/at.hpp>
#include <boost/mpl/bool.hpp>
+#include <boost/spirit/home/support/has_semantic_action.hpp>
namespace boost { namespace spirit { namespace qi { namespace detail
{
@@ -24,12 +25,32 @@
: p(p) {}
template <typename Iterator, typename Skipper, typename Context>
+ bool call(Iterator& first, Iterator const& last
+ , Context& context, Skipper const& skipper, mpl::true_) const
+ {
+ // If DeducedAuto is false (semantic actions is present), the
+ // component's attribute is unused.
+ return p.parse(first, last, context, skipper, unused);
+ }
+
+ template <typename Iterator, typename Skipper, typename Context>
+ bool call(Iterator& first, Iterator const& last
+ , Context& context, Skipper const& skipper, mpl::false_) const
+ {
+ // If DeducedAuto is true (no semantic action), we pass the rule's
+ // attribute on to the component.
+ return p.parse(first, last, context, skipper
+ , fusion::at_c<0>(context.attributes));
+ }
+
+ template <typename Iterator, typename Skipper, typename Context>
bool operator()(
Iterator& first, Iterator const& last
, Context& context, Skipper const& skipper) const
{
- // If Auto is false, the component's attribute is unused.
- return p.parse(first, last, context, skipper, unused);
+ // If Auto is false, we need to deduce whether to apply auto rule
+ typedef typename traits::has_semantic_action<Parser>::type auto_rule;
+ return call(first, last, context, skipper, auto_rule());
}
Parser p;
Modified: branches/release/boost/spirit/home/qi/nonterminal/grammar.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/nonterminal/grammar.hpp (original)
+++ branches/release/boost/spirit/home/qi/nonterminal/grammar.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -13,6 +13,7 @@
#include <boost/spirit/home/support/unused.hpp>
#include <boost/spirit/home/support/info.hpp>
+#include <boost/spirit/home/support/assert_msg.hpp>
#include <boost/spirit/home/qi/domain.hpp>
#include <boost/spirit/home/qi/nonterminal/rule.hpp>
#include <boost/spirit/home/qi/reference.hpp>
@@ -54,6 +55,20 @@
, name_(name_)
{}
+ // This constructor is used to catch if the start rule is not
+ // compatible with the grammar.
+ template <typename Iterator_, typename T1_, typename T2_, typename T3_>
+ grammar(
+ rule<Iterator_, T1_, T2_, T3_> const&
+ , std::string const& = "unnamed-grammar")
+ {
+ // If you see the assertion below failing then the start rule
+ // passed to the constructor of the grammar is not compatible with
+ // the grammar (i.e. it uses different template parameters).
+ BOOST_SPIRIT_ASSERT_MSG(false, incompatible_start_rule,
+ (rule<Iterator_, T1_, T2_, T3_>));
+ }
+
std::string name() const
{
return name_;
Modified: branches/release/boost/spirit/home/qi/nonterminal/rule.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/nonterminal/rule.hpp (original)
+++ branches/release/boost/spirit/home/qi/nonterminal/rule.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -141,7 +141,7 @@
// then the expression (expr) is not a valid spirit qi expression.
BOOST_SPIRIT_ASSERT_MATCH(qi::domain, Expr);
- f = detail::bind_parser<mpl::true_>(compile<qi::domain>(expr));
+ f = detail::bind_parser<mpl::false_>(compile<qi::domain>(expr));
}
rule& operator=(rule const& rhs)
@@ -210,11 +210,19 @@
, Context& /*context*/, Skipper const& skipper
, Attribute& attr) const
{
+ //$$$ do a preskip if this is an implied lexeme $$$
+
if (f)
{
typedef traits::make_attribute<attr_type, Attribute> make_attribute;
- typename make_attribute::type attr_ = make_attribute::call(attr);
+ // do down-stream transformation, provides attribute for
+ // rhs parser
+ typedef traits::transform_attribute<
+ typename make_attribute::type, attr_type> transform;
+
+ typename transform::type attr_ =
+ transform::pre(make_attribute::call(attr));
// If you are seeing a compilation error here, you are probably
// trying to use a rule or a grammar which has inherited
@@ -227,6 +235,9 @@
// an incompatible skipper type.
if (f(first, last, context, skipper))
{
+ // do up-stream transformation, this integrates the results
+ // back into the original attribute value, if appropriate
+ traits::post_transform(attr, attr_);
return true;
}
}
@@ -239,11 +250,19 @@
, Context& caller_context, Skipper const& skipper
, Attribute& attr, Params const& params) const
{
+ //$$$ do a preskip if this is an implied lexeme $$$
+
if (f)
{
typedef traits::make_attribute<attr_type, Attribute> make_attribute;
- typename make_attribute::type attr_ = make_attribute::call(attr);
+ // do down-stream transformation, provides attribute for
+ // rhs parser
+ typedef traits::transform_attribute<
+ typename make_attribute::type, attr_type> transform;
+
+ typename transform::type attr_ =
+ transform::pre(make_attribute::call(attr));
// If you are seeing a compilation error here, you are probably
// trying to use a rule or a grammar which has inherited
@@ -256,6 +275,9 @@
// an incompatible skipper type.
if (f(first, last, context, skipper))
{
+ // do up-stream transformation, this integrates the results
+ // back into the original attribute value, if appropriate
+ traits::post_transform(attr, attr_);
return true;
}
}
Modified: branches/release/boost/spirit/home/qi/nonterminal/simple_trace.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/nonterminal/simple_trace.hpp (original)
+++ branches/release/boost/spirit/home/qi/nonterminal/simple_trace.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -32,6 +32,67 @@
namespace boost { namespace spirit { namespace qi
{
+ namespace detail
+ {
+ struct token_printer_aux_for_chars
+ {
+ template<typename Char>
+ static void print(std::ostream& o, Char c)
+ {
+ using namespace std; // allow for ADL to find the proper iscntrl
+
+ if (c == static_cast<Char>('\a'))
+ o << "\\a";
+ else if (c == static_cast<Char>('\b'))
+ o << "\\b";
+ else if (c == static_cast<Char>('\f'))
+ o << "\\f";
+ else if (c == static_cast<Char>('\n'))
+ o << "\\n";
+ else if (c == static_cast<Char>('\r'))
+ o << "\\r";
+ else if (c == static_cast<Char>('\t'))
+ o << "\\t";
+ else if (c == static_cast<Char>('\v'))
+ o << "\\v";
+ else if (iscntrl(c))
+ o << "\\" << std::oct << static_cast<int>(c);
+ else
+ o << static_cast<char>(c);
+ }
+ };
+
+ // for token types where the comparison with char constants wouldn't work
+ struct token_printer_aux_for_other_types
+ {
+ template<typename Char>
+ static void print(std::ostream& o, Char c)
+ {
+ o << c;
+ }
+ };
+
+ template <typename Char>
+ struct token_printer_aux
+ : mpl::if_<
+ mpl::and_<
+ is_convertible<Char, char>, is_convertible<char, Char> >
+ , token_printer_aux_for_chars
+ , token_printer_aux_for_other_types>::type
+ {};
+
+ template<typename Char>
+ inline void token_printer(std::ostream& o, Char c)
+ {
+ // allow to customize the token printer routine
+#if !defined(BOOST_SPIRIT_DEBUG_TOKEN_PRINTER)
+ token_printer_aux<Char>::print(o, c);
+#else
+ BOOST_SPIRIT_DEBUG_TOKEN_PRINTER(o, c);
+#endif
+ }
+ }
+
struct simple_trace
{
void print_indent(int n) const
@@ -51,7 +112,7 @@
BOOST_SPIRIT_DEBUG_OUT << '<' << tag << '>';
int const n = BOOST_SPIRIT_DEBUG_PRINT_SOME;
for (int i = 0; first != last && i != n && *first; ++i, ++first)
- BOOST_SPIRIT_DEBUG_OUT << *first;
+ detail::token_printer(BOOST_SPIRIT_DEBUG_OUT, *first);
BOOST_SPIRIT_DEBUG_OUT << "</" << tag << '>' << std::endl;
}
Modified: branches/release/boost/spirit/home/qi/numeric.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/numeric.hpp (original)
+++ branches/release/boost/spirit/home/qi/numeric.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -11,6 +11,7 @@
#pragma once
#endif
+#include <boost/spirit/home/qi/numeric/bool.hpp>
#include <boost/spirit/home/qi/numeric/int.hpp>
#include <boost/spirit/home/qi/numeric/uint.hpp>
#include <boost/spirit/home/qi/numeric/real.hpp>
Modified: branches/release/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp (original)
+++ branches/release/boost/spirit/home/qi/numeric/detail/numeric_utils.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -15,6 +15,7 @@
#include <boost/detail/iterator.hpp>
#include <boost/spirit/home/support/unused.hpp>
+#include <boost/spirit/home/support/attributes.hpp>
#include <boost/spirit/home/support/char_encoding/ascii.hpp>
#include <boost/preprocessor/repetition/repeat.hpp>
#include <boost/utility/enable_if.hpp>
@@ -362,7 +363,7 @@
if (count + leading_zeros >= MinDigits)
{
- attr = val;
+ traits::assign_to(val, attr);
first = it;
return true;
}
@@ -457,7 +458,7 @@
{
if (count == 0) // must have at least one digit
return false;
- attr = val;
+ traits::assign_to(val, attr);
first = it;
return true;
}
@@ -471,7 +472,7 @@
, SPIRIT_NUMERIC_INNER_LOOP, _)
}
- attr = val;
+ traits::assign_to(val, attr);
first = it;
return true;
}
Modified: branches/release/boost/spirit/home/qi/numeric/detail/real_impl.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/numeric/detail/real_impl.hpp (original)
+++ branches/release/boost/spirit/home/qi/numeric/detail/real_impl.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -17,6 +17,7 @@
#include <limits>
#include <boost/type_traits/is_same.hpp>
#include <boost/spirit/home/support/unused.hpp>
+#include <boost/spirit/home/support/attributes.hpp>
#include <boost/spirit/home/support/detail/pow10.hpp>
#include <boost/spirit/home/support/detail/sign.hpp>
#include <boost/assert.hpp>
@@ -141,7 +142,7 @@
bool neg = p.parse_sign(first, last);
// Now attempt to parse an integer
- Attribute n = 0;
+ T n = 0;
bool got_a_number = p.parse_n(first, last, n);
// If we did not get a number it might be a NaN, Inf or a leading
@@ -149,11 +150,11 @@
if (!got_a_number)
{
// Check whether the number to parse is a NaN or Inf
- if (p.parse_nan(first, last, attr) ||
- p.parse_inf(first, last, attr))
+ if (p.parse_nan(first, last, n) ||
+ p.parse_inf(first, last, n))
{
// If we got a negative sign, negate the number
- attr = traits::negate(neg, attr);
+ traits::assign_to(traits::negate(neg, n), attr);
return true; // got a NaN or Inf, return early
}
@@ -244,17 +245,17 @@
// styles some implementations use for representing NaN or Inf.
// Check whether the number to parse is a NaN or Inf
- if (p.parse_nan(first, last, attr) ||
- p.parse_inf(first, last, attr))
+ if (p.parse_nan(first, last, n) ||
+ p.parse_inf(first, last, n))
{
// If we got a negative sign, negate the number
- attr = traits::negate(neg, attr);
+ traits::assign_to(traits::negate(neg, n), attr);
return true; // got a NaN or Inf, return immediately
}
}
// If we got a negative sign, negate the number
- attr = traits::negate(neg, n);
+ traits::assign_to(traits::negate(neg, n), attr);
// Success!!!
return true;
Modified: branches/release/boost/spirit/home/qi/numeric/int.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/numeric/int.hpp (original)
+++ branches/release/boost/spirit/home/qi/numeric/int.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -24,22 +24,30 @@
///////////////////////////////////////////////////////////////////////////
// Enablers
///////////////////////////////////////////////////////////////////////////
+ //[primitive_parsers_enable_short_
template <>
struct use_terminal<qi::domain, tag::short_> // enables short_
: mpl::true_ {};
+ //]
+ //[primitive_parsers_enable_int_
template <>
struct use_terminal<qi::domain, tag::int_> // enables int_
: mpl::true_ {};
+ //]
+ //[primitive_parsers_enable_long_
template <>
struct use_terminal<qi::domain, tag::long_> // enables long_
: mpl::true_ {};
+ //]
#ifdef BOOST_HAS_LONG_LONG
+ //[primitive_parsers_enable_long_long_
template <>
struct use_terminal<qi::domain, tag::long_long> // enables long_long
: mpl::true_ {};
+ //]
#endif
}}
@@ -59,6 +67,7 @@
///////////////////////////////////////////////////////////////////////////
// This is the actual int parser
///////////////////////////////////////////////////////////////////////////
+ //[primitive_parsers_int
template <
typename T
, unsigned Radix = 10
@@ -95,6 +104,7 @@
return info("integer");
}
};
+ //]
///////////////////////////////////////////////////////////////////////////
// This one is the class that the user can instantiate directly
@@ -112,6 +122,7 @@
///////////////////////////////////////////////////////////////////////////
// Parser generators: make_xxx function (objects)
///////////////////////////////////////////////////////////////////////////
+ //[primitive_parsers_make_int
template <typename T>
struct make_int
{
@@ -121,19 +132,28 @@
return result_type();
}
};
+ //]
+ //[primitive_parsers_short_
template <typename Modifiers>
struct make_primitive<tag::short_, Modifiers> : make_int<short> {};
+ //]
+ //[primitive_parsers_int_
template <typename Modifiers>
struct make_primitive<tag::int_, Modifiers> : make_int<int> {};
+ //]
+ //[primitive_parsers_long_
template <typename Modifiers>
struct make_primitive<tag::long_, Modifiers> : make_int<long> {};
+ //]
#ifdef BOOST_HAS_LONG_LONG
+ //[primitive_parsers_long_long_
template <typename Modifiers>
struct make_primitive<tag::long_long, Modifiers> : make_int<long long> {};
+ //]
#endif
}}}
Modified: branches/release/boost/spirit/home/qi/operator/alternative.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/operator/alternative.hpp (original)
+++ branches/release/boost/spirit/home/qi/operator/alternative.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -19,7 +19,7 @@
#include <boost/spirit/home/support/detail/what_function.hpp>
#include <boost/spirit/home/support/unused.hpp>
#include <boost/spirit/home/support/info.hpp>
-#include <boost/fusion/include/any.hpp>
+#include <boost/spirit/home/support/algorithm/any.hpp>
#include <boost/fusion/include/mpl.hpp>
#include <boost/fusion/include/for_each.hpp>
@@ -39,6 +39,31 @@
namespace boost { namespace spirit { namespace qi
{
+ namespace detail
+ {
+ template <typename T>
+ struct get_variant_element
+ : mpl::identity<T> {};
+
+ template <typename T>
+ struct get_variant_element<recursive_wrapper<T> >
+ : mpl::identity<T> {};
+
+ template <typename T>
+ struct get_variant_types;
+
+#define BOOST_SPIRIT_IDENTITY(z, n, data) get_variant_element<BOOST_PP_CAT(T, n)>
+ template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
+ struct get_variant_types<variant<BOOST_VARIANT_ENUM_PARAMS(T)> >
+ {
+ typedef mpl::vector<
+ BOOST_PP_ENUM(
+ BOOST_VARIANT_LIMIT_TYPES, BOOST_SPIRIT_IDENTITY, _)>
+ type;
+ };
+#undef BOOST_SPIRIT_IDENTITY
+ }
+
template <typename Elements>
struct alternative : nary_parser<alternative<Elements> >
{
@@ -65,16 +90,42 @@
template <typename Iterator, typename Context
, typename Skipper, typename Attribute>
- bool parse(Iterator& first, Iterator const& last
+ bool parse_impl(Iterator& first, Iterator const& last
, Context& context, Skipper const& skipper
- , Attribute& attr) const
+ , Attribute& attr, mpl::true_) const
{
+ // This branch is chosen if attr *is not* a variant
detail::alternative_function<Iterator, Context, Skipper, Attribute>
f(first, last, context, skipper, attr);
// return true if *any* of the parsers succeed
return fusion::any(elements, f);
}
+
+ template <typename Iterator, typename Context
+ , typename Skipper, typename Attribute>
+ bool parse_impl(Iterator& first, Iterator const& last
+ , Context& context, Skipper const& skipper
+ , Attribute& attr, mpl::false_) const
+ {
+ // This branch is chosen if attr *is* a variant
+ detail::alternative_function<Iterator, Context, Skipper, Attribute>
+ f(first, last, context, skipper, attr);
+
+ // return true if *any* of the parsers succeed
+ typename detail::get_variant_types<Attribute>::type vtypes;
+ return spirit::any(elements, vtypes, f);
+ }
+
+ template <typename Iterator, typename Context
+ , typename Skipper, typename Attribute>
+ bool parse(Iterator& first, Iterator const& last
+ , Context& context, Skipper const& skipper
+ , Attribute& attr) const
+ {
+ return parse_impl(first, last, context, skipper, attr,
+ spirit::traits::not_is_variant<Attribute>());
+ }
template <typename Context>
info what(Context& context) const
@@ -97,4 +148,11 @@
{};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Elements>
+ struct has_semantic_action<qi::alternative<Elements> >
+ : nary_has_semantic_action<Elements> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/operator/and_predicate.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/operator/and_predicate.hpp (original)
+++ branches/release/boost/spirit/home/qi/operator/and_predicate.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -72,4 +72,11 @@
{};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<qi::and_predicate<Subject> >
+ : unary_has_semantic_action<Subject> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/operator/difference.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/operator/difference.hpp (original)
+++ branches/release/boost/spirit/home/qi/operator/difference.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -92,4 +92,11 @@
{};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Left, typename Right>
+ struct has_semantic_action<qi::difference<Left, Right> >
+ : binary_has_semantic_action<Left, Right> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/operator/expect.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/operator/expect.hpp (original)
+++ branches/release/boost/spirit/home/qi/operator/expect.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -75,4 +75,11 @@
{};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Elements>
+ struct has_semantic_action<qi::expect<Elements> >
+ : nary_has_semantic_action<Elements> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/operator/kleene.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/operator/kleene.hpp (original)
+++ branches/release/boost/spirit/home/qi/operator/kleene.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -22,13 +22,17 @@
///////////////////////////////////////////////////////////////////////////
// Enablers
///////////////////////////////////////////////////////////////////////////
+ //[composite_parsers_kleene_enable_
template <>
struct use_operator<qi::domain, proto::tag::dereference> // enables *p
: mpl::true_ {};
+ //]
}}
namespace boost { namespace spirit { namespace qi
{
+
+ //[composite_parsers_kleene
template <typename Subject>
struct kleene : unary_parser<kleene<Subject> >
{
@@ -58,7 +62,7 @@
, Attribute& attr) const
{
// create a local value if Attribute is not unused_type
- typedef typename traits::result_of::value<Attribute>::type
+ typedef typename traits::container_value<Attribute>::type
value_type;
value_type val = value_type();
@@ -80,14 +84,24 @@
Subject subject;
};
+ //]
///////////////////////////////////////////////////////////////////////////
// Parser generators: make_xxx function (objects)
///////////////////////////////////////////////////////////////////////////
+ //[composite_parsers_kleene_generator
template <typename Elements, typename Modifiers>
struct make_composite<proto::tag::dereference, Elements, Modifiers>
: make_unary_composite<Elements, kleene>
{};
+ //]
+}}}
+
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<qi::kleene<Subject> >
+ : unary_has_semantic_action<Subject> {};
}}}
#endif
Modified: branches/release/boost/spirit/home/qi/operator/list.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/operator/list.hpp (original)
+++ branches/release/boost/spirit/home/qi/operator/list.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -60,7 +60,7 @@
, Attribute& attr) const
{
// create a local value if Attribute is not unused_type
- typedef typename traits::result_of::value<Attribute>::type
+ typedef typename traits::container_value<Attribute>::type
value_type;
value_type val = value_type();
@@ -100,4 +100,11 @@
{};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Left, typename Right>
+ struct has_semantic_action<qi::list<Left, Right> >
+ : binary_has_semantic_action<Left, Right> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/operator/not_predicate.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/operator/not_predicate.hpp (original)
+++ branches/release/boost/spirit/home/qi/operator/not_predicate.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -71,4 +71,11 @@
{};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<qi::not_predicate<Subject> >
+ : unary_has_semantic_action<Subject> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/operator/optional.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/operator/optional.hpp (original)
+++ branches/release/boost/spirit/home/qi/operator/optional.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -66,7 +66,7 @@
if (subject.parse(first, last, context, skipper, val))
{
// assign the parsed value into our attribute
- qi::detail::assign_to(val, attr);
+ spirit::traits::assign_to(val, attr);
}
return true;
}
@@ -89,4 +89,11 @@
{};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<qi::optional<Subject> >
+ : unary_has_semantic_action<Subject> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/operator/permutation.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/operator/permutation.hpp (original)
+++ branches/release/boost/spirit/home/qi/operator/permutation.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -124,6 +124,10 @@
template <typename Elements, typename Attribute>
struct pass_attribute<qi::permutation<Elements>, Attribute>
: wrap_if_not_tuple<Attribute> {};
+
+ template <typename Elements>
+ struct has_semantic_action<qi::permutation<Elements> >
+ : nary_has_semantic_action<Elements> {};
}}}
#endif
Modified: branches/release/boost/spirit/home/qi/operator/plus.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/operator/plus.hpp (original)
+++ branches/release/boost/spirit/home/qi/operator/plus.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -58,7 +58,7 @@
, Attribute& attr) const
{
// create a local value if Attribute is not unused_type
- typedef typename traits::result_of::value<Attribute>::type
+ typedef typename traits::container_value<Attribute>::type
value_type;
value_type val = value_type();
@@ -94,4 +94,11 @@
{};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject>
+ struct has_semantic_action<qi::plus<Subject> >
+ : unary_has_semantic_action<Subject> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/operator/sequence.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/operator/sequence.hpp (original)
+++ branches/release/boost/spirit/home/qi/operator/sequence.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -63,4 +63,11 @@
{};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Elements>
+ struct has_semantic_action<qi::sequence<Elements> >
+ : nary_has_semantic_action<Elements> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/home/qi/operator/sequential_or.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/operator/sequential_or.hpp (original)
+++ branches/release/boost/spirit/home/qi/operator/sequential_or.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -106,6 +106,10 @@
template <typename Elements, typename Attribute>
struct pass_attribute<qi::sequential_or<Elements>, Attribute>
: wrap_if_not_tuple<Attribute> {};
+
+ template <typename Elements>
+ struct has_semantic_action<qi::sequential_or<Elements> >
+ : nary_has_semantic_action<Elements> {};
}}}
#endif
Modified: branches/release/boost/spirit/home/qi/parser.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/parser.hpp (original)
+++ branches/release/boost/spirit/home/qi/parser.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -16,6 +16,8 @@
namespace boost { namespace spirit { namespace qi
{
+
+ //[parser_base_parser
template <typename Derived>
struct parser
{
@@ -47,6 +49,7 @@
return *static_cast<Derived const*>(this);
}
};
+ //]
template <typename Derived>
struct primitive_parser : parser<Derived>
@@ -116,6 +119,7 @@
BOOST_MPL_HAS_XXX_TRAIT_DEF(binary_parser_id)
}
+ // parser type identification
template <typename T>
struct is_parser : detail::has_parser_id<T> {};
@@ -130,6 +134,7 @@
template <typename T>
struct is_binary_parser : detail::has_binary_parser_id<T> {};
+
}}}
#endif
Modified: branches/release/boost/spirit/home/qi/string/symbols.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/string/symbols.hpp (original)
+++ branches/release/boost/spirit/home/qi/string/symbols.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -204,7 +204,7 @@
if (value_type* val_ptr
= lookup->find(first, last, Filter()))
{
- detail::assign_to(*val_ptr, attr);
+ spirit::traits::assign_to(*val_ptr, attr);
return true;
}
return false;
Modified: branches/release/boost/spirit/home/qi/string/tst_map.hpp
==============================================================================
--- branches/release/boost/spirit/home/qi/string/tst_map.hpp (original)
+++ branches/release/boost/spirit/home/qi/string/tst_map.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -88,7 +88,8 @@
if (first != last)
{
- return node::add(r.first->second.root, first, last, val, this);
+ return node::add(r.first->second.root
+ , first, last, val, this) ? true : false;
}
else
{
Modified: branches/release/boost/spirit/home/support/attributes.hpp
==============================================================================
--- branches/release/boost/spirit/home/support/attributes.hpp (original)
+++ branches/release/boost/spirit/home/support/attributes.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -13,6 +13,8 @@
#endif
#include <boost/spirit/home/support/unused.hpp>
+#include <boost/spirit/home/support/has_semantic_action.hpp>
+#include <boost/spirit/home/support/attributes_fwd.hpp>
#include <boost/spirit/home/support/detail/as_variant.hpp>
#include <boost/optional/optional.hpp>
#include <boost/fusion/include/transform.hpp>
@@ -23,6 +25,7 @@
#include <boost/fusion/include/for_each.hpp>
#include <boost/utility/value_init.hpp>
#include <boost/type_traits/is_same.hpp>
+#include <boost/type_traits/is_convertible.hpp>
#include <boost/mpl/eval_if.hpp>
#include <boost/mpl/end.hpp>
#include <boost/mpl/find_if.hpp>
@@ -41,11 +44,13 @@
template <typename T>
struct not_is_variant
- : mpl::true_ {};
+ : mpl::true_
+ {};
template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
struct not_is_variant<boost::variant<BOOST_VARIANT_ENUM_PARAMS(T)> >
- : mpl::false_ {};
+ : mpl::false_
+ {};
///////////////////////////////////////////////////////////////////////////
// attribute_of
@@ -71,7 +76,7 @@
{
template <typename Component>
struct apply
- : is_not_unused<typename
+ : not_is_unused<typename
attribute_of<Component, Context, Iterator>::type>
{};
};
@@ -85,7 +90,7 @@
// a single value in any case (even if it actually already is a fusion
// sequence in its own).
///////////////////////////////////////////////////////////////////////////
- template <typename Component, typename Attribute, typename Enable = void>
+ template <typename Component, typename Attribute, typename Enable/* = void*/>
struct pass_attribute
{
typedef fusion::vector1<Attribute&> type;
@@ -164,7 +169,7 @@
// (filter all unused attributes from the list)
template <typename Sequence>
struct filter_unused_attributes
- : fusion::result_of::filter_if<Sequence, is_not_unused<mpl::_> >
+ : fusion::result_of::filter_if<Sequence, not_is_unused<mpl::_> >
{};
///////////////////////////////////////////////////////////////////////////
@@ -302,16 +307,152 @@
};
///////////////////////////////////////////////////////////////////////////
+ // transform_attribute
+ //
+ // Sometimes the user needs to transform the attribute types for certain
+ // attributes. This template can be used as a customization point, where
+ // the user is able specify specific transformation rules for any attribute
+ // type.
+ //
+ // The default attribute transformation (where the exposed attribute type is
+ // different from the required transformed attribute type) relies on the
+ // convertibility 'exposed type' --> 'transformed type', which has to exist
+ // in order to successfully execute the pre transform step.
+ ///////////////////////////////////////////////////////////////////////////
+ template <typename Exposed, typename Transformed, typename Enable/* = void*/>
+ struct transform_attribute
+ {
+ typedef Transformed type;
+
+ static Transformed pre(Exposed& val) { return Transformed(val); }
+ static Transformed pre(Exposed const& val) { return Transformed(val); }
+
+ // By default do post transformation only if types are convertible,
+ // otherwise we assume no post transform is required (i.e. the user
+ // utilizes nview et.al.).
+ static void post(Exposed&, Transformed const&, mpl::false_)
+ {
+ }
+ static void post(Exposed& val, Transformed const& attr, mpl::true_)
+ {
+ assign_to(attr, val);
+ }
+
+ static void post(Exposed& val, Transformed const& attr)
+ {
+ post(val, attr, is_convertible<Transformed, Exposed>());
+ }
+ };
+
+ template <typename Exposed, typename Transformed>
+ struct transform_attribute<Exposed const, Transformed>
+ {
+ typedef Transformed type;
+ static Transformed pre(Exposed const& val) { return Transformed(val); }
+ // Karma only, no post() required
+ };
+
+ template <typename Attribute>
+ struct transform_attribute<Attribute const, Attribute>
+ {
+ typedef Attribute const& type;
+ static Attribute const& pre(Attribute const& val) { return val; }
+ // Karma only, no post() required
+ };
+
+ // reference types need special handling
+ template <typename Exposed, typename Transformed>
+ struct transform_attribute<Exposed&, Transformed>
+ : transform_attribute<Exposed, Transformed>
+ {};
+
+ template <typename Attribute>
+ struct transform_attribute<Attribute&, Attribute>
+ {
+ typedef Attribute& type;
+ static Attribute& pre(Attribute& val) { return val; }
+ static void post(Attribute&, Attribute const&) {}
+ };
+
+ template <typename Attribute>
+ struct transform_attribute<Attribute const&, Attribute>
+ : transform_attribute<Attribute const, Attribute>
+ {};
+
+ // unused_type needs some special handling as well
+ template <>
+ struct transform_attribute<unused_type, unused_type>
+ {
+ typedef unused_type type;
+ static unused_type pre(unused_type) { return unused; }
+ static void post(unused_type, unused_type) {}
+ };
+
+ template <>
+ struct transform_attribute<unused_type const, unused_type>
+ : transform_attribute<unused_type, unused_type>
+ {};
+
+ template <typename Attribute>
+ struct transform_attribute<unused_type, Attribute>
+ : transform_attribute<unused_type, unused_type>
+ {};
+
+ template <typename Attribute>
+ struct transform_attribute<unused_type const, Attribute>
+ : transform_attribute<unused_type, unused_type>
+ {};
+
+ template <typename Attribute>
+ struct transform_attribute<Attribute, unused_type>
+ : transform_attribute<unused_type, unused_type>
+ {};
+
+ template <typename Attribute>
+ struct transform_attribute<Attribute const, unused_type>
+ : transform_attribute<unused_type, unused_type>
+ {};
+
+ ///////////////////////////////////////////////////////////////////////////
+ namespace result_of
+ {
+ template <typename Exposed, typename Transformed>
+ struct pre_transform
+ : traits::transform_attribute<Exposed, Transformed>
+ {};
+ }
+
+ template <typename Transformed, typename Exposed>
+ typename traits::result_of::pre_transform<Exposed, Transformed>::type
+ pre_transform(Exposed& attr)
+ {
+ return transform_attribute<Exposed, Transformed>::pre(attr);
+ }
+
+ template <typename Transformed, typename Exposed>
+ typename traits::result_of::pre_transform<Exposed const, Transformed>::type
+ pre_transform(Exposed const& attr)
+ {
+ return transform_attribute<Exposed const, Transformed>::pre(attr);
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
+ template <typename Exposed, typename Transformed>
+ void post_transform(Exposed& dest, Transformed const& attr)
+ {
+ return transform_attribute<Exposed, Transformed>::post(dest, attr);
+ }
+
+ ///////////////////////////////////////////////////////////////////////////
// make_attribute
//
- // All parsers and generators have specific attribute or parameter types.
- // Spirit parsers are passed an attribute and Spirit generators
- // are passed a parameter; these are either references to the expected
- // type, or an unused_type -- to flag that we do not care about the
- // attribute/parameter. For semantic actions, however, we need to have a
- // real value to pass to the semantic action. If the client did not
- // provide one, we will have to synthesize the value. This class
- // takes care of that.
+ // All parsers and generators have specific attribute types.
+ // Spirit parsers and generators are passed an attribute; these are either
+ // references to the expected type, or an unused_type -- to flag that we do
+ // not care about the attribute. For semantic actions, however, we need to
+ // have a real value to pass to the semantic action. If the client did not
+ // provide one, we will have to synthesize the value. This class takes care
+ // of that.
///////////////////////////////////////////////////////////////////////////
template <typename Attribute, typename ActualAttribute>
struct make_attribute
@@ -341,25 +482,17 @@
{
return value; // just pass the one provided
}
-
- template <typename T>
- static T const& call(T const& value)
- {
- return value; // just pass the one provided
- }
};
template <typename Attribute, typename ActualAttribute>
struct make_attribute<Attribute&, ActualAttribute>
: make_attribute<Attribute, ActualAttribute>
- {
- };
+ {};
template <typename Attribute, typename ActualAttribute>
struct make_attribute<Attribute const&, ActualAttribute>
: make_attribute<Attribute, ActualAttribute>
- {
- };
+ {};
template <typename ActualAttribute>
struct make_attribute<unused_type, ActualAttribute>
@@ -433,13 +566,19 @@
// sequence
///////////////////////////////////////////////////////////////////////////
template <typename T>
- struct one_element_sequence : mpl::false_ {};
+ struct one_element_sequence
+ : mpl::false_
+ {};
template <typename T>
- struct one_element_sequence<fusion::vector1<T> > : mpl::true_ {};
+ struct one_element_sequence<fusion::vector1<T> >
+ : mpl::true_
+ {};
template <typename T>
- struct one_element_sequence<fusion::vector<T> > : mpl::true_ {};
+ struct one_element_sequence<fusion::vector<T> >
+ : mpl::true_
+ {};
///////////////////////////////////////////////////////////////////////////
// clear
@@ -447,7 +586,7 @@
// Clear data efficiently
///////////////////////////////////////////////////////////////////////////
template <typename T>
- struct is_container;
+ void clear(T& val);
namespace detail
{
@@ -490,31 +629,46 @@
}
}
- // main dispatch
+ template <typename T, typename Enable/* = void*/>
+ struct clear_value
+ {
+ static void call(T& val)
+ {
+ detail::clear_impl(val, typename is_container<T>::type());
+ }
+ };
+
+ // optionals
template <typename T>
- void clear(T& val)
+ struct clear_value<optional<T> >
{
- detail::clear_impl(val, typename is_container<T>::type());
- }
+ static void call(optional<T>& val)
+ {
+ if (val)
+ clear(*val);
+ }
+ };
- // for unused
- inline void clear(unused_type)
+ // variants
+ template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
+ struct clear_value<variant<BOOST_VARIANT_ENUM_PARAMS(T)> >
{
- }
+ static void call(variant<BOOST_VARIANT_ENUM_PARAMS(T)>& val)
+ {
+ apply_visitor(detail::clear_visitor(), val);
+ }
+ };
- // optionals
+ // main dispatch
template <typename T>
- void clear(optional<T>& val)
+ void clear(T& val)
{
- if (val)
- clear(*val);
+ clear_value<T>::call(val);
}
- // variants
- template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
- void clear(variant<BOOST_VARIANT_ENUM_PARAMS(T)>& var)
+ // for unused
+ inline void clear(unused_type)
{
- apply_visitor(detail::clear_visitor(), var);
}
}}}
Modified: branches/release/boost/spirit/home/support/char_class.hpp
==============================================================================
--- branches/release/boost/spirit/home/support/char_class.hpp (original)
+++ branches/release/boost/spirit/home/support/char_class.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -16,6 +16,7 @@
#include <boost/proto/proto.hpp>
#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
#include <boost/spirit/home/support/unused.hpp>
#if defined(BOOST_MSVC)
@@ -308,6 +309,44 @@
};
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ ///////////////////////////////////////////////////////////////////////////
+ // This meta-function evaluates to mpl::true_ if the function
+ // char_encoding::ischar() needs to be called to ensure correct matching.
+ // This happens mainly if the character type returned from the underlying
+ // iterator is larger than the character type of the used character
+ // encoding. Additionally, this meta-function provides a customization
+ // point for the lexer library to enforce this behavior while parsing
+ // a token stream.
+ template <typename Char, typename BaseChar>
+ struct mustcheck_ischar
+ : mpl::bool_<(sizeof(Char) > sizeof(BaseChar)) ? true : false> {};
+
+ ///////////////////////////////////////////////////////////////////////////
+ // The following template calls char_encoding::ischar, if necessary
+ template <typename CharParam, typename CharEncoding
+ , bool MustCheck = mustcheck_ischar<
+ CharParam, typename CharEncoding::char_type>::value>
+ struct ischar
+ {
+ static bool call(CharParam)
+ {
+ return true;
+ }
+ };
+
+ template <typename CharParam, typename CharEncoding>
+ struct ischar<CharParam, CharEncoding, true>
+ {
+ static bool call(CharParam const& ch)
+ {
+ return CharEncoding::ischar(int(ch));
+ }
+ };
+
+}}}
+
#if defined(BOOST_MSVC)
# pragma warning(pop)
#endif
Modified: branches/release/boost/spirit/home/support/char_encoding/iso8859_1.hpp
==============================================================================
--- branches/release/boost/spirit/home/support/char_encoding/iso8859_1.hpp (original)
+++ branches/release/boost/spirit/home/support/char_encoding/iso8859_1.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -579,7 +579,9 @@
static bool
ischar(int ch)
{
- return true; // iso8859.1 uses all 8 bits
+ // iso8859.1 uses all 8 bits
+ // we have to watch out for sign extensions
+ return (0 == (ch & ~0xff) || ~0 == (ch | 0xff)) ? true : false;
}
static int
Modified: branches/release/boost/spirit/home/support/char_encoding/standard.hpp
==============================================================================
--- branches/release/boost/spirit/home/support/char_encoding/standard.hpp (original)
+++ branches/release/boost/spirit/home/support/char_encoding/standard.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -33,7 +33,9 @@
static bool
ischar(int ch)
{
- return true; // use all the bits
+ // uses all 8 bits
+ // we have to watch out for sign extensions
+ return (0 == (ch & ~0xff) || ~0 == (ch | 0xff)) ? true : false;
}
static int
Modified: branches/release/boost/spirit/home/support/char_encoding/standard_wide.hpp
==============================================================================
--- branches/release/boost/spirit/home/support/char_encoding/standard_wide.hpp (original)
+++ branches/release/boost/spirit/home/support/char_encoding/standard_wide.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -16,12 +16,29 @@
#include <string>
#include <boost/cstdint.hpp>
+#include <boost/spirit/home/support/assert_msg.hpp>
+
+namespace boost { namespace spirit { namespace traits
+{
+ template <std::size_t N>
+ struct wchar_t_size
+ {
+ BOOST_SPIRIT_ASSERT_MSG(N == 1 || N == 2 || N == 4,
+ not_supported_size_of_wchar_t, ());
+ };
+
+ template <> struct wchar_t_size<1> { enum { mask = 0xff }; };
+ template <> struct wchar_t_size<2> { enum { mask = 0xffff }; };
+ template <> struct wchar_t_size<4> { enum { mask = 0xffffffff }; };
+
+}}}
namespace boost { namespace spirit { namespace char_encoding
{
///////////////////////////////////////////////////////////////////////////
// Test characters for specified conditions (using std wchar_t functions)
///////////////////////////////////////////////////////////////////////////
+
struct standard_wide
{
typedef wchar_t char_type;
@@ -41,9 +58,17 @@
}
static bool
- ischar(wchar_t ch)
+ ischar(int ch)
{
- return true; // any wchar_t
+ // we have to watch out for sign extensions (casting is there to
+ // silence certain compilers complaining about signed/unsigned
+ // mismatch)
+ return (
+ std::size_t(0) ==
+ std::size_t(ch & ~traits::wchar_t_size<sizeof(wchar_t)>::mask) ||
+ std::size_t(~0) ==
+ std::size_t(ch | traits::wchar_t_size<sizeof(wchar_t)>::mask)
+ ) ? true : false; // any wchar_t, but no other bits set
}
static bool
Modified: branches/release/boost/spirit/home/support/common_terminals.hpp
==============================================================================
--- branches/release/boost/spirit/home/support/common_terminals.hpp (original)
+++ branches/release/boost/spirit/home/support/common_terminals.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -41,6 +41,7 @@
( bin )
( oct )
( hex )
+ ( bool_ )
( ushort_ )
( ulong_ )
( uint_ )
@@ -78,6 +79,13 @@
( token )
( attr )
)
+
+ // special tags (used mainly for stateful tag types)
+ namespace tag
+ {
+ struct attr_cast {};
+ }
+
}}
///////////////////////////////////////////////////////////////////////////////
Modified: branches/release/boost/spirit/home/support/container.hpp
==============================================================================
--- branches/release/boost/spirit/home/support/container.hpp (original)
+++ branches/release/boost/spirit/home/support/container.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -14,6 +14,7 @@
#endif
#include <boost/spirit/home/support/unused.hpp>
+#include <boost/spirit/home/support/attributes_fwd.hpp>
#include <boost/detail/iterator.hpp> // for boost::detail::iterator_traits
#include <boost/mpl/has_xxx.hpp>
#include <boost/mpl/bool.hpp>
@@ -38,19 +39,19 @@
BOOST_MPL_HAS_XXX_TRAIT_DEF(reference)
}
- template <typename T>
- struct is_container :
- mpl::bool_<
+ template <typename T, typename Enable/* = void*/>
+ struct is_container
+ : mpl::bool_<
detail::has_value_type<T>::value &&
detail::has_iterator<T>::value &&
detail::has_size_type<T>::value &&
- detail::has_reference<T>::value
- >
+ detail::has_reference<T>::value>
{};
template <typename T>
struct is_container<optional<T> >
- : is_container<T> {};
+ : is_container<T>
+ {};
#define BOOST_SPIRIT_IS_CONTAINER(z, N, data) \
is_container<BOOST_PP_CAT(T, N)>::value || \
@@ -59,143 +60,235 @@
template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
struct is_container<variant<BOOST_VARIANT_ENUM_PARAMS(T)> >
: mpl::bool_<BOOST_PP_REPEAT(BOOST_VARIANT_LIMIT_TYPES
- , BOOST_SPIRIT_IS_CONTAINER, _) false> {};
+ , BOOST_SPIRIT_IS_CONTAINER, _) false>
+ {};
#undef BOOST_SPIRIT_IS_CONTAINER
- ///////////////////////////////////////////////////////////////////////////
- namespace detail
+ namespace result_of
{
+ ///////////////////////////////////////////////////////////////////////
template <typename T>
- struct remove_value_const
+ struct optional_value
{
typedef T type;
};
template <typename T>
- struct remove_value_const<T const> : remove_value_const<T>
- {};
-
- template <typename F, typename S>
- struct remove_value_const<std::pair<F, S> >
- {
- typedef typename remove_value_const<F>::type first_type;
- typedef typename remove_value_const<S>::type second_type;
- typedef std::pair<first_type, second_type> type;
- };
- }
-
- namespace result_of
- {
- ///////////////////////////////////////////////////////////////////////
- template <typename Container>
- struct value
+ struct optional_value<optional<T> >
{
- typedef typename detail::remove_value_const<
- typename Container::value_type>::type
- type;
+ typedef T type;
};
- // this will be instantiated if the optional holds a container
template <typename T>
- struct value<optional<T> > : value<T> {};
-
- // this will be instantiated if the variant holds a container
- template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
- struct value<variant<BOOST_VARIANT_ENUM_PARAMS(T)> >
- {
- typedef typename
- variant<BOOST_VARIANT_ENUM_PARAMS(T)>::types
- types;
- typedef typename
- mpl::find_if<types, is_container<mpl::_1> >::type
- iter;
-
- typedef typename value<
- typename mpl::if_<
- is_same<iter, typename mpl::end<types>::type>
- , unused_type, typename mpl::deref<iter>::type
- >::type
- >::type type;
+ struct optional_value<optional<T> const>
+ {
+ typedef T const type;
};
template <>
- struct value<unused_type>
+ struct optional_value<unused_type>
{
typedef unused_type type;
};
template <>
- struct value<unused_type const>
+ struct optional_value<unused_type const>
{
typedef unused_type type;
};
+ }
- ///////////////////////////////////////////////////////////////////////
- template <typename Container>
- struct iterator
+ ///////////////////////////////////////////////////////////////////////////
+ namespace detail
+ {
+ template <typename T>
+ struct remove_value_const
{
- typedef typename Container::iterator type;
+ typedef T type;
};
- template <typename Container>
- struct iterator<Container const>
+ template <typename T>
+ struct remove_value_const<T const>
+ : remove_value_const<T>
+ {};
+
+ template <typename F, typename S>
+ struct remove_value_const<std::pair<F, S> >
{
- typedef typename Container::const_iterator type;
+ typedef typename remove_value_const<F>::type first_type;
+ typedef typename remove_value_const<S>::type second_type;
+ typedef std::pair<first_type, second_type> type;
};
+ }
- template <>
- struct iterator<unused_type>
+ ///////////////////////////////////////////////////////////////////////
+ //[customization_container_value_default
+ template <typename Container, typename Enable/* = void*/>
+ struct container_value
+ : detail::remove_value_const<typename Container::value_type>
+ {};
+ //]
+
+ // this will be instantiated if the optional holds a container
+ template <typename T>
+ struct container_value<optional<T> >
+ : container_value<T>
+ {};
+
+ // this will be instantiated if the variant holds a container
+ template <BOOST_VARIANT_ENUM_PARAMS(typename T)>
+ struct container_value<variant<BOOST_VARIANT_ENUM_PARAMS(T)> >
+ {
+ typedef typename
+ variant<BOOST_VARIANT_ENUM_PARAMS(T)>::types
+ types;
+ typedef typename
+ mpl::find_if<types, is_container<mpl::_1> >::type
+ iter;
+
+ typedef typename container_value<
+ typename mpl::if_<
+ is_same<iter, typename mpl::end<types>::type>
+ , unused_type, typename mpl::deref<iter>::type
+ >::type
+ >::type type;
+ };
+
+ //[customization_container_value_unused
+ template <>
+ struct container_value<unused_type>
+ {
+ typedef unused_type type;
+ };
+ //]
+
+ template <>
+ struct container_value<unused_type const>
+ {
+ typedef unused_type type;
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
+ template <typename Container, typename Enable/* = void*/>
+ struct container_iterator
+ {
+ typedef typename Container::iterator type;
+ };
+
+ template <typename Container>
+ struct container_iterator<Container const>
+ {
+ typedef typename Container::const_iterator type;
+ };
+
+ template <>
+ struct container_iterator<unused_type>
+ {
+ typedef unused_type const* type;
+ };
+
+ template <>
+ struct container_iterator<unused_type const>
+ {
+ typedef unused_type const* type;
+ };
+
+ ///////////////////////////////////////////////////////////////////////////
+ template <typename T, typename Enable/* = void*/>
+ struct optional_attribute
+ {
+ typedef T const& type;
+
+ static type call(T const& val)
{
- typedef unused_type const* type;
- };
+ return val;
+ }
- template <>
- struct iterator<unused_type const>
+ static bool is_valid(T const&)
{
- typedef unused_type const* type;
- };
+ return true;
+ }
+ };
- ///////////////////////////////////////////////////////////////////////
- template <typename T>
- struct optional_value
+ template <typename T>
+ struct optional_attribute<optional<T> >
+ {
+ typedef T const& type;
+
+ static type call(optional<T> const& val)
{
- typedef T type;
- };
+ return boost::get<T>(val);
+ }
- template <typename T>
- struct optional_value<optional<T> >
+ static bool is_valid(optional<T> const& val)
{
- typedef T type;
- };
+ return val;
+ }
+ };
- template <>
- struct optional_value<unused_type>
+ template <typename T>
+ struct optional_attribute<optional<T const> >
+ {
+ typedef T const& type;
+
+ static type call(optional<T const> const& val)
{
- typedef unused_type type;
- };
+ return boost::get<T const>(val);
+ }
- template <>
- struct optional_value<unused_type const>
+ static bool is_valid(optional<T const> const& val)
{
- typedef unused_type type;
- };
+ return val;
+ }
+ };
+
+ template <typename T>
+ typename optional_attribute<T>::type
+ optional_value(T const& val)
+ {
+ return optional_attribute<T>::call(val);
+ }
+
+ inline unused_type optional_value(unused_type)
+ {
+ return unused;
+ }
+
+ template <typename T>
+ bool has_optional_value(T const& val)
+ {
+ return optional_attribute<T>::is_valid(val);
+ }
+
+ inline bool has_optional_value(unused_type)
+ {
+ return true;
}
///////////////////////////////////////////////////////////////////////////
template <typename Container, typename T>
- inline void push_back(Container& c, T const& val)
+ void push_back(Container& c, T const& val);
+
+ template <typename Container, typename T, typename Enable/* = void*/>
+ struct push_back_container
{
- c.insert(c.end(), val);
- }
+ static void call(Container& c, T const& val)
+ {
+ c.insert(c.end(), val);
+ }
+ };
template <typename Container, typename T>
- inline void push_back(optional<Container>& c, T const& val)
+ struct push_back_container<optional<Container>, T>
{
- if (!c)
- c = Container();
- push_back(boost::get<Container>(c), val);
- }
+ static void call(optional<Container>& c, T const& val)
+ {
+ if (!c)
+ c = Container();
+ push_back(boost::get<Container>(c), val);
+ }
+ };
namespace detail
{
@@ -228,19 +321,27 @@
}
template <BOOST_VARIANT_ENUM_PARAMS(typename T_), typename T>
- inline void push_back(variant<BOOST_VARIANT_ENUM_PARAMS(T_)>& c
- , T const& val)
+ struct push_back_container<variant<BOOST_VARIANT_ENUM_PARAMS(T_)>, T>
{
- apply_visitor(detail::push_back_visitor<T>(val), c);
+ static void call(variant<BOOST_VARIANT_ENUM_PARAMS(T_)>& c, T const& val)
+ {
+ apply_visitor(detail::push_back_visitor<T>(val), c);
+ }
+ };
+
+ template <typename Container, typename T>
+ void push_back(Container& c, T const& val)
+ {
+ push_back_container<Container, T>::call(c, val);
}
template <typename Container>
- inline void push_back(Container&, unused_type)
+ void push_back(Container&, unused_type)
{
}
template <typename T>
- inline void push_back(unused_type, T const&)
+ void push_back(unused_type, T const&)
{
}
@@ -249,18 +350,29 @@
}
///////////////////////////////////////////////////////////////////////////
- template <typename Container>
- inline typename result_of::iterator<Container>::type
- begin(Container& c)
+ template <typename Container, typename Enable/* = void*/>
+ struct begin_container
+ {
+ typedef typename container_iterator<Container>::type type;
+ static type call(Container& c)
+ {
+ return c.begin();
+ }
+ };
+
+ namespace result_of
{
- return c.begin();
+ template <typename Container>
+ struct begin
+ : traits::container_iterator<Container>
+ {};
}
template <typename Container>
- inline typename result_of::iterator<Container const>::type
- begin(Container const& c)
+ typename begin_container<Container>::type
+ begin(Container& c)
{
- return c.begin();
+ return begin_container<Container>::call(c);
}
inline unused_type const*
@@ -269,18 +381,30 @@
return &unused;
}
- template <typename Container>
- inline typename result_of::iterator<Container>::type
- end(Container& c)
+ ///////////////////////////////////////////////////////////////////////////
+ template <typename Container, typename Enable/* = void*/>
+ struct end_container
{
- return c.end();
+ typedef typename container_iterator<Container>::type type;
+ static type call(Container& c)
+ {
+ return c.end();
+ }
+ };
+
+ namespace result_of
+ {
+ template <typename Container>
+ struct end
+ : traits::container_iterator<Container>
+ {};
}
template <typename Container>
- inline typename result_of::iterator<Container const>::type
- end(Container const& c)
+ inline typename end_container<Container>::type
+ end(Container& c)
{
- return c.end();
+ return end_container<Container>::call(c);
}
inline unused_type const*
@@ -290,17 +414,29 @@
}
///////////////////////////////////////////////////////////////////////////
- template <typename Iterator>
- inline typename boost::detail::iterator_traits<Iterator>::reference
- deref(Iterator& it)
+ template <typename Iterator, typename Enable/* = void*/>
+ struct deref_iterator
+ {
+ typedef typename boost::detail::iterator_traits<Iterator>::reference type;
+ static type call(Iterator& it)
+ {
+ return *it;
+ }
+ };
+
+ namespace result_of
{
- return *it;
+ template <typename Iterator>
+ struct deref
+ : traits::deref_iterator<Iterator>
+ {};
}
- inline unused_type
- deref(unused_type*)
+ template <typename Iterator>
+ typename deref_iterator<Iterator>::type
+ deref(Iterator& it)
{
- return unused;
+ return deref_iterator<Iterator>::call(it);
}
inline unused_type
@@ -310,43 +446,57 @@
}
///////////////////////////////////////////////////////////////////////////
- template <typename Iterator>
- inline Iterator
- next(Iterator& it)
+ template <typename Iterator, typename Enable/* = void*/>
+ struct next_iterator
{
- return ++it;
+ typedef Iterator type;
+ static type call(Iterator& it)
+ {
+ return ++it;
+ }
+ };
+
+ namespace result_of
+ {
+ template <typename Iterator>
+ struct next
+ {
+ typedef Iterator type;
+ };
}
- inline unused_type
- next(unused_type*)
+ template <typename Iterator>
+ typename next_iterator<Iterator>::type
+ next(Iterator& it)
{
- return &unused;
+ return next_iterator<Iterator>::call(it);
}
- inline unused_type
+ inline unused_type const*
next(unused_type const*)
{
return &unused;
}
///////////////////////////////////////////////////////////////////////////
- template <typename Iterator>
- inline bool
- compare(Iterator const& it1, Iterator const& it2)
+ template <typename Iterator, typename Enable/* = void*/>
+ struct compare_iterators
{
- return it1 == it2;
- }
+ static bool call(Iterator const& it1, Iterator const& it2)
+ {
+ return it1 == it2;
+ }
+ };
- inline bool
- compare(unused_type*, unused_type*)
+ template <typename Iterator>
+ bool compare(Iterator& it1, Iterator& it2)
{
- return true;
+ return compare_iterators<Iterator>::call(it1, it2);
}
- inline bool
- compare(unused_type const*, unused_type const*)
+ inline bool compare(unused_type const*, unused_type const*)
{
- return true;
+ return false;
}
}}}
Modified: branches/release/boost/spirit/home/support/terminal.hpp
==============================================================================
--- branches/release/boost/spirit/home/support/terminal.hpp (original)
+++ branches/release/boost/spirit/home/support/terminal.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -432,6 +432,52 @@
};
}
+ ///////////////////////////////////////////////////////////////////////////
+ // support for stateful tag types
+ namespace tag
+ {
+ template <typename Data, typename Tag
+ , typename DataTag1 = unused_type, typename DataTag2 = unused_type>
+ struct stateful_tag
+ {
+ typedef Data data_type;
+
+ stateful_tag() {}
+ stateful_tag(data_type const& data) : data_(data) {}
+
+ data_type data_;
+ };
+ }
+
+ template <typename Data, typename Tag
+ , typename DataTag1 = unused_type, typename DataTag2 = unused_type>
+ struct stateful_tag_type
+ : spirit::terminal<tag::stateful_tag<Data, Tag, DataTag1, DataTag2> >
+ {
+ typedef tag::stateful_tag<Data, Tag, DataTag1, DataTag2> tag_type;
+
+ stateful_tag_type() {}
+ stateful_tag_type(Data const& data)
+ : spirit::terminal<tag_type>(data) {}
+ };
+
+ namespace detail
+ {
+ // extract expression if this is a Tag
+ template <typename StatefulTag>
+ struct get_stateful_data
+ {
+ typedef typename StatefulTag::data_type data_type;
+
+ // is invoked if given tag is != Tag
+ template <typename Tag_>
+ static data_type call(Tag_) { return data_type(); }
+
+ // this is invoked if given tag is same as'Tag'
+ static data_type const& call(StatefulTag const& t) { return t.data_; }
+ };
+ }
+
}}
// Define a spirit terminal. This macro may be placed in any namespace.
Modified: branches/release/boost/spirit/home/support/unused.hpp
==============================================================================
--- branches/release/boost/spirit/home/support/unused.hpp (original)
+++ branches/release/boost/spirit/home/support/unused.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -55,8 +55,8 @@
namespace traits
{
// We use this test to detect if the argument is not an unused_type
- template <typename T> struct is_not_unused : mpl::true_ {};
- template <> struct is_not_unused<unused_type> : mpl::false_ {};
+ template <typename T> struct not_is_unused : mpl::true_ {};
+ template <> struct not_is_unused<unused_type> : mpl::false_ {};
}
}}
Modified: branches/release/boost/spirit/repository/home/karma/directive/confix.hpp
==============================================================================
--- branches/release/boost/spirit/repository/home/karma/directive/confix.hpp (original)
+++ branches/release/boost/spirit/repository/home/karma/directive/confix.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -19,8 +19,8 @@
#include <boost/spirit/repository/home/support/confix.hpp>
-#include <boost/fusion/include/at.hpp>
#include <boost/fusion/include/vector.hpp>
+#include <boost/mpl/or.hpp>
///////////////////////////////////////////////////////////////////////////////
namespace boost { namespace spirit
@@ -125,4 +125,16 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject, typename Prefix, typename Suffix>
+ struct has_semantic_action<
+ repository::karma::confix_generator<Subject, Prefix, Suffix> >
+ : mpl::or_<
+ has_semantic_action<Subject>
+ , has_semantic_action<Prefix>
+ , has_semantic_action<Suffix>
+ > {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/repository/home/karma/nonterminal/subrule.hpp
==============================================================================
--- branches/release/boost/spirit/repository/home/karma/nonterminal/subrule.hpp (original)
+++ branches/release/boost/spirit/repository/home/karma/nonterminal/subrule.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -200,8 +200,8 @@
context_type;
// Create an attribute if none is supplied.
- typedef traits::make_attribute<subrule_attr_type, Attribute>
- make_attribute;
+ typedef traits::make_transformed_attribute<
+ subrule_attr_type, Attribute const> make_attribute;
// If you are seeing a compilation error here, you are probably
// trying to use a subrule which has inherited attributes,
@@ -233,14 +233,14 @@
context_type;
// Create an attribute if none is supplied.
- typedef traits::make_attribute<subrule_attr_type, Attribute>
- make_attribute;
+ typedef traits::make_transformed_attribute<
+ subrule_attr_type, Attribute const> make_attribute;
// If you are seeing a compilation error here, you are probably
// trying to use a subrule which has inherited attributes,
// passing values of incompatible types for them.
- context_type context(*this, make_attribute::call(attr)
- , params, caller_context);
+ context_type context(*this, make_attribute::call(attr), params
+ , caller_context);
return def.binder(sink, context, delimiter);
}
Modified: branches/release/boost/spirit/repository/home/qi/directive/confix.hpp
==============================================================================
--- branches/release/boost/spirit/repository/home/qi/directive/confix.hpp (original)
+++ branches/release/boost/spirit/repository/home/qi/directive/confix.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -17,11 +17,12 @@
#include <boost/spirit/home/support/info.hpp>
#include <boost/spirit/home/support/unused.hpp>
#include <boost/spirit/home/support/attributes.hpp>
-#include <boost/fusion/include/at.hpp>
-#include <boost/fusion/include/vector.hpp>
#include <boost/spirit/repository/home/support/confix.hpp>
+#include <boost/fusion/include/vector.hpp>
+#include <boost/mpl/or.hpp>
+
///////////////////////////////////////////////////////////////////////////////
namespace boost { namespace spirit
{
@@ -133,5 +134,17 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject, typename Prefix, typename Suffix>
+ struct has_semantic_action<
+ repository::qi::confix_parser<Subject, Prefix, Suffix> >
+ : mpl::or_<
+ has_semantic_action<Subject>
+ , has_semantic_action<Prefix>
+ , has_semantic_action<Suffix>
+ > {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/repository/home/qi/directive/distinct.hpp
==============================================================================
--- branches/release/boost/spirit/repository/home/qi/directive/distinct.hpp (original)
+++ branches/release/boost/spirit/repository/home/qi/directive/distinct.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -131,5 +131,13 @@
}}}
+namespace boost { namespace spirit { namespace traits
+{
+ template <typename Subject, typename Tail, typename Modifier>
+ struct has_semantic_action<
+ repository::qi::distinct_parser<Subject, Tail, Modifier> >
+ : unary_has_semantic_action<Subject> {};
+}}}
+
#endif
Modified: branches/release/boost/spirit/repository/home/qi/nonterminal/subrule.hpp
==============================================================================
--- branches/release/boost/spirit/repository/home/qi/nonterminal/subrule.hpp (original)
+++ branches/release/boost/spirit/repository/home/qi/nonterminal/subrule.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -196,9 +196,9 @@
context_type;
// prepare attribute
- typedef
- traits::make_attribute<subrule_attr_type, Attribute>
- make_attribute;
+ typedef traits::make_transformed_attribute<
+ subrule_attr_type, Attribute> make_attribute;
+
typename make_attribute::type attr_ = make_attribute::call(attr);
// If you are seeing a compilation error here, you are probably
@@ -233,9 +233,9 @@
context_type;
// prepare attribute
- typedef
- traits::make_attribute<subrule_attr_type, Attribute>
- make_attribute;
+ typedef traits::make_transformed_attribute<
+ subrule_attr_type, Attribute> make_attribute;
+
typename make_attribute::type attr_ = make_attribute::call(attr);
// If you are seeing a compilation error here, you are probably
Modified: branches/release/libs/spirit/classic/doc/multi_pass.html
==============================================================================
--- branches/release/libs/spirit/classic/doc/multi_pass.html (original)
+++ branches/release/libs/spirit/classic/doc/multi_pass.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -86,24 +86,24 @@
</span><span class="keyword">using namespace</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">;
</span><span class="keyword">using namespace</span> <span class="identifier">std</span><span class="special">;</span>
- <span class="identifier">ifstream in</span><span class="special">(</span><span class="string">"input_file.txt"</span><span class="special">); </span><span class="comment">// we get our input from this file<br><br> </span><span class="keyword">typedef char </span><span class="identifier">char_t</span><span class="special">;</span>
- <span class="keyword">typedef </span><span class="identifier">multi_pass</span><span class="special"><</span><span class="identifier">istreambuf_iterator</span><span class="special"><</span><span class="identifier">char_t</span><span class="special">> > </span><span class="identifier">iterator_t</span><span class="special">;</span>
+ <span class="identifier">ifstream in</span><span class="special">(</span><span class="string">"input_file.txt"</span><span class="special">); </span><span class="comment">// we get our input from this file<br><br> </span><span class="keyword">typedef char </span><span class="identifier">char_type</span><span class="special">;</span>
+ <span class="keyword">typedef </span><span class="identifier">multi_pass</span><span class="special"><</span><span class="identifier">istreambuf_iterator</span><span class="special"><</span><span class="identifier">char_type</span><span class="special">> > </span><span class="identifier">iterator_type</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">skip_parser_iteration_policy</span><span class="special"><</span><span class="identifier">space_parser</span><span class="special">></span> <span class="identifier">iter_policy_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">scanner_policies</span><span class="special"><</span>iter_policy_t<span class="special">></span> <span class="identifier">scanner_policies_t</span><span class="special">;</span>
- <span class="keyword">typedef</span> <span class="identifier">scanner</span><span class="special"><</span>iterator_t, scanner_policies_t<span class="special">></span> <span class="identifier">scanner_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">skip_parser_iteration_policy</span><span class="special"><</span><span class="identifier">space_parser</span><span class="special">></span> <span class="identifier">iter_policy_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">scanner_policies</span><span class="special"><</span>iter_policy_type<span class="special">></span> <span class="identifier">scanner_policies_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">scanner</span><span class="special"><</span>iterator_type, scanner_policies_type<span class="special">></span> <span class="identifier">scanner_type</span><span class="special">;</span>
- <span class="keyword">typedef</span> rule<span class="special"><</span>scanner_t<span class="special">></span> <span class="identifier">rule_t</span><span class="special">;</span>
+ <span class="keyword">typedef</span> rule<span class="special"><</span>scanner_type<span class="special">></span> <span class="identifier">rule_type</span><span class="special">;</span>
- <span class="identifier">iter_policy_t</span> <span class="identifier">iter_policy</span><span class="special">(</span><span class="identifier">space_p</span><span class="special">);</span>
- <span class="identifier">scanner_policies_t</span> <span class="identifier">policies</span><span class="special">(</span><span class="identifier">iter_policy</span><span class="special">);</span>
- iterator_t first(
- make_multi_pass(std::istreambuf_iterator<char_t>(in)));
+ <span class="identifier">iter_policy_type</span> <span class="identifier">iter_policy</span><span class="special">(</span><span class="identifier">space_p</span><span class="special">);</span>
+ <span class="identifier">scanner_policies_type</span> <span class="identifier">policies</span><span class="special">(</span><span class="identifier">iter_policy</span><span class="special">);</span>
+ iterator_type first(
+ make_multi_pass(std::istreambuf_iterator<char_type>(in)));
- scanner_t <span class="identifier">scan</span><span class="special">(</span>
- first<span class="special">,</span> make_multi_pass(std::istreambuf_iterator<span class="special"><</span><span class="identifier">char_t</span><span class="special">>()),</span>
+ scanner_type <span class="identifier">scan</span><span class="special">(</span>
+ first<span class="special">,</span> make_multi_pass(std::istreambuf_iterator<span class="special"><</span><span class="identifier">char_type</span><span class="special">>()),</span>
<span class="identifier">policies</span><span class="special">)</span>;
-<span class="special"><br> </span><span class="identifier">rule_t n_list </span><span class="special">= </span><span class="identifier">real_p </span><span class="special">>> *(</span><span class="literal">',' </span><span class="special">>> </span><span class="identifier">real_p</span><span class="special">);<br> </span><span class="identifier">match</span><span class="special"><></span><span class="identifier"> m </span><span class="special">= </span><span class="identifier">n_list</span><span class="special">.</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">scan</span><span class="special">);<br></span></code></pre>
+<span class="special"><br> </span><span class="identifier">rule_type n_list </span><span class="special">= </span><span class="identifier">real_p </span><span class="special">>> *(</span><span class="literal">',' </span><span class="special">>> </span><span class="identifier">real_p</span><span class="special">);<br> </span><span class="identifier">match</span><span class="special"><></span><span class="identifier"> m </span><span class="special">= </span><span class="identifier">n_list</span><span class="special">.</span><span class="identifier">parse</span><span class="special">(</span><span class="identifier">scan</span><span class="special">);<br></span></code></pre>
<a name="flush_multi_pass"></a>
<h2>flush_multi_pass</h2>
<p> There is a predefined pseudo-parser called flush_multi_pass. When this parser
@@ -209,7 +209,7 @@
example of how to specify a custom multi_pass that wraps an istream_iterator<char>,
and is slightly more efficient than the default because it uses the first_owner
OwnershipPolicy and the no_check CheckingPolicy:</p>
-<pre> <code><span class="keyword">typedef </span><span class="identifier">multi_pass</span><span class="special"><<br> </span><span class="identifier">istream_iterator</span><span class="special"><</span><span class="keyword">char</span><span class="special">>,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">input_iterator</span><span class="special">,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">first_owner</span><span class="special">,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">no_check</span><span class="special">,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">std_deque<br> </span><span class="special">> </span><span class="identifier">first_owner_multi_pass_t</span><
span class="special">;<br></span></code></pre>
+<pre> <code><span class="keyword">typedef </span><span class="identifier">multi_pass</span><span class="special"><<br> </span><span class="identifier">istream_iterator</span><span class="special"><</span><span class="keyword">char</span><span class="special">>,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">input_iterator</span><span class="special">,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">first_owner</span><span class="special">,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">no_check</span><span class="special">,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">std_deque<br> </span><span class="special">> </span><span class="identifier">first_owner_multi_pass_type</spa
n><span class="special">;<br></span></code></pre>
<p> The default template parameters for multi_pass are: input_iterator InputPolicy,
ref_counted OwnershipPolicy, buf_id_check CheckingPolicy and std_deque StoragePolicy.
So if you use multi_pass<istream_iterator<char> > you will get those
@@ -229,7 +229,7 @@
This is standard practice in the STL. Also, it must supply a static variable
called eof which is compared against to know whether the input has reached the
end. Here is an example:</p>
-<pre> <code><span class="keyword">class </span><span class="identifier">my_functor<br> </span><span class="special">{<br> </span><span class="keyword">public</span><span class="special">:<br><br> </span><span class="keyword">typedef char </span><span class="identifier">result_type</span><span class="special">;<br><br> </span><span class="identifier">my_functor</span><span class="special">()<br> : </span><span class="identifier">c</span><span class="special">(</span><span class="literal">'A'</span><span class="special">) {}<br><br> </span><span class="keyword">char operator</span><span class="special">()() </span><span class="keyword">const<br> </span><span class="special">{<br> </span><span class="keyword">if </span><span class="special">(</span><span class="identifier">c </span><span class="special">== </span><span class="literal">'M'</span><span class="special">)<br> </span><span class="keyword">return </span><span class="identifier">eo
f</span><span class="special">;<br> </span><span class="keyword">else<br> return </span><span class="identifier">c</span><span class="special">++;<br> }<br><br> </span><span class="keyword">static </span><span class="identifier">result_type eof</span><span class="special">;<br><br> </span><span class="keyword">private</span><span class="special">:<br><br> </span><span class="keyword">char </span><span class="identifier">c</span><span class="special">;<br> };<br><br> </span><span class="identifier">my_functor</span><span class="special">::</span><span class="identifier">result_type my_functor</span><span class="special">::</span><span class="identifier">eof </span><span class="special">= </span><span class="literal">'\0'</span><span class="special">;<br><br> </span><span class="keyword">typedef </span><span class="identifier">multi_pass</span><span class="special"><<br> </span><span class="identifier">my_functor</span><span class="special">,
<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">functor_input</span><span class="special">,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">first_owner</span><span class="special">,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">no_check</span><span class="special">,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">std_deque<br> </span><span class="special">> </span><span class="identifier">functor_multi_pass_t</span><span class="special">;<br><br> </span><span class="identifier">functor_multi_pass_t first </span><span class="special">= </span><span class="identifier">functor_multi_pass_t</span><span class="special">(</span><span class="identifier">my_functor</span><span class="special">());<br>
</span><span class="identifier">functor_multi_pass_t last</span><span class="special">;<br></span></code></pre>
+<pre> <code><span class="keyword">class </span><span class="identifier">my_functor<br> </span><span class="special">{<br> </span><span class="keyword">public</span><span class="special">:<br><br> </span><span class="keyword">typedef char </span><span class="identifier">result_type</span><span class="special">;<br><br> </span><span class="identifier">my_functor</span><span class="special">()<br> : </span><span class="identifier">c</span><span class="special">(</span><span class="literal">'A'</span><span class="special">) {}<br><br> </span><span class="keyword">char operator</span><span class="special">()() </span><span class="keyword">const<br> </span><span class="special">{<br> </span><span class="keyword">if </span><span class="special">(</span><span class="identifier">c </span><span class="special">== </span><span class="literal">'M'</span><span class="special">)<br> </span><span class="keyword">return </span><span class="identifier">eo
f</span><span class="special">;<br> </span><span class="keyword">else<br> return </span><span class="identifier">c</span><span class="special">++;<br> }<br><br> </span><span class="keyword">static </span><span class="identifier">result_type eof</span><span class="special">;<br><br> </span><span class="keyword">private</span><span class="special">:<br><br> </span><span class="keyword">char </span><span class="identifier">c</span><span class="special">;<br> };<br><br> </span><span class="identifier">my_functor</span><span class="special">::</span><span class="identifier">result_type my_functor</span><span class="special">::</span><span class="identifier">eof </span><span class="special">= </span><span class="literal">'\0'</span><span class="special">;<br><br> </span><span class="keyword">typedef </span><span class="identifier">multi_pass</span><span class="special"><<br> </span><span class="identifier">my_functor</span><span class="special">,
<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">functor_input</span><span class="special">,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">first_owner</span><span class="special">,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">no_check</span><span class="special">,<br> </span><span class="identifier">multi_pass_policies</span><span class="special">::</span><span class="identifier">std_deque<br> </span><span class="special">> </span><span class="identifier">functor_multi_pass_type</span><span class="special">;<br><br> </span><span class="identifier">functor_multi_pass_type first </span><span class="special">= </span><span class="identifier">functor_multi_pass_type</span><span class="special">(</span><span class="identifier">my_functor</span><span class="special">
());<br> </span><span class="identifier">functor_multi_pass_type last</span><span class="special">;<br></span></code></pre>
<a name="how_to_write_policies_for_use_with_multi_pass"></a>
<h3>How to write policies for use with multi_pass</h3>
<a name="inputpolicy"></a>
Modified: branches/release/libs/spirit/doc/abstracts.qbk
==============================================================================
--- branches/release/libs/spirit/doc/abstracts.qbk (original)
+++ branches/release/libs/spirit/doc/abstracts.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -1,5 +1,5 @@
[/==============================================================================
- Copyright (C) 2001-2008 Joel de Guzman
+ Copyright (C) 2001-2009 Joel de Guzman
Copyright (C) 2001-2009 Hartmut Kaiser
Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -14,7 +14,7 @@
[/include abstracts/generating.qbk]
[/include abstracts/primitives.qbk]
[/include abstracts/operators.qbk]
-[/include abstracts/attributes.qbk]
+[include abstracts/attributes.qbk]
[/include abstracts/semantic_actions.qbk]
[/include abstracts/directives.qbk]
[/include abstracts/rules.qbk]
@@ -22,6 +22,8 @@
[/include abstracts/debugging.qbk]
[/include abstracts/error_handling.qbk]
[/include abstracts/parse_trees_and_asts.qbk]
+[include abstracts/indepth.qbk]
+[include abstracts/customization_points.qbk]
[endsect]
Modified: branches/release/libs/spirit/doc/abstracts/peg.qbk
==============================================================================
--- branches/release/libs/spirit/doc/abstracts/peg.qbk (original)
+++ branches/release/libs/spirit/doc/abstracts/peg.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -18,8 +18,7 @@
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 __ast__) for each PEG
-grammar.
+parse tree (see __ast__) for each PEG grammar.
[heading Sequences]
@@ -38,8 +37,8 @@
which means the character `x` must be followed by a digit.
-[note In Spirit.Qi, we use the `>>` for sequences since C++ does not
-allow juxtaposition]
+[note In __qi__, we use the `>>` for sequences since C++ does not
+allow juxtaposition, while in __karma__ we use the `<<` instead.]
[heading Alternatives]
@@ -47,7 +46,7 @@
a / b
-[note In Spirit.Qi, we use the `|` for alternatives just as in EBNF]
+[note In __qi__ and __karma__, we use the `|` for alternatives just as in EBNF.]
Alternatives allow for choices. The expression above reads: try to match
`a`. If `a` succeeds, success, if not try to match `b`. This is a bit of
@@ -69,8 +68,8 @@
a*
a+
-[note Spirit.Qi uses the prefix star and plus since there is no postfix
-star or plus in C++.]
+[note __qi__ and __karma__ use the prefix star and plus since there is no
+postfix star or plus in C++.]
Here are the syntax diagrams:
@@ -106,6 +105,9 @@
The expression reads: match `a` but not `b`.
+[note There is no difference operator in __karma__, as the concept does not
+make sense in the context of output generation.]
+
[endsect]
Modified: branches/release/libs/spirit/doc/abstracts/syntax_diagram.qbk
==============================================================================
--- branches/release/libs/spirit/doc/abstracts/syntax_diagram.qbk (original)
+++ branches/release/libs/spirit/doc/abstracts/syntax_diagram.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -21,6 +21,11 @@
representing __rd__ parsers which are essentially mutually recursive
functions.
+Parsing Expression Grammars historically have been used for describing grammars
+for parsers only (hence the name). In __spirit__ we use a very similar notation
+for output generation as well. Almost all the concepts described here are
+equally applicable to __qi__ parsers as they are for __karma__ generators.
+
[heading Elements]
All diagrams have one entry and exit point. Arrows connect all possible
Modified: branches/release/libs/spirit/doc/acknowledgments.qbk
==============================================================================
--- branches/release/libs/spirit/doc/acknowledgments.qbk (original)
+++ branches/release/libs/spirit/doc/acknowledgments.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -18,9 +18,18 @@
how to use Boost.Proto in the best possible way.
[*Ben Hanson] for providing us with an early version of his Lexertl library,
-which is proposed to be included into Boost (as Boost.Lexer), but at the time
+which is proposed to be included into Boost (as Boost.Lexer). At the time
of this writing the Boost review for this library is still pending.
+[*Francois Barel] for his silent but steady work on making and keeping Spirit
+compatible with all versions of gcc, older and newest ones. He not only
+contributed subrules to Spirit V2.1, but always keeps an eye on the small
+details which are so important to make a difference.
+
+[*Andreas Haberstroh] for proof reading the documentation and fixing those
+non-native-speaker-quirks we managed to introduce into the first versions of
+the documentation.
+
__fixme__: Add more people
Modified: branches/release/libs/spirit/doc/concepts_template.qbk
==============================================================================
--- branches/release/libs/spirit/doc/concepts_template.qbk (original)
+++ branches/release/libs/spirit/doc/concepts_template.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -1,3 +1,10 @@
+[/==============================================================================
+ Copyright (C) 2001-2009 Hartmut Kaiser
+ Copyright (C) 2001-2009 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+===============================================================================/]
[/------------------------------------------------------------------------------]
[section XXX]
Modified: branches/release/libs/spirit/doc/faq.qbk
==============================================================================
--- branches/release/libs/spirit/doc/faq.qbk (original)
+++ branches/release/libs/spirit/doc/faq.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -20,7 +20,7 @@
__spirit__ allows you to define a preprocessor constant disabling the usage
of `BOOST_MPL_ASSERT_MSG()`, while switching to `BOOST_STATIC_ASSERT()` instead.
-For that you need define BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG=1 (either by
+For that you need define BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG=1. Do this by
adding
-DBOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG=1
@@ -29,10 +29,10 @@
#define BOOST_SPIRIT_DONT_USE_MPL_ASSERT_MSG 1
-into your code before any spirit headers get included).
+into your code before any Spirit headers get included.
Using this trick has no adverse effects on any of the functionality of
-__spirit__. The only change you might see while using this workaround are less
+__spirit__. The only change you might see while using this workaround is less
verbose error messages generated from static_assert.
@@ -116,7 +116,7 @@
The last bit missing is __boost_phoenix__ (which currently still lives under the
Spirit umbrella, but already has been accepted as a Boost library, so it will
move away). __boost_phoenix__ is a library allowing to write functional style C++,
-which is interesting on itself, but as it initially has been developed for
+which is interesting in itself, but as it initially has been developed for
Spirit, it is nicely integrated and very useful when it comes to writing
semantic actions. I think using the boost/spirit/include/phoenix_... headers
will be safe in the future as well, as we will probably redirect to the
@@ -155,13 +155,13 @@
it does, it means that non-terminal can only be used with a skip parser of a
compatible type. The error above arises when this is not the case, i.e.:
-* a non-terminal defined with a skip parser type is used without a skip parser
- (for example, a rule with a skip parser type is used inside a `lexeme`
+* a non-terminal defined with a skip parser type is used without a skip parser;
+ for example, a rule with a skip parser type is used inside a `lexeme`
directive, or a grammar with a skip parser type is used in `parse` instead of
- `phrase_parse`),
-* or a non-terminal is used with a skip parser of an incompatible type
- (for example, a rule defined with one skip parser type calls a second rule
- defined with another, incompatible skip parser type).
+ `phrase_parse`,
+* or a non-terminal is used with a skip parser of an incompatible type;
+ for example, a rule defined with one skip parser type calls a second rule
+ defined with another, incompatible skip parser type.
[note The same applies to __karma__, replacing 'skip parser' and `lexeme`
by 'delimit generator' and `verbatim`. Similarily, corresponding error
Modified: branches/release/libs/spirit/doc/html/images/callouts/Thumbs.db
==============================================================================
Binary files. No diff available.
Modified: branches/release/libs/spirit/doc/html/images/lexerflow.png
==============================================================================
Binary files. No diff available.
Copied: branches/release/libs/spirit/doc/html/index.html (from r56618, /trunk/libs/spirit/doc/html/index.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/index.html (original)
+++ branches/release/libs/spirit/doc/html/index.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -34,7 +34,7 @@
<div><p class="copyright">Copyright © 2001-2009 Joel
de Guzman, Hartmut Kaiser</p></div>
<div><div class="legalnotice" title="Legal Notice">
-<a name="id546188"></a><p>
+<a name="id558455"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
</p>
@@ -244,7 +244,7 @@
</p>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: October 04, 2009 at 16:24:44 GMT</small></p></td>
+<td align="left"><p><small>Last revised: October 06, 2009 at 18:11:16 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
Copied: branches/release/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html (from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/abstracts/attributes/compound_attributes.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -136,7 +136,7 @@
Compound Attribute Rules</a>.
</p>
<a name="spirit.abstracts.attributes.compound_attributes.the_attribute_of_sequence_parsers_and_generators"></a><h6>
-<a name="id557755"></a>
+<a name="id570311"></a>
<a class="link" href="compound_attributes.html#spirit.abstracts.attributes.compound_attributes.the_attribute_of_sequence_parsers_and_generators">The
Attribute of Sequence Parsers and Generators</a>
</h6>
@@ -251,7 +251,7 @@
</td></tr>
</table></div>
<a name="spirit.abstracts.attributes.compound_attributes.the_attribute_of_alternative_parsers_and_generators"></a><h6>
-<a name="id558537"></a>
+<a name="id571093"></a>
<a class="link" href="compound_attributes.html#spirit.abstracts.attributes.compound_attributes.the_attribute_of_alternative_parsers_and_generators">The
Attribute of Alternative Parsers and Generators</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/abstracts/customize/is_container.html (from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/customize/is_container.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/abstracts/customize/is_container.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/abstracts/customize/is_container.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
if a Type Should be Treated as a Container (Qi and Karma)</a>
</h4></div></div></div>
<a name="spirit.abstracts.customize.is_container.is_container"></a><h6>
-<a name="id567125"></a>
+<a name="id579806"></a>
<a class="link" href="is_container.html#spirit.abstracts.customize.is_container.is_container">is_container</a>
</h6>
<p>
@@ -40,7 +40,7 @@
whether a supplied attribute can potentially be treated as a container.
</p>
<a name="spirit.abstracts.customize.is_container.header"></a><h6>
-<a name="id568409"></a>
+<a name="id581244"></a>
<a class="link" href="is_container.html#spirit.abstracts.customize.is_container.header">Header</a>
</h6>
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">home</span><span class="special">/</span><span class="identifier">support</span><span class="special">/</span><span class="identifier">container</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
@@ -60,7 +60,7 @@
</p></td></tr>
</table></div>
<a name="spirit.abstracts.customize.is_container.namespace"></a><h6>
-<a name="id568495"></a>
+<a name="id581330"></a>
<a class="link" href="is_container.html#spirit.abstracts.customize.is_container.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -77,14 +77,14 @@
</td></tr></tbody>
</table></div>
<a name="spirit.abstracts.customize.is_container.synopsis"></a><h6>
-<a name="id568568"></a>
+<a name="id581403"></a>
<a class="link" href="is_container.html#spirit.abstracts.customize.is_container.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">is_container</span><span class="special">;</span>
</pre>
<a name="spirit.abstracts.customize.is_container.template_parameters"></a><h6>
-<a name="id568635"></a>
+<a name="id581470"></a>
<a class="link" href="is_container.html#spirit.abstracts.customize.is_container.template_parameters">Template
parameters</a>
</h6>
@@ -153,7 +153,7 @@
</tbody>
</table></div>
<a name="spirit.abstracts.customize.is_container.notation"></a><h6>
-<a name="id568801"></a>
+<a name="id581636"></a>
<a class="link" href="is_container.html#spirit.abstracts.customize.is_container.notation">Notation</a>
</h6>
<div class="variablelist">
@@ -166,7 +166,7 @@
</dl>
</div>
<a name="spirit.abstracts.customize.is_container.expression_semantics"></a><h6>
-<a name="id568840"></a>
+<a name="id581675"></a>
<a class="link" href="is_container.html#spirit.abstracts.customize.is_container.expression_semantics">Expression
Semantics</a>
</h6>
@@ -205,7 +205,7 @@
</tr></tbody>
</table></div>
<a name="spirit.abstracts.customize.is_container.predefined_specializations"></a><h6>
-<a name="id568970"></a>
+<a name="id581805"></a>
<a class="link" href="is_container.html#spirit.abstracts.customize.is_container.predefined_specializations">Predefined
Specializations</a>
</h6>
@@ -282,7 +282,7 @@
</tbody>
</table></div>
<a name="spirit.abstracts.customize.is_container.related_attribute_customization_points"></a><h6>
-<a name="id569341"></a>
+<a name="id582176"></a>
<a class="link" href="is_container.html#spirit.abstracts.customize.is_container.related_attribute_customization_points">Related
Attribute Customization Points</a>
</h6>
@@ -435,7 +435,7 @@
</tbody>
</table></div>
<a name="spirit.abstracts.customize.is_container.example"></a><h6>
-<a name="id569857"></a>
+<a name="id582692"></a>
<a class="link" href="is_container.html#spirit.abstracts.customize.is_container.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/abstracts/customize/store_value/container_value.html (from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/customize/store_value/container_value.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/abstracts/customize/store_value/container_value.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/abstracts/customize/store_value/container_value.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Determine the Type to be stored in a Container (Qi)</a>
</h5></div></div></div>
<a name="spirit.abstracts.customize.store_value.container_value.container_value"></a><h6>
-<a name="id569936"></a>
+<a name="id582771"></a>
<a class="link" href="container_value.html#spirit.abstracts.customize.store_value.container_value.container_value">container_value</a>
</h6>
<p>
@@ -39,7 +39,7 @@
the type to store in a container.
</p>
<a name="spirit.abstracts.customize.store_value.container_value.module_headers"></a><h6>
-<a name="id569983"></a>
+<a name="id582818"></a>
<a class="link" href="container_value.html#spirit.abstracts.customize.store_value.container_value.module_headers">Module
Headers</a>
</h6>
@@ -60,7 +60,7 @@
</p></td></tr>
</table></div>
<a name="spirit.abstracts.customize.store_value.container_value.namespace"></a><h6>
-<a name="id570068"></a>
+<a name="id582903"></a>
<a class="link" href="container_value.html#spirit.abstracts.customize.store_value.container_value.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -77,14 +77,14 @@
</td></tr></tbody>
</table></div>
<a name="spirit.abstracts.customize.store_value.container_value.synopsis"></a><h6>
-<a name="id570143"></a>
+<a name="id582978"></a>
<a class="link" href="container_value.html#spirit.abstracts.customize.store_value.container_value.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Container</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Enable</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">container_value</span><span class="special">;</span>
</pre>
<a name="spirit.abstracts.customize.store_value.container_value.template_parameters"></a><h6>
-<a name="id570211"></a>
+<a name="id583046"></a>
<a class="link" href="container_value.html#spirit.abstracts.customize.store_value.container_value.template_parameters">Template
parameters</a>
</h6>
@@ -153,7 +153,7 @@
</tbody>
</table></div>
<a name="spirit.abstracts.customize.store_value.container_value.notation"></a><h6>
-<a name="id570376"></a>
+<a name="id583211"></a>
<a class="link" href="container_value.html#spirit.abstracts.customize.store_value.container_value.notation">Notation</a>
</h6>
<div class="variablelist">
@@ -166,7 +166,7 @@
</dl>
</div>
<a name="spirit.abstracts.customize.store_value.container_value.expression_semantics"></a><h6>
-<a name="id570416"></a>
+<a name="id583251"></a>
<a class="link" href="container_value.html#spirit.abstracts.customize.store_value.container_value.expression_semantics">Expression
Semantics</a>
</h6>
@@ -206,7 +206,7 @@
to represent a container.
</p>
<a name="spirit.abstracts.customize.store_value.container_value.predefined_specializations"></a><h6>
-<a name="id570520"></a>
+<a name="id583355"></a>
<a class="link" href="container_value.html#spirit.abstracts.customize.store_value.container_value.predefined_specializations">Predefined
Specializations</a>
</h6>
@@ -296,7 +296,7 @@
</tbody>
</table></div>
<a name="spirit.abstracts.customize.store_value.container_value.related_attribute_customization_points"></a><h6>
-<a name="id571410"></a>
+<a name="id584403"></a>
<a class="link" href="container_value.html#spirit.abstracts.customize.store_value.container_value.related_attribute_customization_points">Related
Attribute Customization Points</a>
</h6>
@@ -338,7 +338,7 @@
</tr></tbody>
</table></div>
<a name="spirit.abstracts.customize.store_value.container_value.example"></a><h6>
-<a name="id571507"></a>
+<a name="id584500"></a>
<a class="link" href="container_value.html#spirit.abstracts.customize.store_value.container_value.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/abstracts/indepth/parsers_indepth.html (from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/indepth/parsers_indepth.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/abstracts/indepth/parsers_indepth.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/abstracts/indepth/parsers_indepth.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -197,7 +197,7 @@
</dl>
</div>
<a name="spirit.abstracts.indepth.parsers_indepth.primitive_parsers"></a><h6>
-<a name="id562631"></a>
+<a name="id575307"></a>
<a class="link" href="parsers_indepth.html#spirit.abstracts.indepth.parsers_indepth.primitive_parsers">Primitive
Parsers</a>
</h6>
@@ -449,7 +449,7 @@
which does the actual work.
</p>
<a name="spirit.abstracts.indepth.parsers_indepth.composite_parsers"></a><h6>
-<a name="id564661"></a>
+<a name="id577337"></a>
<a class="link" href="parsers_indepth.html#spirit.abstracts.indepth.parsers_indepth.composite_parsers">Composite
Parsers</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html (from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/abstracts/parsing_expression_grammar.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,9 +29,9 @@
</h3></div></div></div>
<p>
Parsing Expression Grammars (PEG)
- <sup>[<a name="id555977" href="#ftn.id555977" class="footnote">5</a>]</sup>
+ <sup>[<a name="id568806" href="#ftn.id568806" class="footnote">5</a>]</sup>
are a derivative of Extended Backus-Naur Form (EBNF)
- <sup>[<a name="id555989" href="#ftn.id555989" class="footnote">6</a>]</sup>
+ <sup>[<a name="id568818" href="#ftn.id568818" class="footnote">6</a>]</sup>
with a different interpretation, designed to represent a recursive descent
parser. A PEG can be directly represented as a recursive-descent parser.
</p>
@@ -42,7 +42,7 @@
Abstract Syntax Tree) for each PEG grammar.
</p>
<a name="spirit.abstracts.parsing_expression_grammar.sequences"></a><h5>
-<a name="id556009"></a>
+<a name="id568838"></a>
<a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.sequences">Sequences</a>
</h5>
<p>
@@ -84,7 +84,7 @@
</p></td></tr>
</table></div>
<a name="spirit.abstracts.parsing_expression_grammar.alternatives"></a><h5>
-<a name="id556141"></a>
+<a name="id568970"></a>
<a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.alternatives">Alternatives</a>
</h5>
<p>
@@ -128,7 +128,7 @@
about this $$$).
</p>
<a name="spirit.abstracts.parsing_expression_grammar.loops"></a><h5>
-<a name="id556561"></a>
+<a name="id569117"></a>
<a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.loops">Loops</a>
</h5>
<p>
@@ -191,7 +191,7 @@
We will see more of these other mechanisms shortly.
</p>
<a name="spirit.abstracts.parsing_expression_grammar.difference"></a><h5>
-<a name="id556709"></a>
+<a name="id569265"></a>
<a class="link" href="parsing_expression_grammar.html#spirit.abstracts.parsing_expression_grammar.difference">Difference</a>
</h5>
<p>
@@ -217,11 +217,11 @@
</table></div>
<div class="footnotes">
<br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id555977" href="#id555977" class="para">5</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id568806" href="#id568806" class="para">5</a>] </sup>
Bryan Ford: Parsing Expression Grammars: A Recognition-Based Syntactic
Foundation, http://pdos.csail.mit.edu/~baford/packrat/popl04/
</p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id555989" href="#id555989" class="para">6</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id568818" href="#id568818" class="para">6</a>] </sup>
Richard E. Pattis: EBNF: A Notation to Describe Syntax, http://www.cs.cmu.edu/~pattis/misc/ebnf.pdf
</p></div>
</div>
Copied: branches/release/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html (from r56618, /trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/abstracts/syntax_diagram.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,13 +28,13 @@
</h3></div></div></div>
<p>
In the next section, we will deal with Parsing Expression Grammars (PEG)
- <sup>[<a name="id555534" href="#ftn.id555534" class="footnote">2</a>]</sup>
+ <sup>[<a name="id568363" href="#ftn.id568363" class="footnote">2</a>]</sup>
, a variant of Extended Backus-Naur Form (EBNF)
- <sup>[<a name="id555546" href="#ftn.id555546" class="footnote">3</a>]</sup>
+ <sup>[<a name="id568375" href="#ftn.id568375" class="footnote">3</a>]</sup>
with a different interpretation. It is easier to understand PEG using Syntax
Diagrams. Syntax diagrams represent a grammar graphically. It was used extensibly
by Niklaus Wirth
- <sup>[<a name="id555558" href="#ftn.id555558" class="footnote">4</a>]</sup>
+ <sup>[<a name="id568387" href="#ftn.id568387" class="footnote">4</a>]</sup>
in the "Pascal User Manual". Syntax Diagrams are easily understandable
with programmers due to its similarity to flow charts. The isomorphism of
the diagrams and functions make it ideal for representing Recursive Descent
@@ -48,7 +48,7 @@
parsers as they are for <span class="emphasis"><em>Spirit.Karma</em></span> generators.
</p>
<a name="spirit.abstracts.syntax_diagram.elements"></a><h5>
-<a name="id555585"></a>
+<a name="id568414"></a>
<a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.elements">Elements</a>
</h5>
<p>
@@ -92,7 +92,7 @@
</p>
</blockquote></div>
<a name="spirit.abstracts.syntax_diagram.constructs"></a><h5>
-<a name="id555685"></a>
+<a name="id568514"></a>
<a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.constructs">Constructs</a>
</h5>
<p>
@@ -163,7 +163,7 @@
This behavior is quite obvious with syntax diagrams as they resemble flow-charts.
</p>
<a name="spirit.abstracts.syntax_diagram.predicates"></a><h5>
-<a name="id555846"></a>
+<a name="id568675"></a>
<a class="link" href="syntax_diagram.html#spirit.abstracts.syntax_diagram.predicates">Predicates</a>
</h5>
<p>
@@ -218,14 +218,14 @@
</p>
<div class="footnotes">
<br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id555534" href="#id555534" class="para">2</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id568363" href="#id568363" class="para">2</a>] </sup>
Bryan Ford: Parsing Expression Grammars: A Recognition-Based Syntactic
Foundation, http://pdos.csail.mit.edu/~baford/packrat/popl04/
</p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id555546" href="#id555546" class="para">3</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id568375" href="#id568375" class="para">3</a>] </sup>
Richard E. Pattis: EBNF: A Notation to Describe Syntax, http://www.cs.cmu.edu/~pattis/misc/ebnf.pdf
</p></div>
-<div class="footnote"><p><sup>[<a name="ftn.id555558" href="#id555558" class="para">4</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id568387" href="#id568387" class="para">4</a>] </sup>
Niklaus Wirth: The Programming Language Pascal. (July 1973)
</p></div>
</div>
Copied: branches/release/libs/spirit/doc/html/spirit/acknowledgments.html (from r56618, /trunk/libs/spirit/doc/html/spirit/acknowledgments.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/acknowledgments.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/acknowledgments.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -58,7 +58,7 @@
<span class="bold"><strong>FIXME</strong></span>: Add more people
</p>
<a name="spirit.acknowledgments.acknowledgements_from_the_spirit_v1__emphasis_classic__emphasis__documentation"></a><h4>
-<a name="id887362"></a>
+<a name="id901224"></a>
<a class="link" href="acknowledgments.html#spirit.acknowledgments.acknowledgements_from_the_spirit_v1__emphasis_classic__emphasis__documentation">Acknowledgements
from the Spirit V1 <span class="emphasis"><em>classic</em></span> Documentation</a>
</h4>
Copied: branches/release/libs/spirit/doc/html/spirit/faq.html (from r56618, /trunk/libs/spirit/doc/html/spirit/faq.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/faq.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/faq.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.faq"></a><a class="link" href="faq.html" title="Spirit FAQ"> Spirit FAQ</a>
</h2></div></div></div>
<a name="spirit.faq.i_m_getting_multiple_symbol_definition_errors_while_using_visual_c____anything_i_could_do_about_that_"></a><h4>
-<a name="id878072"></a>
+<a name="id891355"></a>
<a class="link" href="faq.html#spirit.faq.i_m_getting_multiple_symbol_definition_errors_while_using_visual_c____anything_i_could_do_about_that_">I'm
getting multiple symbol definition errors while using Visual C++. Anything
I could do about that?</a>
@@ -64,7 +64,7 @@
static_assert.
</p>
<a name="spirit.faq.i_m_very_confused_about_the_header_hell_in_my_boost_spirit_directory__what_s_all_this_about_"></a><h4>
-<a name="id878242"></a>
+<a name="id891526"></a>
<a class="link" href="faq.html#spirit.faq.i_m_very_confused_about_the_header_hell_in_my_boost_spirit_directory__what_s_all_this_about_">I'm
very confused about the header hell in my boost/spirit directory. What's all
this about?</a>
@@ -172,7 +172,7 @@
are available.
</p>
<a name="spirit.faq.why_doesn_t_my_symbol_table_work_in_a__code__phrase_role__identifier__no_case__phrase___code__directive_"></a><h4>
-<a name="id878766"></a>
+<a name="id892050"></a>
<a class="link" href="faq.html#spirit.faq.why_doesn_t_my_symbol_table_work_in_a__code__phrase_role__identifier__no_case__phrase___code__directive_">Why
doesn't my symbol table work in a <code class="computeroutput"><span class="identifier">no_case</span></code>
directive?</a>
@@ -186,7 +186,7 @@
one or more uppercase characters will not match any input.
</p>
<a name="spirit.faq.i_m_getting_a_compilation_error_mentioning__code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function__phrase___code__and_or___________code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function4__phrase___code___what_does_this_mean_"></a><h4>
-<a name="id878837"></a>
+<a name="id892121"></a>
<a class="link" href="faq.html#spirit.faq.i_m_getting_a_compilation_error_mentioning__code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function__phrase___code__and_or___________code__phrase_role__identifier__boost__phrase__phrase_role__special______phrase__phrase_role__identifier__function4__phrase___code___what_does_this_mean_">I'm
getting a compilation error mentioning <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span></code>
and/or <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">function4</span></code>. What does this mean?</a>
Copied: branches/release/libs/spirit/doc/html/spirit/introduction.html (from r56618, /trunk/libs/spirit/doc/html/spirit/introduction.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/introduction.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/introduction.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -30,7 +30,7 @@
Boost Spirit is an object-oriented, recursive-descent parser and output generation
library for C++. It allows you to write grammars and format descriptions using
a format similar to Extended Backus Naur Form (EBNF)
- <sup>[<a name="id550068" href="#ftn.id550068" class="footnote">1</a>]</sup>
+ <sup>[<a name="id563977" href="#ftn.id563977" class="footnote">1</a>]</sup>
directly in C++. These inline grammar specifications can mix freely with other
C++ code and, thanks to the generative power of C++ templates, are immediately
executable. In retrospect, conventional compiler-compilers or parser-generators
@@ -135,7 +135,7 @@
<p><br class="figure-break">
</p>
<a name="spirit.introduction.a_quick_overview_of_parsing_with__emphasis_spirit_qi__emphasis_"></a><h4>
-<a name="id550285"></a>
+<a name="id564194"></a>
<a class="link" href="introduction.html#spirit.introduction.a_quick_overview_of_parsing_with__emphasis_spirit_qi__emphasis_">A
Quick Overview of Parsing with <span class="emphasis"><em>Spirit.Qi</em></span></a>
</h4>
@@ -226,7 +226,7 @@
<code class="computeroutput"><span class="special">;</span></code>.
</p>
<a name="spirit.introduction.a_quick_overview_of_output_generation_with__emphasis_spirit_karma__emphasis_"></a><h4>
-<a name="id551241"></a>
+<a name="id565150"></a>
<a class="link" href="introduction.html#spirit.introduction.a_quick_overview_of_output_generation_with__emphasis_spirit_karma__emphasis_">A
Quick Overview of Output Generation with <span class="emphasis"><em>Spirit.Karma</em></span></a>
</h4>
@@ -259,7 +259,7 @@
of the same <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">int</span><span class="special">></span></code>:
</p>
<div class="table">
-<a name="id554313"></a><p class="title"><b>Table 2. Different output formats for `std::vector<int>`</b></p>
+<a name="id567142"></a><p class="title"><b>Table 2. Different output formats for `std::vector<int>`</b></p>
<div class="table-contents"><table class="table" summary="Different output formats for `std::vector<int>`">
<colgroup>
<col>
@@ -378,7 +378,7 @@
next table gives some related examples.
</p>
<div class="table">
-<a name="id554697"></a><p class="title"><b>Table 3. Different data types usable with the output format
+<a name="id567526"></a><p class="title"><b>Table 3. Different data types usable with the output format
`*(int_ << eol)`</b></p>
<div class="table-contents"><table class="table" summary="Different data types usable with the output format
`*(int_ << eol)`">
@@ -452,7 +452,7 @@
</div>
<br class="table-break"><div class="footnotes">
<br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id550068" href="#id550068" class="para">1</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id563977" href="#id563977" class="para">1</a>] </sup>
<a href="http://www.cl.cam.ac.uk/%7Emgk25/iso-14977.pdf" target="_top">ISO-EBNF</a>
</p></div>
</div>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/double_performance.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -135,7 +135,7 @@
<a class="link" href="double_performance.html#spirit.karma.double_performance" title="Figure 4. Performance comparison for a single double">figure</a>.
</p>
<div class="table">
-<a name="id835406"></a><p class="title"><b>Table 6. Performance comparison for a single double (all
+<a name="id848684"></a><p class="title"><b>Table 6. Performance comparison for a single double (all
times in [s], 1000000 iterations)</b></p>
<div class="table-contents"><table class="table" summary="Performance comparison for a single double (all
times in [s], 1000000 iterations)">
Copied: branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/format_performance.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -155,7 +155,7 @@
<a class="link" href="format_performance.html#spirit.karma.format_performance" title="Figure 5. Performance comparison for a sequence of several items">figure</a>.
</p>
<div class="table">
-<a name="id838093"></a><p class="title"><b>Table 7. Performance comparison for a sequence of several
+<a name="id851389"></a><p class="title"><b>Table 7. Performance comparison for a sequence of several
items (all times in [s], 1000000 iterations)</b></p>
<div class="table-contents"><table class="table" summary="Performance comparison for a sequence of several
items (all times in [s], 1000000 iterations)">
Copied: branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/performance_measurements/numeric_performance/int_performance.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -125,7 +125,7 @@
<a class="link" href="int_performance.html#spirit.karma.int_performance" title="Figure 3. Performance comparison for a single int">figure</a>.
</p>
<div class="table">
-<a name="id834352"></a><p class="title"><b>Table 5. Performance comparison for a single int (all
+<a name="id847631"></a><p class="title"><b>Table 5. Performance comparison for a single int (all
times in [s], 10000000 iterations)</b></p>
<div class="table-contents"><table class="table" summary="Performance comparison for a single int (all
times in [s], 10000000 iterations)">
Copied: branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/quick_reference/compound_attribute_rules.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Attribute Rules</a>
</h4></div></div></div>
<a name="spirit.karma.quick_reference.compound_attribute_rules.notation"></a><h6>
-<a name="id713047"></a>
+<a name="id727021"></a>
<a class="link" href="compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.notation">Notation</a>
</h6>
<p>
@@ -77,7 +77,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.quick_reference.compound_attribute_rules.compound_generator_attribute_types"></a><h6>
-<a name="id714675"></a>
+<a name="id729741"></a>
<a class="link" href="compound_attribute_rules.html#spirit.karma.quick_reference.compound_attribute_rules.compound_generator_attribute_types">Compound
Generator Attribute Types</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -41,7 +41,7 @@
<code class="computeroutput"><span class="identifier">lazy</span></code> generators.
</p>
<a name="spirit.karma.reference.auxiliary.module_header"></a><h6>
-<a name="id781915"></a>
+<a name="id794457"></a>
<a class="link" href="auxiliary.html#spirit.karma.reference.auxiliary.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/auxiliary.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/attr_cast.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/attr_cast.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/attr_cast.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/attr_cast.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Transformation Pseudo Generator (<code class="computeroutput"><span class="identifier">attr_cast</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.auxiliary.attr_cast.description"></a><h6>
-<a name="id782006"></a>
+<a name="id795095"></a>
<a class="link" href="attr_cast.html#spirit.karma.reference.auxiliary.attr_cast.description">Description</a>
</h6>
<p>
@@ -39,7 +39,7 @@
using the customization point <code class="computeroutput"><span class="identifier">transform_attribute</span></code>.
</p>
<a name="spirit.karma.reference.auxiliary.attr_cast.header"></a><h6>
-<a name="id782602"></a>
+<a name="id795144"></a>
<a class="link" href="attr_cast.html#spirit.karma.reference.auxiliary.attr_cast.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/auxiliary/attr_cast.hpp>
@@ -49,7 +49,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.auxiliary.attr_cast.namespace"></a><h6>
-<a name="id782677"></a>
+<a name="id795219"></a>
<a class="link" href="attr_cast.html#spirit.karma.reference.auxiliary.attr_cast.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -67,7 +67,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.karma.reference.auxiliary.attr_cast.model_of"></a><h6>
-<a name="id782756"></a>
+<a name="id795298"></a>
<a class="link" href="attr_cast.html#spirit.karma.reference.auxiliary.attr_cast.model_of">Model
of</a>
</h6>
@@ -94,7 +94,7 @@
</dl>
</div>
<a name="spirit.karma.reference.auxiliary.attr_cast.expression_semantics"></a><h6>
-<a name="id782838"></a>
+<a name="id795380"></a>
<a class="link" href="attr_cast.html#spirit.karma.reference.auxiliary.attr_cast.expression_semantics">Expression
Semantics</a>
</h6>
@@ -136,7 +136,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.auxiliary.attr_cast.attributes"></a><h6>
-<a name="id782970"></a>
+<a name="id795512"></a>
<a class="link" href="attr_cast.html#spirit.karma.reference.auxiliary.attr_cast.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -170,7 +170,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.auxiliary.attr_cast.complexity"></a><h6>
-<a name="id783066"></a>
+<a name="id795608"></a>
<a class="link" href="attr_cast.html#spirit.karma.reference.auxiliary.attr_cast.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -184,7 +184,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.auxiliary.attr_cast.example"></a><h6>
-<a name="id783097"></a>
+<a name="id795639"></a>
<a class="link" href="attr_cast.html#spirit.karma.reference.auxiliary.attr_cast.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eol.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
(<code class="computeroutput"><span class="identifier">eol</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.auxiliary.eol.description"></a><h6>
-<a name="id784089"></a>
+<a name="id796631"></a>
<a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.description">Description</a>
</h6>
<p>
@@ -38,7 +38,7 @@
details).
</p>
<a name="spirit.karma.reference.auxiliary.eol.header"></a><h6>
-<a name="id784142"></a>
+<a name="id796684"></a>
<a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/auxiliary/eol.hpp>
@@ -48,7 +48,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.auxiliary.eol.namespace"></a><h6>
-<a name="id784216"></a>
+<a name="id796758"></a>
<a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -66,7 +66,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.karma.reference.auxiliary.eol.model_of"></a><h6>
-<a name="id784294"></a>
+<a name="id796836"></a>
<a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -79,7 +79,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.auxiliary.eol.expression_semantics"></a><h6>
-<a name="id784333"></a>
+<a name="id796875"></a>
<a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.expression_semantics">Expression
Semantics</a>
</h6>
@@ -120,7 +120,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.auxiliary.eol.attributes"></a><h6>
-<a name="id784422"></a>
+<a name="id796964"></a>
<a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -154,7 +154,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.auxiliary.eol.complexity"></a><h6>
-<a name="id784500"></a>
+<a name="id797042"></a>
<a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -171,7 +171,7 @@
output.
</p>
<a name="spirit.karma.reference.auxiliary.eol.example"></a><h6>
-<a name="id784527"></a>
+<a name="id797069"></a>
<a class="link" href="eol.html#spirit.karma.reference.auxiliary.eol.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/eps.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -33,7 +33,7 @@
or to insert semantic actions into the generation process.
</p>
<a name="spirit.karma.reference.auxiliary.eps.description"></a><h6>
-<a name="id786421"></a>
+<a name="id798895"></a>
<a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.description">Description</a>
</h6>
<p>
@@ -41,7 +41,7 @@
a multi-purpose generator that emits a yero length string.
</p>
<a name="spirit.karma.reference.auxiliary.eps.simple_form"></a><h6>
-<a name="id786445"></a>
+<a name="id798919"></a>
<a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.simple_form">Simple
Form</a>
</h6>
@@ -59,7 +59,7 @@
<pre class="programlisting"><span class="identifier">r</span> <span class="special">=</span> <span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span> <span class="special">|</span> <span class="identifier">c</span> <span class="special">|</span> <span class="identifier">eps</span><span class="special">[</span><span class="identifier">error</span><span class="special">()];</span> <span class="comment">// Call error if a, b, and c fail to generate
</span></pre>
<a name="spirit.karma.reference.auxiliary.eps.semantic_predicate"></a><h6>
-<a name="id786546"></a>
+<a name="id799020"></a>
<a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.semantic_predicate">Semantic
Predicate</a>
</h6>
@@ -89,7 +89,7 @@
the production will return early without ever touching rest.
</p>
<a name="spirit.karma.reference.auxiliary.eps.header"></a><h6>
-<a name="id786733"></a>
+<a name="id799207"></a>
<a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/auxiliary/eps.hpp>
@@ -99,7 +99,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.auxiliary.eps.namespace"></a><h6>
-<a name="id786808"></a>
+<a name="id799282"></a>
<a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -117,7 +117,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.karma.reference.auxiliary.eps.model_of"></a><h6>
-<a name="id786886"></a>
+<a name="id799360"></a>
<a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -144,7 +144,7 @@
</dl>
</div>
<a name="spirit.karma.reference.auxiliary.eps.expression_semantics"></a><h6>
-<a name="id786972"></a>
+<a name="id799446"></a>
<a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.expression_semantics">Expression
Semantics</a>
</h6>
@@ -213,7 +213,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.auxiliary.eps.attributes"></a><h6>
-<a name="id787159"></a>
+<a name="id799633"></a>
<a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -273,7 +273,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.auxiliary.eps.complexity"></a><h6>
-<a name="id787321"></a>
+<a name="id799795"></a>
<a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -289,7 +289,7 @@
The complexity is constant as no output is generated.
</p>
<a name="spirit.karma.reference.auxiliary.eps.example"></a><h6>
-<a name="id787349"></a>
+<a name="id799823"></a>
<a class="link" href="eps.html#spirit.karma.reference.auxiliary.eps.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/auxiliary/lazy.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.karma.reference.auxiliary.lazy"></a><a class="link" href="lazy.html" title="Lazy (lazy)"> Lazy (<code class="computeroutput"><span class="identifier">lazy</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.auxiliary.lazy.description"></a><h6>
-<a name="id788753"></a>
+<a name="id801364"></a>
<a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
its return value as the actual generator to produce the output.
</p>
<a name="spirit.karma.reference.auxiliary.lazy.header"></a><h6>
-<a name="id788777"></a>
+<a name="id801388"></a>
<a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/auxiliary/lazy.hpp>
@@ -47,7 +47,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.auxiliary.lazy.namespace"></a><h6>
-<a name="id788852"></a>
+<a name="id801462"></a>
<a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -65,7 +65,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.karma.reference.auxiliary.lazy.model_of"></a><h6>
-<a name="id788931"></a>
+<a name="id801541"></a>
<a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.model_of">Model
of</a>
</h6>
@@ -104,7 +104,7 @@
Actions</a>).
</p>
<a name="spirit.karma.reference.auxiliary.lazy.expression_semantics"></a><h6>
-<a name="id789082"></a>
+<a name="id801693"></a>
<a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.expression_semantics">Expression
Semantics</a>
</h6>
@@ -171,7 +171,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.auxiliary.lazy.attributes"></a><h6>
-<a name="id789235"></a>
+<a name="id801845"></a>
<a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -223,7 +223,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.auxiliary.lazy.complexity"></a><h6>
-<a name="id789383"></a>
+<a name="id801994"></a>
<a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.complexity">Complexity</a>
</h6>
<p>
@@ -232,7 +232,7 @@
<code class="computeroutput"><span class="identifier">fg</span></code>.
</p>
<a name="spirit.karma.reference.auxiliary.lazy.example"></a><h6>
-<a name="id789415"></a>
+<a name="id802025"></a>
<a class="link" href="lazy.html#spirit.karma.reference.auxiliary.lazy.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/binary.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/binary.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/binary.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/binary.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -41,7 +41,7 @@
to control padding of the generated output stream.
</p>
<a name="spirit.karma.reference.binary.module_header"></a><h6>
-<a name="id772176"></a>
+<a name="id784650"></a>
<a class="link" href="binary.html#spirit.karma.reference.binary.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/binary.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_big.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Big Endianness Generators</a>
</h5></div></div></div>
<a name="spirit.karma.reference.binary.binary_big.description"></a><h6>
-<a name="id778376"></a>
+<a name="id792010"></a>
<a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
byte order.
</p>
<a name="spirit.karma.reference.binary.binary_big.header"></a><h6>
-<a name="id778392"></a>
+<a name="id792027"></a>
<a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/binary.hpp>
@@ -47,7 +47,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.binary.binary_big.namespace"></a><h6>
-<a name="id778467"></a>
+<a name="id792101"></a>
<a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -93,7 +93,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.binary.binary_big.model_of"></a><h6>
-<a name="id778679"></a>
+<a name="id792314"></a>
<a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.model_of">Model
of</a>
</h6>
@@ -130,7 +130,7 @@
</dl>
</div>
<a name="spirit.karma.reference.binary.binary_big.expression_semantics"></a><h6>
-<a name="id779886"></a>
+<a name="id792428"></a>
<a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.expression_semantics">Expression
Semantics</a>
</h6>
@@ -249,7 +249,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.binary.binary_big.attributes"></a><h6>
-<a name="id780127"></a>
+<a name="id792669"></a>
<a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -348,7 +348,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.binary.binary_big.complexity"></a><h6>
-<a name="id780415"></a>
+<a name="id792957"></a>
<a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -361,7 +361,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.binary.binary_big.example"></a><h6>
-<a name="id780439"></a>
+<a name="id792981"></a>
<a class="link" href="binary_big.html#spirit.karma.reference.binary.binary_big.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_little.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Little Endianness Generators</a>
</h5></div></div></div>
<a name="spirit.karma.reference.binary.binary_little.description"></a><h6>
-<a name="id775969"></a>
+<a name="id788511"></a>
<a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
byte order.
</p>
<a name="spirit.karma.reference.binary.binary_little.header"></a><h6>
-<a name="id775986"></a>
+<a name="id788528"></a>
<a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/binary.hpp>
@@ -47,7 +47,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.binary.binary_little.namespace"></a><h6>
-<a name="id776060"></a>
+<a name="id788602"></a>
<a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -93,7 +93,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.binary.binary_little.model_of"></a><h6>
-<a name="id776270"></a>
+<a name="id788812"></a>
<a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.model_of">Model
of</a>
</h6>
@@ -130,7 +130,7 @@
</dl>
</div>
<a name="spirit.karma.reference.binary.binary_little.expression_semantics"></a><h6>
-<a name="id776382"></a>
+<a name="id788924"></a>
<a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.expression_semantics">Expression
Semantics</a>
</h6>
@@ -249,7 +249,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.binary.binary_little.attributes"></a><h6>
-<a name="id776621"></a>
+<a name="id790256"></a>
<a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -348,7 +348,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.binary.binary_little.complexity"></a><h6>
-<a name="id776909"></a>
+<a name="id790544"></a>
<a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -361,7 +361,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.binary.binary_little.example"></a><h6>
-<a name="id776933"></a>
+<a name="id790568"></a>
<a class="link" href="binary_little.html#spirit.karma.reference.binary.binary_little.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/binary/binary_native.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Native Endianness Generators</a>
</h5></div></div></div>
<a name="spirit.karma.reference.binary.binary_native.description"></a><h6>
-<a name="id772260"></a>
+<a name="id784734"></a>
<a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
(byte order) of the target architecture.
</p>
<a name="spirit.karma.reference.binary.binary_native.header"></a><h6>
-<a name="id772277"></a>
+<a name="id784750"></a>
<a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/binary.hpp>
@@ -47,7 +47,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.binary.binary_native.namespace"></a><h6>
-<a name="id772351"></a>
+<a name="id784825"></a>
<a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -99,7 +99,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.binary.binary_native.model_of"></a><h6>
-<a name="id772602"></a>
+<a name="id785076"></a>
<a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.model_of">Model
of</a>
</h6>
@@ -141,7 +141,7 @@
</dl>
</div>
<a name="spirit.karma.reference.binary.binary_native.expression_semantics"></a><h6>
-<a name="id772737"></a>
+<a name="id785211"></a>
<a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.expression_semantics">Expression
Semantics</a>
</h6>
@@ -288,7 +288,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.binary.binary_native.attributes"></a><h6>
-<a name="id773035"></a>
+<a name="id785509"></a>
<a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -425,7 +425,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.binary.binary_native.complexity"></a><h6>
-<a name="id773489"></a>
+<a name="id785962"></a>
<a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -438,7 +438,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.binary.binary_native.example"></a><h6>
-<a name="id773513"></a>
+<a name="id785986"></a>
<a class="link" href="binary_native.html#spirit.karma.reference.binary.binary_native.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/char.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/char.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/char.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/char.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -42,7 +42,7 @@
<code class="computeroutput"><span class="identifier">xdigit</span></code>, etc.).
</p>
<a name="spirit.karma.reference.char.module_header"></a><h6>
-<a name="id726950"></a>
+<a name="id739965"></a>
<a class="link" href="char.html#spirit.karma.reference.char.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/char.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_class.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
<code class="computeroutput"><span class="identifier">digit</span></code>, etc.)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.char.char_class.description"></a><h6>
-<a name="id731425"></a>
+<a name="id744173"></a>
<a class="link" href="char_class.html#spirit.karma.reference.char.char_class.description">Description</a>
</h6>
<p>
@@ -41,7 +41,7 @@
such as forcing lower or upper case.
</p>
<a name="spirit.karma.reference.char.char_class.header"></a><h6>
-<a name="id731475"></a>
+<a name="id746681"></a>
<a class="link" href="char_class.html#spirit.karma.reference.char.char_class.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/char/char_class.hpp>
@@ -51,7 +51,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.char.char_class.namespace"></a><h6>
-<a name="id734008"></a>
+<a name="id746756"></a>
<a class="link" href="char_class.html#spirit.karma.reference.char.char_class.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -132,7 +132,7 @@
and will not compile if no attribute is associated.
</p>
<a name="spirit.karma.reference.char.char_class.model_of"></a><h6>
-<a name="id734374"></a>
+<a name="id747122"></a>
<a class="link" href="char_class.html#spirit.karma.reference.char.char_class.model_of">Model
of</a>
</h6>
@@ -156,7 +156,7 @@
</dl>
</div>
<a name="spirit.karma.reference.char.char_class.expression_semantics"></a><h6>
-<a name="id734442"></a>
+<a name="id747190"></a>
<a class="link" href="char_class.html#spirit.karma.reference.char.char_class.expression_semantics">Expression
Semantics</a>
</h6>
@@ -407,7 +407,7 @@
</td></tr>
</table></div>
<a name="spirit.karma.reference.char.char_class.attributes"></a><h6>
-<a name="id735374"></a>
+<a name="id748121"></a>
<a class="link" href="char_class.html#spirit.karma.reference.char.char_class.attributes">Attributes</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -435,7 +435,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.char.char_class.complexity"></a><h6>
-<a name="id735498"></a>
+<a name="id748246"></a>
<a class="link" href="char_class.html#spirit.karma.reference.char.char_class.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -452,7 +452,7 @@
per invocation.
</p>
<a name="spirit.karma.reference.char.char_class.example"></a><h6>
-<a name="id735526"></a>
+<a name="id748274"></a>
<a class="link" href="char_class.html#spirit.karma.reference.char.char_class.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/char/char_generator.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Generators (<code class="computeroutput"><span class="identifier">char_</span></code>, <code class="computeroutput"><span class="identifier">lit</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.char.char_generator.description"></a><h6>
-<a name="id727048"></a>
+<a name="id740063"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.description">Description</a>
</h6>
<p>
@@ -45,7 +45,7 @@
There are various forms of <code class="computeroutput"><span class="identifier">char_</span></code>.
</p>
<a name="spirit.karma.reference.char.char_generator.char_"></a><h6>
-<a name="id727099"></a>
+<a name="id740113"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.char_">char_</a>
</h6>
<p>
@@ -56,7 +56,7 @@
<pre class="programlisting"><span class="identifier">char_</span> <span class="comment">// emits any character as supplied by the attribute
</span></pre>
<a name="spirit.karma.reference.char.char_generator.char__ch_"></a><h6>
-<a name="id727139"></a>
+<a name="id740154"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.char__ch_">char_(ch)</a>
</h6>
<p>
@@ -68,7 +68,7 @@
</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="comment">// emits x (a char)
</span></pre>
<a name="spirit.karma.reference.char.char_generator.char__first__last_"></a><h6>
-<a name="id727231"></a>
+<a name="id740245"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.char__first__last_">char_(first,
last)</a>
</h6>
@@ -120,7 +120,7 @@
</td></tr>
</table></div>
<a name="spirit.karma.reference.char.char_generator.char__def_"></a><h6>
-<a name="id727413"></a>
+<a name="id740428"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.char__def_">char_(def)</a>
</h6>
<p>
@@ -140,7 +140,7 @@
by the attribute.
</p>
<a name="spirit.karma.reference.char.char_generator.lit_ch_"></a><h6>
-<a name="id727529"></a>
+<a name="id740544"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.lit_ch_">lit(ch)</a>
</h6>
<p>
@@ -180,7 +180,7 @@
<span class="identifier">lit</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="comment">// c is a char
</span></pre>
<a name="spirit.karma.reference.char.char_generator.header"></a><h6>
-<a name="id727707"></a>
+<a name="id740722"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/char/char.hpp>
@@ -190,7 +190,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.char.char_generator.namespace"></a><h6>
-<a name="id727781"></a>
+<a name="id740796"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -220,7 +220,7 @@
Encoding Namespace</a>.
</p>
<a name="spirit.karma.reference.char.char_generator.model_of"></a><h6>
-<a name="id727900"></a>
+<a name="id740915"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.model_of">Model
of</a>
</h6>
@@ -267,7 +267,7 @@
</dl>
</div>
<a name="spirit.karma.reference.char.char_generator.expression_semantics"></a><h6>
-<a name="id728054"></a>
+<a name="id741069"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.expression_semantics">Expression
Semantics</a>
</h6>
@@ -516,7 +516,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.char.char_generator.attributes"></a><h6>
-<a name="id728841"></a>
+<a name="id741856"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -675,7 +675,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.char.char_generator.complexity"></a><h6>
-<a name="id729780"></a>
+<a name="id742528"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -704,7 +704,7 @@
set, where N is the number of characters in the character set.
</p>
<a name="spirit.karma.reference.char.char_generator.example"></a><h6>
-<a name="id729963"></a>
+<a name="id742711"></a>
<a class="link" href="char_generator.html#spirit.karma.reference.char.char_generator.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/directive.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -50,7 +50,7 @@
controlling case sensitivity (<code class="computeroutput"><span class="identifier">upper</span><span class="special">[]</span></code> and <code class="computeroutput"><span class="identifier">lower</span><span class="special">[]</span></code>), field width (<code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">[]</span></code>), buffering (<code class="computeroutput"><span class="identifier">buffer</span><span class="special">[]</span></code>), and attribute handling (<code class="computeroutput"><span class="identifier">omit</span><span class="special">[]</span></code>).
</p>
<a name="spirit.karma.reference.directive.module_header"></a><h6>
-<a name="id790781"></a>
+<a name="id803392"></a>
<a class="link" href="directive.html#spirit.karma.reference.directive.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/alignment.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Directives (<code class="computeroutput"><span class="identifier">left_align</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">center</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">right_align</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.directive.alignment.description"></a><h6>
-<a name="id790910"></a>
+<a name="id804613"></a>
<a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
an arbitrary generator to create the padding.
</p>
<a name="spirit.karma.reference.directive.alignment.header"></a><h6>
-<a name="id790927"></a>
+<a name="id804630"></a>
<a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.header">Header</a>
</h6>
<p>
@@ -65,7 +65,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.directive.alignment.namespace"></a><h6>
-<a name="id791150"></a>
+<a name="id804853"></a>
<a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -97,7 +97,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.directive.alignment.model_of"></a><h6>
-<a name="id791306"></a>
+<a name="id805009"></a>
<a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.model_of">Model
of</a>
</h6>
@@ -136,7 +136,7 @@
</dl>
</div>
<a name="spirit.karma.reference.directive.alignment.expression_semantics"></a><h6>
-<a name="id791456"></a>
+<a name="id805159"></a>
<a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.expression_semantics">Expression
Semantics</a>
</h6>
@@ -417,7 +417,7 @@
</td></tr>
</table></div>
<a name="spirit.karma.reference.directive.alignment.attributes"></a><h6>
-<a name="id792496"></a>
+<a name="id806199"></a>
<a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.attributes">Attributes</a>
</h6>
<p>
@@ -640,7 +640,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.directive.alignment.complexity"></a><h6>
-<a name="id795827"></a>
+<a name="id808284"></a>
<a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -658,7 +658,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.directive.alignment.example"></a><h6>
-<a name="id795858"></a>
+<a name="id808315"></a>
<a class="link" href="alignment.html#spirit.karma.reference.directive.alignment.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/buffer.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Output Buffering (<code class="computeroutput"><span class="identifier">buffer</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.directive.buffer.description"></a><h6>
-<a name="id809385"></a>
+<a name="id821586"></a>
<a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.description">Description</a>
</h6>
<p>
@@ -43,7 +43,7 @@
discarded otherwise.
</p>
<a name="spirit.karma.reference.directive.buffer.header"></a><h6>
-<a name="id809414"></a>
+<a name="id821615"></a>
<a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/buffer.hpp>
@@ -67,7 +67,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.karma.reference.directive.buffer.model_of"></a><h6>
-<a name="id809554"></a>
+<a name="id821755"></a>
<a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.model_of">Model
of</a>
</h6>
@@ -94,7 +94,7 @@
</dl>
</div>
<a name="spirit.karma.reference.directive.buffer.expression_semantics"></a><h6>
-<a name="id809643"></a>
+<a name="id821844"></a>
<a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.expression_semantics">Expression
Semantics</a>
</h6>
@@ -150,7 +150,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.directive.buffer.attributes"></a><h6>
-<a name="id809816"></a>
+<a name="id822017"></a>
<a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.attributes">Attributes</a>
</h6>
<p>
@@ -192,7 +192,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.directive.buffer.complexity"></a><h6>
-<a name="id809987"></a>
+<a name="id822188"></a>
<a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -207,7 +207,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.directive.buffer.example"></a><h6>
-<a name="id810011"></a>
+<a name="id822212"></a>
<a class="link" href="buffer.html#spirit.karma.reference.directive.buffer.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/delimit.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Controlling Automatic Delimiting (<code class="computeroutput"><span class="identifier">verbatim</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">delimit</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.directive.delimit.description"></a><h6>
-<a name="id801444"></a>
+<a name="id813986"></a>
<a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
while the directive <code class="computeroutput"><span class="identifier">delimit</span><span class="special">[]</span></code> (re-)enables automatic delimiting.
</p>
<a name="spirit.karma.reference.directive.delimit.header"></a><h6>
-<a name="id801504"></a>
+<a name="id814046"></a>
<a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.header">Header</a>
</h6>
<p>
@@ -58,7 +58,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.directive.delimit.namespace"></a><h6>
-<a name="id801660"></a>
+<a name="id814202"></a>
<a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -84,7 +84,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.directive.delimit.model_of"></a><h6>
-<a name="id801778"></a>
+<a name="id814320"></a>
<a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.model_of">Model
of</a>
</h6>
@@ -118,7 +118,7 @@
</dl>
</div>
<a name="spirit.karma.reference.directive.delimit.expression_semantics"></a><h6>
-<a name="id801904"></a>
+<a name="id814446"></a>
<a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.expression_semantics">Expression
Semantics</a>
</h6>
@@ -194,7 +194,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.directive.delimit.attributes"></a><h6>
-<a name="id802138"></a>
+<a name="id814680"></a>
<a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.attributes">Attributes</a>
</h6>
<p>
@@ -270,7 +270,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.directive.delimit.complexity"></a><h6>
-<a name="id802593"></a>
+<a name="id815135"></a>
<a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -286,7 +286,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.directive.delimit.example"></a><h6>
-<a name="id802638"></a>
+<a name="id815180"></a>
<a class="link" href="delimit.html#spirit.karma.reference.directive.delimit.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/maxwidth.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
the Maximum Field Wield (<code class="computeroutput"><span class="identifier">maxwidth</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.directive.maxwidth.description"></a><h6>
-<a name="id806612"></a>
+<a name="id819905"></a>
<a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
generated by the embedded generator.
</p>
<a name="spirit.karma.reference.directive.maxwidth.header"></a><h6>
-<a name="id806640"></a>
+<a name="id819933"></a>
<a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/maxwidth.hpp>
@@ -61,7 +61,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.karma.reference.directive.maxwidth.model_of"></a><h6>
-<a name="id806780"></a>
+<a name="id820073"></a>
<a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.model_of">Model
of</a>
</h6>
@@ -93,7 +93,7 @@
</dl>
</div>
<a name="spirit.karma.reference.directive.maxwidth.expression_semantics"></a><h6>
-<a name="id806893"></a>
+<a name="id820186"></a>
<a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.expression_semantics">Expression
Semantics</a>
</h6>
@@ -182,7 +182,7 @@
</td></tr>
</table></div>
<a name="spirit.karma.reference.directive.maxwidth.attributes"></a><h6>
-<a name="id807158"></a>
+<a name="id820451"></a>
<a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.attributes">Attributes</a>
</h6>
<p>
@@ -242,7 +242,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.directive.maxwidth.complexity"></a><h6>
-<a name="id807465"></a>
+<a name="id820758"></a>
<a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -258,7 +258,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.directive.maxwidth.example"></a><h6>
-<a name="id807507"></a>
+<a name="id820800"></a>
<a class="link" href="maxwidth.html#spirit.karma.reference.directive.maxwidth.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/omit.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
(<code class="computeroutput"><span class="identifier">omit</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.directive.omit.description"></a><h6>
-<a name="id810975"></a>
+<a name="id823176"></a>
<a class="link" href="omit.html#spirit.karma.reference.directive.omit.description">Description</a>
</h6>
<p>
@@ -36,7 +36,7 @@
any output.
</p>
<a name="spirit.karma.reference.directive.omit.header"></a><h6>
-<a name="id810992"></a>
+<a name="id823193"></a>
<a class="link" href="omit.html#spirit.karma.reference.directive.omit.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/omit.hpp>
@@ -60,7 +60,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.karma.reference.directive.omit.model_of"></a><h6>
-<a name="id811132"></a>
+<a name="id823333"></a>
<a class="link" href="omit.html#spirit.karma.reference.directive.omit.model_of">Model
of</a>
</h6>
@@ -87,7 +87,7 @@
</dl>
</div>
<a name="spirit.karma.reference.directive.omit.expression_semantics"></a><h6>
-<a name="id811221"></a>
+<a name="id823422"></a>
<a class="link" href="omit.html#spirit.karma.reference.directive.omit.expression_semantics">Expression
Semantics</a>
</h6>
@@ -128,7 +128,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.directive.omit.attributes"></a><h6>
-<a name="id811335"></a>
+<a name="id823536"></a>
<a class="link" href="omit.html#spirit.karma.reference.directive.omit.attributes">Attributes</a>
</h6>
<p>
@@ -170,7 +170,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.directive.omit.complexity"></a><h6>
-<a name="id811523"></a>
+<a name="id825908"></a>
<a class="link" href="omit.html#spirit.karma.reference.directive.omit.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -184,7 +184,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.directive.omit.example"></a><h6>
-<a name="id811554"></a>
+<a name="id825939"></a>
<a class="link" href="omit.html#spirit.karma.reference.directive.omit.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/repeat.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Directive (<code class="computeroutput"><span class="identifier">repeat</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.directive.repeat.description"></a><h6>
-<a name="id797485"></a>
+<a name="id809959"></a>
<a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.description">Description</a>
</h6>
<p>
@@ -52,7 +52,7 @@
</li>
</ul></div>
<a name="spirit.karma.reference.directive.repeat.header"></a><h6>
-<a name="id797534"></a>
+<a name="id810008"></a>
<a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/repeat.hpp>
@@ -62,7 +62,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.directive.repeat.namespace"></a><h6>
-<a name="id797609"></a>
+<a name="id810082"></a>
<a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -88,7 +88,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.directive.repeat.model_of"></a><h6>
-<a name="id797725"></a>
+<a name="id810199"></a>
<a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.model_of">Model
of</a>
</h6>
@@ -120,7 +120,7 @@
</dl>
</div>
<a name="spirit.karma.reference.directive.repeat.expression_semantics"></a><h6>
-<a name="id797847"></a>
+<a name="id810321"></a>
<a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.expression_semantics">Expression
Semantics</a>
</h6>
@@ -237,7 +237,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.directive.repeat.attributes"></a><h6>
-<a name="id798263"></a>
+<a name="id810736"></a>
<a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.attributes">Attributes</a>
</h6>
<p>
@@ -385,7 +385,7 @@
</td></tr>
</table></div>
<a name="spirit.karma.reference.directive.repeat.complexity"></a><h6>
-<a name="id799139"></a>
+<a name="id811612"></a>
<a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -400,7 +400,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.directive.repeat.example"></a><h6>
-<a name="id799163"></a>
+<a name="id811636"></a>
<a class="link" href="repeat.html#spirit.karma.reference.directive.repeat.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/directive/upperlower.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Controlling Case Sensitivity (<code class="computeroutput"><span class="identifier">upper</span><span class="special">[]</span></code>, <code class="computeroutput"><span class="identifier">lower</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.directive.upperlower.description"></a><h6>
-<a name="id804439"></a>
+<a name="id816708"></a>
<a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.description">Description</a>
</h6>
<p>
@@ -38,7 +38,7 @@
Encoding Namespace</a>).
</p>
<a name="spirit.karma.reference.directive.upperlower.header"></a><h6>
-<a name="id804503"></a>
+<a name="id816772"></a>
<a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/directive/upper_lower_case.hpp>
@@ -48,7 +48,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.directive.upperlower.namespace"></a><h6>
-<a name="id804578"></a>
+<a name="id816847"></a>
<a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -77,7 +77,7 @@
Encoding Namespace</a>.
</p>
<a name="spirit.karma.reference.directive.upperlower.model_of"></a><h6>
-<a name="id804685"></a>
+<a name="id816954"></a>
<a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.model_of">Model
of</a>
</h6>
@@ -109,7 +109,7 @@
</dl>
</div>
<a name="spirit.karma.reference.directive.upperlower.expression_semantics"></a><h6>
-<a name="id804803"></a>
+<a name="id817072"></a>
<a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.expression_semantics">Expression
Semantics</a>
</h6>
@@ -219,7 +219,7 @@
</td></tr>
</table></div>
<a name="spirit.karma.reference.directive.upperlower.attributes"></a><h6>
-<a name="id805405"></a>
+<a name="id817674"></a>
<a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.attributes">Attributes</a>
</h6>
<p>
@@ -279,7 +279,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.directive.upperlower.complexity"></a><h6>
-<a name="id805733"></a>
+<a name="id818002"></a>
<a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -296,7 +296,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.directive.upperlower.example"></a><h6>
-<a name="id805793"></a>
+<a name="id818062"></a>
<a class="link" href="upperlower.html#spirit.karma.reference.directive.upperlower.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/binarygenerator.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.karma.reference.generator_concepts.binarygenerator"></a><a class="link" href="binarygenerator.html" title="BinaryGenerator">BinaryGenerator</a>
</h5></div></div></div>
<a name="spirit.karma.reference.generator_concepts.binarygenerator.description"></a><h6>
-<a name="id722568"></a>
+<a name="id735501"></a>
<a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.description">Description</a>
</h6>
<p>
@@ -39,7 +39,7 @@
Design Pattern.
</p>
<a name="spirit.karma.reference.generator_concepts.binarygenerator.refinement_of"></a><h6>
-<a name="id722615"></a>
+<a name="id735548"></a>
<a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.refinement_of">Refinement
of</a>
</h6>
@@ -66,7 +66,7 @@
</dl>
</div>
<a name="spirit.karma.reference.generator_concepts.binarygenerator.valid_expressions"></a><h6>
-<a name="id722692"></a>
+<a name="id735625"></a>
<a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.valid_expressions">Valid
Expressions</a>
</h6>
@@ -135,7 +135,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.generator_concepts.binarygenerator.type_expressions"></a><h6>
-<a name="id722854"></a>
+<a name="id735787"></a>
<a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.type_expressions">Type
Expressions</a>
</h6>
@@ -200,7 +200,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.generator_concepts.binarygenerator.invariants"></a><h6>
-<a name="id723053"></a>
+<a name="id735986"></a>
<a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.invariants">Invariants</a>
</h6>
<p>
@@ -216,7 +216,7 @@
</li>
</ul></div>
<a name="spirit.karma.reference.generator_concepts.binarygenerator.models"></a><h6>
-<a name="id723190"></a>
+<a name="id736123"></a>
<a class="link" href="binarygenerator.html#spirit.karma.reference.generator_concepts.binarygenerator.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/generator.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.karma.reference.generator_concepts.generator"></a><a class="link" href="generator.html" title="Generator">Generator</a>
</h5></div></div></div>
<a name="spirit.karma.reference.generator_concepts.generator.description"></a><h6>
-<a name="id719512"></a>
+<a name="id733537"></a>
<a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.description">Description</a>
</h6>
<p>
@@ -81,7 +81,7 @@
</dl>
</div>
<a name="spirit.karma.reference.generator_concepts.generator.valid_expressions"></a><h6>
-<a name="id719767"></a>
+<a name="id733792"></a>
<a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.valid_expressions">Valid
Expressions</a>
</h6>
@@ -164,7 +164,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.generator_concepts.generator.type_expressions"></a><h6>
-<a name="id720027"></a>
+<a name="id734053"></a>
<a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.type_expressions">Type
Expressions</a>
</h6>
@@ -231,7 +231,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.generator_concepts.generator.postcondition"></a><h6>
-<a name="id721385"></a>
+<a name="id734318"></a>
<a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.postcondition">Postcondition</a>
</h6>
<p>
@@ -253,7 +253,7 @@
</li>
</ul></div>
<a name="spirit.karma.reference.generator_concepts.generator.models"></a><h6>
-<a name="id721455"></a>
+<a name="id734388"></a>
<a class="link" href="generator.html#spirit.karma.reference.generator_concepts.generator.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/narygenerator.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.karma.reference.generator_concepts.narygenerator"></a><a class="link" href="narygenerator.html" title="NaryGenerator">NaryGenerator</a>
</h5></div></div></div>
<a name="spirit.karma.reference.generator_concepts.narygenerator.description"></a><h6>
-<a name="id723245"></a>
+<a name="id736178"></a>
<a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
Design Pattern.
</p>
<a name="spirit.karma.reference.generator_concepts.narygenerator.refinement_of"></a><h6>
-<a name="id723276"></a>
+<a name="id736209"></a>
<a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.refinement_of">Refinement
of</a>
</h6>
@@ -64,7 +64,7 @@
</dl>
</div>
<a name="spirit.karma.reference.generator_concepts.narygenerator.valid_expressions"></a><h6>
-<a name="id723562"></a>
+<a name="id737601"></a>
<a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.valid_expressions">Valid
Expressions</a>
</h6>
@@ -115,7 +115,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.generator_concepts.narygenerator.type_expressions"></a><h6>
-<a name="id723682"></a>
+<a name="id737721"></a>
<a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.type_expressions">Type
Expressions</a>
</h6>
@@ -168,7 +168,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.generator_concepts.narygenerator.invariants"></a><h6>
-<a name="id723849"></a>
+<a name="id737887"></a>
<a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.invariants">Invariants</a>
</h6>
<p>
@@ -180,7 +180,7 @@
<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_generator</span><span class="special"><</span><span class="identifier">E</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
</li></ul></div>
<a name="spirit.karma.reference.generator_concepts.narygenerator.models"></a><h6>
-<a name="id723934"></a>
+<a name="id737973"></a>
<a class="link" href="narygenerator.html#spirit.karma.reference.generator_concepts.narygenerator.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/primitivegenerator.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.karma.reference.generator_concepts.primitivegenerator"></a><a class="link" href="primitivegenerator.html" title="PrimitiveGenerator">PrimitiveGenerator</a>
</h5></div></div></div>
<a name="spirit.karma.reference.generator_concepts.primitivegenerator.description"></a><h6>
-<a name="id721497"></a>
+<a name="id734430"></a>
<a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.description">Description</a>
</h6>
<p>
@@ -35,7 +35,7 @@
that the client uses to build more complex generators.
</p>
<a name="spirit.karma.reference.generator_concepts.primitivegenerator.refinement_of"></a><h6>
-<a name="id721517"></a>
+<a name="id734450"></a>
<a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.refinement_of">Refinement
of</a>
</h6>
@@ -49,7 +49,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.generator_concepts.primitivegenerator.post_delimit"></a><h6>
-<a name="id721551"></a>
+<a name="id734484"></a>
<a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.post_delimit">Post-delimit</a>
</h6>
<p>
@@ -62,7 +62,7 @@
<pre class="programlisting"><span class="identifier">karma</span><span class="special">::</span><span class="identifier">delimit_out</span><span class="special">(</span><span class="identifier">sink</span><span class="special">,</span> <span class="identifier">delimit</span><span class="special">);</span>
</pre>
<a name="spirit.karma.reference.generator_concepts.primitivegenerator.type_expressions"></a><h6>
-<a name="id721624"></a>
+<a name="id734557"></a>
<a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.type_expressions">Type
Expressions</a>
</h6>
@@ -101,7 +101,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.generator_concepts.primitivegenerator.models"></a><h6>
-<a name="id721758"></a>
+<a name="id734691"></a>
<a class="link" href="primitivegenerator.html#spirit.karma.reference.generator_concepts.primitivegenerator.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/generator_concepts/unarygenerator.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.karma.reference.generator_concepts.unarygenerator"></a><a class="link" href="unarygenerator.html" title="UnaryGenerator">UnaryGenerator</a>
</h5></div></div></div>
<a name="spirit.karma.reference.generator_concepts.unarygenerator.description"></a><h6>
-<a name="id721850"></a>
+<a name="id734782"></a>
<a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.description">Description</a>
</h6>
<p>
@@ -36,7 +36,7 @@
following the Delegate Design Pattern.
</p>
<a name="spirit.karma.reference.generator_concepts.unarygenerator.refinement_of"></a><h6>
-<a name="id721870"></a>
+<a name="id734803"></a>
<a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.refinement_of">Refinement
of</a>
</h6>
@@ -63,7 +63,7 @@
</dl>
</div>
<a name="spirit.karma.reference.generator_concepts.unarygenerator.valid_expressions"></a><h6>
-<a name="id721947"></a>
+<a name="id734880"></a>
<a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.valid_expressions">Valid
Expressions</a>
</h6>
@@ -113,7 +113,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.generator_concepts.unarygenerator.type_expressions"></a><h6>
-<a name="id722062"></a>
+<a name="id734995"></a>
<a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.type_expressions">Type
Expressions</a>
</h6>
@@ -166,7 +166,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.generator_concepts.unarygenerator.invariants"></a><h6>
-<a name="id722228"></a>
+<a name="id735160"></a>
<a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.invariants">Invariants</a>
</h6>
<p>
@@ -177,7 +177,7 @@
<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_generator</span><span class="special"><</span><span class="identifier">G</span><span class="special">::</span><span class="identifier">subject_type</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
</li></ul></div>
<a name="spirit.karma.reference.generator_concepts.unarygenerator.models"></a><h6>
-<a name="id722313"></a>
+<a name="id735246"></a>
<a class="link" href="unarygenerator.html#spirit.karma.reference.generator_concepts.unarygenerator.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/karma_basics.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/karma_basics.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/karma_basics.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/karma_basics.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.karma.reference.karma_basics"></a><a class="link" href="karma_basics.html" title="Basics"> Basics</a>
</h4></div></div></div>
<a name="spirit.karma.reference.karma_basics.lazy_argument"></a><h6>
-<a name="id724008"></a>
+<a name="id738047"></a>
<a class="link" href="karma_basics.html#spirit.karma.reference.karma_basics.lazy_argument">Lazy
Argument</a>
</h6>
@@ -53,7 +53,7 @@
Actions</a>).
</p>
<a name="spirit.karma.reference.karma_basics.character_encoding_namespace"></a><h6>
-<a name="id724149"></a>
+<a name="id738187"></a>
<a class="link" href="karma_basics.html#spirit.karma.reference.karma_basics.character_encoding_namespace">Character
Encoding Namespace</a>
</h6>
@@ -114,7 +114,7 @@
</li>
</ul></div>
<a name="spirit.karma.reference.karma_basics.examples"></a><h6>
-<a name="id724332"></a>
+<a name="id738371"></a>
<a class="link" href="karma_basics.html#spirit.karma.reference.karma_basics.examples">Examples</a>
</h6>
<p>
@@ -210,7 +210,7 @@
<p>
</p>
<a name="spirit.karma.reference.karma_basics.models"></a><h6>
-<a name="id725703"></a>
+<a name="id739815"></a>
<a class="link" href="karma_basics.html#spirit.karma.reference.karma_basics.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -58,7 +58,7 @@
tight generic C++ code that rivals, if not surpasses C.
</p>
<a name="spirit.karma.reference.numeric.module_header"></a><h6>
-<a name="id739487"></a>
+<a name="id753320"></a>
<a class="link" href="numeric.html#spirit.karma.reference.numeric.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/numeric.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/boolean.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/boolean.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/boolean.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/boolean.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Generators (<code class="computeroutput"><span class="identifier">bool_</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.numeric.boolean.description"></a><h6>
-<a name="id760612"></a>
+<a name="id774314"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.description">Description</a>
</h6>
<p>
@@ -42,7 +42,7 @@
a template class. Template parameters fine tune its behavior.
</p>
<a name="spirit.karma.reference.numeric.boolean.header"></a><h6>
-<a name="id760666"></a>
+<a name="id774368"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/numeric/bool.hpp>
@@ -52,7 +52,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.numeric.boolean.namespace"></a><h6>
-<a name="id760740"></a>
+<a name="id774443"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -93,7 +93,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.numeric.boolean.synopsis"></a><h6>
-<a name="id760881"></a>
+<a name="id775676"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
@@ -102,7 +102,7 @@
<span class="keyword">struct</span> <span class="identifier">bool_generator</span><span class="special">;</span>
</pre>
<a name="spirit.karma.reference.numeric.boolean.template_parameters"></a><h6>
-<a name="id760950"></a>
+<a name="id775745"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.template_parameters">Template
parameters</a>
</h6>
@@ -167,7 +167,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.numeric.boolean.model_of"></a><h6>
-<a name="id761091"></a>
+<a name="id775886"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.model_of">Model
of</a>
</h6>
@@ -197,7 +197,7 @@
</dl>
</div>
<a name="spirit.karma.reference.numeric.boolean.expression_semantics"></a><h6>
-<a name="id761196"></a>
+<a name="id775991"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.expression_semantics">Expression
Semantics</a>
</h6>
@@ -352,7 +352,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.numeric.boolean.additional_requirements"></a><h6>
-<a name="id761654"></a>
+<a name="id776449"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.additional_requirements">Additional
Requirements</a>
</h6>
@@ -368,7 +368,7 @@
must be (safely) convertible to <code class="computeroutput"><span class="keyword">bool</span></code>
</li></ul></div>
<a name="spirit.karma.reference.numeric.boolean.attributes"></a><h6>
-<a name="id761732"></a>
+<a name="id776527"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -483,7 +483,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.numeric.boolean.boolean_formatting_policies"></a><h6>
-<a name="id762106"></a>
+<a name="id776901"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.boolean_formatting_policies">Boolean
Formatting Policies</a>
</h6>
@@ -517,7 +517,7 @@
default for <code class="computeroutput"><span class="identifier">B</span></code> is <code class="computeroutput"><span class="keyword">bool</span></code>.
</p>
<a name="spirit.karma.reference.numeric.boolean.booelan_formatting_policy_expression_semantics"></a><h6>
-<a name="id762528"></a>
+<a name="id777323"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.booelan_formatting_policy_expression_semantics">Booelan
Formatting Policy Expression Semantics</a>
</h6>
@@ -668,7 +668,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.numeric.boolean.complexity"></a><h6>
-<a name="id764849"></a>
+<a name="id778142"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -682,7 +682,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.numeric.boolean.example"></a><h6>
-<a name="id764880"></a>
+<a name="id778173"></a>
<a class="link" href="boolean.html#spirit.karma.reference.numeric.boolean.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/real_number.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
<code class="computeroutput"><span class="identifier">double_</span></code>, etc.)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.numeric.real_number.description"></a><h6>
-<a name="id750859"></a>
+<a name="id765040"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.description">Description</a>
</h6>
<p>
@@ -43,7 +43,7 @@
see <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.additional_requirements">below</a>).
</p>
<a name="spirit.karma.reference.numeric.real_number.header"></a><h6>
-<a name="id750902"></a>
+<a name="id765083"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/numeric/real.hpp>
@@ -53,7 +53,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.numeric.real_number.namespace"></a><h6>
-<a name="id750977"></a>
+<a name="id765157"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -106,14 +106,14 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.numeric.real_number.synopsis"></a><h6>
-<a name="id751194"></a>
+<a name="id765374"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Num</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">RealPolicies</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">real_generator</span><span class="special">;</span>
</pre>
<a name="spirit.karma.reference.numeric.real_number.template_parameters"></a><h6>
-<a name="id751261"></a>
+<a name="id765442"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.template_parameters">Template
parameters</a>
</h6>
@@ -182,7 +182,7 @@
see <a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.real_number_formatting_policies">below</a>).
</p>
<a name="spirit.karma.reference.numeric.real_number.model_of"></a><h6>
-<a name="id751417"></a>
+<a name="id765598"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.model_of">Model
of</a>
</h6>
@@ -211,7 +211,7 @@
</dl>
</div>
<a name="spirit.karma.reference.numeric.real_number.expression_semantics"></a><h6>
-<a name="id751519"></a>
+<a name="id765700"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.expression_semantics">Expression
Semantics</a>
</h6>
@@ -359,7 +359,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.numeric.real_number.additional_requirements"></a><h6>
-<a name="id752063"></a>
+<a name="id766243"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.additional_requirements">Additional
Requirements</a>
</h6>
@@ -398,7 +398,7 @@
</li>
</ul></div>
<a name="spirit.karma.reference.numeric.real_number.attributes"></a><h6>
-<a name="id752372"></a>
+<a name="id766553"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -569,7 +569,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.numeric.real_number.real_number_formatting_policies"></a><h6>
-<a name="id752917"></a>
+<a name="id769464"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.real_number_formatting_policies">Real
Number Formatting Policies</a>
</h6>
@@ -601,7 +601,7 @@
will be used as the attribute type of the created real number generator.
</p>
<a name="spirit.karma.reference.numeric.real_number.real_number_formatting_policy_expression_semantics"></a><h6>
-<a name="id754477"></a>
+<a name="id769818"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.real_number_formatting_policy_expression_semantics">Real
Number Formatting Policy Expression Semantics</a>
</h6>
@@ -1121,7 +1121,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.numeric.real_number.complexity"></a><h6>
-<a name="id759266"></a>
+<a name="id772969"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -1135,7 +1135,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.numeric.real_number.example"></a><h6>
-<a name="id759298"></a>
+<a name="id773000"></a>
<a class="link" href="real_number.html#spirit.karma.reference.numeric.real_number.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/signed_int.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
etc.)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.numeric.signed_int.description"></a><h6>
-<a name="id745293"></a>
+<a name="id760491"></a>
<a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.description">Description</a>
</h6>
<p>
@@ -48,7 +48,7 @@
the requirements, see <a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.additional_requirements">below</a>).
</p>
<a name="spirit.karma.reference.numeric.signed_int.header"></a><h6>
-<a name="id745361"></a>
+<a name="id760560"></a>
<a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/numeric/int.hpp>
@@ -58,7 +58,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.numeric.signed_int.namespace"></a><h6>
-<a name="id745436"></a>
+<a name="id760634"></a>
<a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -130,7 +130,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.numeric.signed_int.synopsis"></a><h6>
-<a name="id745743"></a>
+<a name="id760941"></a>
<a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
@@ -140,7 +140,7 @@
<span class="keyword">struct</span> <span class="identifier">int_generator</span><span class="special">;</span>
</pre>
<a name="spirit.karma.reference.numeric.signed_int.template_parameters"></a><h6>
-<a name="id745827"></a>
+<a name="id761025"></a>
<a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.template_parameters">Template
parameters</a>
</h6>
@@ -224,7 +224,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.numeric.signed_int.model_of"></a><h6>
-<a name="id745994"></a>
+<a name="id761192"></a>
<a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.model_of">Model
of</a>
</h6>
@@ -268,7 +268,7 @@
</dl>
</div>
<a name="spirit.karma.reference.numeric.signed_int.expression_semantics"></a><h6>
-<a name="id746180"></a>
+<a name="id761378"></a>
<a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.expression_semantics">Expression
Semantics</a>
</h6>
@@ -445,7 +445,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.numeric.signed_int.additional_requirements"></a><h6>
-<a name="id746814"></a>
+<a name="id762013"></a>
<a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.additional_requirements">Additional
Requirements</a>
</h6>
@@ -501,7 +501,7 @@
</li>
</ul></div>
<a name="spirit.karma.reference.numeric.signed_int.attributes"></a><h6>
-<a name="id748925"></a>
+<a name="id763106"></a>
<a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -700,7 +700,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.numeric.signed_int.complexity"></a><h6>
-<a name="id749567"></a>
+<a name="id763748"></a>
<a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -714,7 +714,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.numeric.signed_int.example"></a><h6>
-<a name="id749598"></a>
+<a name="id763779"></a>
<a class="link" href="signed_int.html#spirit.karma.reference.numeric.signed_int.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/numeric/unsigned_int.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
etc.)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.numeric.unsigned_int.description"></a><h6>
-<a name="id739578"></a>
+<a name="id753411"></a>
<a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.description">Description</a>
</h6>
<p>
@@ -44,7 +44,7 @@
a template class. Template parameters fine tune its behavior.
</p>
<a name="spirit.karma.reference.numeric.unsigned_int.header"></a><h6>
-<a name="id739628"></a>
+<a name="id753461"></a>
<a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/numeric/uint.hpp>
@@ -54,7 +54,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.numeric.unsigned_int.namespace"></a><h6>
-<a name="id739703"></a>
+<a name="id753536"></a>
<a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -145,7 +145,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.numeric.unsigned_int.synopsis"></a><h6>
-<a name="id740128"></a>
+<a name="id753961"></a>
<a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
@@ -154,7 +154,7 @@
<span class="keyword">struct</span> <span class="identifier">uint_generator</span><span class="special">;</span>
</pre>
<a name="spirit.karma.reference.numeric.unsigned_int.template_parameters"></a><h6>
-<a name="id740197"></a>
+<a name="id754030"></a>
<a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.template_parameters">Template
parameters</a>
</h6>
@@ -220,7 +220,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.numeric.unsigned_int.model_of"></a><h6>
-<a name="id740324"></a>
+<a name="id754157"></a>
<a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.model_of">Model
of</a>
</h6>
@@ -258,7 +258,7 @@
</dl>
</div>
<a name="spirit.karma.reference.numeric.unsigned_int.expression_semantics"></a><h6>
-<a name="id740476"></a>
+<a name="id754309"></a>
<a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.expression_semantics">Expression
Semantics</a>
</h6>
@@ -466,7 +466,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.numeric.unsigned_int.additional_requirements"></a><h6>
-<a name="id742255"></a>
+<a name="id756082"></a>
<a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.additional_requirements">Additional
Requirements</a>
</h6>
@@ -520,7 +520,7 @@
</li>
</ul></div>
<a name="spirit.karma.reference.numeric.unsigned_int.attributes"></a><h6>
-<a name="id742669"></a>
+<a name="id756496"></a>
<a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -759,7 +759,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.numeric.unsigned_int.complexity"></a><h6>
-<a name="id743463"></a>
+<a name="id757290"></a>
<a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -773,7 +773,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.numeric.unsigned_int.example"></a><h6>
-<a name="id743494"></a>
+<a name="id757321"></a>
<a class="link" href="unsigned_int.html#spirit.karma.reference.numeric.unsigned_int.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/operator.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -57,7 +57,7 @@
and the <span class="emphasis"><em>not</em></span> predicate (unary <code class="computeroutput"><span class="special">!</span></code>).
</p>
<a name="spirit.karma.reference.operator.module_header"></a><h6>
-<a name="id812954"></a>
+<a name="id827340"></a>
<a class="link" href="operator.html#spirit.karma.reference.operator.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/alternative.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
<span class="identifier">b</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.operator.alternative.description"></a><h6>
-<a name="id817183"></a>
+<a name="id830476"></a>
<a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.description">Description</a>
</h6>
<p>
@@ -38,7 +38,7 @@
from left to right until one of them succeeds.
</p>
<a name="spirit.karma.reference.operator.alternative.header"></a><h6>
-<a name="id817200"></a>
+<a name="id830493"></a>
<a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/alternative.hpp>
@@ -48,7 +48,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.operator.alternative.model_of"></a><h6>
-<a name="id817275"></a>
+<a name="id830568"></a>
<a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.model_of">Model
of</a>
</h6>
@@ -62,7 +62,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.alternative.expression_semantics"></a><h6>
-<a name="id817308"></a>
+<a name="id830601"></a>
<a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.expression_semantics">Expression
Semantics</a>
</h6>
@@ -114,7 +114,7 @@
an element succeeded.
</p>
<a name="spirit.karma.reference.operator.alternative.attributes"></a><h6>
-<a name="id817420"></a>
+<a name="id830713"></a>
<a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.attributes">Attributes</a>
</h6>
<p>
@@ -181,7 +181,7 @@
an example of this behavior.
</p>
<a name="spirit.karma.reference.operator.alternative.complexity"></a><h6>
-<a name="id817939"></a>
+<a name="id831232"></a>
<a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -197,7 +197,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.alternative.example"></a><h6>
-<a name="id817963"></a>
+<a name="id831256"></a>
<a class="link" href="alternative.html#spirit.karma.reference.operator.alternative.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/and_predicate.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Predicate (<code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.operator.and_predicate.description"></a><h6>
-<a name="id828439"></a>
+<a name="id842827"></a>
<a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
succeeds.
</p>
<a name="spirit.karma.reference.operator.and_predicate.header"></a><h6>
-<a name="id828458"></a>
+<a name="id842846"></a>
<a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/and_predicate.hpp>
@@ -47,7 +47,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.operator.and_predicate.model_of"></a><h6>
-<a name="id828532"></a>
+<a name="id842921"></a>
<a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.model_of">Model
of</a>
</h6>
@@ -61,7 +61,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.and_predicate.expression_semantics"></a><h6>
-<a name="id828568"></a>
+<a name="id842957"></a>
<a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.expression_semantics">Expression
Semantics</a>
</h6>
@@ -108,7 +108,7 @@
its embedded generator into a discarding device.
</p>
<a name="spirit.karma.reference.operator.and_predicate.attributes"></a><h6>
-<a name="id828672"></a>
+<a name="id843060"></a>
<a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.attributes">Attributes</a>
</h6>
<p>
@@ -161,7 +161,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.operator.and_predicate.complexity"></a><h6>
-<a name="id828820"></a>
+<a name="id843209"></a>
<a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -176,7 +176,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.and_predicate.example"></a><h6>
-<a name="id828847"></a>
+<a name="id843235"></a>
<a class="link" href="and_predicate.html#spirit.karma.reference.operator.and_predicate.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/kleene.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
(<code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.operator.kleene.description"></a><h6>
-<a name="id819323"></a>
+<a name="id832616"></a>
<a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
generator, the Kleene star generator always succeeds.
</p>
<a name="spirit.karma.reference.operator.kleene.header"></a><h6>
-<a name="id819340"></a>
+<a name="id832633"></a>
<a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/kleene.hpp>
@@ -47,7 +47,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.operator.kleene.model_of"></a><h6>
-<a name="id819414"></a>
+<a name="id832707"></a>
<a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.model_of">Model
of</a>
</h6>
@@ -61,7 +61,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.kleene.expression_semantics"></a><h6>
-<a name="id819453"></a>
+<a name="id832746"></a>
<a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.expression_semantics">Expression
Semantics</a>
</h6>
@@ -115,7 +115,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.operator.kleene.attributes"></a><h6>
-<a name="id819567"></a>
+<a name="id832860"></a>
<a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.attributes">Attributes</a>
</h6>
<p>
@@ -218,7 +218,7 @@
</td></tr>
</table></div>
<a name="spirit.karma.reference.operator.kleene.complexity"></a><h6>
-<a name="id819906"></a>
+<a name="id833199"></a>
<a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -235,7 +235,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.kleene.example"></a><h6>
-<a name="id819930"></a>
+<a name="id833223"></a>
<a class="link" href="kleene.html#spirit.karma.reference.operator.kleene.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/list.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/list.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/list.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/list.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.karma.reference.operator.list"></a><a class="link" href="list.html" title="Lists (a % b)"> Lists (<code class="computeroutput"><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.operator.list.description"></a><h6>
-<a name="id824148"></a>
+<a name="id838667"></a>
<a class="link" href="list.html#spirit.karma.reference.operator.list.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
at least once.
</p>
<a name="spirit.karma.reference.operator.list.header"></a><h6>
-<a name="id824165"></a>
+<a name="id838684"></a>
<a class="link" href="list.html#spirit.karma.reference.operator.list.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/list.hpp>
@@ -47,7 +47,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.operator.list.model_of"></a><h6>
-<a name="id824239"></a>
+<a name="id838758"></a>
<a class="link" href="list.html#spirit.karma.reference.operator.list.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -60,7 +60,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.list.expression_semantics"></a><h6>
-<a name="id824278"></a>
+<a name="id838796"></a>
<a class="link" href="list.html#spirit.karma.reference.operator.list.expression_semantics">Expression
Semantics</a>
</h6>
@@ -127,7 +127,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.operator.list.attributes"></a><h6>
-<a name="id824490"></a>
+<a name="id839009"></a>
<a class="link" href="list.html#spirit.karma.reference.operator.list.attributes">Attributes</a>
</h6>
<p>
@@ -217,7 +217,7 @@
</td></tr>
</table></div>
<a name="spirit.karma.reference.operator.list.complexity"></a><h6>
-<a name="id824832"></a>
+<a name="id839351"></a>
<a class="link" href="list.html#spirit.karma.reference.operator.list.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -233,7 +233,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.list.example"></a><h6>
-<a name="id824856"></a>
+<a name="id839375"></a>
<a class="link" href="list.html#spirit.karma.reference.operator.list.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/not_predicate.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Predicate (<code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.operator.not_predicate.description"></a><h6>
-<a name="id832094"></a>
+<a name="id845373"></a>
<a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
fails.
</p>
<a name="spirit.karma.reference.operator.not_predicate.header"></a><h6>
-<a name="id832113"></a>
+<a name="id845392"></a>
<a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/not_predicate.hpp>
@@ -47,7 +47,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.operator.not_predicate.model_of"></a><h6>
-<a name="id832188"></a>
+<a name="id845467"></a>
<a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.model_of">Model
of</a>
</h6>
@@ -61,7 +61,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.not_predicate.expression_semantics"></a><h6>
-<a name="id832224"></a>
+<a name="id845503"></a>
<a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.expression_semantics">Expression
Semantics</a>
</h6>
@@ -108,7 +108,7 @@
its embedded generator into a discarding device.
</p>
<a name="spirit.karma.reference.operator.not_predicate.attributes"></a><h6>
-<a name="id832327"></a>
+<a name="id845606"></a>
<a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.attributes">Attributes</a>
</h6>
<p>
@@ -161,7 +161,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.operator.not_predicate.complexity"></a><h6>
-<a name="id832476"></a>
+<a name="id845755"></a>
<a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -176,7 +176,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.not_predicate.example"></a><h6>
-<a name="id832502"></a>
+<a name="id845781"></a>
<a class="link" href="not_predicate.html#spirit.karma.reference.operator.not_predicate.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/optional.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
(<code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.operator.optional.description"></a><h6>
-<a name="id825723"></a>
+<a name="id840241"></a>
<a class="link" href="optional.html#spirit.karma.reference.operator.optional.description">Description</a>
</h6>
<p>
@@ -36,7 +36,7 @@
It succeeds always.
</p>
<a name="spirit.karma.reference.operator.optional.header"></a><h6>
-<a name="id825739"></a>
+<a name="id840258"></a>
<a class="link" href="optional.html#spirit.karma.reference.operator.optional.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/optional.hpp>
@@ -46,7 +46,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.operator.optional.model_of"></a><h6>
-<a name="id825814"></a>
+<a name="id840332"></a>
<a class="link" href="optional.html#spirit.karma.reference.operator.optional.model_of">Model
of</a>
</h6>
@@ -60,7 +60,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.optional.expression_semantics"></a><h6>
-<a name="id825852"></a>
+<a name="id840371"></a>
<a class="link" href="optional.html#spirit.karma.reference.operator.optional.expression_semantics">Expression
Semantics</a>
</h6>
@@ -102,7 +102,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.operator.optional.attributes"></a><h6>
-<a name="id825952"></a>
+<a name="id840470"></a>
<a class="link" href="optional.html#spirit.karma.reference.operator.optional.attributes">Attributes</a>
</h6>
<p>
@@ -189,7 +189,7 @@
</td></tr>
</table></div>
<a name="spirit.karma.reference.operator.optional.complexity"></a><h6>
-<a name="id827511"></a>
+<a name="id841900"></a>
<a class="link" href="optional.html#spirit.karma.reference.operator.optional.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -204,7 +204,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.optional.example"></a><h6>
-<a name="id827535"></a>
+<a name="id841924"></a>
<a class="link" href="optional.html#spirit.karma.reference.operator.optional.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/plus.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.karma.reference.operator.plus"></a><a class="link" href="plus.html" title="Plus (+a)"> Plus (<code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.operator.plus.description"></a><h6>
-<a name="id822113"></a>
+<a name="id835265"></a>
<a class="link" href="plus.html#spirit.karma.reference.operator.plus.description">Description</a>
</h6>
<p>
@@ -36,7 +36,7 @@
executed at least once.
</p>
<a name="spirit.karma.reference.operator.plus.header"></a><h6>
-<a name="id822130"></a>
+<a name="id835282"></a>
<a class="link" href="plus.html#spirit.karma.reference.operator.plus.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/plus.hpp>
@@ -46,7 +46,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.operator.plus.model_of"></a><h6>
-<a name="id822204"></a>
+<a name="id835356"></a>
<a class="link" href="plus.html#spirit.karma.reference.operator.plus.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -59,7 +59,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.plus.expression_semantics"></a><h6>
-<a name="id822242"></a>
+<a name="id835394"></a>
<a class="link" href="plus.html#spirit.karma.reference.operator.plus.expression_semantics">Expression
Semantics</a>
</h6>
@@ -116,7 +116,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.operator.plus.attributes"></a><h6>
-<a name="id822367"></a>
+<a name="id835519"></a>
<a class="link" href="plus.html#spirit.karma.reference.operator.plus.attributes">Attributes</a>
</h6>
<p>
@@ -219,7 +219,7 @@
</td></tr>
</table></div>
<a name="spirit.karma.reference.operator.plus.complexity"></a><h6>
-<a name="id822707"></a>
+<a name="id835859"></a>
<a class="link" href="plus.html#spirit.karma.reference.operator.plus.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -235,7 +235,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.plus.example"></a><h6>
-<a name="id822731"></a>
+<a name="id835883"></a>
<a class="link" href="plus.html#spirit.karma.reference.operator.plus.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/operator/sequence.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
<span class="identifier">b</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.operator.sequence.description"></a><h6>
-<a name="id813055"></a>
+<a name="id827440"></a>
<a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.description">Description</a>
</h6>
<p>
@@ -38,7 +38,7 @@
to right as long as they succeed.
</p>
<a name="spirit.karma.reference.operator.sequence.header"></a><h6>
-<a name="id813072"></a>
+<a name="id827457"></a>
<a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator/sequence.hpp>
@@ -48,7 +48,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.operator.sequence.model_of"></a><h6>
-<a name="id813146"></a>
+<a name="id827532"></a>
<a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.model_of">Model
of</a>
</h6>
@@ -62,7 +62,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.sequence.expression_semantics"></a><h6>
-<a name="id813182"></a>
+<a name="id827568"></a>
<a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.expression_semantics">Expression
Semantics</a>
</h6>
@@ -134,7 +134,7 @@
</td></tr>
</table></div>
<a name="spirit.karma.reference.operator.sequence.attributes"></a><h6>
-<a name="id813365"></a>
+<a name="id827750"></a>
<a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.attributes">Attributes</a>
</h6>
<p>
@@ -212,7 +212,7 @@
the attribute supplied
</p>
<a name="spirit.karma.reference.operator.sequence.complexity"></a><h6>
-<a name="id816375"></a>
+<a name="id829668"></a>
<a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -227,7 +227,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.operator.sequence.example"></a><h6>
-<a name="id816399"></a>
+<a name="id829692"></a>
<a class="link" href="sequence.html#spirit.karma.reference.operator.sequence.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/stream.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/stream.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/stream.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/stream.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -35,7 +35,7 @@
for output generation.
</p>
<a name="spirit.karma.reference.stream.header"></a><h6>
-<a name="id766161"></a>
+<a name="id779454"></a>
<a class="link" href="stream.html#spirit.karma.reference.stream.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/stream.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/stream/stream.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
etc.)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.stream.stream.description"></a><h6>
-<a name="id766259"></a>
+<a name="id779552"></a>
<a class="link" href="stream.html#spirit.karma.reference.stream.stream.description">Description</a>
</h6>
<p>
@@ -44,7 +44,7 @@
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&</span> <span class="keyword">operator</span><span class="special"><<</span> <span class="special">(</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ostream</span><span class="special">&,</span> <span class="identifier">A</span> <span class="keyword">const</span><span class="special">&);</span>
</pre>
<a name="spirit.karma.reference.stream.stream.header"></a><h6>
-<a name="id766368"></a>
+<a name="id779661"></a>
<a class="link" href="stream.html#spirit.karma.reference.stream.stream.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/stream.hpp>
@@ -54,7 +54,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.stream.stream.namespace"></a><h6>
-<a name="id766443"></a>
+<a name="id779736"></a>
<a class="link" href="stream.html#spirit.karma.reference.stream.stream.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -80,14 +80,14 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.stream.stream.synopsis"></a><h6>
-<a name="id766560"></a>
+<a name="id779853"></a>
<a class="link" href="stream.html#spirit.karma.reference.stream.stream.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Char</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">stream_generator</span><span class="special">;</span>
</pre>
<a name="spirit.karma.reference.stream.stream.template_parameters"></a><h6>
-<a name="id766614"></a>
+<a name="id779907"></a>
<a class="link" href="stream.html#spirit.karma.reference.stream.stream.template_parameters">Template
parameters</a>
</h6>
@@ -135,7 +135,7 @@
</tr></tbody>
</table></div>
<a name="spirit.karma.reference.stream.stream.model_of"></a><h6>
-<a name="id766707"></a>
+<a name="id780819"></a>
<a class="link" href="stream.html#spirit.karma.reference.stream.stream.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -161,7 +161,7 @@
</dl>
</div>
<a name="spirit.karma.reference.stream.stream.expression_semantics"></a><h6>
-<a name="id768436"></a>
+<a name="id780909"></a>
<a class="link" href="stream.html#spirit.karma.reference.stream.stream.expression_semantics">Expression
Semantics</a>
</h6>
@@ -331,7 +331,7 @@
</tbody>
</table></div>
<a name="spirit.karma.reference.stream.stream.additional_requirements"></a><h6>
-<a name="id768934"></a>
+<a name="id781407"></a>
<a class="link" href="stream.html#spirit.karma.reference.stream.stream.additional_requirements">Additional
Requirements</a>
</h6>
@@ -374,7 +374,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.stream.stream.attributes"></a><h6>
-<a name="id769151"></a>
+<a name="id781625"></a>
<a class="link" href="stream.html#spirit.karma.reference.stream.stream.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -499,7 +499,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.stream.stream.complexity"></a><h6>
-<a name="id769548"></a>
+<a name="id782022"></a>
<a class="link" href="stream.html#spirit.karma.reference.stream.stream.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -512,7 +512,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.stream.stream.example"></a><h6>
-<a name="id769572"></a>
+<a name="id782046"></a>
<a class="link" href="stream.html#spirit.karma.reference.stream.stream.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/string.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/string.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/string.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/string.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -33,7 +33,7 @@
generator.
</p>
<a name="spirit.karma.reference.string.module_header"></a><h6>
-<a name="id736812"></a>
+<a name="id749553"></a>
<a class="link" href="string.html#spirit.karma.reference.string.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/string.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/reference/string/string.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/reference/string/string.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/reference/string/string.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/reference/string/string.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.karma.reference.string.string"></a><a class="link" href="string.html" title="String (string, lit)"> String (<code class="computeroutput"><span class="identifier">string</span></code>, <code class="computeroutput"><span class="identifier">lit</span></code>)</a>
</h5></div></div></div>
<a name="spirit.karma.reference.string.string.description"></a><h6>
-<a name="id736911"></a>
+<a name="id749651"></a>
<a class="link" href="string.html#spirit.karma.reference.string.string.description">Description</a>
</h6>
<p>
@@ -58,7 +58,7 @@
<span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span> <span class="comment">// s is a std::string
</span></pre>
<a name="spirit.karma.reference.string.string.header"></a><h6>
-<a name="id737140"></a>
+<a name="id749881"></a>
<a class="link" href="string.html#spirit.karma.reference.string.string.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/string/lit.hpp>
@@ -68,7 +68,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.karma.reference.string.string.namespace"></a><h6>
-<a name="id737214"></a>
+<a name="id749955"></a>
<a class="link" href="string.html#spirit.karma.reference.string.string.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -98,7 +98,7 @@
Encoding Namespace</a> used by the corresponding string generator.
</p>
<a name="spirit.karma.reference.string.string.model_of"></a><h6>
-<a name="id737333"></a>
+<a name="id750074"></a>
<a class="link" href="string.html#spirit.karma.reference.string.string.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -132,7 +132,7 @@
</dl>
</div>
<a name="spirit.karma.reference.string.string.expression_semantics"></a><h6>
-<a name="id737451"></a>
+<a name="id750191"></a>
<a class="link" href="string.html#spirit.karma.reference.string.string.expression_semantics">Expression
Semantics</a>
</h6>
@@ -234,7 +234,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.string.string.attributes"></a><h6>
-<a name="id737764"></a>
+<a name="id750505"></a>
<a class="link" href="string.html#spirit.karma.reference.string.string.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -323,7 +323,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.reference.string.string.complexity"></a><h6>
-<a name="id738064"></a>
+<a name="id750805"></a>
<a class="link" href="string.html#spirit.karma.reference.string.string.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -336,7 +336,7 @@
</p>
</blockquote></div>
<a name="spirit.karma.reference.string.string.example"></a><h6>
-<a name="id738088"></a>
+<a name="id750829"></a>
<a class="link" href="string.html#spirit.karma.reference.string.string.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/tutorials/karma_easier_complex.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -67,7 +67,7 @@
Let's try to cover some basic library features first.
</p>
<a name="spirit.karma.tutorials.karma_easier_complex.making_numeric_generators_fail"></a><h6>
-<a name="id693259"></a>
+<a name="id707107"></a>
<a class="link" href="karma_easier_complex.html#spirit.karma.tutorials.karma_easier_complex.making_numeric_generators_fail">Making
Numeric Generators Fail</a>
</h6>
@@ -116,7 +116,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.tutorials.karma_easier_complex.predicates___the_conditionals_for_output_generators"></a><h6>
-<a name="id693547"></a>
+<a name="id707395"></a>
<a class="link" href="karma_easier_complex.html#spirit.karma.tutorials.karma_easier_complex.predicates___the_conditionals_for_output_generators">Predicates
- The Conditionals for Output Generators</a>
</h6>
@@ -167,7 +167,7 @@
emitted by the generators they are applied to.
</p>
<a name="spirit.karma.tutorials.karma_easier_complex.ignoring_supplied_attributes"></a><h6>
-<a name="id698666"></a>
+<a name="id713606"></a>
<a class="link" href="karma_easier_complex.html#spirit.karma.tutorials.karma_easier_complex.ignoring_supplied_attributes">Ignoring
Supplied Attributes</a>
</h6>
@@ -194,7 +194,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.tutorials.karma_easier_complex.putting_everything_together"></a><h6>
-<a name="id698744"></a>
+<a name="id713684"></a>
<a class="link" href="karma_easier_complex.html#spirit.karma.tutorials.karma_easier_complex.putting_everything_together">Putting
everything together</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/tutorials/quick_start.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.karma.tutorials.quick_start"></a><a class="link" href="quick_start.html" title="Quick Start">Quick Start</a>
</h4></div></div></div>
<a name="spirit.karma.tutorials.quick_start.spirit_karma___what_s_that_"></a><h6>
-<a name="id688603"></a>
+<a name="id702574"></a>
<a class="link" href="quick_start.html#spirit.karma.tutorials.quick_start.spirit_karma___what_s_that_">Spirit.Karma
- what's that?</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/tutorials/semantic_actions.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -276,7 +276,7 @@
The examples above can be found here: actions.cpp
</p>
<a name="spirit.karma.tutorials.semantic_actions.phoenix"></a><h6>
-<a name="id691929"></a>
+<a name="id705776"></a>
<a class="link" href="semantic_actions.html#spirit.karma.tutorials.semantic_actions.phoenix">Phoenix</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html (from r56618, /trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/karma/tutorials/warming_up.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -31,7 +31,7 @@
We will start from trivial examples, ramping up as we go.
</p>
<a name="spirit.karma.tutorials.warming_up.trivial_example__1_generating_a_number"></a><h6>
-<a name="id688729"></a>
+<a name="id702700"></a>
<a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__1_generating_a_number">Trivial
Example #1 Generating a number</a>
</h6>
@@ -51,7 +51,7 @@
to a floating point generator or parser: <code class="computeroutput"><span class="identifier">double_</span></code>.
</p>
<a name="spirit.karma.tutorials.warming_up.trivial_example__2_generating_two_numbers"></a><h6>
-<a name="id688773"></a>
+<a name="id702744"></a>
<a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__2_generating_two_numbers">Trivial
Example #2 Generating two numbers</a>
</h6>
@@ -89,7 +89,7 @@
</p></td></tr>
</table></div>
<a name="spirit.karma.tutorials.warming_up.trivial_example__3_generating_one_or_more_numbers"></a><h6>
-<a name="id688858"></a>
+<a name="id702829"></a>
<a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__3_generating_one_or_more_numbers">Trivial
Example #3 Generating one or more numbers</a>
</h6>
@@ -114,7 +114,7 @@
numbers, if needed.
</p>
<a name="spirit.karma.tutorials.warming_up.trivial_example__4_generating_a_comma_delimited_list_of_numbers"></a><h6>
-<a name="id688906"></a>
+<a name="id702877"></a>
<a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.trivial_example__4_generating_a_comma_delimited_list_of_numbers">Trivial
Example #4 Generating a comma-delimited list of numbers</a>
</h6>
@@ -137,7 +137,7 @@
in the generated output zero or more times.
</p>
<a name="spirit.karma.tutorials.warming_up.let_s_generate_"></a><h6>
-<a name="id689040"></a>
+<a name="id703011"></a>
<a class="link" href="warming_up.html#spirit.karma.tutorials.warming_up.let_s_generate_">Let's
Generate!</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_primitives/lexer_token_values.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -50,7 +50,7 @@
of the <span class="emphasis"><em>Spirit.Lex</em></span> library.
</p>
<a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_anatomy_of_a_token"></a><h6>
-<a name="id849981"></a>
+<a name="id863741"></a>
<a class="link" href="lexer_token_values.html#spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_anatomy_of_a_token">The
Anatomy of a Token</a>
</h6>
@@ -186,7 +186,7 @@
time.
</p>
<a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_physiognomy_of_a_token_definition"></a><h6>
-<a name="id850474"></a>
+<a name="id864234"></a>
<a class="link" href="lexer_token_values.html#spirit.lex.abstracts.lexer_primitives.lexer_token_values.the_physiognomy_of_a_token_definition">The
Physiognomy of a Token Definition</a>
</h6>
@@ -259,7 +259,7 @@
</td></tr>
</table></div>
<a name="spirit.lex.abstracts.lexer_primitives.lexer_token_values.examples_of_using__link_linkend__spirit_lex_reference_token___code__phrase_role__identifier__lexertl_token__phrase__phrase_role__special___lt__gt___phrase___code___link_"></a><h6>
-<a name="id850725"></a>
+<a name="id864485"></a>
<a class="link" href="lexer_token_values.html#spirit.lex.abstracts.lexer_primitives.lexer_token_values.examples_of_using__link_linkend__spirit_lex_reference_token___code__phrase_role__identifier__lexertl_token__phrase__phrase_role__special___lt__gt___phrase___code___link_">Examples
of using <a class="link" href="../../reference/token.html" title="Token Class"><code class="computeroutput"><span class="identifier">lexertl_token</span><span class="special"><></span></code></a></a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_semantic_actions.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -105,7 +105,7 @@
<span class="keyword">void</span> <span class="identifier">f</span> <span class="special">();</span>
</pre>
<a name="spirit.lex.abstracts.lexer_semantic_actions.the_context_of_a_lexer_semantic_action"></a><h6>
-<a name="id855651"></a>
+<a name="id869125"></a>
<a class="link" href="lexer_semantic_actions.html#spirit.lex.abstracts.lexer_semantic_actions.the_context_of_a_lexer_semantic_action">The
context of a lexer semantic action</a>
</h6>
@@ -120,7 +120,7 @@
of the available functionality.
</p>
<div class="table">
-<a name="id855671"></a><p class="title"><b>Table 8. Functions exposed by any context passed to a lexer
+<a name="id869146"></a><p class="title"><b>Table 8. Functions exposed by any context passed to a lexer
semantic action</b></p>
<div class="table-contents"><table class="table" summary="Functions exposed by any context passed to a lexer
semantic action">
@@ -240,7 +240,7 @@
</table></div>
</div>
<br class="table-break"><a name="spirit.lex.abstracts.lexer_semantic_actions.lexer_semantic_actions_using_phoenix"></a><h6>
-<a name="id856190"></a>
+<a name="id869664"></a>
<a class="link" href="lexer_semantic_actions.html#spirit.lex.abstracts.lexer_semantic_actions.lexer_semantic_actions_using_phoenix">Lexer
Semantic Actions Using Phoenix</a>
</h6>
@@ -252,7 +252,7 @@
predefined Spirit placeholders:
</p>
<div class="table">
-<a name="id856212"></a><p class="title"><b>Table 9. Predefined Phoenix placeholders for lexer semantic
+<a name="id869687"></a><p class="title"><b>Table 9. Predefined Phoenix placeholders for lexer semantic
actions</b></p>
<div class="table-contents"><table class="table" summary="Predefined Phoenix placeholders for lexer semantic
actions">
@@ -383,7 +383,7 @@
table lists the available support functions and describes their functionality:
</p>
<div class="table">
-<a name="id856491"></a><p class="title"><b>Table 10. Support functions usable from Phoenix expressions
+<a name="id869965"></a><p class="title"><b>Table 10. Support functions usable from Phoenix expressions
inside lexer semantic actions</b></p>
<div class="table-contents"><table class="table" summary="Support functions usable from Phoenix expressions
inside lexer semantic actions">
Copied: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_states.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,17 +27,17 @@
<a name="spirit.lex.abstracts.lexer_states"></a><a class="link" href="lexer_states.html" title="Lexer States"> Lexer States</a>
</h4></div></div></div>
<a name="spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_lexer_semantic_actions"></a><h6>
-<a name="id860556"></a>
+<a name="id873962"></a>
<a class="link" href="lexer_states.html#spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_lexer_semantic_actions">Controlling
the Lexer State from Lexer Semantic Actions</a>
</h6>
<a name="spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_parser_semantic_actions"></a><h6>
-<a name="id860569"></a>
+<a name="id873976"></a>
<a class="link" href="lexer_states.html#spirit.lex.abstracts.lexer_states.controlling_the_lexer_state_from_parser_semantic_actions">Controlling
the Lexer State from Parser Semantic Actions</a>
</h6>
<a name="spirit.lex.abstracts.lexer_states.using_a_lexer_state_for_the_skip_parser"></a><h6>
-<a name="id860582"></a>
+<a name="id873989"></a>
<a class="link" href="lexer_states.html#spirit.lex.abstracts.lexer_states.using_a_lexer_state_for_the_skip_parser">Using
a Lexer State for the Skip Parser</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_static_model.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -176,7 +176,7 @@
<p>
</p>
<a name="spirit.lex.abstracts.lexer_static_model.generating_the_static_analyzer"></a><h6>
-<a name="id859150"></a>
+<a name="id872556"></a>
<a class="link" href="lexer_static_model.html#spirit.lex.abstracts.lexer_static_model.generating_the_static_analyzer">Generating
the Static Analyzer</a>
</h6>
@@ -239,7 +239,7 @@
</p></td></tr>
</table></div>
<a name="spirit.lex.abstracts.lexer_static_model.modifying_the_dynamic_analyzer"></a><h6>
-<a name="id859513"></a>
+<a name="id872920"></a>
<a class="link" href="lexer_static_model.html#spirit.lex.abstracts.lexer_static_model.modifying_the_dynamic_analyzer">Modifying
the Dynamic Analyzer</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/abstracts/lexer_tokenizing.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Input Data</a>
</h4></div></div></div>
<a name="spirit.lex.abstracts.lexer_tokenizing.the_tokenize_function"></a><h6>
-<a name="id851281"></a>
+<a name="id865041"></a>
<a class="link" href="lexer_tokenizing.html#spirit.lex.abstracts.lexer_tokenizing.the_tokenize_function">The
tokenize function</a>
</h6>
@@ -228,7 +228,7 @@
</dl>
</div>
<a name="spirit.lex.abstracts.lexer_tokenizing.the_generate_static_function"></a><h6>
-<a name="id854756"></a>
+<a name="id868503"></a>
<a class="link" href="lexer_tokenizing.html#spirit.lex.abstracts.lexer_tokenizing.the_generate_static_function">The
generate_static function</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/lexer_introduction.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/lexer_introduction.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/lexer_introduction.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -56,7 +56,7 @@
</li>
</ul></div>
<a name="spirit.lex.lexer_introduction.why_use_a_separate_lexer_"></a><h5>
-<a name="id838445"></a>
+<a name="id851741"></a>
<a class="link" href="lexer_introduction.html#spirit.lex.lexer_introduction.why_use_a_separate_lexer_">Why
Use a Separate Lexer?</a>
</h5>
@@ -155,7 +155,7 @@
grammar recognizers.
</p>
<a name="spirit.lex.lexer_introduction.advantages_of_using__emphasis_spirit_lex__emphasis_"></a><h5>
-<a name="id838653"></a>
+<a name="id851949"></a>
<a class="link" href="lexer_introduction.html#spirit.lex.lexer_introduction.advantages_of_using__emphasis_spirit_lex__emphasis_">Advantages
of using <span class="emphasis"><em>Spirit.Lex</em></span></a>
</h5>
@@ -202,7 +202,7 @@
This dynamic flexibility allows you to speed up the development of your application.
</p>
<a name="spirit.lex.lexer_introduction.the_library_structure_of__emphasis_spirit_lex__emphasis_"></a><h5>
-<a name="id838757"></a>
+<a name="id852053"></a>
<a class="link" href="lexer_introduction.html#spirit.lex.lexer_introduction.the_library_structure_of__emphasis_spirit_lex__emphasis_">The
Library Structure of <span class="emphasis"><em>Spirit.Lex</em></span></a>
</h5>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/lexer.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/lexer.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/lexer.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/lexer.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.lex.reference.lexer_concepts.lexer"></a><a class="link" href="lexer.html" title="Lexer">Lexer</a>
</h5></div></div></div>
<a name="spirit.lex.reference.lexer_concepts.lexer.description"></a><h6>
-<a name="id863952"></a>
+<a name="id876268"></a>
<a class="link" href="lexer.html#spirit.lex.reference.lexer_concepts.lexer.description">Description</a>
</h6>
<p>
@@ -65,7 +65,7 @@
</dl>
</div>
<a name="spirit.lex.reference.lexer_concepts.lexer.valid_expressions"></a><h6>
-<a name="id864114"></a>
+<a name="id876430"></a>
<a class="link" href="lexer.html#spirit.lex.reference.lexer_concepts.lexer.valid_expressions">Valid
Expressions</a>
</h6>
@@ -143,7 +143,7 @@
</tbody>
</table></div>
<a name="spirit.lex.reference.lexer_concepts.lexer.type_expressions"></a><h6>
-<a name="id864333"></a>
+<a name="id876650"></a>
<a class="link" href="lexer.html#spirit.lex.reference.lexer_concepts.lexer.type_expressions">Type
Expressions</a>
</h6>
@@ -182,7 +182,7 @@
</tr></tbody>
</table></div>
<a name="spirit.lex.reference.lexer_concepts.lexer.postcondition"></a><h6>
-<a name="id864470"></a>
+<a name="id876787"></a>
<a class="link" href="lexer.html#spirit.lex.reference.lexer_concepts.lexer.postcondition">Postcondition</a>
</h6>
<p>
@@ -206,7 +206,7 @@
inside <code class="computeroutput"><span class="identifier">l</span></code>.
</li></ul></div>
<a name="spirit.lex.reference.lexer_concepts.lexer.models"></a><h6>
-<a name="id865415"></a>
+<a name="id877721"></a>
<a class="link" href="lexer.html#spirit.lex.reference.lexer_concepts.lexer.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/narylexer.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/narylexer.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/narylexer.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/narylexer.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.lex.reference.lexer_concepts.narylexer"></a><a class="link" href="narylexer.html" title="NaryLexer">NaryLexer</a>
</h5></div></div></div>
<a name="spirit.lex.reference.lexer_concepts.narylexer.description"></a><h6>
-<a name="id866269"></a>
+<a name="id878575"></a>
<a class="link" href="narylexer.html#spirit.lex.reference.lexer_concepts.narylexer.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
Design Pattern.
</p>
<a name="spirit.lex.reference.lexer_concepts.narylexer.refinement_of"></a><h6>
-<a name="id866305"></a>
+<a name="id878611"></a>
<a class="link" href="narylexer.html#spirit.lex.reference.lexer_concepts.narylexer.refinement_of">Refinement
of</a>
</h6>
@@ -64,7 +64,7 @@
</dl>
</div>
<a name="spirit.lex.reference.lexer_concepts.narylexer.valid_expressions"></a><h6>
-<a name="id866387"></a>
+<a name="id878693"></a>
<a class="link" href="narylexer.html#spirit.lex.reference.lexer_concepts.narylexer.valid_expressions">Valid
Expressions</a>
</h6>
@@ -115,7 +115,7 @@
</tr></tbody>
</table></div>
<a name="spirit.lex.reference.lexer_concepts.narylexer.type_expressions"></a><h6>
-<a name="id866512"></a>
+<a name="id878818"></a>
<a class="link" href="narylexer.html#spirit.lex.reference.lexer_concepts.narylexer.type_expressions">Type
Expressions</a>
</h6>
@@ -168,7 +168,7 @@
</tbody>
</table></div>
<a name="spirit.lex.reference.lexer_concepts.narylexer.invariants"></a><h6>
-<a name="id866683"></a>
+<a name="id878989"></a>
<a class="link" href="narylexer.html#spirit.lex.reference.lexer_concepts.narylexer.invariants">Invariants</a>
</h6>
<p>
@@ -180,7 +180,7 @@
<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_lexer</span><span class="special"><</span><span class="identifier">E</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
</li></ul></div>
<a name="spirit.lex.reference.lexer_concepts.narylexer.models"></a><h6>
-<a name="id866768"></a>
+<a name="id879074"></a>
<a class="link" href="narylexer.html#spirit.lex.reference.lexer_concepts.narylexer.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/primitivelexer.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/primitivelexer.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/primitivelexer.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/primitivelexer.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.lex.reference.lexer_concepts.primitivelexer"></a><a class="link" href="primitivelexer.html" title="PrimitiveLexer">PrimitiveLexer</a>
</h5></div></div></div>
<a name="spirit.lex.reference.lexer_concepts.primitivelexer.description"></a><h6>
-<a name="id865452"></a>
+<a name="id877758"></a>
<a class="link" href="primitivelexer.html#spirit.lex.reference.lexer_concepts.primitivelexer.description">Description</a>
</h6>
<p>
@@ -35,7 +35,7 @@
that the client uses to build more complex lexer components.
</p>
<a name="spirit.lex.reference.lexer_concepts.primitivelexer.refinement_of"></a><h6>
-<a name="id865475"></a>
+<a name="id877781"></a>
<a class="link" href="primitivelexer.html#spirit.lex.reference.lexer_concepts.primitivelexer.refinement_of">Refinement
of</a>
</h6>
@@ -49,7 +49,7 @@
</p>
</blockquote></div>
<a name="spirit.lex.reference.lexer_concepts.primitivelexer.type_expressions"></a><h6>
-<a name="id865508"></a>
+<a name="id877814"></a>
<a class="link" href="primitivelexer.html#spirit.lex.reference.lexer_concepts.primitivelexer.type_expressions">Type
Expressions</a>
</h6>
@@ -88,7 +88,7 @@
</tr></tbody>
</table></div>
<a name="spirit.lex.reference.lexer_concepts.primitivelexer.models"></a><h6>
-<a name="id865645"></a>
+<a name="id877951"></a>
<a class="link" href="primitivelexer.html#spirit.lex.reference.lexer_concepts.primitivelexer.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/unarylexer.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/unarylexer.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/unarylexer.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/lexer_concepts/unarylexer.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.lex.reference.lexer_concepts.unarylexer"></a><a class="link" href="unarylexer.html" title="UnaryLexer">UnaryLexer</a>
</h5></div></div></div>
<a name="spirit.lex.reference.lexer_concepts.unarylexer.description"></a><h6>
-<a name="id865747"></a>
+<a name="id878053"></a>
<a class="link" href="unarylexer.html#spirit.lex.reference.lexer_concepts.unarylexer.description">Description</a>
</h6>
<p>
@@ -36,7 +36,7 @@
following the Delegate Design Pattern.
</p>
<a name="spirit.lex.reference.lexer_concepts.unarylexer.refinement_of"></a><h6>
-<a name="id865772"></a>
+<a name="id878078"></a>
<a class="link" href="unarylexer.html#spirit.lex.reference.lexer_concepts.unarylexer.refinement_of">Refinement
of</a>
</h6>
@@ -63,7 +63,7 @@
</dl>
</div>
<a name="spirit.lex.reference.lexer_concepts.unarylexer.valid_expressions"></a><h6>
-<a name="id865852"></a>
+<a name="id878158"></a>
<a class="link" href="unarylexer.html#spirit.lex.reference.lexer_concepts.unarylexer.valid_expressions">Valid
Expressions</a>
</h6>
@@ -113,7 +113,7 @@
</tr></tbody>
</table></div>
<a name="spirit.lex.reference.lexer_concepts.unarylexer.type_expressions"></a><h6>
-<a name="id865968"></a>
+<a name="id878274"></a>
<a class="link" href="unarylexer.html#spirit.lex.reference.lexer_concepts.unarylexer.type_expressions">Type
Expressions</a>
</h6>
@@ -166,7 +166,7 @@
</tbody>
</table></div>
<a name="spirit.lex.reference.lexer_concepts.unarylexer.invariants"></a><h6>
-<a name="id866138"></a>
+<a name="id878444"></a>
<a class="link" href="unarylexer.html#spirit.lex.reference.lexer_concepts.unarylexer.invariants">Invariants</a>
</h6>
<p>
@@ -177,7 +177,7 @@
<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_lexer</span><span class="special"><</span><span class="identifier">L</span><span class="special">::</span><span class="identifier">subject_type</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
</li></ul></div>
<a name="spirit.lex.reference.lexer_concepts.unarylexer.models"></a><h6>
-<a name="id866224"></a>
+<a name="id878530"></a>
<a class="link" href="unarylexer.html#spirit.lex.reference.lexer_concepts.unarylexer.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/primitives.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/reference/primitives.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -36,7 +36,7 @@
and string literals.
</p>
<a name="spirit.lex.reference.primitives.module_headers"></a><h6>
-<a name="id867340"></a>
+<a name="id879646"></a>
<a class="link" href="primitives.html#spirit.lex.reference.primitives.module_headers">Module Headers</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/lex/primitives.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives/char_tokendef.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/reference/primitives/char_tokendef.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/reference/primitives/char_tokendef.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/reference/primitives/char_tokendef.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Matching Single Characters</a>
</h5></div></div></div>
<a name="spirit.lex.reference.primitives.char_tokendef.description"></a><h6>
-<a name="id867426"></a>
+<a name="id879732"></a>
<a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.description">Description</a>
</h6>
<p>
@@ -42,11 +42,11 @@
such as forcing lower or upper case and dealing with character ranges.
</p>
<a name="spirit.lex.reference.primitives.char_tokendef.header"></a><h6>
-<a name="id867470"></a>
+<a name="id879776"></a>
<a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.header">Header</a>
</h6>
<a name="spirit.lex.reference.primitives.char_tokendef.module_headers"></a><h6>
-<a name="id867486"></a>
+<a name="id879792"></a>
<a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.module_headers">Module
Headers</a>
</h6>
@@ -57,7 +57,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.lex.reference.primitives.char_tokendef.namespace"></a><h6>
-<a name="id867563"></a>
+<a name="id881235"></a>
<a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -87,7 +87,7 @@
Encoding Namespace</a>.
</p>
<a name="spirit.lex.reference.primitives.char_tokendef.model_of"></a><h6>
-<a name="id868913"></a>
+<a name="id881356"></a>
<a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.model_of">Model
of</a>
</h6>
@@ -119,7 +119,7 @@
</dl>
</div>
<a name="spirit.lex.reference.primitives.char_tokendef.expression_semantics"></a><h6>
-<a name="id869017"></a>
+<a name="id881459"></a>
<a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.expression_semantics">Expression
Semantics</a>
</h6>
@@ -193,7 +193,7 @@
</tbody>
</table></div>
<a name="spirit.lex.reference.primitives.char_tokendef.example"></a><h6>
-<a name="id869199"></a>
+<a name="id881641"></a>
<a class="link" href="char_tokendef.html#spirit.lex.reference.primitives.char_tokendef.example">Example</a>
</h6>
</div>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart1.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -39,7 +39,7 @@
(for the full example code see here: word_count_functor.cpp).
</p>
<a name="spirit.lex.tutorials.lexer_quickstart1.prerequisites"></a><h6>
-<a name="id839025"></a>
+<a name="id852321"></a>
<a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.prerequisites">Prerequisites</a>
</h6>
<p>
@@ -78,7 +78,7 @@
<p>
</p>
<a name="spirit.lex.tutorials.lexer_quickstart1.defining_tokens"></a><h6>
-<a name="id839275"></a>
+<a name="id852571"></a>
<a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.defining_tokens">Defining
Tokens</a>
</h6>
@@ -133,7 +133,7 @@
<p>
</p>
<a name="spirit.lex.tutorials.lexer_quickstart1.doing_the_useful_work"></a><h6>
-<a name="id839712"></a>
+<a name="id853140"></a>
<a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.doing_the_useful_work">Doing
the Useful Work</a>
</h6>
@@ -198,7 +198,7 @@
as well.
</p>
<a name="spirit.lex.tutorials.lexer_quickstart1.pulling_everything_together"></a><h6>
-<a name="id840225"></a>
+<a name="id853652"></a>
<a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.pulling_everything_together">Pulling
Everything Together</a>
</h6>
@@ -251,7 +251,7 @@
<p>
</p>
<a name="spirit.lex.tutorials.lexer_quickstart1.comparing__emphasis_spirit_lex__emphasis__with__ulink_url__http___flex_sourceforge_net___flex__ulink_"></a><h6>
-<a name="id841066"></a>
+<a name="id854494"></a>
<a class="link" href="lexer_quickstart1.html#spirit.lex.tutorials.lexer_quickstart1.comparing__emphasis_spirit_lex__emphasis__with__ulink_url__http___flex_sourceforge_net___flex__ulink_">Comparing
<span class="emphasis"><em>Spirit.Lex</em></span> with Flex</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart2.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -40,7 +40,7 @@
options along the lines (for the full example code see here: word_count_lexer.cpp).
</p>
<a name="spirit.lex.tutorials.lexer_quickstart2.prerequisites"></a><h6>
-<a name="id841916"></a>
+<a name="id856437"></a>
<a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.prerequisites">Prerequisites</a>
</h6>
<p>
@@ -113,7 +113,7 @@
<p>
</p>
<a name="spirit.lex.tutorials.lexer_quickstart2.semantic_actions_in__emphasis_spirit_lex__emphasis_"></a><h6>
-<a name="id842545"></a>
+<a name="id857065"></a>
<a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.semantic_actions_in__emphasis_spirit_lex__emphasis_">Semantic
Actions in <span class="emphasis"><em>Spirit.Lex</em></span></a>
</h6>
@@ -172,7 +172,7 @@
Semantic Actions</a>.
</p>
<a name="spirit.lex.tutorials.lexer_quickstart2.associating_token_definitions_with_the_lexer"></a><h6>
-<a name="id843178"></a>
+<a name="id857698"></a>
<a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.associating_token_definitions_with_the_lexer">Associating
Token Definitions with the Lexer</a>
</h6>
@@ -208,7 +208,7 @@
with the constant defined by <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">lex</span><span class="special">::</span><span class="identifier">min_token_id</span></code>.
</p>
<a name="spirit.lex.tutorials.lexer_quickstart2.pulling_everything_together"></a><h6>
-<a name="id843466"></a>
+<a name="id857986"></a>
<a class="link" href="lexer_quickstart2.html#spirit.lex.tutorials.lexer_quickstart2.pulling_everything_together">Pulling
everything together</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html (from r56618, /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/lex/tutorials/lexer_quickstart3.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -65,7 +65,7 @@
code see here: word_count.cpp).
</p>
<a name="spirit.lex.tutorials.lexer_quickstart3.prerequisites"></a><h6>
-<a name="id846113"></a>
+<a name="id859540"></a>
<a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.prerequisites">Prerequisites</a>
</h6>
<p>
@@ -113,7 +113,7 @@
<p>
</p>
<a name="spirit.lex.tutorials.lexer_quickstart3.defining_tokens"></a><h6>
-<a name="id846479"></a>
+<a name="id859906"></a>
<a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.defining_tokens">Defining
Tokens</a>
</h6>
@@ -166,7 +166,7 @@
<p>
</p>
<a name="spirit.lex.tutorials.lexer_quickstart3.using_token_definition_instances_as_parsers"></a><h6>
-<a name="id846830"></a>
+<a name="id860258"></a>
<a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.using_token_definition_instances_as_parsers">Using
Token Definition Instances as Parsers</a>
</h6>
@@ -320,7 +320,7 @@
<span class="identifier">size</span><span class="special">(</span><span class="identifier">_1</span><span class="special">)</span></code>.
</p>
<a name="spirit.lex.tutorials.lexer_quickstart3.pulling_everything_together"></a><h6>
-<a name="id847705"></a>
+<a name="id861133"></a>
<a class="link" href="lexer_quickstart3.html#spirit.lex.tutorials.lexer_quickstart3.pulling_everything_together">Pulling
Everything Together</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html (from r56618, /trunk/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/notes/porting_from_spirit_1_8_x.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -41,7 +41,7 @@
<a href="http://spirit.sourceforge.net" target="_top">Spirit</a>.
</p>
<a name="spirit.notes.porting_from_spirit_1_8_x.include_files"></a><h5>
-<a name="id879040"></a>
+<a name="id892324"></a>
<a class="link" href="porting_from_spirit_1_8_x.html#spirit.notes.porting_from_spirit_1_8_x.include_files">Include
Files</a>
</h5>
@@ -223,7 +223,7 @@
</tbody>
</table></div>
<a name="spirit.notes.porting_from_spirit_1_8_x.the_free_parse_functions"></a><h5>
-<a name="id879678"></a>
+<a name="id892962"></a>
<a class="link" href="porting_from_spirit_1_8_x.html#spirit.notes.porting_from_spirit_1_8_x.the_free_parse_functions">The
Free Parse Functions</a>
</h5>
@@ -409,7 +409,7 @@
Encoding Namespace</a> for more information.
</p>
<a name="spirit.notes.porting_from_spirit_1_8_x.naming_conventions"></a><h5>
-<a name="id882419"></a>
+<a name="id896274"></a>
<a class="link" href="porting_from_spirit_1_8_x.html#spirit.notes.porting_from_spirit_1_8_x.naming_conventions">Naming
Conventions</a>
</h5>
@@ -429,7 +429,7 @@
parser primitives, directives and operators.
</p>
<a name="spirit.notes.porting_from_spirit_1_8_x.parser_attributes"></a><h5>
-<a name="id882491"></a>
+<a name="id896346"></a>
<a class="link" href="porting_from_spirit_1_8_x.html#spirit.notes.porting_from_spirit_1_8_x.parser_attributes">Parser
Attributes</a>
</h5>
@@ -447,7 +447,7 @@
underlying matched input sequence.
</p>
<a name="spirit.notes.porting_from_spirit_1_8_x.grammars_and_rules"></a><h5>
-<a name="id882559"></a>
+<a name="id897507"></a>
<a class="link" href="porting_from_spirit_1_8_x.html#spirit.notes.porting_from_spirit_1_8_x.grammars_and_rules">Grammars
and Rules</a>
</h5>
Copied: branches/release/libs/spirit/doc/html/spirit/preface.html (from r56618, /trunk/libs/spirit/doc/html/spirit/preface.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/preface.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/preface.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -41,11 +41,11 @@
</p>
</blockquote></div>
<a name="spirit.preface.history"></a><h4>
-<a name="id546254"></a>
+<a name="id558521"></a>
<a class="link" href="preface.html#spirit.preface.history">History</a>
</h4>
<a name="spirit.preface._emphasis_80s__emphasis_"></a><h4>
-<a name="id546268"></a>
+<a name="id558535"></a>
<a class="link" href="preface.html#spirit.preface._emphasis_80s__emphasis_"><span class="emphasis"><em>80s</em></span></a>
</h4>
<p>
@@ -59,7 +59,7 @@
This process worked very well.
</p>
<a name="spirit.preface._emphasis_90s__emphasis_"></a><h4>
-<a name="id546286"></a>
+<a name="id558553"></a>
<a class="link" href="preface.html#spirit.preface._emphasis_90s__emphasis_"><span class="emphasis"><em>90s</em></span></a>
</h4>
<p>
@@ -96,7 +96,7 @@
here: pre-Spirit.
</p>
<a name="spirit.preface._emphasis_2001_to_2006__emphasis_"></a><h4>
-<a name="id546328"></a>
+<a name="id558595"></a>
<a class="link" href="preface.html#spirit.preface._emphasis_2001_to_2006__emphasis_"><span class="emphasis"><em>2001
to 2006</em></span></a>
</h4>
@@ -126,7 +126,7 @@
for design and implementation quality, robustness, and reusability.
</p>
<a name="spirit.preface._emphasis_2007__emphasis_"></a><h4>
-<a name="id546362"></a>
+<a name="id558629"></a>
<a class="link" href="preface.html#spirit.preface._emphasis_2007__emphasis_"><span class="emphasis"><em>2007</em></span></a>
</h4>
<p>
@@ -163,7 +163,7 @@
gives you the right ingredients to easily create a sledgehammer.
</p>
<a name="spirit.preface.new_ideas__spirit_v2"></a><h4>
-<a name="id546437"></a>
+<a name="id558704"></a>
<a class="link" href="preface.html#spirit.preface.new_ideas__spirit_v2">New Ideas: Spirit V2</a>
</h4>
<p>
@@ -194,7 +194,7 @@
same underlying component library as for the parser and generator libraries.
</p>
<a name="spirit.preface.how_to_use_this_manual"></a><h4>
-<a name="id546494"></a>
+<a name="id558761"></a>
<a class="link" href="preface.html#spirit.preface.how_to_use_this_manual">How to use this manual</a>
</h4>
<p>
@@ -225,7 +225,7 @@
icons precede some text to indicate:
</p>
<div class="table">
-<a name="id546547"></a><p class="title"><b>Table 1. Icons</b></p>
+<a name="id558814"></a><p class="title"><b>Table 1. Icons</b></p>
<div class="table-contents"><table class="table" summary="Icons">
<colgroup>
<col>
@@ -346,7 +346,7 @@
Tools</a>.
</p>
<a name="spirit.preface.support"></a><h4>
-<a name="id546788"></a>
+<a name="id559055"></a>
<a class="link" href="preface.html#spirit.preface.support">Support</a>
</h4>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/quick_reference/compound_attribute_rules.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Attribute Rules</a>
</h4></div></div></div>
<a name="spirit.qi.quick_reference.compound_attribute_rules.notation"></a><h6>
-<a name="id600649"></a>
+<a name="id613277"></a>
<a class="link" href="compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.notation">Notation</a>
</h6>
<p>
@@ -72,7 +72,7 @@
</p></td></tr>
</table></div>
<a name="spirit.qi.quick_reference.compound_attribute_rules.compound_parser_attribute_types"></a><h6>
-<a name="id601131"></a>
+<a name="id613759"></a>
<a class="link" href="compound_attribute_rules.html#spirit.qi.quick_reference.compound_attribute_rules.compound_parser_attribute_types">Compound
Parser Attribute Types</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -41,7 +41,7 @@
<code class="computeroutput"><span class="identifier">eps</span></code>, and <code class="computeroutput"><span class="identifier">lazy</span></code> parsers.
</p>
<a name="spirit.qi.reference.auxiliary.module_header"></a><h6>
-<a name="id616265"></a>
+<a name="id631009"></a>
<a class="link" href="auxiliary.html#spirit.qi.reference.auxiliary.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/auxiliary.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/attr.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.auxiliary.attr"></a><a class="link" href="attr.html" title="Attribute (attr)"> Attribute (<code class="computeroutput"><span class="identifier">attr</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.auxiliary.attr.description"></a><h6>
-<a name="id616356"></a>
+<a name="id631100"></a>
<a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.description">Description</a>
</h6>
<p>
@@ -36,7 +36,7 @@
its specified parameter as an attribute.
</p>
<a name="spirit.qi.reference.auxiliary.attr.header"></a><h6>
-<a name="id616373"></a>
+<a name="id631117"></a>
<a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/auxiliary/attr.hpp>
@@ -46,7 +46,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.auxiliary.attr.namespace"></a><h6>
-<a name="id616447"></a>
+<a name="id631191"></a>
<a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -64,7 +64,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.attr.model_of"></a><h6>
-<a name="id616525"></a>
+<a name="id631269"></a>
<a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -94,7 +94,7 @@
</dl>
</div>
<a name="spirit.qi.reference.auxiliary.attr.expression_semantics"></a><h6>
-<a name="id616619"></a>
+<a name="id631363"></a>
<a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.expression_semantics">Expression
Semantics</a>
</h6>
@@ -134,7 +134,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.attr.attributes"></a><h6>
-<a name="id617268"></a>
+<a name="id633445"></a>
<a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -168,7 +168,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.attr.complexity"></a><h6>
-<a name="id617356"></a>
+<a name="id633534"></a>
<a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -185,7 +185,7 @@
done.
</p>
<a name="spirit.qi.reference.auxiliary.attr.example"></a><h6>
-<a name="id617384"></a>
+<a name="id633562"></a>
<a class="link" href="attr.html#spirit.qi.reference.auxiliary.attr.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eoi.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
(<code class="computeroutput"><span class="identifier">eoi</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.auxiliary.eoi.description"></a><h6>
-<a name="id618410"></a>
+<a name="id634588"></a>
<a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
is exhausted)
</p>
<a name="spirit.qi.reference.auxiliary.eoi.header"></a><h6>
-<a name="id618434"></a>
+<a name="id634612"></a>
<a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/auxiliary/eoi.hpp>
@@ -47,7 +47,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.auxiliary.eoi.namespace"></a><h6>
-<a name="id618508"></a>
+<a name="id634686"></a>
<a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -65,7 +65,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.eoi.model_of"></a><h6>
-<a name="id618586"></a>
+<a name="id634764"></a>
<a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -78,7 +78,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.auxiliary.eoi.expression_semantics"></a><h6>
-<a name="id618620"></a>
+<a name="id634798"></a>
<a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.expression_semantics">Expression
Semantics</a>
</h6>
@@ -117,7 +117,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.eoi.attributes"></a><h6>
-<a name="id618704"></a>
+<a name="id634882"></a>
<a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -151,7 +151,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.eoi.complexity"></a><h6>
-<a name="id618782"></a>
+<a name="id634960"></a>
<a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -164,7 +164,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.auxiliary.eoi.example"></a><h6>
-<a name="id618806"></a>
+<a name="id634984"></a>
<a class="link" href="eoi.html#spirit.qi.reference.auxiliary.eoi.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eol.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.auxiliary.eol"></a><a class="link" href="eol.html" title="End of Line (eol)"> End of Line (<code class="computeroutput"><span class="identifier">eol</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.auxiliary.eol.description"></a><h6>
-<a name="id617888"></a>
+<a name="id634066"></a>
<a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.description">Description</a>
</h6>
<p>
@@ -35,7 +35,7 @@
the end of line (CR/LF and combinations thereof).
</p>
<a name="spirit.qi.reference.auxiliary.eol.header"></a><h6>
-<a name="id617912"></a>
+<a name="id634090"></a>
<a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/auxiliary/eol.hpp>
@@ -45,7 +45,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.auxiliary.eol.namespace"></a><h6>
-<a name="id617986"></a>
+<a name="id634164"></a>
<a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -63,7 +63,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.eol.model_of"></a><h6>
-<a name="id618064"></a>
+<a name="id634242"></a>
<a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -76,7 +76,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.auxiliary.eol.expression_semantics"></a><h6>
-<a name="id618098"></a>
+<a name="id634276"></a>
<a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.expression_semantics">Expression
Semantics</a>
</h6>
@@ -115,7 +115,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.eol.attributes"></a><h6>
-<a name="id618182"></a>
+<a name="id634360"></a>
<a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -149,7 +149,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.eol.complexity"></a><h6>
-<a name="id618260"></a>
+<a name="id634438"></a>
<a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -162,7 +162,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.auxiliary.eol.example"></a><h6>
-<a name="id618284"></a>
+<a name="id634462"></a>
<a class="link" href="eol.html#spirit.qi.reference.auxiliary.eol.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/eps.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.auxiliary.eps"></a><a class="link" href="eps.html" title="Epsilon (eps)"> Epsilon (<code class="computeroutput"><span class="identifier">eps</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.auxiliary.eps.description"></a><h6>
-<a name="id618932"></a>
+<a name="id635110"></a>
<a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.description">Description</a>
</h6>
<p>
@@ -35,7 +35,7 @@
a multi-purpose parser that returns a zero length match.
</p>
<a name="spirit.qi.reference.auxiliary.eps.simple_form"></a><h6>
-<a name="id618956"></a>
+<a name="id635134"></a>
<a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.simple_form">Simple
Form</a>
</h6>
@@ -53,7 +53,7 @@
<pre class="programlisting"><span class="identifier">r</span> <span class="special">=</span> <span class="identifier">a</span> <span class="special">|</span> <span class="identifier">b</span> <span class="special">|</span> <span class="identifier">c</span> <span class="special">|</span> <span class="identifier">eps</span><span class="special">[</span><span class="identifier">error</span><span class="special">()];</span> <span class="comment">// Call error if a, b, and c fail to match
</span></pre>
<a name="spirit.qi.reference.auxiliary.eps.semantic_predicate"></a><h6>
-<a name="id619057"></a>
+<a name="id635234"></a>
<a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.semantic_predicate">Semantic
Predicate</a>
</h6>
@@ -76,7 +76,7 @@
touching rest.
</p>
<a name="spirit.qi.reference.auxiliary.eps.header"></a><h6>
-<a name="id619165"></a>
+<a name="id635342"></a>
<a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/auxiliary/eps.hpp>
@@ -86,7 +86,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.auxiliary.eps.namespace"></a><h6>
-<a name="id619239"></a>
+<a name="id635417"></a>
<a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -104,7 +104,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.eps.model_of"></a><h6>
-<a name="id619317"></a>
+<a name="id635495"></a>
<a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -127,7 +127,7 @@
</dl>
</div>
<a name="spirit.qi.reference.auxiliary.eps.expression_semantics"></a><h6>
-<a name="id621710"></a>
+<a name="id635703"></a>
<a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.expression_semantics">Expression
Semantics</a>
</h6>
@@ -182,7 +182,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.eps.attributes"></a><h6>
-<a name="id621843"></a>
+<a name="id635836"></a>
<a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -216,7 +216,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.eps.complexity"></a><h6>
-<a name="id621921"></a>
+<a name="id635914"></a>
<a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -231,7 +231,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.auxiliary.eps.example"></a><h6>
-<a name="id621978"></a>
+<a name="id635972"></a>
<a class="link" href="eps.html#spirit.qi.reference.auxiliary.eps.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/auxiliary/lazy.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.auxiliary.lazy"></a><a class="link" href="lazy.html" title="Lazy (lazy)"> Lazy (<code class="computeroutput"><span class="identifier">lazy</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.auxiliary.lazy.description"></a><h6>
-<a name="id622542"></a>
+<a name="id636536"></a>
<a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
once it is created to continue the parse.
</p>
<a name="spirit.qi.reference.auxiliary.lazy.header"></a><h6>
-<a name="id622572"></a>
+<a name="id636566"></a>
<a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/auxiliary/lazy.hpp>
@@ -47,7 +47,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.auxiliary.lazy.namespace"></a><h6>
-<a name="id622647"></a>
+<a name="id636640"></a>
<a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -65,7 +65,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.lazy.model_of"></a><h6>
-<a name="id622725"></a>
+<a name="id636718"></a>
<a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -88,7 +88,7 @@
</dl>
</div>
<a name="spirit.qi.reference.auxiliary.lazy.expression_semantics"></a><h6>
-<a name="id622798"></a>
+<a name="id636791"></a>
<a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.expression_semantics">Expression
Semantics</a>
</h6>
@@ -149,7 +149,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.lazy.attributes"></a><h6>
-<a name="id622989"></a>
+<a name="id636982"></a>
<a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -197,7 +197,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.auxiliary.lazy.complexity"></a><h6>
-<a name="id623111"></a>
+<a name="id637104"></a>
<a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.complexity">Complexity</a>
</h6>
<p>
@@ -205,7 +205,7 @@
parser is determined by the complexity of the parser returned from <code class="computeroutput"><span class="identifier">fp</span></code>.
</p>
<a name="spirit.qi.reference.auxiliary.lazy.example"></a><h6>
-<a name="id623142"></a>
+<a name="id637136"></a>
<a class="link" href="lazy.html#spirit.qi.reference.auxiliary.lazy.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/basics.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/basics.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/basics.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.basics"></a><a class="link" href="basics.html" title="Basics">Basics</a>
</h4></div></div></div>
<a name="spirit.qi.reference.basics.lazy_argument"></a><h6>
-<a name="id611660"></a>
+<a name="id626336"></a>
<a class="link" href="basics.html#spirit.qi.reference.basics.lazy_argument">Lazy Argument</a>
</h6>
<p>
@@ -51,7 +51,7 @@
second argument. This is done for uniformity with Semantic Actions).
</p>
<a name="spirit.qi.reference.basics.character_encoding_namespace"></a><h6>
-<a name="id611797"></a>
+<a name="id626473"></a>
<a class="link" href="basics.html#spirit.qi.reference.basics.character_encoding_namespace">Character
Encoding Namespace</a>
</h6>
@@ -112,7 +112,7 @@
</li>
</ul></div>
<a name="spirit.qi.reference.basics.examples"></a><h6>
-<a name="id611980"></a>
+<a name="id626656"></a>
<a class="link" href="basics.html#spirit.qi.reference.basics.examples">Examples</a>
</h6>
<p>
@@ -264,11 +264,11 @@
<p>
</p>
<a name="spirit.qi.reference.basics.string"></a><h6>
-<a name="id615647"></a>
+<a name="id630391"></a>
<a class="link" href="basics.html#spirit.qi.reference.basics.string">String</a>
</h6>
<a name="spirit.qi.reference.basics.header"></a><h6>
-<a name="id615660"></a>
+<a name="id630404"></a>
<a class="link" href="basics.html#spirit.qi.reference.basics.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/support/string_traits.hpp>
@@ -369,7 +369,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.basics.models"></a><h6>
-<a name="id616133"></a>
+<a name="id630877"></a>
<a class="link" href="basics.html#spirit.qi.reference.basics.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/binary.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/binary.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/binary.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/binary.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -41,7 +41,7 @@
input.
</p>
<a name="spirit.qi.reference.binary.module_header"></a><h6>
-<a name="id623406"></a>
+<a name="id637400"></a>
<a class="link" href="binary.html#spirit.qi.reference.binary.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/binary.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_big.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Endian</a>
</h5></div></div></div>
<a name="spirit.qi.reference.binary.binary_big.description"></a><h6>
-<a name="id628877"></a>
+<a name="id642870"></a>
<a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.description">Description</a>
</h6>
<p>
@@ -36,7 +36,7 @@
are laid out in big endian.
</p>
<a name="spirit.qi.reference.binary.binary_big.header"></a><h6>
-<a name="id628894"></a>
+<a name="id642887"></a>
<a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/binary.hpp>
@@ -46,7 +46,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.binary.binary_big.namespace"></a><h6>
-<a name="id628968"></a>
+<a name="id642961"></a>
<a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -90,7 +90,7 @@
</p></td></tr>
</table></div>
<a name="spirit.qi.reference.binary.binary_big.model_of"></a><h6>
-<a name="id629162"></a>
+<a name="id643156"></a>
<a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.model_of">Model
of</a>
</h6>
@@ -127,7 +127,7 @@
</dl>
</div>
<a name="spirit.qi.reference.binary.binary_big.expression_semantics"></a><h6>
-<a name="id629274"></a>
+<a name="id643267"></a>
<a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.expression_semantics">Expression
Semantics</a>
</h6>
@@ -228,7 +228,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.binary.binary_big.attributes"></a><h6>
-<a name="id629513"></a>
+<a name="id643506"></a>
<a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -324,7 +324,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.binary.binary_big.complexity"></a><h6>
-<a name="id629801"></a>
+<a name="id643794"></a>
<a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -337,7 +337,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.binary.binary_big.example"></a><h6>
-<a name="id629825"></a>
+<a name="id643818"></a>
<a class="link" href="binary_big.html#spirit.qi.reference.binary.binary_big.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_little.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Little Endian</a>
</h5></div></div></div>
<a name="spirit.qi.reference.binary.binary_little.description"></a><h6>
-<a name="id627418"></a>
+<a name="id640319"></a>
<a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.description">Description</a>
</h6>
<p>
@@ -36,7 +36,7 @@
that are laid out in little endian.
</p>
<a name="spirit.qi.reference.binary.binary_little.header"></a><h6>
-<a name="id627435"></a>
+<a name="id640336"></a>
<a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/binary.hpp>
@@ -46,7 +46,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.binary.binary_little.namespace"></a><h6>
-<a name="id627510"></a>
+<a name="id640410"></a>
<a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -91,7 +91,7 @@
</p></td></tr>
</table></div>
<a name="spirit.qi.reference.binary.binary_little.model_of"></a><h6>
-<a name="id627704"></a>
+<a name="id640605"></a>
<a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.model_of">Model
of</a>
</h6>
@@ -128,7 +128,7 @@
</dl>
</div>
<a name="spirit.qi.reference.binary.binary_little.expression_semantics"></a><h6>
-<a name="id627816"></a>
+<a name="id640716"></a>
<a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.expression_semantics">Expression
Semantics</a>
</h6>
@@ -229,7 +229,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.binary.binary_little.attributes"></a><h6>
-<a name="id628055"></a>
+<a name="id642048"></a>
<a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -325,7 +325,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.binary.binary_little.complexity"></a><h6>
-<a name="id628343"></a>
+<a name="id642336"></a>
<a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -338,7 +338,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.binary.binary_little.example"></a><h6>
-<a name="id628367"></a>
+<a name="id642360"></a>
<a class="link" href="binary_little.html#spirit.qi.reference.binary.binary_little.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/binary/binary_native.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Native Endian</a>
</h5></div></div></div>
<a name="spirit.qi.reference.binary.binary_native.description"></a><h6>
-<a name="id623490"></a>
+<a name="id637484"></a>
<a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
of the target architecture.
</p>
<a name="spirit.qi.reference.binary.binary_native.header"></a><h6>
-<a name="id623512"></a>
+<a name="id637505"></a>
<a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/binary.hpp>
@@ -47,7 +47,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.binary.binary_native.namespace"></a><h6>
-<a name="id623586"></a>
+<a name="id637580"></a>
<a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -97,7 +97,7 @@
</p></td></tr>
</table></div>
<a name="spirit.qi.reference.binary.binary_native.model_of"></a><h6>
-<a name="id623814"></a>
+<a name="id637808"></a>
<a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.model_of">Model
of</a>
</h6>
@@ -140,7 +140,7 @@
</dl>
</div>
<a name="spirit.qi.reference.binary.binary_native.expression_semantics"></a><h6>
-<a name="id625731"></a>
+<a name="id638632"></a>
<a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.expression_semantics">Expression
Semantics</a>
</h6>
@@ -265,7 +265,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.binary.binary_native.attributes"></a><h6>
-<a name="id626029"></a>
+<a name="id638930"></a>
<a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -385,7 +385,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.binary.binary_native.complexity"></a><h6>
-<a name="id626397"></a>
+<a name="id639298"></a>
<a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -398,7 +398,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.binary.binary_native.example"></a><h6>
-<a name="id626421"></a>
+<a name="id639322"></a>
<a class="link" href="binary_native.html#spirit.qi.reference.binary.binary_native.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/char.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/char.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/char.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/char.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -43,7 +43,7 @@
etc.).
</p>
<a name="spirit.qi.reference.char.module_header"></a><h6>
-<a name="id631682"></a>
+<a name="id644514"></a>
<a class="link" href="char.html#spirit.qi.reference.char.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/char.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/char/char.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/char/char.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.char.char"></a><a class="link" href="char.html" title="Char (char_, lit)"> Char (<code class="computeroutput"><span class="identifier">char_</span></code>, <code class="computeroutput"><span class="identifier">lit</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.char.char.description"></a><h6>
-<a name="id631780"></a>
+<a name="id644613"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.description">Description</a>
</h6>
<p>
@@ -41,7 +41,7 @@
There are various forms of <code class="computeroutput"><span class="identifier">char_</span></code>.
</p>
<a name="spirit.qi.reference.char.char.char_"></a><h6>
-<a name="id631827"></a>
+<a name="id644660"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.char_">char_</a>
</h6>
<p>
@@ -52,7 +52,7 @@
<pre class="programlisting"><span class="identifier">char_</span> <span class="comment">// matches any character
</span></pre>
<a name="spirit.qi.reference.char.char.char__ch_"></a><h6>
-<a name="id631868"></a>
+<a name="id644700"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.char__ch_">char_(ch)</a>
</h6>
<p>
@@ -64,7 +64,7 @@
</span><span class="identifier">char_</span><span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="comment">// matches x (a char)
</span></pre>
<a name="spirit.qi.reference.char.char.char__first__last_"></a><h6>
-<a name="id631956"></a>
+<a name="id644789"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.char__first__last_">char_(first,
last)</a>
</h6>
@@ -116,7 +116,7 @@
</td></tr>
</table></div>
<a name="spirit.qi.reference.char.char.char__def_"></a><h6>
-<a name="id632136"></a>
+<a name="id644969"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.char__def_">char_(def)</a>
</h6>
<p>
@@ -132,7 +132,7 @@
</span><span class="identifier">char_</span><span class="special">(</span><span class="string">"\x7f\x7e"</span><span class="special">)</span> <span class="comment">// Hexadecimal 0x7F and 0x7E
</span></pre>
<a name="spirit.qi.reference.char.char.lit_ch_"></a><h6>
-<a name="id632249"></a>
+<a name="id645082"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.lit_ch_">lit(ch)</a>
</h6>
<p>
@@ -168,7 +168,7 @@
<span class="identifier">lit</span><span class="special">(</span><span class="identifier">c</span><span class="special">)</span> <span class="comment">// c is a char
</span></pre>
<a name="spirit.qi.reference.char.char.header"></a><h6>
-<a name="id632412"></a>
+<a name="id645245"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/char/char.hpp>
@@ -178,7 +178,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.char.char.namespace"></a><h6>
-<a name="id632480"></a>
+<a name="id645312"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -208,7 +208,7 @@
Encoding Namespace</a>.
</p>
<a name="spirit.qi.reference.char.char.model_of"></a><h6>
-<a name="id632598"></a>
+<a name="id645431"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -255,7 +255,7 @@
</dl>
</div>
<a name="spirit.qi.reference.char.char.expression_semantics"></a><h6>
-<a name="id632805"></a>
+<a name="id645638"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.expression_semantics">Expression
Semantics</a>
</h6>
@@ -375,7 +375,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.char.char.attributes"></a><h6>
-<a name="id633212"></a>
+<a name="id646044"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -492,7 +492,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.char.char.complexity"></a><h6>
-<a name="id634165"></a>
+<a name="id648776"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -508,7 +508,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.char.char.example"></a><h6>
-<a name="id634206"></a>
+<a name="id648817"></a>
<a class="link" href="char.html#spirit.qi.reference.char.char.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/char/char_class.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
etc.)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.char.char_class.description"></a><h6>
-<a name="id634828"></a>
+<a name="id649440"></a>
<a class="link" href="char_class.html#spirit.qi.reference.char.char_class.description">Description</a>
</h6>
<p>
@@ -41,7 +41,7 @@
such as inhibiting case sensitivity.
</p>
<a name="spirit.qi.reference.char.char_class.header"></a><h6>
-<a name="id634880"></a>
+<a name="id649492"></a>
<a class="link" href="char_class.html#spirit.qi.reference.char.char_class.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/char/char_class.hpp>
@@ -51,7 +51,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.char.char_class.namespace"></a><h6>
-<a name="id634947"></a>
+<a name="id649559"></a>
<a class="link" href="char_class.html#spirit.qi.reference.char.char_class.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -130,7 +130,7 @@
Encoding Namespace</a>.
</p>
<a name="spirit.qi.reference.char.char_class.model_of"></a><h6>
-<a name="id635306"></a>
+<a name="id649918"></a>
<a class="link" href="char_class.html#spirit.qi.reference.char.char_class.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -153,7 +153,7 @@
</dl>
</div>
<a name="spirit.qi.reference.char.char_class.expression_semantics"></a><h6>
-<a name="id635372"></a>
+<a name="id649984"></a>
<a class="link" href="char_class.html#spirit.qi.reference.char.char_class.expression_semantics">Expression
Semantics</a>
</h6>
@@ -326,7 +326,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.char.char_class.attributes"></a><h6>
-<a name="id635811"></a>
+<a name="id650423"></a>
<a class="link" href="char_class.html#spirit.qi.reference.char.char_class.attributes">Attributes</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -340,7 +340,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.char.char_class.complexity"></a><h6>
-<a name="id635847"></a>
+<a name="id650459"></a>
<a class="link" href="char_class.html#spirit.qi.reference.char.char_class.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -353,7 +353,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.char.char_class.example"></a><h6>
-<a name="id635871"></a>
+<a name="id650483"></a>
<a class="link" href="char_class.html#spirit.qi.reference.char.char_class.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/directive.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -47,7 +47,7 @@
<code class="computeroutput"><span class="identifier">raw</span></code>, and <code class="computeroutput"><span class="identifier">skip</span></code> directives.
</p>
<a name="spirit.qi.reference.directive.module_header"></a><h6>
-<a name="id636200"></a>
+<a name="id650812"></a>
<a class="link" href="directive.html#spirit.qi.reference.directive.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/lexeme.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Skipping (<code class="computeroutput"><span class="identifier">lexeme</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.directive.lexeme.description"></a><h6>
-<a name="id637388"></a>
+<a name="id650907"></a>
<a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.description">Description</a>
</h6>
<p>
@@ -51,7 +51,7 @@
will be parsed as <code class="computeroutput"><span class="string">"12345"</span></code>.
</p>
<a name="spirit.qi.reference.directive.lexeme.header"></a><h6>
-<a name="id637534"></a>
+<a name="id651053"></a>
<a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive/lexeme.hpp>
@@ -61,7 +61,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.directive.lexeme.namespace"></a><h6>
-<a name="id637608"></a>
+<a name="id651128"></a>
<a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -79,7 +79,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.qi.reference.directive.lexeme.model_of"></a><h6>
-<a name="id637686"></a>
+<a name="id651206"></a>
<a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -101,7 +101,7 @@
</dl>
</div>
<a name="spirit.qi.reference.directive.lexeme.expression_semantics"></a><h6>
-<a name="id637757"></a>
+<a name="id651276"></a>
<a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.expression_semantics">Expression
Semantics</a>
</h6>
@@ -140,7 +140,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.directive.lexeme.attributes"></a><h6>
-<a name="id637862"></a>
+<a name="id651381"></a>
<a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.attributes">Attributes</a>
</h6>
<p>
@@ -182,7 +182,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.directive.lexeme.complexity"></a><h6>
-<a name="id638033"></a>
+<a name="id651552"></a>
<a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -196,7 +196,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.directive.lexeme.example"></a><h6>
-<a name="id638064"></a>
+<a name="id651584"></a>
<a class="link" href="lexeme.html#spirit.qi.reference.directive.lexeme.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/no_case.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Case Sensitivity (<code class="computeroutput"><span class="identifier">no_case</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.directive.no_case.description"></a><h6>
-<a name="id638328"></a>
+<a name="id651848"></a>
<a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.description">Description</a>
</h6>
<p>
@@ -38,7 +38,7 @@
parser (and all its children) to be case insensitive.
</p>
<a name="spirit.qi.reference.directive.no_case.header"></a><h6>
-<a name="id638356"></a>
+<a name="id651875"></a>
<a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive/no_case.hpp>
@@ -48,7 +48,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.directive.no_case.namespace"></a><h6>
-<a name="id638430"></a>
+<a name="id651950"></a>
<a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -70,7 +70,7 @@
Encoding Namespace</a>.
</p>
<a name="spirit.qi.reference.directive.no_case.model_of"></a><h6>
-<a name="id638512"></a>
+<a name="id652031"></a>
<a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.model_of">Model
of</a>
</h6>
@@ -93,7 +93,7 @@
</dl>
</div>
<a name="spirit.qi.reference.directive.no_case.expression_semantics"></a><h6>
-<a name="id638597"></a>
+<a name="id652116"></a>
<a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.expression_semantics">Expression
Semantics</a>
</h6>
@@ -133,7 +133,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.directive.no_case.attributes"></a><h6>
-<a name="id638700"></a>
+<a name="id652220"></a>
<a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.attributes">Attributes</a>
</h6>
<p>
@@ -175,7 +175,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.directive.no_case.complexity"></a><h6>
-<a name="id638894"></a>
+<a name="id652413"></a>
<a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -189,7 +189,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.directive.no_case.example"></a><h6>
-<a name="id638925"></a>
+<a name="id652444"></a>
<a class="link" href="no_case.html#spirit.qi.reference.directive.no_case.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/omit.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
(<code class="computeroutput"><span class="identifier">omit</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.directive.omit.description"></a><h6>
-<a name="id640126"></a>
+<a name="id653628"></a>
<a class="link" href="omit.html#spirit.qi.reference.directive.omit.description">Description</a>
</h6>
<p>
@@ -36,7 +36,7 @@
ignores the attribute of its subject parser replacing it with <code class="computeroutput"><span class="identifier">unused</span></code>.
</p>
<a name="spirit.qi.reference.directive.omit.header"></a><h6>
-<a name="id640160"></a>
+<a name="id653663"></a>
<a class="link" href="omit.html#spirit.qi.reference.directive.omit.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive/omit.hpp>
@@ -46,7 +46,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.directive.omit.namespace"></a><h6>
-<a name="id640235"></a>
+<a name="id653737"></a>
<a class="link" href="omit.html#spirit.qi.reference.directive.omit.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -64,7 +64,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.qi.reference.directive.omit.model_of"></a><h6>
-<a name="id640313"></a>
+<a name="id653815"></a>
<a class="link" href="omit.html#spirit.qi.reference.directive.omit.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -86,7 +86,7 @@
</dl>
</div>
<a name="spirit.qi.reference.directive.omit.expression_semantics"></a><h6>
-<a name="id640381"></a>
+<a name="id653884"></a>
<a class="link" href="omit.html#spirit.qi.reference.directive.omit.expression_semantics">Expression
Semantics</a>
</h6>
@@ -125,7 +125,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.directive.omit.attributes"></a><h6>
-<a name="id640483"></a>
+<a name="id653986"></a>
<a class="link" href="omit.html#spirit.qi.reference.directive.omit.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -159,7 +159,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.directive.omit.complexity"></a><h6>
-<a name="id640572"></a>
+<a name="id654074"></a>
<a class="link" href="omit.html#spirit.qi.reference.directive.omit.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -173,7 +173,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.directive.omit.example"></a><h6>
-<a name="id640603"></a>
+<a name="id654106"></a>
<a class="link" href="omit.html#spirit.qi.reference.directive.omit.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/raw.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Parsing (<code class="computeroutput"><span class="identifier">raw</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.directive.raw.description"></a><h6>
-<a name="id640900"></a>
+<a name="id654402"></a>
<a class="link" href="raw.html#spirit.qi.reference.directive.raw.description">Description</a>
</h6>
<p>
@@ -39,7 +39,7 @@
Spirit transduction (un-attributed) behavior for a subject parser.
</p>
<a name="spirit.qi.reference.directive.raw.header"></a><h6>
-<a name="id640961"></a>
+<a name="id654463"></a>
<a class="link" href="raw.html#spirit.qi.reference.directive.raw.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive/raw.hpp>
@@ -49,7 +49,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.directive.raw.namespace"></a><h6>
-<a name="id641035"></a>
+<a name="id654538"></a>
<a class="link" href="raw.html#spirit.qi.reference.directive.raw.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -67,7 +67,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.qi.reference.directive.raw.model_of"></a><h6>
-<a name="id641113"></a>
+<a name="id654616"></a>
<a class="link" href="raw.html#spirit.qi.reference.directive.raw.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -93,7 +93,7 @@
</dl>
</div>
<a name="spirit.qi.reference.directive.raw.expression_semantics"></a><h6>
-<a name="id641209"></a>
+<a name="id654712"></a>
<a class="link" href="raw.html#spirit.qi.reference.directive.raw.expression_semantics">Expression
Semantics</a>
</h6>
@@ -134,7 +134,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.directive.raw.attributes"></a><h6>
-<a name="id641335"></a>
+<a name="id654838"></a>
<a class="link" href="raw.html#spirit.qi.reference.directive.raw.attributes">Attributes</a>
</h6>
<p>
@@ -185,7 +185,7 @@
</p></td></tr>
</table></div>
<a name="spirit.qi.reference.directive.raw.complexity"></a><h6>
-<a name="id641550"></a>
+<a name="id655052"></a>
<a class="link" href="raw.html#spirit.qi.reference.directive.raw.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -199,7 +199,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.directive.raw.example"></a><h6>
-<a name="id641581"></a>
+<a name="id655084"></a>
<a class="link" href="raw.html#spirit.qi.reference.directive.raw.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/repeat.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
(<code class="computeroutput"><span class="identifier">repeat</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.directive.repeat.description"></a><h6>
-<a name="id641891"></a>
+<a name="id655393"></a>
<a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.description">Description</a>
</h6>
<p>
@@ -51,7 +51,7 @@
</li>
</ul></div>
<a name="spirit.qi.reference.directive.repeat.header"></a><h6>
-<a name="id641942"></a>
+<a name="id655445"></a>
<a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive/repeat.hpp>
@@ -61,7 +61,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.directive.repeat.namespace"></a><h6>
-<a name="id642017"></a>
+<a name="id655519"></a>
<a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -87,7 +87,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.directive.repeat.model_of"></a><h6>
-<a name="id642132"></a>
+<a name="id655634"></a>
<a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -116,7 +116,7 @@
</dl>
</div>
<a name="spirit.qi.reference.directive.repeat.expression_semantics"></a><h6>
-<a name="id642262"></a>
+<a name="id655764"></a>
<a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.expression_semantics">Expression
Semantics</a>
</h6>
@@ -202,7 +202,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.directive.repeat.attributes"></a><h6>
-<a name="id644074"></a>
+<a name="id657320"></a>
<a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.attributes">Attributes</a>
</h6>
<p>
@@ -296,7 +296,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.directive.repeat.complexity"></a><h6>
-<a name="id644746"></a>
+<a name="id657992"></a>
<a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -311,7 +311,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.directive.repeat.example"></a><h6>
-<a name="id644777"></a>
+<a name="id658023"></a>
<a class="link" href="repeat.html#spirit.qi.reference.directive.repeat.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/directive/skip.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Skipping (<code class="computeroutput"><span class="identifier">skip</span><span class="special">[]</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.directive.skip.description"></a><h6>
-<a name="id645688"></a>
+<a name="id658934"></a>
<a class="link" href="skip.html#spirit.qi.reference.directive.skip.description">Description</a>
</h6>
<p>
@@ -60,7 +60,7 @@
</li>
</ul></div>
<a name="spirit.qi.reference.directive.skip.header"></a><h6>
-<a name="id645821"></a>
+<a name="id659067"></a>
<a class="link" href="skip.html#spirit.qi.reference.directive.skip.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/directive/skip.hpp>
@@ -70,7 +70,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.directive.skip.namespace"></a><h6>
-<a name="id645895"></a>
+<a name="id659142"></a>
<a class="link" href="skip.html#spirit.qi.reference.directive.skip.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -88,7 +88,7 @@
</td></tr></tbody>
</table></div>
<a name="spirit.qi.reference.directive.skip.model_of"></a><h6>
-<a name="id646065"></a>
+<a name="id659316"></a>
<a class="link" href="skip.html#spirit.qi.reference.directive.skip.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -110,7 +110,7 @@
</dl>
</div>
<a name="spirit.qi.reference.directive.skip.expression_semantics"></a><h6>
-<a name="id646134"></a>
+<a name="id659384"></a>
<a class="link" href="skip.html#spirit.qi.reference.directive.skip.expression_semantics">Expression
Semantics</a>
</h6>
@@ -164,7 +164,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.directive.skip.attributes"></a><h6>
-<a name="id646285"></a>
+<a name="id659535"></a>
<a class="link" href="skip.html#spirit.qi.reference.directive.skip.attributes">Attributes</a>
</h6>
<p>
@@ -224,7 +224,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.directive.skip.complexity"></a><h6>
-<a name="id646585"></a>
+<a name="id659835"></a>
<a class="link" href="skip.html#spirit.qi.reference.directive.skip.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -238,7 +238,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.directive.skip.example"></a><h6>
-<a name="id646616"></a>
+<a name="id659866"></a>
<a class="link" href="skip.html#spirit.qi.reference.directive.skip.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -56,7 +56,7 @@
write extremely tight generic C++ code that rivals, if not surpasses C.
</p>
<a name="spirit.qi.reference.numeric.module_header"></a><h6>
-<a name="id646886"></a>
+<a name="id660136"></a>
<a class="link" href="numeric.html#spirit.qi.reference.numeric.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/numeric.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/boolean.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/boolean.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/boolean.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/boolean.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
(<code class="computeroutput"><span class="identifier">bool_</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.numeric.boolean.description"></a><h6>
-<a name="id659267"></a>
+<a name="id674360"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.description">Description</a>
</h6>
<p>
@@ -39,7 +39,7 @@
expression requirements (documented below).
</p>
<a name="spirit.qi.reference.numeric.boolean.header"></a><h6>
-<a name="id659305"></a>
+<a name="id674399"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/numeric/bool.hpp>
@@ -49,7 +49,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.numeric.boolean.namespace"></a><h6>
-<a name="id659380"></a>
+<a name="id674473"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -67,14 +67,14 @@
</td></tr></tbody>
</table></div>
<a name="spirit.qi.reference.numeric.boolean.synopsis"></a><h6>
-<a name="id659458"></a>
+<a name="id674551"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="keyword">template</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">RealPolicies</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">bool_parser</span><span class="special">;</span>
</pre>
<a name="spirit.qi.reference.numeric.boolean.template_parameters"></a><h6>
-<a name="id659523"></a>
+<a name="id674616"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.template_parameters">Template
parameters</a>
</h6>
@@ -139,7 +139,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.numeric.boolean.model_of"></a><h6>
-<a name="id659661"></a>
+<a name="id674754"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -178,7 +178,7 @@
</dl>
</div>
<a name="spirit.qi.reference.numeric.boolean.expression_semantics"></a><h6>
-<a name="id659815"></a>
+<a name="id674909"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.expression_semantics">Expression
Semantics</a>
</h6>
@@ -231,7 +231,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.numeric.boolean.attributes"></a><h6>
-<a name="id661137"></a>
+<a name="id675070"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.attributes">Attributes</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -245,7 +245,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.numeric.boolean.complexity"></a><h6>
-<a name="id661168"></a>
+<a name="id675101"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -258,7 +258,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.numeric.boolean.minimum_expression_requirements_for__code__phrase_role__identifier__b__phrase___code_"></a><h6>
-<a name="id661192"></a>
+<a name="id675125"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.minimum_expression_requirements_for__code__phrase_role__identifier__b__phrase___code_">Minimum
Expression Requirements for <code class="computeroutput"><span class="identifier">B</span></code></a>
</h6>
@@ -298,7 +298,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.numeric.boolean.boolean__code__phrase_role__identifier__policies__phrase___code_"></a><h6>
-<a name="id661298"></a>
+<a name="id675231"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.boolean__code__phrase_role__identifier__policies__phrase___code_">Boolean
<code class="computeroutput"><span class="identifier">Policies</span></code></a>
</h6>
@@ -316,7 +316,7 @@
and <code class="computeroutput"><span class="string">"false"</span></code>.
</p>
<a name="spirit.qi.reference.numeric.boolean.boolean__code__phrase_role__identifier__policies__phrase___code__expression_requirements"></a><h6>
-<a name="id661364"></a>
+<a name="id675297"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.boolean__code__phrase_role__identifier__policies__phrase___code__expression_requirements">Boolean
<code class="computeroutput"><span class="identifier">Policies</span></code> Expression Requirements</a>
</h6>
@@ -380,7 +380,7 @@
or <code class="computeroutput"><span class="keyword">false</span></code>).
</p>
<a name="spirit.qi.reference.numeric.boolean.boolean__code__phrase_role__identifier__policies__phrase___code__specializations"></a><h6>
-<a name="id661602"></a>
+<a name="id675535"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.boolean__code__phrase_role__identifier__policies__phrase___code__specializations">Boolean
<code class="computeroutput"><span class="identifier">Policies</span></code> Specializations</a>
</h6>
@@ -410,7 +410,7 @@
<span class="special">};</span>
</pre>
<a name="spirit.qi.reference.numeric.boolean.example"></a><h6>
-<a name="id662000"></a>
+<a name="id675933"></a>
<a class="link" href="boolean.html#spirit.qi.reference.numeric.boolean.example">Example</a>
</h6>
<p>
@@ -465,7 +465,8 @@
<span class="keyword">namespace</span> <span class="identifier">qi</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">qi</span><span class="special">;</span>
<span class="keyword">if</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">string_parse</span><span class="special">(</span><span class="string">"eurt"</span><span class="special">,</span> <span class="identifier">first</span><span class="special">,</span> <span class="identifier">last</span><span class="special">,</span> <span class="identifier">qi</span><span class="special">::</span><span class="identifier">unused</span><span class="special">))</span>
<span class="special">{</span>
- <span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">assign_to</span><span class="special">(</span><span class="keyword">false</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">);</span> <span class="comment">// result is false
+ <span class="keyword">namespace</span> <span class="identifier">traits</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">traits</span><span class="special">;</span>
+ <span class="identifier">traits</span><span class="special">::</span><span class="identifier">assign_to</span><span class="special">(</span><span class="keyword">false</span><span class="special">,</span> <span class="identifier">attr</span><span class="special">);</span> <span class="comment">// result is false
</span> <span class="keyword">return</span> <span class="keyword">true</span><span class="special">;</span>
<span class="special">}</span>
<span class="keyword">return</span> <span class="keyword">false</span><span class="special">;</span>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/int.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
(<code class="computeroutput"><span class="identifier">int_</span></code>, etc.)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.numeric.int.description"></a><h6>
-<a name="id649328"></a>
+<a name="id663670"></a>
<a class="link" href="int.html#spirit.qi.reference.numeric.int.description">Description</a>
</h6>
<p>
@@ -46,7 +46,7 @@
type follows certain expression requirements (documented below).
</p>
<a name="spirit.qi.reference.numeric.int.header"></a><h6>
-<a name="id649392"></a>
+<a name="id663734"></a>
<a class="link" href="int.html#spirit.qi.reference.numeric.int.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/numeric/int.hpp>
@@ -56,7 +56,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.numeric.int.namespace"></a><h6>
-<a name="id649466"></a>
+<a name="id663808"></a>
<a class="link" href="int.html#spirit.qi.reference.numeric.int.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -107,7 +107,7 @@
</p></td></tr>
</table></div>
<a name="spirit.qi.reference.numeric.int.synopsis"></a><h6>
-<a name="id649696"></a>
+<a name="id664039"></a>
<a class="link" href="int.html#spirit.qi.reference.numeric.int.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
@@ -118,7 +118,7 @@
<span class="keyword">struct</span> <span class="identifier">int_parser</span><span class="special">;</span>
</pre>
<a name="spirit.qi.reference.numeric.int.template_parameters"></a><h6>
-<a name="id649792"></a>
+<a name="id664135"></a>
<a class="link" href="int.html#spirit.qi.reference.numeric.int.template_parameters">Template
parameters</a>
</h6>
@@ -218,7 +218,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.numeric.int.model_of"></a><h6>
-<a name="id649965"></a>
+<a name="id664308"></a>
<a class="link" href="int.html#spirit.qi.reference.numeric.int.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -246,7 +246,7 @@
</dl>
</div>
<a name="spirit.qi.reference.numeric.int.expression_semantics"></a><h6>
-<a name="id650056"></a>
+<a name="id664399"></a>
<a class="link" href="int.html#spirit.qi.reference.numeric.int.expression_semantics">Expression
Semantics</a>
</h6>
@@ -339,7 +339,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.numeric.int.attributes"></a><h6>
-<a name="id650440"></a>
+<a name="id664783"></a>
<a class="link" href="int.html#spirit.qi.reference.numeric.int.attributes">Attributes</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -353,7 +353,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.numeric.int.complexity"></a><h6>
-<a name="id652661"></a>
+<a name="id665434"></a>
<a class="link" href="int.html#spirit.qi.reference.numeric.int.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -366,7 +366,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.numeric.int.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_"></a><h6>
-<a name="id652685"></a>
+<a name="id665458"></a>
<a class="link" href="int.html#spirit.qi.reference.numeric.int.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_">Minimum
Expression Requirements for <code class="computeroutput"><span class="identifier">T</span></code></a>
</h6>
@@ -527,7 +527,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.numeric.int.example"></a><h6>
-<a name="id653235"></a>
+<a name="id666007"></a>
<a class="link" href="int.html#spirit.qi.reference.numeric.int.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/real.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
etc.)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.numeric.real.description"></a><h6>
-<a name="id653385"></a>
+<a name="id666157"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real.description">Description</a>
</h6>
<p>
@@ -41,7 +41,7 @@
(documented below).
</p>
<a name="spirit.qi.reference.numeric.real.header"></a><h6>
-<a name="id653423"></a>
+<a name="id666196"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/numeric/real.hpp>
@@ -51,7 +51,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.numeric.real.namespace"></a><h6>
-<a name="id653498"></a>
+<a name="id666270"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -83,14 +83,14 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.numeric.real.synopsis"></a><h6>
-<a name="id653652"></a>
+<a name="id666425"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="keyword">template</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">RealPolicies</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">real_parser</span><span class="special">;</span>
</pre>
<a name="spirit.qi.reference.numeric.real.template_parameters"></a><h6>
-<a name="id653717"></a>
+<a name="id666490"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real.template_parameters">Template
parameters</a>
</h6>
@@ -154,7 +154,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.numeric.real.model_of"></a><h6>
-<a name="id653848"></a>
+<a name="id666620"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -200,7 +200,7 @@
</dl>
</div>
<a name="spirit.qi.reference.numeric.real.expression_semantics"></a><h6>
-<a name="id654051"></a>
+<a name="id666823"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real.expression_semantics">Expression
Semantics</a>
</h6>
@@ -280,7 +280,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.numeric.real.attributes"></a><h6>
-<a name="id654339"></a>
+<a name="id667111"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real.attributes">Attributes</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -294,7 +294,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.numeric.real.complexity"></a><h6>
-<a name="id654370"></a>
+<a name="id667142"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -308,7 +308,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.numeric.real.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_"></a><h6>
-<a name="id654394"></a>
+<a name="id667166"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_">Minimum
Expression Requirements for <code class="computeroutput"><span class="identifier">T</span></code></a>
</h6>
@@ -530,7 +530,7 @@
</p></td></tr>
</table></div>
<a name="spirit.qi.reference.numeric.real._code__phrase_role__identifier__realpolicies__phrase___code_"></a><h6>
-<a name="id655289"></a>
+<a name="id668062"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real._code__phrase_role__identifier__realpolicies__phrase___code_"><code class="computeroutput"><span class="identifier">RealPolicies</span></code></a>
</h6>
<p>
@@ -592,7 +592,7 @@
pre-defined for immediate use:
</p>
<div class="table">
-<a name="id655890"></a><p class="title"><b>Table 4. Predefined Policies</b></p>
+<a name="id668663"></a><p class="title"><b>Table 4. Predefined Policies</b></p>
<div class="table-contents"><table class="table" summary="Predefined Policies">
<colgroup>
<col>
@@ -679,7 +679,7 @@
</p></td></tr>
</table></div>
<a name="spirit.qi.reference.numeric.real._code__phrase_role__identifier__realpolicies__phrase___code__expression_requirements"></a><h6>
-<a name="id656121"></a>
+<a name="id668893"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real._code__phrase_role__identifier__realpolicies__phrase___code__expression_requirements"><code class="computeroutput"><span class="identifier">RealPolicies</span></code> Expression Requirements</a>
</h6>
<p>
@@ -904,7 +904,7 @@
be automatically applied afterwards.
</p>
<a name="spirit.qi.reference.numeric.real._code__phrase_role__identifier__realpolicies__phrase___code__specializations"></a><h6>
-<a name="id656963"></a>
+<a name="id669736"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real._code__phrase_role__identifier__realpolicies__phrase___code__specializations"><code class="computeroutput"><span class="identifier">RealPolicies</span></code> Specializations</a>
</h6>
<p>
@@ -920,7 +920,7 @@
<span class="special">};</span>
</pre>
<a name="spirit.qi.reference.numeric.real.example"></a><h6>
-<a name="id657792"></a>
+<a name="id672886"></a>
<a class="link" href="real.html#spirit.qi.reference.numeric.real.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/numeric/uint.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
(<code class="computeroutput"><span class="identifier">uint_</span></code>, etc.)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.numeric.uint.description"></a><h6>
-<a name="id646977"></a>
+<a name="id660228"></a>
<a class="link" href="uint.html#spirit.qi.reference.numeric.uint.description">Description</a>
</h6>
<p>
@@ -42,7 +42,7 @@
is a template class. Template parameters fine tune its behavior.
</p>
<a name="spirit.qi.reference.numeric.uint.header"></a><h6>
-<a name="id647023"></a>
+<a name="id660273"></a>
<a class="link" href="uint.html#spirit.qi.reference.numeric.uint.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/numeric/uint.hpp>
@@ -52,7 +52,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.numeric.uint.namespace"></a><h6>
-<a name="id647097"></a>
+<a name="id660348"></a>
<a class="link" href="uint.html#spirit.qi.reference.numeric.uint.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -121,7 +121,7 @@
</p></td></tr>
</table></div>
<a name="spirit.qi.reference.numeric.uint.synopsis"></a><h6>
-<a name="id647441"></a>
+<a name="id660691"></a>
<a class="link" href="uint.html#spirit.qi.reference.numeric.uint.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span>
@@ -132,7 +132,7 @@
<span class="keyword">struct</span> <span class="identifier">uint_parser</span><span class="special">;</span>
</pre>
<a name="spirit.qi.reference.numeric.uint.template_parameters"></a><h6>
-<a name="id647537"></a>
+<a name="id660787"></a>
<a class="link" href="uint.html#spirit.qi.reference.numeric.uint.template_parameters">Template
parameters</a>
</h6>
@@ -232,7 +232,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.numeric.uint.model_of"></a><h6>
-<a name="id647709"></a>
+<a name="id660960"></a>
<a class="link" href="uint.html#spirit.qi.reference.numeric.uint.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -260,7 +260,7 @@
</dl>
</div>
<a name="spirit.qi.reference.numeric.uint.expression_semantics"></a><h6>
-<a name="id647801"></a>
+<a name="id661051"></a>
<a class="link" href="uint.html#spirit.qi.reference.numeric.uint.expression_semantics">Expression
Semantics</a>
</h6>
@@ -398,7 +398,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.numeric.uint.attributes"></a><h6>
-<a name="id648435"></a>
+<a name="id662778"></a>
<a class="link" href="uint.html#spirit.qi.reference.numeric.uint.attributes">Attributes</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -412,7 +412,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.numeric.uint.complexity"></a><h6>
-<a name="id648466"></a>
+<a name="id662809"></a>
<a class="link" href="uint.html#spirit.qi.reference.numeric.uint.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -425,7 +425,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.numeric.uint.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_"></a><h6>
-<a name="id648490"></a>
+<a name="id662833"></a>
<a class="link" href="uint.html#spirit.qi.reference.numeric.uint.minimum_expression_requirements_for__code__phrase_role__identifier__t__phrase___code_">Minimum
Expression Requirements for <code class="computeroutput"><span class="identifier">T</span></code></a>
</h6>
@@ -573,7 +573,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.numeric.uint.example"></a><h6>
-<a name="id649006"></a>
+<a name="id663349"></a>
<a class="link" href="uint.html#spirit.qi.reference.numeric.uint.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -78,7 +78,7 @@
(<code class="computeroutput"><span class="special">||</span></code>).
</p>
<a name="spirit.qi.reference.operator.module_header"></a><h6>
-<a name="id662793"></a>
+<a name="id676756"></a>
<a class="link" href="operator.html#spirit.qi.reference.operator.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/karma/operator.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/alternative.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
<span class="identifier">b</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.operator.alternative.description"></a><h6>
-<a name="id662894"></a>
+<a name="id676857"></a>
<a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.description">Description</a>
</h6>
<p>
@@ -60,7 +60,7 @@
to put the (expected) most common choice first for maximum efficiency.
</p>
<a name="spirit.qi.reference.operator.alternative.header"></a><h6>
-<a name="id663058"></a>
+<a name="id677021"></a>
<a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/alternative.hpp>
@@ -70,7 +70,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.operator.alternative.model_of"></a><h6>
-<a name="id663133"></a>
+<a name="id677096"></a>
<a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.model_of">Model
of</a>
</h6>
@@ -94,7 +94,7 @@
</dl>
</div>
<a name="spirit.qi.reference.operator.alternative.expression_semantics"></a><h6>
-<a name="id663211"></a>
+<a name="id678832"></a>
<a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.expression_semantics">Expression
Semantics</a>
</h6>
@@ -134,7 +134,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.alternative.attributes"></a><h6>
-<a name="id664017"></a>
+<a name="id678942"></a>
<a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.attributes">Attributes</a>
</h6>
<p>
@@ -180,7 +180,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.alternative.complexity"></a><h6>
-<a name="id664436"></a>
+<a name="id679361"></a>
<a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -195,7 +195,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.operator.alternative.example"></a><h6>
-<a name="id664460"></a>
+<a name="id679385"></a>
<a class="link" href="alternative.html#spirit.qi.reference.operator.alternative.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/and_predicate.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Predicate (<code class="computeroutput"><span class="special">&</span><span class="identifier">a</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.operator.and_predicate.description"></a><h6>
-<a name="id665160"></a>
+<a name="id680086"></a>
<a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.description">Description</a>
</h6>
<p>
@@ -41,7 +41,7 @@
if its predicate matches.
</p>
<a name="spirit.qi.reference.operator.and_predicate.header"></a><h6>
-<a name="id665201"></a>
+<a name="id680126"></a>
<a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/and_predicate.hpp>
@@ -51,7 +51,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.operator.and_predicate.model_of"></a><h6>
-<a name="id665276"></a>
+<a name="id680201"></a>
<a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.model_of">Model
of</a>
</h6>
@@ -74,7 +74,7 @@
</dl>
</div>
<a name="spirit.qi.reference.operator.and_predicate.expression_semantics"></a><h6>
-<a name="id665346"></a>
+<a name="id680272"></a>
<a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.expression_semantics">Expression
Semantics</a>
</h6>
@@ -114,7 +114,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.and_predicate.attributes"></a><h6>
-<a name="id665444"></a>
+<a name="id680369"></a>
<a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.attributes">Attributes</a>
</h6>
<p>
@@ -152,7 +152,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.and_predicate.complexity"></a><h6>
-<a name="id665536"></a>
+<a name="id680461"></a>
<a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -165,7 +165,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.operator.and_predicate.example"></a><h6>
-<a name="id665567"></a>
+<a name="id680492"></a>
<a class="link" href="and_predicate.html#spirit.qi.reference.operator.and_predicate.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/difference.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
<span class="identifier">b</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.operator.difference.description"></a><h6>
-<a name="id665723"></a>
+<a name="id680648"></a>
<a class="link" href="difference.html#spirit.qi.reference.operator.difference.description">Description</a>
</h6>
<p>
@@ -37,10 +37,10 @@
<span class="special">-</span> <span class="identifier">b</span></code>,
is a binary operator that matches the first (LHS) operand but not the
second (RHS).
- <sup>[<a name="id665752" href="#ftn.id665752" class="footnote">7</a>]</sup>
+ <sup>[<a name="id680677" href="#ftn.id680677" class="footnote">7</a>]</sup>
</p>
<a name="spirit.qi.reference.operator.difference.header"></a><h6>
-<a name="id665792"></a>
+<a name="id680717"></a>
<a class="link" href="difference.html#spirit.qi.reference.operator.difference.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/difference.hpp>
@@ -50,7 +50,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.operator.difference.model_of"></a><h6>
-<a name="id665866"></a>
+<a name="id680791"></a>
<a class="link" href="difference.html#spirit.qi.reference.operator.difference.model_of">Model
of</a>
</h6>
@@ -74,7 +74,7 @@
</dl>
</div>
<a name="spirit.qi.reference.operator.difference.expression_semantics"></a><h6>
-<a name="id665944"></a>
+<a name="id680869"></a>
<a class="link" href="difference.html#spirit.qi.reference.operator.difference.expression_semantics">Expression
Semantics</a>
</h6>
@@ -115,7 +115,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.difference.attributes"></a><h6>
-<a name="id666054"></a>
+<a name="id680980"></a>
<a class="link" href="difference.html#spirit.qi.reference.operator.difference.attributes">Attributes</a>
</h6>
<p>
@@ -158,7 +158,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.difference.complexity"></a><h6>
-<a name="id667368"></a>
+<a name="id681201"></a>
<a class="link" href="difference.html#spirit.qi.reference.operator.difference.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -172,7 +172,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.operator.difference.example"></a><h6>
-<a name="id667392"></a>
+<a name="id681225"></a>
<a class="link" href="difference.html#spirit.qi.reference.operator.difference.example">Example</a>
</h6>
<p>
@@ -206,7 +206,7 @@
</p>
<div class="footnotes">
<br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id665752" href="#id665752" class="para">7</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id680677" href="#id680677" class="para">7</a>] </sup>
Unlike classic Spirit, with Spirit2, the expression will always fail
if the RHS is a successful match regardless if the RHS matches less
characters. For example, the rule <code class="computeroutput"><span class="identifier">lit</span><span class="special">(</span><span class="string">"policeman"</span><span class="special">)</span> <span class="special">-</span> <span class="string">"police"</span></code> will always fail
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/expect.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
<span class="identifier">b</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.operator.expect.description"></a><h6>
-<a name="id667553"></a>
+<a name="id681386"></a>
<a class="link" href="expect.html#spirit.qi.reference.operator.expect.description">Description</a>
</h6>
<p>
@@ -49,7 +49,7 @@
(all operands except the first) fail to match.
</p>
<a name="spirit.qi.reference.operator.expect.header"></a><h6>
-<a name="id667680"></a>
+<a name="id681513"></a>
<a class="link" href="expect.html#spirit.qi.reference.operator.expect.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/expect.hpp>
@@ -59,7 +59,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.operator.expect.model_of"></a><h6>
-<a name="id667754"></a>
+<a name="id681587"></a>
<a class="link" href="expect.html#spirit.qi.reference.operator.expect.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -86,7 +86,7 @@
</dl>
</div>
<a name="spirit.qi.reference.operator.expect.expectation_failure"></a><h6>
-<a name="id667857"></a>
+<a name="id681690"></a>
<a class="link" href="expect.html#spirit.qi.reference.operator.expect.expectation_failure">Expectation
Failure</a>
</h6>
@@ -102,7 +102,7 @@
</span><span class="special">};</span>
</pre>
<a name="spirit.qi.reference.operator.expect.expression_semantics"></a><h6>
-<a name="id667994"></a>
+<a name="id681827"></a>
<a class="link" href="expect.html#spirit.qi.reference.operator.expect.expression_semantics">Expression
Semantics</a>
</h6>
@@ -143,7 +143,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.expect.attributes"></a><h6>
-<a name="id668137"></a>
+<a name="id681970"></a>
<a class="link" href="expect.html#spirit.qi.reference.operator.expect.attributes">Attributes</a>
</h6>
<p>
@@ -193,7 +193,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.expect.complexity"></a><h6>
-<a name="id668819"></a>
+<a name="id682652"></a>
<a class="link" href="expect.html#spirit.qi.reference.operator.expect.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -209,7 +209,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.operator.expect.example"></a><h6>
-<a name="id668843"></a>
+<a name="id682676"></a>
<a class="link" href="expect.html#spirit.qi.reference.operator.expect.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/kleene.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.operator.kleene"></a><a class="link" href="kleene.html" title="Kleene (*a)"> Kleene (<code class="computeroutput"><span class="special">*</span><span class="identifier">a</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.operator.kleene.description"></a><h6>
-<a name="id669293"></a>
+<a name="id683126"></a>
<a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.description">Description</a>
</h6>
<p>
@@ -35,7 +35,7 @@
is a unary operator that matches its operand zero or more times.
</p>
<a name="spirit.qi.reference.operator.kleene.header"></a><h6>
-<a name="id669320"></a>
+<a name="id683153"></a>
<a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/kleene.hpp>
@@ -45,7 +45,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.operator.kleene.model_of"></a><h6>
-<a name="id670789"></a>
+<a name="id683788"></a>
<a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -67,7 +67,7 @@
</dl>
</div>
<a name="spirit.qi.reference.operator.kleene.expression_semantics"></a><h6>
-<a name="id670860"></a>
+<a name="id683858"></a>
<a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.expression_semantics">Expression
Semantics</a>
</h6>
@@ -107,7 +107,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.kleene.attributes"></a><h6>
-<a name="id670959"></a>
+<a name="id683957"></a>
<a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.attributes">Attributes</a>
</h6>
<p>
@@ -149,7 +149,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.kleene.complexity"></a><h6>
-<a name="id671127"></a>
+<a name="id684125"></a>
<a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -165,7 +165,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.operator.kleene.example"></a><h6>
-<a name="id671158"></a>
+<a name="id684156"></a>
<a class="link" href="kleene.html#spirit.qi.reference.operator.kleene.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/list.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/list.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/list.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/list.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.operator.list"></a><a class="link" href="list.html" title="List (a % b)"> List (<code class="computeroutput"><span class="identifier">a</span> <span class="special">%</span> <span class="identifier">b</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.operator.list.description"></a><h6>
-<a name="id671518"></a>
+<a name="id684516"></a>
<a class="link" href="list.html#spirit.qi.reference.operator.list.description">Description</a>
</h6>
<p>
@@ -40,7 +40,7 @@
<span class="special">>></span> <span class="identifier">a</span><span class="special">)</span></code>.
</p>
<a name="spirit.qi.reference.operator.list.header"></a><h6>
-<a name="id671599"></a>
+<a name="id684598"></a>
<a class="link" href="list.html#spirit.qi.reference.operator.list.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/list.hpp>
@@ -50,7 +50,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.operator.list.model_of"></a><h6>
-<a name="id671674"></a>
+<a name="id684672"></a>
<a class="link" href="list.html#spirit.qi.reference.operator.list.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -73,7 +73,7 @@
</dl>
</div>
<a name="spirit.qi.reference.operator.list.expression_semantics"></a><h6>
-<a name="id671749"></a>
+<a name="id684748"></a>
<a class="link" href="list.html#spirit.qi.reference.operator.list.expression_semantics">Expression
Semantics</a>
</h6>
@@ -117,7 +117,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.list.attributes"></a><h6>
-<a name="id671891"></a>
+<a name="id684889"></a>
<a class="link" href="list.html#spirit.qi.reference.operator.list.attributes">Attributes</a>
</h6>
<p>
@@ -160,7 +160,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.list.complexity"></a><h6>
-<a name="id672118"></a>
+<a name="id685116"></a>
<a class="link" href="list.html#spirit.qi.reference.operator.list.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -176,7 +176,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.operator.list.example"></a><h6>
-<a name="id672149"></a>
+<a name="id685147"></a>
<a class="link" href="list.html#spirit.qi.reference.operator.list.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/not_predicate.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Predicate (<code class="computeroutput"><span class="special">!</span><span class="identifier">a</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.operator.not_predicate.description"></a><h6>
-<a name="id672490"></a>
+<a name="id685488"></a>
<a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.description">Description</a>
</h6>
<p>
@@ -41,7 +41,7 @@
if its predicate fails to match.
</p>
<a name="spirit.qi.reference.operator.not_predicate.header"></a><h6>
-<a name="id672531"></a>
+<a name="id685529"></a>
<a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/not_predicate.hpp>
@@ -51,7 +51,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.operator.not_predicate.model_of"></a><h6>
-<a name="id672605"></a>
+<a name="id685603"></a>
<a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.model_of">Model
of</a>
</h6>
@@ -74,7 +74,7 @@
</dl>
</div>
<a name="spirit.qi.reference.operator.not_predicate.expression_semantics"></a><h6>
-<a name="id672676"></a>
+<a name="id685674"></a>
<a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.expression_semantics">Expression
Semantics</a>
</h6>
@@ -114,7 +114,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.not_predicate.attributes"></a><h6>
-<a name="id672773"></a>
+<a name="id685771"></a>
<a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.attributes">Attributes</a>
</h6>
<p>
@@ -152,7 +152,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.not_predicate.complexity"></a><h6>
-<a name="id672865"></a>
+<a name="id685864"></a>
<a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -165,7 +165,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.operator.not_predicate.example"></a><h6>
-<a name="id672897"></a>
+<a name="id685895"></a>
<a class="link" href="not_predicate.html#spirit.qi.reference.operator.not_predicate.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/optional.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
(<code class="computeroutput"><span class="special">-</span><span class="identifier">a</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.operator.optional.description"></a><h6>
-<a name="id675073"></a>
+<a name="id688071"></a>
<a class="link" href="optional.html#spirit.qi.reference.operator.optional.description">Description</a>
</h6>
<p>
@@ -36,7 +36,7 @@
its operand zero or one time.
</p>
<a name="spirit.qi.reference.operator.optional.header"></a><h6>
-<a name="id675101"></a>
+<a name="id688099"></a>
<a class="link" href="optional.html#spirit.qi.reference.operator.optional.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/optional.hpp>
@@ -46,7 +46,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.operator.optional.model_of"></a><h6>
-<a name="id675175"></a>
+<a name="id688173"></a>
<a class="link" href="optional.html#spirit.qi.reference.operator.optional.model_of">Model
of</a>
</h6>
@@ -69,7 +69,7 @@
</dl>
</div>
<a name="spirit.qi.reference.operator.optional.expression_semantics"></a><h6>
-<a name="id675246"></a>
+<a name="id688244"></a>
<a class="link" href="optional.html#spirit.qi.reference.operator.optional.expression_semantics">Expression
Semantics</a>
</h6>
@@ -109,7 +109,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.optional.attributes"></a><h6>
-<a name="id675344"></a>
+<a name="id688343"></a>
<a class="link" href="optional.html#spirit.qi.reference.operator.optional.attributes">Attributes</a>
</h6>
<p>
@@ -151,7 +151,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.optional.complexity"></a><h6>
-<a name="id675512"></a>
+<a name="id688511"></a>
<a class="link" href="optional.html#spirit.qi.reference.operator.optional.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -164,7 +164,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.operator.optional.example"></a><h6>
-<a name="id675544"></a>
+<a name="id688542"></a>
<a class="link" href="optional.html#spirit.qi.reference.operator.optional.example">Example</a>
</h6>
<p>
@@ -189,7 +189,7 @@
</p>
<p>
Parse a person info with name (in quotes) optional age
- <sup>[<a name="id675748" href="#ftn.id675748" class="footnote">8</a>]</sup>
+ <sup>[<a name="id688746" href="#ftn.id688746" class="footnote">8</a>]</sup>
and optional sex, all separated by comma.
</p>
<p>
@@ -220,7 +220,7 @@
</p>
<div class="footnotes">
<br><hr width="100" align="left">
-<div class="footnote"><p><sup>[<a name="ftn.id675748" href="#id675748" class="para">8</a>] </sup>
+<div class="footnote"><p><sup>[<a name="ftn.id688746" href="#id688746" class="para">8</a>] </sup>
James Bond is shy about his age :-)
</p></div>
</div>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/permutation.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
<span class="identifier">b</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.operator.permutation.description"></a><h6>
-<a name="id676270"></a>
+<a name="id689268"></a>
<a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.description">Description</a>
</h6>
<p>
@@ -53,7 +53,7 @@
<pre class="programlisting"><span class="string">"a"</span><span class="special">,</span> <span class="string">"ab"</span><span class="special">,</span> <span class="string">"abc"</span><span class="special">,</span> <span class="string">"cba"</span><span class="special">,</span> <span class="string">"bca"</span> <span class="special">...</span> <span class="identifier">etc</span><span class="special">.</span>
</pre>
<a name="spirit.qi.reference.operator.permutation.header"></a><h6>
-<a name="id676446"></a>
+<a name="id689444"></a>
<a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/permutation.hpp>
@@ -63,7 +63,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.operator.permutation.model_of"></a><h6>
-<a name="id676520"></a>
+<a name="id689519"></a>
<a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.model_of">Model
of</a>
</h6>
@@ -87,7 +87,7 @@
</dl>
</div>
<a name="spirit.qi.reference.operator.permutation.expression_semantics"></a><h6>
-<a name="id676598"></a>
+<a name="id689597"></a>
<a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.expression_semantics">Expression
Semantics</a>
</h6>
@@ -128,7 +128,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.permutation.attributes"></a><h6>
-<a name="id676709"></a>
+<a name="id689707"></a>
<a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.attributes">Attributes</a>
</h6>
<p>
@@ -173,7 +173,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.permutation.complexity"></a><h6>
-<a name="id677108"></a>
+<a name="id690106"></a>
<a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -189,7 +189,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.operator.permutation.example"></a><h6>
-<a name="id677132"></a>
+<a name="id690130"></a>
<a class="link" href="permutation.html#spirit.qi.reference.operator.permutation.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/plus.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.operator.plus"></a><a class="link" href="plus.html" title="Plus (+a)"> Plus (<code class="computeroutput"><span class="special">+</span><span class="identifier">a</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.operator.plus.description"></a><h6>
-<a name="id677297"></a>
+<a name="id690296"></a>
<a class="link" href="plus.html#spirit.qi.reference.operator.plus.description">Description</a>
</h6>
<p>
@@ -35,7 +35,7 @@
is a unary operator that matches its operand one or more times.
</p>
<a name="spirit.qi.reference.operator.plus.header"></a><h6>
-<a name="id677325"></a>
+<a name="id690323"></a>
<a class="link" href="plus.html#spirit.qi.reference.operator.plus.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/plus.hpp>
@@ -45,7 +45,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.operator.plus.model_of"></a><h6>
-<a name="id677399"></a>
+<a name="id690398"></a>
<a class="link" href="plus.html#spirit.qi.reference.operator.plus.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -67,7 +67,7 @@
</dl>
</div>
<a name="spirit.qi.reference.operator.plus.expression_semantics"></a><h6>
-<a name="id677468"></a>
+<a name="id690466"></a>
<a class="link" href="plus.html#spirit.qi.reference.operator.plus.expression_semantics">Expression
Semantics</a>
</h6>
@@ -107,7 +107,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.plus.attributes"></a><h6>
-<a name="id677564"></a>
+<a name="id690562"></a>
<a class="link" href="plus.html#spirit.qi.reference.operator.plus.attributes">Attributes</a>
</h6>
<p>
@@ -149,7 +149,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.plus.complexity"></a><h6>
-<a name="id677732"></a>
+<a name="id690730"></a>
<a class="link" href="plus.html#spirit.qi.reference.operator.plus.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -165,7 +165,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.operator.plus.example"></a><h6>
-<a name="id677763"></a>
+<a name="id690761"></a>
<a class="link" href="plus.html#spirit.qi.reference.operator.plus.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequence.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
<span class="identifier">b</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.operator.sequence.description"></a><h6>
-<a name="id678092"></a>
+<a name="id691090"></a>
<a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.description">Description</a>
</h6>
<p>
@@ -40,7 +40,7 @@
<pre class="programlisting"><span class="identifier">a</span> <span class="special">>></span> <span class="identifier">b</span> <span class="special">>></span> <span class="special">...</span>
</pre>
<a name="spirit.qi.reference.operator.sequence.header"></a><h6>
-<a name="id678167"></a>
+<a name="id691166"></a>
<a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/sequence.hpp>
@@ -50,7 +50,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.operator.sequence.model_of"></a><h6>
-<a name="id678242"></a>
+<a name="id691240"></a>
<a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.model_of">Model
of</a>
</h6>
@@ -74,7 +74,7 @@
</dl>
</div>
<a name="spirit.qi.reference.operator.sequence.expression_semantics"></a><h6>
-<a name="id678320"></a>
+<a name="id691318"></a>
<a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.expression_semantics">Expression
Semantics</a>
</h6>
@@ -115,7 +115,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.sequence.attributes"></a><h6>
-<a name="id678430"></a>
+<a name="id691428"></a>
<a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.attributes">Attributes</a>
</h6>
<p>
@@ -165,7 +165,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.sequence.complexity"></a><h6>
-<a name="id679112"></a>
+<a name="id694295"></a>
<a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -180,7 +180,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.operator.sequence.example"></a><h6>
-<a name="id679136"></a>
+<a name="id694319"></a>
<a class="link" href="sequence.html#spirit.qi.reference.operator.sequence.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/operator/sequential_or.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,7 +29,7 @@
<span class="identifier">b</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.operator.sequential_or.description"></a><h6>
-<a name="id679863"></a>
+<a name="id695046"></a>
<a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.description">Description</a>
</h6>
<p>
@@ -46,7 +46,7 @@
<pre class="programlisting"><span class="identifier">a</span> <span class="special">||</span> <span class="identifier">b</span> <span class="special">||</span> <span class="special">...</span>
</pre>
<a name="spirit.qi.reference.operator.sequential_or.header"></a><h6>
-<a name="id680000"></a>
+<a name="id695183"></a>
<a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/operator/sequential_or.hpp>
@@ -56,7 +56,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.operator.sequential_or.model_of"></a><h6>
-<a name="id680075"></a>
+<a name="id695257"></a>
<a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.model_of">Model
of</a>
</h6>
@@ -80,7 +80,7 @@
</dl>
</div>
<a name="spirit.qi.reference.operator.sequential_or.expression_semantics"></a><h6>
-<a name="id680153"></a>
+<a name="id695335"></a>
<a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.expression_semantics">Expression
Semantics</a>
</h6>
@@ -123,7 +123,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.sequential_or.attributes"></a><h6>
-<a name="id680293"></a>
+<a name="id695476"></a>
<a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.attributes">Attributes</a>
</h6>
<p>
@@ -173,7 +173,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.operator.sequential_or.complexity"></a><h6>
-<a name="id680975"></a>
+<a name="id696157"></a>
<a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -189,7 +189,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.operator.sequential_or.example"></a><h6>
-<a name="id680999"></a>
+<a name="id696181"></a>
<a class="link" href="sequential_or.html#spirit.qi.reference.operator.sequential_or.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/binaryparser.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.parser_concepts.binaryparser"></a><a class="link" href="binaryparser.html" title="BinaryParser">BinaryParser</a>
</h5></div></div></div>
<a name="spirit.qi.reference.parser_concepts.binaryparser.description"></a><h6>
-<a name="id610396"></a>
+<a name="id623980"></a>
<a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
following the Composite Design Pattern.
</p>
<a name="spirit.qi.reference.parser_concepts.binaryparser.refinement_of"></a><h6>
-<a name="id610448"></a>
+<a name="id624031"></a>
<a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.refinement_of">Refinement
of</a>
</h6>
@@ -64,7 +64,7 @@
</dl>
</div>
<a name="spirit.qi.reference.parser_concepts.binaryparser.valid_expressions"></a><h6>
-<a name="id610527"></a>
+<a name="id624110"></a>
<a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.valid_expressions">Valid
Expressions</a>
</h6>
@@ -133,7 +133,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.parser_concepts.binaryparser.type_expressions"></a><h6>
-<a name="id610688"></a>
+<a name="id624271"></a>
<a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.type_expressions">Type
Expressions</a>
</h6>
@@ -198,7 +198,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.parser_concepts.binaryparser.invariants"></a><h6>
-<a name="id610889"></a>
+<a name="id624473"></a>
<a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.invariants">Invariants</a>
</h6>
<p>
@@ -214,7 +214,7 @@
</li>
</ul></div>
<a name="spirit.qi.reference.parser_concepts.binaryparser.models"></a><h6>
-<a name="id611028"></a>
+<a name="id624612"></a>
<a class="link" href="binaryparser.html#spirit.qi.reference.parser_concepts.binaryparser.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/naryparser.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.parser_concepts.naryparser"></a><a class="link" href="naryparser.html" title="NaryParser">NaryParser</a>
</h5></div></div></div>
<a name="spirit.qi.reference.parser_concepts.naryparser.description"></a><h6>
-<a name="id611063"></a>
+<a name="id624647"></a>
<a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.description">Description</a>
</h6>
<p>
@@ -37,7 +37,7 @@
Design Pattern.
</p>
<a name="spirit.qi.reference.parser_concepts.naryparser.refinement_of"></a><h6>
-<a name="id611099"></a>
+<a name="id624683"></a>
<a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.refinement_of">Refinement
of</a>
</h6>
@@ -64,7 +64,7 @@
</dl>
</div>
<a name="spirit.qi.reference.parser_concepts.naryparser.valid_expressions"></a><h6>
-<a name="id611247"></a>
+<a name="id625923"></a>
<a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.valid_expressions">Valid
Expressions</a>
</h6>
@@ -115,7 +115,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.parser_concepts.naryparser.type_expressions"></a><h6>
-<a name="id611370"></a>
+<a name="id626046"></a>
<a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.type_expressions">Type
Expressions</a>
</h6>
@@ -168,7 +168,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.parser_concepts.naryparser.invariants"></a><h6>
-<a name="id611541"></a>
+<a name="id626217"></a>
<a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.invariants">Invariants</a>
</h6>
<p>
@@ -180,7 +180,7 @@
<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_parser</span><span class="special"><</span><span class="identifier">E</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
</li></ul></div>
<a name="spirit.qi.reference.parser_concepts.naryparser.models"></a><h6>
-<a name="id611626"></a>
+<a name="id626302"></a>
<a class="link" href="naryparser.html#spirit.qi.reference.parser_concepts.naryparser.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/parser.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.parser_concepts.parser"></a><a class="link" href="parser.html" title="Parser">Parser</a>
</h5></div></div></div>
<a name="spirit.qi.reference.parser_concepts.parser.description"></a><h6>
-<a name="id608591"></a>
+<a name="id622243"></a>
<a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.description">Description</a>
</h6>
<p>
@@ -81,7 +81,7 @@
</dl>
</div>
<a name="spirit.qi.reference.parser_concepts.parser.valid_expressions"></a><h6>
-<a name="id608934"></a>
+<a name="id622518"></a>
<a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.valid_expressions">Valid
Expressions</a>
</h6>
@@ -161,7 +161,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.parser_concepts.parser.type_expressions"></a><h6>
-<a name="id609202"></a>
+<a name="id622786"></a>
<a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.type_expressions">Type
Expressions</a>
</h6>
@@ -214,7 +214,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.parser_concepts.parser.postcondition"></a><h6>
-<a name="id609400"></a>
+<a name="id622984"></a>
<a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.postcondition">Postcondition</a>
</h6>
<p>
@@ -248,7 +248,7 @@
</li>
</ul></div>
<a name="spirit.qi.reference.parser_concepts.parser.models"></a><h6>
-<a name="id609527"></a>
+<a name="id623111"></a>
<a class="link" href="parser.html#spirit.qi.reference.parser_concepts.parser.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/primitiveparser.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.parser_concepts.primitiveparser"></a><a class="link" href="primitiveparser.html" title="PrimitiveParser">PrimitiveParser</a>
</h5></div></div></div>
<a name="spirit.qi.reference.parser_concepts.primitiveparser.description"></a><h6>
-<a name="id609562"></a>
+<a name="id623146"></a>
<a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.description">Description</a>
</h6>
<p>
@@ -35,7 +35,7 @@
that the client uses to build more complex parsers.
</p>
<a name="spirit.qi.reference.parser_concepts.primitiveparser.refinement_of"></a><h6>
-<a name="id609585"></a>
+<a name="id623168"></a>
<a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.refinement_of">Refinement
of</a>
</h6>
@@ -49,7 +49,7 @@
</p>
</blockquote></div>
<a name="spirit.qi.reference.parser_concepts.primitiveparser.pre_skip"></a><h6>
-<a name="id609621"></a>
+<a name="id623204"></a>
<a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.pre_skip">Pre-skip</a>
</h6>
<p>
@@ -63,7 +63,7 @@
<pre class="programlisting"><span class="identifier">qi</span><span class="special">::</span><span class="identifier">skip_over</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span> <span class="identifier">l</span><span class="special">,</span> <span class="identifier">skip</span><span class="special">);</span>
</pre>
<a name="spirit.qi.reference.parser_concepts.primitiveparser.type_expressions"></a><h6>
-<a name="id609712"></a>
+<a name="id623296"></a>
<a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.type_expressions">Type
Expressions</a>
</h6>
@@ -102,7 +102,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.parser_concepts.primitiveparser.models"></a><h6>
-<a name="id609849"></a>
+<a name="id623432"></a>
<a class="link" href="primitiveparser.html#spirit.qi.reference.parser_concepts.primitiveparser.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/parser_concepts/unaryparser.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.parser_concepts.unaryparser"></a><a class="link" href="unaryparser.html" title="UnaryParser">UnaryParser</a>
</h5></div></div></div>
<a name="spirit.qi.reference.parser_concepts.unaryparser.description"></a><h6>
-<a name="id609890"></a>
+<a name="id623473"></a>
<a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.description">Description</a>
</h6>
<p>
@@ -36,7 +36,7 @@
the Delegate Design Pattern.
</p>
<a name="spirit.qi.reference.parser_concepts.unaryparser.refinement_of"></a><h6>
-<a name="id609915"></a>
+<a name="id623498"></a>
<a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.refinement_of">Refinement
of</a>
</h6>
@@ -63,7 +63,7 @@
</dl>
</div>
<a name="spirit.qi.reference.parser_concepts.unaryparser.valid_expressions"></a><h6>
-<a name="id609994"></a>
+<a name="id623578"></a>
<a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.valid_expressions">Valid
Expressions</a>
</h6>
@@ -113,7 +113,7 @@
</tr></tbody>
</table></div>
<a name="spirit.qi.reference.parser_concepts.unaryparser.type_expressions"></a><h6>
-<a name="id610108"></a>
+<a name="id623692"></a>
<a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.type_expressions">Type
Expressions</a>
</h6>
@@ -166,7 +166,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.parser_concepts.unaryparser.invariants"></a><h6>
-<a name="id610276"></a>
+<a name="id623860"></a>
<a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.invariants">Invariants</a>
</h6>
<p>
@@ -177,7 +177,7 @@
<code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_parser</span><span class="special"><</span><span class="identifier">P</span><span class="special">::</span><span class="identifier">subject_type</span><span class="special">>::</span><span class="identifier">type</span></code> evaluates to <code class="computeroutput"><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></code>
</li></ul></div>
<a name="spirit.qi.reference.parser_concepts.unaryparser.models"></a><h6>
-<a name="id610361"></a>
+<a name="id623945"></a>
<a class="link" href="unaryparser.html#spirit.qi.reference.parser_concepts.unaryparser.models">Models</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/string.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/string.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/string.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/string.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -35,7 +35,7 @@
the literal and string parsers and the symbol table.
</p>
<a name="spirit.qi.reference.string.module_header"></a><h6>
-<a name="id683146"></a>
+<a name="id697117"></a>
<a class="link" href="string.html#spirit.qi.reference.string.module_header">Module Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/string.hpp>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/string/string.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/string/string.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/string/string.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/string/string.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.string.string"></a><a class="link" href="string.html" title="String (string, lit)"> String (<code class="computeroutput"><span class="identifier">string</span></code>, <code class="computeroutput"><span class="identifier">lit</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.string.string.description"></a><h6>
-<a name="id683245"></a>
+<a name="id697216"></a>
<a class="link" href="string.html#spirit.qi.reference.string.string.description">Description</a>
</h6>
<p>
@@ -54,14 +54,14 @@
<span class="identifier">lit</span><span class="special">(</span><span class="identifier">s</span><span class="special">)</span> <span class="comment">// s is a std::string
</span></pre>
<a name="spirit.qi.reference.string.string.header"></a><h6>
-<a name="id683470"></a>
+<a name="id697441"></a>
<a class="link" href="string.html#spirit.qi.reference.string.string.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/string/lit.hpp>
</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_lit</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
</pre>
<a name="spirit.qi.reference.string.string.namespace"></a><h6>
-<a name="id683536"></a>
+<a name="id697507"></a>
<a class="link" href="string.html#spirit.qi.reference.string.string.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -91,7 +91,7 @@
Encoding Namespace</a>.
</p>
<a name="spirit.qi.reference.string.string.model_of"></a><h6>
-<a name="id683655"></a>
+<a name="id697626"></a>
<a class="link" href="string.html#spirit.qi.reference.string.string.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -120,7 +120,7 @@
</dl>
</div>
<a name="spirit.qi.reference.string.string.expression_semantics"></a><h6>
-<a name="id683751"></a>
+<a name="id697722"></a>
<a class="link" href="string.html#spirit.qi.reference.string.string.expression_semantics">Expression
Semantics</a>
</h6>
@@ -186,7 +186,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.string.string.attributes"></a><h6>
-<a name="id683943"></a>
+<a name="id697914"></a>
<a class="link" href="string.html#spirit.qi.reference.string.string.attributes">Attributes</a>
</h6>
<div class="informaltable"><table class="table">
@@ -248,7 +248,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.string.string.complexity"></a><h6>
-<a name="id684146"></a>
+<a name="id698117"></a>
<a class="link" href="string.html#spirit.qi.reference.string.string.complexity">Complexity</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -265,7 +265,7 @@
of characters in the string to be parsed.
</p>
<a name="spirit.qi.reference.string.string.example"></a><h6>
-<a name="id684181"></a>
+<a name="id698152"></a>
<a class="link" href="string.html#spirit.qi.reference.string.string.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/reference/string/symbols.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.reference.string.symbols"></a><a class="link" href="symbols.html" title="Symbols (symbols)"> Symbols (<code class="computeroutput"><span class="identifier">symbols</span></code>)</a>
</h5></div></div></div>
<a name="spirit.qi.reference.string.symbols.description"></a><h6>
-<a name="id684751"></a>
+<a name="id698722"></a>
<a class="link" href="symbols.html#spirit.qi.reference.string.symbols.description">Description</a>
</h6>
<p>
@@ -47,7 +47,7 @@
its behavior.
</p>
<a name="spirit.qi.reference.string.symbols.header"></a><h6>
-<a name="id684785"></a>
+<a name="id698756"></a>
<a class="link" href="symbols.html#spirit.qi.reference.string.symbols.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/home/qi/string/symbols.hpp>
@@ -57,7 +57,7 @@
Also, see <a class="link" href="../../../structure/include.html" title="Include">Include Structure</a>.
</p>
<a name="spirit.qi.reference.string.symbols.namespace"></a><h6>
-<a name="id684860"></a>
+<a name="id698831"></a>
<a class="link" href="symbols.html#spirit.qi.reference.string.symbols.namespace">Namespace</a>
</h6>
<div class="informaltable"><table class="table">
@@ -86,14 +86,14 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.string.symbols.synopsis"></a><h6>
-<a name="id685019"></a>
+<a name="id698990"></a>
<a class="link" href="symbols.html#spirit.qi.reference.string.symbols.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Char</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Lookup</span><span class="special">></span>
<span class="keyword">struct</span> <span class="identifier">symbols</span><span class="special">;</span>
</pre>
<a name="spirit.qi.reference.string.symbols.template_parameters"></a><h6>
-<a name="id685097"></a>
+<a name="id699068"></a>
<a class="link" href="symbols.html#spirit.qi.reference.string.symbols.template_parameters">Template
parameters</a>
</h6>
@@ -176,7 +176,7 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.string.symbols.model_of"></a><h6>
-<a name="id685282"></a>
+<a name="id700345"></a>
<a class="link" href="symbols.html#spirit.qi.reference.string.symbols.model_of">Model of</a>
</h6>
<div class="blockquote"><blockquote class="blockquote">
@@ -234,7 +234,7 @@
</dl>
</div>
<a name="spirit.qi.reference.string.symbols.expression_semantics"></a><h6>
-<a name="id685556"></a>
+<a name="id700620"></a>
<a class="link" href="symbols.html#spirit.qi.reference.string.symbols.expression_semantics">Expression
Semantics</a>
</h6>
@@ -477,14 +477,14 @@
</tbody>
</table></div>
<a name="spirit.qi.reference.string.symbols.attributes"></a><h6>
-<a name="id686666"></a>
+<a name="id701730"></a>
<a class="link" href="symbols.html#spirit.qi.reference.string.symbols.attributes">Attributes</a>
</h6>
<p>
The attribute of <code class="computeroutput"><span class="identifier">symbol</span><span class="special"><</span><span class="identifier">Char</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span></code> is <code class="computeroutput"><span class="identifier">T</span></code>.
</p>
<a name="spirit.qi.reference.string.symbols.complexity"></a><h6>
-<a name="id686717"></a>
+<a name="id701780"></a>
<a class="link" href="symbols.html#spirit.qi.reference.string.symbols.complexity">Complexity</a>
</h6>
<p>
@@ -534,7 +534,7 @@
<pre class="programlisting"><span class="identifier">symbols</span><span class="special"><</span><span class="identifier">Char</span><span class="special">,</span> <span class="identifier">T</span><span class="special">,</span> <span class="identifier">tst_map</span><span class="special"><</span><span class="identifier">Char</span><span class="special">,</span> <span class="identifier">T</span><span class="special">></span> <span class="special">></span> <span class="identifier">sym</span><span class="special">;</span>
</pre>
<a name="spirit.qi.reference.string.symbols.example"></a><h6>
-<a name="id686856"></a>
+<a name="id701919"></a>
<a class="link" href="symbols.html#spirit.qi.reference.string.symbols.example">Example</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/employee___parsing_into_structs.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -179,7 +179,7 @@
has a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">string</span></code> attribute.
</p>
<a name="spirit.qi.tutorials.employee___parsing_into_structs.lexeme"></a><h6>
-<a name="id584336"></a>
+<a name="id597295"></a>
<a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.lexeme">Lexeme</a>
</h6>
<pre class="programlisting"><span class="identifier">lexeme</span><span class="special">[</span><span class="char">'"'</span> <span class="special">>></span> <span class="special">+(</span><span class="identifier">char_</span> <span class="special">-</span> <span class="char">'"'</span><span class="special">)</span> <span class="special">>></span> <span class="char">'"'</span><span class="special">];</span>
@@ -196,7 +196,7 @@
a double quote.
</p>
<a name="spirit.qi.tutorials.employee___parsing_into_structs.difference"></a><h6>
-<a name="id584449"></a>
+<a name="id597408"></a>
<a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.difference">Difference</a>
</h6>
<p>
@@ -215,7 +215,7 @@
is just <code class="computeroutput"><span class="keyword">char</span></code>.
</p>
<a name="spirit.qi.tutorials.employee___parsing_into_structs.plus"></a><h6>
-<a name="id584557"></a>
+<a name="id597516"></a>
<a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.plus">Plus</a>
</h6>
<pre class="programlisting"><span class="special">+</span><span class="identifier">a</span>
@@ -236,7 +236,7 @@
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span>
</pre>
<a name="spirit.qi.tutorials.employee___parsing_into_structs.sequence_attribute"></a><h6>
-<a name="id584694"></a>
+<a name="id597653"></a>
<a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.sequence_attribute">Sequence
Attribute</a>
</h6>
@@ -277,7 +277,7 @@
</p></td></tr>
</table></div>
<a name="spirit.qi.tutorials.employee___parsing_into_structs.attribute_collapsing"></a><h6>
-<a name="id584916"></a>
+<a name="id597875"></a>
<a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.attribute_collapsing">Attribute
Collapsing</a>
</h6>
@@ -309,7 +309,7 @@
<pre class="programlisting"><span class="identifier">std</span><span class="special">::</span><span class="identifier">vector</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span>
</pre>
<a name="spirit.qi.tutorials.employee___parsing_into_structs.auto_rules"></a><h6>
-<a name="id585428"></a>
+<a name="id598182"></a>
<a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.auto_rules">Auto
Rules</a>
</h6>
@@ -347,7 +347,7 @@
directly into the rule's attribute, in-situ.
</p>
<a name="spirit.qi.tutorials.employee___parsing_into_structs.finally"></a><h6>
-<a name="id585747"></a>
+<a name="id598501"></a>
<a class="link" href="employee___parsing_into_structs.html#spirit.qi.tutorials.employee___parsing_into_structs.finally">Finally</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___asts_.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -69,7 +69,7 @@
for testing purposes. "4.toyxml" has an error in it.
</p>
<a name="spirit.qi.tutorials.mini_xml___asts_.first_cut"></a><h6>
-<a name="id586395"></a>
+<a name="id599149"></a>
<a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.first_cut">First Cut</a>
</h6>
<p>
@@ -145,7 +145,7 @@
by the placeholder <code class="computeroutput"><span class="identifier">_val</span></code>).
</p>
<a name="spirit.qi.tutorials.mini_xml___asts_.alternates"></a><h6>
-<a name="id587576"></a>
+<a name="id600330"></a>
<a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.alternates">Alternates</a>
</h6>
<pre class="programlisting"><span class="identifier">rule</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">,</span> <span class="identifier">mini_xml_node</span><span class="special">(),</span> <span class="identifier">space_type</span><span class="special">></span> <span class="identifier">node</span><span class="special">;</span>
@@ -175,7 +175,7 @@
<span class="special">;</span>
</pre>
<a name="spirit.qi.tutorials.mini_xml___asts_.not_predicate"></a><h6>
-<a name="id589209"></a>
+<a name="id602855"></a>
<a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.not_predicate">Not
Predicate</a>
</h6>
@@ -202,7 +202,7 @@
at this point.
</p>
<a name="spirit.qi.tutorials.mini_xml___asts_.inherited_attribute"></a><h6>
-<a name="id589364"></a>
+<a name="id603010"></a>
<a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.inherited_attribute">Inherited
Attribute</a>
</h6>
@@ -228,7 +228,7 @@
<code class="computeroutput"><span class="identifier">_r3</span></code>, etc. if you have more).
</p>
<a name="spirit.qi.tutorials.mini_xml___asts_.a_lazy_lit"></a><h6>
-<a name="id589559"></a>
+<a name="id603204"></a>
<a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.a_lazy_lit">A Lazy
Lit</a>
</h6>
@@ -262,7 +262,7 @@
accessors, provided by Phoenix.
</p>
<a name="spirit.qi.tutorials.mini_xml___asts_.how_it_all_works"></a><h6>
-<a name="id589890"></a>
+<a name="id603536"></a>
<a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.how_it_all_works">How
it all works</a>
</h6>
@@ -309,7 +309,7 @@
as <code class="computeroutput"><span class="identifier">_r1</span></code>.
</p>
<a name="spirit.qi.tutorials.mini_xml___asts_.the_structures"></a><h6>
-<a name="id590186"></a>
+<a name="id603832"></a>
<a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.the_structures">The
Structures</a>
</h6>
@@ -342,7 +342,7 @@
<p>
</p>
<a name="spirit.qi.tutorials.mini_xml___asts_.of_alternates_and_variants"></a><h6>
-<a name="id590382"></a>
+<a name="id604028"></a>
<a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.of_alternates_and_variants">Of
Alternates and Variants</a>
</h6>
@@ -369,7 +369,7 @@
of <code class="computeroutput"><span class="identifier">a</span></code> and <code class="computeroutput"><span class="identifier">B</span></code> is the attribute of <code class="computeroutput"><span class="identifier">b</span></code>.
</p>
<a name="spirit.qi.tutorials.mini_xml___asts_.adapting_structs_again"></a><h6>
-<a name="id590546"></a>
+<a name="id604192"></a>
<a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.adapting_structs_again">Adapting
structs again</a>
</h6>
@@ -395,7 +395,7 @@
<p>
</p>
<a name="spirit.qi.tutorials.mini_xml___asts_.one_more_take"></a><h6>
-<a name="id590687"></a>
+<a name="id604332"></a>
<a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.one_more_take">One
More Take</a>
</h6>
@@ -464,7 +464,7 @@
in the <code class="computeroutput"><span class="identifier">xml</span></code> rule:
</p>
<a name="spirit.qi.tutorials.mini_xml___asts_.local_variables"></a><h6>
-<a name="id592763"></a>
+<a name="id605317"></a>
<a class="link" href="mini_xml___asts_.html#spirit.qi.tutorials.mini_xml___asts_.local_variables">Local
Variables</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/mini_xml___error_handling.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -44,7 +44,7 @@
What's new?
</p>
<a name="spirit.qi.tutorials.mini_xml___error_handling.readable_names"></a><h6>
-<a name="id593068"></a>
+<a name="id605622"></a>
<a class="link" href="mini_xml___error_handling.html#spirit.qi.tutorials.mini_xml___error_handling.readable_names">Readable
Names</a>
</h6>
@@ -63,7 +63,7 @@
<span class="identifier">end_tag</span><span class="special">.</span><span class="identifier">name</span><span class="special">(</span><span class="string">"end_tag"</span><span class="special">);</span>
</pre>
<a name="spirit.qi.tutorials.mini_xml___error_handling.on_error"></a><h6>
-<a name="id593248"></a>
+<a name="id605802"></a>
<a class="link" href="mini_xml___error_handling.html#spirit.qi.tutorials.mini_xml___error_handling.on_error">On
Error</a>
</h6>
@@ -241,7 +241,7 @@
</tbody>
</table></div>
<a name="spirit.qi.tutorials.mini_xml___error_handling.expectation_points"></a><h6>
-<a name="id593757"></a>
+<a name="id606310"></a>
<a class="link" href="mini_xml___error_handling.html#spirit.qi.tutorials.mini_xml___error_handling.expectation_points">Expectation
Points</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/quick_start.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.qi.tutorials.quick_start"></a><a class="link" href="quick_start.html" title="Quick Start">Quick Start</a>
</h4></div></div></div>
<a name="spirit.qi.tutorials.quick_start.why_would_you_want_to_use_spirit_qi_"></a><h6>
-<a name="id571560"></a>
+<a name="id584553"></a>
<a class="link" href="quick_start.html#spirit.qi.tutorials.quick_start.why_would_you_want_to_use_spirit_qi_">Why
would you want to use Spirit.Qi?</a>
</h6>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/roman_numerals.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -41,7 +41,7 @@
</li>
</ul></div>
<a name="spirit.qi.tutorials.roman_numerals.symbol_table"></a><h6>
-<a name="id579324"></a>
+<a name="id592283"></a>
<a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.symbol_table">Symbol
Table</a>
</h6>
@@ -173,7 +173,7 @@
They are all parsers.
</p>
<a name="spirit.qi.tutorials.roman_numerals.rules"></a><h6>
-<a name="id580454"></a>
+<a name="id593409"></a>
<a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.rules">Rules</a>
</h6>
<p>
@@ -253,7 +253,7 @@
<pre class="programlisting"><span class="identifier">r</span> <span class="special">=</span> <span class="identifier">double_</span> <span class="special">>></span> <span class="special">*(</span><span class="char">','</span> <span class="special">>></span> <span class="identifier">double_</span><span class="special">);</span>
</pre>
<a name="spirit.qi.tutorials.roman_numerals.grammars"></a><h6>
-<a name="id580846"></a>
+<a name="id593801"></a>
<a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.grammars">Grammars</a>
</h6>
<p>
@@ -358,7 +358,7 @@
</li>
</ul></div>
<a name="spirit.qi.tutorials.roman_numerals.let_s_parse_"></a><h6>
-<a name="id581573"></a>
+<a name="id594528"></a>
<a class="link" href="roman_numerals.html#spirit.qi.tutorials.roman_numerals.let_s_parse_">Let's Parse!</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/semantic_actions.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -232,7 +232,7 @@
The examples above can be found here: ../../example/qi/actions.cpp
</p>
<a name="spirit.qi.tutorials.semantic_actions.phoenix"></a><h6>
-<a name="id573962"></a>
+<a name="id588014"></a>
<a class="link" href="semantic_actions.html#spirit.qi.tutorials.semantic_actions.phoenix">Phoenix</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html (from r56618, /trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/qi/tutorials/warming_up.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -34,7 +34,7 @@
heavily uses operator overloading to accomplish its magic.
</p>
<a name="spirit.qi.tutorials.warming_up.trivial_example__1_parsing_a_number"></a><h6>
-<a name="id571615"></a>
+<a name="id584608"></a>
<a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__1_parsing_a_number">Trivial
Example #1 Parsing a number</a>
</h6>
@@ -49,7 +49,7 @@
parsers and consistent naming conventions help you keep from going insane!
</p>
<a name="spirit.qi.tutorials.warming_up.trivial_example__2_parsing_two_numbers"></a><h6>
-<a name="id571644"></a>
+<a name="id584637"></a>
<a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__2_parsing_two_numbers">Trivial
Example #2 Parsing two numbers</a>
</h6>
@@ -82,7 +82,7 @@
</p></td></tr>
</table></div>
<a name="spirit.qi.tutorials.warming_up.trivial_example__3_parsing_one_or_more_numbers"></a><h6>
-<a name="id571705"></a>
+<a name="id584698"></a>
<a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__3_parsing_one_or_more_numbers">Trivial
Example #3 Parsing one or more numbers</a>
</h6>
@@ -105,7 +105,7 @@
also known as a Kleene Closure, but we call it the Star in most places.
</p>
<a name="spirit.qi.tutorials.warming_up.trivial_example__4_parsing_a_comma_delimited_list_of_numbers"></a><h6>
-<a name="id571750"></a>
+<a name="id584742"></a>
<a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.trivial_example__4_parsing_a_comma_delimited_list_of_numbers">Trivial
Example #4 Parsing a comma-delimited list of numbers</a>
</h6>
@@ -128,7 +128,7 @@
star encloses the complete expression above.
</p>
<a name="spirit.qi.tutorials.warming_up.let_s_parse_"></a><h6>
-<a name="id571880"></a>
+<a name="id584873"></a>
<a class="link" href="warming_up.html#spirit.qi.tutorials.warming_up.let_s_parse_">Let's Parse!</a>
</h6>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/support/multi_pass.html (from r56618, /trunk/libs/spirit/doc/html/spirit/support/multi_pass.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/support/multi_pass.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/support/multi_pass.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -61,7 +61,7 @@
iterator was created.
</p>
<a name="spirit.support.multi_pass.using_the_multi_pass"></a><h5>
-<a name="id869404"></a>
+<a name="id881847"></a>
<a class="link" href="multi_pass.html#spirit.support.multi_pass.using_the_multi_pass">Using the
multi_pass</a>
</h5>
@@ -209,7 +209,7 @@
<p>
</p>
<a name="spirit.support.multi_pass.using_the_flush_multi_pass_parser"></a><h5>
-<a name="id870675"></a>
+<a name="id883117"></a>
<a class="link" href="multi_pass.html#spirit.support.multi_pass.using_the_flush_multi_pass_parser">Using
the flush_multi_pass parser</a>
</h5>
@@ -231,7 +231,7 @@
thrown.
</p>
<a name="spirit.support.multi_pass.the_multi_pass_policies"></a><h5>
-<a name="id870769"></a>
+<a name="id883211"></a>
<a class="link" href="multi_pass.html#spirit.support.multi_pass.the_multi_pass_policies">The multi_pass
Policies</a>
</h5>
@@ -272,7 +272,7 @@
the functionality groups:
</p>
<div class="table">
-<a name="id870874"></a><p class="title"><b>Table 11. Policies needed for default_policy template</b></p>
+<a name="id883317"></a><p class="title"><b>Table 11. Policies needed for default_policy template</b></p>
<div class="table-contents"><table class="table" summary="Policies needed for default_policy template">
<colgroup>
<col>
@@ -354,7 +354,7 @@
we will give some guidelines how you can write your own policy implementations.
</p>
<a name="spirit.support.multi_pass.predefined_policies"></a><h5>
-<a name="id871284"></a>
+<a name="id884768"></a>
<a class="link" href="multi_pass.html#spirit.support.multi_pass.predefined_policies">Predefined
policies</a>
</h5>
@@ -363,7 +363,7 @@
policies are defined in the namespace <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">spirit</span><span class="special">::</span><span class="identifier">iterator_policies</span></code>.
</p>
<div class="table">
-<a name="id871326"></a><p class="title"><b>Table 12. Predefined policy classes</b></p>
+<a name="id884810"></a><p class="title"><b>Table 12. Predefined policy classes</b></p>
<div class="table-contents"><table class="table" summary="Predefined policy classes">
<colgroup>
<col>
@@ -600,7 +600,7 @@
</table></div>
</div>
<br class="table-break"><a name="spirit.support.multi_pass.combinations__how_to_specify_your_own_custom_multi_pass"></a><h5>
-<a name="id871991"></a>
+<a name="id885475"></a>
<a class="link" href="multi_pass.html#spirit.support.multi_pass.combinations__how_to_specify_your_own_custom_multi_pass">Combinations:
How to specify your own custom multi_pass</a>
</h5>
@@ -646,7 +646,7 @@
behaviors while wrapping an <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">istream_iterator</span><span class="special"><</span><span class="keyword">char</span><span class="special">></span></code>.
</p>
<a name="spirit.support.multi_pass.dealing_with_constant_look_ahead"></a><h5>
-<a name="id872414"></a>
+<a name="id885897"></a>
<a class="link" href="multi_pass.html#spirit.support.multi_pass.dealing_with_constant_look_ahead">Dealing
with constant look ahead</a>
</h5>
@@ -665,7 +665,7 @@
StoragePolicy.
</p>
<a name="spirit.support.multi_pass.how_to_write_a_functor_for_use_with_the__code__phrase_role__identifier__functor_input__phrase___code__inputpolicy"></a><h5>
-<a name="id872546"></a>
+<a name="id886029"></a>
<a class="link" href="multi_pass.html#spirit.support.multi_pass.how_to_write_a_functor_for_use_with_the__code__phrase_role__identifier__functor_input__phrase___code__inputpolicy">How
to write a functor for use with the <code class="computeroutput"><span class="identifier">functor_input</span></code>
InputPolicy</a>
@@ -724,7 +724,7 @@
<span class="special">}</span>
</pre>
<a name="spirit.support.multi_pass.how_to_write_policies_for_use_with_multi_pass"></a><h5>
-<a name="id873132"></a>
+<a name="id886616"></a>
<a class="link" href="multi_pass.html#spirit.support.multi_pass.how_to_write_policies_for_use_with_multi_pass">How
to write policies for use with multi_pass</a>
</h5>
@@ -741,7 +741,7 @@
copies of a particular <code class="computeroutput"><span class="identifier">multi_pass</span></code>.
</p>
<a name="spirit.support.multi_pass.inputpolicy"></a><h5>
-<a name="id873207"></a>
+<a name="id886690"></a>
<a class="link" href="multi_pass.html#spirit.support.multi_pass.inputpolicy">InputPolicy</a>
</h5>
<p>
@@ -837,7 +837,7 @@
constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
</p>
<a name="spirit.support.multi_pass.ownershippolicy"></a><h5>
-<a name="id874231"></a>
+<a name="id888744"></a>
<a class="link" href="multi_pass.html#spirit.support.multi_pass.ownershippolicy">OwnershipPolicy</a>
</h5>
<p>
@@ -904,7 +904,7 @@
constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
</p>
<a name="spirit.support.multi_pass.checkingpolicy"></a><h5>
-<a name="id874765"></a>
+<a name="id889278"></a>
<a class="link" href="multi_pass.html#spirit.support.multi_pass.checkingpolicy">CheckingPolicy</a>
</h5>
<p>
@@ -963,7 +963,7 @@
constructor of <code class="computeroutput"><span class="identifier">shared</span></code>.
</p>
<a name="spirit.support.multi_pass.storagepolicy"></a><h5>
-<a name="id875216"></a>
+<a name="id889729"></a>
<a class="link" href="multi_pass.html#spirit.support.multi_pass.storagepolicy">StoragePolicy</a>
</h5>
<p>
Copied: branches/release/libs/spirit/doc/html/spirit/what_s_new.html (from r56618, /trunk/libs/spirit/doc/html/spirit/what_s_new.html)
==============================================================================
--- /trunk/libs/spirit/doc/html/spirit/what_s_new.html (original)
+++ branches/release/libs/spirit/doc/html/spirit/what_s_new.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit.what_s_new"></a><a class="link" href="what_s_new.html" title="What's New">What's New</a>
</h2></div></div></div>
<a name="spirit.what_s_new.spirit_classic"></a><h4>
-<a name="id546841"></a>
+<a name="id559108"></a>
<a class="link" href="what_s_new.html#spirit.what_s_new.spirit_classic">Spirit Classic</a>
</h4>
<p>
@@ -67,11 +67,11 @@
for existing applications.
</p>
<a name="spirit.what_s_new.spirit_v2_1"></a><h4>
-<a name="id547034"></a>
+<a name="id559301"></a>
<a class="link" href="what_s_new.html#spirit.what_s_new.spirit_v2_1">Spirit V2.1</a>
</h4>
<a name="spirit.what_s_new.what_s_changed_in__emphasis_spirit_qi__emphasis__and__emphasis_spirit_karma__emphasis__from_v2_0__boost_v1_37_0__to_2_1__boost_v1_41_0_"></a><h4>
-<a name="id547048"></a>
+<a name="id559315"></a>
<a class="link" href="what_s_new.html#spirit.what_s_new.what_s_changed_in__emphasis_spirit_qi__emphasis__and__emphasis_spirit_karma__emphasis__from_v2_0__boost_v1_37_0__to_2_1__boost_v1_41_0_">What's
changed in <span class="emphasis"><em>Spirit.Qi</em></span> and <span class="emphasis"><em>Spirit.Karma</em></span>
from V2.0 (Boost V1.37.0) to 2.1 (Boost V1.41.0)</a>
@@ -190,7 +190,7 @@
</li>
</ul></div>
<a name="spirit.what_s_new.what_s_changed_in__emphasis_spirit_lex__emphasis__from_v2_0__boost_v1_37_0__to_2_1__boost_v1_41_0_"></a><h4>
-<a name="id549267"></a>
+<a name="id563176"></a>
<a class="link" href="what_s_new.html#spirit.what_s_new.what_s_changed_in__emphasis_spirit_lex__emphasis__from_v2_0__boost_v1_37_0__to_2_1__boost_v1_41_0_">What's
changed in <span class="emphasis"><em>Spirit.Lex</em></span> from V2.0 (Boost V1.37.0) to 2.1
(Boost V1.41.0)</a>
Modified: branches/release/libs/spirit/doc/introduction.qbk
==============================================================================
--- branches/release/libs/spirit/doc/introduction.qbk (original)
+++ branches/release/libs/spirit/doc/introduction.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -33,11 +33,10 @@
and output generation process with other C++ code. This often allows for
simpler and more efficient code.
-Both the created parsers and generators are fully attributed (more on
-that later) which allows you to easily build and handle hierarchical
-data structures in memory. These data structures resemble the
-structure of the input data and can directly be used to generate
-arbitrarily-formatted output.
+Both the created parsers and generators are fully attributed, which allows you
+to easily build and handle hierarchical data structures in memory. These data
+structures resemble the structure of the input data and can directly be used
+to generate arbitrarily-formatted output.
The [link spirit.spiritstructure figure] below depicts the overall structure
of the Boost Spirit library. The library consists of 4 major parts:
@@ -45,7 +44,7 @@
* __classic__: This is the almost-unchanged code base taken from the
former Boost Spirit V1.8 distribution. It has been moved into the namespace
boost::spirit::classic. A special compatibility layer has been added to
- ensure complete compatibility with existing code using Spirit V1.8.
+ ensure complete compatibility with existing code using Spirit V1.8.
* __qi__: This is the parser library allowing you to build recursive
descent parsers. The exposed domain-specific language can be used to describe
the grammars to implement, and the rules for storing the parsed information.
@@ -62,14 +61,14 @@
[fig spiritstructure.png..The overall structure of the Boost Spirit library..spirit.spiritstructure]
-The separate sublibraries __qi__, __karma__ and __lex__ are well integrated
-with any of the other parts. Because of their similar structure and identical
-underlying technology these are usable either separately or together at the
-same time. For instance is it possible to directly feed the hierarchical data
-structures generated by __qi__ into output generators created using __karma__;
-or to use the token sequence generated by __lex__ as the input for a parser
-generated by __qi__.
+The three components, __qi__, __karma__ and __lex__, are designed to be used
+either standalone, or together. The general methodology is to use the token
+sequence generated by __lex__ as the input for a parser generated by __qi__.
+On the opposite side of the equation, the hierarchical data structures generated
+by __qi__ are used for the output generators created using __karma__.
+However, there is nothing to stop you from using any of these components all
+by themselves.
The [link spirit.spiritkarmaflow figure] below shows the typical data flow of
some input being converted to some internal representation. After some
@@ -137,7 +136,7 @@
The alternative operator `|` and the parentheses `()` remain as is. The
assignment operator `=` is used in place of EBNF's `::=`. Last but not least,
-the Kleene star `*` which used to be a postfix operator in EBNF becomes a
+the Kleene star `*`, which in this case is a postfix operator in EBNF becomes a
prefix. Instead of:
a* //... in EBNF syntax,
@@ -152,9 +151,9 @@
[heading A Quick Overview of Output Generation with __karma__]
-Spirit not only allows you to describe the structure of the input. Starting with
-Version 2.0 it enables the specification of the output format for your data
-in a similar way, and based on a single syntax and compatible semantics.
+Spirit not only allows you to describe the structure of the input, it also enables
+the specification of the output format for your data in a similar way, and based
+on a single syntax and compatible semantics.
Let's assume we need to generate a textual representation from a simple data
structure such as a `std::vector<int>`. Conventional code probably would look like:
Modified: branches/release/libs/spirit/doc/karma.qbk
==============================================================================
--- branches/release/libs/spirit/doc/karma.qbk (original)
+++ branches/release/libs/spirit/doc/karma.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -13,6 +13,7 @@
[include karma/warming_up.qbk]
[include karma/actions.qbk]
[include karma/complex.qbk]
+[include karma/num_list.qbk]
[endsect]
[section Quick Reference]
Modified: branches/release/libs/spirit/doc/karma/auxiliary.qbk
==============================================================================
--- branches/release/libs/spirit/doc/karma/auxiliary.qbk (original)
+++ branches/release/libs/spirit/doc/karma/auxiliary.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -9,7 +9,8 @@
[section Auxiliary]
This module includes different auxiliary generators not fitting into any of the
-other categories. It includes the `eol` and `eps`, `lazy` generators.
+other categories. It includes the `attr_cast`, `eol` and `eps`, `lazy`
+generators.
[heading Module Header]
@@ -19,6 +20,90 @@
Also, see __include_structure__.
[/////////////////////////////////////////////////////////////////////////////]
+[section:attr_cast Attribute Transformation Pseudo Generator (`attr_cast`)]
+
+[heading Description]
+
+The `attr_cast<Attrib>()` component invokes the embedded generator while
+supplying an attribute of type `Attrib`. The supplied attribute gets created from
+the original attribute passed to this component using the customization point
+`transform_attribute`.
+
+
+[heading Header]
+
+ // forwards to <boost/spirit/home/karma/auxiliary/attr_cast.hpp>
+ #include <boost/spirit/include/karma_attr_cast.hpp>
+
+Also, see __include_structure__.
+
+[heading Namespace]
+
+[table
+ [[Name]]
+ [[`boost::spirit::attr_cast // alias: boost::spirit::karma::attr_cast`]]
+]
+
+[heading Model of]
+
+[:__unary_generator_concept__]
+
+[variablelist Notation
+ [[`g`] [A generator object.]]
+ [[`Attrib`] [An attribute type]]
+]
+
+[heading Expression Semantics]
+
+Semantics of an expression is defined only where it differs from, or is
+not defined in __unary_generator_concept__.
+
+[table
+ [[Expression] [Semantics]]
+ [[`attr_cast<Attrib>(g)`] [Create a component invoking the generator `g`
+ while passing an attribute of type `Attrib`.
+ This generator does not fail unless `g` fails.]]
+]
+
+[heading Attributes]
+
+[table
+ [[Expression] [Attribute]]
+ [[`attr_cast<Attrib>(g)`] [`Attrib`]]
+]
+
+[heading Complexity]
+
+[:The complexity of this component is fully defined by the complexity of the
+ embedded generator `g`.]
+
+[heading Example]
+
+Some includes:
+
+[reference_karma_includes]
+
+All code snippets below use these common test functions:
+
+[reference_karma_test]
+
+Some using declarations:
+
+[reference_karma_using_declarations_attr_cast]
+
+The example references data structure `int_data` and needs a specializtion of
+the customization point `transform_attribute`:
+
+[reference_karma_auxiliary_attr_cast_data1]
+
+Now we use the `attr_cast` pseudo generator to invoke the attribute
+transformation:
+
+[reference_karma_attr_cast1]
+
+[endsect]
+
+[/////////////////////////////////////////////////////////////////////////////]
[section:eol End of Line (`eol`)]
[heading Description]
Modified: branches/release/libs/spirit/doc/karma/binary.qbk
==============================================================================
--- branches/release/libs/spirit/doc/karma/binary.qbk (original)
+++ branches/release/libs/spirit/doc/karma/binary.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -134,6 +134,12 @@
[[`qword(qw)`] [__unused__]]
]
+[note In addition to their usual attribute of type `Attrib` all listed generators
+ accept an instance of a `boost::optional<Attrib>` as well. If the
+ `boost::optional<>` is initialized (holds a value) the generators behave
+ as if their attribute was an instance of `Attrib` and emit the value stored
+ in the `boost::optional<>`. Otherwise the generators will fail.]
+
[heading Complexity]
[:O(N), where N is the number of bytes emitted by the binary generator]
Modified: branches/release/libs/spirit/doc/karma/char.qbk
==============================================================================
--- branches/release/libs/spirit/doc/karma/char.qbk (original)
+++ branches/release/libs/spirit/doc/karma/char.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -263,6 +263,12 @@
[[`~cg`] [Attribute of `cg`]]
]
+[note In addition to their usual attribute of type `Ch` all listed generators
+ accept an instance of a `boost::optional<Ch>` as well. If the
+ `boost::optional<>` is initialized (holds a value) the generators behave
+ as if their attribute was an instance of `Ch` and emit the value stored
+ in the `boost::optional<>`. Otherwise the generators will fail.]
+
[heading Complexity]
[:O(1)]
@@ -452,6 +458,12 @@
character class generators (except `space`) require an attribute and will
fail compiling otherwise.]
+[note In addition to their usual attribute of type `Ch` all listed generators
+ accept an instance of a `boost::optional<Ch>` as well. If the
+ `boost::optional<>` is initialized (holds a value) the generators behave
+ as if their attribute was an instance of `Ch` and emit the value stored
+ in the `boost::optional<>`. Otherwise the generators will fail.]
+
[heading Complexity]
[:O(1)]
Modified: branches/release/libs/spirit/doc/karma/complex.qbk
==============================================================================
--- branches/release/libs/spirit/doc/karma/complex.qbk (original)
+++ branches/release/libs/spirit/doc/karma/complex.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -87,208 +87,13 @@
[endsect]
[/////////////////////////////////////////////////////////////////////////////]
-[section:karma_attributes Understanding Generator Attributes]
-
-[heading Attributes of Primitive Generators]
-
-Before we can start simplifying the complex number example from the previous
-section we need to introduce the notion of generator attributes. Every generator
-component in __karma__ exposes a specific attribute type. We have already seen
-that the attribute type of the `double_` generator is `double`. Other primitive
-generator components have other intuitive attribute types, such as for instance
-`int_` which has `int`, or `ascii::char_` which has `char`. For a full list of
-available generator primitives and their attribute types please see the section
-__sec_karma_primitive__.
-
-The attribute type of a generator defines what data types this generator is
-able to consume in order to produce its output. 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. As an example, it is possible to use an integer value in conjunction
-with a `double_` generator:
-
- // the following generates: 1.0
- std::string str;
- std::back_insert_iterator<std::string> out(str);
- generate(out, double_, 1);
-
-[heading Attributes of Compound Generators]
-
-__karma__ implements well defined attribute type propagation rules for all
-compound generators, such as sequences, alternatives, Kleene star, etc. The
-main attribute propagation rule for a sequences is for instance:
-
- a: A, b: B --> (a << b): tuple<A, B>
-
-which reads as:
-
-[:Given `a` and `b` are generators, and `A` is the attribute type of `a`, and
- `B` is the attribute type of `b`, then the attribute type of `a << b` will be
- `tuple<A, B>`.]
-
-[note The notation `tuple<A, B>` is used as a placeholder expression for any
- fusion sequence holding the types A and B, such as
- `boost::fusion::tuple<A, B>` or `std::pair<A, B>` (for more information
- see __fusion__).]
-
-As you can see, in order for a type to be compatible with the attribute type
-of a __karma__ compound generator it has to
-
-* either be convertible to the attribute type,
-* or it has to expose certain functionalities, i.e. it needs to conform to a
- concept compatible with the generator.
-
-Each compound generator implements its own set of attribute propagation rules.
-For a full list of how the different compound generators consume attributes
-see the section __sec_karma_compound__.
-
-[heading The Attribute of Sequence Generators]
-
-Sequences require an attribute type to expose the concept of a fusion sequence,
-where all elements of that fusion sequence have to be compatible with the
-corresponding element of the __karma__ generator sequence. For example, the
-expression:
-
- double_ << double_
-
-is able to consume any fusion sequence holding two types, where both types have
-to be convertible to `double`. The first element of the fusion sequence has to
-be compatible with the attribute of the first `double_` (i.e. it needs to be
-convertible to a `double`), and the second element of the fusion sequence has
-to be compatible with the attribute of the second `double_` (i.e. convertible
-to a `double` as well). If we assume to have an instance of a
-`std::pair<double, double>`, we can directly use the expression above to
-generate output for it:
-
- // the following generates: 1.0 2.0
- std::string str;
- std::back_insert_iterator<std::string> out(str);
- generate(out,
- double_ << double_, // generator grammar (format description)
- ascii::space, // delimiter grammar
- std::make_pair(1.0, 2.0)); // data to use as the attribute
-
-(where the `ascii::space` generator is used as the delimiter, allowing to
-automatically insert delimiting spaces in between all primitives).
-
-[tip *For sequences only:* __karma__ exposes a set of API functions usable
- mainly with sequences. Very much like the functions of the `printf`
- family these functions allow to pass the attributes for each of the
- elements of the sequence separately. Using the corresponding overload of
- /Karma's/ `generate()` the expression above could be rewritten as:
-
- ``generate(out, double_ << double_, space, 1.0, 2.0);``
-
- where the first attribute (`1.0`) is used for the first `double_`, and
- the second attribute (`2.0`) is used for the second `double_`.
-]
-
-[heading The Attribute of Alternative Generators]
-
-Alternative generators are all about - well - alternatives. In order to store
-possibly different result (attribute) types from the different alternatives
-we use the data type __boost_variant__. The main attribute propagation rule
-of these generators is
-
- a: A, b: B --> (a | b): variant<A, B>
-
-where the `variant<>` is again a placeholder for the concept of a
-__boost_variant__. Any other data type exposing the required concepts can be
-used instead (for more information about attribute compatibility and attribute
-concepts see the section __karma_compatible_attribute__). Alternatives have a
-second very important attribute propagation rule:
-
- a: A, b: A --> (a | b): A
-
-often allowing to simplify things significantly. If all sub expressions of
-a __karma__ alternative expose the same attribute type, the overall alternative
-will expose exactly the same attribute type as well. We will apply this rule
-later for our complex number generators.
-
-[heading More About Attributes of Compound Generators]
-
-While generating output it is often desirable to combine some constant
-elements with variable parts. For instance, if we go back to our example of
-formatting a complex number, we need to write it as `(real, imag)`, where `real`
-and `imag ` are the variables representing the real and imaginary parts of our
-complex number. As we have already seen, this can be achieved by writing
-
- '(' << double_ << ", " << double_ << ')'
-
-Fortunately, literals (such as `'('` and `", "`) do /not/ expose any attribute
-(well actually, they do expose the special type `unused_type`, but in this
-context `unused_type` is interpreted as if the generator does not expose any
-attribute at all). It is very important to understand that the literals don't
-consume any of the elements of a fusion sequence passed to this generator
-sequence. As said, they just don't expose any attribute and don't consume any
-data. The following example shows this:
-
- // the following generates: (1.0, 2.0)
- std::string str;
- std::back_insert_iterator<std::string> out(str);
- generate(out,
- '(' << double_ << ", " << double_ << ')', // generator grammar (format description)
- std::make_pair(1.0, 2.0)); // data to use as the attribute
-
-where the first element of the pair passed in as the data to generate is still
-associated with the first `double_`, and the second element is associated with
-the second `double_` generator.
-
-This behavior should be familiar as it conforms to the way other output
-formatting libraries such as `printf` or `boost::format` are handling their
-variable parts. In this context you can think about __karma__'s primitive
-generators (such as the `double_` above) as of being typesafe placeholders for
-the attribute values to print.
-
-[tip Similarly to the tip provided above, this example could be rewritten
- using /Karma's/ multi-attribute API function:
-
- ``generate(out, '(' << double_ << ", " << double_ << ')', 1.0, 2.0);``
-
- which provides a clear and comfortable syntax, more similar to the
- placeholder based syntax as exposed by `printf` or `boost::format`.
-]
-
-Let's take a look at this from a more formal perspective. The sequence attribute
-propagation rules define a special behavior if generators exposing `unused_type`
-as their attribute are involved (see __sec_karma_compound__):
-
- a: A, b: Unused --> (a << b): A
-
-which reads as:
-
-[:Given `a` and `b` are generators, and `A` is the attribute type of `a`, and
- `unused_type` is the attribute type of `b`, then the attribute type of
- `a << b` will be `A` as well. This rule applies regardless of the position
- the element exposing the `unused_type` is at.]
-
-This rule is the key to the understanding of the attribute handling in
-sequences as soon as literals are involved. It is as if elements with
-`unused_type` attributes 'disappeared' during attribute propagation. Notably,
-this is not only true for sequences but for any compound generator in
-__karma__. For instance, for alternative generators the corresponding rule
-is:
-
- a: A, b: Unused --> (a | b): A
-
-again, allowing to simplify the overall attribute type of an expression.
-
-[heading Attributes of Rules and Grammars]
-
-* explicit attribute type
-* attribute propagation
- * explicit and operator%=
-
-[endsect]
-
-[/////////////////////////////////////////////////////////////////////////////]
[section:karma_easier_complex Complex - Made easier]
[import ../../example/karma/complex_number_easier.cpp]
-In one of the previous sections we showed how to format a complex number (i.e.
+In the previous section we showed how to format a complex number (i.e.
a pair of doubles). In this section we will build on this example with the goal
-to avoid to use semantic actions in the format specification. Let's have a look
+to avoid using semantic actions in the format specification. Let's have a look
at the resulting code first, trying to understand it afterwards (the full source
file for this example can be found here:
[@../../example/karma/complex_number_easier.cpp complex_number_easier.cpp]):
@@ -299,15 +104,28 @@
[heading Making Numeric Generators Fail]
-All __karma_numerics__ (such as `double_`, et.al.) take the value to
-emit from an attached attribute. In addition, they may be initialized from a
-literal value. For instance, to emit a constant `0.0` you may write:
-`double_(0.0)`. The difference to a simple `0.0` or `lit(0.0)` is that the
-`double_(0.0)` consumes an attribute, if one is available. Additionally, it
-compares its immediate value to the value of the supplied attribute, and fails
-if those are not equal. This feature, namely to succeed generating only if
-the attribute matches the immediate value, enables numeric generators to be
-used to dynamically control the way output is generated.
+All __karma_numeric__ (such as `double_`, et.al.) take the value to
+emit from an attached attribute.
+
+ double d = 1.5;
+ generate(out, double_, d); // will emit '1.5' (without the quotes)
+
+Alternatively, they may be initialized from a literal value. For instance, to
+emit a constant `1.5` you may write:
+
+ generate(out, double_(1.5)); // will emit '1.5' as well (without the quotes)
+
+The difference to a simple `1.5` or `lit(1.5)` is that the `double_(1.5)`
+consumes an attribute if one is available. Additionally, it compares its
+immediate value to the value of the supplied attribute, and fails if those are
+not equal.
+
+ double d = 1.5;
+ generate(out, double_(1.5), d); // will emit '1.5' as long as d == 1.5
+
+This feature, namely to succeed generating only if the attribute matches the
+immediate value, enables numeric generators to be used to dynamically control
+the way output is generated.
[note There are more generators exposing the feature to fail if their
immediate value is not equal to the supplied attribute. Here are some:
@@ -323,9 +141,9 @@
both predicates is to discard all output emitted by the generator they are
attached to. This is equivalent to the behaviour of predicates used for
parsing. There the predicates do not consume any input allowing to look ahead
-in the input stream. The and predicate succeeds as long as its associated
-generator suceeds, while the not predicate succeeds only if its associated
-generator fails.
+in the input stream. In Karma, the and predicate succeeds as long as its
+associated generator suceeds, while the not predicate succeeds only if its
+associated generator fails.
[note The generator predicates in __karma__ consume an attribute, if
available. This makes them behave differently from predicates in __qi__,
@@ -335,26 +153,43 @@
input, in __karma__ the criteria has to be supplied by the user. The
simplest way to do this is by providing an attribute.]
+As an example, the following generator succeeds generating
+
+ double d = 1.0;
+ BOOST_ASSERT(generate(out, &double_(1.0), d)); // succeeds as d == 1.0
+
+while this one will fail:
+
+ double d = 1.0;
+ BOOST_ASSERT(!generate(out, !double_(1.0), d)); // fails as d == 1.0
+
+Neither of these will emit any output. The predicates discard everything
+emitted by the generators they are applied to.
+
[heading Ignoring Supplied Attributes]
Sometimes it is desirable to 'skip' (i.e. ignore) a provided attribute. This
happens for instance in alternative generators, where some of the alternatives
need to extract only part of the overall attribute passed to the alternative
generator. __karma__ has a special pseudo generator for that: the directive
-__karma_omit__. This directive consumes an attribute of the type defined by its
+__karma_omit__`[]`. This directive consumes an attribute of the type defined by its
embedded generator but it does not emit any output.
+[note The __karma__ __karma_omit__ directive does the 'opposite' of the
+ directive of the same name in __qi__. While the __qi_omit__ in __qi__
+ consumes input without exposing an attribute, its __karma__ counterpart
+ consumes an attribute without emitting any output.
+]
[heading Putting everything together]
Very similar to our first example ealier we use two alternatives to allow for
-two different output formats depending on whether the imaginery part of the
+the two different output formats depending on whether the imaginery part of the
complex number is equal to zero or not. The first alternative is executed if the
imaginary part is not zero, the second alternative otherwise. This time we make
-the decision during runtime using the __karma_not_predicate__ (the `operator!`)
-combined with the feature of many Karma primitive generators allowing them to
-/fail/ under certain conditions. Here is the first alternative again for your
-reference:
+the decision during runtime using the __karma_not_predicate__ combined with the
+feature of many Karma primitive generators to /fail/ under certain conditions.
+Here is the first alternative again for your reference:
!double_(0.0) << '(' << double_ << ", " << double_ << ')'
@@ -362,16 +197,16 @@
__karma_not_predicate__, it succeeds only if the `double_(0.0)` generator
/fails/, making the whole first alternative fail otherwise. Second, the
`double_(0.0)` generator succeeds only if the value of its attribute is equal
-to its immediate parameter (i.e. in this case `0.0`). Third, the
+to its immediate parameter (i.e. in this case `0.0`). And third, the
not predicate does not emit any output (regardless whether it succeeds or
-fails), discarding any possibble output emitted by the `double_(0.0)`.
+fails), discarding any possibly emitted output from the `double_(0.0)`.
As we pass the imaginery part of the complex number as the attribute value for
the `!double_(0.0)`, the overall first alternative will be chosen only if
-it is not equal to zero (the `!double_(0.0)` does not fail). Exactly what we
-need!
+it is not equal to zero (the `!double_(0.0)` does not fail). That is exactly
+what we need!
-Now, the second alternative simply needs to emit the real part of the complex
+Now, the second alternative has to emit the real part of the complex
number only. In order to simplify the overall grammar we strive to unify the
attribute types of all alternatives. As the attribute type exposed by the first
alternative is `tuple<double, double, double>`, we need to skip the first and
@@ -380,12 +215,17 @@
omit[double_] << double_ << omit[double_]
+The overall attribute of this expression is `tuple<double, double, double>`,
+but the `omit[]` 'eats up' the first and the last element. The output emitted
+by this expression consist of a single generated double representing the second
+element of the tuple, i.e. the real part of our complex number.
+
[important Generally, it is preferrable to use generator constructs not
requiring semantic actions. The reason is that semantic actions
often use constructs like: `double_[_1 = c.real()]`. But this
- assignment is a real one! The data is really /copied/ to the
+ assignment is a real one! The data is in fact /copied/ to the
attribute value of the generator the action is attached to. On the
- other hand, grammars without anz semantic actions usually don't
+ other hand, grammars without any semantic actions usually don't
have to copy the attributes, making them more efficient.]
[endsect]
Modified: branches/release/libs/spirit/doc/karma/directive.qbk
==============================================================================
--- branches/release/libs/spirit/doc/karma/directive.qbk (original)
+++ branches/release/libs/spirit/doc/karma/directive.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -346,6 +346,12 @@
reports an error).]]
]
+[note All failing iterations of the embedded generator will consume one element
+ from the supplied attribute. The overall `repeat[a]` will succeed as long
+ as the iteration criteria (number of successful invocations of the
+ embedded generator) is fullfilled (unless the underlying output stream
+ reports an error).]
+
[heading Attributes]
See __karma_comp_attr_notation__.
@@ -371,6 +377,27 @@
The notation of `vector<A>` stands for /any STL container/ holding
elements of type `A`.]
+It is important to note, that the `repeat[]` directive does not perform any
+buffering of the output generated by its embedded elements. That means that
+any failing element generator might have already generated some output, which
+is /not/ rolled back.
+
+[tip The simplest way to force a `repeat[]` directive to behave as if it did
+ buffering is to wrap it into a buffering directive (see
+ __karma_buffer__):
+
+ ``buffer[repeat[a]]``
+
+ which will /not/ generate any output in case of a failing generator
+ `repeat[a]`. The expression:
+
+ ``repeat[buffer[a]]``
+
+ will not generate any partial output from a generator `a` if it fails
+ generating in the middle of its output. The overall expression will
+ still generate the output as produced by all succeeded invocations of
+ the generator `a`.]
+
[heading Complexity]
[:The overall complexity of the repetition generator is defined by the
Modified: branches/release/libs/spirit/doc/karma/numeric.qbk
==============================================================================
--- branches/release/libs/spirit/doc/karma/numeric.qbk (original)
+++ branches/release/libs/spirit/doc/karma/numeric.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -8,8 +8,8 @@
[section:numeric Numeric]
-The library includes a couple of predefined objects for generating signed
-and unsigned integers and real numbers. These generators are fully
+The library includes a couple of predefined objects for generating booleans,
+signed and unsigned integers, and real numbers. These generators are fully
parametric. Most of the important aspects of numeric generation can be
finely adjusted to suit. This includes the radix base, the exponent, the
fraction etc. Policies control the real number generators' behavior. There are
@@ -44,12 +44,6 @@
[link spirit.karma.reference.numeric.unsigned_int.additional_requirements below])).
The `uint_generator` is a template class. Template parameters fine tune its behavior.
-[note `lit` is reused by the [karma_string String Generators], the
- __karma_char__, and the Numeric Generators. In
- general, a char generator is created when you pass in a
- character, a string generator is created when you pass in a string, and a
- numeric generator is created when you use a numeric literal.]
-
[heading Header]
// forwards to <boost/spirit/home/karma/numeric/uint.hpp>
@@ -71,11 +65,17 @@
[[`boost::spirit::ulong_long // alias: boost::spirit::karma::ulong_long`]]
]
-[note The generators `ulong_long` and `ulong_long(num)` are only available on
+[important The generators `ulong_long` and `ulong_long(num)` are only available on
platforms where the preprocessor constant `BOOST_HAS_LONG_LONG` is
defined (i.e. on platforms having native support for `unsigned long long`
(64 bit) unsigned integer types).]
+[note `lit` is reused by the [karma_string String Generators], the
+ __karma_char__, and the Numeric Generators. In
+ general, a char generator is created when you pass in a
+ character, a string generator is created when you pass in a string, and a
+ numeric generator is created when you use a numeric literal.]
+
[heading Synopsis]
template <
@@ -276,6 +276,12 @@
succeeds only if both are equal, failing otherwise.]]
]
+[note In addition to their usual attribute of type `Num` all listed generators
+ accept an instance of a `boost::optional<Num>` as well. If the
+ `boost::optional<>` is initialized (holds a value) the generators behave
+ as if their attribute was an instance of `Num` and emit the value stored
+ in the `boost::optional<>`. Otherwise the generators will fail.]
+
[heading Complexity]
[:O(N), where `N` is the number of digits needed to represent the generated
@@ -318,12 +324,6 @@
requirements (for more information about the requirements, see
[link spirit.karma.reference.numeric.signed_int.additional_requirements below]).
-[note `lit` is reused by the [karma_string String Generators], the
- __karma_char__, and the Numeric Generators. In
- general, a char generator is created when you pass in a
- character, a string generator is created when you pass in a string, and a
- numeric generator is created when you use a numeric literal.]
-
[heading Header]
// forwards to <boost/spirit/home/karma/numeric/int.hpp>
@@ -342,11 +342,17 @@
[[`boost::spirit::long_long // alias: boost::spirit::karma::long_long`]]
]
-[note The generators `long_long` and `long_long(num)` are only available on
+[important The generators `long_long` and `long_long(num)` are only available on
platforms where the preprocessor constant `BOOST_HAS_LONG_LONG` is
defined (i.e. on platforms having native support for `long long`
(64 bit) integer types).]
+[note `lit` is reused by the [karma_string String Generators], the
+ __karma_char__, and the Numeric Generators. In
+ general, a char generator is created when you pass in a
+ character, a string generator is created when you pass in a string, and a
+ numeric generator is created when you use a numeric literal.]
+
[heading Synopsis]
template <
@@ -524,6 +530,12 @@
succeeds only if both are equal, failing otherwise.]]
]
+[note In addition to their usual attribute of type `Num` all listed generators
+ accept an instance of a `boost::optional<Num>` as well. If the
+ `boost::optional<>` is initialized (holds a value) the generators behave
+ as if their attribute was an instance of `Num` and emit the value stored
+ in the `boost::optional<>`. Otherwise the generators will fail.]
+
[heading Complexity]
[:O(N), where `N` is the number of digits needed to represent the generated
@@ -562,12 +574,6 @@
expression requirements (for more information about the requirements, see
[link spirit.karma.reference.numeric.real_number.additional_requirements below]).
-[note `lit` is reused by the [karma_string String Generators], the
- __karma_char__, and the Numeric Generators. In
- general, a char generator is created when you pass in a
- character, a string generator is created when you pass in a string, and a
- numeric generator is created when you use a numeric literal.]
-
[heading Header]
// forwards to <boost/spirit/home/karma/numeric/real.hpp>
@@ -585,6 +591,12 @@
[[`boost::spirit::long_double // alias: boost::spirit::karma::long_double`]]
]
+[note `lit` is reused by the [karma_string String Generators], the
+ __karma_char__, and the Numeric Generators. In
+ general, a char generator is created when you pass in a
+ character, a string generator is created when you pass in a string, and a
+ numeric generator is created when you use a numeric literal.]
+
[heading Synopsis]
template <typename Num, typename RealPolicies>
@@ -594,9 +606,9 @@
[table
[[Parameter] [Description] [Default]]
- [[`Num`] [The type of the real number to generate] [`double`]]
+ [[`Num`] [The type of the real number to generate.] [`double`]]
[[`RealPolicies`] [The policies to use while
- converting the real number] [`real_policies<Num>`]]
+ converting the real number.] [`real_policies<Num>`]]
]
For more information about the type `RealPolicies` see
@@ -728,6 +740,11 @@
succeeds only if both are equal, failing otherwise.]]
]
+[note In addition to their usual attribute of type `Num` all listed generators
+ accept an instance of a `boost::optional<Num>` as well. If the
+ `boost::optional<>` is initialized (holds a value) the generators behave
+ as if their attribute was an instance of `Num` and emit the value stored
+ in the `boost::optional<>`. Otherwise the generators will fail.]
[heading Real Number Formatting Policies]
@@ -1048,4 +1065,288 @@
[endsect]
+[/////////////////////////////////////////////////////////////////////////////]
+[section:boolean Boolean Generators (`bool_`)]
+
+[heading Description]
+
+As you might expect, the `bool_generator` can generate output from boolean
+values. The `bool_generator` generator can be used to generate output from
+ordinary primitive C/C++ `bool` values or user defined boolean types as long as
+the type follows certain expression requirements (for more information about
+the requirements, see
+[link spirit.karma.reference.numeric.boolean.additional_requirements below])).
+The `bool_generator` is a template class. Template parameters fine tune its
+behavior.
+
+[heading Header]
+
+ // forwards to <boost/spirit/home/karma/numeric/bool.hpp>
+ #include <boost/spirit/include/karma_bool.hpp>
+
+Also, see __include_structure__.
+
+[heading Namespace]
+
+[table
+ [[Name]]
+ [[`boost::spirit::lit // alias: boost::spirit::karma::lit`]]
+ [[`boost::spirit::bool // alias: boost::spirit::karma::bool_`]]
+]
+
+[note `lit` is reused by the [karma_string String Generators], the
+ __karma_char__, and the Numeric Generators. In
+ general, a char generator is created when you pass in a
+ character, a string generator is created when you pass in a string, and a
+ numeric generator is created when you use a numeric (boolean) literal.]
+
+[heading Synopsis]
+
+ template <
+ typename B
+ , unsigned Policies>
+ struct bool_generator;
+
+[heading Template parameters]
+
+[table
+ [[Parameter] [Description] [Default]]
+ [[`B`] [The boolean base type of the
+ boolean generator.] [`bool`]]
+ [[`Policies`] [The policies to use while
+ converting the boolean.] [`bool_policies<B>`]]
+]
+
+[heading Model of]
+
+[:__primitive_generator_concept__]
+
+[variablelist Notation
+ [[`b`] [Boolean literal, or a __karma_lazy_argument__ that
+ evaluates to a boolean value of type `B`]]
+ [[`B`] [Type of `b`: any type usable as a boolean, or in case
+ of a __karma_lazy_argument__, its return value]]
+]
+
+[heading Expression Semantics]
+
+Semantics of an expression is defined only where it differs from, or is
+not defined in __primitive_generator_concept__.
+
+[table
+ [[Expression] [Semantics]]
+ [[`lit(b)`] [Generate the boolean literal `b` using the default
+ formatting (`false` is generated as `"false"`, and
+ `true` is generated as `"true"`). This generator never
+ fails (except if the underlying output stream reports an error).]]
+ [[`bool_`] [Generate the boolean value provided by a mandatory
+ attribute using the default formatting (`false` is
+ generated as `"false"`, and `true` is generated as
+ `"true"`). This generator never fails (except if the
+ underlying output stream reports an error).]]
+ [[`bool_(num)`] [Generate the booelan value provided by the
+ immediate literal value the generator is initialized
+ from using the default formatting (`false` is
+ generated as `"false"`, and `true` is generated as
+ `"true"`). If this generator has an associated
+ attribute it succeeds only as long as the attribute
+ is equal to the immediate literal (except if the
+ underlying output stream reports an error). Otherwise
+ this generator fails and does not generate any output.]]
+]
+
+All generators listed in the table above (except `lit(num)`) are predefined
+specializations of the `bool_generator<B, Policies>` basic boolean generator
+type described below. It is possible to directly use this type to create
+boolean generators using a wide range of formatting options.
+
+[table
+ [[Expression] [Semantics]]
+ [
+[``bool_generator<
+ B, Policies
+>()``] [Generate the boolean of type `B` provided
+ by a mandatory attribute using the specified `Policies`
+ This generator never fails (except if the underlying
+ output stream reports an error).]]
+ [
+[``bool_generator<
+ B, Policies
+>()``] [Generate the boolean of type `B` provided
+ by the immediate literal value the generator is
+ initialized from, using the specified `Policies`. If
+ this generator has an associated attribute it succeeds
+ only as long as the attribute is equal to the
+ immediate literal (except if the underlying output
+ stream reports an error). Otherwise this generator
+ fails and does not generate any output.]]
+]
+
+[heading Additional Requirements]
+
+The following lists enumerate the requirements which must be met in order to
+use a certain type `B` to instantiate and use a `bool_generator<B, Policies>`.
+
+The type `B`:
+
+* must be (safely) convertible to `bool`
+
+[heading Attributes]
+
+[table
+ [[Expression] [Attribute]]
+ [[`bool_(b)`] [__unused__]]
+ [[`bool_`] [`bool`, attribute is mandatory (otherwise
+ compilation will fail)]]
+ [[`bool_(b)`] [`bool`, attribute is optional, if it is
+ supplied, the generator compares the attribute with
+ `b` and succeeds only if both are equal, failing
+ otherwise.]]
+
+ [
+[``bool_generator<
+ B, Policies
+>()``] [`B`, attribute is mandatory (otherwise compilation
+ will fail)]]
+ [
+[``bool_generator<
+ B, Policies
+>()(b)``] [`B`, attribute is optional, if it is supplied, the
+ generator compares the attribute with `b` and
+ succeeds only if both are equal, failing otherwise.]]
+]
+
+[note In addition to their usual attribute of type `B` all listed generators
+ accept an instance of a `boost::optional<B>` as well. If the
+ `boost::optional<>` is initialized (holds a value) the generators behave
+ as if their attribute was an instance of `B` and emit the value stored
+ in the `boost::optional<>`. Otherwise the generators will fail.]
+
+[heading Boolean Formatting Policies]
+
+If special formatting of a boolean is needed, overload
+the policy class `bool_policies<B>` and use it as a template
+parameter to the `bool_generator<>` boolean generator. For instance:
+
+ struct special_bool_policy : karma::bool_policies<>
+ {
+ template <typename CharEncoding, typename Tag
+ , typename OutputIterator>
+ static bool generate_false(OutputIterator& sink, bool b)
+ {
+ // we want to spell the names of false as eurt (true backwards)
+ return string_inserter<CharEncoding, Tag>::call(sink, "eurt");
+ }
+ };
+
+ typedef karma::bool_generator<special_bool_policy> backwards_bool_type;
+ backwards_bool_type const backwards_bool;
+
+ karma::generate(sink, backwards_bool, true); // will output: true
+ karma::generate(sink, backwards_bool(false)); // will output: uert
+
+The template parameter `B` should be the type to be formatted using the
+overloaded policy type. At the same time `B` will be used as the attribute
+type of the created real number generator. The default for `B` is `bool`.
+
+
+[heading Booelan Formatting Policy Expression Semantics]
+
+A boolean formatting policy should expose the following:
+
+[table
+[[Expression][Description]]
+[ [``
+ template <typename Inserter
+ , typename OutputIterator
+ , typename Policies>
+ bool call (OutputIterator& sink, Num n
+ , Policies const& p);
+ ``]
+ [This is the main function used to generate the output for a boolean.
+ It is called by the boolean generator in order to perform the
+ conversion. In theory all of the work can be implemented here, but it is
+ the easiest to use existing functionality provided by the type specified
+ by the template parameter `Inserter`. The default implementation of this
+ functions is:
+ ``
+ template <typename Inserter, typename OutputIterator
+ , typename Policies>
+ static bool
+ call (OutputIterator& sink, B b, Policies const& p)
+ {
+ return Inserter::call_n(sink, b, p);
+ }
+ ``
+ `sink`: is the output iterator to use for generation
+
+ `b`: is the boolean to convert
+
+ `p`: the instance of the policy type used to instantiate this real
+ number generator.
+ ]]
+[ [``
+ template <typename CharEncoding,
+ typename Tag, typename OutputIterator>
+ bool generate_false(
+ OutputIterator& sink, B b);
+ ``]
+ [This function is called to generate the boolean if it is `false`.
+
+ `sink`: is the output iterator to use for generation
+
+ `b`: The boolean to convert (the value is `false`).
+
+ The template parameters `CharEncoding` and `Tag` are either of the type
+ `unused_type` or describe the character class and conversion to be
+ applied to any output possibly influenced by either the `lower[]` or
+ `upper[]` directives.
+
+ The return value defines the outcome of the whole generator. ]]
+[ [``
+ template <typename CharEncoding,
+ typename Tag, typename OutputIterator>
+ bool generate_true(
+ OutputIterator& sink, B b);
+ ``]
+ [This function is called to generate the boolean if it is `true`.
+
+ `sink`: is the output iterator to use for generation
+
+ `b`: The boolean to convert (the value is `true`).
+
+ The template parameters `CharEncoding` and `Tag` are either of the type
+ `unused_type` or describe the character class and conversion to be
+ applied to any output possibly influenced by either the `lower[]` or
+ `upper[]` directives.
+
+ The return value defines the outcome of the whole generator. ]]
+]
+
+[heading Complexity]
+
+[:O(N), where `N` is the number of characters needed to represent the generated
+ boolean.]
+
+[heading Example]
+
+Some includes:
+
+[reference_karma_includes]
+
+All code snippets below use these common test functions:
+
+[reference_karma_test]
+[reference_karma_test_attr]
+
+Some using declarations:
+
+[reference_karma_using_declarations_bool]
+
+Basic usage of an `bool_` generator:
+
+[reference_karma_bool]
+
+[endsect]
+
[endsect]
Modified: branches/release/libs/spirit/doc/karma/operator.qbk
==============================================================================
--- branches/release/libs/spirit/doc/karma/operator.qbk (original)
+++ branches/release/libs/spirit/doc/karma/operator.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -261,6 +261,9 @@
underlying output stream reports an error).]]
]
+[note All failing iterations of the embedded generator will consume one element
+ from the supplied attribute.]
+
[heading Attributes]
See __karma_comp_attr_notation__.
@@ -295,7 +298,7 @@
``buffer[*a]``
- which will /not/ generate any output in case of a failing generator `a`.
+ which will /not/ generate any output in case of a failing generator `*a`.
The expression:
``*(buffer[a])``
@@ -320,7 +323,7 @@
All code snippets below use this common test function:
-[reference_karma_test_attr]
+[reference_karma_test_attr_delim]
Some using declarations:
@@ -369,6 +372,11 @@
error).]]
]
+[note All failing iterations of the embedded generator will consume one element
+ from the supplied attribute. The overall `+a` will succeed as long as at
+ least one invocation of the embedded generator will succeed (unless the
+ underlying output stream reports an error).]
+
[heading Attributes]
See __karma_comp_attr_notation__.
@@ -402,7 +410,7 @@
``buffer[+a]``
- which will /not/ generate any output in case of a failing generator `a`.
+ which will /not/ generate any output in case of a failing generator `+a`.
The expression:
``+(buffer[a])``
@@ -428,6 +436,7 @@
All code snippets below use this common test function:
[reference_karma_test_attr]
+[reference_karma_test_attr_delim]
Some using declarations:
@@ -485,6 +494,11 @@
semantically equivalent, except for the attribute of `b`, which gets ignored
in the case of the list generator.
+[note All failing iterations of the embedded generator will consume one element
+ from the supplied attribute. The overall `a % b` will succeed as long as at
+ least one invocation of the embedded generator, `a`, will succeed (unless
+ the underlying output stream reports an error).]
+
[heading Attributes]
See __karma_comp_attr_notation__.
@@ -520,20 +534,6 @@
contain any elements.
]
-It is important to note, that the list generator does not perform any buffering
-of the output generated by its embedded elements. That means that any failing
-element generator might have already generated some output, which is /not/
-rolled back.
-
-[tip The simplest way to force a list generator to behave as if it did
- buffering is to wrap it into a buffering directive (see
- __karma_buffer__):
-
- ``buffer[a % b]``
-
- which will /not/ generate any output in case of a failing generator `a`.
-]
-
[heading Complexity]
[:The overall complexity of the list generator is defined by the
@@ -624,7 +624,7 @@
``buffer[-a]``
- which will /not/ generate any output in case of a failing generator `a`.
+ which will /not/ generate any output in case of a failing generator `-a`.
]
[heading Complexity]
Modified: branches/release/libs/spirit/doc/karma/quick_reference.qbk
==============================================================================
--- branches/release/libs/spirit/doc/karma/quick_reference.qbk (original)
+++ branches/release/libs/spirit/doc/karma/quick_reference.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -25,8 +25,9 @@
[[`attrib`] [A attribute value]]
[[`Attrib`] [An attribute type]]
[[`b`] [A boolean expression]]
+ [[`B`] [A type to be interpreted as in boolean expressions]]
[[`fg`] [A (lazy generator) function with signature `G(Unused, Context)`]]
- [[`fa`] [A (semantic action) function with signature `void(Attr&, Context, bool&)`.
+ [[`fa`] [A (semantic action) function with signature `void(Attrib&, Context, bool&)`.
The third parameter is a boolean flag that can be set to false to
force the generator to fail. Both `Context` and the boolean flag are
optional.]]
@@ -112,7 +113,7 @@
[section:string String Generators]
-See here for more information about __karma_string__.
+See here for more information about [karma_string String Generators].
[table
[[Expression] [Attribute] [Description]]
@@ -222,9 +223,29 @@
[endsect]
+[section:boolean Boolean Generators]
+
+[table
+ [[Expression] [Attribute] [Description]]
+ [[[boolean `bool_`]] [`bool`] [Generate a boolean]]
+ [[[boolean `bool_(b)`]] [`bool`] [Generate `b` as a boolean,
+ if an attribute is supplied it must match]]
+ [[[boolean ``bool_generator<
+ B, Policies
+>()``]]
+ [`B`] [Generate a boolean of type `B`]]
+ [[[boolean ``bool_generator<
+ B, Policies
+>()(b)``]]
+ [`B`] [Generate a boolean `b` as a `B`,
+ if an attribute is supplied it must match]]
+]
+
+[endsect]
+
[section:stream Stream Generators]
-See here for more information about __karma_stream__.
+See here for more information about [karma_stream Stream Generators].
[table
[[Expression] [Attribute] [Description]]
@@ -281,6 +302,7 @@
[table
[[Expression] [Attribute] [Description]]
+ [[[karma_attr_cast `attr_cast<Attrib>(g)`]] [`Attrib`] [Invokes `g` while supplying an attribute of type `Attrib`.]]
[[__karma_eol__] [`Unused`] [Generates the end of line (`\n`)]]
[[__karma_eps__] [`Unused`] [Generate an empty string]]
[[__karma_feps__] [`Unused`] [If `b` is true, generate an empty string]]
@@ -333,51 +355,60 @@
[table
[[Expression] [Attribute] [Description]]
- [[[karma_upperlower `lower[a]`]] [`A`] [Generate `a` as lower case]]
- [[[karma_upperlower `upper[a]`]] [`A`] [Generate `a` as upper case]]
+ [[[karma_upperlower `lower`]`[a]`] [`A`] [Generate `a` as lower case]]
+ [[[karma_upperlower `upper`]`[a]`] [`A`] [Generate `a` as upper case]]
- [[[karma_align `left_align[a]`]] [`A`] [Generate `a` left aligned in column of width
+ [[[karma_align `left_align`]`[a]`] [`A`] [Generate `a` left aligned in column of width
`BOOST_KARMA_DEFAULT_FIELD_LENGTH`]]
- [[[karma_align `left_align(num)[a]`]] [`A`] [Generate `a` left aligned in column of width `num`]]
- [[[karma_align `left_align(num, g)[a]`]][`A`] [Generate `a` left aligned in column of width `num`
+ [[[karma_align `left_align`]`(num)[a]`] [`A`] [Generate `a` left aligned in column of width `num`]]
+ [[[karma_align `left_align`]`(num, g)[a]`][`A`] [Generate `a` left aligned in column of width `num`
while using `g` to generate the necesssary
padding]]
- [[[karma_align `center[a]`]] [`A`] [Generate `a` centered in column of width
+ [[[karma_align `center`]`[a]`] [`A`] [Generate `a` centered in column of width
`BOOST_KARMA_DEFAULT_FIELD_LENGTH`]]
- [[[karma_align `center(num)[a]`]] [`A`] [Generate `a` centered in column of width `num`]]
- [[[karma_align `center(num, g)[a]`]] [`A`] [Generate `a` centered in column of width `num`
+ [[[karma_align `center`]`(num)[a]`] [`A`] [Generate `a` centered in column of width `num`]]
+ [[[karma_align `center`]`(num, g)[a]`] [`A`] [Generate `a` centered in column of width `num`
while using `g` to generate the necesssary
padding]]
- [[[karma_align `right_align[a]`]] [`A`] [Generate `a` right aligned in column of width
+ [[[karma_align `right_align`]`[a]`] [`A`] [Generate `a` right aligned in column of width
`BOOST_KARMA_DEFAULT_FIELD_LENGTH`]]
- [[[karma_align `right_align(num)[a]`]] [`A`] [Generate `a` right aligned in column of width `num`]]
- [[[karma_align `right_align(num, g)[a]`]][`A`][Generate `a` right aligned in column of width `num`
+ [[[karma_align `right_align`]`(num)[a]`] [`A`] [Generate `a` right aligned in column of width `num`]]
+ [[[karma_align `right_align`]`(num, g)[a]`][`A`][Generate `a` right aligned in column of width `num`
while using `g` to generate the necesssary
padding]]
- [[[karma_maxwidth `maxwidth[a]`]] [`A`] [Generate `a` truncated to column of width
+ [[[karma_maxwidth `maxwidth`]`[a]`] [`A`] [Generate `a` truncated to column of width
`BOOST_KARMA_DEFAULT_FIELD_MAXWIDTH`]]
- [[[karma_maxwidth `maxwidth(num)[a]`]] [`A`] [Generate `a` truncated to column of width `num`]]
+ [[[karma_maxwidth `maxwidth`]`(num)[a]`] [`A`] [Generate `a` truncated to column of width `num`]]
- [[[karma_repeat `repeat[a]`]] [`vector<A>`] [Repeat `a` zero or more times]]
- [[[karma_repeat `repeat(num)[a]`]] [`vector<A>`] [Repeat `a` `num` times]]
- [[[karma_repeat `repeat(num1, num2)[a]`]] [`vector<A>`] [Repeat `a` `num1` to `num2` times]]
- [[[karma_repeat `repeat(num, inf)[a]`]] [`vector<A>`] [Repeat `a` `num` or more times]]
+ [[[karma_repeat `repeat`]`[a]`] [`vector<A>`] [Repeat `a` zero or more times]]
+ [[[karma_repeat `repeat`]`(num)[a]`] [`vector<A>`] [Repeat `a` `num` times]]
+ [[[karma_repeat `repeat`]`(num1, num2)[a]`] [`vector<A>`] [Repeat `a` `num1` to `num2` times]]
+ [[[karma_repeat `repeat`]`(num, inf)[a]`] [`vector<A>`] [Repeat `a` `num` or more times]]
- [[__karma_verbatim__] [`A`] [Disable delimited generation for `a`]]
- [[[karma_delimit `delimit[a]`]] [`A`] [Reestablish the delimiter that got inhibited by verbatim]]
- [[[karma_delimit `delimit(d)[a]`]] [`A`] [Use `d` as a delimiter for generating `a`]]
+ [[__karma_verbatim__`[a]`][`A`] [Disable delimited generation for `a`]]
+ [[[karma_delimit `delimit`]`[a]`] [`A`] [Reestablish the delimiter that got inhibited by verbatim]]
+ [[[karma_delimit `delimit`]`(d)[a]`] [`A`] [Use `d` as a delimiter for generating `a`]]
- [[__karma_omit__] [`A`] [Consumes the attribute type of `a` without generating anything]]
+ [[__karma_omit__`[a]`] [`A`] [Consumes the attribute type of `a` without generating anything]]
- [[__karma_buffer__] [`A`] [Temporarily intercepts the output generated by `a`,
+ [[__karma_buffer__`[a]`][`A`] [Temporarily intercepts the output generated by `a`,
flushing it only after `a` succeeded.]]
]
[endsect]
+[section:action Generator Semantic Actions]
+
+[table
+ [[Expression] [Attribute] [Description]]
+ [[`g[fa]`] [Attribute of `g`] [Call semantic action, `fa` before invoking `g`.]]
+]
+
+[endsect]
+
[endsect]
[/////////////////////////////////////////////////////////////////////////////]
@@ -490,11 +521,11 @@
`A1, A2, A3` are optional and can be specified in any order.
`name` is an optional string that gives the rule
its name, useful for debugging and error handling.]]
- [[`rule<Iterator, A1, A2, A3> r(r2);`] [Copy construct rule `r` from rule `r2`. `boost::shared_ptr` semantics.]]
+ [[`rule<Iterator, A1, A2, A3> r(r2);`] [Copy construct rule `r` from rule `r2`.]]
[[`r = r2;`] [Assign rule `r2` to `r`. `boost::shared_ptr` semantics.]]
[[`r.alias()`] [return an alias of `r`. The alias is a generator that
holds a reference to `r`. Reference semantics.]]
- [[`r.copy()`] [Get a copy of `r`. `boost::shared_ptr` semantics.]]
+ [[`r.copy()`] [Get a copy of `r`.]]
[[`r.name(name)`] [Naming a rule]]
[[`r.name()`] [Getting the name of a rule]]
[[`r = g;`] [Rule definition]]
@@ -536,16 +567,16 @@
where `f` is a function with the signatures:
- void f(Attr&);
- void f(Attr&, Context&);
- void f(Attr&, Context&, bool&);
+ void f(Attrib&);
+ void f(Attrib&, Context&);
+ void f(Attrib&, Context&, bool&);
You can use `__boost_bind__` to bind member functions. For function
objects, the allowed signatures are:
- void operator()(Attr&, unused_type, unused_type) const;
- void operator()(Attr&, Context&, unused_type) const;
- void operator()(Attr&, Context&, bool&) const;
+ void operator()(Attrib&, unused_type, unused_type) const;
+ void operator()(Attrib&, Context&, unused_type) const;
+ void operator()(Attrib&, Context&, bool&) const;
The `unused_type` is used in the signatures above to signify 'don't
care'.
Modified: branches/release/libs/spirit/doc/karma/stream.qbk
==============================================================================
--- branches/release/libs/spirit/doc/karma/stream.qbk (original)
+++ branches/release/libs/spirit/doc/karma/stream.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -186,6 +186,12 @@
__boost_any__.
]
+[note In addition to their usual attribute of type `Attrib` all listed generators
+ accept an instance of a `boost::optional<Attrib>` as well. If the
+ `boost::optional<>` is initialized (holds a value) the generators behave
+ as if their attribute was an instance of `Attrib` and emit the value stored
+ in the `boost::optional<>`. Otherwise the generators will fail.]
+
[heading Complexity]
[:O(N), where N is the number of characters emitted by the stream generator]
Modified: branches/release/libs/spirit/doc/karma/string.qbk
==============================================================================
--- branches/release/libs/spirit/doc/karma/string.qbk (original)
+++ branches/release/libs/spirit/doc/karma/string.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -117,6 +117,12 @@
succeeds only if both are equal, failing otherwise]]
]
+[note In addition to their usual attribute of type `S` all listed generators
+ accept an instance of a `boost::optional<S>` as well. If the
+ `boost::optional<>` is initialized (holds a value) the generators behave
+ as if their attribute was an instance of `S` and emit the value stored
+ in the `boost::optional<>`. Otherwise the generators will fail.]
+
[heading Complexity]
[:O(N), where N is the number of characters emitted by the string generator]
Modified: branches/release/libs/spirit/doc/karma/warming_up.qbk
==============================================================================
--- branches/release/libs/spirit/doc/karma/warming_up.qbk (original)
+++ branches/release/libs/spirit/doc/karma/warming_up.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -127,6 +127,17 @@
[import ../../example/karma/num_list1.cpp]
[tutorial_karma_numlist1]
+[note You might wonder how a `vector<double>`, which is actually a single data
+ structure, can be used as an argument (we call it attribute) to a sequence
+ of generators. This seems to be counter intuitive and doesn't match with
+ your experience of using `printf`, where each formatting placeholder has
+ to be matched with a corresponding argument. Well, we will explain this
+ behavior in more detail later in this tutorial. For now just consider
+ this to be a special case, implemented on purpose to allow more flexible
+ output formatting of STL containers: sequences accept a single container
+ attribute if all elements of this sequence accept attribute compatible
+ with the elements held by this container.]
+
The generate function returns `true` or `false` depending on the result of the
output generation. As outlined in different places of this documentation, a
generator may fail for different reasons. One of the possible reasons is an
Modified: branches/release/libs/spirit/doc/lex/concepts.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/concepts.qbk (original)
+++ branches/release/libs/spirit/doc/lex/concepts.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -41,7 +41,7 @@
In the expressions below, the behavior of the lexer component, `l`, is left
unspecified in the base `Lexer` concept. These are specified in subsequent,
-more refined concepts and by the actual models therof.
+more refined concepts and by the actual models thereof.
For any Lexer the following expressions must be valid:
Modified: branches/release/libs/spirit/doc/lex/introduction.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/introduction.qbk (original)
+++ branches/release/libs/spirit/doc/lex/introduction.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -14,8 +14,8 @@
various ways to build scanners. __lex__ is a library built to take care of the
complexities of creating a lexer for your grammar (in this documentation we
will use the terms 'lexical analyzer', 'lexer' and 'scanner' interchangably).
-All it needs to create a lexer is to know the set of patterns describing the
-different tokens you want to recognize in the input. To make this a bit more
+All that is needed to create a lexer is to know the set of patterns describing
+the different tokens you want to recognize in the input. To make this a bit more
formal, here are some definitions:
* A token is a sequence of consecutive characters having a collective meaning.
@@ -26,7 +26,7 @@
a pattern for a rule matching C++ identifiers.
* Characters between tokens are called whitespace; these include spaces, tabs,
newlines, and formfeeds. Many people also count comments as whitespace,
- though since some tools such as lint look at comments, this conflation is not
+ though since some tools such as lint look at comments, this method is not
perfect.
[heading Why Use a Separate Lexer?]
@@ -39,7 +39,7 @@
lexer, parsing the input character stream directly, and for the most part this
is the way __spirit__ has been used since its invention.
-However, this separation has both practical and theoretical bases and proves to
+However, this separation has both practical and theoretical basis, and proves to
be very useful in practical applications. In 1956, Noam Chomsky defined the
"Chomsky Hierarchy" of grammars:
@@ -50,17 +50,17 @@
The complexity of these grammars increases from regular grammars being the
simplest to unrestricted grammars being the most complex. Similarly, the
-complexity of the recognizers for these grammars increases. Although, a few
+complexity of pattern recognition for these grammars increases. Although, a few
features of some programming languages (such as C++) are Type 1, fortunately
-for the most part programming languages can be described using only the Types 3
-and 2. The neat part about these two types is that they are well known and the
+for the most part programming languages can be described using only the Types 2
+and 3. The neat part about these two types is that they are well known and the
ways to parse them are well understood. It has been shown that any regular
grammar can be parsed using a state machine (finite automaton). Similarly,
context-free grammars can always be parsed using a push-down automaton
(essentially a state machine augmented by a stack).
-In real programming languages and practical grammars the parts that can be
-handled as regular expressions tend to be the lower-level parts, such as the
+In real programming languages and practical grammars, the parts that can be
+handled as regular expressions tend to be the lower-level pieces, such as the
definition of an identifier or of an integer value:
letter := [a-zA-Z]
@@ -72,7 +72,7 @@
Higher level parts of practical grammars tend to be more complex and can't be
implemented using plain regular expressions. We need to store
information on the built-in hardware stack while recursing the grammar
-hierarchy, and that in fact this is the preferred approach used for top-down
+hierarchy, and that is the preferred approach used for top-down
parsing. Since it takes a different kind of abstract machine to parse the two
types of grammars, it proved to be efficient to separate the lexical scanner
into a separate module which is built around the idea of a state machine. The
@@ -85,7 +85,7 @@
Almost every language has certain keywords such as IF, FOR, and WHILE. The
decision if a certain character sequence actually comprises a keyword or just
an identifier often can be made only after seeing the first delimiter /after/
-it. This already is a limited form of backtracking, since we need to store the
+it. In fact, this makes the process backtracking, since we need to store the
string long enough to be able to make the decision. The same is true for more
coarse grained language features such as nested IF/ELSE statements, where the
decision about to which IF belongs the last ELSE statement can be made only
@@ -112,10 +112,10 @@
the __spirit__ library and the C++ host language. You don't need any external
tools to generate the code, your lexer will be perfectly integrated with the
rest of your program, making it possible to freely access any context
-information and data structure. Since the C++ compiler sees all the code it
-will generate optimal code nomatter what configuration options have been chosen
-by the user. __lex__ gives you the vast majority of features you could get from a similar
-__flex__ program without the need to leave C++ as a host language:
+information and data structure. Since the C++ compiler sees all the code, it
+will generate optimal code no matter what configuration options have been chosen
+by the user. __lex__ gives you the vast majority of features you could get from
+a similar __flex__ program without the need to leave C++ as a host language:
* The definition of tokens is done using regular expressions (patterns)
* The token definitions can refer to special substitution strings (pattern
@@ -131,8 +131,8 @@
opposite, the /dynamic/ model. You can directly integrate the token definitions
into your C++ program, building the lexical analyzer dynamically at runtime. The
dynamic model is something not supported by __flex__ or other lexical scanner
-generators (such as __re2c__, __ragel__, etc.). But it is very flexible and
-allows you to speed up the development of your application.
+generators (such as __re2c__, __ragel__, etc.). This dynamic flexibility allows
+you to speed up the development of your application.
[heading The Library Structure of __lex__]
@@ -145,8 +145,8 @@
analyzer itself exposes a standard forward iterator as well. The difference
here is that the exposed iterator provides access to the token sequence instead
of to the character sequence. The tokens in this sequence are constructed on
-the fly by analyzing the underlying character sequence and
-matching this to the patterns as defined by the application.
+the fly by analyzing the underlying character sequence and matching this to the
+patterns as defined by the application.
[fig lexerflow.png..The Library structure and Common Flow of Information while using __lex__ in an application..spirit.lexerflow]
Modified: branches/release/libs/spirit/doc/lex/lexer.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/lexer.qbk (original)
+++ branches/release/libs/spirit/doc/lex/lexer.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -12,6 +12,7 @@
[[Expression] [Meaning]]
[[`x`] [Match any character `x`]]
[[`.`] [Match any except newline (or optionally *any* character)]]
+ [[`"..."`] [All characters taken as literals between double quotes, except escape sequences]]
[[`[xyz]`] [A character class; in this case matches `x`, `y` or `z`]]
[[`[abj-oZ]`] [A character class with a range in it; matches `a`, `b` any
letter from `j` through `o` or a `Z`]]
@@ -38,6 +39,14 @@
[[`\123`] [The character with octal value 123]]
[[`\x2a`] [The character with hexadecimal value 2a]]
[[`\cX`] [A named control character `X`.]]
+ [[`\a`] [A shortcut for Alert (bell).]]
+ [[`\b`] [A shortcut for Backspace]]
+ [[`\e`] [A shortcut for ESC (escape character `0x1b`)]]
+ [[`\n`] [A shortcut for newline]]
+ [[`\r`] [A shortcut for carriage return]]
+ [[`\f`] [A shortcut for form feed `0x0c`]]
+ [[`\t`] [A shortcut for horizontal tab `0x09`]]
+ [[`\v`] [A shortcut for vertical tab `0x0b`]]
[[`\d`] [A shortcut for `[0-9]`]]
[[`\D`] [A shortcut for `[^0-9]`]]
[[`\s`] [A shortcut for `[\x20\t\n\r\f\v]`]]
Modified: branches/release/libs/spirit/doc/lex/lexer_quickstart1.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/lexer_quickstart1.qbk (original)
+++ branches/release/libs/spirit/doc/lex/lexer_quickstart1.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -58,7 +58,7 @@
[wcf_functor]
-All what's left is to write some boilerplate code helping to tie together the
+All what is left is to write some boilerplate code helping to tie together the
pieces described so far. To simplify this example we call the `lex::tokenize()`
function implemented in __lex__ (for a more detailed description of this
function see here: __fixme__), even if we could have written a loop to iterate
@@ -87,7 +87,7 @@
The remaining examples in this tutorial will use more sophisticated features
of __lex__, mainly to allow further simplification of the code to be written,
while maintaining the similarity with corresponding features of __flex__.
-__lex__ has been designed to be as much as possible similar to __flex__, that
+__lex__ has been designed to be as similiar to __flex__ as possible. That
is why this documentation will provide the corresponding __flex__ code for the
shown __lex__ examples almost everywhere. So consequently, here is the __flex__
code corresponding to the example as shown above.
Modified: branches/release/libs/spirit/doc/lex/lexer_quickstart2.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/lexer_quickstart2.qbk (original)
+++ branches/release/libs/spirit/doc/lex/lexer_quickstart2.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -8,13 +8,13 @@
[section:lexer_quickstart2 Quickstart 2 - A better word counter using __lex__]
-People knowing __flex__ will probably complain about the example from the
+People familiar with __flex__ will probably complain about the example from the
section __sec_lex_quickstart_1__ as being overly complex and not being
written to leverage the possibilities provided by this tool. In particular the
previous example did not directly use the lexer actions to count the lines,
words, and characters. So the example provided in this step of the tutorial will
-show how to use semantic actions in __lex__. Even if it still
-will allow to count text elements only it introduces other new concepts and
+show how to use semantic actions in __lex__. Even though this examples still
+counts textual elements, the purpose is to introduce new concepts and
configuration options along the lines (for the full example code
see here: [@../../example/lex/word_count_lexer.cpp word_count_lexer.cpp]).
Modified: branches/release/libs/spirit/doc/lex/lexer_quickstart3.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/lexer_quickstart3.qbk (original)
+++ branches/release/libs/spirit/doc/lex/lexer_quickstart3.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -9,11 +9,11 @@
[section:lexer_quickstart3 Quickstart 3 - Counting Words Using a Parser]
The whole purpose of integrating __lex__ as part of the __spirit__ library was
-to add a library allowing to merge lexical analysis with the parsing
+to add a library allowing the merger of lexical analysis with the parsing
process as defined by a __spirit__ grammar. __spirit__ parsers read their input
from an input sequence accessed by iterators. So naturally, we chose iterators
to be used as the interface beween the lexer and the parser. A second goal of
-the lexer/parser integration was to enable the usage of possibly different
+the lexer/parser integration was to enable the usage of different
lexical analyzer libraries. The utilization of iterators seemed to be the
right choice from this standpoint as well, mainly because these can be used as
an abstraction layer hiding implementation specifics of the used lexer
@@ -62,7 +62,7 @@
not reveal any surprises. However, it uses lexer token definition macros to
simplify the composition of the regular expressions, which will be described in
more detail in the section __fixme__. Generally, any token definition is usable
-without modification either for a standalone lexical analyzer or in conjunction
+without modification from either a standalone lexical analyzer or in conjunction
with a parser.
[wcp_token_definition]
@@ -71,7 +71,7 @@
[heading Using Token Definition Instances as Parsers]
While the integration of lexer and parser in the control flow is achieved by
-using special iterators wrapping the lexical analyzer, we still nead a means of
+using special iterators wrapping the lexical analyzer, we still need a means of
expressing in the grammar what tokens to match and where. The token definition
class above uses three different ways of defining a token:
@@ -85,8 +85,8 @@
level.
All three token definition methods require a different method of grammar
-integration. But as you can see from the following code snippet, each of this
-methods is straightforward and blends the corresponding token instance
+integration. But as you can see from the following code snippet, each of these
+methods are straightforward and blend the corresponding token instances
naturally with the surrounding __qi__ grammar syntax.
[table
@@ -96,8 +96,8 @@
succeed if the regular expression used to define
this has been matched successfully.]]
[[single character] [The single character is directly usable in the
- grammar, under certain circumstances it needs to be
- wrapped by a `char_()` parser component, though.
+ grammar. However, under certain circumstances it needs
+ to be wrapped by a `char_()` parser component.
Parsing of this component will succeed if the
single character has been matched.]]
[[explicit token id] [To use an explicit token id in a __qi__ grammar you
@@ -112,10 +112,10 @@
[wcp_grammar_definition]
-As already described (see: __sec_qi_karma_attributes__), the __qi__ parser
+As already described (see: __sec_attributes__), the __qi__ parser
library builds upon a set of of fully attributed parser components.
-Consequently, all the token definitions do support the this attribute model as
-well. The most natural way of implementing this was to use the token values as
+Consequently, all token definitions support this attribute model as well. The
+most natural way of implementing this was to use the token values as
the attributes exposed by the parser component corresponding to the token
definition (you can read more about this topic here: __sec_lex_tokenvalues__).
The example above takes advantage of the full integration of the token values
Modified: branches/release/libs/spirit/doc/lex/lexer_semantic_actions.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/lexer_semantic_actions.qbk (original)
+++ branches/release/libs/spirit/doc/lex/lexer_semantic_actions.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,14 +27,14 @@
void f (Iterator& start, Iterator& end, pass_flag& matched, Idtype& id, Context& ctx);
[variablelist where:
- [[`Iterator& start`] [This is a the iterator pointing to the begin of the
+ [[`Iterator& start`] [This is the iterator pointing to the begin of the
matched range in the underlying input sequence. The
type of the iterator is the same as specified while
defining the type of the `lexertl_lexer<...>`
(its first template parameter). The semantic action
is allowed to change the value of this iterator
influencing, the matched input sequence.]]
- [[`Iterator& end`] [This is a the iterator pointing to the end of the
+ [[`Iterator& end`] [This is the iterator pointing to the end of the
matched range in the underlying input sequence. The
type of the iterator is the same as specified while
defining the type of the `lexertl_lexer<...>`
@@ -42,7 +42,7 @@
is allowed to change the value of this iterator
influencing, the matched input sequence.]]
[[`pass_flag& matched`] [This value is pre/initialized to `pass_normal`.
- If the semantic action sets it to `pass_fail` the
+ If the semantic action sets it to `pass_fail` this
behaves as if the token has not been matched in
the first place. If the semantic action sets this
to `pass_ignore` the lexer ignores the current
@@ -94,8 +94,8 @@
return value to the parameter `end` it is possible to return all but the
first n characters of the current token back to the input stream.]]
[[`bool lookahead(std::size_t id)`]
- [The function `lookahead()` can be for instance used to implement
- lookahead for lexer engines not supporting constructs like flex' `a/b`
+ [The function `lookahead()` can be used to implement lookahead for lexer
+ engines not supporting constructs like flex' `a/b`
(match `a`, but only when followed by `b`). It invokes the lexer on the
input following the current token without actually moving forward in the
input stream. The function returns whether the lexer was able to match a
@@ -118,7 +118,7 @@
[table Predefined Phoenix placeholders for lexer semantic actions
[[Placeholder] [Description]]
[[`_start`]
- [Refers to the iterator pointing to the begin of the matched input
+ [Refers to the iterator pointing to the beginning of the matched input
sequence. Any modifications to this iterator value will be reflected in
the generated token.]]
[[`_end`]
Modified: branches/release/libs/spirit/doc/lex/lexer_static_model.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/lexer_static_model.qbk (original)
+++ branches/release/libs/spirit/doc/lex/lexer_static_model.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -41,7 +41,7 @@
[import ../example/lex/static_lexer/word_count_static.cpp]
[import ../example/lex/static_lexer/word_count_generate.cpp]
-But first we provide the code snippets needed to understand the further
+But first we provide the code snippets needed to further understand the
descriptions. Both, the definition of the used token identifier and the of the
token definition class in this example are put into a separate header file to
make these available to the code generator and the static lexical analyzer.
@@ -64,7 +64,7 @@
This example not only shows how to build a static lexer, but it additionally
demonstrates how such a lexer can be used for parsing in conjunction with a
-__qi__ grammar. For completeness we provide the simple grammar used in this
+__qi__ grammar. For completeness, we provide the simple grammar used in this
example. As you can see, this grammar does not have any dependencies on the
static lexical analyzer, and for this reason it is not different from a grammar
used either without a lexer or using a dynamic lexical analyzer as described
@@ -113,24 +113,23 @@
[wc_static_include]
Otherwise the main program is not different from an equivalent program using
-the dynamic model. This feature makes it really easy for instance to develop
-the lexer in dynamic mode and to switch to the static mode after the code has
-been stabilized. The simple generator application showed above enables the
-integration of the code generator into any existing build process. The
-following code snippet provides the overall main function, highlighting
-the code to be changed.
+the dynamic model. This feature makes it easy to develop the lexer in dynamic
+mode and to switch to the static mode after the code has been stabilized.
+The simple generator application shown above enables the integration of the
+code generator into any existing build process. The following code snippet
+provides the overall main function, highlighting the code to be changed.
[wc_static_main]
[important The generated code for the static lexer contains the token ids as
- these have been assigned either explicitly by the programmer or
+ they have been assigned, either explicitly by the programmer or
implicitely during lexer construction. It is your responsibility
to make sure that all instances of a particular static lexer
type use exactly the same token ids. This is ensured by default
as long as no `first_id` is specified during construction of the
- static lexer instances (the constructor of the lexer object has
- a seocnd default parameter allowing to designate a starting token
- id to be used while assigning the ids to the token definitions).
+ static lexer instances. The constructor of the lexer object has
+ a second default parameter allowing it to designate a starting token
+ id to be used while assigning the ids to the token definitions.
]
Modified: branches/release/libs/spirit/doc/lex/lexer_tutorials.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/lexer_tutorials.qbk (original)
+++ branches/release/libs/spirit/doc/lex/lexer_tutorials.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -16,22 +16,20 @@
Currently, __lex__ is built on top of Ben Hansons excellent __lexertl__
library (which is a proposed Boost library). __lexertl__ provides the necessary
-functionality to build state
-machines based on a set of supplied regular expressions. But __lex__ is not
-restricted to be used with __lexertl__. We expect it to be usable in
-conjunction with any other lexical scanner generator library, all what needs
-to be implemented is a set of wrapper objects exposing a well defined
-interface as described in this documentation.
+functionality to build state machines based on a set of supplied regular
+expressions. But __lex__ is not restricted to be used with __lexertl__. We
+expect it to be usable in conjunction with any other lexical scanner generator
+library, all what needs to be implemented is a set of wrapper objects exposing a
+well defined interface as described in this documentation.
[note For the sake of clarity all examples in this documentation assume
__lex__ to be used on top of __lexertl__.]
Building a lexer using __lex__ is highly configurable, where most of this
-configuration has to be done at compile time. Almost all of the configurable
-parameters have generally useful default values, though, which means that
-starting a project is easy and straightforward. Here is a (non-complete) list
-of features you can tweak to adjust the generated lexer instance to the actual
-needs:
+configuration is done at compile time. Almost all of the configurable
+parameters have generally useful default values, allowing project startup to be
+a easy and straightforward task. Here is a (non-complete) list of features you
+can tweak to adjust the generated lexer instance to the actual needs:
* Select and customize the token type to be generated by the lexer instance.
* Select and customize the token value types the generated token instances will
Modified: branches/release/libs/spirit/doc/lex/quick_reference.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/quick_reference.qbk (original)
+++ branches/release/libs/spirit/doc/lex/quick_reference.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -9,7 +9,7 @@
This quick reference section is provided for convenience. You can use
this section as a sort of a "cheat-sheet" on the most commonly used Lex
components. It is not intended to be complete, but should give you an
-easy way to recall a particular component without having to dig up on
+easy way to recall a particular component without having to dig through
pages and pages of reference doumentation.
[/////////////////////////////////////////////////////////////////////////////]
@@ -27,7 +27,7 @@
[[`str`] [Character-class specific string (See __char_class_types__)]]
[[`Str`] [Character-class specific string type (See __char_class_types__)]]
[[`Attrib`] [An attribute type]]
- [[`fa`] [A (semantic action) function with signature
+ [[`fa`] [A semantic action function with a signature:
`void f(Iterator&, Iterator&, pass_flag&, Idtype&, Context&)`.]]
]
@@ -94,7 +94,7 @@
l[phoenix-lambda-expression]
__lex__ provides some __boost_phoenix__ placeholders to access important
-information from the `Context` that are otherwise fiddly to extract.
+information from the `Context` that are otherwise difficult to extract.
[variablelist Spirit.Lex specific Phoenix placeholders
[[`_start, _end`] [Iterators pointing to the begin and the end of the
Modified: branches/release/libs/spirit/doc/lex/token_primitives.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/token_primitives.qbk (original)
+++ branches/release/libs/spirit/doc/lex/token_primitives.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -8,7 +8,7 @@
[section:primitives Token definition Primitives]
-This module includes different primitives allowing to create token definitions.
+This module includes different primitives allowing you to create token definitions.
It includes `char_`, `string`, character literals, and string literals.
[heading Module Headers]
@@ -26,9 +26,9 @@
The character based token definitions described in this section are:
The `char_` creates token definitions matching single characters. The `char_`
-token definition has an associated __lex_char_encoding_namespace__. This is needed when doing basic
-operations such as forcing lower or upper case and dealing with
-character ranges.
+token definition has an associated __lex_char_encoding_namespace__. This is
+needed when doing basic operations such as forcing lower or upper case and
+dealing with character ranges.
[heading Header]
@@ -70,17 +70,17 @@
[table
[[Expression] [Description]]
[[`ch`] [Generate the character literal `ch`. This generator
- never fails (except if the underlying output stream
- reports an error).]]
+ never fails, unless the underlying output stream
+ reports an error.]]
[[`lit(ch)`] [Generate the character literal `ch`. This generator
- never fails (except if the underlying output stream
- reports an error).]]
+ never fails, unless the underlying output stream
+ reports an error.]]
[[`ns::char_(ch)`] [Generate the character `ch` as provided by the
immediate literal value the generator is initialized
from. If this generator has an associated attribute
it succeeds only as long as the attribute is equal
- to the immediate literal (except if the underlying
- output stream reports an error). Otherwise this
+ to the immediate literal, unless the underlying
+ output stream reports an error. Otherwise this
generator fails and does not generate any output.]]
]
Modified: branches/release/libs/spirit/doc/lex/tokenizing.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/tokenizing.qbk (original)
+++ branches/release/libs/spirit/doc/lex/tokenizing.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -11,11 +11,10 @@
[heading The tokenize function]
The `tokenize()` function is a helper function simplifying the usage of a lexer
-in a standalone fashion. Consider you have a standalone lexer where all the
-required functionality is implemented inside of lexer semantic actions. A good
-example for this is the [@../../example/lex/word_count_lexer.cpp word_count_lexer]
+in a standalone fashion. For instance, you may have a standalone lexer where all
+that functional requirements are implemented inside lexer semantic actions.
+A good example for this is the [@../../example/lex/word_count_lexer.cpp word_count_lexer]
described in more detail in the section __sec_lex_quickstart_2__.
-As a reminder, here is the token definition class:
[wcl_token_definition]
@@ -46,7 +45,7 @@
, typename Lexer::char_type const* initial_state = 0);
[variablelist where:
- [[Iterator& first] [The begin of the input sequence to tokenize. The
+ [[Iterator& first] [The beginning of the input sequence to tokenize. The
value of this iterator will be updated by the
lexer, pointing to the first not matched
character of the input after the function
@@ -55,10 +54,10 @@
[[Lexer const& lex] [The lexer instance to use for tokenization.]]
[[Lexer::char_type const* initial_state]
[This optional parameter can be used to specify
- the initial lexer state fo rthe tokenization.]]
+ the initial lexer state for tokenization.]]
]
-A second overload of the `tokenize()` function allows to specify any arbitrary
+A second overload of the `tokenize()` function allows specifying of any arbitrary
function or function object to be called for each of the generated tokens. For
some applications this is very useful, as it might avoid having lexer semantic
actions. For an example of how to use this function, please have a look at
@@ -73,7 +72,7 @@
, typename Lexer::char_type const* initial_state = 0);
[variablelist where:
- [[Iterator& first] [The begin of the input sequence to tokenize. The
+ [[Iterator& first] [The beginning of the input sequence to tokenize. The
value of this iterator will be updated by the
lexer, pointing to the first not matched
character of the input after the function
@@ -82,13 +81,12 @@
[[Lexer const& lex] [The lexer instance to use for tokenization.]]
[[F f] [A function or function object to be called for
each matched token. This function is expected to
- have the prototype: `bool f(Lexer::token_type);`
- and should return `false` if the supplied token
- instance is invald (the `tokenize()` function will
- return immediatly).]]
+ have the prototype: `bool f(Lexer::token_type);`.
+ The `tokenize()` function will return immediatly if
+ `F` returns `false.]]
[[Lexer::char_type const* initial_state]
[This optional parameter can be used to specify
- the initial lexer state fo rthe tokenization.]]
+ the initial lexer state for tokenization.]]
]
[heading The generate_static function]
Modified: branches/release/libs/spirit/doc/lex/tokens_values.qbk
==============================================================================
--- branches/release/libs/spirit/doc/lex/tokens_values.qbk (original)
+++ branches/release/libs/spirit/doc/lex/tokens_values.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -12,18 +12,18 @@
of input characters and separating it into strings called tokens, most of the
time separated by whitespace. The different token types recognized by a lexical
analyzer often get assigned unique integer token identifiers (token ids). These
-token ids arenormally used by the parser to identifiy the current token without
+token ids are normally used by the parser to identifiy the current token without
having to look at the matched string again. The __lex__ library is not
different with respect to this, as it uses the token ids as the main means of
identification of the different token types defined for a particular lexical
analyzer. However, it is different from commonly used lexical analyzers in the
sense that it returns (references to) instances of a (user defined) token class
-to the user. The only real limitation posed on this token class is consequently,
-that it has to carry at least the token id of the token it represents. For more
-information about the interface a user defined token type has to expose please
-look at the __sec_ref_lex_token__ reference. The library provides a default
+to the user. The only limitation of this token class is that it must carry at
+least the token id of the token it represents. For more information about the
+interface a user defined token type has to expose please look at the
+__sec_ref_lex_token__ reference. The library provides a default
token type based on the __lexertl__ library which should be sufficient in most
-use cases: the __class_lexertl_token__ type. This section focusses on the
+cases: the __class_lexertl_token__ type. This section focusses on the
description of general features a token class may implement and how this
integrates with the other parts of the __lex__ library.
@@ -58,16 +58,16 @@
[fig tokenstructure.png..The structure of a token..spirit.lex.tokenstructure]
-The token value and the lexer state the token has been recogniyed in may be
-omitted for optimization reasons,
-avoiding the token to carry more data than actually required. This
-configuration can be achieved by supplying appropriate template parameters
-for the __class_lexertl_token__ template while defining the token type.
+The token value and the lexer state the token has been recognized in may be
+omitted for optimization reasons, thus avoiding the need for the token to carry
+more data than actually required. This configuration can be achieved by supplying
+appropriate template parameters for the
+__class_lexertl_token__ template while defining the token type.
The lexer iterator returns the same token type for each of the different
-matched token definitions. To accomodate for the possibly different token
+matched token definitions. To accomodate for the possible different token
/value/ types exposed by the various token types (token definitions), the
-general type of the token value is a __boost_variant__. As a minimum (for the
+general type of the token value is a __boost_variant__. At a minimum (for the
default configuration) this token value variant will be configured to always
hold a __boost_iterator_range__ containing the pair of iterators pointing to
the matched input sequence for this token instance.
@@ -78,8 +78,8 @@
time of the first access to the token value requiring the
corresponding type conversion. The converted token value will be stored
in the __boost_variant__ replacing the initially stored iterator range.
- This avoids to convert the input sequence to the token value more than
- once, thus optimizing the integration of the lexer with __qi__, even
+ This avoids having to convert the input sequence to the token value more
+ than once, thus optimizing the integration of the lexer with __qi__, even
during parser backtracking.
]
@@ -105,15 +105,15 @@
If the type is `omit`, the generated tokens will
contain no token value (attribute) at all.]]
[[HasState] [This is either `mpl::true_` or `mpl::false_`, allowing
- to control whether the generated token instances will
+ control as to whether the generated token instances will
contain the lexer state they were generated in. The
default is mpl::true_, so all token instances will
contain the lexer state.]]
]
-Normally, during its construction, a token instance always holds the
-__boost_iterator_range__ as its token value (except, if it has been defined
-using the `omit` token value type). This iterator range then is
+Normally, during construction, a token instance always holds the
+__boost_iterator_range__ as its token value, unless it has been defined
+using the `omit` token value type. This iterator range then is
converted in place to the requested token value type (attribute) when it is
requested for the first time.
@@ -152,7 +152,7 @@
definition type are very similar and interdependent. As a rule of thumb you can
think of the token definition type as the means of specifying everything
related to a single specific token type (such as `identifier` or `integer`).
-On the other hand the token type is used to define the general proerties of all
+On the other hand the token type is used to define the general properties of all
token instances generated by the __lex__ library.
[important If you don't list any token value types in the token type definition
@@ -179,7 +179,7 @@
The first code snippet shows an excerpt of the token definition class, the
definition of a couple of token types. Some of the token types do not expose a
special token value (`if_`, `else_`, and `while_`). Their token value will
-always hold the iterator range of the matched input sequence only. The token
+always hold the iterator range of the matched input sequence. The token
definitions for the `identifier` and the integer `constant` are specialized
to expose an explicit token type each: `std::string` and `unsigned int`.
Modified: branches/release/libs/spirit/doc/notes/porting_from_1_8.qbk
==============================================================================
--- branches/release/libs/spirit/doc/notes/porting_from_1_8.qbk (original)
+++ branches/release/libs/spirit/doc/notes/porting_from_1_8.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -1,6 +1,6 @@
[/==============================================================================
- Copyright (C) 2001-2009 Joel de Guzman
Copyright (C) 2001-2009 Hartmut Kaiser
+ Copyright (C) 2001-2009 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
@@ -128,12 +128,12 @@
In __classic__ most of the parser primitives don't expose a specific attribute
type. Most parsers expose the pair of iterators pointing to the matched input
sequence. As in __qi__ all parsers expose a parser specific attribute type it
-introduces a special directive `raw[]` allowing to achieve a similar effect as
-in __classic__. The `raw[]` directive exposes the pair of iterators pointing
-to the matching sequence of its embedded parser. Even if we very much encourage
-you to rewrite your parsers to take advantage of the generates parser specific
-attributes, sometimes it is helpful to get access to the underlying matched
-input sequence.
+introduces a special directive __qi_raw__`[]` allowing to achieve a similar
+effect as in __classic__. The __qi_raw__`[]` directive exposes the pair of
+iterators pointing to the matching sequence of its embedded parser. Even if we
+very much encourage you to rewrite your parsers to take advantage of the
+generated parser specific attributes, sometimes it is helpful to get access to
+the underlying matched input sequence.
[heading Grammars and Rules]
@@ -198,7 +198,11 @@
If no attribute is desired none needs to be specified. The default attrribute
type for both, grammars and rules, is __unused_type__, which is a special
-placeholder type.
+placeholder type. Generally, using __unused_type__ as the attribute of a parser
+is interpreted as 'this parser has no attribute'. This is mostly used for
+parsers applied to parts of the input not carrying any significant information,
+rather being delimiters or structural elements needed for coreect interpretation
+of the input.
The last difference might seem to be rather cosmetic and insignificant. But it
turns out that not having to specify which rule in a grammar is the start rule
Modified: branches/release/libs/spirit/doc/qi/actions.qbk
==============================================================================
--- branches/release/libs/spirit/doc/qi/actions.qbk (original)
+++ branches/release/libs/spirit/doc/qi/actions.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -8,17 +8,17 @@
[section Semantic Actions]
-Our parser above is really nothing but a recognizer. It answers the question
-"did the input match our grammar?", but it does not do anything other than that.
-It does not extract any information from what was parsed. For example, whenever
-we parse a real number, we wish to store the parsed number after a successful
-match.
-
-Enter Semantic actions. Semantic actions may be attached to any point in the
-grammar specification. These actions are C++ functions or function objects that
-are called whenever a part of the parser successfully recognizes a portion of
-the input. Say you have a parser `P`, and a C++ function `F`, you can make the
-parser call `F` whenever it matches an input by attaching `F`:
+The example in the previous section was very simplistic. It only recognized
+data, but did nothing with it. It answered the question: "Did the input match?".
+Now, we want to extract information from what was parsed. For example, we would
+want to store the parsed number after a successful match. To do this, you will
+need ['semantic actions].
+
+Semantic actions may be attached to any point in the grammar specification.
+These actions are C++ functions or function objects that are called whenever a
+part of the parser successfully recognizes a portion of the input. Say you have
+a parser `P`, and a C++ function `F`. You can make the parser call `F` whenever
+it matches an input by attaching `F`:
P[F]
@@ -51,8 +51,8 @@
Take note that with function objects, we need to have an `operator()` with 3
arguments. Since we don't care about the other two, we can use `unused_type` for
-these. We'll see more of `unused_type` elsewhere. Get used to it. `unused_type`
-is a Spirit supplied support class.
+these. We'll see more of `unused_type` elsewhere. `unused_type` is a Spirit
+supplied support class.
All examples parse inputs of the form:
@@ -96,8 +96,8 @@
__phoenix__, a companion library bundled with Spirit, is specifically suited
for binding semantic actions. It is like __boost_lambda__ in steroids, with
special custom features that make it easy to integrate semantic actions with
-Spirit. If your requirements go beyond simple to moderate parsing, I suggest you
-use this library. Examples presented henceforth shall be using the library
-exclusively
+Spirit. If your requirements go beyond simple to moderate parsing, it is
+suggested that you use this library. All the following examples in this tutorial
+will use __phoenix__ for sematic actions.
[endsect]
Modified: branches/release/libs/spirit/doc/qi/binary.qbk
==============================================================================
--- branches/release/libs/spirit/doc/qi/binary.qbk (original)
+++ branches/release/libs/spirit/doc/qi/binary.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -92,7 +92,7 @@
[[`byte_`] [`boost::uint_least8_t`]]
[[`word`] [`boost::uint_least16_t`]]
[[`dword`] [`boost::uint_least32_t`]]
- [[`qword`] [`boost::uint_least64_t`)]]
+ [[`qword`] [`boost::uint_least64_t`]]
[[`byte_(b)`] [__unused__]]
[[`word(w)`] [__unused__]]
[[`dword(dw)`] [__unused__]]
Modified: branches/release/libs/spirit/doc/qi/concepts.qbk
==============================================================================
--- branches/release/libs/spirit/doc/qi/concepts.qbk (original)
+++ branches/release/libs/spirit/doc/qi/concepts.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -45,7 +45,7 @@
In the expressions below, the behavior of the parser, `p`, how `skip`
and `attrib` are handled by `p`, are left unspecified in the base `Parser`
concept. These are specified in subsequent, more refined concepts and by
-the actual models therof.
+the actual models thereof.
For any Parser the following expressions must be valid:
Modified: branches/release/libs/spirit/doc/qi/directive.qbk
==============================================================================
--- branches/release/libs/spirit/doc/qi/directive.qbk (original)
+++ branches/release/libs/spirit/doc/qi/directive.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -428,6 +428,7 @@
skip(p)[a] // Use `p` as a skipper for parsing `a`
This makes it possible to:
+
* Perform localized phrase level parsing while doing character level parsing.
* Replace the current skipper anywhere with an entirely different
skipper while doing phrase level parsing.
Modified: branches/release/libs/spirit/doc/qi/employee.qbk
==============================================================================
--- branches/release/libs/spirit/doc/qi/employee.qbk (original)
+++ branches/release/libs/spirit/doc/qi/employee.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -8,12 +8,12 @@
[section Employee - Parsing into structs]
-It's a common question in the __spirit_list__: how do I parse and place the
-results into a C++ struct? Of course, at this point, you already know various
-ways to do it, using semantic actions. There are many ways to skin a cat.
-Spirit2, being fully attributed, makes it even easier. The next example
-demonstrates some features of Spirit2 that makes this easy. In the process,
-you'll learn about:
+It's a common question in the __spirit_list__: How do I parse and place
+the results into a C++ struct? Of course, at this point, you already
+know various ways to do it, using semantic actions. There are many ways
+to skin a cat. Spirit2, being fully attributed, makes it even easier.
+The next example demonstrates some features of Spirit2 that make this
+easy. In the process, you'll learn about:
* More about attributes
* Auto rules
@@ -27,9 +27,10 @@
[tutorial_employee_struct]
Then, we need to tell __fusion__ about our employee struct to make it a first-
-class fusion citizen. If you don't know fusion yet, it is a __boost__ library
-for working with heterogenous collections of data, commonly referred to as
-tuples. Spirit uses fusion extensively as part of its infrastructure.
+class fusion citizen that the grammar can utilize. If you don't know fusion yet,
+it is a __boost__ library for working with heterogenous collections of data,
+commonly referred to as tuples. Spirit uses fusion extensively as part of its
+infrastructure.
In fusion's view, a struct is just a form of a tuple. You can adapt any struct
to be a fully conforming fusion tuple:
@@ -98,9 +99,10 @@
+a
-is the close kin of the kleene star we got so used to in our tutorial. Like it's
-kin, the kleene star, its attribute is a `std::vector<A>` where `A` is the
-attribute of `a`. So, putting all these together, the attribute of
+is similar to kleene star. Rather than match everything, `+a` matches one or more.
+Like it's related function, the kleene star, its attribute is a `std::vector<A>`
+where `A` is the attribute of `a`. So, putting all these together, the attribute
+of
+(char_ - '"')
Modified: branches/release/libs/spirit/doc/qi/numeric.qbk
==============================================================================
--- branches/release/libs/spirit/doc/qi/numeric.qbk (original)
+++ branches/release/libs/spirit/doc/qi/numeric.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -64,7 +64,7 @@
[[`boost::spirit::ulong_long // alias: boost::spirit::qi::ulong_long`]]
]
-[note `ulong_long` is only available on platforms where the preprocessor
+[important `ulong_long` is only available on platforms where the preprocessor
constant `BOOST_HAS_LONG_LONG` is defined (i.e. on platforms having
native support for `unsigned long long` (64 bit) unsigned integer
types).]
@@ -196,7 +196,7 @@
[[`boost::spirit::long_long // alias: boost::spirit::qi::long_long`]]
]
-[note `long_long` is only available on platforms where the preprocessor
+[important `long_long` is only available on platforms where the preprocessor
constant `BOOST_HAS_LONG_LONG` is defined (i.e. on platforms having
native support for `signed long long` (64 bit) unsigned integer types).]
@@ -561,4 +561,154 @@
[endsect] [/ Real Numbers]
+[/------------------------------------------------------------------------------]
+[section:boolean Boolean Parser (`bool_`)]
+
+[heading Description]
+
+The `bool_parser` can parse booleans of arbitrary type, `B`. The boolean base
+type `T` can be a user defined boolean type as long as the type follows certain
+expression requirements (documented below).
+
+[heading Header]
+
+ // forwards to <boost/spirit/home/qi/numeric/bool.hpp>
+ #include <boost/spirit/include/qi_bool.hpp>
+
+Also, see __include_structure__.
+
+[heading Namespace]
+
+[table
+ [[Name]]
+ [[`boost::spirit::bool_ // alias: boost::spirit::qi::bool_`]]
+]
+
+[heading Synopsis]
+
+ template <typename T, typename RealPolicies>
+ struct bool_parser;
+
+[heading Template parameters]
+
+[table
+ [[Parameter] [Description] [Default]]
+ [[`B`] [The boolean type of the
+ boolean parser.] [`bool`]]
+ [[`RealPolicies`] [Policies control the
+ parser's behavior.] [`bool_policies<B>`]]
+]
+
+[heading Model of]
+
+[:__primitive_parser_concept__]
+
+[variablelist Notation
+ [[`BP`] [An instance of `bool_parser` (type).]]
+ [[`BP`] [A boolean `Policies` (type).]]
+ [[`b`] [An object of `B`, the numeric base type.]]
+ [[`f`, `l`] [__fwditer__. first/last iterator pair.]]
+]
+
+[heading Expression Semantics]
+
+Semantics of an expression is defined only where it differs from, or is
+not defined in __primitive_parser_concept__.
+
+[table
+ [[Expression] [Semantics]]
+ [[`BP()`] [Instantiate and (default) construct an `bool_parser`]]
+ [[`bool_`] [Create an `bool_parser<bool, bool_policies<bool> >`]]
+]
+
+[heading Attributes]
+
+[:`B`, The boolean type of the booelan parser.]
+
+[heading Complexity]
+
+[:O(N), where N is the number of characters being parsed.]
+
+[heading Minimum Expression Requirements for `B`]
+
+The boolean type, `B`, the minimum expression requirements listed
+below must be valid. Take note that additional requirements may be
+imposed by custom policies.
+
+[table
+ [[Expression] [Semantics]]
+ [[`B(bool)`] [Constructible from a `bool`.]]
+]
+
+[heading Boolean `Policies`]
+
+The boolean `Policies` template parameter is a class that groups all the
+policies that control the parser's behavior. Policies control the boolean
+parsers' behavior.
+
+The default is `bool_policies<bool>`. The default is provided to take care
+of the most common case (there are many ways to represent, and hence
+parse, boolean numbers). In most cases, the default policies are sufficient
+and can be used straight out of the box. They are designed to parse
+boolean value of the form `"true"` and `"false"`.
+
+[heading Boolean `Policies` Expression Requirements]
+
+For models of boolean `Policies` the following expressions must be valid:
+
+[table
+ [[Expression] [Semantics]]
+ [[`BP::parse_true(f, l, n)`] [Parse a `true` value.]]
+ [[`BP::parse_false(f, l, n)`] [Parse a `false` value.]]
+]
+
+The functions should return true if the required representations of `true` or
+`false` have been found. In this case the attribute `n` should be set to the
+matched value (`true` or `false`).
+
+[heading Boolean `Policies` Specializations]
+
+The easiest way to implement a proper boolean parsing policy is to derive a
+new type from the the type `bool_policies` while overriding the aspects
+of the parsing which need to be changed. For example, here's the
+implementation of a boolean parsing policy interpreting the string `"eurt"`
+(i.e. "true" spelled backwards) as `false`:
+
+ struct backwards_bool_policies : qi::bool_policies<>
+ {
+ // we want to interpret a 'true' spelled backwards as 'false'
+ template <typename Iterator, typename Attribute>
+ static bool
+ parse_false(Iterator& first, Iterator const& last, Attribute& attr)
+ {
+ namespace qi = boost::spirit::qi;
+ if (qi::detail::string_parse("eurt", first, last, qi::unused))
+ {
+ spirit::traits::assign_to(false, attr); // result is false
+ return true;
+ }
+ return false;
+ }
+ };
+
+[heading Example]
+
+Some using declarations:
+
+[reference_using_declarations_bool]
+
+Basic real number parsing:
+
+[reference_bool]
+
+A custom real number policy:
+
+[reference_test_bool_policy]
+
+And its use:
+
+[reference_custom_bool]
+
+[endsect] [/ Real Numbers]
+
[endsect]
Modified: branches/release/libs/spirit/doc/qi/quick_reference.qbk
==============================================================================
--- branches/release/libs/spirit/doc/qi/quick_reference.qbk (original)
+++ branches/release/libs/spirit/doc/qi/quick_reference.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -44,9 +44,9 @@
]
[endsect]
-[section Qi Parsers]
+[section:qi_parsers Qi Parsers]
-[section char]
+[section:char Character Parsers]
[table
[[Expression] [Attribute] [Description]]
@@ -85,7 +85,7 @@
]
[endsect]
-[section numeric]
+[section:numeric Numeric Parsers]
[table
[[Expression] [Attribute] [Description]]
@@ -107,7 +107,7 @@
]
[endsect]
-[section string]
+[section:string String Parsers]
[table
[[Expression] [Attribute] [Description]]
@@ -136,7 +136,7 @@
]
[endsect]
-[section auxiliary]
+[section:auxiliary Auxiliary Parsers]
[table
[[Expression] [Attribute] [Description]]
@@ -153,7 +153,7 @@
]
[endsect]
-[section binary]
+[section:binary Binary Parsers]
[table
[[Expression] [Attribute] [Description]]
@@ -170,7 +170,7 @@
]
[endsect]
-[section directive]
+[section:directive Parser Directives]
[table
[[Expression] [Attribute] [Description]]
@@ -179,17 +179,17 @@
[[__qi_omit__`[a]`] [`Unused`] [Ignores the attribute type of `a`]]
[[__qi_raw__`[a]`] [__boost_iterator_range__`<I>`] [Presents the transduction of `a` as an iterator range]]
- [[__qi_repeat__`[a]`] [`vector<A>`] [Repeat `a` zero or more times]]
- [[__qi_repeat__`(N)[a]`] [`vector<A>`] [Repeat `a` `N` times]]
- [[__qi_repeat__`(N, M)[a]`] [`vector<A>`] [Repeat `a` `N` to `M` times]]
- [[__qi_repeat__`(N, inf)[a]`] [`vector<A>`] [Repeat `a` `N` or more times]]
+ [[[qi_repeat `repeat[a]`]] [`vector<A>`] [Repeat `a` zero or more times]]
+ [[[qi_repeat `(N)[a]`]] [`vector<A>`] [Repeat `a` `N` times]]
+ [[[qi_repeat `(N, M)[a]`]] [`vector<A>`] [Repeat `a` `N` to `M` times]]
+ [[[qi_repeat `(N, inf)[a]`]] [`vector<A>`] [Repeat `a` `N` or more times]]
- [[__qi_skip__`[a]`] [`A`] [Re-establish the skipper that got inhibited by lexeme]]
- [[__qi_skip__`(p)[a]`] [`A`] [Use `p` as a skipper for parsing `a`]]
+ [[__qi_skip__`[a]`] [`A`] [Re-establish the skipper that got inhibited by lexeme]]
+ [[__qi_skip__`(p)[a]`] [`A`] [Use `p` as a skipper for parsing `a`]]
]
[endsect]
-[section operator]
+[section:operator Parser Operators]
[table
[[Expression] [Attribute] [Description]]
@@ -215,7 +215,7 @@
]
[endsect]
-[section action]
+[section:action Parser Semantic Actions]
[table
[[Expression] [Attribute] [Description]]
@@ -359,11 +359,11 @@
`A1, A2, A3` are optional and can be specified in any order.
`name` is an optional string that gives the rule
its name, useful for debugging and error handling.]]
- [[`rule<Iterator, A1, A2, A3> r(r2);`] [Copy construct rule `r` from rule `r2`. `boost::shared_ptr` semantics.]]
- [[`r = r2;`] [Assign rule `r2` to `r`. `boost::shared_ptr` semantics.]]
+ [[`rule<Iterator, A1, A2, A3> r(r2);`] [Copy construct rule `r` from rule `r2`.]]
+ [[`r = r2;`] [Assign rule `r2` to `r`.]]
[[`r.alias()`] [return an alias of `r`. The alias is a parser that
holds a reference to `r`. Reference semantics.]]
- [[`r.copy()`] [Get a copy of `r`. `boost::shared_ptr` semantics.]]
+ [[`r.copy()`] [Get a copy of `r`.]]
[[`r.name(name)`] [Naming a rule]]
[[`r.name()`] [Getting the name of a rule]]
[[debug(r)] [Debug rule `r`]]
Modified: branches/release/libs/spirit/doc/qi/tutorial_intro.qbk
==============================================================================
--- branches/release/libs/spirit/doc/qi/tutorial_intro.qbk (original)
+++ branches/release/libs/spirit/doc/qi/tutorial_intro.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
For development simplicity and ease in deployment, the entire library
consists of only header files, with no libraries to link against or build.
-Just put the spirit distribution in your include path, compile and run. Code
+Just put the Spirit distribution in your include path, compile and run. Code
size? -very tight -essentially comparable to hand written recursive descent
code.
Modified: branches/release/libs/spirit/doc/qi/warming_up.qbk
==============================================================================
--- branches/release/libs/spirit/doc/qi/warming_up.qbk (original)
+++ branches/release/libs/spirit/doc/qi/warming_up.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -9,7 +9,9 @@
[section Warming up]
We'll start by showing examples of parser expressions to give you a feel on how
-to build parsers from the simplest parser, building up as we go.
+to build parsers from the simplest parser, building up as we go. When comparing
+EBNF to __spirit__, the expressions may seem awkward at first. __spirit__ heavily
+uses operator overloading to accomplish its magic.
[heading Trivial Example #1 Parsing a number]
@@ -54,8 +56,8 @@
that we must work with the syntax rules of C++.
Any expression that evaluates to a parser may be used with the Kleene Star.
-Keep in mind, though, that due to C++ operator precedence rules you may need
-to put the expression in parentheses for complex expressions. The Kleene Star
+Keep in mind that C++ operator precedence rules may require you to put
+expressions in parentheses for complex expressions. The Kleene Star
is also known as a Kleene Closure, but we call it the Star in most places.
[heading Trivial Example #4 Parsing a comma-delimited list of numbers]
@@ -97,12 +99,12 @@
[import ../../example/qi/num_list1.cpp]
[tutorial_numlist1]
-The parse function returns `true` or `false` depending on the result of the
-parse. The first iterator is passed by reference. On a successful parse,
-this iterator is repositioned to the rightmost position consumed by the
-parser. If this becomes equal to str.end(), then we have a full match.
-If not, then we have a partial match. A partial match happens when the
-parser is only able to parse a portion of the input.
+The parse function returns `true` or `false` depending on the result of
+the parse. The first iterator is passed by reference. On a successful
+parse, this iterator is repositioned to the rightmost position consumed
+by the parser. If this becomes equal to `last`, then we have a full
+match. If not, then we have a partial match. A partial match happens
+when the parser is only able to parse a portion of the input.
Note that we inlined the parser directly in the call to parse. Upon calling
parse, the expression evaluates into a temporary, unnamed parser which is passed
Modified: branches/release/libs/spirit/doc/reference_template.qbk
==============================================================================
--- branches/release/libs/spirit/doc/reference_template.qbk (original)
+++ branches/release/libs/spirit/doc/reference_template.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -1,3 +1,11 @@
+[/==============================================================================
+ Copyright (C) 2001-2009 Hartmut Kaiser
+ Copyright (C) 2001-2009 Joel de Guzman
+
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+===============================================================================/]
+
[section Module]
[heading Module Headers]
Modified: branches/release/libs/spirit/doc/spirit2.qbk
==============================================================================
--- branches/release/libs/spirit/doc/spirit2.qbk (original)
+++ branches/release/libs/spirit/doc/spirit2.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -78,23 +78,17 @@
[def __sec_qi__ [link spirit.qi Qi]]
[def __sec_karma__ [link spirit.karma Karma]]
-[def __sec_qi_karma_attributes__ [link spirit.qi_and_karma.abstracts.attributes Attributes]]
+[def __sec_attributes__ [link spirit.abstracts.attributes Attributes]]
[def __sec_karma_numeric_performance__ [link spirit.karma.performance_measurements.numeric_performance Performance of Numeric Generators]]
[def __sec_karma_primitive__ [link spirit.karma.quick_reference.primitive_generators Karma Generators]]
-[def __sec_karma_compound__ [link spirit.karma.quick_reference.compound_attribute_rules Compound Attribute Rules]]
+[def __sec_karma_compound__ [link spirit.karma.quick_reference.compound_attribute_rules Generator Compound Attribute Rules]]
[def __karma_char_encoding_namespace__ [link spirit.karma.reference.karma_basics.character_encoding_namespace Character Encoding Namespace]]
-[def __sec_qi_reference__ [link spirit.qi.reference Qi Reference]]
[def __sec_karma_reference__ [link spirit.karma.reference Karma Reference]]
[def __sec_karma_quickref__ [link spirit.karma.quick_reference Karma Quick Reference]]
-[def __karma_auxiliary__ [link spirit.karma.reference.auxiliary Auxiliary Generators]]
-[def __karma_char__ [link spirit.karma.reference.char Character Generators]]
-[def __karma_string__ String Generators [/link spirit.karma.reference.string String Generators]]
-[def __karma_directive__ [link spirit.karma.reference.directive Generator Directives]]
-[def __karma_operator__ [link spirit.karma.reference.operator Generator Operators]]
-[def __karma_numeric__ [link spirit.karma.reference.numeric Numeric Generators]]
-[def __karma_binary__ [link spirit.karma.reference.binary Binary Generators]]
-[def __karma_stream__ [link spirit.karma.reference.stream Stream Generators]]
+[def __sec_qi_reference__ [link spirit.qi.reference Qi Reference]]
+[def __sec_qi_primitive__ [link spirit.qi.quick_reference.qi_parsers Qi Parsers]]
+[def __sec_qi_compound__ [link spirit.qi.quick_reference.compound_attribute_rules Parser Compound Attribute Rules]]
[def __sec_lex__ [link spirit.lex Lex]]
[def __sec_lex_quickstart_1__ [link spirit.lex.tutorials.lexer_quickstart1 Lex Quickstart 1 - A word counter using __lex__]]
@@ -151,8 +145,6 @@
[def __qi_symbols__ [link spirit.qi.reference.string.symbols `symbols<Ch, T>`]]
[template qi_lit_string[str] [link spirit.qi.reference.string.string [str]]]
[template qi_lit_char[char] [link spirit.qi.reference.string.lit_char [char]]]
-[def __qi_kleene__ Kleene Star] [/$$$ TODO: link me $$$]
-[def __qi_plus__ Plus] [/$$$ TODO: link me $$$]
[def __generator_concept__ [link spirit.karma.reference.generator_concepts.generator `Generator`]]
[def __primitive_generator_concept__ [link spirit.karma.reference.generator_concepts.primitivegenerator `PrimitiveGenerator`]]
@@ -162,35 +154,40 @@
[def __karma_lazy_argument__ [link spirit.karma.reference.karma_basics.lazy_argument Lazy Argument]]
[/////////////////////////////////////////////////////////////////////////////]
+[def __karma_auxiliary__ [link spirit.karma.reference.auxiliary Auxiliary Generators]]
[def __karma_eol__ [link spirit.karma.reference.auxiliary.eol `eol`]]
[def __karma_eps__ [link spirit.karma.reference.auxiliary.eps `eps`]]
[def __karma_feps__ [link spirit.karma.reference.auxiliary.eps `eps(b)`]]
[template karma_lazy[str] [link spirit.karma.reference.auxiliary.lazy [str]]]
-[def __karma_llazy__ [link spirit.karma.reference.auxiliary.lazy `fg`]]
-[def __karma_sequence__ [link spirit.karma.reference.operator.sequence sequence (`<<`)]]
-[def __karma_alternative__ [link spirit.karma.reference.operator.alternative alternative (`|`)]]
+[template karma_attr_cast[str] [link spirit.karma.reference.auxiliary.attr_cast [str]]]
+
+[def __karma_operator__ [link spirit.karma.reference.operator Generator Operators]]
+[def __karma_sequence__ [link spirit.karma.reference.operator.sequence Sequence (`<<`)]]
+[def __karma_alternative__ [link spirit.karma.reference.operator.alternative Alternative (`|`)]]
[template karma_kleene[str] [link spirit.karma.reference.operator.kleene [str]]]
-[def __karma_plus__ [link spirit.karma.reference.operator.plus plus (unary `+`)]]
-[def __karma_list__ [link spirit.karma.reference.operator.list list (`%`)]]
-[def __karma_optional__ [link spirit.karma.reference.operator.optional optional (unary `-`)]]
-[def __karma_and_predicate__ [link spirit.karma.reference.operator.and_predicate and predicate (unary `&`)]]
-[def __karma_not_predicate__ [link spirit.karma.reference.operator.not_predicate not predicate (unary `!`)]]
+[def __karma_plus__ [link spirit.karma.reference.operator.plus Plus (unary `+`)]]
+[def __karma_list__ [link spirit.karma.reference.operator.list List (`%`)]]
+[def __karma_optional__ [link spirit.karma.reference.operator.optional Optional (unary `-`)]]
+[def __karma_and_predicate__ [link spirit.karma.reference.operator.and_predicate And predicate (unary `&`)]]
+[def __karma_not_predicate__ [link spirit.karma.reference.operator.not_predicate Not predicate (unary `!`)]]
+[def __karma_directive__ [link spirit.karma.reference.directive Generator Directives]]
[template karma_align[str] [link spirit.karma.reference.directive.alignment [str]]]
-[def __karma_omit__ [link spirit.karma.reference.directive.omit `omit[a]`]]
-[def __karma_buffer__ [link spirit.karma.reference.directive.buffer `buffer[a]`]]
+[def __karma_omit__ [link spirit.karma.reference.directive.omit `omit`]]
+[def __karma_buffer__ [link spirit.karma.reference.directive.buffer `buffer`]]
[template karma_repeat[str] [link spirit.karma.reference.directive.repeat [str]]]
-[def __karma_verbatim__ [link spirit.karma.reference.directive.delimit `verbatim[a]`]]
+[def __karma_verbatim__ [link spirit.karma.reference.directive.delimit `verbatim`]]
[template karma_delimit[str] [link spirit.karma.reference.directive.delimit [str]]]
[template karma_upperlower[str] [link spirit.karma.reference.directive.upperlower [str]]]
[template karma_maxwidth[str] [link spirit.karma.reference.directive.maxwidth [str]]]
-[def __karma_numerics__ [link spirit.karma.reference.numeric numeric generators]]
+[def __karma_numeric__ [link spirit.karma.reference.numeric Numeric Generators]]
[template signed_int[str] [link spirit.karma.reference.numeric.signed_int [str]]]
[template unsigned_int[str] [link spirit.karma.reference.numeric.unsigned_int [str]]]
[template real_number[str] [link spirit.karma.reference.numeric.real_number [str]]]
+[template boolean[str] [link spirit.karma.reference.numeric.boolean [str]]]
-[def __karma_char__ [link spirit.karma.reference.numeric character generators]]
+[def __karma_char__ [link spirit.karma.reference.char Character Generators]]
[template karma_char[str] [link spirit.karma.reference.char.char_generator [str]]]
[template karma_char_class[str] [link spirit.karma.reference.char.char_class [str]]]
@@ -198,10 +195,13 @@
[template karma_stream[str] [link spirit.karma.reference.stream [str]]]
+[def __karma_binary__ [link spirit.karma.reference.binary Binary Generators]]
[template karma_native_binary[str] [link spirit.karma.reference.binary.binary_native [str]]]
[template karma_little_binary[str] [link spirit.karma.reference.binary.binary_little [str]]]
[template karma_big_binary[str] [link spirit.karma.reference.binary.binary_big [str]]]
+[template karma_nonterminal[str] [str] [/link spirit.karma.reference.nonterminal [str]]]
+
[def __actions__ Semantic Actions] [/$$$ TODO: link me $$$]
[def __context__ Context] [/$$$ TODO: link me $$$]
[def __compatible__ Compatible] [/$$$ TODO: link me $$$]
@@ -262,18 +262,18 @@
</figure>
''']
-[def __sd_start_stop__ [$../../images/start_stop.png]]
-[def __sd_terminals__ [$../../images/terminal.png]]
-[def __sd_non_terminals__ [$../../images/non-terminal.png]]
-[def __sd_sequence__ [$../../images/sequence.png]]
-[def __sd_choice__ [$../../images/alternative.png]]
-[def __sd_optional__ [$../../images/optional.png]]
-[def __sd_plus__ [$../../images/plus.png]]
-[def __sd_kleene__ [$../../images/kleene.png]]
-[def __sd_predicate__ [$../../images/predicate.png]]
-[def __sd_and_predicate__ [$../../images/and_predicate.png]]
-[def __sd_not_predicate__ [$../../images/not_predicate.png]]
-[def __pascal_string__ [$../../../../images/pascal_string.png]]
+[def __sd_start_stop__ [$./images/start_stop.png]]
+[def __sd_terminals__ [$./images/terminal.png]]
+[def __sd_non_terminals__ [$./images/non-terminal.png]]
+[def __sd_sequence__ [$./images/sequence.png]]
+[def __sd_choice__ [$./images/alternative.png]]
+[def __sd_optional__ [$./images/optional.png]]
+[def __sd_plus__ [$./images/plus.png]]
+[def __sd_kleene__ [$./images/kleene.png]]
+[def __sd_predicate__ [$./images/predicate.png]]
+[def __sd_and_predicate__ [$./images/and_predicate.png]]
+[def __sd_not_predicate__ [$./images/not_predicate.png]]
+[def __pascal_string__ [$./images/pascal_string.png]]
[/ ----------------------------------------------------------------------------]
@@ -321,7 +321,7 @@
[def __qi_no_case__ [link spirit.qi.reference.directive.no_case `no_case`]]
[def __qi_omit__ [link spirit.qi.reference.directive.omit `omit`]]
[def __qi_raw__ [link spirit.qi.reference.directive.raw `raw`]]
-[def __qi_repeat__ [link spirit.qi.reference.directive.repeat `repeat`]]
+[template qi_repeat[str] [link spirit.qi.reference.directive.repeat [str]]]
[def __qi_skip__ [link spirit.qi.reference.directive.skip `skip`]]
[/ operator]
Modified: branches/release/libs/spirit/doc/what_s_new.qbk
==============================================================================
--- branches/release/libs/spirit/doc/what_s_new.qbk (original)
+++ branches/release/libs/spirit/doc/what_s_new.qbk 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -22,7 +22,7 @@
The recommended way of using Spirit Classic now is to include header
files from the directory '''$BOOST_ROOT/boost/spirit/include'''. All
-Spirit Classic headers in this directory have a 'classic_' prefixed to
+Spirit Classic headers in this directory have 'classic_' prefixed to
their name. For example the include
#include <boost/spirit/core/core.hpp>
@@ -46,7 +46,7 @@
[heading Spirit V2.1]
-[heading What's changed in __qi__ and __karma__ from V2.0 (Boost V1.37.0) to 2.x (Boost V1.41.0)]
+[heading What's changed in __qi__ and __karma__ from V2.0 (Boost V1.37.0) to 2.1 (Boost V1.41.0)]
* __spirit__ is now based on the newest version of __boost_proto__
* `qi::phrase_parse`, `qi::phrase_format` now post-skip by default.
@@ -55,7 +55,7 @@
* Changed parameter sequence of `qi::phrase_parse`, `qi::phrase_match`,
`karma::generate_delimited`, and `match_delimited`. The attribute is now
always the last parameter.
-* Added new overloads of those functions allowing to explicitly specify the
+* Added new overloads of those functions allowing to explicitely specify the
post-skipping and pre-delimiting behavior.
* Added multi attribute API functions
* Removed `grammar_def<>`
@@ -96,13 +96,12 @@
semantics of this initalization are equivalent to initializing them using
`operator%=()` (auto attribute propagation is enabled).
-[heading What's changed in __lex__ from V2.0 (Boost V1.37.0) to 2.x (Boost V1.41.0)]
+[heading What's changed in __lex__ from V2.0 (Boost V1.37.0) to 2.1 (Boost V1.41.0)]
-Here is a list of changes in __lex__ since version 2.0. __lex__ 2.x is a
-complete rewrite of the __lex__ distributed with Boost V1.37. As all parts of
-the __spirit__ library it is usable either standalone or in conjunction with
-the other parts. __lex__ now uses the infrastructure provided by __spirit__
-version 2.1.
+Here is a list of changes in __lex__ since version 2.0. __lex__ 2.1 is a
+complete rewrite of the __lex__ distributed with Boost V1.37. As with all
+code portions of the __spirit__ library, __lex__ is usable as standalone piece.
+__lex__ now uses the infrastructure provided by __spirit__ version 2.1.
* The lex::lexer_def class has been renamed to lex::lexer, while the original
class lex::lexer does not exist anymore. This simplifies the creation of
@@ -114,28 +113,27 @@
template <typename Lexer>
struct example_tokens : lex::lexer<Lexer>
{
- example_lexer()
+ example_tokens()
{
// your token definitions here
this->self = ...
}
};
``
-* The new lexer class now can be directly used, their is no need anymore to
- wrap it using the `make_lexer()` template as before. Therefore the function
- `make_lexer()` has been removed.
+* The new lexer class can now be used directly. The function `make_lexer()` has
+ been removed.
* The `lex::tokenize_and_parse()` and `lex::tokenize_and_phrase_parse()` functions
have been changed to match the parameter sequence as implemented by the
`qi::parse()` and `qi::phrase_parse()` functions.
- Both take a possibly arbitrary number of attribute arguments as its last
- parameters (well, the number of attributes is limited by the macro
- `SPIRIT_ARGUMENTS_LIMIT`, which defaults to `PHOENIX_LIMIT`).
+ Both take an arbitrary number of attribute arguments as the last
+ parameters. This argument list is limited by the macro
+ `SPIRIT_ARGUMENTS_LIMIT`.
* The `lex::lexertl_lexer`, and `lex::lexertl_token`
classes have been moved to the `lex::lexertl` namespace and the names have been
- changed to `lex::lexertl::lexer`, `lex::lexertl::token` (the same applies to
- the `lex::lexert_actor_lexer`, and the `static_lexertl_*` family of types).
-* The class `lex::lexertl_token_set` has been removed alltogether as its
- complete functionality is available from the lexer class.
+ changed to `lex::lexertl::lexer`, `lex::lexertl::token`. This also applies to
+ the `lex::lexert_actor_lexer`, and the `static_lexertl_*` family of types.
+* The class `lex::lexertl_token_set` has been removed. This functionality is now
+ available from the lexer class.
* The __lex__ library has been updated to use the newest version of Ben
Hansons __lexertl__ lexer construction library (Boost review pending).
* The `lex::lexer<Lexer>` template constructor now takes an optional parameter
@@ -148,14 +146,14 @@
``
If no parameter is passed to the constructor, `match_flags::match_default` is
used, i.e. the `.` matches newlines and matching is case sensitive.
+
* The `char_()` and `string()` placeholders can now be used for token
- definitions as a replacement for `token_def`, although it is still
- possible to use the latter.
+ definitions and are synonymous with `token_def`.
* Lexer semantic actions now have to conform to a changed interface (see
__sec_lex_semactions__ for details).
* Added placeholder symbols usable from the inside of lexer semantic actions
- while using Phoenix: _start, _end, _eoi, _state, _val, and _pass (see
- __sec_lex_semactions__ for more details).
+ while using Phoenix: `lex::_start`, `lex::_end`, `lex::_eoi`, `lex::_state`,
+ `lex::_val`, and `lex::_pass` (see __sec_lex_semactions__ for more details).
* Added (lazy) support functions usable from the inside of lexer semantic
actions while using Phoenix: `lex::more()`, `lex::less()`, and
`lex::lookahead()` (see __sec_lex_semactions__ for more details).
Modified: branches/release/libs/spirit/example/karma/CMakeLists.txt
==============================================================================
--- branches/release/libs/spirit/example/karma/CMakeLists.txt (original)
+++ branches/release/libs/spirit/example/karma/CMakeLists.txt 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -8,16 +8,22 @@
boost_add_executable(actions)
boost_add_executable(basic_facilities DEPENDS boost_date_time)
-boost_add_executable(calc2_ast_dump)
-boost_add_executable(calc2_ast_rpn)
-boost_add_executable(calc2_ast_vm)
+boost_add_executable(karma_calc2_ast_dump calc2_ast_dump.cpp)
+boost_add_executable(karma_calc2_ast_rpn calc2_ast_rpn.cpp)
+boost_add_executable(karma_calc2_ast_vm calc2_ast_vm.cpp)
boost_add_executable(classify_char)
-boost_add_executable(karma_num_list1 num_list1.cpp)
boost_add_executable(karma_complex_number complex_number.cpp)
+boost_add_executable(karma_complex_number_easier complex_number_easier.cpp)
+boost_add_executable(karma_num_list1 num_list1.cpp)
+boost_add_executable(karma_num_list2 num_list2.cpp)
+boost_add_executable(karma_num_list3 num_list3.cpp)
+boost_add_executable(karma_num_matrix num_matrix.cpp)
boost_add_executable(key_value_sequence)
boost_add_executable(mini_xml_karma)
boost_add_executable(printf_style_double_format)
boost_add_executable(quick_start1)
+boost_add_executable(karma_reference reference.cpp)
+boost_add_executable(karma_reorder_struct reorder_struct.cpp)
Modified: branches/release/libs/spirit/example/karma/Jamfile
==============================================================================
--- branches/release/libs/spirit/example/karma/Jamfile (original)
+++ branches/release/libs/spirit/example/karma/Jamfile 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -5,19 +5,26 @@
# Distributed under the Boost Software License, Version 1.0. (See accompanying
# file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#==============================================================================
-project spirit-karma-example ;
+project spirit-karma-example
+ : requirements <toolset>gcc:<c++-template-depth>300 : :
+ ;
-exe actions_example : actions.cpp ;
-exe basic_facilities : basic_facilities.cpp /boost//date_time ;
-exe calc2_ast_dump : calc2_ast_dump.cpp ;
-exe calc2_ast_rpn : calc2_ast_rpn.cpp ;
-exe calc2_ast_vm : calc2_ast_vm.cpp ;
-exe classify_char : classify_char.cpp ;
-exe karma_complex_number : complex_number.cpp ;
-exe karma_num_list1 : num_list1.cpp ;
-exe key_value_sequence : key_value_sequence.cpp ;
-exe mini_xml_karma : mini_xml_karma.cpp ;
+exe actions_example : actions.cpp ;
+exe basic_facilities : basic_facilities.cpp /boost//date_time ;
+exe karma_calc2_ast_dump : calc2_ast_dump.cpp ;
+exe karma_calc2_ast_rpn : calc2_ast_rpn.cpp ;
+exe karma_calc2_ast_vm : calc2_ast_vm.cpp ;
+exe classify_char : classify_char.cpp ;
+exe karma_complex_number : complex_number.cpp ;
+exe karma_complex_number_easier : complex_number_easier.cpp ;
+exe karma_num_list1 : num_list1.cpp ;
+exe karma_num_list2 : num_list2.cpp ;
+exe karma_num_list3 : num_list3.cpp ;
+exe karma_num_matrix : num_matrix.cpp ;
+exe key_value_sequence : key_value_sequence.cpp ;
+exe mini_xml_karma : mini_xml_karma.cpp ;
exe printf_style_double_format : printf_style_double_format.cpp ;
-exe quick_start1 : quick_start1.cpp ;
-
+exe quick_start1 : quick_start1.cpp ;
+exe karma_reference : reference.cpp ;
+exe karma_reorder_struct : reorder_struct.cpp ;
Modified: branches/release/libs/spirit/example/karma/num_list1.cpp
==============================================================================
--- branches/release/libs/spirit/example/karma/num_list1.cpp (original)
+++ branches/release/libs/spirit/example/karma/num_list1.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -1,5 +1,5 @@
/*=============================================================================
- Copyright (c) 2002-2009 Joel Hartmut Kaiser
+ Copyright (c) 2002-2009 Hartmut Kaiser
Copyright (c) 2002-2009 Joel de Guzman
Distributed under the Boost Software License, Version 1.0. (See accompanying
@@ -49,17 +49,17 @@
///////////////////////////////////////////////////////////////////////////
//[tutorial_karma_numlist1
template <typename OutputIterator>
- bool generate_numbers(OutputIterator sink, std::list<double> const& v)
+ bool generate_numbers(OutputIterator& sink, std::list<double> const& v)
{
using karma::double_;
using karma::generate_delimited;
using ascii::space;
bool r = generate_delimited(
- sink, /*< destination: output iterator >*/
- double_ << *(',' << double_), /*< the generator >*/
- space, /*< the delimiter-generator >*/
- v /*< the data to output >*/
+ sink, // destination: output iterator
+ double_ << *(',' << double_), // the generator
+ space, // the delimiter-generator
+ v // the data to output
);
return r;
}
@@ -88,7 +88,7 @@
std::list<double> v; // here we put the data to generate
if (client::parse_numbers(str.begin(), str.end(), v))
{
- // ok, we got some numbers, no print them back out
+ // ok, we got some numbers, now print them back out
std::cout << "-------------------------\n";
std::string generated;
Modified: branches/release/libs/spirit/example/karma/printf_style_double_format.cpp
==============================================================================
--- branches/release/libs/spirit/example/karma/printf_style_double_format.cpp (original)
+++ branches/release/libs/spirit/example/karma/printf_style_double_format.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -138,10 +138,10 @@
int floatfield(T n) const
{
if (format_.type == 'e' || format_.type == 'E')
- return fmtflags::scientific;
+ return base_policy_type::fmtflags::scientific;
if (format_.type == 'f')
- return fmtflags::fixed;
+ return base_policy_type::fmtflags::fixed;
BOOST_ASSERT(format_.type == 'g' || format_.type == 'G');
return this->base_policy_type::floatfield(n);
@@ -177,10 +177,11 @@
{
if (format_.type == 'E' || format_.type == 'G') {
// print exponent symbol in upper case
- return this->base_policy_type::exponent<
- char_encoding::ascii, tag::upper>(sink, n);
+ return this->base_policy_type::
+ template exponent<char_encoding::ascii, tag::upper>(sink, n);
}
- return this->base_policy_type::exponent<CharEncoding, Tag>(sink, n);
+ return this->base_policy_type::
+ template exponent<CharEncoding, Tag>(sink, n);
}
///////////////////////////////////////////////////////////////////////////
Modified: branches/release/libs/spirit/example/karma/reference.cpp
==============================================================================
--- branches/release/libs/spirit/example/karma/reference.cpp (original)
+++ branches/release/libs/spirit/example/karma/reference.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -5,6 +5,8 @@
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
=============================================================================*/
+#include <boost/config/warning_disable.hpp>
+
//[reference_karma_includes
#include <boost/spirit/include/karma.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
@@ -26,7 +28,7 @@
{
std::string s;
std::back_insert_iterator<std::string> out(s);
- if (boost::spirit::karma::generate(out, g) && str == expected)
+ if (boost::spirit::karma::generate(out, g) && s == expected)
std::cout << "ok" << std::endl;
else
std::cout << "fail" << std::endl;
@@ -39,7 +41,7 @@
{
std::string s;
std::back_insert_iterator<std::string> out(s);
- if (boost::spirit::karma::generate(out, g, attr) && str == expected)
+ if (boost::spirit::karma::generate(out, g, attr) && s == expected)
std::cout << "ok" << std::endl;
else
std::cout << "fail" << std::endl;
@@ -53,7 +55,20 @@
{
std::string s;
std::back_insert_iterator<std::string> out(s);
- if (boost::spirit::karma::generate(out, g, attr1, attr2) && str == expected)
+ if (boost::spirit::karma::generate(out, g, attr1, attr2) && s == expected)
+ std::cout << "ok" << std::endl;
+ else
+ std::cout << "fail" << std::endl;
+}
+//]
+
+//[reference_karma_test_attr_delim
+template <typename G, typename Delimiter, typename T>
+void test_generator_attr_delim(char const* expected, G const& g, Delimiter const& d, T const& attr)
+{
+ std::string s;
+ std::back_insert_iterator<std::string> out(s);
+ if (boost::spirit::karma::generate_delimited(out, g, d, attr) && s == expected)
std::cout << "ok" << std::endl;
else
std::cout << "fail" << std::endl;
@@ -107,6 +122,24 @@
}
//]
+//[reference_karma_auxiliary_attr_cast_data1
+// this is just a test structure we want to use in place of an int
+struct int_data
+{
+ int i;
+};
+
+// we provide a custom attribute transformation to allow its use as an int
+namespace boost { namespace spirit { namespace traits
+{
+ template <>
+ struct transform_attribute<int, int_data const>
+ {
+ static int pre(int_data const& d) { return d.i; }
+ };
+}}}
+//]
+
int main()
{
///////////////////////////////////////////////////////////////////////////
@@ -114,7 +147,6 @@
///////////////////////////////////////////////////////////////////////////
{
//[reference_karma_using_declarations_sequence
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
//]
@@ -125,7 +157,6 @@
{
//[reference_karma_using_declarations_alternative
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
using boost::spirit::karma::ascii::string;
//]
@@ -145,7 +176,6 @@
{
//[reference_karma_using_declarations_kleene
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
using boost::spirit::karma::space;
//]
@@ -155,13 +185,12 @@
v.push_back(1.0);
v.push_back(2.0);
v.push_back(3.0);
- test_generator_attr("1.0 2.0 3.0 ", *double_, space, v);
+ test_generator_attr_delim("1.0 2.0 3.0 ", *double_, space, v);
//]
}
{
//[reference_karma_using_declarations_plus
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
using boost::spirit::karma::space;
//]
@@ -171,7 +200,7 @@
v1.push_back(1.0);
v1.push_back(2.0);
v1.push_back(3.0);
- test_generator_attr("1.0 2.0 3.0 ", +double_, space, v1);
+ test_generator_attr_delim("1.0 2.0 3.0 ", +double_, space, v1);
//]
//[reference_karma_plus2
@@ -182,7 +211,6 @@
{
//[reference_karma_using_declarations_list
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
//]
@@ -198,7 +226,6 @@
{
//[reference_karma_using_declarations_optional
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
//]
@@ -207,6 +234,9 @@
test_generator_attr("1.0", -double_, val);
test_generator_attr("2.0", -double_, 2.0);
//]
+ }
+ {
+ using boost::spirit::karma::double_;
//[reference_karma_optional2
boost::optional<double> val; // empty optional
@@ -216,7 +246,6 @@
{
//[reference_karma_using_declarations_and_predicate
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
using boost::spirit::karma::ascii::char_;
using boost::spirit::karma::ascii::string;
@@ -234,7 +263,6 @@
{
//[reference_karma_using_declarations_not_predicate
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
using boost::spirit::karma::ascii::char_;
using boost::spirit::karma::ascii::string;
@@ -255,7 +283,6 @@
///////////////////////////////////////////////////////////////////////////
{
//[reference_karma_using_declarations_alignment
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
using boost::spirit::karma::left_align;
using boost::spirit::karma::center;
@@ -272,7 +299,6 @@
{
//[reference_karma_using_declarations_repeat
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
using boost::spirit::karma::repeat;
//]
@@ -293,7 +319,6 @@
{
//[reference_karma_using_declarations_delimit
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
using boost::spirit::karma::delimit;
using boost::spirit::karma::verbatim;
@@ -311,7 +336,6 @@
{
//[reference_karma_using_declarations_upperlower
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
using boost::spirit::ascii::upper;
using boost::spirit::ascii::lower;
@@ -325,7 +349,6 @@
{
//[reference_karma_using_declarations_maxwidth
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
using boost::spirit::karma::maxwidth;
using boost::spirit::karma::left_align;
@@ -341,7 +364,6 @@
{
//[reference_karma_using_declarations_buffer
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
using boost::spirit::karma::buffer;
//]
@@ -358,9 +380,8 @@
{
//[reference_karma_using_declarations_omit
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
- using boost::spirit::karma::buffer;
+ using boost::spirit::karma::omit;
//]
//[reference_karma_omit
@@ -370,9 +391,24 @@
}
{
+ //[reference_karma_using_declarations_bool
+ using boost::spirit::karma::bool_;
+ using boost::spirit::karma::lit;
+ //]
+
+ //[reference_karma_bool
+ test_generator("true", lit(true));
+ test_generator("false", bool_(false));
+ test_generator_attr("true", bool_(true), true);
+ test_generator_attr("", bool_(true), false); // fails (as true != false)!
+ test_generator_attr("false", bool_, false);
+ //]
+ }
+
+ {
//[reference_karma_using_declarations_int
- using boost::spirit::karma::generate;
using boost::spirit::karma::int_;
+ using boost::spirit::karma::lit;
//]
//[reference_karma_int
@@ -386,23 +422,23 @@
{
//[reference_karma_using_declarations_uint
- using boost::spirit::karma::generate;
- using boost::spirit::karma::uint;
+ using boost::spirit::karma::uint_;
+ using boost::spirit::karma::lit;
//]
//[reference_karma_uint
test_generator("2", lit(2U));
- test_generator("2", uint(2));
- test_generator_attr("2", uint(2), 2);
- test_generator_attr("", uint(2), 3); // fails (as 2 != 3)!
- test_generator_attr("2", uint, 2);
+ test_generator("2", uint_(2));
+ test_generator_attr("2", uint_(2), 2);
+ test_generator_attr("", uint_(2), 3); // fails (as 2 != 3)!
+ test_generator_attr("2", uint_, 2);
//]
}
{
//[reference_karma_using_declarations_real
- using boost::spirit::karma::generate;
using boost::spirit::karma::double_;
+ using boost::spirit::karma::lit;
//]
//[reference_karma_real
@@ -419,7 +455,6 @@
{
//[reference_karma_using_declarations_char
- using boost::spirit::karma::generate;
using boost::spirit::karma::lit;
using boost::spirit::ascii::char_;
//]
@@ -443,8 +478,8 @@
{
//[reference_karma_using_declarations_char_class
- using boost::spirit::karma::generate;
using boost::spirit::karma::alpha;
+ using boost::spirit::karma::upper;
//]
//[reference_karma_char_class
@@ -460,7 +495,6 @@
// string
{
//[reference_karma_using_declarations_string
- using boost::spirit::karma::generate;
using boost::spirit::karma::lit;
using boost::spirit::ascii::string;
//]
@@ -483,7 +517,6 @@
// auxiliary
{
//[reference_karma_using_declarations_eol
- using boost::spirit::karma::generate;
using boost::spirit::karma::eol;
//]
@@ -494,13 +527,24 @@
}
{
+ //[reference_karma_using_declarations_attr_cast
+ using boost::spirit::karma::attr_cast;
+ //]
+
+ //[reference_karma_attr_cast1
+ int_data d = { 1 };
+ test_generator("1", karma::attr_cast<int>(karma::int_), d);
+ //]
+ }
+
+ {
//[reference_karma_using_declarations_eps
- using boost::spirit::karma::generate;
using boost::spirit::karma::eps;
+ using boost::phoenix::val;
//]
//[reference_karma_eps
- test_generator("abc", eps[cout << "starting eps example"] << "abc");
+ test_generator("abc", eps[std::cout << val("starting eps example")] << "abc");
test_generator("abc", eps(true) << "abc");
test_generator("", eps(false) << "abc"); // fails as eps expression is 'false'
//]
@@ -508,16 +552,15 @@
{
//[reference_karma_using_declarations_lazy
- using boost::spirit::karma::generate;
- using boost::spirit::karma::lazy;
+ namespace karma = boost::spirit::karma;
using boost::spirit::karma::_1;
using boost::spirit::ascii::string;
using boost::phoenix::val;
//]
//[reference_karma_lazy
- test_generator_attr("abc", lazy(val(string)), "abc");
- test_generator("abc", lazy(val(string))[_1 = "abc"]);
+ test_generator_attr("abc", karma::lazy(val(string)), "abc");
+ test_generator("abc", karma::lazy(val(string))[_1 = "abc"]);
//]
}
@@ -525,7 +568,6 @@
// stream module
{
//[reference_karma_using_declarations_stream
- using boost::spirit::karma::generate;
using boost::spirit::karma::stream;
//]
@@ -541,7 +583,10 @@
// binary module
{
//[reference_karma_using_declarations_native_binary
- using boost::spirit::karma::generate;
+ using boost::spirit::karma::byte_;
+ using boost::spirit::karma::word;
+ using boost::spirit::karma::dword;
+ using boost::spirit::karma::qword;
//]
//[reference_karma_native_binary_little
@@ -571,7 +616,9 @@
{
//[reference_karma_using_declarations_little_binary
- using boost::spirit::karma::generate;
+ using boost::spirit::karma::little_word;
+ using boost::spirit::karma::little_dword;
+ using boost::spirit::karma::little_qword;
//]
//[reference_karma_little_binary
@@ -587,7 +634,9 @@
{
//[reference_karma_using_declarations_big_binary
- using boost::spirit::karma::generate;
+ using boost::spirit::karma::big_word;
+ using boost::spirit::karma::big_dword;
+ using boost::spirit::karma::big_qword;
//]
//[reference_karma_big_binary
Modified: branches/release/libs/spirit/example/lex/example1.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/example1.cpp (original)
+++ branches/release/libs/spirit/example/lex/example1.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -32,21 +32,18 @@
#include "example.hpp"
using namespace boost::spirit;
-using namespace boost::spirit::ascii;
-using namespace boost::spirit::qi;
-using namespace boost::spirit::lex;
///////////////////////////////////////////////////////////////////////////////
// Token definition
///////////////////////////////////////////////////////////////////////////////
template <typename Lexer>
-struct example1_tokens : lexer<Lexer>
+struct example1_tokens : lex::lexer<Lexer>
{
example1_tokens()
{
// define tokens and associate them with the lexer
identifier = "[a-zA-Z_][a-zA-Z0-9_]*";
- this->self = char_(',') | '{' | '}' | identifier;
+ this->self = lex::char_(',') | '{' | '}' | identifier;
// any token definition to be used as the skip parser during parsing
// has to be associated with a separate lexer state (here 'WS')
@@ -54,7 +51,7 @@
this->self("WS") = white_space;
}
- token_def<> identifier, white_space;
+ lex::token_def<> identifier, white_space;
};
///////////////////////////////////////////////////////////////////////////////
@@ -62,16 +59,16 @@
///////////////////////////////////////////////////////////////////////////////
template <typename Iterator>
struct example1_grammar
- : grammar<Iterator, in_state_skipper<token_def<> > >
+ : qi::grammar<Iterator, qi::in_state_skipper<lex::token_def<> > >
{
template <typename TokenDef>
example1_grammar(TokenDef const& tok)
: example1_grammar::base_type(start)
{
- start = '{' >> *(tok.identifier >> -char_(',')) >> '}';
+ start = '{' >> *(tok.identifier >> -ascii::char_(',')) >> '}';
}
- rule<Iterator, in_state_skipper<token_def<> > > start;
+ qi::rule<Iterator, qi::in_state_skipper<lex::token_def<> > > start;
};
///////////////////////////////////////////////////////////////////////////////
@@ -81,11 +78,11 @@
typedef std::string::iterator base_iterator_type;
// This is the token type to return from the lexer iterator
- typedef lexertl::token<base_iterator_type> token_type;
+ typedef lex::lexertl::token<base_iterator_type> token_type;
// This is the lexer type to use to tokenize the input.
// We use the lexertl based lexer engine.
- typedef lexertl::lexer<token_type> lexer_type;
+ typedef lex::lexertl::lexer<token_type> lexer_type;
// This is the lexer type (derived from the given lexer type).
typedef example1_tokens<lexer_type> example1_lex;
@@ -114,7 +111,7 @@
// Note, how we use the token_def defined above as the skip parser. It must
// be explicitly wrapped inside a state directive, switching the lexer
// state for the duration of skipping whitespace.
- bool r = phrase_parse(iter, end, calc, in_state("WS")[lex.white_space]);
+ bool r = qi::phrase_parse(iter, end, calc, qi::in_state("WS")[lex.white_space]);
if (r && iter == end)
{
Modified: branches/release/libs/spirit/example/lex/example2.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/example2.cpp (original)
+++ branches/release/libs/spirit/example/lex/example2.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -32,15 +32,13 @@
using namespace boost::spirit;
using namespace boost::spirit::ascii;
-using namespace boost::spirit::qi;
-using namespace boost::spirit::lex;
using boost::phoenix::ref;
///////////////////////////////////////////////////////////////////////////////
// Token definition
///////////////////////////////////////////////////////////////////////////////
template <typename Lexer>
-struct example2_tokens : lexer<Lexer>
+struct example2_tokens : lex::lexer<Lexer>
{
example2_tokens()
{
@@ -56,17 +54,17 @@
// interpreted literally and never as special regex characters. This is
// done to be able to assign single characters the id of their character
// code value, allowing to reference those as literals in Qi grammars.
- this->self = token_def<>(',') | '!' | '.' | '?' | ' ' | '\n' | word;
+ this->self = lex::token_def<>(',') | '!' | '.' | '?' | ' ' | '\n' | word;
}
- token_def<> word;
+ lex::token_def<> word;
};
///////////////////////////////////////////////////////////////////////////////
// Grammar definition
///////////////////////////////////////////////////////////////////////////////
template <typename Iterator>
-struct example2_grammar : grammar<Iterator>
+struct example2_grammar : qi::grammar<Iterator>
{
template <typename TokenDef>
example2_grammar(TokenDef const& tok)
@@ -106,7 +104,7 @@
BOOST_SPIRIT_DEBUG_NODE(statement);
}
- rule<Iterator> story, paragraph, command, question, statement;
+ qi::rule<Iterator> story, paragraph, command, question, statement;
int paragraphs, commands, questions, statements;
};
@@ -117,11 +115,11 @@
typedef std::string::iterator base_iterator_type;
// This is the token type to return from the lexer iterator
- typedef lexertl::token<base_iterator_type> token_type;
+ typedef lex::lexertl::token<base_iterator_type> token_type;
// This is the lexer type to use to tokenize the input.
// Here we use the lexertl based lexer engine.
- typedef lexertl::lexer<token_type> lexer_type;
+ typedef lex::lexertl::lexer<token_type> lexer_type;
// This is the token definition type (derived from the given lexer type).
typedef example2_tokens<lexer_type> example2_tokens;
@@ -147,7 +145,7 @@
// Parsing is done based on the the token stream, not the character
// stream read from the input.
- bool r = parse(iter, end, calc);
+ bool r = qi::parse(iter, end, calc);
if (r && iter == end)
{
Modified: branches/release/libs/spirit/example/lex/example3.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/example3.cpp (original)
+++ branches/release/libs/spirit/example/lex/example3.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -32,14 +32,12 @@
#include "example.hpp"
using namespace boost::spirit;
-using namespace boost::spirit::qi;
-using namespace boost::spirit::lex;
///////////////////////////////////////////////////////////////////////////////
// Token definition
///////////////////////////////////////////////////////////////////////////////
template <typename Lexer>
-struct example3_tokens : lexer<Lexer>
+struct example3_tokens : lex::lexer<Lexer>
{
example3_tokens()
{
@@ -53,13 +51,13 @@
// define the whitespace to ignore (spaces, tabs, newlines and C-style
// comments)
this->self("WS")
- = token_def<>("[ \\t\\n]+") // whitespace
+ = lex::token_def<>("[ \\t\\n]+") // whitespace
| "\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\/" // C style comments
;
}
// these tokens expose the iterator_range of the matched input sequence
- token_def<> ellipses, identifier, number;
+ lex::token_def<> ellipses, identifier, number;
};
///////////////////////////////////////////////////////////////////////////////
@@ -67,7 +65,7 @@
///////////////////////////////////////////////////////////////////////////////
template <typename Iterator, typename Lexer>
struct example3_grammar
- : grammar<Iterator, in_state_skipper<Lexer> >
+ : qi::grammar<Iterator, qi::in_state_skipper<Lexer> >
{
template <typename TokenDef>
example3_grammar(TokenDef const& tok)
@@ -91,7 +89,7 @@
BOOST_SPIRIT_DEBUG_NODE(couplet);
}
- rule<Iterator, in_state_skipper<Lexer> > start, couplet;
+ qi::rule<Iterator, qi::in_state_skipper<Lexer> > start, couplet;
};
///////////////////////////////////////////////////////////////////////////////
@@ -101,11 +99,11 @@
typedef std::string::iterator base_iterator_type;
// This is the token type to return from the lexer iterator
- typedef lexertl::token<base_iterator_type> token_type;
+ typedef lex::lexertl::token<base_iterator_type> token_type;
// This is the lexer type to use to tokenize the input.
// Here we use the lexertl based lexer engine.
- typedef lexertl::lexer<token_type> lexer_type;
+ typedef lex::lexertl::lexer<token_type> lexer_type;
// This is the token definition type (derived from the given lexer type).
typedef example3_tokens<lexer_type> example3_tokens;
@@ -132,7 +130,7 @@
// Parsing is done based on the the token stream, not the character
// stream read from the input.
// Note how we use the lexer defined above as the skip parser.
- bool r = phrase_parse(iter, end, calc, in_state("WS")[tokens.self]);
+ bool r = qi::phrase_parse(iter, end, calc, qi::in_state("WS")[tokens.self]);
if (r && iter == end)
{
Modified: branches/release/libs/spirit/example/lex/example4.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/example4.cpp (original)
+++ branches/release/libs/spirit/example/lex/example4.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -33,16 +33,13 @@
#include "example.hpp"
using namespace boost::spirit;
-using namespace boost::spirit::qi;
-using namespace boost::spirit::lex;
-
using boost::phoenix::val;
///////////////////////////////////////////////////////////////////////////////
// Token definition
///////////////////////////////////////////////////////////////////////////////
template <typename Lexer>
-struct example4_tokens : lexer<Lexer>
+struct example4_tokens : lex::lexer<Lexer>
{
example4_tokens()
{
@@ -54,20 +51,20 @@
while_ = "while";
// associate the tokens and the token set with the lexer
- this->self = token_def<>('(') | ')' | '{' | '}' | '=' | ';' | constant;
+ this->self = lex::token_def<>('(') | ')' | '{' | '}' | '=' | ';' | constant;
this->self += if_ | else_ | while_ | identifier;
// define the whitespace to ignore (spaces, tabs, newlines and C-style
// comments)
this->self("WS")
- = token_def<>("[ \\t\\n]+")
+ = lex::token_def<>("[ \\t\\n]+")
| "\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\/"
;
}
//[example4_token_def
// these tokens expose the iterator_range of the matched input sequence
- token_def<> if_, else_, while_;
+ lex::token_def<> if_, else_, while_;
// The following two tokens have an associated attribute type, 'identifier'
// carries a string (the identifier name) and 'constant' carries the
@@ -82,8 +79,8 @@
// possible. Moreover, token instances are constructed once by the lexer
// library. From this point on tokens are passed by reference only,
// avoiding them being copied around.
- token_def<std::string> identifier;
- token_def<unsigned int> constant;
+ lex::token_def<std::string> identifier;
+ lex::token_def<unsigned int> constant;
//]
};
@@ -92,7 +89,7 @@
///////////////////////////////////////////////////////////////////////////////
template <typename Iterator, typename Lexer>
struct example4_grammar
- : grammar<Iterator, in_state_skipper<Lexer> >
+ : qi::grammar<Iterator, qi::in_state_skipper<Lexer> >
{
template <typename TokenDef>
example4_grammar(TokenDef const& tok)
@@ -148,12 +145,12 @@
typedef boost::variant<unsigned int, std::string> expression_type;
- rule<Iterator, in_state_skipper<Lexer> > program, block, statement;
- rule<Iterator, in_state_skipper<Lexer> > assignment, if_stmt;
- rule<Iterator, in_state_skipper<Lexer> > while_stmt;
+ qi::rule<Iterator, qi::in_state_skipper<Lexer> > program, block, statement;
+ qi::rule<Iterator, qi::in_state_skipper<Lexer> > assignment, if_stmt;
+ qi::rule<Iterator, qi::in_state_skipper<Lexer> > while_stmt;
// the expression is the only rule having a return value
- rule<Iterator, expression_type(), in_state_skipper<Lexer> > expression;
+ qi::rule<Iterator, expression_type(), qi::in_state_skipper<Lexer> > expression;
};
///////////////////////////////////////////////////////////////////////////////
@@ -176,12 +173,12 @@
// least one token attribute type you'll have to list all attribute types
// used for token_def<> declarations in the token definition class above,
// otherwise compilation errors will occur.
- typedef lexertl::token<
+ typedef lex::lexertl::token<
base_iterator_type, boost::mpl::vector<unsigned int, std::string>
> token_type;
//]
// Here we use the lexertl based lexer engine.
- typedef lexertl::lexer<token_type> lexer_type;
+ typedef lex::lexertl::lexer<token_type> lexer_type;
// This is the token definition type (derived from the given lexer type).
typedef example4_tokens<lexer_type> example4_tokens;
@@ -210,7 +207,7 @@
// Note how we use the lexer defined above as the skip parser. It must
// be explicitly wrapped inside a state directive, switching the lexer
// state for the duration of skipping whitespace.
- bool r = phrase_parse(iter, end, calc, in_state("WS")[tokens.self]);
+ bool r = qi::phrase_parse(iter, end, calc, qi::in_state("WS")[tokens.self]);
if (r && iter == end)
{
Modified: branches/release/libs/spirit/example/lex/example5.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/example5.cpp (original)
+++ branches/release/libs/spirit/example/lex/example5.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -35,16 +35,13 @@
#include "example.hpp"
using namespace boost::spirit;
-using namespace boost::spirit::qi;
-using namespace boost::spirit::lex;
-
using boost::phoenix::val;
///////////////////////////////////////////////////////////////////////////////
// Token definition base, defines all tokens for the base grammar below
///////////////////////////////////////////////////////////////////////////////
template <typename Lexer>
-struct example5_base_tokens : lexer<Lexer>
+struct example5_base_tokens : lex::lexer<Lexer>
{
protected:
// this lexer is supposed to be used as a base type only
@@ -60,19 +57,19 @@
while_ = "while";
// associate the tokens and the token set with the lexer
- this->self += token_def<>('(') | ')' | '{' | '}' | '=' | ';' | constant;
+ this->self += lex::token_def<>('(') | ')' | '{' | '}' | '=' | ';' | constant;
this->self += if_ | while_ | identifier;
// define the whitespace to ignore (spaces, tabs, newlines and C-style
// comments)
this->self("WS")
- = token_def<>("[ \\t\\n]+")
+ = lex::token_def<>("[ \\t\\n]+")
| "\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\/"
;
}
// these tokens have no attribute
- token_def<lex::omit> if_, while_;
+ lex::token_def<lex::omit> if_, while_;
// The following two tokens have an associated attribute type, 'identifier'
// carries a string (the identifier name) and 'constant' carries the
@@ -87,8 +84,8 @@
// possible. Moreover, token instances are constructed once by the lexer
// library. From this point on tokens are passed by reference only,
// avoiding them being copied around.
- token_def<std::string> identifier;
- token_def<unsigned int> constant;
+ lex::token_def<std::string> identifier;
+ lex::token_def<unsigned int> constant;
};
///////////////////////////////////////////////////////////////////////////////
@@ -96,7 +93,7 @@
///////////////////////////////////////////////////////////////////////////////
template <typename Iterator, typename Lexer>
struct example5_base_grammar
- : grammar<Iterator, in_state_skipper<Lexer> >
+ : qi::grammar<Iterator, qi::in_state_skipper<Lexer> >
{
template <typename TokenDef>
example5_base_grammar(TokenDef const& tok)
@@ -148,15 +145,15 @@
;
}
- typedef in_state_skipper<Lexer> skipper_type;
+ typedef qi::in_state_skipper<Lexer> skipper_type;
- rule<Iterator, skipper_type> program, block, statement;
- rule<Iterator, skipper_type> assignment, if_stmt;
- rule<Iterator, skipper_type> while_stmt;
+ qi::rule<Iterator, skipper_type> program, block, statement;
+ qi::rule<Iterator, skipper_type> assignment, if_stmt;
+ qi::rule<Iterator, skipper_type> while_stmt;
// the expression is the only rule having a return value
typedef boost::variant<unsigned int, std::string> expression_type;
- rule<Iterator, expression_type(), skipper_type> expression;
+ qi::rule<Iterator, expression_type(), skipper_type> expression;
};
///////////////////////////////////////////////////////////////////////////////
@@ -182,7 +179,7 @@
}
// this token has no attribute
- token_def<lex::omit> else_;
+ lex::token_def<lex::omit> else_;
};
///////////////////////////////////////////////////////////////////////////////
@@ -221,12 +218,12 @@
// least one token attribute type you'll have to list all attribute types
// used for token_def<> declarations in the token definition class above,
// otherwise compilation errors will occur.
- typedef lexertl::token<
+ typedef lex::lexertl::token<
base_iterator_type, boost::mpl::vector<unsigned int, std::string>
> token_type;
// Here we use the lexertl based lexer engine.
- typedef lexertl::lexer<token_type> lexer_type;
+ typedef lex::lexertl::lexer<token_type> lexer_type;
// This is the token definition type (derived from the given lexer type).
typedef example5_tokens<lexer_type> example5_tokens;
@@ -256,7 +253,7 @@
// be explicitly wrapped inside a state directive, switching the lexer
// state for the duration of skipping whitespace.
std::string ws("WS");
- bool r = phrase_parse(iter, end, calc, in_state(ws)[tokens.self]);
+ bool r = qi::phrase_parse(iter, end, calc, qi::in_state(ws)[tokens.self]);
if (r && iter == end)
{
Modified: branches/release/libs/spirit/example/lex/example6.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/example6.cpp (original)
+++ branches/release/libs/spirit/example/lex/example6.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -37,9 +37,6 @@
#include "example.hpp"
using namespace boost::spirit;
-using namespace boost::spirit::qi;
-using namespace boost::spirit::lex;
-
using boost::phoenix::val;
///////////////////////////////////////////////////////////////////////////////
@@ -58,7 +55,7 @@
// Token definitions
///////////////////////////////////////////////////////////////////////////////
template <typename Lexer>
-struct example6_tokens : lexer<Lexer>
+struct example6_tokens : lex::lexer<Lexer>
{
example6_tokens()
{
@@ -67,7 +64,7 @@
constant = "[0-9]+";
// associate the tokens and the token set with the lexer
- this->self = token_def<>('(') | ')' | '{' | '}' | '=' | ';';
+ this->self = lex::token_def<>('(') | ')' | '{' | '}' | '=' | ';';
// Token definitions can be added by using some special syntactic
// construct as shown below.
@@ -84,7 +81,7 @@
// define the whitespace to ignore (spaces, tabs, newlines and C-style
// comments) and add those to another lexer state (here: "WS")
this->self("WS")
- = token_def<>("[ \\t\\n]+")
+ = lex::token_def<>("[ \\t\\n]+")
| "\\/\\*[^*]*\\*+([^/*][^*]*\\*+)*\\/"
;
}
@@ -102,8 +99,8 @@
// possible. Moreover, token instances are constructed once by the lexer
// library. From this point on tokens are passed by reference only,
// avoiding them being copied around.
- token_def<std::string> identifier;
- token_def<unsigned int> constant;
+ lex::token_def<std::string> identifier;
+ lex::token_def<unsigned int> constant;
};
///////////////////////////////////////////////////////////////////////////////
@@ -111,7 +108,7 @@
///////////////////////////////////////////////////////////////////////////////
template <typename Iterator, typename Lexer>
struct example6_grammar
- : grammar<Iterator, in_state_skipper<Lexer> >
+ : qi::grammar<Iterator, qi::in_state_skipper<Lexer> >
{
template <typename TokenDef>
example6_grammar(TokenDef const& tok)
@@ -170,12 +167,12 @@
typedef boost::variant<unsigned int, std::string> expression_type;
- rule<Iterator, in_state_skipper<Lexer> > program, block, statement;
- rule<Iterator, in_state_skipper<Lexer> > assignment, if_stmt;
- rule<Iterator, in_state_skipper<Lexer> > while_stmt;
+ qi::rule<Iterator, qi::in_state_skipper<Lexer> > program, block, statement;
+ qi::rule<Iterator, qi::in_state_skipper<Lexer> > assignment, if_stmt;
+ qi::rule<Iterator, qi::in_state_skipper<Lexer> > while_stmt;
// the expression is the only rule having a return value
- rule<Iterator, expression_type(), in_state_skipper<Lexer> > expression;
+ qi::rule<Iterator, expression_type(), qi::in_state_skipper<Lexer> > expression;
};
///////////////////////////////////////////////////////////////////////////////
@@ -197,12 +194,12 @@
// least one token attribute type you'll have to list all attribute types
// used for token_def<> declarations in the token definition class above,
// otherwise compilation errors will occur.
- typedef lexertl::token<
+ typedef lex::lexertl::token<
base_iterator_type, boost::mpl::vector<unsigned int, std::string>
> token_type;
// Here we use the lexertl based lexer engine.
- typedef lexertl::lexer<token_type> lexer_type;
+ typedef lex::lexertl::lexer<token_type> lexer_type;
// This is the token definition type (derived from the given lexer type).
typedef example6_tokens<lexer_type> example6_tokens;
@@ -232,7 +229,7 @@
// be explicitly wrapped inside a state directive, switching the lexer
// state for the duration of skipping whitespace.
std::string ws("WS");
- bool r = phrase_parse(iter, end, calc, in_state(ws)[tokens.self]);
+ bool r = qi::phrase_parse(iter, end, calc, qi::in_state(ws)[tokens.self]);
if (r && iter == end)
{
Modified: branches/release/libs/spirit/example/lex/print_numbers.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/print_numbers.cpp (original)
+++ branches/release/libs/spirit/example/lex/print_numbers.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -30,23 +30,21 @@
#include "example.hpp"
using namespace boost::spirit;
-using namespace boost::spirit::qi;
-using namespace boost::spirit::lex;
///////////////////////////////////////////////////////////////////////////////
// Token definition: We use the lexertl based lexer engine as the underlying
// lexer type.
///////////////////////////////////////////////////////////////////////////////
template <typename Lexer>
-struct print_numbers_tokens : lexer<Lexer>
+struct print_numbers_tokens : lex::lexer<Lexer>
{
// define tokens and associate it with the lexer, we set the lexer flags
// not to match newlines while matching a dot, so we need to add the
// '\n' explicitly below
print_numbers_tokens()
- : print_numbers_tokens::base_type(match_flags::match_not_dot_newline)
+ : print_numbers_tokens::base_type(lex::match_flags::match_not_dot_newline)
{
- this->self = token_def<int>("[0-9]*") | ".|\n";
+ this->self = lex::token_def<int>("[0-9]*") | ".|\n";
}
};
@@ -54,7 +52,7 @@
// Grammar definition
///////////////////////////////////////////////////////////////////////////////
template <typename Iterator>
-struct print_numbers_grammar : grammar<Iterator>
+struct print_numbers_grammar : qi::grammar<Iterator>
{
print_numbers_grammar()
: print_numbers_grammar::base_type(start)
@@ -62,13 +60,13 @@
// we just know, that the token ids get assigned starting min_token_id
// so, "[0-9]*" gets the id 'min_token_id' and ".|\n" gets the id
// 'min_token_id+1'.
- start = *( token(lex::min_token_id) [ std::cout << _1 << "\n" ]
- | token(lex::min_token_id+1)
+ start = *( qi::token(lex::min_token_id) [ std::cout << _1 << "\n" ]
+ | qi::token(lex::min_token_id+1)
)
;
}
- rule<Iterator> start;
+ qi::rule<Iterator> start;
};
///////////////////////////////////////////////////////////////////////////////
@@ -79,11 +77,11 @@
// the token type to be used, 'int' is available as the type of the token
// attribute and no lexer state is supported
- typedef lexertl::token<base_iterator_type, boost::mpl::vector<int>
+ typedef lex::lexertl::token<base_iterator_type, boost::mpl::vector<int>
, boost::mpl::false_> token_type;
// lexer type
- typedef lexertl::lexer<token_type> lexer_type;
+ typedef lex::lexertl::lexer<token_type> lexer_type;
// iterator type exposed by the lexer
typedef print_numbers_tokens<lexer_type>::iterator_type iterator_type;
@@ -97,7 +95,7 @@
// stream read from the input.
std::string str (read_from_file(1 == argc ? "print_numbers.input" : argv[1]));
base_iterator_type first = str.begin();
- bool r = tokenize_and_parse(first, str.end(), print_tokens, print);
+ bool r = lex::tokenize_and_parse(first, str.end(), print_tokens, print);
if (r) {
std::cout << "-------------------------\n";
Modified: branches/release/libs/spirit/example/lex/static_lexer/word_count_generate.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/static_lexer/word_count_generate.cpp (original)
+++ branches/release/libs/spirit/example/lex/static_lexer/word_count_generate.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -22,14 +22,13 @@
#include "word_count_tokens.hpp"
using namespace boost::spirit;
-using namespace boost::spirit::lex;
///////////////////////////////////////////////////////////////////////////////
//[wc_static_generate_main
int main(int argc, char* argv[])
{
// create the lexer object instance needed to invoke the generator
- word_count_tokens<lexertl::lexer<> > word_count; // the token definition
+ word_count_tokens<lex::lexertl::lexer<> > word_count; // the token definition
// open the output file, where the generated tokenizer function will be
// written to
@@ -41,6 +40,6 @@
// The suffix "wc" used below results in a type lexertl::static_::lexer_wc
// to be generated, which needs to be passed as a template parameter to the
// lexertl::static_lexer template (see word_count_static.cpp).
- return lexertl::generate_static(word_count, out, "wc") ? 0 : -1;
+ return lex::lexertl::generate_static(word_count, out, "wc") ? 0 : -1;
}
//]
Modified: branches/release/libs/spirit/example/lex/static_lexer/word_count_lexer_generate.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/static_lexer/word_count_lexer_generate.cpp (original)
+++ branches/release/libs/spirit/example/lex/static_lexer/word_count_lexer_generate.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -22,14 +22,13 @@
#include "word_count_lexer_tokens.hpp"
using namespace boost::spirit;
-using namespace boost::spirit::lex;
///////////////////////////////////////////////////////////////////////////////
//[wcl_static_generate_main
int main(int argc, char* argv[])
{
// create the lexer object instance needed to invoke the generator
- word_count_lexer_tokens<lexertl::actor_lexer<> > word_count; // the token definition
+ word_count_lexer_tokens<lex::lexertl::actor_lexer<> > word_count; // the token definition
// open the output file, where the generated tokenizer function will be
// written to
@@ -41,6 +40,6 @@
// The suffix "wcl" used below results in a type lexertl::static_::lexer_wcl
// to be generated, which needs to be passed as a template parameter to the
// lexertl::static_lexer template (see word_count_lexer_static.cpp).
- return lexertl::generate_static(word_count, out, "wcl") ? 0 : -1;
+ return lex::lexertl::generate_static(word_count, out, "wcl") ? 0 : -1;
}
//]
Modified: branches/release/libs/spirit/example/lex/static_lexer/word_count_lexer_static.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/static_lexer/word_count_lexer_static.cpp (original)
+++ branches/release/libs/spirit/example/lex/static_lexer/word_count_lexer_static.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -25,7 +25,6 @@
#include "word_count_lexer_static.hpp" // generated tokenizer
using namespace boost::spirit;
-using namespace boost::spirit::lex;
///////////////////////////////////////////////////////////////////////////////
//[wcl_static_main
@@ -45,7 +44,7 @@
//
// As a result the token instances contain the token ids as the only data
// member.
- typedef lexertl::token<char const*, lex::omit, boost::mpl::false_> token_type;
+ typedef lex::lexertl::token<char const*, lex::omit, boost::mpl::false_> token_type;
// Define the lexer type to be used as the base class for our token
// definition.
@@ -57,8 +56,8 @@
// As we specified the suffix "wcl" while generating the static tables we
// need to pass the type lexertl::static_::lexer_wcl as the second template
// parameter below (see word_count_lexer_generate.cpp).
- typedef lexertl::static_actor_lexer<
- token_type, lexertl::static_::lexer_wcl
+ typedef lex::lexertl::static_actor_lexer<
+ token_type, lex::lexertl::static_::lexer_wcl
> lexer_type;
// create the lexer object instance needed to invoke the lexical analysis
@@ -67,7 +66,7 @@
// tokenize the given string, all generated tokens are discarded
char const* first = str.c_str();
char const* last = &first[str.size()];
- bool r = tokenize(first, last, word_count_lexer);
+ bool r = lex::tokenize(first, last, word_count_lexer);
if (r) {
std::cout << "lines: " << word_count_lexer.l
Modified: branches/release/libs/spirit/example/lex/static_lexer/word_count_static.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/static_lexer/word_count_static.cpp (original)
+++ branches/release/libs/spirit/example/lex/static_lexer/word_count_static.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -32,8 +32,6 @@
using namespace boost::spirit;
using namespace boost::spirit::ascii;
-using namespace boost::spirit::qi;
-using namespace boost::spirit::lex;
///////////////////////////////////////////////////////////////////////////////
// Grammar definition
@@ -44,7 +42,7 @@
// definition class instance passed to the constructor to allow accessing the
// embedded token_def<> instances.
template <typename Iterator>
-struct word_count_grammar : grammar<Iterator>
+struct word_count_grammar : qi::grammar<Iterator>
{
template <typename TokenDef>
word_count_grammar(TokenDef const& tok)
@@ -56,15 +54,15 @@
// associate the defined tokens with the lexer, at the same time
// defining the actions to be executed
- start = *( tok.word [ ++ref(w), ref(c) += size(_1) ]
- | lit('\n') [ ++ref(l), ++ref(c) ]
- | token(IDANY) [ ++ref(c) ]
+ start = *( tok.word [ ++ref(w), ref(c) += size(_1) ]
+ | lit('\n') [ ++ref(l), ++ref(c) ]
+ | qi::token(IDANY) [ ++ref(c) ]
)
;
}
std::size_t c, w, l; // counter for characters, words, and lines
- rule<Iterator> start;
+ qi::rule<Iterator> start;
};
//]
@@ -74,7 +72,7 @@
{
// Define the token type to be used: 'std::string' is available as the type
// of the token value.
- typedef lexertl::token<
+ typedef lex::lexertl::token<
char const*, boost::mpl::vector<std::string>
> token_type;
@@ -88,8 +86,8 @@
// As we specified the suffix "wc" while generating the static tables we
// need to pass the type lexertl::static_::lexer_wc as the second template
// parameter below (see word_count_generate.cpp).
- typedef lexertl::static_lexer<
- token_type, lexertl::static_::lexer_wc
+ typedef lex::lexertl::static_lexer<
+ token_type, lex::lexertl::static_::lexer_wc
> lexer_type;
// Define the iterator type exposed by the lexer.
@@ -106,7 +104,7 @@
char const* last = &first[str.size()];
// Parsing is done based on the the token stream, not the character stream.
- bool r = tokenize_and_parse(first, last, word_count, g);
+ bool r = lex::tokenize_and_parse(first, last, word_count, g);
if (r) { // success
std::cout << "lines: " << g.l << ", words: " << g.w
Modified: branches/release/libs/spirit/example/lex/strip_comments.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/strip_comments.cpp (original)
+++ branches/release/libs/spirit/example/lex/strip_comments.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -45,8 +45,6 @@
#include "example.hpp"
using namespace boost::spirit;
-using namespace boost::spirit::qi;
-using namespace boost::spirit::lex;
///////////////////////////////////////////////////////////////////////////////
// Token definition: We use the lexertl based lexer engine as the underlying
@@ -58,10 +56,10 @@
};
template <typename Lexer>
-struct strip_comments_tokens : lexer<Lexer>
+struct strip_comments_tokens : lex::lexer<Lexer>
{
strip_comments_tokens()
- : strip_comments_tokens::base_type(match_flags::match_default)
+ : strip_comments_tokens::base_type(lex::match_flags::match_default)
{
// define tokens and associate them with the lexer
cppcomment = "\\/\\/[^\n]*"; // '//[^\n]*'
@@ -87,14 +85,14 @@
;
}
- token_def<> cppcomment, ccomment, endcomment;
+ lex::token_def<> cppcomment, ccomment, endcomment;
};
///////////////////////////////////////////////////////////////////////////////
// Grammar definition
///////////////////////////////////////////////////////////////////////////////
template <typename Iterator>
-struct strip_comments_grammar : grammar<Iterator>
+struct strip_comments_grammar : qi::grammar<Iterator>
{
template <typename TokenDef>
strip_comments_grammar(TokenDef const& tok)
@@ -103,19 +101,19 @@
// The in_state("COMMENT")[...] parser component switches the lexer
// state to be 'COMMENT' during the matching of the embedded parser.
start = *( tok.ccomment
- >> in_state("COMMENT")
+ >> qi::in_state("COMMENT")
[
// the lexer is in the 'COMMENT' state during
// matching of the following parser components
*token(IDANY) >> tok.endcomment
]
| tok.cppcomment
- | token(IDANY) [ std::cout << _1 ]
+ | qi::token(IDANY) [ std::cout << _1 ]
)
;
}
- rule<Iterator> start;
+ qi::rule<Iterator> start;
};
///////////////////////////////////////////////////////////////////////////////
@@ -125,7 +123,9 @@
typedef std::string::iterator base_iterator_type;
// lexer type
- typedef lexertl::lexer<lexertl::token<base_iterator_type> > lexer_type;
+ typedef
+ lex::lexertl::lexer<lex::lexertl::token<base_iterator_type> >
+ lexer_type;
// iterator type exposed by the lexer
typedef strip_comments_tokens<lexer_type>::iterator_type iterator_type;
@@ -140,7 +140,7 @@
std::string str (read_from_file(1 == argc ? "strip_comments.input" : argv[1]));
base_iterator_type first = str.begin();
- bool r = tokenize_and_parse(first, str.end(), strip_comments, g);
+ bool r = lex::tokenize_and_parse(first, str.end(), strip_comments, g);
if (r) {
std::cout << "-------------------------\n";
Modified: branches/release/libs/spirit/example/lex/strip_comments_lexer.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/strip_comments_lexer.cpp (original)
+++ branches/release/libs/spirit/example/lex/strip_comments_lexer.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -45,8 +45,7 @@
#include "example.hpp"
using namespace boost::spirit;
-using namespace boost::spirit::lex;
-
+
///////////////////////////////////////////////////////////////////////////////
// Token definition: We use the lexertl based lexer engine as the underlying
// lexer type.
@@ -107,10 +106,10 @@
///////////////////////////////////////////////////////////////////////////////
template <typename Lexer>
-struct strip_comments_tokens : lexer<Lexer>
+struct strip_comments_tokens : lex::lexer<Lexer>
{
strip_comments_tokens()
- : strip_comments_tokens::base_type(match_flags::match_default)
+ : strip_comments_tokens::base_type(lex::match_flags::match_default)
{
// define tokens and associate them with the lexer
cppcomment = "\\/\\/[^\n]*"; // '//[^\n]*'
@@ -137,7 +136,7 @@
;
}
- token_def<> cppcomment, ccomment, endcomment, any, eol;
+ lex::token_def<> cppcomment, ccomment, endcomment, any, eol;
};
///////////////////////////////////////////////////////////////////////////////
@@ -147,17 +146,19 @@
typedef std::string::iterator base_iterator_type;
// lexer type
- typedef lexertl::actor_lexer<lexertl::token<base_iterator_type> > lexer_type;
+ typedef
+ lex::lexertl::actor_lexer<lex::lexertl::token<base_iterator_type> >
+ lexer_type;
// now we use the types defined above to create the lexer and grammar
// object instances needed to invoke the parsing process
strip_comments_tokens<lexer_type> strip_comments; // Our lexer
- // No parsing is done alltogether, everzthing happens in the lexer semantic
+ // No parsing is done alltogether, everything happens in the lexer semantic
// actions.
std::string str (read_from_file(1 == argc ? "strip_comments.input" : argv[1]));
base_iterator_type first = str.begin();
- bool r = tokenize(first, str.end(), strip_comments);
+ bool r = lex::tokenize(first, str.end(), strip_comments);
if (!r) {
std::string rest(first, str.end());
Modified: branches/release/libs/spirit/example/lex/word_count.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/word_count.cpp (original)
+++ branches/release/libs/spirit/example/lex/word_count.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -51,8 +51,6 @@
//[wcp_namespaces
using namespace boost::spirit;
using namespace boost::spirit::ascii;
-using namespace boost::spirit::qi;
-using namespace boost::spirit::lex;
//]
///////////////////////////////////////////////////////////////////////////////
@@ -68,7 +66,7 @@
//[wcp_token_definition
template <typename Lexer>
-struct word_count_tokens : lexer<Lexer>
+struct word_count_tokens : lex::lexer<Lexer>
{
word_count_tokens()
{
@@ -91,7 +89,7 @@
}
// the token 'word' exposes the matched string as its parser attribute
- token_def<std::string> word;
+ lex::token_def<std::string> word;
};
//]
@@ -100,7 +98,7 @@
///////////////////////////////////////////////////////////////////////////////
//[wcp_grammar_definition
template <typename Iterator>
-struct word_count_grammar : grammar<Iterator>
+struct word_count_grammar : qi::grammar<Iterator>
{
template <typename TokenDef>
word_count_grammar(TokenDef const& tok)
@@ -110,15 +108,15 @@
using boost::phoenix::ref;
using boost::phoenix::size;
- start = *( tok.word [++ref(w), ref(c) += size(_1)]
- | lit('\n') [++ref(c), ++ref(l)]
- | token(IDANY) [++ref(c)]
+ start = *( tok.word [++ref(w), ref(c) += size(_1)]
+ | lit('\n') [++ref(c), ++ref(l)]
+ | qi::token(IDANY) [++ref(c)]
)
;
}
std::size_t c, w, l;
- rule<Iterator> start;
+ qi::rule<Iterator> start;
};
//]
@@ -128,12 +126,12 @@
{
/*< Define the token type to be used: `std::string` is available as the
type of the token attribute
->*/ typedef lexertl::token<
+>*/ typedef lex::lexertl::token<
char const*, boost::mpl::vector<std::string>
> token_type;
/*< Define the lexer type to use implementing the state machine
->*/ typedef lexertl::lexer<token_type> lexer_type;
+>*/ typedef lex::lexertl::lexer<token_type> lexer_type;
/*< Define the iterator type exposed by the lexer type
>*/ typedef word_count_tokens<lexer_type>::iterator_type iterator_type;
@@ -152,7 +150,7 @@
stream read from the input. The function `tokenize_and_parse()` wraps
the passed iterator range `[first, last)` by the lexical analyzer and
uses its exposed iterators to parse the toke stream.
->*/ bool r = tokenize_and_parse(first, last, word_count, g);
+>*/ bool r = lex::tokenize_and_parse(first, last, word_count, g);
if (r) {
std::cout << "lines: " << g.l << ", words: " << g.w
Modified: branches/release/libs/spirit/example/lex/word_count_functor.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/word_count_functor.cpp (original)
+++ branches/release/libs/spirit/example/lex/word_count_functor.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -62,7 +62,7 @@
#include "example.hpp"
//[wcf_namespaces
-using namespace boost::spirit::lex;
+namespace lex = boost::spirit::lex;
//]
///////////////////////////////////////////////////////////////////////////////
@@ -90,7 +90,7 @@
example we use the Lexertl based lexer engine as the underlying lexer type.
*/
template <typename Lexer>
-struct word_count_tokens : lexer<Lexer>
+struct word_count_tokens : lex::lexer<Lexer>
{
word_count_tokens()
{
@@ -158,13 +158,13 @@
std::string str (read_from_file(1 == argc ? "word_count.input" : argv[1]));
// create the token definition instance needed to invoke the lexical analyzer
- word_count_tokens<lexertl::lexer<> > word_count_functor;
+ word_count_tokens<lex::lexertl::lexer<> > word_count_functor;
// tokenize the given string, the bound functor gets invoked for each of
// the matched tokens
char const* first = str.c_str();
char const* last = &first[str.size()];
- bool r = tokenize(first, last, word_count_functor,
+ bool r = lex::tokenize(first, last, word_count_functor,
boost::bind(counter(), _1, boost::ref(c), boost::ref(w), boost::ref(l)));
// print results
Modified: branches/release/libs/spirit/example/lex/word_count_lexer.cpp
==============================================================================
--- branches/release/libs/spirit/example/lex/word_count_lexer.cpp (original)
+++ branches/release/libs/spirit/example/lex/word_count_lexer.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -47,8 +47,7 @@
#include "example.hpp"
//[wcl_namespaces
-using namespace boost::spirit;
-using namespace boost::spirit::lex;
+namespace lex = boost::spirit::lex;
//]
///////////////////////////////////////////////////////////////////////////////
@@ -74,7 +73,7 @@
//[wcl_token_definition
template <typename Lexer>
-struct word_count_tokens : lexer<Lexer>
+struct word_count_tokens : lex::lexer<Lexer>
{
word_count_tokens()
: c(0), w(0), l(0)
@@ -95,7 +94,7 @@
}
std::size_t c, w, l;
- token_def<> word, eol, any;
+ lex::token_def<> word, eol, any;
};
//]
@@ -112,10 +111,12 @@
type and an iterator, both holding no lexer state, allowing for even more
aggressive optimizations. As a result the token instances contain the token
ids as the only data member.
->*/ typedef lexertl::token<char const*, lex::omit, boost::mpl::false_> token_type;
+>*/ typedef
+ lex::lexertl::token<char const*, lex::omit, boost::mpl::false_>
+ token_type;
/*< This defines the lexer type to use
->*/ typedef lexertl::actor_lexer<token_type> lexer_type;
+>*/ typedef lex::lexertl::actor_lexer<token_type> lexer_type;
/*< Create the lexer object instance needed to invoke the lexical analysis
>*/ word_count_tokens<lexer_type> word_count_lexer;
Modified: branches/release/libs/spirit/example/qi/CMakeLists.txt
==============================================================================
--- branches/release/libs/spirit/example/qi/CMakeLists.txt (original)
+++ branches/release/libs/spirit/example/qi/CMakeLists.txt 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -22,6 +22,8 @@
boost_add_executable( num_list2 num_list2.cpp )
boost_add_executable( num_list3 num_list3.cpp )
boost_add_executable( num_list4 num_list4.cpp )
+boost_add_executable( reorder_struct reorder_struct.cpp )
+boost_add_executable( parse_date parse_date.cpp )
boost_add_executable( calc1 calc1.cpp )
boost_add_executable( calc2 calc2.cpp )
Modified: branches/release/libs/spirit/example/qi/Jamfile
==============================================================================
--- branches/release/libs/spirit/example/qi/Jamfile (original)
+++ branches/release/libs/spirit/example/qi/Jamfile 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -23,31 +23,33 @@
exe num_list2 : num_list2.cpp ;
exe num_list3 : num_list3.cpp ;
exe num_list4 : num_list4.cpp ;
+exe reorder_struct : reorder_struct.cpp ;
+exe parse_date : parse_date.cpp ;
-exe calc1 : calc1.cpp ;
-exe calc2 : calc2.cpp ;
-exe calc2_ast : calc2_ast.cpp ;
-exe calc3 : calc3.cpp ;
+exe calculator1 : calc1.cpp ;
+exe calculator2 : calc2.cpp ;
+exe calculator2_ast : calc2_ast.cpp ;
+exe calculator3 : calc3.cpp ;
#exe calc3_lexer : calc3_lexer.cpp ;
-exe calc4 : calc4.cpp ;
-exe calc4_debug : calc4_debug.cpp ;
-exe calc5 : calc5.cpp ;
+exe calculator4 : calc4.cpp ;
+exe calculator4_debug : calc4_debug.cpp ;
+exe calculator5 : calc5.cpp ;
-exe calc6 :
+exe calculator6 :
calc6/calc6.cpp
calc6/calc6a.cpp
calc6/calc6b.cpp
calc6/calc6c.cpp
;
-exe calc7 :
+exe calculator7 :
calc7/calc7.cpp
calc7/calc7a.cpp
calc7/calc7b.cpp
calc7/calc7c.cpp
;
-exe mini_c :
+exe mini_c_interp :
mini_c/mini_c.cpp
mini_c/mini_ca.cpp
mini_c/mini_cb.cpp
Modified: branches/release/libs/spirit/example/qi/mini_c/mini_c.hpp
==============================================================================
--- branches/release/libs/spirit/example/qi/mini_c/mini_c.hpp (original)
+++ branches/release/libs/spirit/example/qi/mini_c/mini_c.hpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -26,7 +26,6 @@
using namespace boost::spirit;
using namespace boost::spirit::qi;
-using namespace boost::spirit::ascii;
///////////////////////////////////////////////////////////////////////////////
// The Virtual Machine
@@ -249,6 +248,8 @@
{
white_space() : white_space::base_type(start)
{
+ using boost::spirit::ascii::char_;
+
start =
space // tab/space/cr/lf
| "/*" >> *(char_ - "*/") >> "*/" // C-style comments
Modified: branches/release/libs/spirit/example/qi/porting_guide_qi.cpp
==============================================================================
--- branches/release/libs/spirit/example/qi/porting_guide_qi.cpp (original)
+++ branches/release/libs/spirit/example/qi/porting_guide_qi.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -20,7 +20,7 @@
template <typename Iterator>
struct roman : qi::grammar<Iterator, unsigned()>
{
- roman() : qi::grammar<Iterator, unsigned()>(first)
+ roman() : roman::base_type(first)
{
hundreds.add
("C" , 100)("CC" , 200)("CCC" , 300)("CD" , 400)("D" , 500)
@@ -44,9 +44,9 @@
}
qi::rule<Iterator, unsigned()> first;
- symbols<char, unsigned> hundreds;
- symbols<char, unsigned> tens;
- symbols<char, unsigned> ones;
+ qi::symbols<char, unsigned> hundreds;
+ qi::symbols<char, unsigned> tens;
+ qi::symbols<char, unsigned> ones;
};
//]
@@ -56,7 +56,7 @@
//[porting_guide_qi_parse
std::string input("1,1");
std::string::iterator it = input.begin();
- bool result = qi::parse(it, input.end(), int_);
+ bool result = qi::parse(it, input.end(), qi::int_);
if (result)
std::cout << "successful match!\n";
@@ -75,7 +75,7 @@
//[porting_guide_qi_phrase_parse
std::string input(" 1, 1");
std::string::iterator it = input.begin();
- bool result = qi::phrase_parse(it, input.end(), int_, ascii::space);
+ bool result = qi::phrase_parse(it, input.end(), qi::int_, ascii::space);
if (result)
std::cout << "successful match!\n";
Modified: branches/release/libs/spirit/example/qi/reference.cpp
==============================================================================
--- branches/release/libs/spirit/example/qi/reference.cpp (original)
+++ branches/release/libs/spirit/example/qi/reference.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -172,6 +172,30 @@
};
//]
+//[reference_test_bool_policy
+///////////////////////////////////////////////////////////////////////////////
+// These policies can be used to parse "eurt" (i.e. "true" spelled backwards)
+// as `false`
+///////////////////////////////////////////////////////////////////////////////
+struct backwards_bool_policies : boost::spirit::qi::bool_policies<>
+{
+ // we want to interpret a 'true' spelled backwards as 'false'
+ template <typename Iterator, typename Attribute>
+ static bool
+ parse_false(Iterator& first, Iterator const& last, Attribute& attr)
+ {
+ namespace qi = boost::spirit::qi;
+ if (qi::detail::string_parse("eurt", first, last, qi::unused))
+ {
+ namespace traits = boost::spirit::traits;
+ traits::assign_to(false, attr); // result is false
+ return true;
+ }
+ return false;
+ }
+};
+//]
+
int
main()
{
@@ -552,7 +576,7 @@
test_parser("-12345", int_);
//]
}
-
+
// real
{
//[reference_using_declarations_real
@@ -569,7 +593,26 @@
test_parser("123,456,789.01", ts_real);
//]
}
-
+
+ // bool_
+ {
+ //[reference_using_declarations_bool
+ using boost::spirit::qi::bool_;
+ using boost::spirit::qi::bool_parser;
+ //]
+
+ //[reference_bool
+ test_parser("true", bool_);
+ test_parser("false", bool_);
+ //]
+
+ //[reference_custom_bool
+ bool_parser<bool, backwards_bool_policies> backwards_bool;
+ test_parser("true", backwards_bool);
+ test_parser("eurt", backwards_bool);
+ //]
+ }
+
// sequence
{
//[reference_using_declarations_sequence
Modified: branches/release/libs/spirit/repository/doc/html/index.html
==============================================================================
--- branches/release/libs/spirit/repository/doc/html/index.html (original)
+++ branches/release/libs/spirit/repository/doc/html/index.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -34,7 +34,7 @@
<div><p class="copyright">Copyright © 2001-2009 Joel
de Guzman, Hartmut Kaiser</p></div>
<div><div class="legalnotice" title="Legal Notice">
-<a name="id633780"></a><p>
+<a name="id3124824"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
</p>
@@ -80,7 +80,7 @@
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: September 14, 2009 at 15:07:11 GMT</small></p></td>
+<td align="left"><p><small>Last revised: August 14, 2009 at 20:59:13 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
Modified: branches/release/libs/spirit/repository/doc/html/spirit_repository/karma_components/directives/karma_confix_generator.html
==============================================================================
--- branches/release/libs/spirit/repository/doc/html/spirit_repository/karma_components/directives/karma_confix_generator.html (original)
+++ branches/release/libs/spirit/repository/doc/html/spirit_repository/karma_components/directives/karma_confix_generator.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Confix Generator</a>
</h4></div></div></div>
<a name="spirit_repository.karma_components.directives.karma_confix_generator.description"></a><h6>
-<a name="id650657"></a>
+<a name="id3184629"></a>
<a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.description">Description</a>
</h6>
<p>
@@ -93,20 +93,20 @@
tag using a simple: <code class="computeroutput"><span class="identifier">ol</span><span class="special">[</span><span class="string">"Some text"</span><span class="special">]</span></code> (which results in <code class="computeroutput"><span class="special"><</span><span class="identifier">ol</span><span class="special">></span><span class="identifier">Some</span> <span class="identifier">text</span><span class="special"></</span><span class="identifier">ol</span><span class="special">></span></code>).
</p>
<a name="spirit_repository.karma_components.directives.karma_confix_generator.header"></a><h6>
-<a name="id651553"></a>
+<a name="id3185765"></a>
<a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/repository/home/karma/directive/confix.hpp>
</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">repository</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_confix</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
</pre>
<a name="spirit_repository.karma_components.directives.karma_confix_generator.synopsis"></a><h6>
-<a name="id651626"></a>
+<a name="id3185868"></a>
<a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="identifier">confix</span><span class="special">(</span><span class="identifier">prefix</span><span class="special">,</span> <span class="identifier">suffix</span><span class="special">)[</span><span class="identifier">subject</span><span class="special">]</span>
</pre>
<a name="spirit_repository.karma_components.directives.karma_confix_generator.parameters"></a><h6>
-<a name="id651674"></a>
+<a name="id3185937"></a>
<a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
@@ -175,7 +175,7 @@
All three parameters can be arbitrary complex generators themselves.
</p>
<a name="spirit_repository.karma_components.directives.karma_confix_generator.attribute"></a><h6>
-<a name="id651833"></a>
+<a name="id3186135"></a>
<a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.attribute">Attribute</a>
</h6>
<p>
@@ -202,7 +202,7 @@
</p></td></tr>
</table></div>
<a name="spirit_repository.karma_components.directives.karma_confix_generator.example"></a><h6>
-<a name="id652008"></a>
+<a name="id3186374"></a>
<a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.example">Example</a>
</h6>
<p>
@@ -211,7 +211,7 @@
styles and a function prototype (for the full example code see here: confix.cpp)
</p>
<a name="spirit_repository.karma_components.directives.karma_confix_generator.prerequisites"></a><h6>
-<a name="id652038"></a>
+<a name="id3186422"></a>
<a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.prerequisites">Prerequisites</a>
</h6>
<p>
@@ -249,7 +249,7 @@
<p>
</p>
<a name="spirit_repository.karma_components.directives.karma_confix_generator.generating_different_comment_styles"></a><h6>
-<a name="id652281"></a>
+<a name="id3186734"></a>
<a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.generating_different_comment_styles">Generating
Different Comment Styles</a>
</h6>
@@ -301,7 +301,7 @@
*/</span> </code>.
</p>
<a name="spirit_repository.karma_components.directives.karma_confix_generator.generating_a_function_prototype"></a><h6>
-<a name="id652583"></a>
+<a name="id3187117"></a>
<a class="link" href="karma_confix_generator.html#spirit_repository.karma_components.directives.karma_confix_generator.generating_a_function_prototype">Generating
a Function Prototype</a>
</h6>
Modified: branches/release/libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal/subrule.html
==============================================================================
--- branches/release/libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal/subrule.html (original)
+++ branches/release/libs/spirit/repository/doc/html/spirit_repository/karma_components/nonterminal/subrule.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
Karma subrules</a>
</h4></div></div></div>
<a name="spirit_repository.karma_components.nonterminal.subrule.description"></a><h6>
-<a name="id652916"></a>
+<a name="id3187545"></a>
<a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.description">Description</a>
</h6>
<p>
@@ -89,21 +89,21 @@
parts), whereas the rest can use rules and grammars.
</p>
<a name="spirit_repository.karma_components.nonterminal.subrule.header"></a><h6>
-<a name="id653178"></a>
+<a name="id3187893"></a>
<a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/repository/home/karma/nonterminal/subrule.hpp>
</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">repository</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">karma_subrule</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
</pre>
<a name="spirit_repository.karma_components.nonterminal.subrule.synopsis__declaration_"></a><h6>
-<a name="id653254"></a>
+<a name="id3187995"></a>
<a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.synopsis__declaration_">Synopsis
(declaration)</a>
</h6>
<pre class="programlisting"><span class="identifier">subrule</span><span class="special"><</span><span class="identifier">ID</span><span class="special">,</span> <span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">></span> <span class="identifier">sr</span><span class="special">(</span><span class="identifier">name</span><span class="special">);</span>
</pre>
<a name="spirit_repository.karma_components.nonterminal.subrule.parameters__declaration_"></a><h6>
-<a name="id653319"></a>
+<a name="id3188083"></a>
<a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.parameters__declaration_">Parameters
(declaration)</a>
</h6>
@@ -173,7 +173,7 @@
</tbody>
</table></div>
<a name="spirit_repository.karma_components.nonterminal.subrule.synopsis__usage_"></a><h6>
-<a name="id653448"></a>
+<a name="id3188243"></a>
<a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.synopsis__usage_">Synopsis
(usage)</a>
</h6>
@@ -202,7 +202,7 @@
<span class="special">)(</span><span class="identifier">a1</span><span class="special">,</span> <span class="identifier">a2</span><span class="special">,</span> <span class="special">...)</span> <span class="comment">// Arguments to group, i.e. to start subrule srA
</span></pre>
<a name="spirit_repository.karma_components.nonterminal.subrule.parameters__usage_"></a><h6>
-<a name="id653684"></a>
+<a name="id3188535"></a>
<a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.parameters__usage_">Parameters
(usage)</a>
</h6>
@@ -326,7 +326,7 @@
</tbody>
</table></div>
<a name="spirit_repository.karma_components.nonterminal.subrule.groups"></a><h6>
-<a name="id653998"></a>
+<a name="id3188914"></a>
<a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.groups">Groups</a>
</h6>
<p>
@@ -371,7 +371,7 @@
</span><span class="special">;</span>
</pre>
<a name="spirit_repository.karma_components.nonterminal.subrule.attributes"></a><h6>
-<a name="id654392"></a>
+<a name="id3189408"></a>
<a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.attributes">Attributes</a>
</h6>
<p>
@@ -400,7 +400,7 @@
</li>
</ul></div>
<a name="spirit_repository.karma_components.nonterminal.subrule.locals"></a><h6>
-<a name="id654465"></a>
+<a name="id3189517"></a>
<a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.locals">Locals</a>
</h6>
<p>
@@ -410,7 +410,7 @@
refer to the subrule's locals, if present.
</p>
<a name="spirit_repository.karma_components.nonterminal.subrule.example"></a><h6>
-<a name="id654501"></a>
+<a name="id3189567"></a>
<a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.example">Example</a>
</h6>
<p>
@@ -482,7 +482,7 @@
<a href="../../../../../example/karma/mini_xml_karma_sr.cpp" target="_top">../../example/karma/mini_xml_karma_sr.cpp</a>
</p>
<a name="spirit_repository.karma_components.nonterminal.subrule.performance"></a><h6>
-<a name="id656351"></a>
+<a name="id3190500"></a>
<a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.performance">Performance</a>
</h6>
<p>
@@ -493,7 +493,7 @@
subrules is very similar, so performance is very similar too).
</p>
<a name="spirit_repository.karma_components.nonterminal.subrule.notes"></a><h6>
-<a name="id656388"></a>
+<a name="id3190549"></a>
<a class="link" href="subrule.html#spirit_repository.karma_components.nonterminal.subrule.notes">Notes</a>
</h6>
<p>
Modified: branches/release/libs/spirit/repository/doc/html/spirit_repository/preface.html
==============================================================================
--- branches/release/libs/spirit/repository/doc/html/spirit_repository/preface.html (original)
+++ branches/release/libs/spirit/repository/doc/html/spirit_repository/preface.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,7 @@
<a name="spirit_repository.preface"></a><a class="link" href="preface.html" title="Preface">Preface</a>
</h2></div></div></div>
<a name="spirit_repository.preface.the_spirit_repository"></a><h4>
-<a name="id633810"></a>
+<a name="id3124865"></a>
<a class="link" href="preface.html#spirit_repository.preface.the_spirit_repository">The Spirit
Repository</a>
</h4>
@@ -77,7 +77,7 @@
core library.
</p>
<a name="spirit_repository.preface.how_to_use_this_manual"></a><h4>
-<a name="id633899"></a>
+<a name="id3127347"></a>
<a class="link" href="preface.html#spirit_repository.preface.how_to_use_this_manual">How to use
this manual</a>
</h4>
@@ -86,7 +86,7 @@
icons precede some text to indicate:
</p>
<div class="table">
-<a name="id633912"></a><p class="title"><b>Table 1. Icons</b></p>
+<a name="id3127367"></a><p class="title"><b>Table 1. Icons</b></p>
<div class="table-contents"><table class="table" summary="Icons">
<colgroup>
<col>
@@ -207,7 +207,7 @@
Tools</a>.
</p>
<a name="spirit_repository.preface.support"></a><h4>
-<a name="id634153"></a>
+<a name="id3123102"></a>
<a class="link" href="preface.html#spirit_repository.preface.support">Support</a>
</h4>
<p>
Modified: branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/confix.html
==============================================================================
--- branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/confix.html (original)
+++ branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/confix.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Qi Confix Parser Directive</a>
</h4></div></div></div>
<a name="spirit_repository.qi_components.directives.confix.description"></a><h6>
-<a name="id639049"></a>
+<a name="id3173646"></a>
<a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.description">Description</a>
</h6>
<p>
@@ -95,20 +95,20 @@
</p></td></tr>
</table></div>
<a name="spirit_repository.qi_components.directives.confix.header"></a><h6>
-<a name="id639817"></a>
+<a name="id3174604"></a>
<a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/repository/home/qi/directive/confix.hpp>
</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">repository</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_confix</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
</pre>
<a name="spirit_repository.qi_components.directives.confix.synopsis"></a><h6>
-<a name="id639895"></a>
+<a name="id3174704"></a>
<a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="identifier">confix</span><span class="special">(</span><span class="identifier">prefix</span><span class="special">,</span> <span class="identifier">suffix</span><span class="special">)[</span><span class="identifier">subject</span><span class="special">]</span>
</pre>
<a name="spirit_repository.qi_components.directives.confix.parameters"></a><h6>
-<a name="id639948"></a>
+<a name="id3174771"></a>
<a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
@@ -172,7 +172,7 @@
All three parameters can be arbitrarily complex parsers themselves.
</p>
<a name="spirit_repository.qi_components.directives.confix.attribute"></a><h6>
-<a name="id640089"></a>
+<a name="id3174935"></a>
<a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.attribute">Attribute</a>
</h6>
<p>
@@ -198,7 +198,7 @@
</p></td></tr>
</table></div>
<a name="spirit_repository.qi_components.directives.confix.example"></a><h6>
-<a name="id640327"></a>
+<a name="id3175247"></a>
<a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.example">Example</a>
</h6>
<p>
@@ -208,7 +208,7 @@
see confix.cpp)
</p>
<a name="spirit_repository.qi_components.directives.confix.prerequisites"></a><h6>
-<a name="id640362"></a>
+<a name="id3175294"></a>
<a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.prerequisites">Prerequisites</a>
</h6>
<p>
@@ -251,7 +251,7 @@
<p>
</p>
<a name="spirit_repository.qi_components.directives.confix.parsing_different_comment_styles"></a><h6>
-<a name="id640779"></a>
+<a name="id3175817"></a>
<a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.parsing_different_comment_styles">Parsing
Different Comment Styles</a>
</h6>
@@ -311,7 +311,7 @@
This is a comment */</span> </code>".
</p>
<a name="spirit_repository.qi_components.directives.confix.parsing_tagged_data"></a><h6>
-<a name="id642454"></a>
+<a name="id3176526"></a>
<a class="link" href="confix.html#spirit_repository.qi_components.directives.confix.parsing_tagged_data">Parsing
Tagged Data</a>
</h6>
Modified: branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/distinct.html
==============================================================================
--- branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/distinct.html (original)
+++ branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/directives/distinct.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Qi Distinct Parser Directive</a>
</h4></div></div></div>
<a name="spirit_repository.qi_components.directives.distinct.description"></a><h6>
-<a name="id642807"></a>
+<a name="id3176965"></a>
<a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.description">Description</a>
</h6>
<p>
@@ -144,20 +144,20 @@
above.
</p>
<a name="spirit_repository.qi_components.directives.distinct.header"></a><h6>
-<a name="id644044"></a>
+<a name="id3178526"></a>
<a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/repository/home/qi/directive/distinct.hpp>
</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">repository</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_distinct</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
</pre>
<a name="spirit_repository.qi_components.directives.distinct.synopsis"></a><h6>
-<a name="id644122"></a>
+<a name="id3178628"></a>
<a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="identifier">distinct</span><span class="special">(</span><span class="identifier">tail</span><span class="special">)[</span><span class="identifier">subject</span><span class="special">]</span>
</pre>
<a name="spirit_repository.qi_components.directives.distinct.parameters"></a><h6>
-<a name="id644166"></a>
+<a name="id3178684"></a>
<a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.parameters">Parameters</a>
</h6>
<div class="informaltable"><table class="table">
@@ -210,7 +210,7 @@
All two parameters can be arbitrary complex parsers themselves.
</p>
<a name="spirit_repository.qi_components.directives.distinct.attribute"></a><h6>
-<a name="id644270"></a>
+<a name="id3178801"></a>
<a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.attribute">Attribute</a>
</h6>
<p>
@@ -224,7 +224,7 @@
<pre class="programlisting"><span class="identifier">a</span><span class="special">:</span> <span class="identifier">A</span><span class="special">,</span> <span class="identifier">b</span><span class="special">:</span> <span class="identifier">B</span> <span class="special">--></span> <span class="identifier">distinct</span><span class="special">(</span><span class="identifier">b</span><span class="special">)[</span><span class="identifier">a</span><span class="special">]:</span> <span class="identifier">A</span>
</pre>
<a name="spirit_repository.qi_components.directives.distinct.example"></a><h6>
-<a name="id644396"></a>
+<a name="id3178953"></a>
<a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.example">Example</a>
</h6>
<p>
@@ -232,7 +232,7 @@
parser. distinct.cpp)
</p>
<a name="spirit_repository.qi_components.directives.distinct.prerequisites"></a><h6>
-<a name="id644428"></a>
+<a name="id3178997"></a>
<a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.prerequisites">Prerequisites</a>
</h6>
<p>
@@ -269,7 +269,7 @@
<p>
</p>
<a name="spirit_repository.qi_components.directives.distinct.using_the_distinct_directive_to_match_keywords"></a><h6>
-<a name="id644672"></a>
+<a name="id3179306"></a>
<a class="link" href="distinct.html#spirit_repository.qi_components.directives.distinct.using_the_distinct_directive_to_match_keywords">Using
The Distinct Directive to Match keywords</a>
</h6>
Modified: branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal/subrule.html
==============================================================================
--- branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal/subrule.html (original)
+++ branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/nonterminal/subrule.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Qi subrules</a>
</h4></div></div></div>
<a name="spirit_repository.qi_components.nonterminal.subrule.description"></a><h6>
-<a name="id645606"></a>
+<a name="id3180460"></a>
<a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.description">Description</a>
</h6>
<p>
@@ -101,21 +101,21 @@
most performance-critical parts), whereas the rest can use rules and grammars.
</p>
<a name="spirit_repository.qi_components.nonterminal.subrule.header"></a><h6>
-<a name="id645994"></a>
+<a name="id3180947"></a>
<a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/repository/home/qi/nonterminal/subrule.hpp>
</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">repository</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_subrule</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
</pre>
<a name="spirit_repository.qi_components.nonterminal.subrule.synopsis__declaration_"></a><h6>
-<a name="id646070"></a>
+<a name="id3181050"></a>
<a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.synopsis__declaration_">Synopsis
(declaration)</a>
</h6>
<pre class="programlisting"><span class="identifier">subrule</span><span class="special"><</span><span class="identifier">ID</span><span class="special">,</span> <span class="identifier">A1</span><span class="special">,</span> <span class="identifier">A2</span><span class="special">></span> <span class="identifier">sr</span><span class="special">(</span><span class="identifier">name</span><span class="special">);</span>
</pre>
<a name="spirit_repository.qi_components.nonterminal.subrule.parameters__declaration_"></a><h6>
-<a name="id646134"></a>
+<a name="id3181138"></a>
<a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.parameters__declaration_">Parameters
(declaration)</a>
</h6>
@@ -185,7 +185,7 @@
</tbody>
</table></div>
<a name="spirit_repository.qi_components.nonterminal.subrule.synopsis__usage_"></a><h6>
-<a name="id646264"></a>
+<a name="id3181298"></a>
<a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.synopsis__usage_">Synopsis
(usage)</a>
</h6>
@@ -214,7 +214,7 @@
<span class="special">)(</span><span class="identifier">a1</span><span class="special">,</span> <span class="identifier">a2</span><span class="special">,</span> <span class="special">...)</span> <span class="comment">// Arguments to group, i.e. to start subrule srA
</span></pre>
<a name="spirit_repository.qi_components.nonterminal.subrule.parameters__usage_"></a><h6>
-<a name="id646499"></a>
+<a name="id3181592"></a>
<a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.parameters__usage_">Parameters
(usage)</a>
</h6>
@@ -338,7 +338,7 @@
</tbody>
</table></div>
<a name="spirit_repository.qi_components.nonterminal.subrule.groups"></a><h6>
-<a name="id647921"></a>
+<a name="id3181968"></a>
<a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.groups">Groups</a>
</h6>
<p>
@@ -383,7 +383,7 @@
</span><span class="special">;</span>
</pre>
<a name="spirit_repository.qi_components.nonterminal.subrule.attributes"></a><h6>
-<a name="id648322"></a>
+<a name="id3182471"></a>
<a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.attributes">Attributes</a>
</h6>
<p>
@@ -411,7 +411,7 @@
</li>
</ul></div>
<a name="spirit_repository.qi_components.nonterminal.subrule.locals"></a><h6>
-<a name="id648398"></a>
+<a name="id3182580"></a>
<a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.locals">Locals</a>
</h6>
<p>
@@ -421,7 +421,7 @@
refer to the subrule's locals, if present.
</p>
<a name="spirit_repository.qi_components.nonterminal.subrule.example"></a><h6>
-<a name="id648434"></a>
+<a name="id3182630"></a>
<a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.example">Example</a>
</h6>
<p>
@@ -521,7 +521,7 @@
<a href="../../../../../example/qi/mini_xml2_sr.cpp" target="_top">../../example/qi/mini_xml2_sr.cpp</a>
</p>
<a name="spirit_repository.qi_components.nonterminal.subrule.performance"></a><h6>
-<a name="id649704"></a>
+<a name="id3184181"></a>
<a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.performance">Performance</a>
</h6>
<p>
@@ -529,7 +529,7 @@
examples to subrules, with various compilers.
</p>
<div class="table">
-<a name="id649720"></a><p class="title"><b>Table 2. Subrules performance</b></p>
+<a name="id3184201"></a><p class="title"><b>Table 2. Subrules performance</b></p>
<div class="table-contents"><table class="table" summary="Subrules performance">
<colgroup>
<col>
@@ -776,7 +776,7 @@
</li>
</ul></div>
<a name="spirit_repository.qi_components.nonterminal.subrule.notes"></a><h6>
-<a name="id650605"></a>
+<a name="id3184547"></a>
<a class="link" href="subrule.html#spirit_repository.qi_components.nonterminal.subrule.notes">Notes</a>
</h6>
<p>
Modified: branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive/flush_multi_pass.html
==============================================================================
--- branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive/flush_multi_pass.html (original)
+++ branches/release/libs/spirit/repository/doc/html/spirit_repository/qi_components/primitive/flush_multi_pass.html 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -28,7 +28,7 @@
Qi flush_multi_pass parser</a>
</h4></div></div></div>
<a name="spirit_repository.qi_components.primitive.flush_multi_pass.description"></a><h6>
-<a name="id634230"></a>
+<a name="id3123216"></a>
<a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.description">Description</a>
</h6>
<p>
@@ -53,20 +53,20 @@
<code class="computeroutput"><span class="identifier">eps</span></code>).
</p>
<a name="spirit_repository.qi_components.primitive.flush_multi_pass.header"></a><h6>
-<a name="id634338"></a>
+<a name="id3123386"></a>
<a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.header">Header</a>
</h6>
<pre class="programlisting"><span class="comment">// forwards to <boost/spirit/repository/home/qi/primitive/flush_multi_pass.hpp>
</span><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">spirit</span><span class="special">/</span><span class="identifier">repository</span><span class="special">/</span><span class="identifier">include</span><span class="special">/</span><span class="identifier">qi_flush_multi_pass</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
</pre>
<a name="spirit_repository.qi_components.primitive.flush_multi_pass.synopsis"></a><h6>
-<a name="id634411"></a>
+<a name="id3172292"></a>
<a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.synopsis">Synopsis</a>
</h6>
<pre class="programlisting"><span class="identifier">flush_multi_pass</span>
</pre>
<a name="spirit_repository.qi_components.primitive.flush_multi_pass.parameters"></a><h6>
-<a name="id634433"></a>
+<a name="id3172327"></a>
<a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.parameters">Parameters</a>
</h6>
<p>
@@ -74,7 +74,7 @@
not require any parameters.
</p>
<a name="spirit_repository.qi_components.primitive.flush_multi_pass.attribute"></a><h6>
-<a name="id634457"></a>
+<a name="id3172365"></a>
<a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.attribute">Attribute</a>
</h6>
<p>
@@ -84,7 +84,7 @@
<pre class="programlisting"><span class="identifier">flush_multi_pass</span> <span class="special">--></span> <span class="identifier">unused</span>
</pre>
<a name="spirit_repository.qi_components.primitive.flush_multi_pass.example"></a><h6>
-<a name="id634506"></a>
+<a name="id3172437"></a>
<a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.example">Example</a>
</h6>
<p>
@@ -96,7 +96,7 @@
a function prototype (for the full example code see here: flush_multi_pass.cpp)
</p>
<a name="spirit_repository.qi_components.primitive.flush_multi_pass.prerequisites"></a><h6>
-<a name="id634538"></a>
+<a name="id3172486"></a>
<a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.prerequisites">Prerequisites</a>
</h6>
<p>
@@ -133,7 +133,7 @@
<p>
</p>
<a name="spirit_repository.qi_components.primitive.flush_multi_pass.clearing_the_internal_buffer"></a><h6>
-<a name="id634754"></a>
+<a name="id3172763"></a>
<a class="link" href="flush_multi_pass.html#spirit_repository.qi_components.primitive.flush_multi_pass.clearing_the_internal_buffer">Clearing
the internal buffer</a>
</h6>
Modified: branches/release/libs/spirit/repository/test/karma/subrule.cpp
==============================================================================
--- branches/release/libs/spirit/repository/test/karma/subrule.cpp (original)
+++ branches/release/libs/spirit/repository/test/karma/subrule.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -31,7 +31,7 @@
using namespace boost;
using namespace boost::spirit;
using namespace boost::spirit::karma;
- using namespace boost::spirit::ascii;
+// using namespace boost::spirit::ascii;
using boost::spirit::repository::karma::subrule;
typedef spirit_test::output_iterator<char>::type outiter_type;
Modified: branches/release/libs/spirit/test/CMakeLists.txt
==============================================================================
--- branches/release/libs/spirit/test/CMakeLists.txt (original)
+++ branches/release/libs/spirit/test/CMakeLists.txt 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -22,8 +22,10 @@
boost_test_run(qi_actions qi/actions.cpp COMPILE_FLAGS ${test_compile_flags} BOOST_LIB spirit COMPILE_FLAGS ${test_compile_flags} )
boost_test_run(qi_alternative qi/alternative.cpp COMPILE_FLAGS ${test_compile_flags})
boost_test_run(qi_attr qi/attr.cpp COMPILE_FLAGS ${test_compile_flags})
+boost_test_run(qi_attribute qi/attribute.cpp COMPILE_FLAGS ${test_compile_flags})
boost_test_run(qi_and_predicate qi/and_predicate.cpp COMPILE_FLAGS ${test_compile_flags})
boost_test_run(qi_binary qi/binary.cpp COMPILE_FLAGS ${test_compile_flags})
+boost_test_run(qi_bool qi/bool.cpp COMPILE_FLAGS ${test_compile_flags})
boost_test_run(qi_char qi/char.cpp COMPILE_FLAGS ${test_compile_flags})
boost_test_run(qi_char_class qi/char_class.cpp COMPILE_FLAGS ${test_compile_flags})
boost_test_run(qi_difference qi/difference.cpp COMPILE_FLAGS ${test_compile_flags})
@@ -65,7 +67,9 @@
boost_test_run(karma_actions karma/actions.cpp COMPILE_FLAGS ${test_compile_flags})
boost_test_run(karma_and_predicate karma/and_predicate.cpp COMPILE_FLAGS ${test_compile_flags})
boost_test_run(karma_alternative karma/alternative.cpp COMPILE_FLAGS ${test_compile_flags})
+boost_test_run(karma_attribute karma/attribute.cpp COMPILE_FLAGS ${test_compile_flags})
boost_test_run(karma_binary karma/binary.cpp COMPILE_FLAGS ${test_compile_flags})
+boost_test_run(karma_bool karma/bool.cpp COMPILE_FLAGS ${test_compile_flags})
boost_test_run(karma_buffer karma/buffer.cpp COMPILE_FLAGS ${test_compile_flags})
boost_test_run(karma_case_handling karma/case_handling.cpp COMPILE_FLAGS ${test_compile_flags})
boost_test_run(karma_center_alignment karma/center_alignment.cpp COMPILE_FLAGS ${test_compile_flags})
Modified: branches/release/libs/spirit/test/Jamfile
==============================================================================
--- branches/release/libs/spirit/test/Jamfile (original)
+++ branches/release/libs/spirit/test/Jamfile 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -29,8 +29,10 @@
[ run qi/actions.cpp : : : : ]
[ run qi/alternative.cpp : : : : ]
[ run qi/attr.cpp : : : : ]
+ [ run qi/attribute.cpp : : : : ]
[ run qi/and_predicate.cpp : : : : ]
[ run qi/binary.cpp : : : : ]
+ [ run qi/bool.cpp : : : : ]
[ run qi/char.cpp : : : : ]
[ run qi/char_class.cpp : : : : ]
#[ run qi/debug.cpp : : : : ]
@@ -70,7 +72,9 @@
[ run karma/actions.cpp : : : : karma_actions ]
[ run karma/and_predicate.cpp : : : : karma_and_predicate ]
[ run karma/alternative.cpp : : : : karma_alternative ]
+ [ run karma/attribute.cpp : : : : karma_attribute ]
[ run karma/binary.cpp : : : : karma_binary ]
+ [ run karma/bool.cpp : : : : karma_bool ]
[ run karma/buffer.cpp : : : : karma_buffer ]
[ run karma/case_handling.cpp : : : : ]
[ run karma/center_alignment.cpp : : : : ]
@@ -123,6 +127,7 @@
[ run lex/regression002.cpp : : : : lex_regression002 ]
[ run lex/regression003_generate.cpp : $(LEX_DIR)/matlib_static.h : : : lex_regression003_generate ]
[ run lex/regression003.cpp : : : <dependency>.//lex_regression003_generate : lex_regression003 ]
+ [ run lex/regression004.cpp : : : : lex_regression004 ]
;
Modified: branches/release/libs/spirit/test/karma/alternative.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/alternative.cpp (original)
+++ branches/release/libs/spirit/test/karma/alternative.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -79,6 +79,14 @@
BOOST_TEST(test_delimited("c ", int_ | char_ | lit('a'), v, char_(' ')));
}
+// {
+// variant<int, std::string> v(10);
+// BOOST_TEST(test("10", int_ | +char_, v));
+//
+// v = "abc";
+// BOOST_TEST(test("abc", int_ | +char_, v));
+// }
+
{
// if nothing matches, the first explicit alternative will be chosen
variant<double, char const*> v (10.0);
@@ -121,6 +129,15 @@
BOOST_TEST(test("[5, 5, 5]", '[' << (int_ % ", ") << ']' | "[]", v));
}
+ {
+ boost::optional<int> v;
+ BOOST_TEST(test("error", int_ | "error" << omit[-int_], v));
+ BOOST_TEST(test("error", int_ | "error" << omit[int_], v));
+ v = 1;
+ BOOST_TEST(test("1", int_ | "error" << omit[-int_], v));
+ BOOST_TEST(test("1", int_ | "error" << omit[int_], v));
+ }
+
return boost::report_errors();
}
Modified: branches/release/libs/spirit/test/karma/binary.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/binary.cpp (original)
+++ branches/release/libs/spirit/test/karma/binary.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -8,6 +8,11 @@
#include <boost/spirit/include/karma_binary.hpp>
#include <boost/spirit/include/karma_generate.hpp>
+#include <boost/spirit/include/karma_phoenix_attributes.hpp>
+
+#include <boost/spirit/include/phoenix_core.hpp>
+#include <boost/spirit/include/phoenix_operator.hpp>
+#include <boost/spirit/include/phoenix_statement.hpp>
#include "test.hpp"
@@ -122,5 +127,129 @@
#endif
}
+ { // test native endian binaries
+ boost::optional<boost::uint8_t> v8;
+ boost::optional<boost::uint16_t> v16;
+ boost::optional<boost::uint32_t> v32;
+
+#ifdef BOOST_LITTLE_ENDIAN
+
+ BOOST_TEST(!binary_test("", 1, byte_, v8));
+ BOOST_TEST(!binary_test("", 2, word, v16));
+ BOOST_TEST(!binary_test("", 4, dword, v32));
+#ifdef BOOST_HAS_LONG_LONG
+ boost::optional<boost::uint64_t> v64;
+ BOOST_TEST(!binary_test("", 8, qword, v64));
+#endif
+
+#else // BOOST_LITTLE_ENDIAN
+
+ BOOST_TEST(!binary_test("", 1, byte_, v8));
+ BOOST_TEST(!binary_test("", 2, word, v16));
+ BOOST_TEST(!binary_test("", 4, dword, v32));
+#ifdef BOOST_HAS_LONG_LONG
+ boost::optional<boost::uint64_t> v64;
+ BOOST_TEST(!binary_test("", 8, qword, v64));
+#endif
+
+#endif
+ }
+
+ { // test optional attributes
+
+#ifdef BOOST_LITTLE_ENDIAN
+ boost::optional<boost::uint8_t> v8 (0x01);
+ BOOST_TEST(binary_test("\x01", 1, byte_, v8));
+ boost::optional<boost::uint16_t> v16 (0x0201);
+ BOOST_TEST(binary_test("\x01\x02", 2, word, v16));
+ boost::optional<boost::uint32_t> v32 (0x04030201);
+ BOOST_TEST(binary_test("\x01\x02\x03\x04", 4, dword, v32));
+#ifdef BOOST_HAS_LONG_LONG
+ boost::optional<boost::uint64_t> v64 (0x0807060504030201LL);
+ BOOST_TEST(binary_test("\x01\x02\x03\x04\x05\x06\x07\x08", 8, qword, v64));
+#endif
+
+#else // BOOST_LITTLE_ENDIAN
+
+ boost::optional<boost::uint8_t> v8 (0x01);
+ BOOST_TEST(!binary_test("\x01", 1, byte_, v8));
+ boost::optional<boost::uint16_t> v16 (0x0102);
+ BOOST_TEST(!binary_test("\x01\x02", 2, word, v16));
+ boost::optional<boost::uint32_t> v32 (0x01020304);
+ BOOST_TEST(!binary_test("\x01\x02\x03\x04", 4, dword, v32));
+#ifdef BOOST_HAS_LONG_LONG
+ boost::optional<boost::uint64_t> v64 (0x0102030405060708LL);
+ BOOST_TEST(!binary_test("\x01\x02\x03\x04\x05\x06\x07\x08", 8, qword, v64));
+#endif
+
+#endif
+ }
+
+ { // test Phoenix expression attributes, only supported if
+ // karma_phoenix_attributes.hpp is included
+ namespace phoenix = boost::phoenix;
+
+#ifdef BOOST_LITTLE_ENDIAN
+ BOOST_TEST(binary_test("\x01", 1, byte_, phoenix::val(0x01)));
+ BOOST_TEST(binary_test("\x01\0x02", 2, byte_, phoenix::val(0x0201)));
+ BOOST_TEST(binary_test("\x01\x02\x03\x04", 4, dword,
+ phoenix::val(0x04030201)));
+
+ boost::uint8_t v8 (0x01);
+ BOOST_TEST(binary_test("\x01", 1, byte_, phoenix::ref(v8)));
+ BOOST_TEST(binary_test("\x02", 1, byte_, ++phoenix::ref(v8)));
+
+ boost::uint16_t v16 (0x0201);
+ BOOST_TEST(binary_test("\x01\x02", 2, word, phoenix::ref(v16)));
+ BOOST_TEST(binary_test("\x02\x02", 2, word, ++phoenix::ref(v16)));
+
+ boost::uint32_t v32 (0x04030201);
+ BOOST_TEST(binary_test("\x01\x02\x03\x04", 4, dword, phoenix::ref(v32)));
+ BOOST_TEST(binary_test("\x02\x02\x03\x04", 4, dword, ++phoenix::ref(v32)));
+
+#ifdef BOOST_HAS_LONG_LONG
+ BOOST_TEST(binary_test("\x01\x02\x03\x04\x05\x06\x07\x08", 8, qword,
+ phoenix::val(0x0807060504030201LL)));
+
+ boost::uint64_t v64 (0x0807060504030201LL);
+ BOOST_TEST(binary_test("\x01\x02\x03\x04\x05\x06\x07\x08", 8, qword,
+ phoenix::ref(v64)));
+ BOOST_TEST(binary_test("\x02\x02\x03\x04\x05\x06\x07\x08", 8, qword,
+ ++phoenix::ref(v64)));
+#endif
+
+#else // BOOST_LITTLE_ENDIAN
+
+ BOOST_TEST(binary_test("\x01", 1, byte_, phoenix::val(0x01)));
+ BOOST_TEST(binary_test("\x01\x02", 2, byte_, phoenix::val(0x0102)));
+ BOOST_TEST(binary_test("\x01\x02\x03\x04", 4, dword,
+ phoenix::val(0x01020304)));
+
+ boost::uint8_t v8 (0x01);
+ BOOST_TEST(binary_test("\x01", 1, byte_, phoenix::ref(v8)));
+ BOOST_TEST(binary_test("\x02", 1, byte_, ++phoenix::ref(v8)));
+
+ boost::uint16_t v16 (0x0102);
+ BOOST_TEST(binary_test("\x01\x02", 2, word, phoenix::ref(v16)));
+ BOOST_TEST(binary_test("\x01\x03", 2, word, ++phoenix::ref(v16)));
+
+ boost::uint32_t v32 (0x01020304);
+ BOOST_TEST(binary_test("\x01\x02\x03\x04", 4, dword, phoenix::ref(v32)));
+ BOOST_TEST(binary_test("\x01\x02\x03\x05", 4, dword, ++phoenix::ref(v32)));
+
+#ifdef BOOST_HAS_LONG_LONG
+ BOOST_TEST(binary_test("\x01\x02\x03\x04\x05\x06\x07\x08", 8, qword,
+ phoenix::val(0x0102030405060708LL)));
+
+ boost::uint64_t v64 (0x0102030405060708LL);
+ BOOST_TEST(binary_test("\x01\x02\x03\x04\x05\x06\x07\x08", 8, qword,
+ phoenix::ref(v64)));
+ BOOST_TEST(binary_test("\x01\x02\x03\x04\x05\x06\x07\x09", 8, qword,
+ ++phoenix::ref(v64)));
+#endif
+
+#endif
+ }
+
return boost::report_errors();
}
Modified: branches/release/libs/spirit/test/karma/char.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/char.cpp (original)
+++ branches/release/libs/spirit/test/karma/char.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -11,6 +11,7 @@
#include <boost/spirit/include/karma_char.hpp>
#include <boost/spirit/include/karma_generate.hpp>
#include <boost/spirit/include/karma_action.hpp>
+#include <boost/spirit/include/karma_phoenix_attributes.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
@@ -252,5 +253,48 @@
BOOST_TEST((!test(L"", wide::char_(val(L'y')), L'x')));
}
+ // we can pass optionals as attributes to any generator
+ {
+ namespace ascii = boost::spirit::ascii;
+ namespace wide = boost::spirit::standard_wide;
+
+ boost::optional<char> v;
+ boost::optional<wchar_t> w;
+
+ BOOST_TEST(!test("", ascii::char_, v));
+ BOOST_TEST(!test(L"", wide::char_, w));
+
+ BOOST_TEST(!test("", ascii::char_('x'), v));
+ BOOST_TEST(!test(L"", wide::char_(L'x'), w));
+ }
+
+ {
+ namespace ascii = boost::spirit::ascii;
+ namespace wide = boost::spirit::standard_wide;
+
+ boost::optional<char> v ('x');
+ boost::optional<wchar_t> w (L'x');
+
+ BOOST_TEST(test("x", ascii::char_, v));
+ BOOST_TEST(test(L"x", wide::char_, w));
+ BOOST_TEST(test("x", ascii::char_('x'), v));
+ BOOST_TEST(test(L"x", wide::char_(L'x'), w));
+ BOOST_TEST(!test("", ascii::char_('y'), v));
+ BOOST_TEST(!test(L"", wide::char_(L'y'), w));
+ }
+
+ // yes, we can use phoenix expressions as attributes as well
+ // but only if we include karma_phoenix_attributes.hpp
+ {
+ namespace ascii = boost::spirit::ascii;
+ namespace phoenix = boost::phoenix;
+
+ BOOST_TEST(test("x", ascii::char_, phoenix::val('x')));
+
+ char c = 'x';
+ BOOST_TEST(test("x", ascii::char_, phoenix::ref(c)));
+ BOOST_TEST(test("y", ascii::char_, ++phoenix::ref(c)));
+ }
+
return boost::report_errors();
}
Modified: branches/release/libs/spirit/test/karma/delimiter.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/delimiter.cpp (original)
+++ branches/release/libs/spirit/test/karma/delimiter.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -12,6 +12,8 @@
#include <boost/spirit/include/karma_generate.hpp>
#include <boost/spirit/include/karma_directive.hpp>
#include <boost/spirit/include/karma_operator.hpp>
+#include <boost/spirit/include/karma_nonterminal.hpp>
+#include <boost/spirit/include/karma_string.hpp>
#include "test.hpp"
@@ -62,5 +64,11 @@
verbatim[delimit[char_('a') << 'b']], char_('*')));
}
+ {
+ karma::rule<output_iterator<char>::type, BOOST_TYPEOF(", ")> r = "abc";
+ BOOST_TEST(test("abc, ", delimit(", ")[r]));
+ }
+
return boost::report_errors();
}
+
Modified: branches/release/libs/spirit/test/karma/format_manip.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/format_manip.cpp (original)
+++ branches/release/libs/spirit/test/karma/format_manip.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -49,7 +49,6 @@
{
using namespace boost::spirit;
using namespace boost::spirit::ascii;
- using namespace boost::spirit::karma;
namespace fusion = boost::fusion;
using namespace boost::phoenix;
@@ -62,16 +61,16 @@
char_[_1 = val('a')]
));
BOOST_TEST(test( "a",
- format(char_[_1 = val('a')])
+ karma::format(char_[_1 = val('a')])
));
BOOST_TEST(test( "a ",
- format_delimited(char_[_1 = val('a')], space)
+ karma::format_delimited(char_[_1 = val('a')], space)
));
BOOST_TEST(test( "a",
- format(char_, 'a')
+ karma::format(char_, 'a')
));
BOOST_TEST(test( "a ",
- format_delimited(char_, space, 'a')
+ karma::format_delimited(char_, space, 'a')
));
}
@@ -80,19 +79,19 @@
char_[_1 = val('a')] << char_[_1 = val('b')]
));
BOOST_TEST(test( "ab",
- format(char_[_1 = val('a')] << char_[_1 = val('b')])
+ karma::format(char_[_1 = val('a')] << char_[_1 = val('b')])
));
BOOST_TEST(test( "a b ",
- format_delimited(char_[_1 = val('a')] << char_[_1 = val('b')], space)
+ karma::format_delimited(char_[_1 = val('a')] << char_[_1 = val('b')], space)
));
fusion::vector<char, char> t('a', 'b');
BOOST_TEST(test( "ab",
- format(char_ << char_, t)
+ karma::format(char_ << char_, t)
));
BOOST_TEST(test( "a b ",
- format_delimited(char_ << char_, space, t)
+ karma::format_delimited(char_ << char_, space, t)
));
}
@@ -101,19 +100,19 @@
char_[_1 = 'a'] << char_[_1 = 'b'] << char_[_1 = 'c']
));
BOOST_TEST(test( "abc",
- format(char_('a') << char_('b') << char_('c'))
+ karma::format(char_('a') << char_('b') << char_('c'))
));
BOOST_TEST(test( "a b c ",
- format_delimited(char_('a') << char_('b') << char_('c'), space)
+ karma::format_delimited(char_('a') << char_('b') << char_('c'), space)
));
fusion::vector<char, char, char> t('a', 'b', 'c');
BOOST_TEST(test( "abc",
- format(char_ << char_ << char_, t)
+ karma::format(char_ << char_ << char_, t)
));
BOOST_TEST(test( "a b c ",
- format_delimited(char_ << char_ << char_, space, t)
+ karma::format_delimited(char_ << char_ << char_, space, t)
));
}
@@ -125,10 +124,10 @@
fusion::vector<char, int> t('a', 2);
BOOST_TEST(test( "a2",
- format(char_ << int_, t)
+ karma::format(char_ << int_, t)
));
BOOST_TEST(test( "a 2 ",
- format_delimited(char_ << int_, space, t)
+ karma::format_delimited(char_ << int_, space, t)
));
}
@@ -143,10 +142,10 @@
(*char_)[_1 = v]
));
BOOST_TEST(test( "abc",
- format(*char_, v)
+ karma::format(*char_, v)
));
BOOST_TEST(test( "a b c ",
- format_delimited(*char_, space, v)
+ karma::format_delimited(*char_, space, v)
));
// output a comma separated list of vector elements
@@ -154,16 +153,16 @@
(char_ % lit(", "))[_0 = fusion::make_single_view(v)]
));
BOOST_TEST(test( "a, b, c",
- format((char_ % lit(", "))[_0 = fusion::make_single_view(v)])
+ karma::format((char_ % lit(", "))[_0 = fusion::make_single_view(v)])
));
BOOST_TEST(test( "a , b , c ",
- format_delimited((char_ % ',')[_0 = fusion::make_single_view(v)], space)
+ karma::format_delimited((char_ % ',')[_0 = fusion::make_single_view(v)], space)
));
BOOST_TEST(test( "a,b,c",
- format(char_ % ',', v)
+ karma::format(char_ % ',', v)
));
BOOST_TEST(test( "a , b , c ",
- format_delimited(char_ % ',', space, v)
+ karma::format_delimited(char_ % ',', space, v)
));
// output all elements of a list
@@ -174,16 +173,16 @@
// (*char_)[_1 = l]
// ));
// BOOST_TEST(test( "abc",
-// format((*char_)[_1 = l])
+// karma::format((*char_)[_1 = l])
// ));
// BOOST_TEST(test( "a b c ",
-// format_delimited((*char_)[_1 = l], space)
+// karma::format_delimited((*char_)[_1 = l], space)
// ));
BOOST_TEST(test( "abc",
- format(*char_, l)
+ karma::format(*char_, l)
));
BOOST_TEST(test( "a b c ",
- format_delimited(*char_, space, l)
+ karma::format_delimited(*char_, space, l)
));
}
Modified: branches/release/libs/spirit/test/karma/format_manip_attr.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/format_manip_attr.cpp (original)
+++ branches/release/libs/spirit/test/karma/format_manip_attr.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -18,7 +18,9 @@
#include "test_manip_attr.hpp"
-using namespace spirit_test;
+using spirit_test::test;
+using spirit_test::test_delimited;
+using spirit_test::test_predelimited;
///////////////////////////////////////////////////////////////////////////////
int
Deleted: branches/release/libs/spirit/test/karma/functor.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/functor.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
+++ (empty file)
@@ -1,60 +0,0 @@
-/*=============================================================================
- Copyright (c) 2001-2007 Joel de Guzman
- Copyright (c) 2001-2009 Hartmut Kaiser
-
- Distributed under the Boost Software License, Version 1.0. (See accompanying
- file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-=============================================================================*/
-
-#include <boost/config/warning_disable.hpp>
-#include <boost/detail/lightweight_test.hpp>
-#include <boost/spirit/include/karma_char.hpp>
-#include <boost/spirit/include/karma_auxiliary.hpp>
-#include <boost/spirit/include/karma_action.hpp>
-#include <boost/spirit/include/support_argument.hpp>
-#include <boost/spirit/include/phoenix_core.hpp>
-#include <boost/spirit/include/phoenix_operator.hpp>
-
-#include <iostream>
-#include "test.hpp"
-
-///////////////////////////////////////////////////////////////////////////////
-struct number_generator : public boost::spirit::karma::functor_base
-{
- template <typename Context>
- struct apply
- {
- typedef int type;
- };
-
- template <typename Parameter, typename Context, typename OutputIterator>
- bool operator()(Parameter v, Context& ctx, OutputIterator& sink) const
- {
- char ch = v % 10 + '0';
- v /= 10;
-
- if (0 != v)
- (*this)(v, ctx, sink);
-
- *sink = ch;
- ++sink;
- return true;
- }
-};
-
-boost::spirit::karma::functor_generator<number_generator> number;
-
-///////////////////////////////////////////////////////////////////////////////
-int main()
-{
- using spirit_test::test;
- using namespace boost::spirit;
- using namespace boost::spirit::karma;
-
- {
- BOOST_TEST(test("0", number));
- BOOST_TEST(test("1234", number, 1234));
- }
-
- return boost::report_errors();
-}
Modified: branches/release/libs/spirit/test/karma/grammar.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/grammar.cpp (original)
+++ branches/release/libs/spirit/test/karma/grammar.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -21,12 +21,12 @@
#include "test.hpp"
using namespace spirit_test;
-using namespace boost::spirit::karma;
+using namespace boost::spirit;
using namespace boost::spirit::ascii;
typedef spirit_test::output_iterator<char>::type outiter_type;
-struct num_list : grammar<outiter_type, space_type>
+struct num_list : karma::grammar<outiter_type, space_type>
{
num_list() : num_list::base_type(start)
{
@@ -37,7 +37,7 @@
start = num1 << ',' << num2 << ',' << num3;
}
- rule<outiter_type, space_type> start, num1, num2, num3;
+ karma::rule<outiter_type, space_type> start, num1, num2, num3;
};
int
Modified: branches/release/libs/spirit/test/karma/grammar_fail.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/grammar_fail.cpp (original)
+++ branches/release/libs/spirit/test/karma/grammar_fail.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -17,19 +17,18 @@
#include "test.hpp"
using namespace boost::spirit;
-using namespace boost::spirit::karma;
using namespace boost::spirit::ascii;
typedef spirit_test::output_iterator<char>::type outiter_type;
-struct num_list : grammar<outiter_type, rule<outiter_type> >
+struct num_list : karma::grammar<outiter_type, karma::rule<outiter_type> >
{
num_list() : num_list::base_type(start)
{
start = int_(1) << ',' << int_(0);
}
- rule<outiter_type, rule<outiter_type> > start;
+ karma::rule<outiter_type, karma::rule<outiter_type> > start;
};
// this test must fail compiling as the rule is used with an incompatible
Modified: branches/release/libs/spirit/test/karma/int_numerics.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/int_numerics.cpp (original)
+++ branches/release/libs/spirit/test/karma/int_numerics.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -21,6 +21,7 @@
#include <boost/spirit/include/karma_numeric.hpp>
#include <boost/spirit/include/karma_directive.hpp>
#include <boost/spirit/include/karma_action.hpp>
+#include <boost/spirit/include/karma_phoenix_attributes.hpp>
#include <limits>
#include "test.hpp"
@@ -78,6 +79,28 @@
// action tests
BOOST_TEST(test(expected_maxval, gen[_1 = val(maxval)]));
BOOST_TEST(test(expected_minval, gen[_1 = val(minval)]));
+
+ // optional tests
+ boost::optional<T> optmin, optmax(maxval);
+
+ BOOST_TEST(!test("", gen, optmin));
+ BOOST_TEST(!test("", gen(minval), optmin));
+
+ optmin = minval;
+ BOOST_TEST(test(expected_minval, gen, optmin));
+ BOOST_TEST(test(expected_maxval, gen, optmax));
+ BOOST_TEST(test(expected_minval, gen(minval), optmin));
+ BOOST_TEST(test(expected_maxval, gen(maxval), optmax));
+
+ // Phoenix expression tests (only supported while including
+ // karma_phoenix_attributes.hpp
+ namespace phoenix = boost::phoenix;
+
+ BOOST_TEST(test("1", gen, phoenix::val(1)));
+
+ T val = 1;
+ BOOST_TEST(test("1", gen, phoenix::ref(val)));
+ BOOST_TEST(test("2", gen, ++phoenix::ref(val)));
}
};
Modified: branches/release/libs/spirit/test/karma/kleene.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/kleene.cpp (original)
+++ branches/release/libs/spirit/test/karma/kleene.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -14,10 +14,13 @@
#include <boost/spirit/include/karma_generate.hpp>
#include <boost/spirit/include/karma_operator.hpp>
#include <boost/spirit/include/karma_action.hpp>
+#include <boost/spirit/include/karma_nonterminal.hpp>
+#include <boost/spirit/include/karma_auxiliary.hpp>
#include <boost/fusion/include/vector.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_statement.hpp>
+#include <boost/fusion/include/std_pair.hpp>
#include "test.hpp"
@@ -61,11 +64,12 @@
BOOST_TEST(test("10,20,30,", *(int_ << ','), v));
BOOST_TEST(test_delimited("10 , 20 , 30 , ", *(int_ << ','), v, lit(" ")));
-
- fusion::vector<char, char> cc ('a', 'c');
- BOOST_TEST(test("ac", char_ << *(lit(' ') << ',') << char_, cc));
- BOOST_TEST(test_delimited("a c ",
- char_ << *(lit(' ') << ',') << char_, cc, " "));
+
+// leads to infinite loops
+// fusion::vector<char, char> cc ('a', 'c');
+// BOOST_TEST(test("ac", char_ << *(lit(' ') << ',') << char_, cc));
+// BOOST_TEST(test_delimited("a c ",
+// char_ << *(lit(' ') << ',') << char_, cc, " "));
}
{ // actions
@@ -80,6 +84,44 @@
(*char_ )[_1 = phx::ref(v)], space));
}
+ // failing sub-generators
+ {
+ using namespace boost::assign;
+
+ typedef std::pair<char, char> data;
+ std::vector<data> v2;
+ v2 += std::make_pair('a', 'a'),
+ std::make_pair('b', 'b'),
+ std::make_pair('c', 'c'),
+ std::make_pair('d', 'd'),
+ std::make_pair('e', 'e'),
+ std::make_pair('f', 'f'),
+ std::make_pair('g', 'g');
+
+ karma::rule<spirit_test::output_iterator<char>::type, data()> r;
+
+ r = &char_('d') << char_;
+ BOOST_TEST(test("d", *r, v2));
+
+ r = &char_('a') << char_;
+ BOOST_TEST(test("a",*r, v2));
+
+ r = &char_('g') << char_;
+ BOOST_TEST(test("g", *r, v2));
+
+ r = !char_('d') << char_;
+ BOOST_TEST(test("abcefg", *r, v2));
+
+ r = !char_('a') << char_;
+ BOOST_TEST(test("bcdefg", *r, v2));
+
+ r = !char_('g') << char_;
+ BOOST_TEST(test("abcdef", *r, v2));
+
+ r = &char_('A') << char_;
+ BOOST_TEST(test("", *r, v2));
+ }
+
return boost::report_errors();
}
Modified: branches/release/libs/spirit/test/karma/list.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/list.cpp (original)
+++ branches/release/libs/spirit/test/karma/list.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -12,10 +12,13 @@
#include <boost/spirit/include/karma_numeric.hpp>
#include <boost/spirit/include/karma_directive.hpp>
#include <boost/spirit/include/karma_action.hpp>
+#include <boost/spirit/include/karma_nonterminal.hpp>
+#include <boost/spirit/include/karma_auxiliary.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_object.hpp>
#include <boost/spirit/include/phoenix_stl.hpp>
+#include <boost/fusion/include/std_pair.hpp>
#include <boost/assign/std/vector.hpp>
@@ -38,25 +41,61 @@
std::vector<char> v;
v += 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h';
- {
- BOOST_TEST(test("a,b,c,d,e,f,g,h", char_ % ',', v));
- BOOST_TEST(test_delimited("a , b , c , d , e , f , g , h ",
- char_ % ',', v, space));
- }
+// {
+// BOOST_TEST(test("a,b,c,d,e,f,g,h", char_ % ',', v));
+// BOOST_TEST(test_delimited("a , b , c , d , e , f , g , h ",
+// char_ % ',', v, space));
+// }
+//
+// {
+// std::string s ("abcdefgh");
+// BOOST_TEST(test("a,b,c,d,e,f,g,h", char_ % ',', s));
+// BOOST_TEST(test_delimited("a , b , c , d , e , f , g , h ",
+// char_ % ',', s, space));
+// }
+//
+// { // actions
+// namespace phx = boost::phoenix;
+//
+// BOOST_TEST(test("a,b,c,d,e,f,g,h", (char_ % ',')[_1 = phx::ref(v)]));
+// BOOST_TEST(test_delimited("a , b , c , d , e , f , g , h ",
+// (char_ % ',')[_1 = phx::ref(v)], space));
+// }
+ // failing sub-generators
{
- std::string s ("abcdefgh");
- BOOST_TEST(test("a,b,c,d,e,f,g,h", char_ % ',', s));
- BOOST_TEST(test_delimited("a , b , c , d , e , f , g , h ",
- char_ % ',', s, space));
- }
+ typedef std::pair<char, char> data;
+ std::vector<data> v2;
+ v2 += std::make_pair('a', 'a'),
+ std::make_pair('b', 'b'),
+ std::make_pair('c', 'c'),
+ std::make_pair('d', 'd'),
+ std::make_pair('e', 'e'),
+ std::make_pair('f', 'f'),
+ std::make_pair('g', 'g');
+
+ karma::rule<spirit_test::output_iterator<char>::type, data()> r;
+
+ r = &char_('d') << char_;
+ BOOST_TEST(test("d", r % ',', v2));
+
+ r = &char_('a') << char_;
+ BOOST_TEST(test("a", r % ',', v2));
+
+ r = &char_('g') << char_;
+ BOOST_TEST(test("g", r % ',', v2));
+
+ r = !char_('d') << char_;
+ BOOST_TEST(test("a,b,c,e,f,g", r % ',', v2));
+
+ r = !char_('a') << char_;
+ BOOST_TEST(test("b,c,d,e,f,g", r % ',', v2));
- { // actions
- namespace phx = boost::phoenix;
+ r = !char_('g') << char_;
+ BOOST_TEST(test("a,b,c,d,e,f", r % ',', v2));
- BOOST_TEST(test("a,b,c,d,e,f,g,h", (char_ % ',')[_1 = phx::ref(v)]));
- BOOST_TEST(test_delimited("a , b , c , d , e , f , g , h ",
- (char_ % ',')[_1 = phx::ref(v)], space));
+ r = &char_('A') << char_;
+ BOOST_TEST(!test("", r % ',', v2));
}
return boost::report_errors();
Modified: branches/release/libs/spirit/test/karma/pattern.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/pattern.cpp (original)
+++ branches/release/libs/spirit/test/karma/pattern.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,7 +27,6 @@
{
using namespace boost;
using namespace boost::spirit;
- using namespace boost::spirit::karma;
using namespace boost::spirit::ascii;
typedef spirit_test::output_iterator<char>::type outiter_type;
@@ -36,15 +35,15 @@
{
using boost::phoenix::at_c;
- rule<outiter_type, fusion::vector<char, int, double>()> start;
+ karma::rule<outiter_type, fusion::vector<char, int, double>()> start;
fusion::vector<char, int, double> vec('a', 10, 12.4);
start %= char_ << int_ << double_;
BOOST_TEST(test("a1012.4", start, vec));
- rule<outiter_type, char()> a;
- rule<outiter_type, int()> b;
- rule<outiter_type, double()> c;
+ karma::rule<outiter_type, char()> a;
+ karma::rule<outiter_type, int()> b;
+ karma::rule<outiter_type, double()> c;
a %= char_ << eps;
b %= int_;
@@ -55,6 +54,9 @@
start = (a << b << c)[_1 = at_c<0>(_r0), _2 = at_c<1>(_r0), _3 = at_c<2>(_r0)];
BOOST_TEST(test("a1012.4", start, vec));
+ start = a << b << c;
+ BOOST_TEST(test("a1012.4", start, vec));
+
start %= a << b << c;
BOOST_TEST(test("a1012.4", start, vec));
}
@@ -62,15 +64,15 @@
{
using boost::phoenix::at_c;
- rule<outiter_type, space_type, fusion::vector<char, int, double>()> start;
+ karma::rule<outiter_type, space_type, fusion::vector<char, int, double>()> start;
fusion::vector<char, int, double> vec('a', 10, 12.4);
start %= char_ << int_ << double_;
BOOST_TEST(test_delimited("a 10 12.4 ", start, vec, space));
- rule<outiter_type, space_type, char()> a;
- rule<outiter_type, space_type, int()> b;
- rule<outiter_type, space_type, double()> c;
+ karma::rule<outiter_type, space_type, char()> a;
+ karma::rule<outiter_type, space_type, int()> b;
+ karma::rule<outiter_type, space_type, double()> c;
a %= char_ << eps;
b %= int_;
@@ -81,20 +83,41 @@
start = (a << b << c)[_1 = at_c<0>(_r0), _2 = at_c<1>(_r0), _3 = at_c<2>(_r0)];
BOOST_TEST(test_delimited("a 10 12.4 ", start, vec, space));
+ start = a << b << c;
+ BOOST_TEST(test_delimited("a 10 12.4 ", start, vec, space));
+
start %= a << b << c;
BOOST_TEST(test_delimited("a 10 12.4 ", start, vec, space));
}
+ // test direct initalization
+ {
+ using boost::phoenix::at_c;
+
+ fusion::vector<char, int, double> vec('a', 10, 12.4);
+ karma::rule<outiter_type, space_type, fusion::vector<char, int, double>()>
+ start = char_ << int_ << double_;;
+
+ BOOST_TEST(test_delimited("a 10 12.4 ", start, vec, space));
+
+ karma::rule<outiter_type, space_type, char()> a = char_ << eps;
+ karma::rule<outiter_type, space_type, int()> b = int_;
+ karma::rule<outiter_type, space_type, double()> c = double_;
+
+ start = a[_1 = at_c<0>(_r0)] << b[_1 = at_c<1>(_r0)] << c[_1 = at_c<2>(_r0)];
+ BOOST_TEST(test_delimited("a 10 12.4 ", start, vec, space));
+ }
+
// locals test
{
- rule<outiter_type, locals<std::string> > start;
+ karma::rule<outiter_type, locals<std::string> > start;
start = string[_1 = "abc", _a = _1] << int_[_1 = 10] << string[_1 = _a];
BOOST_TEST(test("abc10abc", start));
}
{
- rule<outiter_type, space_type, locals<std::string> > start;
+ karma::rule<outiter_type, space_type, locals<std::string> > start;
start = string[_1 = "abc", _a = _1] << int_[_1 = 10] << string[_1 = _a];
BOOST_TEST(test_delimited("abc 10 abc ", start, space));
@@ -104,7 +127,7 @@
{
typedef variant<char, int, double> var_type;
- rule<outiter_type, var_type()> d, start;
+ karma::rule<outiter_type, var_type()> d, start;
d = start.alias(); // d will always track start
@@ -121,7 +144,7 @@
{
typedef variant<char, int, double> var_type;
- rule<outiter_type, space_type, var_type()> d, start;
+ karma::rule<outiter_type, space_type, var_type()> d, start;
d = start.alias(); // d will always track start
@@ -138,7 +161,7 @@
{
typedef variant<char, int, double> var_type;
- rule<outiter_type, var_type()> d, start;
+ karma::rule<outiter_type, var_type()> d, start;
d = start.alias(); // d will always track start
@@ -150,12 +173,21 @@
BOOST_TEST(test("10", d, v));
v = 12.4;
BOOST_TEST(test("12.4", d, v));
+
+ start = char_ | int_ | double_;
+
+ v = 'a';
+ BOOST_TEST(test("a", d, v));
+ v = 10;
+ BOOST_TEST(test("10", d, v));
+ v = 12.4;
+ BOOST_TEST(test("12.4", d, v));
}
{
typedef variant<char, int, double> var_type;
- rule<outiter_type, space_type, var_type()> d, start;
+ karma::rule<outiter_type, space_type, var_type()> d, start;
d = start.alias(); // d will always track start
@@ -167,6 +199,15 @@
BOOST_TEST(test_delimited("10 ", d, v, space));
v = 12.4;
BOOST_TEST(test_delimited("12.4 ", d, v, space));
+
+ start = char_ | int_ | double_;
+
+ v = 'a';
+ BOOST_TEST(test_delimited("a ", d, v, space));
+ v = 10;
+ BOOST_TEST(test_delimited("10 ", d, v, space));
+ v = 12.4;
+ BOOST_TEST(test_delimited("12.4 ", d, v, space));
}
return boost::report_errors();
Modified: branches/release/libs/spirit/test/karma/pattern2.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/pattern2.cpp (original)
+++ branches/release/libs/spirit/test/karma/pattern2.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -27,14 +27,13 @@
{
using namespace boost;
using namespace boost::spirit;
- using namespace boost::spirit::karma;
using namespace boost::spirit::ascii;
typedef spirit_test::output_iterator<char>::type outiter_type;
// basic tests
{
- rule<outiter_type> start;
+ karma::rule<outiter_type> start;
start = char_[_1 = 'a'] << int_[_1 = 10] << double_[_1 = 12.4];
BOOST_TEST(test("a1012.4", start));
@@ -42,7 +41,7 @@
start = (char_ << int_ << double_)[_1 = 'a', _2 = 10, _3 = 12.4];
BOOST_TEST(test("a1012.4", start));
- rule<outiter_type> a, b, c;
+ karma::rule<outiter_type> a, b, c;
a = char_[_1 = 'a'];
b = int_[_1 = 10];
c = double_[_1 = 12.4];
@@ -53,7 +52,7 @@
// basic tests with delimiter
{
- rule<outiter_type, space_type> start;
+ karma::rule<outiter_type, space_type> start;
start = char_[_1 = 'a'] << int_[_1 = 10] << double_[_1 = 12.4];
BOOST_TEST(test_delimited("a 10 12.4 ", start, space));
@@ -61,7 +60,7 @@
start = (char_ << int_ << double_)[_1 = 'a', _2 = 10, _3 = 12.4];
BOOST_TEST(test_delimited("a 10 12.4 ", start, space));
- rule<outiter_type, space_type> a, b, c;
+ karma::rule<outiter_type, space_type> a, b, c;
a = char_[_1 = 'a'];
b = int_[_1 = 10];
c = double_[_1 = 12.4];
@@ -74,7 +73,7 @@
{
typedef variant<char, int, double> var_type;
- rule<outiter_type, var_type()> start;
+ karma::rule<outiter_type, var_type()> start;
start = (char_ | int_ | double_)[_1 = _r0];
@@ -89,7 +88,7 @@
{
typedef variant<char, int, double> var_type;
- rule<outiter_type, space_type, var_type()> start;
+ karma::rule<outiter_type, space_type, var_type()> start;
start = (char_ | int_ | double_)[_1 = _r0];
@@ -102,7 +101,7 @@
}
{
- rule<outiter_type, void(char, int, double)> start;
+ karma::rule<outiter_type, void(char, int, double)> start;
fusion::vector<char, int, double> vec('a', 10, 12.4);
start = char_[_1 = _r1] << int_[_1 = _r2] << double_[_1 = _r3];
@@ -111,9 +110,9 @@
start = (char_ << int_ << double_)[_1 = _r1, _2 = _r2, _3 = _r3];
BOOST_TEST(test("a1012.4", start('a', 10, 12.4)));
- rule<outiter_type, void(char)> a;
- rule<outiter_type, void(int)> b;
- rule<outiter_type, void(double)> c;
+ karma::rule<outiter_type, void(char)> a;
+ karma::rule<outiter_type, void(int)> b;
+ karma::rule<outiter_type, void(double)> c;
a = char_[_1 = _r1];
b = int_[_1 = _r1];
@@ -123,7 +122,7 @@
}
{
- rule<outiter_type, space_type, void(char, int, double)> start;
+ karma::rule<outiter_type, space_type, void(char, int, double)> start;
fusion::vector<char, int, double> vec('a', 10, 12.4);
start = char_[_1 = _r1] << int_[_1 = _r2] << double_[_1 = _r3];
@@ -132,9 +131,9 @@
start = (char_ << int_ << double_)[_1 = _r1, _2 = _r2, _3 = _r3];
BOOST_TEST(test_delimited("a 10 12.4 ", start('a', 10, 12.4), space));
- rule<outiter_type, space_type, void(char)> a;
- rule<outiter_type, space_type, void(int)> b;
- rule<outiter_type, space_type, void(double)> c;
+ karma::rule<outiter_type, space_type, void(char)> a;
+ karma::rule<outiter_type, space_type, void(int)> b;
+ karma::rule<outiter_type, space_type, void(double)> c;
a = char_[_1 = _r1];
b = int_[_1 = _r1];
@@ -147,7 +146,7 @@
{
typedef variant<char, int, double> var_type;
- rule<outiter_type> a, b, c, start;
+ karma::rule<outiter_type> a, b, c, start;
a = 'a';
b = int_(10);
@@ -165,7 +164,7 @@
{
typedef variant<char, int, double> var_type;
- rule<outiter_type, space_type> a, b, c, start;
+ karma::rule<outiter_type, space_type> a, b, c, start;
a = 'a';
b = int_(10);
Modified: branches/release/libs/spirit/test/karma/plus.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/plus.cpp (original)
+++ branches/release/libs/spirit/test/karma/plus.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -14,10 +14,13 @@
#include <boost/spirit/include/karma_generate.hpp>
#include <boost/spirit/include/karma_operator.hpp>
#include <boost/spirit/include/karma_action.hpp>
+#include <boost/spirit/include/karma_nonterminal.hpp>
+#include <boost/spirit/include/karma_auxiliary.hpp>
#include <boost/fusion/include/vector.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
#include <boost/spirit/include/phoenix_statement.hpp>
+#include <boost/fusion/include/std_pair.hpp>
#include "test.hpp"
@@ -66,10 +69,11 @@
BOOST_TEST(test("10,20,30,", +(int_ << ','), v));
BOOST_TEST(test_delimited("10 , 20 , 30 , ", +(int_ << ','), v, lit(" ")));
- fusion::vector<char, char> cc ('a', 'c');
- BOOST_TEST(test("ac", char_ << !+(lit(' ') << ',') << char_, cc));
- BOOST_TEST(test_delimited("a c ",
- char_ << !+(lit(' ') << ',') << char_, cc, " "));
+// leads to infinite loops
+// fusion::vector<char, char> cc ('a', 'c');
+// BOOST_TEST(test("ac", char_ << !+(lit(' ') << ',') << char_, cc));
+// BOOST_TEST(test_delimited("a c ",
+// char_ << !+(lit(' ') << ',') << char_, cc, " "));
}
{ // actions
@@ -84,6 +88,44 @@
(+char_ )[_1 = phx::ref(v)], space));
}
+ // failing sub-generators
+ {
+ using namespace boost::assign;
+
+ typedef std::pair<char, char> data;
+ std::vector<data> v2;
+ v2 += std::make_pair('a', 'a'),
+ std::make_pair('b', 'b'),
+ std::make_pair('c', 'c'),
+ std::make_pair('d', 'd'),
+ std::make_pair('e', 'e'),
+ std::make_pair('f', 'f'),
+ std::make_pair('g', 'g');
+
+ karma::rule<spirit_test::output_iterator<char>::type, data()> r;
+
+ r = &char_('d') << char_;
+ BOOST_TEST(test("d", +r, v2));
+
+ r = &char_('a') << char_;
+ BOOST_TEST(test("a",+r, v2));
+
+ r = &char_('g') << char_;
+ BOOST_TEST(test("g", +r, v2));
+
+ r = !char_('d') << char_;
+ BOOST_TEST(test("abcefg", +r, v2));
+
+ r = !char_('a') << char_;
+ BOOST_TEST(test("bcdefg", +r, v2));
+
+ r = !char_('g') << char_;
+ BOOST_TEST(test("abcdef", +r, v2));
+
+ r = &char_('A') << char_;
+ BOOST_TEST(!test("", +r, v2));
+ }
+
return boost::report_errors();
}
Modified: branches/release/libs/spirit/test/karma/real_numerics.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/real_numerics.cpp (original)
+++ branches/release/libs/spirit/test/karma/real_numerics.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -14,6 +14,11 @@
#include <boost/spirit/include/karma_numeric.hpp>
#include <boost/spirit/include/karma_generate.hpp>
#include <boost/spirit/include/karma_directive.hpp>
+#include <boost/spirit/include/karma_phoenix_attributes.hpp>
+
+#include <boost/spirit/include/phoenix_core.hpp>
+#include <boost/spirit/include/phoenix_operator.hpp>
+#include <boost/spirit/include/phoenix_statement.hpp>
#include <limits>
#include "test.hpp"
@@ -522,5 +527,26 @@
BOOST_TEST(test("-2.2250738585072014e-308",
bordercase(-2.2250738585072014e-308))); // -DBL_MIN
}
+
+ {
+ boost::optional<double> v;
+ BOOST_TEST(!test("", double_, v));
+ BOOST_TEST(!test("", double_(1.0), v));
+
+ v = 1.0;
+ BOOST_TEST(test("1.0", double_, v));
+ BOOST_TEST(test("1.0", double_(1.0), v));
+ }
+
+ { // Phoenix expression tests (include karma_phoenix_attributes.hpp)
+ namespace phoenix = boost::phoenix;
+
+ BOOST_TEST(test("1.0", double_, phoenix::val(1.0)));
+
+ double d = 1.2;
+ BOOST_TEST(test("1.2", double_, phoenix::ref(d)));
+ BOOST_TEST(test("2.2", double_, ++phoenix::ref(d)));
+ }
+
return boost::report_errors();
}
Modified: branches/release/libs/spirit/test/karma/repeat.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/repeat.cpp (original)
+++ branches/release/libs/spirit/test/karma/repeat.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -5,7 +5,8 @@
#include <boost/config/warning_disable.hpp>
#include <boost/detail/lightweight_test.hpp>
-#include <boost/utility/enable_if.hpp>
+
+#include <boost/assign/std/vector.hpp>
#include <boost/spirit/include/karma_operator.hpp>
#include <boost/spirit/include/karma_char.hpp>
@@ -13,9 +14,14 @@
#include <boost/spirit/include/karma_numeric.hpp>
#include <boost/spirit/include/karma_directive.hpp>
#include <boost/spirit/include/karma_action.hpp>
+#include <boost/spirit/include/karma_nonterminal.hpp>
+#include <boost/spirit/include/karma_auxiliary.hpp>
+#include <boost/spirit/include/karma_phoenix_attributes.hpp>
#include <boost/spirit/include/support_argument.hpp>
#include <boost/spirit/include/phoenix_core.hpp>
#include <boost/spirit/include/phoenix_operator.hpp>
+#include <boost/spirit/include/phoenix_statement.hpp>
+#include <boost/fusion/include/std_pair.hpp>
#include <string>
#include <iostream>
@@ -25,6 +31,7 @@
using namespace spirit_test;
+///////////////////////////////////////////////////////////////////////////////
int main()
{
using namespace boost::spirit::ascii;
@@ -113,6 +120,58 @@
BOOST_TEST(test_delimited("123 456 789 ", repeat(3)[int_][_1 = phx::ref(v)], space));
}
+ // failing sub-generators
+ {
+ using namespace boost::assign;
+ namespace karma = boost::spirit::karma;
+
+ typedef std::pair<char, char> data;
+ std::vector<data> v2, v3;
+ v2 += std::make_pair('a', 'a'),
+ std::make_pair('b', 'b'),
+ std::make_pair('c', 'c'),
+ std::make_pair('d', 'd'),
+ std::make_pair('e', 'e'),
+ std::make_pair('f', 'f'),
+ std::make_pair('g', 'g');
+ v3 += std::make_pair('a', 'a'),
+ std::make_pair('b', 'b'),
+ std::make_pair('c', 'c'),
+ std::make_pair('d', 'd');
+
+ karma::rule<spirit_test::output_iterator<char>::type, data()> r;
+
+ r = &char_('d') << char_;
+ BOOST_TEST(test("d", repeat[r], v2));
+
+ r = !char_('d') << char_;
+ BOOST_TEST(test("abcefg", repeat(6)[r], v2));
+ BOOST_TEST(!test("", repeat(5)[r], v2));
+
+ r = !char_('c') << char_;
+ BOOST_TEST(test("abd", repeat(3)[r], v2));
+
+ r = !char_('a') << char_;
+ BOOST_TEST(test("bcdef", repeat(3, 5)[r], v2));
+ BOOST_TEST(test("bcd", repeat(3, 5)[r], v3));
+ BOOST_TEST(!test("", repeat(4, 5)[r], v3));
+
+ BOOST_TEST(test("bcd", repeat(3, inf)[r], v3));
+ BOOST_TEST(test("bcdefg", repeat(3, inf)[r], v2));
+ BOOST_TEST(!test("", repeat(4, inf)[r], v3));
+ }
+
+ {
+ namespace ascii = boost::spirit::ascii;
+ namespace phoenix = boost::phoenix;
+
+ char c = 'a';
+ BOOST_TEST(test("bcd", repeat(3)[ascii::char_[_1 = ++phoenix::ref(c)]]));
+
+ c = 'a';
+ BOOST_TEST(test("bcd", repeat(3)[ascii::char_], ++phoenix::ref(c)));
+ }
+
return boost::report_errors();
}
Modified: branches/release/libs/spirit/test/karma/rule_fail.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/rule_fail.cpp (original)
+++ branches/release/libs/spirit/test/karma/rule_fail.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -16,7 +16,6 @@
#include "test.hpp"
using namespace boost::spirit;
-using namespace boost::spirit::karma;
using namespace boost::spirit::ascii;
// this test must fail compiling as the rule is used with an incompatible
@@ -27,7 +26,7 @@
std::string generated;
- rule<outiter_type, rule<outiter_type> > def;
+ karma::rule<outiter_type, karma::rule<outiter_type> > def;
def = int_(1) << ',' << int_(0);
std::back_insert_iterator<std::string> outit(generated);
Modified: branches/release/libs/spirit/test/karma/stream.cpp
==============================================================================
--- branches/release/libs/spirit/test/karma/stream.cpp (original)
+++ branches/release/libs/spirit/test/karma/stream.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -159,5 +159,12 @@
BOOST_TEST((test(L"abc", wstream(phx::ref(ws)))));
}
+ {
+ boost::optional<char> c;
+ BOOST_TEST(!test("", stream, c));
+ c = 'x';
+ BOOST_TEST(test("x", stream, c));
+ }
+
return boost::report_errors();
}
Modified: branches/release/libs/spirit/test/lex/lexertl1.cpp
==============================================================================
--- branches/release/libs/spirit/test/lex/lexertl1.cpp (original)
+++ branches/release/libs/spirit/test/lex/lexertl1.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -51,12 +51,10 @@
}
{
- using namespace boost::spirit::ascii;
-
// initialize lexer
lexer_def lex;
lex.self = token_def('+') | '-' | c_comment;
- lex.self += char_('*') | '/' | cpp_comment;
+ lex.self += lex::char_('*') | '/' | cpp_comment;
// test lexer for two different input strings
BOOST_TEST(test (lex, "/* this is a comment */", CCOMMENT));
Modified: branches/release/libs/spirit/test/lex/state_switcher_test.cpp
==============================================================================
--- branches/release/libs/spirit/test/lex/state_switcher_test.cpp (original)
+++ branches/release/libs/spirit/test/lex/state_switcher_test.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -37,7 +37,6 @@
{
using namespace boost::spirit;
using namespace boost::spirit::qi;
- using namespace boost::spirit::lex;
using namespace spirit_test;
typedef std::string::iterator base_iterator_type;
Modified: branches/release/libs/spirit/test/qi/alternative.cpp
==============================================================================
--- branches/release/libs/spirit/test/qi/alternative.cpp (original)
+++ branches/release/libs/spirit/test/qi/alternative.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -98,6 +98,19 @@
BOOST_TEST((test_attr("x", lit("rock") | int_ | char_, v)));
BOOST_TEST(boost::get<char>(v) == 'x');
}
+
+ { // Make sure that we are using the actual supplied attribute types
+ // from the variant and not the expected type.
+ boost::variant<int, std::string> v;
+ BOOST_TEST((test_attr("12345", int_ | +char_, v)));
+ BOOST_TEST(boost::get<int>(v) == 12345);
+//
+// BOOST_TEST((test_attr("abc", int_ | +char_, v)));
+// BOOST_TEST(boost::get<std::string>(v) == "abc");
+//
+// BOOST_TEST((test_attr("12345", +char_ | int_, v)));
+// BOOST_TEST(boost::get<std::string>(v) == "12345");
+ }
{ // test action
Modified: branches/release/libs/spirit/test/qi/grammar_fail.cpp
==============================================================================
--- branches/release/libs/spirit/test/qi/grammar_fail.cpp (original)
+++ branches/release/libs/spirit/test/qi/grammar_fail.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -12,20 +12,17 @@
#include <boost/spirit/include/qi_nonterminal.hpp>
#include <boost/spirit/include/qi_parse.hpp>
-using namespace boost::spirit;
-using namespace boost::spirit::qi;
-using namespace boost::spirit::ascii;
+namespace qi = boost::spirit::qi;
-struct num_list : grammar<char const*, rule<char const*> >
+struct num_list : qi::grammar<char const*, qi::rule<char const*> >
{
num_list() : base_type(start)
{
- using boost::spirit::int_;
- num = int_;
+ num = qi::int_;
start = num >> *(',' >> num);
}
- rule<char const*, rule<char const*> > start, num;
+ qi::rule<char const*, qi::rule<char const*> > start, num;
};
// this test must fail compiling
@@ -35,8 +32,8 @@
char const* end = &input[strlen(input)+1];
num_list g;
- bool r = phrase_parse(input, end, g,
- space | ('%' >> *~char_('\n') >> '\n'));
+ bool r = qi::phrase_parse(input, end, g,
+ qi::space | ('%' >> *~qi::char_('\n') >> '\n'));
return 0;
}
Modified: branches/release/libs/spirit/test/qi/kleene.cpp
==============================================================================
--- branches/release/libs/spirit/test/qi/kleene.cpp (original)
+++ branches/release/libs/spirit/test/qi/kleene.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -24,6 +24,28 @@
#include <iostream>
#include "test.hpp"
+struct x_attr
+{
+};
+
+namespace boost { namespace spirit { namespace traits
+{
+ template <>
+ struct container_value<x_attr>
+ {
+ typedef char type; // value type of container
+ };
+
+ template <>
+ struct push_back_container<x_attr, char>
+ {
+ static void call(x_attr& c, char val)
+ {
+ // push back value type into container
+ }
+ };
+}}}
+
int
main()
{
@@ -114,6 +136,12 @@
BOOST_TEST(test("123 456 789", (*int_)[phx::ref(v) = _1], space) && 3 == v.size() &&
v[0] == 123 && v[1] == 456 && v[2] == 789);
}
+
+ { // attribute customization
+
+ x_attr x;
+ test_attr("abcde", *char_, x);
+ }
return boost::report_errors();
}
Modified: branches/release/libs/spirit/test/qi/match_manip.cpp
==============================================================================
--- branches/release/libs/spirit/test/qi/match_manip.cpp (original)
+++ branches/release/libs/spirit/test/qi/match_manip.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -5,6 +5,8 @@
Distributed under the Boost Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
=============================================================================*/
+#include <boost/config/warning_disable.hpp>
+
#include <boost/spirit/include/support_argument.hpp>
#include <boost/spirit/include/qi_action.hpp>
#include <boost/spirit/include/qi_numeric.hpp>
Modified: branches/release/libs/spirit/test/qi/omit.cpp
==============================================================================
--- branches/release/libs/spirit/test/qi/omit.cpp (original)
+++ branches/release/libs/spirit/test/qi/omit.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -41,9 +41,9 @@
{
// omit[] means we don't receive the attribute
- vector<char> attr;
+ char attr;
BOOST_TEST((test_attr("abc", omit[char_] >> omit['b'] >> char_, attr)));
- BOOST_TEST((at_c<0>(attr) == 'c'));
+ BOOST_TEST((attr == 'c'));
}
{
@@ -89,15 +89,8 @@
}
{
- // omit[] means we don't receive the attribute
- vector<char> attr;
- BOOST_TEST((test_attr("a hello c", char_ >> "hello" >> omit[char_], attr, space)));
- BOOST_TEST((at_c<0>(attr) == 'a'));
- }
-
- {
// if only one node in a sequence is left (all the others are omitted),
- // then we should also allow "naked" attributes (unwraped in a tuple)
+ // then we need "naked" attributes (not wraped in a tuple)
int attr;
BOOST_TEST((test_attr("a 123 c", omit['a'] >> int_ >> omit['c'], attr, space)));
BOOST_TEST((attr == 123));
Modified: branches/release/libs/spirit/test/qi/plus.cpp
==============================================================================
--- branches/release/libs/spirit/test/qi/plus.cpp (original)
+++ branches/release/libs/spirit/test/qi/plus.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -24,11 +24,33 @@
#include <iostream>
#include "test.hpp"
-using namespace spirit_test;
+struct x_attr
+{
+};
+
+namespace boost { namespace spirit { namespace traits
+{
+ template <>
+ struct container_value<x_attr>
+ {
+ typedef char type; // value type of container
+ };
+
+ template <>
+ struct push_back_container<x_attr, char>
+ {
+ static void call(x_attr& c, char val)
+ {
+ // push back value type into container
+ }
+ };
+}}}
int
main()
{
+ using spirit_test::test;
+ using spirit_test::test_attr;
using namespace boost::spirit::ascii;
using boost::spirit::qi::int_;
using boost::spirit::qi::omit;
@@ -101,6 +123,12 @@
BOOST_TEST(test("1 2 3", (+int_)[phx::ref(v) = _1], space) && 3 == v.size() &&
v[0] == 1 && v[1] == 2 && v[2] == 3);
}
+
+ { // attribute customization
+
+ x_attr x;
+ test_attr("abcde", +char_, x);
+ }
return boost::report_errors();
}
Modified: branches/release/libs/spirit/test/qi/repeat.cpp
==============================================================================
--- branches/release/libs/spirit/test/qi/repeat.cpp (original)
+++ branches/release/libs/spirit/test/qi/repeat.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -24,6 +24,27 @@
#include <iostream>
#include "test.hpp"
+struct x_attr
+{
+};
+
+namespace boost { namespace spirit { namespace traits
+{
+ template <>
+ struct container_value<x_attr>
+ {
+ typedef char type; // value type of container
+ };
+
+ template <>
+ struct push_back_container<x_attr, char>
+ {
+ static void call(x_attr& c, char val)
+ {
+ // push back value type into container
+ }
+ };
+}}}
int
main()
@@ -180,6 +201,15 @@
BOOST_TEST(test("aaaaaa", repeat(val(3), inf)[char_]));
BOOST_TEST(!test("aa", repeat(3, val(inf))[char_]));
}
+
+ { // attribute customization
+
+ x_attr x;
+ test_attr("abcde", repeat[char_], x);
+ test_attr("abcde", repeat(5)[char_], x);
+ test_attr("abcde", repeat(1, 5)[char_], x);
+ test_attr("abcde", repeat(1, inf)[char_], x);
+ }
return boost::report_errors();
}
Modified: branches/release/libs/spirit/test/qi/rule.cpp
==============================================================================
--- branches/release/libs/spirit/test/qi/rule.cpp (original)
+++ branches/release/libs/spirit/test/qi/rule.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -215,13 +215,21 @@
{ // auto rules tests
- char ch;
+ char ch = '\0';
rule<char const*, char()> a;
a %= alpha;
BOOST_TEST(test("x", a[phx::ref(ch) = _1]));
BOOST_TEST(ch == 'x');
+ ch = '\0';
+ BOOST_TEST(test_attr("z", a, ch)); // attribute is given.
+ BOOST_TEST(ch == 'z');
+ a = alpha; // test deduced auto rule behavior
+ ch = '\0';
+ BOOST_TEST(test("x", a[phx::ref(ch) = _1]));
+ BOOST_TEST(ch == 'x');
+ ch = '\0';
BOOST_TEST(test_attr("z", a, ch)); // attribute is given.
BOOST_TEST(ch == 'z');
}
@@ -239,7 +247,18 @@
BOOST_TEST(test("a,b,c,d,e,f", r[phx::ref(s) = _1]));
BOOST_TEST(s == "abcdef");
+ r = char_ >> *(',' >> char_); // test deduced auto rule behavior
+ s.clear();
+ BOOST_TEST(test("a,b,c,d,e,f", r[phx::ref(s) = _1]));
+ BOOST_TEST(s == "abcdef");
+
r %= char_ >> char_ >> char_ >> char_ >> char_ >> char_;
+ s.clear();
+ BOOST_TEST(test("abcdef", r[phx::ref(s) = _1]));
+ BOOST_TEST(s == "abcdef");
+
+ r = char_ >> char_ >> char_ >> char_ >> char_ >> char_;
+ s.clear();
BOOST_TEST(test("abcdef", r[phx::ref(s) = _1]));
BOOST_TEST(s == "abcdef");
}
@@ -255,14 +274,24 @@
{ // auto rules aliasing tests
- char ch;
+ char ch = '\0';
rule<char const*, char()> a, b;
a %= b;
b %= alpha;
BOOST_TEST(test("x", a[phx::ref(ch) = _1]));
BOOST_TEST(ch == 'x');
+ ch = '\0';
+ BOOST_TEST(test_attr("z", a, ch)); // attribute is given.
+ BOOST_TEST(ch == 'z');
+
+ a = b; // test deduced auto rule behavior
+ b = alpha;
+ ch = '\0';
+ BOOST_TEST(test("x", a[phx::ref(ch) = _1]));
+ BOOST_TEST(ch == 'x');
+ ch = '\0';
BOOST_TEST(test_attr("z", a, ch)); // attribute is given.
BOOST_TEST(ch == 'z');
}
@@ -354,6 +383,12 @@
std::string attr;
BOOST_TEST(test_attr("x", text, attr));
BOOST_TEST(attr == "x");
+
+ // test deduced auto rule behavior
+ text = +(!char_(')') >> !char_('>') >> char_);
+ attr.clear();
+ BOOST_TEST(test_attr("x", text, attr));
+ BOOST_TEST(attr == "x");
}
{ // error handling
Modified: branches/release/libs/spirit/test/qi/terminal_ex.cpp
==============================================================================
--- branches/release/libs/spirit/test/qi/terminal_ex.cpp (original)
+++ branches/release/libs/spirit/test/qi/terminal_ex.cpp 2009-10-06 19:57:14 EDT (Tue, 06 Oct 2009)
@@ -56,7 +56,7 @@
if (it == last || *it++ != Char('+'))
return false;
- boost::spirit::qi::detail::assign_to(count, attr);
+ boost::spirit::traits::assign_to(count, attr);
first = it;
return true;
}
@@ -104,7 +104,7 @@
if (it == last || *it++ != Char('-'))
return false;
- boost::spirit::qi::detail::assign_to(count, attr);
+ boost::spirit::traits::assign_to(count, attr);
first = it;
return true;
}
@@ -157,7 +157,7 @@
if (it == last || *it++ != Char('*'))
return false;
- boost::spirit::qi::detail::assign_to(count, attr);
+ boost::spirit::traits::assign_to(count, attr);
first = it;
return true;
}
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk