|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r83240 - in sandbox/tree_node: boost boost/detail boost/detail/metafunction boost/tree_node boost/tree_node/_detail boost/tree_node/algorithm boost/tree_node/balancer boost/tree_node/container boost/tree_node/intrinsic boost/tree_node/iterator boost/tree_node/key boost/tree_node/traits boost/typeof boost/typeof/boost boost/typeof/boost/tree_node boost/typeof/boost/tree_node/balancer boost/typeof/boost/tree_node/container boost/typeof/boost/tree_node/iterator boost/typeof/boost/tree_node/key libs libs/tree_node libs/tree_node/doc libs/tree_node/doc/html libs/tree_node/doc/html/tree_node libs/tree_node/doc/html/tree_node/concepts libs/tree_node/doc/html/tree_node/reference libs/tree_node/example libs/tree_node/test
From: sponage_at_[hidden]
Date: 2013-03-01 22:04:27
Author: expaler
Date: 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
New Revision: 83240
URL: http://svn.boost.org/trac/boost/changeset/83240
Log:
Updated Boost.TreeNode to version 0.4
Added:
sandbox/tree_node/boost/
sandbox/tree_node/boost/detail/
sandbox/tree_node/boost/detail/base_pointee.hpp (contents, props changed)
sandbox/tree_node/boost/detail/metafunction/
sandbox/tree_node/boost/detail/metafunction/container_iterator.hpp (contents, props changed)
sandbox/tree_node/boost/detail/metafunction/container_pointer.hpp (contents, props changed)
sandbox/tree_node/boost/detail/metafunction/container_reverse_iterator.hpp (contents, props changed)
sandbox/tree_node/boost/detail/metafunction/has_first_type.hpp (contents, props changed)
sandbox/tree_node/boost/detail/metafunction/has_second_type.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/
sandbox/tree_node/boost/tree_node.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/_detail/
sandbox/tree_node/boost/tree_node/_detail/config_begin.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/_detail/config_end.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/algorithm/
sandbox/tree_node/boost/tree_node/algorithm/advance_binary.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/algorithm/binary_descendant.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/algorithm/binary_descendant_at_index.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/algorithm/binary_index_of.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/algorithm/binary_lower_bound.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/algorithm/binary_upper_bound.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/associative_node.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/associative_node_fwd.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/balancer/
sandbox/tree_node/boost/tree_node/balancer/adelson_velskii_landis.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/balancer/red_black.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/base.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/binary_node.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/binary_node_fwd.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/container/
sandbox/tree_node/boost/tree_node/container/binode.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/container/binode_associative.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/container/binode_associative_fwd.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/container/binode_fwd.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/intrinsic/
sandbox/tree_node/boost/tree_node/intrinsic/at_key.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/intrinsic/get_keys.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/intrinsic/get_properties.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/intrinsic/has_key.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/intrinsic/value_at_key.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/iterator/
sandbox/tree_node/boost/tree_node/iterator/breadth_first.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/iterator/breadth_first_descendant.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/iterator/depth_first.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/iterator/depth_first_descendant.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/iterator/dereference.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/iterator/in_order.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/iterator/post_order.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/iterator/post_order_descendant.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/iterator/pre_order.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/iterator/pre_order_descendant.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/key/
sandbox/tree_node/boost/tree_node/key/accumulation.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/key/count.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/key/data.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/key/height.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/key/position.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/key/red_black_flag.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/nary_node.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/nary_node_fwd.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/preprocessor.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/traits/
sandbox/tree_node/boost/tree_node/traits/binary_node.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/traits/binary_node_fwd.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/traits/red_black_node.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/traits/red_black_node_fwd.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/traversal_state.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/with_accumulation.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/with_accumulation_fwd.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/with_count.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/with_count_fwd.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/with_height.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/with_height_fwd.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/with_position.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/with_position_fwd.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/with_red_black_flag.hpp (contents, props changed)
sandbox/tree_node/boost/tree_node/with_red_black_flag_fwd.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/
sandbox/tree_node/boost/typeof/boost/
sandbox/tree_node/boost/typeof/boost/tree_node/
sandbox/tree_node/boost/typeof/boost/tree_node/associative_node.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/balancer/
sandbox/tree_node/boost/typeof/boost/tree_node/balancer/adelson_velskii_landis.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/balancer/red_black.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/binary_node.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/container/
sandbox/tree_node/boost/typeof/boost/tree_node/container/binode.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/container/binode_associative.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/iterator/
sandbox/tree_node/boost/typeof/boost/tree_node/iterator/breadth_first.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/iterator/breadth_first_descendant.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/iterator/depth_first.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/iterator/depth_first_descendant.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/iterator/in_order.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/iterator/post_order.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/iterator/post_order_descendant.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/iterator/pre_order.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/iterator/pre_order_descendant.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/key/
sandbox/tree_node/boost/typeof/boost/tree_node/key/accumulation.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/key/count.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/key/data.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/key/height.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/key/position.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/key/red_black_flag.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/nary_node.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/traversal_state.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/with_accumulation.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/with_count.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/with_height.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/with_position.hpp (contents, props changed)
sandbox/tree_node/boost/typeof/boost/tree_node/with_red_black_flag.hpp (contents, props changed)
sandbox/tree_node/libs/
sandbox/tree_node/libs/tree_node/
sandbox/tree_node/libs/tree_node/doc/
sandbox/tree_node/libs/tree_node/doc/Jamroot (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/changelog.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_assoc_tree_node.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_base_tree_node.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_base_type_generator.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_binary_tree_node.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_descendant_iterator.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_full_iterator.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_indexable_container.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_indexable_iterator.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_iterator.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_nary_tree_node.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_node_type_generator.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_non_assoc_tree_node.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_rvrsible_tree_node.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concept_tree_node.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/concepts.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/
sandbox/tree_node/libs/tree_node/doc/html/index.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/
sandbox/tree_node/libs/tree_node/doc/html/tree_node/changelog.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/associative_tree_node.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/base_tree_node.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/base_type_generator.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/binary_tree_node.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/full_tree_node_iterator.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/indexable_container.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/indexable_iterator.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/nary_tree_node.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/node_type_generator.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/non_assoc_tree_node.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/reversible_tree_node.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/tree_node.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/tree_node_desc_iterator.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/tree_node_iterator.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/accumulation_key.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/advance_binary.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/assoc_cont_derived_body.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/assoc_node_base_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/associative_node.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/associative_node_base.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/associative_node_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/at_key.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/avl_balancer.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_descendant.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_descendant_at_index.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_index_of.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_lower_bound.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_node.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_node_base.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_node_base_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_node_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_upper_bound.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_assoc_container.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_container.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_map.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_multimap.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_multiset.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_set.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/breadth_first_desc_iter.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/breadth_first_iterator.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/can_use_fusion.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/can_use_fusion_with_typeof.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/container_derived_body.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/copyable_and_movable.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/count_key.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/data_key.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/depth_first_desc_iter.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/depth_first_iterator.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/dereference_iterator.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_fwd_decl.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_inline_def.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_inline_hdr.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_w_alloc_f_dcl.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_w_alloc_i_def.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_w_alloc_i_hdr.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/get_keys.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/get_properties.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/has_key.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/height_key.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/in_order_iterator.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/nary_node.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/nary_node_base.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/nary_node_base_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/nary_node_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/position_key.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/post_order_desc_iter.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/post_order_iterator.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/pre_order_desc_iter.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/pre_order_iterator.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/red_black_balancer.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/red_black_flag_key.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/traversal_state.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/tree_node_base.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/value_at_key.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_accumulation.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_accumulation_base.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_accumulation_base_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_accumulation_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_count.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_count_base.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_count_base_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_count_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_height.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_height_base.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_height_base_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_height_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_position.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_position_base.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_position_base_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_position_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_rb_flag.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_rb_flag_base.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_rb_flag_base_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_rb_flag_gen.html (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_accumulation_key.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_advance_binary.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_assoc_cont_derived_body.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_assoc_node_base_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_associative_node.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_associative_node_base.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_associative_node_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_at_key.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_avl_balancer.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_bin_descendant_at_index.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binary_descendant.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binary_index_of.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binary_lower_bound.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binary_node.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binary_node_base.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binary_node_base_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binary_node_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binary_upper_bound.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binode_assoc_container.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binode_container.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binode_map.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binode_multimap.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binode_multiset.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_binode_set.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_breadth_first_desc_iter.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_breadth_first_iterator.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_can_use_fusion.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_can_use_fusion_w_typeof.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_container_derived_body.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_copyable_and_movable.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_count_key.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_data_key.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_depth_first_desc_iter.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_depth_first_iterator.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_dereference_iterator.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_empl_ctor_w_allc_f_decl.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_empl_ctor_w_allc_il_def.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_empl_ctor_w_allc_il_hdr.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_emplace_ctor_fwd_decl.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_emplace_ctor_inline_def.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_emplace_ctor_inline_hdr.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_get_keys.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_get_properties.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_has_key.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_height_key.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_in_order_iterator.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_nary_node.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_nary_node_base.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_nary_node_base_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_nary_node_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_position_key.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_post_order_desc_iter.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_post_order_iterator.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_pre_order_desc_iter.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_pre_order_iterator.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_red_black_balancer.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_red_black_flag_key.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_traversal_state.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_tree_node_base.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_value_at_key.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_accum_base_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_accumulation.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_accumulation_base.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_accumulation_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_count.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_count_base.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_count_base_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_count_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_height.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_height_base.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_height_base_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_height_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_position.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_position_base.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_position_base_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_position_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_rb_flag.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_rb_flag_base.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_rb_flag_base_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/ref_with_rb_flag_gen.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/reference.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/doc/tree_node.qbk (contents, props changed)
sandbox/tree_node/libs/tree_node/example/
sandbox/tree_node/libs/tree_node/example/assoc_iterator_functions.hpp (contents, props changed)
sandbox/tree_node/libs/tree_node/example/associative_node.cpp (contents, props changed)
sandbox/tree_node/libs/tree_node/example/binary_node.cpp (contents, props changed)
sandbox/tree_node/libs/tree_node/example/iterator_functions.hpp (contents, props changed)
sandbox/tree_node/libs/tree_node/example/match_predicate.hpp (contents, props changed)
sandbox/tree_node/libs/tree_node/example/nary_node.cpp (contents, props changed)
sandbox/tree_node/libs/tree_node/example/output_functions.hpp (contents, props changed)
sandbox/tree_node/libs/tree_node/example/output_preamble.cpp (contents, props changed)
sandbox/tree_node/libs/tree_node/example/output_preamble.hpp (contents, props changed)
sandbox/tree_node/libs/tree_node/example/output_tabs.cpp (contents, props changed)
sandbox/tree_node/libs/tree_node/example/output_tabs.hpp (contents, props changed)
sandbox/tree_node/libs/tree_node/example/type_definitions.hpp (contents, props changed)
sandbox/tree_node/libs/tree_node/test/
sandbox/tree_node/libs/tree_node/test/associative_node.cpp (contents, props changed)
sandbox/tree_node/libs/tree_node/test/binary_node.cpp (contents, props changed)
sandbox/tree_node/libs/tree_node/test/containers.cpp (contents, props changed)
sandbox/tree_node/libs/tree_node/test/iterator_functions.hpp (contents, props changed)
sandbox/tree_node/libs/tree_node/test/nary_node.cpp (contents, props changed)
Added: sandbox/tree_node/boost/detail/base_pointee.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/detail/base_pointee.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,46 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_DETAIL_BASE_POINTEE_HPP_INCLUDED
+#define BOOST_DETAIL_BASE_POINTEE_HPP_INCLUDED
+
+namespace boost { namespace detail {
+
+ template <typename Derived>
+ struct base_pointee
+ {
+ typedef Derived const* const_pointer;
+ typedef Derived* pointer;
+
+ const_pointer get_derived() const;
+
+ pointer get_derived();
+
+ protected:
+ ~base_pointee();
+ };
+
+ template <typename Derived>
+ inline typename base_pointee<Derived>::const_pointer
+ base_pointee<Derived>::get_derived() const
+ {
+ return static_cast<const_pointer>(this);
+ }
+
+ template <typename Derived>
+ inline typename base_pointee<Derived>::pointer
+ base_pointee<Derived>::get_derived()
+ {
+ return static_cast<pointer>(this);
+ }
+
+ template <typename Derived>
+ base_pointee<Derived>::~base_pointee()
+ {
+ }
+}} // namespace boost::detail
+
+#endif // BOOST_DETAIL_BASE_POINTEE_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/detail/metafunction/container_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/detail/metafunction/container_iterator.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,35 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_DETAIL_METAFUNCTION_CONTAINER_ITERATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_CONTAINER_ITERATOR_HPP_INCLUDED
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct container_iterator
+ {
+ private:
+ typedef typename ::std::tr1::remove_const<T>::type
+ C;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_const<T>
+ , typename C::const_iterator
+ , typename C::iterator
+ >::type
+ type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,container_iterator,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_CONTAINER_ITERATOR_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/detail/metafunction/container_pointer.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/detail/metafunction/container_pointer.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,35 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_DETAIL_METAFUNCTION_CONTAINER_POINTER_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_CONTAINER_POINTER_HPP_INCLUDED
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename T>
+ struct container_pointer
+ {
+ private:
+ typedef typename ::std::tr1::remove_const<T>::type
+ C;
+
+ public:
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_const<T>
+ , typename C::const_pointer
+ , typename C::pointer
+ >::type
+ type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,container_pointer,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_CONTAINER_POINTER_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/detail/metafunction/container_reverse_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/detail/metafunction/container_reverse_iterator.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,73 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_DETAIL_METAFUNCTION_CONTAINER_REVERSE_ITERATOR_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_CONTAINER_REVERSE_ITERATOR_HPP_INCLUDED
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/detail/metafunction/has_reverse_iterator.hpp>
+#include <boost/detail/metafunction/is_bidirectional_iterator.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ template <typename C>
+ struct container_reverse_iterator_check_1
+ : ::boost::mpl::if_<
+ ::std::tr1::is_void<typename C::reverse_iterator>
+ , ::boost::mpl::false_
+ , ::boost::mpl::true_
+ >::type
+ {
+ };
+
+ template <typename C>
+ struct container_reverse_iterator_check_2
+ : is_bidirectional_iterator<typename C::reverse_iterator>
+ {
+ };
+
+ template <typename C, typename IsConst>
+ struct container_reverse_iterator_impl
+ : ::boost::mpl::if_<
+ IsConst
+ , typename C::const_reverse_iterator
+ , typename C::reverse_iterator
+ >
+ {
+ };
+
+ template <typename T>
+ struct container_reverse_iterator
+ {
+ private:
+ typedef typename ::std::tr1::remove_const<T>::type
+ C;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename has_reverse_iterator<C>::type
+ , ::boost::mpl::eval_if<
+ container_reverse_iterator_check_1<C>
+ , container_reverse_iterator_check_2<C>
+ , ::boost::mpl::false_
+ >
+ , ::boost::mpl::false_
+ >::type
+ , container_reverse_iterator_impl<C,::std::tr1::is_const<T> >
+ , ::boost::mpl::identity<void>
+ >::type
+ type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,container_reverse_iterator,(T))
+ };
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_CONTAINER_REVERSE_ITERATOR_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/detail/metafunction/has_first_type.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/detail/metafunction/has_first_type.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_DETAIL_METAFUNCTION_HAS_FIRST_TYPE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_FIRST_TYPE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_first_type metafunction will determine whether or not
+ // the specified type has a nested 'first_type' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(first_type)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_FIRST_TYPE_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/detail/metafunction/has_second_type.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/detail/metafunction/has_second_type.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_DETAIL_METAFUNCTION_HAS_SECOND_TYPE_HPP_INCLUDED
+#define BOOST_DETAIL_METAFUNCTION_HAS_SECOND_TYPE_HPP_INCLUDED
+
+#include <boost/mpl/has_xxx.hpp>
+
+namespace boost { namespace detail { namespace metafunction {
+
+ // The has_second_argument_type metafunction will determine whether or not
+ // the specified type has a nested 'second_type' type definition.
+ BOOST_MPL_HAS_XXX_TRAIT_DEF(second_type)
+}}} // namespace boost::detail::metafunction
+
+#endif // BOOST_DETAIL_METAFUNCTION_HAS_SECOND_TYPE_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,58 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_HPP_INCLUDED
+
+#include <boost/typeof/boost/tree_node/key/data.hpp>
+#include <boost/typeof/boost/tree_node/key/count.hpp>
+#include <boost/typeof/boost/tree_node/key/height.hpp>
+#include <boost/typeof/boost/tree_node/key/position.hpp>
+#include <boost/typeof/boost/tree_node/key/red_black_flag.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#include <boost/tree_node/intrinsic/get_keys.hpp>
+#include <boost/tree_node/intrinsic/at_key.hpp>
+#include <boost/tree_node/intrinsic/value_at_key.hpp>
+#include <boost/tree_node/algorithm/advance_binary.hpp>
+#include <boost/tree_node/algorithm/binary_index_of.hpp>
+#include <boost/tree_node/algorithm/binary_descendant.hpp>
+#include <boost/tree_node/algorithm/binary_descendant_at_index.hpp>
+#include <boost/tree_node/algorithm/binary_lower_bound.hpp>
+#include <boost/tree_node/algorithm/binary_upper_bound.hpp>
+#include <boost/typeof/boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/typeof/boost/tree_node/iterator/breadth_first.hpp>
+#include <boost/typeof/boost/tree_node/iterator/breadth_first_descendant.hpp>
+#include <boost/typeof/boost/tree_node/iterator/pre_order.hpp>
+#include <boost/typeof/boost/tree_node/iterator/pre_order_descendant.hpp>
+#include <boost/typeof/boost/tree_node/iterator/post_order.hpp>
+#include <boost/typeof/boost/tree_node/iterator/post_order_descendant.hpp>
+#include <boost/typeof/boost/tree_node/iterator/in_order.hpp>
+#include <boost/typeof/boost/tree_node/iterator/depth_first.hpp>
+#include <boost/typeof/boost/tree_node/iterator/depth_first_descendant.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/traits/binary_node.hpp>
+#include <boost/typeof/boost/tree_node/binary_node.hpp>
+#include <boost/typeof/boost/tree_node/nary_node.hpp>
+#include <boost/typeof/boost/tree_node/associative_node.hpp>
+#include <boost/typeof/boost/tree_node/with_count.hpp>
+#include <boost/typeof/boost/tree_node/with_height.hpp>
+#include <boost/typeof/boost/tree_node/with_position.hpp>
+#include <boost/tree_node/traits/red_black_node.hpp>
+#include <boost/typeof/boost/tree_node/with_red_black_flag.hpp>
+#include <boost/typeof/boost/tree_node/balancer/red_black.hpp>
+#include <boost/typeof/boost/tree_node/balancer/adelson_velskii_landis.hpp>
+#include <boost/typeof/boost/tree_node/container/binode.hpp>
+#include <boost/typeof/boost/tree_node/container/binode_associative.hpp>
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/typeof/boost/tree_node/key/accumulation.hpp>
+#include <boost/tree_node/intrinsic/get_properties.hpp>
+#include <boost/typeof/boost/tree_node/with_accumulation.hpp>
+#endif
+
+#endif // BOOST_TREE_NODE_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/_detail/config_begin.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/_detail/config_begin.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,15 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// 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)
+#ifndef BOOST_TREE_NODE_DETAIL_CONFIG_INCLUDED
+#define BOOST_TREE_NODE_DETAIL_CONFIG_INCLUDED
+#include <boost/config.hpp>
+#endif
+
+#if defined BOOST_MSVC
+ #pragma warning (push)
+ #pragma warning (disable : 4521) // multiple copy constructors specified
+ #pragma warning (disable : 4996) // fn called w/params that may be unsafe
+#endif
+
Added: sandbox/tree_node/boost/tree_node/_detail/config_end.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/_detail/config_end.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,8 @@
+// Copyright (C) 2012 Cromwell D. Enage
+// 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)
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+
Added: sandbox/tree_node/boost/tree_node/algorithm/advance_binary.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/algorithm/advance_binary.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,241 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ALGORITHM_ADVANCE_BINARY_HPP
+#define BOOST_TREE_NODE_ALGORITHM_ADVANCE_BINARY_HPP
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_CXX11_NULLPTR
+#include <cstddef>
+#endif
+
+#include <boost/utility/value_init.hpp>
+#include <boost/tree_node/key/count.hpp>
+#include <boost/assert.hpp>
+
+//[reference__tree_node__advance_binary
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename Difference>
+ NodePointer
+ advance_binary(
+ NodePointer node_ptr
+ , Difference difference
+ , NodePointer const& root_ptr
+ );
+
+ template <typename NodePointer, typename Difference>
+ NodePointer advance_binary(NodePointer node_ptr, Difference difference);
+
+ //<-
+ template <typename NodePointer, typename Difference>
+ NodePointer
+ advance_binary(
+ NodePointer node_ptr
+ , Difference difference
+ , NodePointer const& root_ptr
+ )
+ {
+ static Difference const zero_difference = ::boost::initialized_value;
+
+#if defined BOOST_NO_CXX11_NULLPTR
+ for (
+ NodePointer child_ptr = ::boost::initialized_value;
+ difference;
+ child_ptr = ::boost::initialized_value
+ )
+#else
+ for (NodePointer child_ptr = nullptr; difference; child_ptr = nullptr)
+#endif
+ {
+ if (difference < zero_difference)
+ {
+ if ((child_ptr = node_ptr->get_left_child_ptr()))
+ {
+ if (-(++difference) < get(*child_ptr, count_key()))
+ {
+ node_ptr = child_ptr;
+
+ if ((child_ptr = node_ptr->get_right_child_ptr()))
+ {
+ difference += get(*child_ptr, count_key());
+ }
+
+ continue;
+ }
+
+ if (node_ptr == root_ptr)
+ {
+ BOOST_ASSERT_MSG(
+ -difference == get(*child_ptr, count_key())
+ , "Result out of bounds."
+ );
+#if defined BOOST_NO_CXX11_NULLPTR
+ node_ptr = ::boost::initialized_value;
+#else
+ node_ptr = nullptr;
+#endif
+ break;
+ }
+
+ child_ptr = node_ptr;
+
+ if (!(node_ptr = node_ptr->get_parent_ptr()))
+ {
+ BOOST_ASSERT_MSG(
+ -difference == get(*child_ptr, count_key())
+ , "Result out of bounds."
+ );
+ break;
+ }
+
+ --difference;
+ }
+ else // if (!node_ptr->get_left_child_ptr())
+ {
+ if (node_ptr == root_ptr)
+ {
+ BOOST_ASSERT_MSG(
+ !++difference
+ , "Result out of bounds."
+ );
+#if defined BOOST_NO_CXX11_NULLPTR
+ node_ptr = ::boost::initialized_value;
+#else
+ node_ptr = nullptr;
+#endif
+ break;
+ }
+
+ child_ptr = node_ptr;
+
+ if (!(node_ptr = node_ptr->get_parent_ptr()))
+ {
+ BOOST_ASSERT_MSG(
+ !++difference
+ , "Result out of bounds."
+ );
+ break;
+ }
+ }
+ }
+ else // if (zero_difference < difference)
+ {
+ if ((child_ptr = node_ptr->get_right_child_ptr()))
+ {
+ if (--difference < get(*child_ptr, count_key()))
+ {
+ node_ptr = child_ptr;
+
+ if ((child_ptr = node_ptr->get_left_child_ptr()))
+ {
+ difference -= get(*child_ptr, count_key());
+ }
+
+ continue;
+ }
+
+ if (node_ptr == root_ptr)
+ {
+ BOOST_ASSERT_MSG(
+ difference == get(*child_ptr, count_key())
+ , "Result out of bounds."
+ );
+#if defined BOOST_NO_CXX11_NULLPTR
+ node_ptr = ::boost::initialized_value;
+#else
+ node_ptr = nullptr;
+#endif
+ break;
+ }
+
+ child_ptr = node_ptr;
+
+ if (!(node_ptr = node_ptr->get_parent_ptr()))
+ {
+ BOOST_ASSERT_MSG(
+ difference == get(*child_ptr, count_key())
+ , "Result out of bounds."
+ );
+ break;
+ }
+
+ ++difference;
+ }
+ else // if (!node_ptr->get_right_child_ptr())
+ {
+ if (node_ptr == root_ptr)
+ {
+ BOOST_ASSERT_MSG(
+ !--difference
+ , "Result out of bounds."
+ );
+#if defined BOOST_NO_CXX11_NULLPTR
+ node_ptr = ::boost::initialized_value;
+#else
+ node_ptr = nullptr;
+#endif
+ break;
+ }
+
+ child_ptr = node_ptr;
+
+ if (!(node_ptr = node_ptr->get_parent_ptr()))
+ {
+ BOOST_ASSERT_MSG(
+ !--difference
+ , "Result out of bounds."
+ );
+ break;
+ }
+ }
+ }
+
+ if (child_ptr == node_ptr->get_left_child_ptr())
+ {
+ --difference;
+
+ if (child_ptr->get_right_child_ptr())
+ {
+ difference -= get(
+ *child_ptr->get_right_child_ptr()
+ , count_key()
+ );
+ }
+ }
+ else // if (child_ptr == node_ptr->get_right_child_ptr())
+ {
+ ++difference;
+
+ if (child_ptr->get_left_child_ptr())
+ {
+ difference += get(
+ *child_ptr->get_left_child_ptr()
+ , count_key()
+ );
+ }
+ }
+ }
+
+ return node_ptr;
+ }
+
+ template <typename NodePointer, typename Difference>
+ inline NodePointer
+ advance_binary(NodePointer node_ptr, Difference difference)
+ {
+#if defined BOOST_NO_CXX11_NULLPTR
+ return advance_binary(node_ptr, difference, 0);
+#else
+ return advance_binary(node_ptr, difference, nullptr);
+#endif
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ALGORITHM_ADVANCE_BINARY_HPP
+
Added: sandbox/tree_node/boost/tree_node/algorithm/binary_descendant.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/algorithm/binary_descendant.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,52 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ALGORITHM_BINARY_DESCENDANT_HPP
+#define BOOST_TREE_NODE_ALGORITHM_BINARY_DESCENDANT_HPP
+
+//[reference__tree_node__binary_descendant
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename Value, typename Compare>
+ NodePointer
+ binary_descendant(
+ NodePointer node_ptr
+ , Value const& value
+ , Compare const& compare
+ );
+
+ //<-
+ template <typename NodePointer, typename Value, typename Compare>
+ NodePointer
+ binary_descendant(
+ NodePointer node_ptr
+ , Value const& value
+ , Compare const& compare
+ )
+ {
+ while (node_ptr)
+ {
+ if (compare(value, *node_ptr))
+ {
+ node_ptr = node_ptr->get_left_child_ptr();
+ }
+ else if (compare(*node_ptr, value))
+ {
+ node_ptr = node_ptr->get_right_child_ptr();
+ }
+ else
+ {
+ return node_ptr;
+ }
+ }
+
+ return node_ptr;
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ALGORITHM_BINARY_DESCENDANT_HPP
+
Added: sandbox/tree_node/boost/tree_node/algorithm/binary_descendant_at_index.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/algorithm/binary_descendant_at_index.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,75 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ALGORITHM_BINARY_DESCENDANT_AT_INDEX_HPP
+#define BOOST_TREE_NODE_ALGORITHM_BINARY_DESCENDANT_AT_INDEX_HPP
+
+#include <boost/tree_node/key/count.hpp>
+#include <boost/assert.hpp>
+
+//[reference__tree_node__binary_descendant_at_index
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename Index>
+ NodePointer binary_descendant_at_index(NodePointer node_ptr, Index index);
+
+ //<-
+ template <typename NodePointer, typename Index>
+ NodePointer binary_descendant_at_index(NodePointer node_ptr, Index index)
+ {
+ for (NodePointer child_ptr;;)
+ {
+ if ((child_ptr = node_ptr->get_left_child_ptr()))
+ {
+ Index const count = get(*child_ptr, count_key());
+
+ if (index < count)
+ {
+ node_ptr = child_ptr;
+ }
+ else if (count < index)
+ {
+ BOOST_ASSERT_MSG(
+ node_ptr->get_right_child_ptr()
+ , "Check modifier methods or with_count adaptor."
+ );
+ index -= count + 1;
+ node_ptr = node_ptr->get_right_child_ptr();
+ }
+ else
+ {
+ break;
+ }
+ }
+ else if ((child_ptr = node_ptr->get_right_child_ptr()))
+ {
+ if (index)
+ {
+ --index;
+ node_ptr = child_ptr;
+ }
+ else
+ {
+ break;
+ }
+ }
+ else
+ {
+ BOOST_ASSERT_MSG(
+ !index
+ , "Check modifier methods or with_count adaptor."
+ );
+ break;
+ }
+ }
+
+ return node_ptr;
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ALGORITHM_BINARY_DESCENDANT_AT_INDEX_HPP
+
Added: sandbox/tree_node/boost/tree_node/algorithm/binary_index_of.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/algorithm/binary_index_of.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,102 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ALGORITHM_BINARY_INDEX_OF_HPP
+#define BOOST_TREE_NODE_ALGORITHM_BINARY_INDEX_OF_HPP
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_CXX11_NULLPTR
+#include <cstddef>
+#endif
+
+#include <boost/tree_node/key/count.hpp>
+
+//[reference__tree_node__binary_index_of
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename Value>
+ Value
+ binary_index_of(
+ NodePointer node_ptr
+ , Value offset
+ , NodePointer const& root_ptr
+ );
+
+ template <typename NodePointer, typename Value>
+ Value binary_index_of(NodePointer node_ptr, Value offset);
+
+ //<-
+ template <typename NodePointer, typename Value>
+ Value
+ binary_index_of(
+ NodePointer node_ptr
+ , Value offset
+ , NodePointer const& root_ptr
+ )
+ {
+ NodePointer child_ptr = node_ptr->get_left_child_ptr();
+
+ if (child_ptr)
+ {
+ offset += get(*child_ptr, count_key());
+ }
+
+ if (root_ptr)
+ {
+ while (node_ptr != root_ptr)
+ {
+ child_ptr = node_ptr;
+ node_ptr = node_ptr->get_parent_ptr();
+
+ if (child_ptr == node_ptr->get_right_child_ptr())
+ {
+ ++offset;
+
+ if ((child_ptr = node_ptr->get_left_child_ptr()))
+ {
+ offset += get(*child_ptr, count_key());
+ }
+ }
+ }
+ }
+ else
+ {
+ for (
+ child_ptr = node_ptr;
+ (node_ptr = node_ptr->get_parent_ptr());
+ child_ptr = node_ptr
+ )
+ {
+ if (child_ptr == node_ptr->get_right_child_ptr())
+ {
+ ++offset;
+
+ if ((child_ptr = node_ptr->get_left_child_ptr()))
+ {
+ offset += get(*child_ptr, count_key());
+ }
+ }
+ }
+ }
+
+ return offset;
+ }
+
+ template <typename NodePointer, typename Value>
+ inline Value binary_index_of(NodePointer node_ptr, Value offset)
+ {
+#if defined BOOST_NO_CXX11_NULLPTR
+ return binary_index_of(node_ptr, offset, 0);
+#else
+ return binary_index_of(node_ptr, offset, nullptr);
+#endif
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ALGORITHM_BINARY_INDEX_OF_HPP
+
Added: sandbox/tree_node/boost/tree_node/algorithm/binary_lower_bound.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/algorithm/binary_lower_bound.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,53 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ALGORITHM_BINARY_LOWER_BOUND_HPP
+#define BOOST_TREE_NODE_ALGORITHM_BINARY_LOWER_BOUND_HPP
+
+#include <boost/utility/value_init.hpp>
+
+//[reference__tree_node__binary_lower_bound
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename Value, typename Compare>
+ NodePointer
+ binary_lower_bound(
+ NodePointer node_ptr
+ , Value const& value
+ , Compare const& compare
+ );
+
+ //<-
+ template <typename NodePointer, typename Value, typename Compare>
+ NodePointer
+ binary_lower_bound(
+ NodePointer node_ptr
+ , Value const& value
+ , Compare const& compare
+ )
+ {
+ NodePointer result = ::boost::initialized_value;
+
+ while (node_ptr)
+ {
+ if (compare(*node_ptr, value))
+ {
+ node_ptr = node_ptr->get_right_child_ptr();
+ }
+ else
+ {
+ result = node_ptr;
+ node_ptr = node_ptr->get_left_child_ptr();
+ }
+ }
+
+ return result;
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ALGORITHM_BINARY_LOWER_BOUND_HPP
+
Added: sandbox/tree_node/boost/tree_node/algorithm/binary_upper_bound.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/algorithm/binary_upper_bound.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,53 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ALGORITHM_BINARY_UPPER_BOUND_HPP
+#define BOOST_TREE_NODE_ALGORITHM_BINARY_UPPER_BOUND_HPP
+
+#include <boost/utility/value_init.hpp>
+
+//[reference__tree_node__binary_upper_bound
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename Value, typename Compare>
+ NodePointer
+ binary_upper_bound(
+ NodePointer node_ptr
+ , Value const& value
+ , Compare const& compare
+ );
+
+ //<-
+ template <typename NodePointer, typename Value, typename Compare>
+ NodePointer
+ binary_upper_bound(
+ NodePointer node_ptr
+ , Value const& value
+ , Compare const& compare
+ )
+ {
+ NodePointer result = ::boost::initialized_value;
+
+ while (node_ptr)
+ {
+ if (compare(value, *node_ptr))
+ {
+ node_ptr = node_ptr->get_left_child_ptr();
+ }
+ else
+ {
+ result = node_ptr;
+ node_ptr = node_ptr->get_right_child_ptr();
+ }
+ }
+
+ return result;
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ALGORITHM_BINARY_UPPER_BOUND_HPP
+
Added: sandbox/tree_node/boost/tree_node/associative_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/associative_node.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,1631 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ASSOCIATIVE_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_HPP_INCLUDED
+
+#include <utility>
+#include <boost/mpl/assert.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/iterator/transform_iterator.hpp>
+#include <boost/range/iterator_range.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/emplace_assoc_function_gen.hpp>
+#include <boost/container_gen/is_associative_selector.hpp>
+#include <boost/container_gen/is_recursive_selector.hpp>
+#include <boost/container_gen/is_ptr_selector.hpp>
+#include <boost/container_gen/has_stable_iters_selector.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/associative_node_fwd.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#include <boost/tree_node/intrinsic/get_keys.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/detail/metafunction/container_reverse_iterator.hpp>
+#include <boost/assert.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#endif
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/enum_trailing.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/type_traits/is_pod.hpp>
+
+namespace boost {
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ struct is_POD<
+ ::boost::tree_node::associative_node_base<Derived,Key,Data,Selector>
+ > : ::boost::false_type
+ {
+ };
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ struct is_pod<
+ ::boost::tree_node::associative_node_base<Derived,Key,Data,Selector>
+ > : ::boost::false_type
+ {
+ };
+} // namespace boost
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/mpl/transform_view.hpp>
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+#include <boost/fusion/iterator/key_of.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/support/category_of.hpp>
+
+namespace boost { namespace tree_node { namespace result_of {
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename FusionKey
+ >
+ struct has_key_impl<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ > : ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::has_key<Data,FusionKey>
+ , ::std::tr1::is_same<FusionKey,data_key>
+ >::type
+ {
+ };
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ struct get_keys_impl<
+ associative_node_base<Derived,Key,Data,Selector>
+ > : ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::transform_view<
+ Data
+ , ::boost::fusion::result_of::key_of< ::boost::mpl::_>
+ >
+ , ::boost::mpl::vector1<data_key>
+ >
+ {
+ };
+}}} // namespace boost::tree_node::result_of
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ class associative_node_base
+ : public
+ //[reference__associative_node_base__bases
+ tree_node_base<Derived>
+ //]
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ , public data_key
+#endif
+ , private ::boost::noncopyable
+ {
+ BOOST_MPL_ASSERT((::boost::is_associative_selector<Selector>));
+ BOOST_MPL_ASSERT((::boost::is_recursive_selector<Selector>));
+
+ //[reference__associative_node_base__children
+ typedef typename ::boost::container_gen<Selector,Key,Derived>::type
+ children;
+ //]
+
+ public:
+ //[reference__associative_node_base__super_t
+ typedef tree_node_base<Derived>
+ super_t;
+ //]
+
+ //[reference__associative_node_base__pointer
+ typedef typename super_t::pointer
+ pointer;
+ //]
+
+ //[reference__associative_node_base__const_pointer
+ typedef typename super_t::const_pointer
+ const_pointer;
+ //]
+
+ //[reference__associative_node_base__iterator
+ typedef typename children::iterator
+ iterator;
+ //]
+
+ //[reference__associative_node_base__const_iterator
+ typedef typename children::const_iterator
+ const_iterator;
+ //]
+
+ //[reference__associative_node_base__reverse_iterator
+ typedef // typename children::reverse_iterator
+ //<-
+ typename ::boost::detail::metafunction
+ ::container_reverse_iterator<children>::type
+ //->
+ reverse_iterator;
+ //]
+
+ //[reference__associative_node_base__const_reverse_iterator
+ typedef // typename children::const_reverse_iterator
+ //<-
+ typename ::boost::detail::metafunction
+ ::container_reverse_iterator<children const>::type
+ //->
+ const_reverse_iterator;
+ //]
+
+ //[reference__associative_node_base__size_type
+ typedef typename children::size_type
+ size_type;
+ //]
+
+ //[reference__associative_node_base__traits
+ struct traits
+ {
+ typedef Key
+ key_type;
+ typedef Data
+ data_type;
+ typedef typename ::boost::mpl::if_<
+ ::boost::is_ptr_selector<Selector>
+ , ::boost::iterator_range<iterator>
+ , ::std::pair<iterator,iterator>
+ >::type
+ iterator_range;
+ typedef typename ::boost::mpl::if_<
+ ::boost::is_ptr_selector<Selector>
+ , ::boost::iterator_range<const_iterator>
+ , ::std::pair<const_iterator,const_iterator>
+ >::type
+ const_iterator_range;
+ typedef typename children::allocator_type
+ allocator;
+ typedef allocator const&
+ allocator_reference;
+ };
+ //]
+
+ private:
+ children _children;
+ typename traits::data_type _data;
+ pointer _parent;
+
+ protected:
+ //[reference__associative_node_base__derived_copy_ctor
+ associative_node_base(Derived const& copy);
+ //]
+
+ //[reference__associative_node_base__derived_copy_ctor_w_allocator
+ associative_node_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ );
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ associative_node_base(BOOST_RV_REF(Derived) source);
+
+ associative_node_base(
+ BOOST_RV_REF(Derived) source
+ , typename traits::allocator_reference allocator
+ );
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__associative_node_base__emplacement_ctor
+ template <typename ...Args>
+ explicit associative_node_base(Args&& ...args);
+ //]
+
+ //[reference__associative_node_base__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit associative_node_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL
+ , associative_node_base
+ )
+
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL
+ , associative_node_base
+ )
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~associative_node_base();
+
+ //[reference__associative_node_base__on_post_copy_or_move
+ void on_post_copy_or_move();
+ //]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //[reference__associative_node_base__copy_assign
+ void copy_assign(Derived const& copy);
+ //]
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ public:
+ //[reference__associative_node_base__data_key_value_operator__const
+ typename traits::data_type const& operator[](data_key const&) const;
+ //]
+
+ //[reference__associative_node_base__data_key_value_operator
+ typename traits::data_type& operator[](data_key const&);
+ //]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ //[reference__associative_node_base__key_value_operator__const
+ template <typename FusionKey>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data const,FusionKey>
+ >::type
+ operator[](FusionKey const&) const;
+ //]
+
+ //[reference__associative_node_base__key_value_operator
+ template <typename FusionKey>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data,FusionKey>
+ >::type
+ operator[](FusionKey const&);
+ //]
+#endif
+
+ //[reference__associative_node_base__get_parent_ptr__const
+ const_pointer get_parent_ptr() const;
+ //]
+
+ //[reference__associative_node_base__get_parent_ptr
+ pointer get_parent_ptr();
+ //]
+
+ //[reference__associative_node_base__insert
+ iterator
+ insert(
+ typename traits::key_type const& key
+ , Derived const& child
+ );
+ //]
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__associative_node_base__emplace
+ template <typename ...Args>
+ iterator emplace(typename traits::key_type const& key, Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ emplace( \
+ typename traits::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ //[reference__associative_node_base__cbegin
+ const_iterator cbegin() const;
+ const_iterator begin() const;
+ //]
+
+ //[reference__associative_node_base__begin
+ iterator begin();
+ //]
+
+ //[reference__associative_node_base__cend
+ const_iterator cend() const;
+ const_iterator end() const;
+ //]
+
+ //[reference__associative_node_base__end
+ iterator end();
+ //]
+
+ //[reference__associative_node_base__crbegin
+ const_reverse_iterator crbegin() const;
+ const_reverse_iterator rbegin() const;
+ //]
+
+ //[reference__associative_node_base__rbegin
+ reverse_iterator rbegin();
+ //]
+
+ //[reference__associative_node_base__crend
+ const_reverse_iterator crend() const;
+ const_reverse_iterator rend() const;
+ //]
+
+ //[reference__associative_node_base__rend
+ reverse_iterator rend();
+ //]
+
+ //[reference__associative_node_base__size
+ size_type size() const;
+ //]
+
+ //[reference__associative_node_base__empty
+ bool empty() const;
+ //]
+
+ //[reference__associative_node_base__clear
+ void clear();
+ //]
+
+ //[reference__associative_node_base__find__const
+ const_iterator find(typename traits::key_type const& key) const;
+ //]
+
+ //[reference__associative_node_base__find
+ iterator find(typename traits::key_type const& key);
+ //]
+
+ //[reference__associative_node_base__equal_range__const
+ typename traits::const_iterator_range
+ equal_range(typename traits::key_type const& key) const;
+ //]
+
+ //[reference__associative_node_base__equal_range
+ typename traits::iterator_range
+ equal_range(typename traits::key_type const& key);
+ //]
+
+ //[reference__associative_node_base__erase
+ size_type erase(typename traits::key_type const& key);
+ //]
+
+ private:
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ iterator
+ _add_child(typename traits::key_type const& key, Args&& ...args);
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ _add_child( \
+ typename traits::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ void _initialize(iterator& itr);
+
+ void _link_children_to_parent();
+
+ void _on_post_modify_value(data_key const& key);
+
+ template <typename D, typename K, typename T, typename S, typename V>
+ friend void
+ put(
+ associative_node_base<D,K,T,S>& node
+ , data_key const& key
+ , V const& value
+ );
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename FusionKey>
+ void _on_post_modify_value(FusionKey const& key);
+
+ template <
+ typename D
+ , typename K
+ , typename T
+ , typename S
+ , typename FusionKey
+ , typename V
+ >
+ friend void
+ put(
+ associative_node_base<D,K,T,S>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<associative_node_base<D,K,T,S>,FusionKey>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ };
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ associative_node_base<Derived,Key,Data,Selector>::associative_node_base(
+ Derived const& copy
+ ) : _children(copy._children)
+ , _data(copy._data)
+ , _parent(copy._parent)
+ {
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ associative_node_base<Derived,Key,Data,Selector>::associative_node_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ ) : _children(copy._children, allocator)
+ , _data(copy._data)
+ , _parent(copy._parent)
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ associative_node_base<Derived,Key,Data,Selector>::associative_node_base(
+ BOOST_RV_REF(Derived) source
+ ) : _children(::boost::move(source._children))
+ , _data(::boost::move(source._data))
+ , _parent(source._parent)
+ {
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ associative_node_base<Derived,Key,Data,Selector>::associative_node_base(
+ BOOST_RV_REF(Derived) source
+ , typename traits::allocator_reference allocator
+ ) : _children(::boost::move(source._children), allocator)
+ , _data(::boost::move(source._data))
+ , _parent(source._parent)
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename ...Args>
+ associative_node_base<Derived,Key,Data,Selector>::associative_node_base(
+ Args&& ...args
+ ) : _children(), _data(::boost::forward<Args>(args)...), _parent()
+ {
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename ...Args>
+ associative_node_base<Derived,Key,Data,Selector>::associative_node_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : _children(allocator), _data(::boost::forward<Args>(args)...), _parent()
+ {
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename Key \
+ , typename Data \
+ , typename Selector \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ associative_node_base<Derived,Key,Data,Selector>::associative_node_base( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) : _children() \
+ , _data( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ , _parent() \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename Key \
+ , typename Data \
+ , typename Selector \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ associative_node_base<Derived,Key,Data,Selector>::associative_node_base( \
+ ::boost::container::allocator_arg_t \
+ , typename traits::allocator_reference allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) : _children(allocator) \
+ , _data( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ , _parent() \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ associative_node_base<Derived,Key,Data,Selector>::~associative_node_base()
+ {
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline void
+ associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::on_post_copy_or_move()
+ {
+ this->_link_children_to_parent();
+ this->on_post_propagate_value(data_key());
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ void
+ associative_node_base<Derived,Key,Data,Selector>::copy_assign(
+ Derived const& copy
+ )
+ {
+ Derived twin(copy);
+
+ this->_children = twin._children;
+ this->_data = twin._data;
+ }
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ void
+ associative_node_base<Derived,Key,Data,Selector>::copy_assign(
+ BOOST_COPY_ASSIGN_REF(Derived) copy
+ )
+ {
+ Derived twin(static_cast<Derived const&>(copy));
+
+ this->_children = ::boost::move(twin._children);
+ this->_data = ::boost::move(twin._data);
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline void
+ associative_node_base<Derived,Key,Data,Selector>::move_assign(
+ BOOST_RV_REF(Derived) source
+ )
+ {
+ this->_children = ::boost::move(source._children);
+ this->_data = ::boost::move(source._data);
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type const&
+ associative_node_base<Derived,Key,Data,Selector>::operator[](
+ data_key const&
+ ) const
+ {
+ return this->_data;
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type&
+ associative_node_base<Derived,Key,Data,Selector>::operator[](
+ data_key const&
+ )
+ {
+ return this->_data;
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename FusionKey>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data const,FusionKey>
+ >::type
+ associative_node_base<Derived,Key,Data,Selector>::operator[](
+ FusionKey const&
+ ) const
+ {
+ return ::boost::fusion::at_key<FusionKey>(this->_data);
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename FusionKey>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data,FusionKey>
+ >::type
+ associative_node_base<Derived,Key,Data,Selector>::operator[](
+ FusionKey const&
+ )
+ {
+ return ::boost::fusion::at_key<FusionKey>(this->_data);
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_pointer
+ associative_node_base<Derived,Key,Data,Selector>::get_parent_ptr() const
+ {
+ return this->_parent;
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<Derived,Key,Data,Selector>::pointer
+ associative_node_base<Derived,Key,Data,Selector>::get_parent_ptr()
+ {
+ return this->_parent;
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<Derived,Key,Data,Selector>::iterator
+ associative_node_base<Derived,Key,Data,Selector>::insert(
+ typename traits::key_type const& key
+ , Derived const& child
+ )
+ {
+#if defined BOOST_MSVC
+ Derived twin(child);
+ iterator result(this->_add_child(key, twin));
+#else
+ iterator result(this->_add_child(key, Derived(child)));
+#endif
+ BOOST_ASSERT(
+ dereference_iterator(result)._parent == this->get_derived()
+ );
+ return result;
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename ...Args>
+ typename associative_node_base<Derived,Key,Data,Selector>::iterator
+ associative_node_base<Derived,Key,Data,Selector>::emplace(
+ typename traits::key_type const& key
+ , Args&& ...args
+ )
+ {
+ iterator result(
+ this->_add_child(key, ::boost::forward<Args>(args)...)
+ );
+ BOOST_ASSERT(
+ dereference_iterator(result)._parent == this->get_derived()
+ );
+ return result;
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename Key \
+ , typename Data \
+ , typename Selector \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename associative_node_base<Derived,Key,Data,Selector>::iterator \
+ associative_node_base<Derived,Key,Data,Selector>::emplace( \
+ typename traits::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ iterator result = this->_add_child( \
+ key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ BOOST_ASSERT( \
+ dereference_iterator(result)._parent == this->get_derived() \
+ ); \
+ return result; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_iterator
+ associative_node_base<Derived,Key,Data,Selector>::cbegin() const
+ {
+ return this->_children.cbegin();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_iterator
+ associative_node_base<Derived,Key,Data,Selector>::begin() const
+ {
+ return this->_children.begin();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<Derived,Key,Data,Selector>::iterator
+ associative_node_base<Derived,Key,Data,Selector>::begin()
+ {
+ return this->_children.begin();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_iterator
+ associative_node_base<Derived,Key,Data,Selector>::cend() const
+ {
+ return this->_children.cend();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_iterator
+ associative_node_base<Derived,Key,Data,Selector>::end() const
+ {
+ return this->_children.end();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<Derived,Key,Data,Selector>::iterator
+ associative_node_base<Derived,Key,Data,Selector>::end()
+ {
+ return this->_children.end();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_reverse_iterator
+ associative_node_base<Derived,Key,Data,Selector>::crbegin() const
+ {
+ return this->_children.crbegin();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_reverse_iterator
+ associative_node_base<Derived,Key,Data,Selector>::rbegin() const
+ {
+ return this->_children.rbegin();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::reverse_iterator
+ associative_node_base<Derived,Key,Data,Selector>::rbegin()
+ {
+ return this->_children.rbegin();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_reverse_iterator
+ associative_node_base<Derived,Key,Data,Selector>::crend() const
+ {
+ return this->_children.crend();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_reverse_iterator
+ associative_node_base<Derived,Key,Data,Selector>::rend() const
+ {
+ return this->_children.rend();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::reverse_iterator
+ associative_node_base<Derived,Key,Data,Selector>::rend()
+ {
+ return this->_children.rend();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<Derived,Key,Data,Selector>::size_type
+ associative_node_base<Derived,Key,Data,Selector>::size() const
+ {
+ return this->_children.size();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline bool associative_node_base<Derived,Key,Data,Selector>::empty() const
+ {
+ return this->_children.empty();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline void associative_node_base<Derived,Key,Data,Selector>::clear()
+ {
+ this->_children.clear();
+ this->on_post_clear();
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::const_iterator
+ associative_node_base<Derived,Key,Data,Selector>::find(
+ typename traits::key_type const& key
+ ) const
+ {
+ return this->_children.find(key);
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<Derived,Key,Data,Selector>::iterator
+ associative_node_base<Derived,Key,Data,Selector>::find(
+ typename traits::key_type const& key
+ )
+ {
+ return this->_children.find(key);
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::const_iterator_range
+ associative_node_base<Derived,Key,Data,Selector>::equal_range(
+ typename traits::key_type const& key
+ ) const
+ {
+ return this->_children.equal_range(key);
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::iterator_range
+ associative_node_base<Derived,Key,Data,Selector>::equal_range(
+ typename traits::key_type const& key
+ )
+ {
+ return this->_children.equal_range(key);
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ typename associative_node_base<Derived,Key,Data,Selector>::size_type
+ associative_node_base<Derived,Key,Data,Selector>::erase(
+ typename traits::key_type const& key
+ )
+ {
+ size_type result = this->_children.erase(key);
+ this->on_post_erase();
+ return result;
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename ...Args>
+ typename associative_node_base<Derived,Key,Data,Selector>::iterator
+ associative_node_base<Derived,Key,Data,Selector>::_add_child(
+ typename traits::key_type const& key
+ , Args&& ...args
+ )
+ {
+ typename ::boost::emplace_associative_function_gen<Selector>::type
+ emplacer;
+ ::std::pair<iterator,bool> p = emplacer(
+ this->_children
+ , key
+ , ::boost::forward<Args>(args)...
+ );
+
+ if (p.second)
+ {
+ this->_initialize(p.first);
+ }
+
+ return p.first;
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename Key \
+ , typename Data \
+ , typename Selector \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename associative_node_base<Derived,Key,Data,Selector>::iterator \
+ associative_node_base<Derived,Key,Data,Selector>::_add_child( \
+ typename traits::key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ typename ::boost::emplace_associative_function_gen<Selector>::type \
+ emplacer; \
+ ::std::pair<iterator,bool> p = emplacer( \
+ this->_children \
+ , key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ if (p.second) \
+ { \
+ this->_initialize(p.first); \
+ } \
+ return p.first; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_ASSOCIATIVE_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline void
+ associative_node_base<Derived,Key,Data,Selector>::_initialize(
+ iterator& itr
+ )
+ {
+ Derived& child = dereference_iterator(itr);
+
+ child._parent = this->get_derived();
+ child.on_post_inserted(
+ itr
+ , ::boost::has_stable_iterators_selector<Selector>()
+ );
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ void
+ associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::_link_children_to_parent()
+ {
+ iterator itr_end = this->end();
+
+ for (iterator itr = this->begin(); itr != itr_end; ++itr)
+ {
+ dereference_iterator(itr)._parent = this->get_derived();
+ }
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline void
+ associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::_on_post_modify_value(data_key const& key)
+ {
+ this->on_post_modify_value(key);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ template <typename FusionKey>
+ inline void
+ associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::_on_post_modify_value(FusionKey const& key)
+ {
+ this->on_post_modify_value(key);
+ }
+#endif
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type const&
+ get(
+ associative_node_base<Derived,Key,Data,Selector> const& node
+ , data_key const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ inline typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type&
+ get(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , data_key const& key
+ )
+ {
+ return node[key];
+ }
+
+#if !defined BOOST_NO_SFINAE
+ template <
+ typename DataKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<DataKey,data_key>
+ , typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type const&
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector> const& node)
+ {
+ return node[data_key()];
+ }
+
+ template <
+ typename DataKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<DataKey,data_key>
+ , typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type&
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector>& node)
+ {
+ return node[data_key()];
+ }
+#endif // BOOST_NO_SFINAE
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename V
+ >
+ inline void
+ put(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , data_key const& key
+ , V const& value
+ )
+ {
+ node[key] = value;
+ node._on_post_modify_value(key);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename FusionKey
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data const,FusionKey>
+ >::type
+ get(
+ associative_node_base<Derived,Key,Data,Selector> const& node
+ , FusionKey const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename FusionKey
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data,FusionKey>
+ >::type
+ get(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , FusionKey const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data const,FusionKey>
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector> const& node)
+ {
+ return node[FusionKey()];
+ }
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data,FusionKey>
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector>& node)
+ {
+ return node[FusionKey()];
+ }
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename FusionKey
+ , typename V
+ >
+ inline void
+ put(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type
+ )
+ {
+ node[key] = value;
+ node._on_post_modify_value(key);
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+}} // namespace boost::tree_node
+
+//[reference__associative_node_base_gen
+namespace boost { namespace tree_node {
+
+ template <typename Selector = ::boost::ptr_mapS>
+ struct associative_node_base_gen
+ {
+ template <typename Derived, typename Key, typename Data>
+ struct apply
+ {
+ typedef associative_node_base<Derived,Key,Data,Selector> type;
+ };
+ };
+
+ typedef associative_node_base_gen<> associative_node_base_default_gen;
+}} // namespace boost::tree_node
+//]
+
+namespace boost { namespace tree_node {
+
+ template <typename Key, typename Data, typename Selector>
+ struct associative_node
+ : public
+ //[reference__associative_node__bases
+ associative_node_base<
+ associative_node<Key,Data,Selector>
+ , Key
+ , Data
+ , Selector
+ >
+ //]
+ {
+ //[reference__associative_node__super_t
+ typedef associative_node_base<
+ associative_node
+ , Key
+ , Data
+ , Selector
+ >
+ super_t;
+ //]
+
+ //[reference__associative_node__traits
+ typedef typename super_t::traits
+ traits;
+ //]
+
+ //[reference__associative_node__pointer
+ typedef typename super_t::pointer
+ pointer;
+ //]
+
+ //[reference__associative_node__const_pointer
+ typedef typename super_t::const_pointer
+ const_pointer;
+ //]
+
+ //[reference__associative_node__iterator
+ typedef typename super_t::iterator
+ iterator;
+ //]
+
+ //[reference__associative_node__const_iterator
+ typedef typename super_t::const_iterator
+ const_iterator;
+ //]
+
+ //[reference__associative_node__reverse_iterator
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ //]
+
+ //[reference__associative_node__const_reverse_iterator
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ //]
+
+ //[reference__associative_node__size_type
+ typedef typename super_t::size_type
+ size_type;
+ //]
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(associative_node, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__associative_node__emplacement_ctor
+ template <typename ...Args>
+ explicit associative_node(Args&& ...args);
+ //]
+
+ //[reference__associative_node__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit associative_node(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (associative_node, super_t)
+ )
+
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF
+ , (associative_node, super_t)
+ )
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Key, typename Data, typename Selector>
+ template <typename ...Args>
+ inline associative_node<Key,Data,Selector>::associative_node(
+ Args&& ...args
+ ) : super_t(::boost::forward<Args>(args)...)
+ {
+ }
+
+ template <typename Key, typename Data, typename Selector>
+ template <typename ...Args>
+ inline associative_node<Key,Data,Selector>::associative_node(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ {
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+}} // namespace boost::tree_node
+
+//[reference__associative_node_gen
+namespace boost { namespace tree_node {
+
+ template <typename Selector = ::boost::ptr_mapS>
+ struct associative_node_gen
+ {
+ template <typename Key, typename Data>
+ struct apply
+ {
+ typedef associative_node<Key,Data,Selector> type;
+ };
+ };
+
+ typedef associative_node_gen<> associative_node_default_gen;
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_ASSOCIATIVE_NODE_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/associative_node_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/associative_node_fwd.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,293 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ASSOCIATIVE_NODE_FWD_HPP_INCLUDED
+#define BOOST_TREE_NODE_ASSOCIATIVE_NODE_FWD_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/key/data.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#endif
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#endif
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ class associative_node_base;
+
+ template <
+ typename Key
+ , typename Data
+ , typename Selector = ::boost::ptr_mapS
+ >
+ struct associative_node;
+}} // namespace boost::tree_node
+
+//[reference__associative_node_base__at_data_key__const
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type const&
+ get(
+ associative_node_base<Derived,Key,Data,Selector> const& node
+ , data_key const& key
+ );
+
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ template <
+ typename DataKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<DataKey,data_key>
+ , typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type const&
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector> const& node);
+//<-
+#endif // BOOST_NO_SFINAE
+//->
+}} // namespace boost::tree_node
+//]
+
+//[reference__associative_node_base__at_data_key
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename Key, typename Data, typename Selector>
+ typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type&
+ get(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , data_key const& key
+ );
+
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ template <
+ typename DataKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<DataKey,data_key>
+ , typename associative_node_base<
+ Derived
+ , Key
+ , Data
+ , Selector
+ >::traits::data_type&
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector>& node);
+//<-
+#endif // BOOST_NO_SFINAE
+//->
+}} // namespace boost::tree_node
+//]
+
+//[reference__associative_node_base__put_data
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename V
+ >
+ void
+ put(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , data_key const& key
+ , V const& value
+ );
+}} // namespace boost::tree_node
+//]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+//[reference__associative_node_base__at_key__const
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename FusionKey
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data const,FusionKey>
+ >::type
+ get(
+ associative_node_base<Derived,Key,Data,Selector> const& node
+ , FusionKey const& key
+ );
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data const,FusionKey>
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector> const& node);
+}} // namespace boost::tree_node
+//]
+
+//[reference__associative_node_base__at_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename FusionKey
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data,FusionKey>
+ >::type
+ get(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , FusionKey const& key
+ );
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<Data,FusionKey>
+ >::type
+ get(associative_node_base<Derived,Key,Data,Selector>& node);
+}} // namespace boost::tree_node
+//]
+
+//[reference__associative_node_base__put
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename Selector
+ , typename FusionKey
+ , typename V
+ >
+ void
+ put(
+ associative_node_base<Derived,Key,Data,Selector>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<Data>::type
+ , ::boost::fusion::traits::is_associative<Data>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ associative_node_base<Derived,Key,Data,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type = ::boost::mpl::true_()
+ );
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+#endif // BOOST_TREE_NODE_ASSOCIATIVE_NODE_FWD_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/balancer/adelson_velskii_landis.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/balancer/adelson_velskii_landis.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,177 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_BALANCER_ADELSON_VELSKII_LANDIS_HPP_INCLUDED
+#define BOOST_TREE_NODE_BALANCER_ADELSON_VELSKII_LANDIS_HPP_INCLUDED
+
+#include <boost/tree_node/key/height.hpp>
+
+//[reference__adelson_velskii_landis_balancer
+namespace boost { namespace tree_node {
+
+ struct adelson_velskii_landis_balancer
+ {
+ template <typename NodePointer>
+ static NodePointer post_insert(NodePointer node_ptr);
+
+ template <typename Node>
+ static bool choose_predecessor(Node const& node);
+
+ template <typename Node>
+ static bool pre_erase(Node const& node);
+
+ template <typename NodePointer>
+ static NodePointer post_erase_left(NodePointer node_ptr);
+
+ template <typename NodePointer>
+ static NodePointer post_erase_right(NodePointer node_ptr);
+
+ //<-
+ private:
+ template <typename NodePointer>
+ static NodePointer _balance(NodePointer node_ptr);
+ //->
+ };
+
+ //<-
+ template <typename NodePointer>
+ inline NodePointer
+ adelson_velskii_landis_balancer::post_insert(NodePointer node_ptr)
+ {
+ return adelson_velskii_landis_balancer::_balance(node_ptr);
+ }
+
+ template <typename Node>
+ inline bool adelson_velskii_landis_balancer::choose_predecessor(Node const& node)
+ {
+ return get(*node.get_right_child_ptr(), height_key()) < get(
+ *node.get_left_child_ptr()
+ , height_key()
+ );
+ }
+
+ template <typename Node>
+ inline bool adelson_velskii_landis_balancer::pre_erase(Node const& node)
+ {
+ return true;
+ }
+
+ template <typename NodePointer>
+ inline NodePointer
+ adelson_velskii_landis_balancer::post_erase_left(NodePointer node_ptr)
+ {
+ return adelson_velskii_landis_balancer::_balance(node_ptr);
+ }
+
+ template <typename NodePointer>
+ inline NodePointer
+ adelson_velskii_landis_balancer::post_erase_right(NodePointer node_ptr)
+ {
+ return adelson_velskii_landis_balancer::_balance(node_ptr);
+ }
+
+ template <typename NodePointer>
+ NodePointer adelson_velskii_landis_balancer::_balance(NodePointer node_ptr)
+ {
+ NodePointer grandparent_ptr;
+
+ for (
+ NodePointer parent_ptr;
+ (parent_ptr = node_ptr->get_parent_ptr()) && (
+ grandparent_ptr = parent_ptr->get_parent_ptr()
+ );
+ node_ptr = parent_ptr
+ )
+ {
+ if (
+ !grandparent_ptr->get_left_child_ptr() || (
+ grandparent_ptr->get_right_child_ptr() && (
+ 1 + get(
+ *grandparent_ptr->get_left_child_ptr()
+ , height_key()
+ ) < get(
+ *grandparent_ptr->get_right_child_ptr()
+ , height_key()
+ )
+ )
+ )
+ )
+ {
+ parent_ptr = grandparent_ptr->get_right_child_ptr();
+
+ if (
+ !parent_ptr->get_right_child_ptr() || (
+ parent_ptr->get_left_child_ptr() && (
+ get(
+ *parent_ptr->get_right_child_ptr()
+ , height_key()
+ ) < get(
+ *parent_ptr->get_left_child_ptr()
+ , height_key()
+ )
+ )
+ )
+ )
+ {
+ parent_ptr = parent_ptr->rotate_right();
+ }
+
+ grandparent_ptr = grandparent_ptr->rotate_left();
+
+ if (!grandparent_ptr->get_parent_ptr())
+ {
+ return grandparent_ptr;
+ }
+ }
+ else if (
+ !grandparent_ptr->get_right_child_ptr() || (
+ grandparent_ptr->get_left_child_ptr() && (
+ 1 + get(
+ *grandparent_ptr->get_right_child_ptr()
+ , height_key()
+ ) < get(
+ *grandparent_ptr->get_left_child_ptr()
+ , height_key()
+ )
+ )
+ )
+ )
+ {
+ parent_ptr = grandparent_ptr->get_left_child_ptr();
+
+ if (
+ !parent_ptr->get_left_child_ptr() || (
+ parent_ptr->get_right_child_ptr() && (
+ get(
+ *parent_ptr->get_left_child_ptr()
+ , height_key()
+ ) < get(
+ *parent_ptr->get_right_child_ptr()
+ , height_key()
+ )
+ )
+ )
+ )
+ {
+ parent_ptr = parent_ptr->rotate_left();
+ }
+
+ grandparent_ptr = grandparent_ptr->rotate_right();
+
+ if (!grandparent_ptr->get_parent_ptr())
+ {
+ return grandparent_ptr;
+ }
+ }
+ }
+
+ return node_ptr;
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_BALANCER_ADELSON_VELSKII_LANDIS_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/balancer/red_black.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/balancer/red_black.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,416 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_BALANCER_RED_BLACK_HPP_INCLUDED
+#define BOOST_TREE_NODE_BALANCER_RED_BLACK_HPP_INCLUDED
+
+#include <boost/utility/value_init.hpp>
+#include <boost/tree_node/key/red_black_flag.hpp>
+#include <boost/assert.hpp>
+
+//[reference__red_black_balancer
+namespace boost { namespace tree_node {
+
+ struct red_black_balancer
+ {
+ template <typename NodePointer>
+ static NodePointer post_insert(NodePointer node_ptr);
+
+ template <typename Node>
+ static bool choose_predecessor(Node const& node);
+
+ template <typename Node>
+ static bool pre_erase(Node const& node);
+
+ template <typename NodePointer>
+ static NodePointer post_erase_left(NodePointer node_ptr);
+
+ template <typename NodePointer>
+ static NodePointer post_erase_right(NodePointer node_ptr);
+
+ //<-
+ private:
+ template <typename NodePointer>
+ static NodePointer _balance(NodePointer node_ptr);
+ //->
+ };
+
+ //<-
+ template <typename NodePointer>
+ NodePointer red_black_balancer::post_insert(NodePointer node_ptr)
+ {
+ NodePointer parent_ptr;
+ NodePointer grandparent_ptr;
+ NodePointer uncle_ptr;
+
+ put(*node_ptr, red_flag_key(), true);
+
+ while ((parent_ptr = node_ptr->get_parent_ptr()))
+ {
+ if (get(*parent_ptr, black_flag_key()))
+ {
+ return node_ptr;
+ }
+
+ grandparent_ptr = parent_ptr->get_parent_ptr();
+
+ if (parent_ptr == grandparent_ptr->get_left_child_ptr())
+ {
+ if (
+ (
+ uncle_ptr = grandparent_ptr->get_right_child_ptr()
+ ) && get(*uncle_ptr, red_flag_key())
+ )
+ {
+ put(*parent_ptr, black_flag_key(), true);
+ put(*uncle_ptr, black_flag_key(), true);
+ put(*grandparent_ptr, red_flag_key(), true);
+ node_ptr = grandparent_ptr;
+ continue;
+ }
+ }
+ else // if (parent_ptr == grandparent_ptr->get_right_child_ptr())
+ {
+ if (
+ (
+ uncle_ptr = grandparent_ptr->get_left_child_ptr()
+ ) && get(*uncle_ptr, red_flag_key())
+ )
+ {
+ put(*parent_ptr, black_flag_key(), true);
+ put(*uncle_ptr, black_flag_key(), true);
+ put(*grandparent_ptr, red_flag_key(), true);
+ node_ptr = grandparent_ptr;
+ continue;
+ }
+ }
+
+ if (
+ (node_ptr == parent_ptr->get_right_child_ptr()) && (
+ parent_ptr == grandparent_ptr->get_left_child_ptr()
+ )
+ )
+ {
+ parent_ptr = parent_ptr->rotate_left();
+ node_ptr = node_ptr->get_left_child_ptr();
+ }
+ else if (
+ (node_ptr == parent_ptr->get_left_child_ptr()) && (
+ parent_ptr == grandparent_ptr->get_right_child_ptr()
+ )
+ )
+ {
+ parent_ptr = parent_ptr->rotate_right();
+ node_ptr = node_ptr->get_right_child_ptr();
+ }
+
+ grandparent_ptr = parent_ptr->get_parent_ptr();
+ put(*parent_ptr, black_flag_key(), true);
+ put(*grandparent_ptr, red_flag_key(), true);
+
+ return (node_ptr == parent_ptr->get_left_child_ptr()) ? (
+ grandparent_ptr->rotate_right()
+ ) : grandparent_ptr->rotate_left();
+ }
+
+ put(*node_ptr, black_flag_key(), true);
+ return node_ptr;
+ }
+
+ template <typename Node>
+ inline bool red_black_balancer::choose_predecessor(Node const& node)
+ {
+ typename Node::const_pointer succ_ptr = node.get_right_child_ptr();
+
+ while (succ_ptr->get_left_child_ptr())
+ {
+ succ_ptr = succ_ptr->get_left_child_ptr();
+ }
+
+ return get(*succ_ptr, black_flag_key()) && succ_ptr->empty();
+ }
+
+ template <typename Node>
+ inline bool red_black_balancer::pre_erase(Node const& node)
+ {
+ return get(node, black_flag_key());
+ }
+
+ template <typename NodePointer>
+ NodePointer red_black_balancer::post_erase_left(NodePointer node_ptr)
+ {
+ NodePointer result_ptr = ::boost::initialized_value;
+ NodePointer child_ptr = node_ptr->get_right_child_ptr();
+
+ if (get(*child_ptr, red_flag_key()))
+ {
+std::cout << "Right Sib 5.1" << std::endl;
+ put(*node_ptr, red_flag_key(), true);
+ put(*child_ptr, black_flag_key(), true);
+ result_ptr = node_ptr->rotate_left();
+ child_ptr = node_ptr->get_right_child_ptr();
+ }
+
+ NodePointer grandchild_ptr = child_ptr->get_right_child_ptr();
+
+ if (grandchild_ptr)
+ {
+ BOOST_ASSERT(get(*grandchild_ptr, red_flag_key()));
+std::cout << "Right Sib 5.3.2" << std::endl;
+ put(*grandchild_ptr, black_flag_key(), true);
+ put(
+ *child_ptr
+ , red_flag_key()
+ , get(*node_ptr, red_flag_key())
+ );
+ put(*node_ptr, black_flag_key(), true);
+
+ if (result_ptr)
+ {
+ node_ptr->rotate_left();
+ }
+ else
+ {
+ result_ptr = node_ptr->rotate_left();
+ }
+
+ return result_ptr;
+ }
+
+ if ((grandchild_ptr = child_ptr->get_left_child_ptr()))
+ {
+ BOOST_ASSERT(get(*grandchild_ptr, red_flag_key()));
+std::cout << "Right Sib 5.3.1" << std::endl;
+ put(
+ *(child_ptr = child_ptr->rotate_right())
+ , red_flag_key()
+ , get(*node_ptr, red_flag_key())
+ );
+ put(*node_ptr, black_flag_key(), true);
+
+ if (result_ptr)
+ {
+ node_ptr->rotate_left();
+ }
+ else
+ {
+ result_ptr = node_ptr->rotate_left();
+ }
+
+ return result_ptr;
+ }
+
+std::cout << "Right Sib 5.2" << std::endl;
+ put(*child_ptr, red_flag_key(), true);
+
+ if (result_ptr)
+ {
+ BOOST_ASSERT(get(*node_ptr, red_flag_key()));
+ put(*node_ptr, black_flag_key(), true);
+ return result_ptr;
+ }
+ else if (get(*node_ptr, red_flag_key()))
+ {
+ put(*node_ptr, black_flag_key(), true);
+ return node_ptr;
+ }
+ else
+ {
+ return red_black_balancer::_balance(node_ptr);
+ }
+ }
+
+ template <typename NodePointer>
+ NodePointer red_black_balancer::post_erase_right(NodePointer node_ptr)
+ {
+ NodePointer result_ptr = ::boost::initialized_value;
+ NodePointer child_ptr = node_ptr->get_left_child_ptr();
+
+ if (get(*child_ptr, red_flag_key()))
+ {
+std::cout << "Left Sib 5.1" << std::endl;
+ put(*node_ptr, red_flag_key(), true);
+ put(*child_ptr, black_flag_key(), true);
+ result_ptr = node_ptr->rotate_right();
+ child_ptr = node_ptr->get_left_child_ptr();
+ }
+
+ NodePointer grandchild_ptr = child_ptr->get_left_child_ptr();
+
+ if (grandchild_ptr)
+ {
+ BOOST_ASSERT(get(*grandchild_ptr, red_flag_key()));
+std::cout << "Left Sib 5.3.2" << std::endl;
+ put(*grandchild_ptr, black_flag_key(), true);
+ put(
+ *child_ptr
+ , red_flag_key()
+ , get(*node_ptr, red_flag_key())
+ );
+ put(*node_ptr, black_flag_key(), true);
+
+ if (result_ptr)
+ {
+ node_ptr->rotate_right();
+ }
+ else
+ {
+ result_ptr = node_ptr->rotate_right();
+ }
+
+ return result_ptr;
+ }
+
+ if ((grandchild_ptr = child_ptr->get_right_child_ptr()))
+ {
+ BOOST_ASSERT(get(*grandchild_ptr, red_flag_key()));
+std::cout << "Left Sib 5.3.1" << std::endl;
+ put(
+ *(child_ptr = child_ptr->rotate_left())
+ , red_flag_key()
+ , get(*node_ptr, red_flag_key())
+ );
+ put(*node_ptr, black_flag_key(), true);
+
+ if (result_ptr)
+ {
+ node_ptr->rotate_right();
+ }
+ else
+ {
+ result_ptr = node_ptr->rotate_right();
+ }
+
+ return result_ptr;
+ }
+
+std::cout << "Left Sib 5.2" << std::endl;
+ put(*child_ptr, red_flag_key(), true);
+
+ if (result_ptr)
+ {
+ BOOST_ASSERT(get(*node_ptr, red_flag_key()));
+ put(*node_ptr, black_flag_key(), true);
+ return result_ptr;
+ }
+ else if (get(*node_ptr, red_flag_key()))
+ {
+ put(*node_ptr, black_flag_key(), true);
+ return node_ptr;
+ }
+ else
+ {
+ return red_black_balancer::_balance(node_ptr);
+ }
+ }
+
+ template <typename NodePointer>
+ NodePointer red_black_balancer::_balance(NodePointer node_ptr)
+ {
+ NodePointer parent_ptr;
+ NodePointer sibling_ptr;
+ NodePointer nephew_ptr;
+
+ for (
+ bool is_left;
+ (parent_ptr = node_ptr->get_parent_ptr());
+ node_ptr = parent_ptr
+ )
+ {
+ sibling_ptr = (
+ is_left = (node_ptr == parent_ptr->get_left_child_ptr())
+ ) ? parent_ptr->get_right_child_ptr() : (
+ parent_ptr->get_left_child_ptr()
+ );
+
+ if (get(*sibling_ptr, red_flag_key()))
+ {
+std::cout << "5.1" << std::endl;
+ put(*parent_ptr, red_flag_key(), true);
+ put(*sibling_ptr, black_flag_key(), true);
+
+ if (is_left)
+ {
+ parent_ptr->rotate_left();
+ sibling_ptr = parent_ptr->get_right_child_ptr();
+ }
+ else
+ {
+ parent_ptr->rotate_right();
+ sibling_ptr = parent_ptr->get_left_child_ptr();
+ }
+
+ put(*sibling_ptr, red_flag_key(), true);
+ put(*parent_ptr, black_flag_key(), true);
+ return parent_ptr->get_parent_ptr();
+ }
+
+ nephew_ptr = is_left ? sibling_ptr->get_right_child_ptr() : (
+ sibling_ptr->get_left_child_ptr()
+ );
+
+ if (nephew_ptr)
+ {
+ if (get(*nephew_ptr, red_flag_key()))
+ {
+std::cout << "5.3.2" << std::endl;
+ put(*nephew_ptr, black_flag_key(), true);
+ put(
+ *sibling_ptr
+ , red_flag_key()
+ , get(*parent_ptr, red_flag_key())
+ );
+ put(*parent_ptr, black_flag_key(), true);
+ return is_left ? parent_ptr->rotate_left() : (
+ parent_ptr->rotate_right()
+ );
+ }
+ }
+
+ if (
+ (
+ nephew_ptr = is_left ? (
+ sibling_ptr->get_left_child_ptr()
+ ) : sibling_ptr->get_right_child_ptr()
+ )
+ )
+ {
+ if (get(*nephew_ptr, red_flag_key()))
+ {
+std::cout << "5.3.1" << std::endl;
+ put(
+ *(
+ sibling_ptr = is_left ? (
+ sibling_ptr->rotate_right()
+ ) : sibling_ptr->rotate_left()
+ )
+ , red_flag_key()
+ , get(*parent_ptr, red_flag_key())
+ );
+ put(*parent_ptr, black_flag_key(), true);
+ return is_left ? parent_ptr->rotate_left() : (
+ parent_ptr->rotate_right()
+ );
+ }
+ }
+
+std::cout << "5.2" << std::endl;
+ put(*sibling_ptr, red_flag_key(), true);
+
+ if (get(*parent_ptr, red_flag_key()))
+ {
+ put(*parent_ptr, black_flag_key(), true);
+ return parent_ptr;
+ }
+ }
+
+ return node_ptr;
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_BALANCER_RED_BLACK_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/base.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/base.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,247 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_BASE_HPP_INCLUDED
+#define BOOST_TREE_NODE_BASE_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/detail/base_pointee.hpp>
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived>
+ struct tree_node_base
+ : public ::boost::detail::base_pointee<Derived>
+ {
+ typedef typename ::boost::detail::base_pointee<Derived>::pointer
+ pointer;
+ typedef typename ::boost::detail::base_pointee<Derived>::const_pointer
+ const_pointer;
+ typedef void
+ super_t;
+
+ protected:
+ ~tree_node_base();
+
+ //[reference__tree_node_base__on_post_emplacement_construct
+ void on_post_emplacement_construct();
+ //]
+
+ //[reference__tree_node_base__on_post_modify_value_impl
+ template <typename Key>
+ void on_post_modify_value_impl(Key const& key);
+ //]
+
+ //[reference__tree_node_base__on_post_modify_value
+ template <typename Key>
+ void on_post_modify_value(Key const& key);
+ //]
+
+ //[reference__tree_node_base__on_post_propagate_value_impl
+ template <typename Key>
+ void on_post_propagate_value_impl(Key const& key);
+ //]
+
+ //[reference__tree_node_base__on_post_propagate_value
+ template <typename Key>
+ void on_post_propagate_value(Key const& key);
+ //]
+
+ //[reference__tree_node_base__on_post_propagate_value_once_impl
+ template <typename Key>
+ void on_post_propagate_value_once_impl(Key const& key);
+ //]
+
+ //[reference__tree_node_base__on_post_propagate_value_once
+ template <typename Key>
+ void on_post_propagate_value_once(Key const& key);
+ //]
+
+ //[reference__tree_node_base__on_post_inserted_impl__true
+ template <typename Iterator>
+ void on_post_inserted_impl(Iterator position, ::boost::mpl::true_);
+ //]
+
+ //[reference__tree_node_base__on_post_inserted_impl__false
+ template <typename Iterator>
+ void on_post_inserted_impl(Iterator position, ::boost::mpl::false_);
+ //]
+
+ //[reference__tree_node_base__on_post_inserted
+ template <typename Iterator, typename BooleanIntegralConstant>
+ void
+ on_post_inserted(
+ Iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ );
+ //]
+
+ //[reference__tree_node_base__on_post_erase_impl
+ void on_post_erase_impl();
+ //]
+
+ //[reference__tree_node_base__on_post_erase
+ void on_post_erase();
+ //]
+
+ //[reference__tree_node_base__on_post_clear_impl
+ void on_post_clear_impl();
+ //]
+
+ //[reference__tree_node_base__on_post_clear
+ void on_post_clear();
+ //]
+
+ //[reference__tree_node_base__on_post_rotate_left_impl
+ void on_post_rotate_left_impl();
+ //]
+
+ //[reference__tree_node_base__on_post_rotate_left
+ void on_post_rotate_left();
+ //]
+
+ //[reference__tree_node_base__on_post_rotate_right_impl
+ void on_post_rotate_right_impl();
+ //]
+
+ //[reference__tree_node_base__on_post_rotate_right
+ void on_post_rotate_right();
+ //]
+ };
+
+ template <typename Derived>
+ tree_node_base<Derived>::~tree_node_base()
+ {
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_emplacement_construct()
+ {
+ }
+
+ template <typename Derived>
+ template <typename Key>
+ inline void tree_node_base<Derived>::on_post_modify_value_impl(Key const&)
+ {
+ }
+
+ template <typename Derived>
+ template <typename Key>
+ inline void tree_node_base<Derived>::on_post_modify_value(Key const& key)
+ {
+ this->get_derived()->on_post_modify_value_impl(key);
+ }
+
+ template <typename Derived>
+ template <typename Key>
+ inline void
+ tree_node_base<Derived>::on_post_propagate_value_impl(Key const&)
+ {
+ }
+
+ template <typename Derived>
+ template <typename Key>
+ inline void
+ tree_node_base<Derived>::on_post_propagate_value(Key const& key)
+ {
+ this->get_derived()->on_post_propagate_value_impl(key);
+ }
+
+ template <typename Derived>
+ template <typename Key>
+ inline void
+ tree_node_base<Derived>::on_post_propagate_value_once_impl(Key const&)
+ {
+ }
+
+ template <typename Derived>
+ template <typename Key>
+ inline void
+ tree_node_base<Derived>::on_post_propagate_value_once(Key const& key)
+ {
+ this->get_derived()->on_post_propagate_value_once_impl(key);
+ }
+
+ template <typename Derived>
+ template <typename Iterator>
+ inline void
+ tree_node_base<Derived>::on_post_inserted_impl(
+ Iterator position
+ , ::boost::mpl::true_
+ )
+ {
+ }
+
+ template <typename Derived>
+ template <typename Iterator>
+ inline void
+ tree_node_base<Derived>::on_post_inserted_impl(
+ Iterator position
+ , ::boost::mpl::false_
+ )
+ {
+ }
+
+ template <typename Derived>
+ template <typename Iterator, typename BooleanIntegralConstant>
+ inline void
+ tree_node_base<Derived>::on_post_inserted(
+ Iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ )
+ {
+ this->get_derived()->on_post_inserted_impl(
+ position
+ , invalidates_sibling_positions
+ );
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_erase_impl()
+ {
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_erase()
+ {
+ this->get_derived()->on_post_erase_impl();
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_clear_impl()
+ {
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_clear()
+ {
+ this->get_derived()->on_post_clear_impl();
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_rotate_left_impl()
+ {
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_rotate_left()
+ {
+ this->get_derived()->on_post_rotate_left_impl();
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_rotate_right_impl()
+ {
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::on_post_rotate_right()
+ {
+ this->get_derived()->on_post_rotate_right_impl();
+ }
+}} // namespace boost::tree_node
+
+#endif // BOOST_TREE_NODE_BASE_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/binary_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/binary_node.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,2924 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_BINARY_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_BINARY_NODE_HPP_INCLUDED
+
+#include <iterator>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/container/scoped_allocator_fwd.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/binary_node_fwd.hpp>
+#include <boost/tree_node/traits/binary_node_fwd.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#include <boost/tree_node/intrinsic/get_keys.hpp>
+#include <boost/utility/value_init.hpp>
+#include <boost/assert.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#include <boost/container/allocator_traits.hpp>
+#endif
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/type_traits/is_pod.hpp>
+
+namespace boost {
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ struct is_POD<
+ ::boost::tree_node::binary_node_base<Derived,T,Size,Allocator>
+ > : ::boost::false_type
+ {
+ };
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ struct is_pod<
+ ::boost::tree_node::binary_node_base<Derived,T,Size,Allocator>
+ > : ::boost::false_type
+ {
+ };
+} // namespace boost
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/mpl/transform_view.hpp>
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+#include <boost/fusion/iterator/key_of.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/support/category_of.hpp>
+
+namespace boost { namespace tree_node { namespace result_of {
+
+ template <
+ typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ , typename FusionKey
+ >
+ struct has_key_impl<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ > : ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::has_key<T,FusionKey>
+ , ::std::tr1::is_same<FusionKey,data_key>
+ >::type
+ {
+ };
+
+ template <
+ typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ >
+ struct get_keys_impl<binary_node_base<Derived,T,Size,Allocator> >
+ : ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::transform_view<
+ T
+ , ::boost::fusion::result_of::key_of< ::boost::mpl::_>
+ >
+ , ::boost::mpl::vector1<data_key>
+ >
+ {
+ };
+}}} // namespace boost::tree_node::result_of
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+namespace boost { namespace tree_node { namespace _detail {
+
+ template <typename Node, typename IsReverse>
+ class binary_child_iterator
+ {
+#if !defined BOOST_NO_SFINAE
+ struct enabler
+ {
+ };
+#endif
+
+ public:
+ typedef ::std::random_access_iterator_tag iterator_category;
+ typedef Node value_type;
+ typedef ::std::ptrdiff_t difference_type;
+ typedef value_type* pointer;
+ typedef value_type& reference;
+
+ private:
+ class proxy
+ {
+ binary_child_iterator _itr;
+
+ public:
+ proxy(pointer const& p, difference_type n);
+
+ operator binary_child_iterator&();
+ };
+
+ public: // Should be private, but conversion ctor won't work.
+ pointer _current;
+ pointer _parent;
+
+ public:
+ binary_child_iterator();
+
+ explicit binary_child_iterator(pointer const& p);
+
+ binary_child_iterator(pointer const& p, bool p_is_child);
+
+ template <typename N, typename I>
+ binary_child_iterator(
+ binary_child_iterator<N,I> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type = enabler()
+#endif
+ );
+
+ reference operator*() const;
+
+ pointer operator->() const;
+
+ proxy operator[](difference_type n) const;
+
+ binary_child_iterator& operator++();
+
+ binary_child_iterator operator++(int);
+
+ binary_child_iterator& operator--();
+
+ binary_child_iterator operator--(int);
+
+ binary_child_iterator& operator+=(difference_type n);
+
+ binary_child_iterator operator+(difference_type n) const;
+
+ binary_child_iterator& operator-=(difference_type n);
+
+ binary_child_iterator operator-(difference_type n) const;
+
+ private:
+ void _iterate(pointer const& sibling);
+
+ void _advance(difference_type n);
+
+ template <typename N1, typename I1, typename N2, typename I2>
+ friend
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if< ::boost::mpl::equal_to<I1,I2>,bool>::type
+#endif
+ operator==(
+ binary_child_iterator<N1,I1> const& lhs
+ , binary_child_iterator<N2,I2> const& rhs
+ );
+
+ template <typename N1, typename I1, typename N2, typename I2>
+ friend
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if< ::boost::mpl::equal_to<I1,I2>,bool>::type
+#endif
+ operator<(
+ binary_child_iterator<N1,I1> const& lhs
+ , binary_child_iterator<N2,I2> const& rhs
+ );
+
+ template <typename N1, typename I1, typename N2, typename I2>
+ friend ::std::ptrdiff_t
+ operator-(
+ binary_child_iterator<N1,I1> const& lhs
+ , binary_child_iterator<N2,I2> const& rhs
+ );
+ };
+
+ template <typename Node, typename IsReverse>
+ binary_child_iterator<Node,IsReverse>::proxy::proxy(
+ pointer const& p
+ , difference_type n
+ ) : _itr(p, true)
+ {
+ this->_itr._advance(n);
+ }
+
+ template <typename Node, typename IsReverse>
+ inline binary_child_iterator<
+ Node
+ , IsReverse
+ >::proxy::operator binary_child_iterator&()
+ {
+ return this->_itr;
+ }
+
+ template <typename Node, typename IsReverse>
+ binary_child_iterator<Node,IsReverse>::binary_child_iterator()
+ : _current(::boost::initialized_value)
+ , _parent(::boost::initialized_value)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ binary_child_iterator<Node,IsReverse>::binary_child_iterator(
+ pointer const& p
+ , bool p_is_child
+ ) : _current(
+ p_is_child ? p : IsReverse::value ? (
+ p->get_right_child_ptr()
+ ? p->get_right_child_ptr()
+ : p->get_left_child_ptr()
+ ) : (
+ p->get_left_child_ptr()
+ ? p->get_left_child_ptr()
+ : p->get_right_child_ptr()
+ )
+ )
+ , _parent(p_is_child ? p->get_parent_ptr() : p)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ binary_child_iterator<Node,IsReverse>::binary_child_iterator(
+ pointer const& p
+ ) : _current(::boost::initialized_value), _parent(p)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ binary_child_iterator<Node,IsReverse>::binary_child_iterator(
+ binary_child_iterator<N,I> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type
+#endif
+ ) : _current(other._current), _parent(other._parent)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename binary_child_iterator<Node,IsReverse>::reference
+ binary_child_iterator<Node,IsReverse>::operator*() const
+ {
+ return *this->_current;
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename binary_child_iterator<Node,IsReverse>::pointer
+ binary_child_iterator<Node,IsReverse>::operator->() const
+ {
+ return this->_current;
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename binary_child_iterator<Node,IsReverse>::proxy
+ binary_child_iterator<Node,IsReverse>::operator[](
+ difference_type n
+ ) const
+ {
+ return proxy(this->_current, n);
+ }
+
+ template <typename Node, typename IsReverse>
+ inline binary_child_iterator<Node,IsReverse>&
+ binary_child_iterator<Node,IsReverse>::operator++()
+ {
+ this->_iterate(
+ IsReverse::value
+ ? this->_parent->get_left_child_ptr()
+ : this->_parent->get_right_child_ptr()
+ );
+ return *this;
+ }
+
+ template <typename Node, typename IsReverse>
+ binary_child_iterator<Node,IsReverse>
+ binary_child_iterator<Node,IsReverse>::operator++(int)
+ {
+ binary_child_iterator itr(*this);
+ ++(*this);
+ return itr;
+ }
+
+ template <typename Node, typename IsReverse>
+ inline binary_child_iterator<Node,IsReverse>&
+ binary_child_iterator<Node,IsReverse>::operator--()
+ {
+ if (this->_current)
+ {
+ this->_iterate(
+ IsReverse::value
+ ? this->_parent->get_right_child_ptr()
+ : this->_parent->get_left_child_ptr()
+ );
+ }
+ else if (IsReverse::value)
+ {
+ this->_current = this->_parent->get_left_child_ptr();
+
+ if (!this->_current)
+ {
+ this->_current = this->_parent->get_right_child_ptr();
+ }
+ }
+ else
+ {
+ this->_current = this->_parent->get_right_child_ptr();
+
+ if (!this->_current)
+ {
+ this->_current = this->_parent->get_left_child_ptr();
+ }
+ }
+
+ BOOST_ASSERT_MSG(this->_current, "Result not dereferenceable.");
+ return *this;
+ }
+
+ template <typename Node, typename IsReverse>
+ binary_child_iterator<Node,IsReverse>
+ binary_child_iterator<Node,IsReverse>::operator--(int)
+ {
+ binary_child_iterator itr(*this);
+ --(*this);
+ return itr;
+ }
+
+ template <typename Node, typename IsReverse>
+ inline binary_child_iterator<Node,IsReverse>&
+ binary_child_iterator<Node,IsReverse>::operator+=(difference_type n)
+ {
+ this->_advance(n);
+ return *this;
+ }
+
+ template <typename Node, typename IsReverse>
+ binary_child_iterator<Node,IsReverse>
+ binary_child_iterator<Node,IsReverse>::operator+(
+ difference_type n
+ ) const
+ {
+ binary_child_iterator itr(*this);
+ itr += n;
+ return itr;
+ }
+
+ template <typename Node, typename IsReverse>
+ inline binary_child_iterator<Node,IsReverse>&
+ binary_child_iterator<Node,IsReverse>::operator-=(difference_type n)
+ {
+ this->_advance(-n);
+ return *this;
+ }
+
+ template <typename Node, typename IsReverse>
+ binary_child_iterator<Node,IsReverse>
+ binary_child_iterator<Node,IsReverse>::operator-(
+ difference_type n
+ ) const
+ {
+ binary_child_iterator itr(*this);
+ itr -= n;
+ return itr;
+ }
+
+ template <typename Node, typename IsReverse>
+ inline void
+ binary_child_iterator<Node,IsReverse>::_iterate(pointer const& sibling)
+ {
+ this->_current = (
+ this->_current == sibling
+ ) ? ::boost::initialized_value : sibling;
+ }
+
+ template <typename Node, typename IsReverse>
+ inline void
+ binary_child_iterator<Node,IsReverse>::_advance(difference_type n)
+ {
+ switch (n)
+ {
+ case -2:
+ {
+ BOOST_ASSERT_MSG(
+ (
+ IsReverse::value
+ ? (
+ (
+ this->_current == (
+ this->_parent->get_left_child_ptr()
+ )
+ ) && this->_parent->get_right_child_ptr()
+ )
+ : (
+ (
+ this->_current == (
+ this->_parent->get_right_child_ptr()
+ )
+ ) && this->_parent->get_left_child_ptr()
+ )
+ )
+ , "n must be greater than -2."
+ );
+
+ this->_current = ::boost::initialized_value;
+ break;
+ }
+
+ case -1:
+ {
+ --(*this);
+ break;
+ }
+
+ case 0:
+ {
+ break;
+ }
+
+ case 1:
+ {
+ ++(*this);
+ break;
+ }
+
+ case 2:
+ {
+ BOOST_ASSERT_MSG(
+ (
+ IsReverse::value
+ ? (
+ (
+ this->_current == (
+ this->_parent->get_right_child_ptr()
+ )
+ ) && this->_parent->get_left_child_ptr()
+ )
+ : (
+ (
+ this->_current == (
+ this->_parent->get_left_child_ptr()
+ )
+ ) && this->_parent->get_right_child_ptr()
+ )
+ )
+ , "n must be less than 2."
+ );
+
+ this->_current = ::boost::initialized_value;
+ break;
+ }
+
+ default:
+ {
+ BOOST_ASSERT_MSG(false, "|n| must be less than 3.");
+ }
+ }
+ }
+
+ template <typename Node1, typename IsR1, typename Node2, typename IsR2>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if< ::boost::mpl::equal_to<IsR1,IsR2>,bool>::type
+#endif
+ operator==(
+ binary_child_iterator<Node1,IsR1> const& lhs
+ , binary_child_iterator<Node2,IsR2> const& rhs
+ )
+ {
+ return lhs._current == rhs._current;
+ }
+
+ template <typename Node1, typename IsR1, typename Node2, typename IsR2>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if< ::boost::mpl::equal_to<IsR1,IsR2>,bool>::type
+#endif
+ operator!=(
+ binary_child_iterator<Node1,IsR1> const& lhs
+ , binary_child_iterator<Node2,IsR2> const& rhs
+ )
+ {
+ return !(lhs == rhs);
+ }
+
+ template <typename Node1, typename IsR1, typename Node2, typename IsR2>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if< ::boost::mpl::equal_to<IsR1,IsR2>,bool>::type
+#endif
+ operator<(
+ binary_child_iterator<Node1,IsR1> const& lhs
+ , binary_child_iterator<Node2,IsR2> const& rhs
+ )
+ {
+ BOOST_ASSERT_MSG(lhs._parent, "lhs is unreachable.");
+ BOOST_ASSERT_MSG(rhs._parent, "rhs is unreachable.");
+ BOOST_ASSERT_MSG(
+ rhs._parent == lhs._parent
+ , "Neither iterator is reachable from one other."
+ );
+
+ if (lhs._current)
+ {
+ if (rhs._current)
+ {
+ return rhs._current == lhs._parent->get_right_child_ptr();
+ }
+ else
+ {
+ return true;
+ }
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ template <typename Node1, typename IsR1, typename Node2, typename IsR2>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if< ::boost::mpl::equal_to<IsR1,IsR2>,bool>::type
+#endif
+ operator>(
+ binary_child_iterator<Node1,IsR1> const& lhs
+ , binary_child_iterator<Node2,IsR2> const& rhs
+ )
+ {
+ return rhs < lhs;
+ }
+
+ template <typename Node1, typename IsR1, typename Node2, typename IsR2>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if< ::boost::mpl::equal_to<IsR1,IsR2>,bool>::type
+#endif
+ operator<=(
+ binary_child_iterator<Node1,IsR1> const& lhs
+ , binary_child_iterator<Node2,IsR2> const& rhs
+ )
+ {
+ return !(rhs < lhs);
+ }
+
+ template <typename Node1, typename IsR1, typename Node2, typename IsR2>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if< ::boost::mpl::equal_to<IsR1,IsR2>,bool>::type
+#endif
+ operator>=(
+ binary_child_iterator<Node1,IsR1> const& lhs
+ , binary_child_iterator<Node2,IsR2> const& rhs
+ )
+ {
+ return !(lhs < rhs);
+ }
+
+ template <typename Node, typename IsReverse>
+ inline binary_child_iterator<Node,IsReverse>
+ operator+(
+ typename binary_child_iterator<Node,IsReverse>::difference_type n
+ , binary_child_iterator<Node,IsReverse> const& itr
+ )
+ {
+ return itr + n;
+ }
+
+ template <typename Node1, typename IsR1, typename Node2, typename IsR2>
+ inline ::std::ptrdiff_t
+ operator-(
+ binary_child_iterator<Node1,IsR1> const& lhs
+ , binary_child_iterator<Node2,IsR2> const& rhs
+ )
+ {
+ BOOST_ASSERT_MSG(lhs._parent, "lhs is unreachable.");
+ BOOST_ASSERT_MSG(rhs._parent, "rhs is unreachable.");
+ BOOST_ASSERT_MSG(
+ rhs._parent == lhs._parent
+ , "Neither iterator is reachable from one other."
+ );
+
+ if (lhs._current == rhs._current)
+ {
+ return 0;
+ }
+ else if (lhs._current)
+ {
+ if (rhs._current)
+ {
+ return (
+ rhs._current == lhs._parent->get_left_child_ptr()
+ ) ? 1 : -1;
+ }
+ else
+ {
+ return (
+ lhs._parent->get_left_child_ptr() && (
+ lhs._parent->get_right_child_ptr()
+ )
+ ) ? 2 : 1;
+ }
+ }
+ else
+ {
+ return (
+ rhs._parent->get_left_child_ptr() && (
+ rhs._parent->get_right_child_ptr()
+ )
+ ) ? -2 : -1;
+ }
+ }
+}}} // namespace boost::tree_node::_detail
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ class binary_node_base
+ : public
+ //[reference__binary_node_base__bases
+ tree_node_base<Derived>
+ //]
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ , public data_key
+#endif
+ , private ::boost::noncopyable
+ {
+ template <typename D>
+ friend struct binary_node_traits;
+
+ public:
+ //[reference__binary_node_base__super_t
+ typedef tree_node_base<Derived> super_t;
+ //]
+
+ //[reference__binary_node_base__traits
+ struct traits
+ {
+ typedef T
+ data_type;
+ typedef typename ::std::tr1::remove_reference<Allocator>::type
+ allocator;
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_reference<Allocator>
+ , Allocator
+ , typename ::std::tr1::add_reference<
+ typename ::std::tr1::add_const<Allocator>::type
+ >::type
+ >::type
+ allocator_reference;
+ };
+ //]
+
+ //[reference__binary_node_base__pointer
+ typedef typename super_t::pointer pointer;
+ //]
+
+ //[reference__binary_node_base__const_pointer
+ typedef typename super_t::const_pointer const_pointer;
+ //]
+
+ typedef _detail::binary_child_iterator<Derived,::boost::mpl::false_>
+ iterator;
+ typedef _detail::binary_child_iterator<
+ Derived const
+ , ::boost::mpl::false_
+ >
+ const_iterator;
+ typedef _detail::binary_child_iterator<Derived,::boost::mpl::true_>
+ reverse_iterator;
+ typedef _detail::binary_child_iterator<
+ Derived const
+ , ::boost::mpl::true_
+ >
+ const_reverse_iterator;
+
+#if 0
+ //[reference__binary_node_base__iterator
+ typedef implementation_defined iterator;
+ //]
+
+ //[reference__binary_node_base__const_iterator
+ typedef implementation_defined const_iterator;
+ //]
+
+ //[reference__binary_node_base__reverse_iterator
+ typedef implementation_defined reverse_iterator;
+ //]
+
+ //[reference__binary_node_base__const_reverse_iterator
+ typedef implementation_defined const_reverse_iterator;
+ //]
+#endif
+
+ //[reference__binary_node_base__size_type
+ typedef Size size_type;
+ //]
+
+ private:
+ typename traits::data_type _data;
+ Allocator _allocator;
+ pointer _left_child;
+ pointer _right_child;
+ pointer _parent;
+
+ protected:
+ //[reference__binary_node_base__derived_copy_ctor
+ binary_node_base(Derived const& copy);
+ //]
+
+ //[reference__binary_node_base__derived_copy_ctor_w_allocator
+ binary_node_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ );
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ binary_node_base(BOOST_RV_REF(Derived) source);
+
+ binary_node_base(
+ BOOST_RV_REF(Derived) source
+ , typename traits::allocator_reference allocator
+ );
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__binary_node_base__emplacement_ctor
+ template <typename ...Args>
+ explicit binary_node_base(Args&& ...args);
+ //]
+
+ //[reference__binary_node_base__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit binary_node_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL
+ , binary_node_base
+ )
+
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL
+ , binary_node_base
+ )
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~binary_node_base();
+
+ //[reference__binary_node_base__on_post_copy_or_move
+ void on_post_copy_or_move();
+ //]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //[reference__binary_node_base__copy_assign
+ void copy_assign(Derived const& copy);
+ //]
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ public:
+ //[reference__binary_node_base__key_value_operator__const
+ typename traits::data_type const& operator[](data_key const&) const;
+
+//<-
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+//->
+ template <typename FusionKey>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ operator[](FusionKey const&) const;
+//<-
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+//->
+ //]
+
+ //[reference__binary_node_base__key_value_operator
+ typename traits::data_type& operator[](data_key const&);
+
+//<-
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+//->
+ template <typename FusionKey>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ operator[](FusionKey const&);
+//<-
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+//->
+ //]
+
+ //[reference__binary_node_base__get_parent_ptr__const
+ const_pointer get_parent_ptr() const;
+ //]
+
+ //[reference__binary_node_base__get_parent_ptr
+ pointer get_parent_ptr();
+ //]
+
+ //[reference__binary_node_base__insert_left
+ iterator insert_left(Derived const& child);
+ //]
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__binary_node_base__emplace_left
+ template <typename ...Args>
+ iterator emplace_left(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ emplace_left( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_BINARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_BINARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ //[reference__binary_node_base__insert_right
+ iterator insert_right(Derived const& child);
+ //]
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__binary_node_base__emplace_right
+ template <typename ...Args>
+ iterator emplace_right(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ emplace_right( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_BINARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_BINARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ //[reference__binary_node_base__get_left_child_ptr__const
+ const_pointer get_left_child_ptr() const;
+ //]
+
+ //[reference__binary_node_base__get_left_child_ptr
+ pointer get_left_child_ptr();
+ //]
+
+ //[reference__binary_node_base__get_right_child_ptr__const
+ const_pointer get_right_child_ptr() const;
+ //]
+
+ //[reference__binary_node_base__get_right_child_ptr
+ pointer get_right_child_ptr();
+ //]
+
+ //[reference__binary_node_base__cbegin
+ const_iterator cbegin() const;
+ const_iterator begin() const;
+ //]
+
+ //[reference__binary_node_base__begin
+ iterator begin();
+ //]
+
+ //[reference__binary_node_base__cend
+ const_iterator cend() const;
+ const_iterator end() const;
+ //]
+
+ //[reference__binary_node_base__end
+ iterator end();
+ //]
+
+ //[reference__binary_node_base__crbegin
+ const_reverse_iterator crbegin() const;
+ const_reverse_iterator rbegin() const;
+ //]
+
+ //[reference__binary_node_base__rbegin
+ reverse_iterator rbegin();
+ //]
+
+ //[reference__binary_node_base__crend
+ const_reverse_iterator crend() const;
+ const_reverse_iterator rend() const;
+ //]
+
+ //[reference__binary_node_base__rend
+ reverse_iterator rend();
+ //]
+
+ //[reference__binary_node_base__size
+ size_type size() const;
+ //]
+
+ //[reference__binary_node_base__empty
+ bool empty() const;
+ //]
+
+ //[reference__binary_node_base__clear
+ void clear();
+ //]
+
+ //[reference__binary_node_base__rotate_left
+ pointer rotate_left();
+ //]
+
+ //[reference__binary_node_base__rotate_right
+ pointer rotate_right();
+ //]
+
+ //[reference__binary_node_base__erase_left
+ bool erase_left();
+ //]
+
+ //[reference__binary_node_base__erase_right
+ bool erase_right();
+ //]
+
+ private:
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ static typename traits::allocator_reference
+ _construct_from(
+ typename traits::allocator_reference allocator
+ , ::std::tr1::true_type
+ );
+
+ static Allocator
+ _construct_from(
+ typename traits::allocator_reference allocator
+ , ::std::tr1::false_type
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ iterator _add_child(pointer const& child);
+
+ void _link_children_to_parent();
+
+ void _on_post_modify_value(data_key const& key);
+
+ void _set_parent_ptr(pointer p);
+
+ void _set_left_child_ptr(pointer p);
+
+ void _set_right_child_ptr(pointer p);
+
+ template <typename D, typename T0, typename S, typename A, typename V>
+ friend void
+ put(binary_node_base<D,T0,S,A>&, data_key const&, V const&);
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename FusionKey>
+ void _on_post_modify_value(FusionKey const& key);
+
+ template <
+ typename D
+ , typename T0
+ , typename S
+ , typename A
+ , typename FK
+ , typename V
+ >
+ friend void
+ put(
+ binary_node_base<D,T0,S,A>& node
+ , FK const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T0>::type
+ , ::boost::fusion::traits::is_associative<T0>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<binary_node_base<D,T0,S,A>,FK>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ };
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ binary_node_base<Derived,T,Size,Allocator>::binary_node_base(
+ Derived const& copy
+ ) : _data(copy._data)
+ , _allocator(
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ copy._allocator
+#else
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::select_on_container_copy_construction(copy._allocator)
+#endif
+ )
+ , _left_child(
+ copy._left_child ? (
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.allocate(1)
+#else
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::allocate(this->_allocator, 1)
+#endif
+ ) : ::boost::initialized_value
+ )
+ , _right_child(
+ copy._right_child ? (
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.allocate(1)
+#else
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::allocate(this->_allocator, 1)
+#endif
+ ) : ::boost::initialized_value
+ )
+ , _parent(::boost::initialized_value)
+ {
+ if (this->_left_child)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.construct(
+ this->_left_child
+ , *copy.get_left_child_ptr()
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::construct(
+ this->_allocator
+ , this->_left_child
+ , *copy.get_left_child_ptr()
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ }
+
+ if (this->_right_child)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.construct(
+ this->_right_child
+ , *copy.get_right_child_ptr()
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::construct(
+ this->_allocator
+ , this->_right_child
+ , *copy.get_right_child_ptr()
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ }
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ binary_node_base<Derived,T,Size,Allocator>::binary_node_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ ) : _data(copy._data)
+ , _allocator(
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ allocator
+#else
+ this->_construct_from(
+ allocator
+ , typename ::std::tr1::is_reference<Allocator>::type()
+ )
+#endif
+ )
+ , _left_child(
+ copy._left_child ? (
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.allocate(1)
+#else
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::allocate(this->_allocator, 1)
+#endif
+ ) : ::boost::initialized_value
+ )
+ , _right_child(
+ copy._right_child ? (
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.allocate(1)
+#else
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::allocate(this->_allocator, 1)
+#endif
+ ) : ::boost::initialized_value
+ )
+ , _parent(::boost::initialized_value)
+ {
+ if (this->_left_child)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.construct(
+ this->_left_child
+ , *copy.get_left_child_ptr()
+ , allocator
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::construct(
+ this->_allocator
+ , this->_left_child
+ , *copy.get_left_child_ptr()
+ , allocator
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ }
+
+ if (this->_right_child)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.construct(
+ this->_right_child
+ , *copy.get_right_child_ptr()
+ , allocator
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::construct(
+ this->_allocator
+ , this->_right_child
+ , *copy.get_right_child_ptr()
+ , allocator
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ }
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ binary_node_base<Derived,T,Size,Allocator>::binary_node_base(
+ BOOST_RV_REF(Derived) source
+ ) : _data(::boost::move(source._data))
+ , _allocator(::boost::move(source._allocator))
+ , _left_child(source._left_child)
+ , _right_child(source._right_child)
+ , _parent(::boost::initialized_value)
+ {
+ source._left_child = source._right_child = ::boost::initialized_value;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ binary_node_base<Derived,T,Size,Allocator>::binary_node_base(
+ BOOST_RV_REF(Derived) source
+ , typename traits::allocator_reference allocator
+ ) : _data(::boost::move(source._data))
+ , _allocator(
+ this->_construct_from(
+ allocator
+ , typename ::std::tr1::is_reference<Allocator>::type()
+ )
+ )
+ , _left_child(source._left_child)
+ , _right_child(source._right_child)
+ , _parent(::boost::initialized_value)
+ {
+ source._left_child = source._right_child = ::boost::initialized_value;
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ template <typename ...Args>
+ binary_node_base<Derived,T,Size,Allocator>::binary_node_base(
+ Args&& ...args
+ ) : _data(::boost::forward<Args>(args)...)
+ , _allocator()
+ , _left_child(::boost::initialized_value)
+ , _right_child(::boost::initialized_value)
+ , _parent(::boost::initialized_value)
+ {
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ template <typename ...Args>
+ binary_node_base<Derived,T,Size,Allocator>::binary_node_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : _data(::boost::forward<Args>(args)...)
+ , _allocator(
+ this->_construct_from(
+ allocator
+ , typename ::std::tr1::is_reference<Allocator>::type()
+ )
+ )
+ , _left_child(::boost::initialized_value)
+ , _right_child(::boost::initialized_value)
+ , _parent(::boost::initialized_value)
+ {
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename T \
+ , typename Size \
+ , typename Allocator \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ binary_node_base<Derived,T,Size,Allocator>::binary_node_base( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) : _data( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ , _allocator() \
+ , _left_child(::boost::initialized_value) \
+ , _right_child(::boost::initialized_value) \
+ , _parent(::boost::initialized_value) \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_BINARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_BINARY_NODE_MACRO
+
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename T \
+ , typename Size \
+ , typename Allocator \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ binary_node_base<Derived,T,Size,Allocator>::binary_node_base( \
+ ::boost::container::allocator_arg_t \
+ , typename traits::allocator_reference allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) : _data( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ , _allocator( \
+ this->_construct_from( \
+ allocator \
+ , typename ::std::tr1::is_reference<Allocator>::type() \
+ ) \
+ ) \
+ , _left_child(::boost::initialized_value) \
+ , _right_child(::boost::initialized_value) \
+ , _parent(::boost::initialized_value) \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_BINARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_BINARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ binary_node_base<Derived,T,Size,Allocator>::~binary_node_base()
+ {
+ if (this->_left_child)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.destroy(this->_left_child);
+ this->_allocator.deallocate(this->_left_child, 1);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::destroy(this->_allocator, this->_left_child);
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::deallocate(this->_allocator, this->_left_child, 1);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ }
+
+ if (this->_right_child)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.destroy(this->_right_child);
+ this->_allocator.deallocate(this->_right_child, 1);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::destroy(this->_allocator, this->_right_child);
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::deallocate(this->_allocator, this->_right_child, 1);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ }
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline void
+ binary_node_base<Derived,T,Size,Allocator>::on_post_copy_or_move()
+ {
+ this->_link_children_to_parent();
+ this->on_post_modify_value(data_key());
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ void
+ binary_node_base<Derived,T,Size,Allocator>::copy_assign(
+ Derived const& copy
+ )
+ {
+ Derived twin(copy);
+
+ if (this->_left_child)
+ {
+ this->_allocator.destroy(this->_left_child);
+ this->_allocator.deallocate(this->_left_child, 1);
+ }
+
+ if (this->_right_child)
+ {
+ this->_allocator.destroy(this->_right_child);
+ this->_allocator.deallocate(this->_right_child, 1);
+ }
+
+ this->_data = twin._data;
+ this->_left_child = twin._left_child;
+ this->_right_child = twin._right_child;
+ twin._left_child = twin._right_child = ::boost::initialized_value;
+ }
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ void
+ binary_node_base<Derived,T,Size,Allocator>::copy_assign(
+ BOOST_COPY_ASSIGN_REF(Derived) copy
+ )
+ {
+ Derived twin(static_cast<Derived const&>(copy));
+
+ if (this->_left_child)
+ {
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::destroy(this->_allocator, this->_left_child);
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::deallocate(this->_allocator, this->_left_child, 1);
+ }
+
+ if (this->_right_child)
+ {
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::destroy(this->_allocator, this->_right_child);
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::deallocate(this->_allocator, this->_right_child, 1);
+ }
+
+ this->_data = ::boost::move(twin._data);
+ this->_left_child = twin._left_child;
+ this->_right_child = twin._right_child;
+ twin._left_child = twin._right_child = ::boost::initialized_value;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline void
+ binary_node_base<Derived,T,Size,Allocator>::move_assign(
+ BOOST_RV_REF(Derived) source
+ )
+ {
+ if (this->_left_child)
+ {
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::destroy(this->_allocator, this->_left_child);
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::deallocate(this->_allocator, this->_left_child, 1);
+ }
+
+ if (this->_right_child)
+ {
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::destroy(this->_allocator, this->_right_child);
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::deallocate(this->_allocator, this->_right_child, 1);
+ }
+
+ this->_data = ::boost::move(source._data);
+ this->_left_child = source._left_child;
+ this->_right_child = source._right_child;
+ source._left_child = source._right_child = ::boost::initialized_value;
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::traits::data_type const&
+ binary_node_base<Derived,T,Size,Allocator>::operator[](
+ data_key const&
+ ) const
+ {
+ return this->_data;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::traits::data_type&
+ binary_node_base<Derived,T,Size,Allocator>::operator[](data_key const&)
+ {
+ return this->_data;
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ template <typename FusionKey>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ binary_node_base<Derived,T,Size,Allocator>::operator[](
+ FusionKey const&
+ ) const
+ {
+ return ::boost::fusion::at_key<FusionKey>(this->_data);
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ template <typename FusionKey>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ binary_node_base<Derived,T,Size,Allocator>::operator[](
+ FusionKey const&
+ )
+ {
+ return ::boost::fusion::at_key<FusionKey>(this->_data);
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::const_pointer
+ binary_node_base<Derived,T,Size,Allocator>::get_parent_ptr() const
+ {
+ return this->_parent;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::pointer
+ binary_node_base<Derived,T,Size,Allocator>::get_parent_ptr()
+ {
+ return this->_parent;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ typename binary_node_base<Derived,T,Size,Allocator>::iterator
+ binary_node_base<Derived,T,Size,Allocator>::insert_left(
+ Derived const& child
+ )
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ pointer p(this->_allocator.allocate(1));
+ this->_allocator.construct(p, child);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ pointer p(
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::allocate(this->_allocator, 1)
+ );
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::construct(this->_allocator, p, child);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ pointer c = p->_left_child;
+
+ if (c)
+ {
+ while (c->_left_child)
+ {
+ c = c->_left_child;
+ }
+
+ c->_add_child(c->_left_child = this->_left_child);
+ this->_left_child = ::boost::initialized_value;
+ this->on_post_erase();
+ }
+
+ return this->_add_child(this->_left_child = p);
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ template <typename ...Args>
+ typename binary_node_base<Derived,T,Size,Allocator>::iterator
+ binary_node_base<Derived,T,Size,Allocator>::emplace_left(
+ Args&& ...args
+ )
+ {
+ if (this->_left_child)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ pointer p(this->_allocator.allocate(1));
+ this->_allocator.construct(p, ::boost::forward<Args>(args)...);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ pointer p(
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::allocate(this->_allocator, 1)
+ );
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::construct(this->_allocator, p, ::boost::forward<Args>(args)...);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ p->_add_child(p->_left_child = this->_left_child);
+ this->_left_child = ::boost::initialized_value;
+ this->on_post_erase();
+ return this->_add_child(this->_left_child = p);
+ }
+ else
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.construct(
+ this->_left_child = this->_allocator.allocate(1)
+ , ::boost::forward<Args>(args)...
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::construct(
+ this->_allocator
+ , this->_left_child = ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::allocate(this->_allocator, 1)
+ , ::boost::forward<Args>(args)...
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return this->_add_child(this->_left_child);
+ }
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename T \
+ , typename Size \
+ , typename Allocator \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binary_node_base<Derived,T,Size,Allocator>::iterator \
+ binary_node_base<Derived,T,Size,Allocator>::emplace_left( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ if (this->_left_child) \
+ { \
+ pointer p(this->_allocator.allocate(1)); \
+ this->_allocator.construct( \
+ p \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ p->_add_child(p->_left_child = this->_left_child); \
+ this->_left_child = ::boost::initialized_value; \
+ this->on_post_erase(); \
+ return this->_add_child(this->_left_child = p); \
+ } \
+ else \
+ { \
+ this->_allocator.construct( \
+ this->_left_child = this->_allocator.allocate(1) \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return this->_add_child(this->_left_child); \
+ } \
+ } \
+//!
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename T \
+ , typename Size \
+ , typename Allocator \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binary_node_base<Derived,T,Size,Allocator>::iterator \
+ binary_node_base<Derived,T,Size,Allocator>::emplace_left( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ if (this->_left_child) \
+ { \
+ pointer p( \
+ ::boost::container::allocator_traits< \
+ typename traits::allocator \
+ >::allocate(this->_allocator, 1) \
+ ); \
+ ::boost::container::allocator_traits< \
+ typename traits::allocator \
+ >::construct( \
+ this->_allocator \
+ , p \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ p->_add_child(p->_left_child = this->_left_child); \
+ this->_left_child = ::boost::initialized_value; \
+ this->on_post_erase(); \
+ return this->_add_child(this->_left_child = p); \
+ } \
+ else \
+ { \
+ ::boost::container::allocator_traits< \
+ typename traits::allocator \
+ >::construct( \
+ this->_allocator \
+ , this->_left_child = ::boost::container::allocator_traits< \
+ typename traits::allocator \
+ >::allocate(this->_allocator, 1) \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return this->_add_child(this->_left_child); \
+ } \
+ } \
+//!
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_BINARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_BINARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ typename binary_node_base<Derived,T,Size,Allocator>::iterator
+ binary_node_base<Derived,T,Size,Allocator>::insert_right(
+ Derived const& child
+ )
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ pointer p(this->_allocator.allocate(1));
+ this->_allocator.construct(p, child);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ pointer p(
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::allocate(this->_allocator, 1)
+ );
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::construct(this->_allocator, p, child);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ pointer c = p->_right_child;
+
+ if (c)
+ {
+ while (c->_right_child)
+ {
+ c = c->_right_child;
+ }
+
+ c->_add_child(c->_right_child = this->_right_child);
+ this->_right_child = ::boost::initialized_value;
+ this->on_post_erase();
+ }
+
+ return this->_add_child(this->_right_child = p);
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ template <typename ...Args>
+ typename binary_node_base<Derived,T,Size,Allocator>::iterator
+ binary_node_base<Derived,T,Size,Allocator>::emplace_right(
+ Args&& ...args
+ )
+ {
+ if (this->_right_child)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ pointer p(this->_allocator.allocate(1));
+ this->_allocator.construct(p, ::boost::forward<Args>(args)...);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ pointer p(
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::allocate(this->_allocator, 1)
+ );
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::construct(this->_allocator, p, ::boost::forward<Args>(args)...);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ p->_add_child(p->_right_child = this->_right_child);
+ this->_right_child = ::boost::initialized_value;
+ this->on_post_erase();
+ return this->_add_child(this->_right_child = p);
+ }
+ else
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.construct(
+ this->_right_child = this->_allocator.allocate(1)
+ , ::boost::forward<Args>(args)...
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::construct(
+ this->_allocator
+ , this->_right_child = ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::allocate(this->_allocator, 1)
+ , ::boost::forward<Args>(args)...
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return this->_add_child(this->_right_child);
+ }
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename T \
+ , typename Size \
+ , typename Allocator \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binary_node_base<Derived,T,Size,Allocator>::iterator \
+ binary_node_base<Derived,T,Size,Allocator>::emplace_right( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ if (this->_right_child) \
+ { \
+ pointer p(this->_allocator.allocate(1)); \
+ this->_allocator.construct( \
+ p \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ p->_add_child(p->_right_child = this->_right_child); \
+ this->_right_child = ::boost::initialized_value; \
+ this->on_post_erase(); \
+ return this->_add_child(this->_right_child = p); \
+ } \
+ else \
+ { \
+ this->_allocator.construct( \
+ this->_right_child = this->_allocator.allocate(1) \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return this->_add_child(this->_right_child); \
+ } \
+ } \
+//!
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_TREE_NODE_BINARY_NODE_MACRO(z, n, _) \
+ template < \
+ typename Derived \
+ , typename T \
+ , typename Size \
+ , typename Allocator \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binary_node_base<Derived,T,Size,Allocator>::iterator \
+ binary_node_base<Derived,T,Size,Allocator>::emplace_right( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ if (this->_right_child) \
+ { \
+ pointer p( \
+ ::boost::container::allocator_traits< \
+ typename traits::allocator \
+ >::allocate(this->_allocator, 1) \
+ ); \
+ ::boost::container::allocator_traits< \
+ typename traits::allocator \
+ >::construct( \
+ this->_allocator \
+ , p \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ p->_add_child(p->_right_child = this->_right_child); \
+ this->_right_child = ::boost::initialized_value; \
+ this->on_post_erase(); \
+ return this->_add_child(this->_right_child = p); \
+ } \
+ else \
+ { \
+ ::boost::container::allocator_traits< \
+ typename traits::allocator \
+ >::construct( \
+ this->_allocator \
+ , this->_right_child = ::boost::container::allocator_traits< \
+ typename traits::allocator \
+ >::allocate(this->_allocator, 1) \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return this->_add_child(this->_right_child); \
+ } \
+ } \
+//!
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_BINARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_BINARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::const_pointer
+ binary_node_base<Derived,T,Size,Allocator>::get_left_child_ptr() const
+ {
+ return this->_left_child;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::pointer
+ binary_node_base<Derived,T,Size,Allocator>::get_left_child_ptr()
+ {
+ return this->_left_child;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::const_pointer
+ binary_node_base<Derived,T,Size,Allocator>::get_right_child_ptr() const
+ {
+ return this->_right_child;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::pointer
+ binary_node_base<Derived,T,Size,Allocator>::get_right_child_ptr()
+ {
+ return this->_right_child;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::const_iterator
+ binary_node_base<Derived,T,Size,Allocator>::cbegin() const
+ {
+ return const_iterator(this->get_derived(), false);
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::const_iterator
+ binary_node_base<Derived,T,Size,Allocator>::begin() const
+ {
+ return const_iterator(this->get_derived(), false);
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::iterator
+ binary_node_base<Derived,T,Size,Allocator>::begin()
+ {
+ return iterator(this->get_derived(), false);
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::const_iterator
+ binary_node_base<Derived,T,Size,Allocator>::cend() const
+ {
+ return const_iterator(this->get_derived());
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::const_iterator
+ binary_node_base<Derived,T,Size,Allocator>::end() const
+ {
+ return const_iterator(this->get_derived());
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::iterator
+ binary_node_base<Derived,T,Size,Allocator>::end()
+ {
+ return iterator(this->get_derived());
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::const_reverse_iterator
+ binary_node_base<Derived,T,Size,Allocator>::crbegin() const
+ {
+ return const_reverse_iterator(this->get_derived(), false);
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::const_reverse_iterator
+ binary_node_base<Derived,T,Size,Allocator>::rbegin() const
+ {
+ return const_reverse_iterator(this->get_derived(), false);
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::reverse_iterator
+ binary_node_base<Derived,T,Size,Allocator>::rbegin()
+ {
+ return reverse_iterator(this->get_derived(), false);
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::const_reverse_iterator
+ binary_node_base<Derived,T,Size,Allocator>::crend() const
+ {
+ return const_reverse_iterator(this->get_derived());
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::const_reverse_iterator
+ binary_node_base<Derived,T,Size,Allocator>::rend() const
+ {
+ return const_reverse_iterator(this->get_derived());
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::reverse_iterator
+ binary_node_base<Derived,T,Size,Allocator>::rend()
+ {
+ return reverse_iterator(this->get_derived());
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::size_type
+ binary_node_base<Derived,T,Size,Allocator>::size() const
+ {
+ return (
+ this->_left_child
+ ? (this->_right_child ? 2 : 1)
+ : (this->_right_child ? 1 : 0)
+ );
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline bool binary_node_base<Derived,T,Size,Allocator>::empty() const
+ {
+ return !this->_left_child && !this->_right_child;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline void binary_node_base<Derived,T,Size,Allocator>::clear()
+ {
+ if (this->_left_child)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.destroy(this->_left_child);
+ this->_allocator.deallocate(this->_left_child, 1);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::destroy(this->_allocator, this->_left_child);
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::deallocate(this->_allocator, this->_left_child, 1);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ }
+
+ if (this->_right_child)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.destroy(this->_right_child);
+ this->_allocator.deallocate(this->_right_child, 1);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::destroy(this->_allocator, this->_right_child);
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::deallocate(this->_allocator, this->_right_child, 1);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ }
+
+ this->_left_child = this->_right_child = ::boost::initialized_value;
+ this->on_post_clear();
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::pointer
+ binary_node_base<Derived,T,Size,Allocator>::rotate_left()
+ {
+ pointer pivot = this->_right_child;
+
+ pivot->_parent = this->_parent;
+
+ if ((this->_right_child = pivot->_left_child))
+ {
+ this->_right_child->_parent = this->get_derived();
+ }
+
+ pivot->_left_child = this->get_derived();
+
+ if (this->_parent)
+ {
+ if (this->_parent->_left_child == this->get_derived())
+ {
+ this->_parent->_left_child = pivot;
+ }
+ else // if (this->_parent->_right_child == this->get_derived())
+ {
+ this->_parent->_right_child = pivot;
+ }
+ }
+
+ this->_parent = pivot;
+ this->on_post_rotate_left();
+ return pivot;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<Derived,T,Size,Allocator>::pointer
+ binary_node_base<Derived,T,Size,Allocator>::rotate_right()
+ {
+ pointer pivot = this->_left_child;
+
+ pivot->_parent = this->_parent;
+
+ if ((this->_left_child = pivot->_right_child))
+ {
+ this->_left_child->_parent = this->get_derived();
+ }
+
+ pivot->_right_child = this->get_derived();
+
+ if (this->_parent)
+ {
+ if (this->_parent->_right_child == this->get_derived())
+ {
+ this->_parent->_right_child = pivot;
+ }
+ else // if (this->_parent->_left_child == this->get_derived())
+ {
+ this->_parent->_left_child = pivot;
+ }
+ }
+
+ this->_parent = pivot;
+ this->on_post_rotate_right();
+ return pivot;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline bool binary_node_base<Derived,T,Size,Allocator>::erase_left()
+ {
+ if (this->_left_child)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.destroy(this->_left_child);
+ this->_allocator.deallocate(this->_left_child, 1);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::destroy(this->_allocator, this->_left_child);
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::deallocate(this->_allocator, this->_left_child, 1);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_left_child = ::boost::initialized_value;
+ this->on_post_erase();
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline bool binary_node_base<Derived,T,Size,Allocator>::erase_right()
+ {
+ if (this->_right_child)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.destroy(this->_right_child);
+ this->_allocator.deallocate(this->_right_child, 1);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::destroy(this->_allocator, this->_right_child);
+ ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::deallocate(this->_allocator, this->_right_child, 1);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_right_child = ::boost::initialized_value;
+ this->on_post_erase();
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::traits::allocator_reference
+ binary_node_base<Derived,T,Size,Allocator>::_construct_from(
+ typename traits::allocator_reference allocator
+ , ::std::tr1::true_type
+ )
+ {
+ return allocator;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline Allocator
+ binary_node_base<Derived,T,Size,Allocator>::_construct_from(
+ typename traits::allocator_reference allocator
+ , ::std::tr1::false_type
+ )
+ {
+ return ::boost::container::allocator_traits<
+ typename traits::allocator
+ >::select_on_container_copy_construction(allocator);
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ typename binary_node_base<Derived,T,Size,Allocator>::iterator
+ binary_node_base<Derived,T,Size,Allocator>::_add_child(
+ pointer const& child
+ )
+ {
+ child->_parent = this->get_derived();
+ iterator result(child, true);
+ result->on_post_inserted(result, ::boost::mpl::true_());
+ return result;
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline void
+ binary_node_base<Derived,T,Size,Allocator>::_link_children_to_parent()
+ {
+ if (this->_left_child)
+ {
+ this->_left_child->_parent = this->get_derived();
+ }
+
+ if (this->_right_child)
+ {
+ this->_right_child->_parent = this->get_derived();
+ }
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline void
+ binary_node_base<Derived,T,Size,Allocator>::_on_post_modify_value(
+ data_key const& key
+ )
+ {
+ this->on_post_modify_value(key);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ template <typename FusionKey>
+ inline void
+ binary_node_base<Derived,T,Size,Allocator>::_on_post_modify_value(
+ FusionKey const& key
+ )
+ {
+ this->on_post_modify_value(key);
+ }
+#endif
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline void
+ binary_node_base<Derived,T,Size,Allocator>::_set_parent_ptr(pointer p)
+ {
+ if (this->_parent)
+ {
+ if (this->get_derived() == this->_parent->_left_child)
+ {
+ this->_parent->_left_child = ::boost::initialized_value;
+ }
+ else // if (this->get_derived() == this->_parent->_right_child)
+ {
+ this->_parent->_right_child = ::boost::initialized_value;
+ }
+
+ this->_parent->on_post_erase();
+ }
+
+ if ((this->_parent = p))
+ {
+ this->on_post_inserted(
+ iterator(this->get_derived(), true)
+ , ::boost::mpl::true_()
+ );
+ }
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline void
+ binary_node_base<Derived,T,Size,Allocator>::_set_left_child_ptr(
+ pointer p
+ )
+ {
+ if (this->_left_child)
+ {
+ this->_left_child = ::boost::initialized_value;
+ this->on_post_erase();
+ }
+
+ if ((this->_left_child = p))
+ {
+ p->_parent = this->get_derived();
+ p->on_post_inserted(iterator(p, true), ::boost::mpl::true_());
+ }
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline void
+ binary_node_base<Derived,T,Size,Allocator>::_set_right_child_ptr(
+ pointer p
+ )
+ {
+ if (this->_right_child)
+ {
+ this->_right_child = ::boost::initialized_value;
+ this->on_post_erase();
+ }
+
+ if ((this->_right_child = p))
+ {
+ p->_parent = this->get_derived();
+ p->on_post_inserted(iterator(p, true), ::boost::mpl::true_());
+ }
+ }
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::traits::data_type const&
+ get(
+ binary_node_base<Derived,T,Size,Allocator> const& node
+ , data_key const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ inline typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::traits::data_type&
+ get(
+ binary_node_base<Derived,T,Size,Allocator>& node
+ , data_key const& key
+ )
+ {
+ return node[key];
+ }
+
+#if !defined BOOST_NO_SFINAE
+ template <
+ typename Key
+ , typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::traits::data_type const&
+ >::type
+ get(binary_node_base<Derived,T,Size,Allocator> const& node)
+ {
+ return node[data_key()];
+ }
+
+ template <
+ typename Key
+ , typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename binary_node_base<Derived,T,Size,Allocator>::traits::data_type&
+ >::type
+ get(binary_node_base<Derived,T,Size,Allocator>& node)
+ {
+ return node[data_key()];
+ }
+#endif // BOOST_NO_SFINAE
+
+ template <
+ typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ , typename V
+ >
+ inline void
+ put(
+ binary_node_base<Derived,T,Size,Allocator>& node
+ , data_key const& key
+ , V const& value
+ )
+ {
+ node[key] = value;
+ node._on_post_modify_value(key);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <
+ typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ , typename FusionKey
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ get(
+ binary_node_base<Derived,T,Size,Allocator> const& node
+ , FusionKey const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <
+ typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ , typename FusionKey
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ get(
+ binary_node_base<Derived,T,Size,Allocator>& node
+ , FusionKey const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <
+ typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ , typename FusionKey
+ , typename V
+ >
+ inline void
+ put(
+ binary_node_base<Derived,T,Size,Allocator>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type
+ )
+ {
+ node[key] = value;
+ node._on_post_modify_value(key);
+ }
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ get(binary_node_base<Derived,T,Size,Allocator> const& node)
+ {
+ return node[FusionKey()];
+ }
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ get(binary_node_base<Derived,T,Size,Allocator>& node)
+ {
+ return node[FusionKey()];
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+}} // namespace boost::tree_node
+
+//[reference__binary_node_base_gen
+namespace boost { namespace tree_node {
+
+ template <
+ typename Size = ::boost::uint32_t
+ , typename AllocatorSelector = ::boost::std_allocator_selector
+ >
+ struct binary_node_base_gen
+ {
+ template <typename Derived, typename T>
+ struct apply
+ {
+ typedef binary_node_base<
+ Derived
+ , T
+ , Size
+ , typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , Derived
+ >::type
+ >
+ type;
+ };
+ };
+
+ typedef binary_node_base_gen<> binary_node_base_default_gen;
+}} // namespace boost::tree_node
+//]
+
+namespace boost { namespace tree_node {
+
+ template <typename T, typename Size, typename AllocatorSelector>
+ struct binary_node
+ : public
+ //[reference__binary_node__bases
+ binary_node_base<
+ binary_node<T,Size,AllocatorSelector>
+ , T
+ , Size
+ , typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , binary_node<T,Size,AllocatorSelector>
+ >::type
+ >
+ //]
+ {
+ //[reference__binary_node__super_t
+ typedef binary_node_base<
+ binary_node
+ , T
+ , Size
+ , typename ::boost::mpl::apply_wrap1<
+ AllocatorSelector
+ , binary_node
+ >::type
+ >
+ super_t;
+ //]
+
+ //[reference__binary_node__traits
+ typedef typename super_t::traits
+ traits;
+ //]
+
+ //[reference__binary_node__pointer
+ typedef typename super_t::pointer
+ pointer;
+ //]
+
+ //[reference__binary_node__const_pointer
+ typedef typename super_t::const_pointer
+ const_pointer;
+ //]
+
+ //[reference__binary_node__iterator
+ typedef typename super_t::iterator
+ iterator;
+ //]
+
+ //[reference__binary_node__const_iterator
+ typedef typename super_t::const_iterator
+ const_iterator;
+ //]
+
+ //[reference__binary_node__reverse_iterator
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ //]
+
+ //[reference__binary_node__const_reverse_iterator
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ //]
+
+ //[reference__binary_node__size_type
+ typedef typename super_t::size_type
+ size_type;
+ //]
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(binary_node, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__binary_node__emplacement_ctor
+ template <typename ...Args>
+ explicit binary_node(Args&& ...args);
+ //]
+
+ //[reference__binary_node__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit binary_node(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (binary_node, super_t)
+ )
+
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF
+ , (binary_node, super_t)
+ )
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename T, typename Size, typename AllocatorSelector>
+ template <typename ...Args>
+ inline binary_node<T,Size,AllocatorSelector>::binary_node(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ {
+ }
+
+ template <typename T, typename Size, typename AllocatorSelector>
+ template <typename ...Args>
+ inline binary_node<T,Size,AllocatorSelector>::binary_node(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ {
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+}} // namespace boost::tree_node
+
+//[reference__binary_node_gen
+namespace boost { namespace tree_node {
+
+ template <
+ typename Size = ::boost::uint32_t
+ , typename AllocatorSelector = ::boost::std_allocator_selector
+ >
+ struct binary_node_gen
+ {
+ template <typename T>
+ struct apply
+ {
+ typedef binary_node<T,Size,AllocatorSelector> type;
+ };
+ };
+
+ typedef binary_node_gen<> binary_node_default_gen;
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_BINARY_NODE_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/binary_node_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/binary_node_fwd.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,289 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_BINARY_NODE_FWD_HPP_INCLUDED
+#define BOOST_TREE_NODE_BINARY_NODE_FWD_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/cstdint.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/key/data.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/equal_to.hpp>
+#endif
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#endif
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ class binary_node_base;
+
+ template <
+ typename T
+ , typename Size = ::boost::uint32_t
+ , typename AllocatorSelector = ::boost::std_allocator_selector
+ >
+ struct binary_node;
+}} // namespace boost::tree_node
+
+//[reference__binary_node_base__at_data_key__const
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Size, typename Allocator>
+ typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::traits::data_type const&
+ get(
+ binary_node_base<Derived,T,Size,Allocator> const& node
+ , data_key const& key
+ );
+
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ template <
+ typename Key
+ , typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename binary_node_base<
+ Derived
+ , T
+ , Size
+ , Allocator
+ >::traits::data_type const&
+ >::type
+ get(binary_node_base<Derived,T,Size,Allocator> const& node);
+//<-
+#endif // BOOST_NO_SFINAE
+//->
+}} // namespace boost::tree_node
+//]
+
+//[reference__binary_node_base__at_data_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ >
+ typename binary_node_base<Derived,T,Size,Allocator>::traits::data_type&
+ get(
+ binary_node_base<Derived,T,Size,Allocator>& node
+ , data_key const& key
+ );
+
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ template <
+ typename Key
+ , typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename binary_node_base<Derived,T,Size,Allocator>::traits::data_type&
+ >::type
+ get(binary_node_base<Derived,T,Size,Allocator>& node);
+//<-
+#endif // BOOST_NO_SFINAE
+//->
+}} // namespace boost::tree_node
+//]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+//[reference__binary_node_base__at_key__const
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ , typename FusionKey
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ get(
+ binary_node_base<Derived,T,Size,Allocator> const& node
+ , FusionKey const& key
+ );
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ get(binary_node_base<Derived,T,Size,Allocator> const& node);
+}} // namespace boost::tree_node
+//]
+
+//[reference__binary_node_base__at_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ , typename FusionKey
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ get(binary_node_base<Derived,T,Size,Allocator>& node, FusionKey const& key);
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ get(binary_node_base<Derived,T,Size,Allocator>& node);
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+//[reference__binary_node_base__put_data
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ , typename V
+ >
+ void
+ put(
+ binary_node_base<Derived,T,Size,Allocator>& node
+ , data_key const& key
+ , V const& value
+ );
+}} // namespace boost::tree_node
+//]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+//[reference__binary_node_base__put
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename T
+ , typename Size
+ , typename Allocator
+ , typename FusionKey
+ , typename V
+ >
+ void
+ put(
+ binary_node_base<Derived,T,Size,Allocator>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ binary_node_base<Derived,T,Size,Allocator>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type = ::boost::mpl::true_()
+ );
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+#endif // BOOST_TREE_NODE_BINARY_NODE_FWD_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/container/binode.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/container/binode.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,2038 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_CONTAINER_BINODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_CONTAINER_BINODE_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_CXX11_NULLPTR
+#include <cstddef>
+#endif
+
+#include <utility>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/iterator/transform_iterator.hpp>
+#include <boost/utility/value_init.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#include <boost/container/allocator_traits.hpp>
+#endif
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/key/data.hpp>
+#include <boost/tree_node/key/count.hpp>
+#include <boost/tree_node/iterator/in_order.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#include <boost/tree_node/intrinsic/value_at_key.hpp>
+#include <boost/tree_node/algorithm/binary_descendant_at_index.hpp>
+#include <boost/tree_node/container/binode_fwd.hpp>
+#include <boost/assert.hpp>
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename NodeGenerator
+ , typename T
+ , typename Balancer
+ >
+ class binode_container
+ {
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ BOOST_COPYABLE_AND_MOVABLE(binode_container)
+#endif
+
+ public:
+ //[reference__binode_container__value_type
+ typedef T value_type;
+ //]
+
+ //[reference__binode_container__reference
+ typedef value_type& reference;
+ //]
+
+ //[reference__binode_container__const_reference
+ typedef value_type const& const_reference;
+ //]
+
+ //[reference__binode_container__pointer
+ typedef value_type* pointer;
+ //]
+
+ //[reference__binode_container__const_pointer
+ typedef value_type const* const_pointer;
+ //]
+
+ //[reference__binode_container__node
+ typedef typename ::boost::mpl::apply_wrap1<
+ NodeGenerator
+ , value_type
+ >::type
+ node;
+ //]
+
+ //[reference__binode_container__allocator_type
+ typedef typename node::traits::allocator allocator_type;
+ //]
+
+ private:
+ //[reference__binode_container__transform_function
+ struct transform_function
+ {
+ const_reference operator()(node const& n) const;
+ reference operator()(node& n) const;
+ };
+ //]
+
+ public:
+ //[reference__binode_container__iterator
+ typedef ::boost::transform_iterator<
+ transform_function
+ , in_order_iterator<node>
+ >
+ iterator;
+ //]
+
+ //[reference__binode_container__const_iterator
+ typedef ::boost::transform_iterator<
+ transform_function
+ , in_order_iterator<node const>
+ >
+ const_iterator;
+ //]
+
+ //[reference__binode_container__reverse_iterator
+ typedef ::boost::transform_iterator<
+ transform_function
+ , in_order_iterator<node,::boost::mpl::true_>
+ >
+ reverse_iterator;
+ //]
+
+ //[reference__binode_container__const_reverse_iterator
+ typedef ::boost::transform_iterator<
+ transform_function
+ , in_order_iterator<node const,::boost::mpl::true_>
+ >
+ const_reverse_iterator;
+ //]
+
+ //[reference__binode_container__size_type
+ typedef typename ::boost::mpl::eval_if<
+ result_of::has_key<node,count_key>
+ , result_of::value_at_key<node,count_key>
+ , typename node::size_type
+ >::type
+ size_type;
+ //]
+
+ private:
+ allocator_type _allocator;
+ typename node::pointer _root_ptr;
+
+ public:
+ //[reference__binode_container__default_ctor
+ binode_container();
+ //]
+
+ //[reference__binode_container__ctor_w_alloc
+ explicit binode_container(allocator_type const& allocator);
+ //]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //[reference__binode_container__copy_ctor
+ binode_container(binode_container const& copy);
+ //]
+#else
+ binode_container(
+ BOOST_COPY_ASSIGN_REF(binode_container) copy
+ );
+#endif
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //[reference__binode_container__copy_ctor_w_alloc
+ binode_container(
+ binode_container const& copy
+ , allocator_type const& allocator
+ );
+ //]
+#else
+ binode_container(
+ BOOST_COPY_ASSIGN_REF(binode_container) copy
+ , allocator_type const& allocator
+ );
+#endif
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //[reference__binode_container__copy_assign
+ binode_container& operator=(binode_container const& copy);
+ //]
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ binode_container(
+ BOOST_RV_REF(binode_container) source
+ );
+
+ binode_container(
+ BOOST_RV_REF(binode_container) source
+ , allocator_type const& allocator
+ );
+
+ binode_container& operator=(BOOST_RV_REF(binode_container) source);
+
+ binode_container&
+ operator=(BOOST_COPY_ASSIGN_REF(binode_container) copy);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ //[reference__binode_container__dtor
+ ~binode_container();
+ //]
+
+ //[reference__binode_container__data__const
+ typename node::const_pointer data() const;
+ //]
+
+ //[reference__binode_container__data
+ typename node::pointer data();
+ //]
+
+ //[reference__binode_container__cbegin
+ const_iterator cbegin() const;
+ const_iterator begin() const;
+ //]
+
+ //[reference__binode_container__begin
+ iterator begin();
+ //]
+
+ //[reference__binode_container__cend
+ const_iterator cend() const;
+ const_iterator end() const;
+ //]
+
+ //[reference__binode_container__end
+ iterator end();
+ //]
+
+ //[reference__binode_container__crbegin
+ const_reverse_iterator crbegin() const;
+ const_reverse_iterator rbegin() const;
+ //]
+
+ //[reference__binode_container__rbegin
+ reverse_iterator rbegin();
+ //]
+
+ //[reference__binode_container__crend
+ const_reverse_iterator crend() const;
+ const_reverse_iterator rend() const;
+ //]
+
+ //[reference__binode_container__rend
+ reverse_iterator rend();
+ //]
+
+ //[reference__binode_container__cback
+ const_reference back() const;
+ //]
+
+ //[reference__binode_container__back
+ reference back();
+ //]
+
+ //[reference__binode_container__push_back
+ void push_back(const_reference t);
+ //]
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__binode_container__emplace_back
+ template <typename ...Args>
+ void emplace_back(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_CONTAINER_BINARY_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ void \
+ emplace_back( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ //[reference__binode_container__pop_back
+ void pop_back();
+ //]
+
+ //[reference__binode_container__cfront
+ const_reference front() const;
+ //]
+
+ //[reference__binode_container__front
+ reference front();
+ //]
+
+ //[reference__binode_container__push_front
+ void push_front(const_reference t);
+ //]
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__binode_container__emplace_front
+ template <typename ...Args>
+ void emplace_front(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_CONTAINER_BINARY_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ void \
+ emplace_front( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ //[reference__binode_container__pop_front
+ void pop_front();
+ //]
+
+ //[reference__binode_container__insert
+ iterator insert(const_iterator itr, const_reference t);
+ //]
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__binode_container__emplace
+ template <typename ...Args>
+ iterator emplace(const_iterator itr, Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_CONTAINER_BINARY_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ emplace( \
+ const_iterator itr \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ //[reference__binode_container__erase
+ iterator erase(const_iterator p);
+ //]
+
+ //[reference__binode_container__erase_range
+ void erase(const_iterator itr, const_iterator itr_end);
+ //]
+
+ //[reference__binode_container__empty
+ bool empty() const;
+ //]
+
+ //[reference__binode_container__clear
+ void clear();
+ //]
+
+ //[reference__binode_container__size
+ size_type size() const;
+ //]
+
+ //[reference__binode_container__index_operator__const
+ const_reference operator[](size_type index) const;
+ //]
+
+ //[reference__binode_container__index_operator
+ reference operator[](size_type index);
+ //]
+
+ private:
+ static typename node::pointer
+ _construct_from(
+ ::std::tr1::true_type
+ , allocator_type& allocator
+ , value_type const& value
+ );
+
+ static typename node::pointer
+ _construct_from(
+ ::std::tr1::false_type
+ , allocator_type& allocator
+ , value_type const& value
+ );
+
+ static typename node::pointer
+ _construct_from(
+ ::std::tr1::true_type
+ , allocator_type& allocator
+ , typename node::pointer p
+ );
+
+ static typename node::pointer
+ _construct_from(
+ ::std::tr1::false_type
+ , allocator_type& allocator
+ , typename node::pointer p
+ );
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ static typename node::pointer
+ _construct_from(
+ ::std::tr1::true_type
+ , allocator_type& allocator
+ , Args&& ...args
+ );
+
+ template <typename ...Args>
+ static typename node::pointer
+ _construct_from(
+ ::std::tr1::false_type
+ , allocator_type& allocator
+ , Args&& ...args
+ );
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_CONTAINER_BINARY_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ static typename node::pointer \
+ _construct_from( \
+ ::std::tr1::true_type \
+ , allocator_type& allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ static typename node::pointer \
+ _construct_from( \
+ ::std::tr1::false_type \
+ , allocator_type& allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ size_type _size(::boost::mpl::true_) const;
+
+ size_type _size(::boost::mpl::false_) const;
+
+ typename node::const_pointer _back() const;
+
+ typename node::pointer _back();
+ };
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::const_reference
+ binode_container<
+ NodeGenerator
+ , T
+ , Balancer
+ >::transform_function::operator()(node const& n) const
+ {
+ return get(n, data_key());
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::reference
+ binode_container<
+ NodeGenerator
+ , T
+ , Balancer
+ >::transform_function::operator()(node& n) const
+ {
+ return get(n, data_key());
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ binode_container<NodeGenerator,T,Balancer>::binode_container()
+ : _allocator()
+ , _root_ptr(
+#if defined BOOST_NO_CXX11_NULLPTR
+ 0
+#else
+ nullptr
+#endif
+ )
+ {
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ binode_container<NodeGenerator,T,Balancer>::binode_container(
+ allocator_type const& allocator
+ ) : _allocator(allocator)
+ , _root_ptr(
+#if defined BOOST_NO_CXX11_NULLPTR
+ 0
+#else
+ nullptr
+#endif
+ )
+ {
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ typename binode_container<NodeGenerator,T,Balancer>::node::pointer
+ binode_container<NodeGenerator,T,Balancer>::_construct_from(
+ ::std::tr1::true_type
+ , allocator_type& allocator
+ , typename node::pointer p
+ )
+ {
+ if (p)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(allocator.allocate(1));
+ allocator.construct(result, *p);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::allocate(allocator, 1)
+ );
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::construct(allocator, result, *p);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return result;
+ }
+ else
+ {
+ return p;
+ }
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ typename binode_container<NodeGenerator,T,Balancer>::node::pointer
+ binode_container<NodeGenerator,T,Balancer>::_construct_from(
+ ::std::tr1::false_type
+ , allocator_type& allocator
+ , typename node::pointer p
+ )
+ {
+ if (p)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(allocator.allocate(1));
+ allocator.construct(result, *p, allocator);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::allocate(allocator, 1)
+ );
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::construct(allocator, result, *p, allocator);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return result;
+ }
+ else
+ {
+ return p;
+ }
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ binode_container<NodeGenerator,T,Balancer>::binode_container(
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ binode_container const& copy
+#else
+ BOOST_COPY_ASSIGN_REF(binode_container) copy
+#endif
+ ) : _allocator(copy._allocator)
+ , _root_ptr(
+ this->_construct_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , copy._root_ptr
+ )
+ )
+ {
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ binode_container<NodeGenerator,T,Balancer>::binode_container(
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ binode_container const& copy
+#else
+ BOOST_COPY_ASSIGN_REF(binode_container) copy
+#endif
+ , allocator_type const& allocator
+ ) : _allocator(copy._allocator)
+ , _root_ptr(
+ this->_construct_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , copy._root_ptr
+ )
+ )
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename NodeGenerator, typename T, typename Balancer>
+ binode_container<NodeGenerator,T,Balancer>::binode_container(
+ BOOST_RV_REF(binode_container) source
+ ) : _allocator(::boost::move(source._allocator))
+ , _root_ptr(source._root_ptr)
+ {
+#if defined BOOST_NO_CXX11_NULLPTR
+ source._root_ptr = 0;
+#else
+ source._root_ptr = nullptr;
+#endif
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ binode_container<NodeGenerator,T,Balancer>::binode_container(
+ BOOST_RV_REF(binode_container) source
+ , allocator_type const& allocator
+ ) : _allocator(allocator), _root_ptr(source._root_ptr)
+ {
+#if defined BOOST_NO_CXX11_NULLPTR
+ source._root_ptr = 0;
+#else
+ source._root_ptr = nullptr;
+#endif
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline binode_container<NodeGenerator,T,Balancer>&
+ binode_container<NodeGenerator,T,Balancer>::operator=(
+ BOOST_RV_REF(binode_container) source
+ )
+ {
+ if (this != &static_cast<binode_container&>(source))
+ {
+ this->_allocator = ::boost::move(source._allocator);
+ this->clear();
+ this->_root_ptr = source._root_ptr;
+#if defined BOOST_NO_CXX11_NULLPTR
+ source._root_ptr = 0;
+#else
+ source._root_ptr = nullptr;
+#endif
+ }
+
+ return *this;
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline binode_container<NodeGenerator,T,Balancer>&
+ binode_container<NodeGenerator,T,Balancer>::operator=(
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ binode_container const& copy
+#else
+ BOOST_COPY_ASSIGN_REF(binode_container) copy
+#endif
+ )
+ {
+ if (this != ©)
+ {
+ if (copy._root_ptr)
+ {
+ if (this->_root_ptr)
+ {
+ *this->_root_ptr = *copy._root_ptr;
+ }
+ else
+ {
+ this->_root_ptr = this->_construct_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , copy._root_ptr
+ );
+ }
+ }
+ else
+ {
+ this->clear();
+ }
+ }
+
+ return *this;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ binode_container<NodeGenerator,T,Balancer>::~binode_container()
+ {
+ this->clear();
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<
+ NodeGenerator
+ , T
+ , Balancer
+ >::node::const_pointer
+ binode_container<NodeGenerator,T,Balancer>::data() const
+ {
+ return this->_root_ptr;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::node::pointer
+ binode_container<NodeGenerator,T,Balancer>::data()
+ {
+ return this->_root_ptr;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::const_iterator
+ binode_container<NodeGenerator,T,Balancer>::cbegin() const
+ {
+ return this->_root_ptr ? const_iterator(
+ make_in_order_iterator(*this->_root_ptr)
+ , transform_function()
+ ) : this->cend();
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::const_iterator
+ binode_container<NodeGenerator,T,Balancer>::begin() const
+ {
+ return this->_root_ptr ? const_iterator(
+ make_in_order_iterator(*this->_root_ptr)
+ , transform_function()
+ ) : this->end();
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::iterator
+ binode_container<NodeGenerator,T,Balancer>::begin()
+ {
+ return this->_root_ptr ? iterator(
+ make_in_order_iterator(*this->_root_ptr)
+ , transform_function()
+ ) : this->end();
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::const_iterator
+ binode_container<NodeGenerator,T,Balancer>::cend() const
+ {
+ return const_iterator(
+ make_in_order_iterator_end(this->_root_ptr)
+ , transform_function()
+ );
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::const_iterator
+ binode_container<NodeGenerator,T,Balancer>::end() const
+ {
+ return const_iterator(
+ make_in_order_iterator_end(this->_root_ptr)
+ , transform_function()
+ );
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::iterator
+ binode_container<NodeGenerator,T,Balancer>::end()
+ {
+ return iterator(
+ make_in_order_iterator_end(this->_root_ptr)
+ , transform_function()
+ );
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<
+ NodeGenerator
+ , T
+ , Balancer
+ >::const_reverse_iterator
+ binode_container<NodeGenerator,T,Balancer>::crbegin() const
+ {
+ return this->_root_ptr ? const_reverse_iterator(
+ make_in_order_reverse_iterator(*this->_root_ptr)
+ , transform_function()
+ ) : this->crend();
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<
+ NodeGenerator
+ , T
+ , Balancer
+ >::const_reverse_iterator
+ binode_container<NodeGenerator,T,Balancer>::rbegin() const
+ {
+ return this->_root_ptr ? const_reverse_iterator(
+ make_in_order_reverse_iterator(*this->_root_ptr)
+ , transform_function()
+ ) : this->rend();
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<
+ NodeGenerator
+ , T
+ , Balancer
+ >::reverse_iterator
+ binode_container<NodeGenerator,T,Balancer>::rbegin()
+ {
+ return this->_root_ptr ? reverse_iterator(
+ make_in_order_reverse_iterator(*this->_root_ptr)
+ , transform_function()
+ ) : this->rend();
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<
+ NodeGenerator
+ , T
+ , Balancer
+ >::const_reverse_iterator
+ binode_container<NodeGenerator,T,Balancer>::crend() const
+ {
+ return const_reverse_iterator(
+ make_in_order_reverse_iterator_end(this->_root_ptr)
+ , transform_function()
+ );
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<
+ NodeGenerator
+ , T
+ , Balancer
+ >::const_reverse_iterator
+ binode_container<NodeGenerator,T,Balancer>::rend() const
+ {
+ return const_reverse_iterator(
+ make_in_order_reverse_iterator_end(this->_root_ptr)
+ , transform_function()
+ );
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<
+ NodeGenerator
+ , T
+ , Balancer
+ >::reverse_iterator
+ binode_container<NodeGenerator,T,Balancer>::rend()
+ {
+ return reverse_iterator(
+ make_in_order_reverse_iterator_end(this->_root_ptr)
+ , transform_function()
+ );
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::const_reference
+ binode_container<NodeGenerator,T,Balancer>::front() const
+ {
+ return *this->cbegin();
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::reference
+ binode_container<NodeGenerator,T,Balancer>::front()
+ {
+ return *this->begin();
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::const_reference
+ binode_container<NodeGenerator,T,Balancer>::back() const
+ {
+ return *this->crbegin();
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::reference
+ binode_container<NodeGenerator,T,Balancer>::back()
+ {
+ return *this->rbegin();
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ void binode_container<NodeGenerator,T,Balancer>::pop_front()
+ {
+ this->erase(this->cbegin());
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ typename binode_container<NodeGenerator,T,Balancer>::node::const_pointer
+ binode_container<NodeGenerator,T,Balancer>::_back() const
+ {
+ typename node::const_pointer result = this->_root_ptr;
+
+ if (result)
+ {
+ while (result->get_right_child_ptr())
+ {
+ result = result->get_right_child_ptr();
+ }
+ }
+
+ return result;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ typename binode_container<NodeGenerator,T,Balancer>::node::pointer
+ binode_container<NodeGenerator,T,Balancer>::_back()
+ {
+ typename node::pointer result = this->_root_ptr;
+
+ if (result)
+ {
+ while (result->get_right_child_ptr())
+ {
+ result = result->get_right_child_ptr();
+ }
+ }
+
+ return result;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ void binode_container<NodeGenerator,T,Balancer>::pop_back()
+ {
+ this->erase(
+ iterator(
+ make_in_order_iterator_position(*this->_back())
+ , transform_function()
+ )
+ );
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ typename binode_container<NodeGenerator,T,Balancer>::node::pointer
+ binode_container<NodeGenerator,T,Balancer>::_construct_from(
+ ::std::tr1::true_type
+ , allocator_type& allocator
+ , value_type const& value
+ )
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(allocator.allocate(1));
+ allocator.construct(result, value);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::allocate(allocator, 1)
+ );
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::construct(allocator, result, value);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return result;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ typename binode_container<NodeGenerator,T,Balancer>::node::pointer
+ binode_container<NodeGenerator,T,Balancer>::_construct_from(
+ ::std::tr1::false_type
+ , allocator_type& allocator
+ , value_type const& value
+ )
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(allocator.allocate(1));
+ allocator.construct(
+ result
+ , ::boost::container::allocator_arg
+ , allocator
+ , value
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::allocate(allocator, 1)
+ );
+ ::boost::container::allocator_traits<allocator_type>::construct(
+ allocator
+ , result
+ , ::boost::container::allocator_arg
+ , allocator
+ , value
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return result;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ void
+ binode_container<NodeGenerator,T,Balancer>::push_front(
+ const_reference t
+ )
+ {
+ if (this->_root_ptr)
+ {
+ typename node::pointer p = this->_root_ptr;
+
+ while (p->get_left_child_ptr())
+ {
+ p = p->get_left_child_ptr();
+ }
+
+ p = Balancer::post_insert(p = &*p->emplace_left(t));
+
+ if (!p->get_parent_ptr())
+ {
+ this->_root_ptr = p;
+ }
+ }
+ else // if (!this->_root_ptr)
+ {
+ this->_root_ptr = this->_construct_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , t
+ );
+ }
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ void
+ binode_container<NodeGenerator,T,Balancer>::push_back(
+ const_reference t
+ )
+ {
+ if (this->_root_ptr)
+ {
+ typename node::pointer p = this->_root_ptr;
+
+ while (p->get_right_child_ptr())
+ {
+ p = p->get_right_child_ptr();
+ }
+
+ p = Balancer::post_insert(p = &*p->emplace_right(t));
+
+ if (!p->get_parent_ptr())
+ {
+ this->_root_ptr = p;
+ }
+ }
+ else // if (!this->_root_ptr)
+ {
+ this->_root_ptr = this->_construct_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , t
+ );
+ }
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ typename binode_container<NodeGenerator,T,Balancer>::iterator
+ binode_container<NodeGenerator,T,Balancer>::insert(
+ const_iterator itr
+ , const_reference t
+ )
+ {
+ if (itr.base())
+ {
+ typename node::pointer anc_ptr = const_cast<
+ typename node::pointer
+ >(&*itr.base());
+ typename node::pointer node_ptr = anc_ptr->get_left_child_ptr();
+
+ if (node_ptr)
+ {
+ while (node_ptr->get_right_child_ptr())
+ {
+ node_ptr = node_ptr->get_right_child_ptr();
+ }
+
+ node_ptr = &*node_ptr->emplace_right(t);
+ }
+ else
+ {
+ node_ptr = &*anc_ptr->emplace_left(t);
+ }
+
+ anc_ptr = Balancer::post_insert(node_ptr);
+
+ if (!anc_ptr->get_parent_ptr())
+ {
+ this->_root_ptr = anc_ptr;
+ }
+
+ return iterator(
+ make_in_order_iterator_position(*node_ptr)
+ , transform_function()
+ );
+ }
+ else // if (!itr)
+ {
+ this->push_back(t);
+ return this->end();
+ }
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename NodeGenerator, typename T, typename Balancer>
+ template <typename ...Args>
+ typename binode_container<NodeGenerator,T,Balancer>::node::pointer
+ binode_container<NodeGenerator,T,Balancer>::_construct_from(
+ ::std::tr1::true_type
+ , allocator_type& allocator
+ , Args&& ...args
+ )
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(allocator.allocate(1));
+ allocator.construct(result, ::boost::forward<Args>(args)...);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::allocate(allocator, 1)
+ );
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::construct(allocator, result, ::boost::forward<Args>(args)...);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return result;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ template <typename ...Args>
+ typename binode_container<NodeGenerator,T,Balancer>::node::pointer
+ binode_container<NodeGenerator,T,Balancer>::_construct_from(
+ ::std::tr1::false_type
+ , allocator_type& allocator
+ , Args&& ...args
+ )
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(allocator.allocate(1));
+ allocator.construct(
+ result
+ , ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::allocate(allocator, 1)
+ );
+ ::boost::container::allocator_traits<allocator_type>::construct(
+ allocator
+ , result
+ , ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return result;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ template <typename ...Args>
+ void
+ binode_container<NodeGenerator,T,Balancer>::emplace_front(
+ Args&& ...args
+ )
+ {
+ if (this->_root_ptr)
+ {
+ typename node::pointer p = this->_root;
+
+ while (p->get_left_child_ptr())
+ {
+ p = p->get_left_child_ptr();
+ }
+
+ p = Balancer::post_insert(
+ p = &*p->emplace_left(::boost::forward<Args>(args)...)
+ );
+
+ if (!p->get_parent_ptr())
+ {
+ this->_root_ptr = p;
+ }
+ }
+ else // if (!this->_root_ptr)
+ {
+ this->_root_ptr = this->_construct_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , ::boost::forward<Args>(args)...
+ );
+ }
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ template <typename ...Args>
+ void
+ binode_container<NodeGenerator,T,Balancer>::emplace_back(
+ Args&& ...args
+ )
+ {
+ if (this->_root_ptr)
+ {
+ typename node::pointer p = this->_root;
+
+ while (p->get_right_child_ptr())
+ {
+ p = p->get_right_child_ptr();
+ }
+
+ p = Balancer::post_insert(
+ p = &*p->emplace_right(::boost::forward<Args>(args)...)
+ );
+
+ if (!p->get_parent_ptr())
+ {
+ this->_root_ptr = p;
+ }
+ }
+ else // if (!this->_root_ptr)
+ {
+ this->_root_ptr = this->_construct_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , ::boost::forward<Args>(args)...
+ );
+ }
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ template <typename ...Args>
+ typename binode_container<NodeGenerator,T,Balancer>::iterator
+ binode_container<NodeGenerator,T,Balancer>::emplace(
+ const_iterator itr
+ , Args&& ...args
+ )
+ {
+ if (itr.base())
+ {
+ typename node::pointer anc_ptr = const_cast<
+ typename node::pointer
+ >(&*itr.base());
+ typename node::pointer node_ptr = anc_ptr->get_left_child_ptr();
+
+ if (node_ptr)
+ {
+ while (node_ptr->get_right_child_ptr())
+ {
+ node_ptr = node_ptr->get_right_child_ptr();
+ }
+
+ node_ptr = &*node_ptr->emplace_right(
+ ::boost::forward<Args>(args)...
+ );
+ }
+ else
+ {
+ node_ptr = &*anc_ptr->emplace_left(
+ ::boost::forward<Args>(args)...
+ );
+ }
+
+ anc_ptr = Balancer::post_insert(node_ptr);
+
+ if (!anc_ptr->get_parent_ptr())
+ {
+ this->_root_ptr = anc_ptr;
+ }
+
+ return iterator(
+ make_in_order_iterator_position(*node_ptr)
+ , transform_function()
+ );
+ }
+ else // if (!itr)
+ {
+ this->emplace_back(::boost::forward<Args>(args)...);
+ return this->end();
+ }
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_TREE_NODE_CONTAINER_BINARY_MACRO(z, n, _) \
+ template <typename NodeGenerator, typename T, typename Balancer> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binode_container<NodeGenerator,T,Balancer>::node::pointer \
+ binode_container<NodeGenerator,T,Balancer>::_construct_from( \
+ ::std::tr1::true_type \
+ , allocator_type& allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ typename node::pointer result(allocator.allocate(1)); \
+ allocator.construct( \
+ result \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return result; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_MACRO(z, n, _) \
+ template <typename NodeGenerator, typename T, typename Balancer> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binode_container<NodeGenerator,T,Balancer>::node::pointer \
+ binode_container<NodeGenerator,T,Balancer>::_construct_from( \
+ ::std::tr1::false_type \
+ , allocator_type& allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ typename node::pointer result(allocator.allocate(1)); \
+ allocator.construct( \
+ result \
+ , ::boost::container::allocator_arg \
+ , allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return result; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_TREE_NODE_CONTAINER_BINARY_MACRO(z, n, _) \
+ template <typename NodeGenerator, typename T, typename Balancer> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binode_container<NodeGenerator,T,Balancer>::node::pointer \
+ binode_container<NodeGenerator,T,Balancer>::_construct_from( \
+ ::std::tr1::true_type \
+ , allocator_type& allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ typename node::pointer result( \
+ ::boost::container::allocator_traits< \
+ allocator_type \
+ >::allocate(allocator, 1) \
+ ); \
+ ::boost::container::allocator_traits<allocator_type>::construct( \
+ allocator \
+ , result \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return result; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_MACRO(z, n, _) \
+ template <typename NodeGenerator, typename T, typename Balancer> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binode_container<NodeGenerator,T,Balancer>::node::pointer \
+ binode_container<NodeGenerator,T,Balancer>::_construct_from( \
+ ::std::tr1::false_type \
+ , allocator_type& allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ typename node::pointer result( \
+ ::boost::container::allocator_traits< \
+ allocator_type \
+ >::allocate(allocator, 1) \
+ ); \
+ ::boost::container::allocator_traits<allocator_type>::construct( \
+ allocator \
+ , result \
+ , ::boost::container::allocator_arg \
+ , allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return result; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_MACRO(z, n, _) \
+ template <typename NodeGenerator, typename T, typename Balancer> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ void \
+ binode_container<NodeGenerator,T,Balancer>::emplace_front( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ if (this->_root_ptr) \
+ { \
+ typename node::pointer p = this->_root; \
+ while (p->get_left_child_ptr()) \
+ { \
+ p = p->get_left_child_ptr(); \
+ } \
+ p = Balancer::post_insert( \
+ p = &*p->emplace_left( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ ); \
+ if (!p->get_parent_ptr()) \
+ { \
+ this->_root_ptr = p; \
+ } \
+ } \
+ else \
+ { \
+ this->_root_ptr = this->_construct_from( \
+ ::std::tr1::is_const< \
+ typename ::std::tr1::remove_reference< \
+ typename node::traits::allocator_reference \
+ >::type \
+ >() \
+ , this->_allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ } \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_MACRO(z, n, _) \
+ template <typename NodeGenerator, typename T, typename Balancer> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ void \
+ binode_container<NodeGenerator,T,Balancer>::emplace_back( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ if (this->_root_ptr) \
+ { \
+ typename node::pointer p = this->_root; \
+ while (p->get_right_child_ptr()) \
+ { \
+ p = p->get_right_child_ptr(); \
+ } \
+ p = Balancer::post_insert( \
+ p = &*p->emplace_right( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ ); \
+ if (!p->get_parent_ptr()) \
+ { \
+ this->_root_ptr = p; \
+ } \
+ } \
+ else \
+ { \
+ this->_root_ptr = this->_construct_from( \
+ ::std::tr1::is_const< \
+ typename ::std::tr1::remove_reference< \
+ typename node::traits::allocator_reference \
+ >::type \
+ >() \
+ , this->_allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ } \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_MACRO(z, n, _) \
+ template <typename NodeGenerator, typename T, typename Balancer> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binode_container<NodeGenerator,T,Balancer>::iterator \
+ binode_container<NodeGenerator,T,Balancer>::emplace( \
+ const_iterator itr \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ if (itr.base()) \
+ { \
+ typename node::pointer anc_ptr = const_cast< \
+ typename node::pointer \
+ >(&*itr.base()); \
+ typename node::pointer node_ptr = ( \
+ anc_ptr->get_left_child_ptr() \
+ ); \
+ if (node_ptr) \
+ { \
+ while (node_ptr->get_right_child_ptr()) \
+ { \
+ node_ptr = node_ptr->get_right_child_ptr(); \
+ } \
+ node_ptr = &*node_ptr->emplace_right( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ } \
+ else \
+ { \
+ node_ptr = &*anc_ptr->emplace_left( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ } \
+ anc_ptr = Balancer::post_insert(node_ptr); \
+ if (!anc_ptr->get_parent_ptr()) \
+ { \
+ this->_root_ptr = anc_ptr; \
+ } \
+ return iterator( \
+ make_in_order_iterator_position(*node_ptr) \
+ , transform_function() \
+ ); \
+ } \
+ else \
+ { \
+ this->emplace_back( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return this->end(); \
+ } \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ typename binode_container<NodeGenerator,T,Balancer>::iterator
+ binode_container<NodeGenerator,T,Balancer>::erase(
+ const_iterator itr
+ )
+ {
+ if (itr.base()->empty() && (this->_root_ptr == &*itr.base()))
+ {
+ this->clear();
+ return this->end();
+ }
+
+ typename node::pointer anc_ptr = const_cast<typename node::pointer>(
+ &*itr.base()
+ );
+ iterator result(
+ make_in_order_iterator_position(*anc_ptr)
+ , transform_function()
+ );
+ bool must_erase_begin = (result == this->begin());
+
+ if (!must_erase_begin)
+ {
+ --result;
+ }
+
+ for (typename node::pointer desc_ptr;;)
+ {
+ if (
+ (desc_ptr = anc_ptr->get_left_child_ptr()) && (
+ !anc_ptr->get_right_child_ptr()
+ )
+ )
+ {
+ while (desc_ptr->get_right_child_ptr())
+ {
+ desc_ptr = desc_ptr->get_right_child_ptr();
+ }
+
+ if (desc_ptr->get_parent_ptr() == anc_ptr)
+ {
+ if (!anc_ptr->get_right_child_ptr())
+ {
+ put(*anc_ptr, data_key(), get(*desc_ptr, data_key()));
+
+ bool must_rebalance = Balancer::pre_erase(*desc_ptr);
+
+ anc_ptr->erase_left();
+
+ if (must_rebalance)
+ {
+ anc_ptr = Balancer::post_erase_left(anc_ptr);
+
+ if (!anc_ptr->get_parent_ptr())
+ {
+ this->_root_ptr = anc_ptr;
+ }
+ }
+
+ break;
+ }
+ }
+ else // if (desc_ptr == anc_ptr->get_right_child_ptr())
+ {
+ put(*anc_ptr, data_key(), get(*desc_ptr, data_key()));
+
+ if (desc_ptr->get_left_child_ptr())
+ {
+ anc_ptr = desc_ptr;
+ }
+ else // if (desc_ptr->empty())
+ {
+ anc_ptr = desc_ptr->get_parent_ptr();
+
+ if (anc_ptr->get_left_child_ptr())
+ {
+ put(*desc_ptr, data_key(), get(*anc_ptr, data_key()));
+ }
+ else // desc_ptr is only child of anc_ptr
+ {
+ bool must_rebalance = Balancer::pre_erase(*desc_ptr);
+
+ anc_ptr->erase_right();
+
+ if (must_rebalance)
+ {
+ anc_ptr = Balancer::post_erase_right(anc_ptr);
+
+ if (!anc_ptr->get_parent_ptr())
+ {
+ this->_root_ptr = anc_ptr;
+ }
+ }
+
+ break;
+ }
+ }
+
+ continue;
+ }
+ }
+
+ if ((desc_ptr = anc_ptr->get_right_child_ptr()))
+ {
+ while (desc_ptr->get_left_child_ptr())
+ {
+ desc_ptr = desc_ptr->get_left_child_ptr();
+ }
+
+ put(*anc_ptr, data_key(), get(*desc_ptr, data_key()));
+
+ if (desc_ptr->get_right_child_ptr())
+ {
+ if (desc_ptr->get_right_child_ptr()->empty())
+ {
+ bool must_rebalance = Balancer::pre_erase(*desc_ptr);
+
+ anc_ptr->erase_right();
+
+ if (must_rebalance)
+ {
+ anc_ptr = Balancer::post_erase_right(anc_ptr);
+
+ if (!anc_ptr->get_parent_ptr())
+ {
+ this->_root_ptr = anc_ptr;
+ }
+ }
+ }
+ else
+ {
+ anc_ptr = desc_ptr;
+ }
+ }
+ else if (desc_ptr->get_parent_ptr() == anc_ptr)
+ {
+ bool must_rebalance = Balancer::pre_erase(*desc_ptr);
+
+ anc_ptr->erase_right();
+
+ if (must_rebalance)
+ {
+ anc_ptr = Balancer::post_erase_right(anc_ptr);
+
+ if (!anc_ptr->get_parent_ptr())
+ {
+ this->_root_ptr = anc_ptr;
+ }
+ }
+
+ break;
+ }
+ else
+ {
+ BOOST_ASSERT(desc_ptr->empty());
+ anc_ptr = desc_ptr->get_parent_ptr();
+ BOOST_ASSERT(anc_ptr->get_left_child_ptr() == desc_ptr);
+
+ if (anc_ptr->get_right_child_ptr())
+ {
+ put(*desc_ptr, data_key(), get(*anc_ptr, data_key()));
+ }
+ else // desc_ptr is only child of anc_ptr
+ {
+ bool must_rebalance = Balancer::pre_erase(*desc_ptr);
+
+ anc_ptr->erase_left();
+
+ if (must_rebalance)
+ {
+ anc_ptr = Balancer::post_erase_left(anc_ptr);
+
+ if (!anc_ptr->get_parent_ptr())
+ {
+ this->_root_ptr = anc_ptr;
+ }
+ }
+
+ break;
+ }
+ }
+ }
+ else // if (anc_ptr->empty())
+ {
+ desc_ptr = anc_ptr;
+ anc_ptr = anc_ptr->get_parent_ptr();
+
+ bool must_rebalance = Balancer::pre_erase(*desc_ptr);
+
+ if (anc_ptr->get_left_child_ptr() == desc_ptr)
+ {
+ anc_ptr->erase_left();
+
+ if (must_rebalance)
+ {
+ anc_ptr = Balancer::post_erase_left(anc_ptr);
+
+ if (!anc_ptr->get_parent_ptr())
+ {
+ this->_root_ptr = anc_ptr;
+ }
+ }
+ }
+ else // if (anc_ptr->get_right_child_ptr() == desc_ptr)
+ {
+ anc_ptr->erase_right();
+
+ if (must_rebalance)
+ {
+ anc_ptr = Balancer::post_erase_right(anc_ptr);
+
+ if (!anc_ptr->get_parent_ptr())
+ {
+ this->_root_ptr = anc_ptr;
+ }
+ }
+ }
+
+ break;
+ }
+ }
+
+ return must_erase_begin ? this->begin() : ++result;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ void
+ binode_container<NodeGenerator,T,Balancer>::erase(
+ const_iterator itr
+ , const_iterator itr_end
+ )
+ {
+ while (itr != itr_end)
+ {
+ itr = this->erase(itr);
+ }
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline bool binode_container<NodeGenerator,T,Balancer>::empty() const
+ {
+ return !this->_root_ptr;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ void binode_container<NodeGenerator,T,Balancer>::clear()
+ {
+ if (this->_root_ptr)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.destroy(this->_root_ptr);
+ this->_allocator.deallocate(this->_root_ptr, 1);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::destroy(this->_allocator, this->_root_ptr);
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::deallocate(this->_allocator, this->_root_ptr, 1);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_NO_CXX11_NULLPTR
+ this->_root_ptr = 0;
+#else
+ this->_root_ptr = nullptr;
+#endif
+ }
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::size_type
+ binode_container<NodeGenerator,T,Balancer>::_size(
+ ::boost::mpl::true_
+ ) const
+ {
+ return this->_root_ptr ? get(*this->_root_ptr, count_key()) : 0;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::size_type
+ binode_container<NodeGenerator,T,Balancer>::_size(
+ ::boost::mpl::false_
+ ) const
+ {
+ size_type result = ::boost::initialized_value;
+
+ for (const_iterator itr = this->cbegin(); itr; ++itr)
+ {
+ ++result;
+ }
+
+ return result;
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ inline typename binode_container<NodeGenerator,T,Balancer>::size_type
+ binode_container<NodeGenerator,T,Balancer>::size() const
+ {
+ return this->_size(result_of::has_key<node,count_key>());
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ typename binode_container<NodeGenerator,T,Balancer>::const_reference
+ binode_container<NodeGenerator,T,Balancer>::operator[](
+ size_type index
+ ) const
+ {
+ BOOST_ASSERT_MSG(
+ this->_root_ptr && (index < this->size())
+ , "index out of bounds"
+ );
+
+ typename node::const_pointer node_ptr = this->_root_ptr;
+
+ return transform_function()(
+ *binary_descendant_at_index(node_ptr, index)
+ );
+ }
+
+ template <typename NodeGenerator, typename T, typename Balancer>
+ typename binode_container<NodeGenerator,T,Balancer>::reference
+ binode_container<NodeGenerator,T,Balancer>::operator[](size_type index)
+ {
+ BOOST_ASSERT_MSG(
+ this->_root_ptr && (index < this->size())
+ , "index out of bounds"
+ );
+
+ return transform_function()(
+ *binary_descendant_at_index(this->_root_ptr, index)
+ );
+ }
+}} // namespace boost::tree_node
+
+#endif // BOOST_TREE_NODE_CONTAINER_BINODE_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/container/binode_associative.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/container/binode_associative.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,4675 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_CONTAINER_BINODE_ASSOCIATIVE_HPP_INCLUDED
+#define BOOST_TREE_NODE_CONTAINER_BINODE_ASSOCIATIVE_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_CXX11_NULLPTR
+#include <cstddef>
+#endif
+
+#include <utility>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/iterator/transform_iterator.hpp>
+#include <boost/utility/value_init.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#include <boost/container/allocator_traits.hpp>
+#endif
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/key/data.hpp>
+#include <boost/tree_node/key/count.hpp>
+#include <boost/tree_node/iterator/in_order.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#include <boost/tree_node/intrinsic/value_at_key.hpp>
+#include <boost/tree_node/algorithm/binary_descendant.hpp>
+#include <boost/tree_node/algorithm/binary_lower_bound.hpp>
+#include <boost/tree_node/algorithm/binary_upper_bound.hpp>
+#include <boost/tree_node/algorithm/binary_descendant_at_index.hpp>
+#include <boost/tree_node/container/binode_associative_fwd.hpp>
+#include <boost/assert.hpp>
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ class binode_associative_container
+ {
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ BOOST_COPYABLE_AND_MOVABLE(binode_associative_container)
+#endif
+
+ public:
+ //[reference__binode_associative_container__key_type
+ typedef T1 key_type;
+ //]
+
+ //[reference__binode_associative_container__value_type
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<T2>
+ , T1
+ , ::std::pair<T1 const,T2>
+ >::type
+ value_type;
+ //]
+
+ //[reference__binode_associative_container__reference
+ typedef value_type& reference;
+ //]
+
+ //[reference__binode_associative_container__const_reference
+ typedef value_type const& const_reference;
+ //]
+
+ //[reference__binode_associative_container__pointer
+ typedef value_type* pointer;
+ //]
+
+ //[reference__binode_associative_container__const_pointer
+ typedef value_type const* const_pointer;
+ //]
+
+ //[reference__binode_associative_container__node
+ typedef typename ::boost::mpl::apply_wrap1<
+ NodeGenerator
+ , typename ::boost::mpl::if_<
+ ::std::tr1::is_void<T2>
+ , T1
+ , ::std::pair<T1,T2>
+ >::type
+ >::type
+ node;
+ //]
+
+ //[reference__binode_associative_container__allocator_type
+ typedef typename node::traits::allocator allocator_type;
+ //]
+
+ private:
+ //[reference__binode_associative_container__transition_function
+ struct simple_transform_function
+ {
+ typedef const_reference const_result;
+ typedef const_reference mutable_result;
+ const_reference operator()(node const& n) const;
+ };
+
+ struct pair_associative_transform_function
+ {
+ typedef ::std::pair<T1 const&,T2 const&> const_result;
+ typedef ::std::pair<T1 const&,T2&> mutable_result;
+ const_result operator()(node const& n) const;
+ mutable_result operator()(node& n) const;
+ };
+
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<T2>
+ , simple_transform_function
+ , pair_associative_transform_function
+ >::type
+ transform_function;
+ //]
+
+ public:
+ //[reference__binode_associative_container__iterator
+ typedef ::boost::transform_iterator<
+ transform_function
+ , in_order_iterator<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_void<T2>
+ , node const
+ , node
+ >::type
+ >
+ >
+ iterator;
+ //]
+
+ //[reference__binode_associative_container__const_iterator
+ typedef ::boost::transform_iterator<
+ transform_function
+ , in_order_iterator<node const>
+ >
+ const_iterator;
+ //]
+
+ //[reference__binode_associative_container__reverse_iterator
+ typedef ::boost::transform_iterator<
+ transform_function
+ , in_order_iterator<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_void<T2>
+ , node const
+ , node
+ >::type
+ , ::boost::mpl::true_
+ >
+ >
+ reverse_iterator;
+ //]
+
+ //[reference__binode_associative_container__const_reverse_iterator
+ typedef ::boost::transform_iterator<
+ transform_function
+ , in_order_iterator<node const,::boost::mpl::true_>
+ >
+ const_reverse_iterator;
+ //]
+
+ //[reference__binode_associative_container__size_type
+ typedef typename ::boost::mpl::eval_if<
+ result_of::has_key<node,count_key>
+ , result_of::value_at_key<node,count_key>
+ , typename node::size_type
+ >::type
+ size_type;
+ //]
+
+ //[reference__binode_associative_container__key_compare
+ typedef typename ::boost::mpl::apply_wrap1<
+ CompareSelector
+ , key_type
+ >::type
+ key_compare;
+ //]
+
+ //[reference__binode_associative_container__value_compare
+ class value_compare
+ {
+ //<-
+ key_compare const& _compare;
+ //->
+
+ public:
+ typedef bool result_type;
+
+ explicit value_compare(key_compare const& compare);
+ result_type operator()(const_reference, const_reference) const;
+ result_type operator()(node const& n, key_type const& key) const;
+ result_type operator()(key_type const& key, node const& n) const;
+
+ //<-
+ private:
+ result_type
+ _evaluate(
+ const_reference arg1
+ , const_reference arg2
+ , ::std::tr1::true_type
+ ) const;
+ result_type
+ _evaluate(
+ const_reference arg1
+ , const_reference arg2
+ , ::std::tr1::false_type
+ ) const;
+ result_type
+ _evaluate(
+ node const& n
+ , key_type const& key
+ , ::std::tr1::true_type
+ ) const;
+ result_type
+ _evaluate(
+ node const& n
+ , key_type const& key
+ , ::std::tr1::false_type
+ ) const;
+ result_type
+ _evaluate(
+ key_type const& key
+ , node const& n
+ , ::std::tr1::true_type
+ ) const;
+ result_type
+ _evaluate(
+ key_type const& key
+ , node const& n
+ , ::std::tr1::false_type
+ ) const;
+ //->
+ };
+ //]
+
+ private:
+ class insert_compare
+ {
+ key_compare const& _compare;
+
+ public:
+ typedef bool result_type;
+
+ explicit insert_compare(key_compare const& compare);
+ result_type operator()(node const&, const_reference) const;
+ result_type operator()(const_reference, node const&) const;
+
+ private:
+ result_type
+ _evaluate(
+ node const& n
+ , const_reference value
+ , ::std::tr1::true_type
+ ) const;
+ result_type
+ _evaluate(
+ node const& n
+ , const_reference value
+ , ::std::tr1::false_type
+ ) const;
+ result_type
+ _evaluate(
+ const_reference value
+ , node const& n
+ , ::std::tr1::true_type
+ ) const;
+ result_type
+ _evaluate(
+ const_reference value
+ , node const& n
+ , ::std::tr1::false_type
+ ) const;
+ };
+
+ allocator_type _allocator;
+ typename node::pointer _root_ptr;
+ key_compare _key_compare;
+ value_compare _value_compare;
+
+ public:
+ //[reference__binode_associative_container__default_ctor
+ binode_associative_container();
+ //]
+
+ //[reference__binode_associative_container__ctor_w_alloc
+ explicit binode_associative_container(allocator_type const& allocator);
+ //]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //[reference__binode_associative_container__copy_ctor
+ binode_associative_container(
+ binode_associative_container const& copy
+ );
+ //]
+#else
+ binode_associative_container(
+ BOOST_COPY_ASSIGN_REF(binode_associative_container) copy
+ );
+#endif
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //[reference__binode_associative_container__copy_ctor_w_alloc
+ binode_associative_container(
+ binode_associative_container const& copy
+ , allocator_type const& allocator
+ );
+ //]
+#else
+ binode_associative_container(
+ BOOST_COPY_ASSIGN_REF(binode_associative_container) copy
+ , allocator_type const& allocator
+ );
+#endif
+
+#if 0
+ //[reference__binode_associative_container__move_ctor
+ binode_associative_container(binode_associative_container&& source);
+ //]
+
+ //[reference__binode_associative_container__move_ctor_w_alloc
+ binode_associative_container(
+ binode_associative_container&& source
+ , allocator_type const& allocator
+ );
+ //]
+
+ //[reference__binode_associative_container__move_assign
+ binode_associative_container&
+ operator=(binode_associative_container&& source);
+ //]
+#endif
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ binode_associative_container(
+ BOOST_RV_REF(binode_associative_container) source
+ );
+
+ binode_associative_container(
+ BOOST_RV_REF(binode_associative_container) source
+ , allocator_type const& allocator
+ );
+
+ binode_associative_container&
+ operator=(BOOST_RV_REF(binode_associative_container) source);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //[reference__binode_associative_container__copy_assign
+ binode_associative_container&
+ operator=(binode_associative_container const& copy);
+ //]
+#else
+ binode_associative_container&
+ operator=(
+ BOOST_COPY_ASSIGN_REF(binode_associative_container) copy
+ );
+#endif
+
+ //[reference__binode_associative_container__dtor
+ ~binode_associative_container();
+ //]
+
+ //[reference__binode_associative_container__data
+ typename node::const_pointer data() const;
+ //]
+
+ //[reference__binode_associative_container__cbegin
+ const_iterator cbegin() const;
+ const_iterator begin() const;
+ //]
+
+ //[reference__binode_associative_container__begin
+ iterator begin();
+ //]
+
+ //[reference__binode_associative_container__cend
+ const_iterator cend() const;
+ const_iterator end() const;
+ //]
+
+ //[reference__binode_associative_container__end
+ iterator end();
+ //]
+
+ //[reference__binode_associative_container__crbegin
+ const_reverse_iterator crbegin() const;
+ const_reverse_iterator rbegin() const;
+ //]
+
+ //[reference__binode_associative_container__rbegin
+ reverse_iterator rbegin();
+ //]
+
+ //[reference__binode_associative_container__crend
+ const_reverse_iterator crend() const;
+ const_reverse_iterator rend() const;
+ //]
+
+ //[reference__binode_associative_container__rend
+ reverse_iterator rend();
+ //]
+
+ //[reference__binode_associative_container__cfind
+ const_iterator find(key_type const& key) const;
+ //]
+
+ //[reference__binode_associative_container__find
+ iterator find(key_type const& key);
+ //]
+
+ //[reference__binode_associative_container__lower_bound__const
+ const_iterator lower_bound(key_type const& key) const;
+ //]
+
+ //[reference__binode_associative_container__lower_bound
+ iterator lower_bound(key_type const& key);
+ //]
+
+ //[reference__binode_associative_container__upper_bound__const
+ const_iterator upper_bound(key_type const& key) const;
+ //]
+
+ //[reference__binode_associative_container__upper_bound
+ iterator upper_bound(key_type const& key);
+ //]
+
+ //[reference__binode_associative_container__equal_range__const
+ ::std::pair<const_iterator,const_iterator>
+ equal_range(key_type const& key) const;
+ //]
+
+ //[reference__binode_associative_container__equal_range
+ ::std::pair<iterator,iterator> equal_range(key_type const& key);
+ //]
+
+ //[reference__binode_associative_container__insert
+ typename ::boost::mpl::if_<
+ IsMultipleAssociative
+ , iterator
+ , ::std::pair<iterator,bool>
+ >::type
+ insert(value_type const& value);
+ //]
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__binode_associative_container__emplace
+ template <typename ...Args>
+ typename ::boost::mpl::if_<
+ IsMultipleAssociative
+ , iterator
+ , ::std::pair<iterator,bool>
+ >::type
+ emplace(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename ::boost::mpl::if_< \
+ IsMultipleAssociative \
+ , iterator \
+ , ::std::pair<iterator,bool> \
+ >::type \
+ emplace( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ //[reference__binode_associative_container__erase
+ size_type erase(key_type const& key);
+ //]
+
+ //[reference__binode_associative_container__empty
+ bool empty() const;
+ //]
+
+ //[reference__binode_associative_container__clear
+ void clear();
+ //]
+
+ //[reference__binode_associative_container__size
+ size_type size() const;
+ //]
+
+ //[reference__binode_associative_container__index_operator__const
+ typename transform_function::const_result
+ operator[](size_type const& index) const;
+ //]
+
+ //[reference__binode_associative_container__index_operator
+ typename transform_function::mutable_result
+ operator[](size_type const& index);
+ //]
+
+ private:
+ static typename node::pointer
+ _construct_node_from(
+ ::std::tr1::true_type
+ , allocator_type& allocator
+ , value_type const& value
+ );
+
+ static typename node::pointer
+ _construct_node_from(
+ ::std::tr1::false_type
+ , allocator_type& allocator
+ , value_type const& value
+ );
+
+ static typename node::pointer
+ _construct_node_from(
+ ::std::tr1::true_type
+ , allocator_type& allocator
+ , typename node::pointer p
+ );
+
+ static typename node::pointer
+ _construct_node_from(
+ ::std::tr1::false_type
+ , allocator_type& allocator
+ , typename node::pointer p
+ );
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ static typename node::pointer
+ _construct_node_from(
+ ::std::tr1::true_type
+ , allocator_type& allocator
+ , Args&& ...args
+ );
+
+ template <typename ...Args>
+ static typename node::pointer
+ _construct_node_from(
+ ::std::tr1::false_type
+ , allocator_type& allocator
+ , Args&& ...args
+ );
+
+ template <typename ...Args>
+ static value_type
+ _construct_value_from(
+ ::std::tr1::true_type
+ , Args&& ...args
+ );
+
+ template <typename ...Args>
+ static value_type
+ _construct_value_from(
+ ::std::tr1::false_type
+ , key_type const& key
+ , Args&& ...args
+ );
+
+ template <typename ...Args>
+ iterator _emplace(::boost::mpl::true_, Args&& ...args);
+
+ template <typename ...Args>
+ ::std::pair<iterator,bool>
+ _emplace(::boost::mpl::false_, Args&& ...args);
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ static typename node::pointer \
+ _construct_node_from( \
+ ::std::tr1::true_type \
+ , allocator_type& allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ static typename node::pointer \
+ _construct_node_from( \
+ ::std::tr1::false_type \
+ , allocator_type& allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ static value_type \
+ _construct_value_from( \
+ ::std::tr1::true_type \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ static value_type \
+ _construct_value_from( \
+ ::std::tr1::false_type \
+ , key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_PP_DEC(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ _emplace( \
+ ::boost::mpl::true_ \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ ::std::pair<iterator,bool> \
+ _emplace( \
+ ::boost::mpl::false_ \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ iterator _insert(value_type const& value, ::boost::mpl::true_);
+
+ ::std::pair<iterator,bool>
+ _insert(value_type const& value, ::boost::mpl::false_);
+
+ void _erase_one(typename node::pointer p);
+
+ size_type _erase(key_type const& key, ::boost::mpl::true_);
+
+ size_type _erase(key_type const& key, ::boost::mpl::false_);
+
+ size_type _size(::boost::mpl::true_) const;
+
+ size_type _size(::boost::mpl::false_) const;
+ };
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_reference
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::simple_transform_function::operator()(node const& n) const
+ {
+ return get(n, data_key());
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::pair_associative_transform_function::const_result
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::pair_associative_transform_function::operator()(node const& n) const
+ {
+ return ::std::pair<T1 const&,T2 const&>(get(n, data_key()));
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::pair_associative_transform_function::mutable_result
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::pair_associative_transform_function::operator()(node& n) const
+ {
+ return ::std::pair<T1 const&,T2&>(get(n, data_key()));
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::value_compare(key_compare const& c) : _compare(c)
+ {
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::_evaluate(
+ const_reference arg1
+ , const_reference arg2
+ , ::std::tr1::true_type
+ ) const
+ {
+ return this->_compare(arg1, arg2);
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::_evaluate(
+ const_reference arg1
+ , const_reference arg2
+ , ::std::tr1::false_type
+ ) const
+ {
+ return this->_compare(arg1.first, arg2.first);
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::operator()(
+ const_reference arg1
+ , const_reference arg2
+ ) const
+ {
+ return this->_evaluate(arg1, arg2, ::std::tr1::is_void<T2>());
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::_evaluate(
+ node const& n
+ , key_type const& key
+ , ::std::tr1::true_type
+ ) const
+ {
+ return this->_compare(get(n, data_key()), key);
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::_evaluate(
+ node const& n
+ , key_type const& key
+ , ::std::tr1::false_type
+ ) const
+ {
+ return this->_compare(get(n, data_key()).first, key);
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::operator()(node const& n, key_type const& key) const
+ {
+ return this->_evaluate(n, key, ::std::tr1::is_void<T2>());
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::_evaluate(
+ key_type const& key
+ , node const& n
+ , ::std::tr1::true_type
+ ) const
+ {
+ return this->_compare(key, get(n, data_key()));
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::_evaluate(
+ key_type const& key
+ , node const& n
+ , ::std::tr1::false_type
+ ) const
+ {
+ return this->_compare(key, get(n, data_key()).first);
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_compare::operator()(key_type const& key, node const& n) const
+ {
+ return this->_evaluate(key, n, ::std::tr1::is_void<T2>());
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::insert_compare(key_compare const& c) : _compare(c)
+ {
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::_evaluate(
+ const_reference value
+ , node const& n
+ , ::std::tr1::true_type
+ ) const
+ {
+ return this->_compare(value, get(n, data_key()));
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::_evaluate(
+ const_reference value
+ , node const& n
+ , ::std::tr1::false_type
+ ) const
+ {
+ return this->_compare(value.first, get(n, data_key()).first);
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::operator()(
+ const_reference value
+ , node const& n
+ ) const
+ {
+ return this->_evaluate(value, n, ::std::tr1::is_void<T2>());
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::_evaluate(
+ node const& n
+ , const_reference value
+ , ::std::tr1::true_type
+ ) const
+ {
+ return this->_compare(get(n, data_key()), value);
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::_evaluate(
+ node const& n
+ , const_reference value
+ , ::std::tr1::false_type
+ ) const
+ {
+ return this->_compare(get(n, data_key()).first, value.first);
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::result_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert_compare::operator()(
+ node const& n
+ , const_reference value
+ ) const
+ {
+ return this->_evaluate(n, value, ::std::tr1::is_void<T2>());
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::binode_associative_container()
+ : _allocator()
+ , _root_ptr(
+#if defined BOOST_NO_CXX11_NULLPTR
+ 0
+#else
+ nullptr
+#endif
+ )
+ , _key_compare()
+ , _value_compare(this->_key_compare)
+ {
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::binode_associative_container(allocator_type const& allocator)
+ : _allocator(allocator)
+ , _root_ptr(
+#if defined BOOST_NO_CXX11_NULLPTR
+ 0
+#else
+ nullptr
+#endif
+ )
+ , _key_compare()
+ , _value_compare(this->_key_compare)
+ {
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::node::pointer
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_construct_node_from(
+ ::std::tr1::true_type
+ , allocator_type& allocator
+ , typename node::pointer p
+ )
+ {
+ if (p)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(allocator.allocate(1));
+ allocator.construct(result, *p);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::allocate(allocator, 1)
+ );
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::construct(allocator, result, *p);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return result;
+ }
+ else
+ {
+ return p;
+ }
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::node::pointer
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_construct_node_from(
+ ::std::tr1::false_type
+ , allocator_type& allocator
+ , typename node::pointer p
+ )
+ {
+ if (p)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(allocator.allocate(1));
+ allocator.construct(result, *p, allocator);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::allocate(allocator, 1)
+ );
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::construct(allocator, result, *p, allocator);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return result;
+ }
+ else
+ {
+ return p;
+ }
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::binode_associative_container(
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ binode_associative_container const& copy
+#else
+ BOOST_COPY_ASSIGN_REF(binode_associative_container) copy
+#endif
+ ) : _allocator(copy._allocator)
+ , _root_ptr(
+ this->_construct_node_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , copy._root_ptr
+ )
+ )
+ , _key_compare(copy._key_compare)
+ , _value_compare(this->_key_compare)
+ {
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::binode_associative_container(
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ binode_associative_container const& copy
+#else
+ BOOST_COPY_ASSIGN_REF(binode_associative_container) copy
+#endif
+ , allocator_type const& allocator
+ ) : _allocator(allocator)
+ , _root_ptr(
+ this->_construct_node_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , copy._root_ptr
+ )
+ )
+ , _key_compare(copy._key_compare)
+ , _value_compare(this->_key_compare)
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::binode_associative_container(
+ BOOST_RV_REF(binode_associative_container) source
+ ) : _allocator(::boost::move(source._allocator))
+ , _root_ptr(source._root_ptr)
+ , _key_compare(::boost::move(source._key_compare))
+ , _value_compare(this->_key_compare)
+ {
+#if defined BOOST_NO_CXX11_NULLPTR
+ source._root_ptr = 0;
+#else
+ source._root_ptr = nullptr;
+#endif
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::binode_associative_container(
+ BOOST_RV_REF(binode_associative_container) source
+ , allocator_type const& allocator
+ ) : _allocator(allocator)
+ , _root_ptr(source._root_ptr)
+ , _key_compare(::boost::move(source._key_compare))
+ , _value_compare(this->_key_compare)
+ {
+#if defined BOOST_NO_CXX11_NULLPTR
+ source._root_ptr = 0;
+#else
+ source._root_ptr = nullptr;
+#endif
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >&
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::operator=(BOOST_RV_REF(binode_associative_container) source)
+ {
+ if (this != &static_cast<binode_associative_container&>(source))
+ {
+ this->_allocator = ::boost::move(source._allocator);
+ this->clear();
+ this->_root_ptr = source._root_ptr;
+#if defined BOOST_NO_CXX11_NULLPTR
+ source._root_ptr = 0;
+#else
+ source._root_ptr = nullptr;
+#endif
+ this->_key_compare = ::boost::move(source._key_compare);
+ }
+
+ return *this;
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >&
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::operator=(
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ binode_associative_container const& copy
+#else
+ BOOST_COPY_ASSIGN_REF(binode_associative_container) copy
+#endif
+ )
+ {
+ if (this != &static_cast<binode_associative_container const&>(copy))
+ {
+ if (copy._root_ptr)
+ {
+ if (this->_root_ptr)
+ {
+ *this->_root_ptr = *copy._root_ptr;
+ }
+ else
+ {
+ this->_root_ptr = this->_construct_node_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , copy._root_ptr
+ );
+ }
+ }
+ else
+ {
+ this->clear();
+ }
+
+ this->_key_compare = copy._key_compare;
+ }
+
+ return *this;
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::~binode_associative_container()
+ {
+ this->clear();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::node::const_pointer
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::data() const
+ {
+ return this->_root_ptr;
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::cbegin() const
+ {
+ return this->_root_ptr ? const_iterator(
+ make_in_order_iterator(*this->_root_ptr)
+ , transform_function()
+ ) : this->cend();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::begin() const
+ {
+ return this->_root_ptr ? const_iterator(
+ make_in_order_iterator(*this->_root_ptr)
+ , transform_function()
+ ) : this->end();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::begin()
+ {
+ return this->_root_ptr ? iterator(
+ make_in_order_iterator(*this->_root_ptr)
+ , transform_function()
+ ) : this->end();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::cend() const
+ {
+ return const_iterator(
+ make_in_order_iterator_end(this->_root_ptr)
+ , transform_function()
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::end() const
+ {
+ return const_iterator(
+ make_in_order_iterator_end(this->_root_ptr)
+ , transform_function()
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::end()
+ {
+ return iterator(
+ make_in_order_iterator_end(this->_root_ptr)
+ , transform_function()
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_reverse_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::crbegin() const
+ {
+ return this->_root_ptr ? const_reverse_iterator(
+ make_in_order_reverse_iterator(*this->_root_ptr)
+ , transform_function()
+ ) : this->crend();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_reverse_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::rbegin() const
+ {
+ return this->_root_ptr ? const_reverse_iterator(
+ make_in_order_reverse_iterator(*this->_root_ptr)
+ , transform_function()
+ ) : this->rend();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::reverse_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::rbegin()
+ {
+ return this->_root_ptr ? reverse_iterator(
+ make_in_order_reverse_iterator(*this->_root_ptr)
+ , transform_function()
+ ) : this->rend();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_reverse_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::crend() const
+ {
+ return const_reverse_iterator(
+ make_in_order_reverse_iterator_end(this->_root_ptr)
+ , transform_function()
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_reverse_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::rend() const
+ {
+ return const_reverse_iterator(
+ make_in_order_reverse_iterator_end(this->_root_ptr)
+ , transform_function()
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::reverse_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::rend()
+ {
+ return reverse_iterator(
+ make_in_order_reverse_iterator_end(this->_root_ptr)
+ , transform_function()
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::find(key_type const& key) const
+ {
+ typename node::const_pointer node_ptr = this->_root_ptr;
+
+ node_ptr = binary_descendant(node_ptr, key, this->_value_compare);
+ return node_ptr ? const_iterator(
+ make_in_order_iterator_position(*node_ptr)
+ , transform_function()
+ ) : this->cend();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::find(key_type const& key)
+ {
+ typename node::pointer node_ptr = binary_descendant(
+ this->_root_ptr
+ , key
+ , this->_value_compare
+ );
+
+ return node_ptr ? iterator(
+ make_in_order_iterator_position(*node_ptr)
+ , transform_function()
+ ) : this->end();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::lower_bound(key_type const& key) const
+ {
+ typename node::const_pointer node_ptr = this->_root_ptr;
+
+ node_ptr = binary_lower_bound(node_ptr, key, this->_value_compare);
+ return node_ptr ? const_iterator(
+ make_in_order_iterator_position(*node_ptr)
+ , transform_function()
+ ) : this->cend();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::lower_bound(key_type const& key)
+ {
+ typename node::pointer node_ptr = binary_lower_bound(
+ this->_root_ptr
+ , key
+ , this->_value_compare
+ );
+
+ return node_ptr ? iterator(
+ make_in_order_iterator_position(*node_ptr)
+ , transform_function()
+ ) : this->end();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::upper_bound(key_type const& key) const
+ {
+ typename node::const_pointer node_ptr = this->_root_ptr;
+
+ node_ptr = binary_upper_bound(node_ptr, key, this->_value_compare);
+ return node_ptr ? const_iterator(
+ make_in_order_iterator_position(*node_ptr)
+ , transform_function()
+ ) : this->cend();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::upper_bound(key_type const& key)
+ {
+ typename node::pointer node_ptr = binary_upper_bound(
+ this->_root_ptr
+ , key
+ , this->_value_compare
+ );
+
+ return node_ptr ? iterator(
+ make_in_order_iterator_position(*node_ptr)
+ , transform_function()
+ ) : this->end();
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline ::std::pair<
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_iterator
+ , typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::const_iterator
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::equal_range(key_type const& key) const
+ {
+ return ::std::make_pair(
+ this->lower_bound(key)
+ , this->upper_bound(key)
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline ::std::pair<
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ , typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::equal_range(key_type const& key)
+ {
+ return ::std::make_pair(
+ this->lower_bound(key)
+ , this->upper_bound(key)
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::node::pointer
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_construct_node_from(
+ ::std::tr1::true_type
+ , allocator_type& allocator
+ , value_type const& value
+ )
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(allocator.allocate(1));
+ allocator.construct(result, value);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::allocate(allocator, 1)
+ );
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::construct(allocator, result, value);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return result;
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::node::pointer
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_construct_node_from(
+ ::std::tr1::false_type
+ , allocator_type& allocator
+ , value_type const& value
+ )
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(allocator.allocate(1));
+ allocator.construct(
+ result
+ , ::boost::container::allocator_arg
+ , allocator
+ , value
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::allocate(allocator, 1)
+ );
+ ::boost::container::allocator_traits<allocator_type>::construct(
+ allocator
+ , result
+ , ::boost::container::allocator_arg
+ , allocator
+ , value
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return result;
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_insert(value_type const& value, ::boost::mpl::true_)
+ {
+ if (!this->_root_ptr)
+ {
+ return iterator(
+ make_in_order_iterator(
+ *(
+ this->_root_ptr = this->_construct_node_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , value
+ )
+ )
+ )
+ , transform_function()
+ );
+ }
+
+ typename node::pointer node_ptr = binary_upper_bound(
+ this->_root_ptr
+ , value
+ , insert_compare(this->_key_compare)
+ );
+
+ if (node_ptr)
+ {
+ if (node_ptr->get_left_child_ptr())
+ {
+ for (
+ node_ptr = node_ptr->get_left_child_ptr();
+ node_ptr->get_right_child_ptr();
+ node_ptr = node_ptr->get_right_child_ptr()
+ )
+ {
+ }
+
+ node_ptr = &*node_ptr->emplace_right(value);
+ }
+ else
+ {
+ node_ptr = &*node_ptr->emplace_left(value);
+ }
+ }
+ else // if (!node_ptr)
+ {
+ for (
+ node_ptr = this->_root_ptr;
+ node_ptr->get_right_child_ptr();
+ node_ptr = node_ptr->get_right_child_ptr()
+ )
+ {
+ }
+
+ node_ptr = &*node_ptr->emplace_right(value);
+ }
+
+ node_ptr = Balancer::post_insert(node_ptr);
+
+ if (!node_ptr->get_parent_ptr())
+ {
+ this->_root_ptr = node_ptr;
+ }
+
+ return iterator(
+ make_in_order_iterator_position(*node_ptr)
+ , transform_function()
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ ::std::pair<
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ , bool
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_insert(value_type const& value, ::boost::mpl::false_)
+ {
+ if (!this->_root_ptr)
+ {
+ return ::std::make_pair(
+ iterator(
+ make_in_order_iterator(
+ *(
+ this->_root_ptr = this->_construct_node_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , value
+ )
+ )
+ )
+ , transform_function()
+ )
+ , true
+ );
+ }
+
+ insert_compare compare(this->_key_compare);
+ typename node::pointer p = this->_root_ptr;
+
+ for (;;)
+ {
+ if (compare(value, *p))
+ {
+ if (p->get_left_child_ptr())
+ {
+ p = p->get_left_child_ptr();
+ }
+ else
+ {
+ typename node::pointer n = Balancer::post_insert(
+ p = &*p->emplace_left(value)
+ );
+
+ if (!n->get_parent_ptr())
+ {
+ this->_root_ptr = n;
+ }
+
+ return ::std::make_pair(
+ iterator(
+ make_in_order_iterator_position(*p)
+ , transform_function()
+ )
+ , true
+ );
+ }
+ }
+ else if (compare(*p, value))
+ {
+ if (p->get_right_child_ptr())
+ {
+ p = p->get_right_child_ptr();
+ }
+ else
+ {
+ typename node::pointer n = Balancer::post_insert(
+ p = &*p->emplace_right(value)
+ );
+
+ if (!n->get_parent_ptr())
+ {
+ this->_root_ptr = n;
+ }
+
+ return ::std::make_pair(
+ iterator(
+ make_in_order_iterator_position(*p)
+ , transform_function()
+ )
+ , true
+ );
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ return ::std::make_pair(
+ iterator(
+ make_in_order_iterator_position(*p)
+ , transform_function()
+ )
+ , false
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename ::boost::mpl::if_<
+ IsMultipleAssociative
+ , typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ , ::std::pair<
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ , bool
+ >
+ >::type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::insert(value_type const& value)
+ {
+ return this->_insert(value, IsMultipleAssociative());
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ template <typename ...Args>
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::node::pointer
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_construct_node_from(
+ ::std::tr1::true_type
+ , allocator_type& allocator
+ , Args&& ...args
+ )
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(allocator.allocate(1));
+ allocator.construct(result, ::boost::forward<Args>(args)...);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::allocate(allocator, 1)
+ );
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::construct(allocator, result, ::boost::forward<Args>(args)...);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return result;
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ template <typename ...Args>
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::node::pointer
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_construct_node_from(
+ ::std::tr1::false_type
+ , allocator_type& allocator
+ , Args&& ...args
+ )
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(allocator.allocate(1));
+ allocator.construct(
+ result
+ , ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ );
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ typename node::pointer result(
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::allocate(allocator, 1)
+ );
+ ::boost::container::allocator_traits<allocator_type>::construct(
+ allocator
+ , result
+ , ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ );
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ return result;
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ template <typename ...Args>
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_construct_value_from(
+ ::std::tr1::true_type
+ , Args&& ...args
+ )
+ {
+ return value_type(::boost::forward<Args>(args)...);
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ template <typename ...Args>
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::value_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_construct_value_from(
+ ::std::tr1::false_type
+ , key_type const& key
+ , Args&& ...args
+ )
+ {
+ return value_type(key, T2(::boost::forward<Args>(args)...));
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ template <typename ...Args>
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_emplace(::boost::mpl::true_, Args&& ...args)
+ {
+ if (!this->_root_ptr)
+ {
+ return iterator(
+ make_in_order_iterator(
+ *(
+ this->_root_ptr = this->_construct_node_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , ::boost::forward<Args>(args)...
+ )
+ )
+ )
+ , transform_function()
+ );
+ }
+
+ typename node::pointer node_ptr = binary_upper_bound(
+ this->_root_ptr
+ , this->_construct_value_from(
+ ::std::tr1::is_void<T2>()
+ , ::boost::forward<Args>(args)...
+ )
+ , insert_compare(this->_key_compare)
+ );
+
+ if (node_ptr)
+ {
+ if (node_ptr->get_left_child_ptr())
+ {
+ for (
+ node_ptr = node_ptr->get_left_child_ptr();
+ node_ptr->get_right_child_ptr();
+ node_ptr = node_ptr->get_right_child_ptr()
+ )
+ {
+ }
+
+ node_ptr = &*node_ptr->emplace_right(
+ ::boost::forward<Args>(args)...
+ );
+ }
+ else
+ {
+ node_ptr = &*node_ptr->emplace_left(
+ ::boost::forward<Args>(args)...
+ );
+ }
+ }
+ else // if (!node_ptr)
+ {
+ for (
+ node_ptr = this->_root_ptr;
+ node_ptr->get_right_child_ptr();
+ node_ptr = node_ptr->get_right_child_ptr()
+ )
+ {
+ }
+
+ node_ptr = &*node_ptr->emplace_right(
+ ::boost::forward<Args>(args)...
+ );
+ }
+
+ typename node::pointer anc_ptr = Balancer::post_insert(node_ptr);
+
+ if (!anc_ptr->get_parent_ptr())
+ {
+ this->_root_ptr = anc_ptr;
+ }
+
+ return iterator(
+ make_in_order_iterator_position(*node_ptr)
+ , transform_function()
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ template <typename ...Args>
+ ::std::pair<
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ , bool
+ >
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_emplace(::boost::mpl::false_, Args&& ...args)
+ {
+ if (!this->_root_ptr)
+ {
+ return ::std::make_pair(
+ iterator(
+ make_in_order_iterator(
+ *(
+ this->_root_ptr = this->_construct_node_from(
+ ::std::tr1::is_const<
+ typename ::std::tr1::remove_reference<
+ typename node::traits::allocator_reference
+ >::type
+ >()
+ , this->_allocator
+ , ::boost::forward<Args>(args)...
+ )
+ )
+ )
+ , transform_function()
+ )
+ , true
+ );
+ }
+
+ value_type value(
+ this->_construct_value_from(
+ ::std::tr1::is_void<T2>()
+ , ::boost::forward<Args>(args)...
+ )
+ );
+ insert_compare compare(this->_key_compare);
+ typename node::pointer p = this->_root_ptr;
+
+ for (;;)
+ {
+ if (compare(value, *p))
+ {
+ if (p->get_left_child_ptr())
+ {
+ p = p->get_left_child_ptr();
+ }
+ else
+ {
+ typename node::pointer n = Balancer::post_insert(
+ p = &*p->emplace_left(::boost::forward<Args>(args)...)
+ );
+
+ if (!n->get_parent_ptr())
+ {
+ this->_root_ptr = n;
+ }
+
+ return ::std::make_pair(
+ iterator(
+ make_in_order_iterator_position(*p)
+ , transform_function()
+ )
+ , true
+ );
+ }
+ }
+ else if (compare(*p, value))
+ {
+ if (p->get_right_child_ptr())
+ {
+ p = p->get_right_child_ptr();
+ }
+ else
+ {
+ typename node::pointer n = Balancer::post_insert(
+ p = &*p->emplace_right(::boost::forward<Args>(args)...)
+ );
+
+ if (!n->get_parent_ptr())
+ {
+ this->_root_ptr = n;
+ }
+
+ return ::std::make_pair(
+ iterator(
+ make_in_order_iterator_position(*p)
+ , transform_function()
+ )
+ , true
+ );
+ }
+ }
+ else
+ {
+ break;
+ }
+ }
+
+ return ::std::make_pair(
+ iterator(
+ make_in_order_iterator_position(*p)
+ , transform_function()
+ )
+ , false
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ template <typename ...Args>
+ inline typename ::boost::mpl::if_<
+ IsMultipleAssociative
+ , typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ , ::std::pair<
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::iterator
+ , bool
+ >
+ >::type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::emplace(Args&& ...args)
+ {
+ return this->_emplace(
+ IsMultipleAssociative()
+ , ::boost::forward<Args>(args)...
+ );
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ template < \
+ typename NodeGenerator \
+ , typename T1 \
+ , typename T2 \
+ , typename IsMultipleAssociative \
+ , typename CompareSelector \
+ , typename Balancer \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::node::pointer \
+ binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::_construct_node_from( \
+ ::std::tr1::true_type \
+ , allocator_type& allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ typename node::pointer result(allocator.allocate(1)); \
+ allocator.construct( \
+ result \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return result; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ template < \
+ typename NodeGenerator \
+ , typename T1 \
+ , typename T2 \
+ , typename IsMultipleAssociative \
+ , typename CompareSelector \
+ , typename Balancer \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::node::pointer \
+ binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::_construct_node_from( \
+ ::std::tr1::false_type \
+ , allocator_type& allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ typename node::pointer result(allocator.allocate(1)); \
+ allocator.construct( \
+ result \
+ , ::boost::container::allocator_arg \
+ , allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return result; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ template < \
+ typename NodeGenerator \
+ , typename T1 \
+ , typename T2 \
+ , typename IsMultipleAssociative \
+ , typename CompareSelector \
+ , typename Balancer \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::node::pointer \
+ binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::_construct_node_from( \
+ ::std::tr1::true_type \
+ , allocator_type& allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ typename node::pointer result( \
+ ::boost::container::allocator_traits< \
+ allocator_type \
+ >::allocate(allocator, 1) \
+ ); \
+ ::boost::container::allocator_traits<allocator_type>::construct( \
+ allocator \
+ , result \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return result; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ template < \
+ typename NodeGenerator \
+ , typename T1 \
+ , typename T2 \
+ , typename IsMultipleAssociative \
+ , typename CompareSelector \
+ , typename Balancer \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::node::pointer \
+ binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::_construct_node_from( \
+ ::std::tr1::false_type \
+ , allocator_type& allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ typename node::pointer result( \
+ ::boost::container::allocator_traits< \
+ allocator_type \
+ >::allocate(allocator, 1) \
+ ); \
+ ::boost::container::allocator_traits<allocator_type>::construct( \
+ allocator \
+ , result \
+ , ::boost::container::allocator_arg \
+ , allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ return result; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ template < \
+ typename NodeGenerator \
+ , typename T1 \
+ , typename T2 \
+ , typename IsMultipleAssociative \
+ , typename CompareSelector \
+ , typename Balancer \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ inline typename binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::value_type \
+ binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::_construct_value_from( \
+ ::std::tr1::true_type \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ return value_type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ template < \
+ typename NodeGenerator \
+ , typename T1 \
+ , typename T2 \
+ , typename IsMultipleAssociative \
+ , typename CompareSelector \
+ , typename Balancer \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ inline typename binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::value_type \
+ binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::_construct_value_from( \
+ ::std::tr1::false_type \
+ , key_type const& key \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ return value_type( \
+ key \
+ , T2( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_PP_DEC(BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS)
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ template < \
+ typename NodeGenerator \
+ , typename T1 \
+ , typename T2 \
+ , typename IsMultipleAssociative \
+ , typename CompareSelector \
+ , typename Balancer \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ typename binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::iterator \
+ binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::_emplace( \
+ ::boost::mpl::true_ \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ if (!this->_root_ptr) \
+ { \
+ return iterator( \
+ make_in_order_iterator( \
+ *( \
+ this->_root_ptr = this->_construct_node_from( \
+ ::std::tr1::is_const< \
+ typename ::std::tr1::remove_reference< \
+ typename node::traits::allocator_reference \
+ >::type \
+ >() \
+ , this->_allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ ) \
+ ) \
+ , transform_function() \
+ ); \
+ } \
+ typename node::pointer node_ptr = binary_upper_bound( \
+ this->_root_ptr \
+ , this->_construct_value_from( \
+ ::std::tr1::is_void<T2>() \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ , insert_compare(this->_key_compare) \
+ ); \
+ if (node_ptr) \
+ { \
+ if (node_ptr->get_left_child_ptr()) \
+ { \
+ for ( \
+ node_ptr = node_ptr->get_left_child_ptr(); \
+ node_ptr->get_right_child_ptr(); \
+ node_ptr = node_ptr->get_right_child_ptr() \
+ ) \
+ { \
+ } \
+ node_ptr = &*node_ptr->emplace_right( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ } \
+ else \
+ { \
+ node_ptr = &*node_ptr->emplace_left( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ } \
+ } \
+ else \
+ { \
+ for ( \
+ node_ptr = this->_root_ptr; \
+ node_ptr->get_right_child_ptr(); \
+ node_ptr = node_ptr->get_right_child_ptr() \
+ ) \
+ { \
+ } \
+ node_ptr = &*node_ptr->emplace_right( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ } \
+ node_ptr = Balancer::post_insert(node_ptr); \
+ if (!node_ptr->get_parent_ptr()) \
+ { \
+ this->_root_ptr = node_ptr; \
+ } \
+ return iterator( \
+ make_in_order_iterator_position(*node_ptr) \
+ , transform_function() \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ template < \
+ typename NodeGenerator \
+ , typename T1 \
+ , typename T2 \
+ , typename IsMultipleAssociative \
+ , typename CompareSelector \
+ , typename Balancer \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ ::std::pair< \
+ typename binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::iterator \
+ , bool \
+ > \
+ binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::_emplace( \
+ ::boost::mpl::false_ \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ if (!this->_root_ptr) \
+ { \
+ return ::std::make_pair( \
+ iterator( \
+ make_in_order_iterator( \
+ *( \
+ this->_root_ptr = this->_construct_node_from( \
+ ::std::tr1::is_const< \
+ typename ::std::tr1::remove_reference< \
+ typename node::traits::allocator_reference \
+ >::type \
+ >() \
+ , this->_allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ ) \
+ ) \
+ , transform_function() \
+ ) \
+ , true \
+ ); \
+ } \
+ value_type value( \
+ this->_construct_value_from( \
+ ::std::tr1::is_void<T2>() \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ ); \
+ insert_compare compare(this->_key_compare); \
+ typename node::pointer p = this->_root_ptr; \
+ for (;;) \
+ { \
+ if (compare(value, *p)) \
+ { \
+ if (p->get_left_child_ptr()) \
+ { \
+ p = p->get_left_child_ptr(); \
+ } \
+ else \
+ { \
+ typename node::pointer n = Balancer::post_insert( \
+ p = &*p->emplace_left( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ ); \
+ if (!n->get_parent_ptr()) \
+ { \
+ this->_root_ptr = n; \
+ } \
+ return ::std::make_pair( \
+ iterator( \
+ make_in_order_iterator_position(*p) \
+ , transform_function() \
+ ) \
+ , true \
+ ); \
+ } \
+ } \
+ else if (compare(*p, value)) \
+ { \
+ if (p->get_right_child_ptr()) \
+ { \
+ p = p->get_right_child_ptr(); \
+ } \
+ else \
+ { \
+ typename node::pointer n = Balancer::post_insert( \
+ p = &*p->emplace_right( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ ); \
+ if (!n->get_parent_ptr()) \
+ { \
+ this->_root_ptr = n; \
+ } \
+ return ::std::make_pair( \
+ iterator( \
+ make_in_order_iterator_position(*p) \
+ , transform_function() \
+ ) \
+ , true \
+ ); \
+ } \
+ } \
+ else \
+ { \
+ break; \
+ } \
+ } \
+ return ::std::make_pair( \
+ iterator( \
+ make_in_order_iterator_position(*p) \
+ , transform_function() \
+ ) \
+ , false \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+
+#define BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO(z, n, _) \
+ template < \
+ typename NodeGenerator \
+ , typename T1 \
+ , typename T2 \
+ , typename IsMultipleAssociative \
+ , typename CompareSelector \
+ , typename Balancer \
+ > \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ inline typename ::boost::mpl::if_< \
+ IsMultipleAssociative \
+ , typename binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::iterator \
+ , ::std::pair< \
+ typename binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::iterator \
+ , bool \
+ > \
+ >::type \
+ binode_associative_container< \
+ NodeGenerator \
+ , T1 \
+ , T2 \
+ , IsMultipleAssociative \
+ , CompareSelector \
+ , Balancer \
+ >::emplace( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ return this->_emplace( \
+ IsMultipleAssociative() \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_CONTAINER_BINARY_ASSOCIATIVE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ void
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_erase_one(typename node::pointer p)
+ {
+ for (typename node::pointer s;;)
+ {
+ if (
+ (s = p->get_left_child_ptr()) && (
+ !p->get_right_child_ptr() || Balancer::choose_predecessor(
+ *typename node::const_pointer(p)
+ )
+ )
+ )
+ {
+ while (s->get_right_child_ptr())
+ {
+ s = s->get_right_child_ptr();
+ }
+
+ if (s->get_parent_ptr() == p)
+ {
+ if (!p->get_right_child_ptr())
+ {
+ put(*p, data_key(), get(*s, data_key()));
+
+ bool must_rebalance = Balancer::pre_erase(*s);
+
+ p->erase_left();
+
+ if (must_rebalance)
+ {
+ p = Balancer::post_erase_left(p);
+
+ if (!p->get_parent_ptr())
+ {
+ this->_root_ptr = p;
+ }
+ }
+
+ break;
+ }
+ }
+ else // if (s == s->get_parent_ptr()->get_right_child_ptr())
+ {
+ put(*p, data_key(), get(*s, data_key()));
+
+ if (s->get_left_child_ptr())
+ {
+ p = s;
+ }
+ else // if (s->empty())
+ {
+ p = s->get_parent_ptr();
+
+ if (p->get_left_child_ptr())
+ {
+ put(*s, data_key(), get(*p, data_key()));
+ }
+ else // s is only child of p
+ {
+ bool must_rebalance = Balancer::pre_erase(*s);
+
+ p->erase_right();
+
+ if (must_rebalance)
+ {
+ p = Balancer::post_erase_right(p);
+
+ if (!p->get_parent_ptr())
+ {
+ this->_root_ptr = p;
+ }
+ }
+
+ break;
+ }
+ }
+
+ continue;
+ }
+ }
+
+ if ((s = p->get_right_child_ptr()))
+ {
+ while (s->get_left_child_ptr())
+ {
+ s = s->get_left_child_ptr();
+ }
+
+ put(*p, data_key(), get(*s, data_key()));
+
+ if (s->get_right_child_ptr())
+ {
+ p = s;
+ }
+ else if (s->get_parent_ptr() == p)
+ {
+ bool must_rebalance = Balancer::pre_erase(*s);
+
+ p->erase_right();
+
+ if (must_rebalance)
+ {
+ p = Balancer::post_erase_right(p);
+
+ if (!p->get_parent_ptr())
+ {
+ this->_root_ptr = p;
+ }
+ }
+
+ break;
+ }
+ else
+ {
+ BOOST_ASSERT(s->empty());
+ p = s->get_parent_ptr();
+ BOOST_ASSERT(p->get_left_child_ptr() == s);
+
+ if (p->get_right_child_ptr())
+ {
+ put(*s, data_key(), get(*p, data_key()));
+ }
+ else // s is only child of p
+ {
+ bool must_rebalance = Balancer::pre_erase(*s);
+
+ p->erase_left();
+
+ if (must_rebalance)
+ {
+ p = Balancer::post_erase_left(p);
+
+ if (!p->get_parent_ptr())
+ {
+ this->_root_ptr = p;
+ }
+ }
+
+ break;
+ }
+ }
+ }
+ else // if (p->empty())
+ {
+ s = p;
+ p = p->get_parent_ptr();
+
+ bool must_rebalance = Balancer::pre_erase(*s);
+
+ if (p->get_left_child_ptr() == s)
+ {
+ p->erase_left();
+
+ if (must_rebalance)
+ {
+ p = Balancer::post_erase_left(p);
+
+ if (!p->get_parent_ptr())
+ {
+ this->_root_ptr = p;
+ }
+ }
+ }
+ else // if (p->get_right_child_ptr() == s)
+ {
+ p->erase_right();
+
+ if (must_rebalance)
+ {
+ p = Balancer::post_erase_right(p);
+
+ if (!p->get_parent_ptr())
+ {
+ this->_root_ptr = p;
+ }
+ }
+ }
+
+ break;
+ }
+ }
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::size_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_erase(key_type const& key, ::boost::mpl::true_)
+ {
+ size_type result = ::boost::initialized_value;
+
+ for (
+ typename node::pointer p;
+ (
+ p = binary_descendant(
+ this->_root_ptr
+ , key
+ , this->_value_compare
+ )
+ );
+ ++result
+ )
+ {
+ this->_erase_one(p);
+ }
+
+ return result;
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::size_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_erase(key_type const& key, ::boost::mpl::false_)
+ {
+ this->_erase_one(
+ binary_descendant(
+ this->_root_ptr
+ , key
+ , this->_value_compare
+ )
+ );
+ return 1;
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::size_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::erase(key_type const& key)
+ {
+ if (this->_root_ptr)
+ {
+ if (this->_root_ptr->empty())
+ {
+ this->clear();
+ return 1;
+ }
+ else
+ {
+ return this->_erase(key, IsMultipleAssociative());
+ }
+ }
+ else
+ {
+ return 0;
+ }
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline bool
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::empty() const
+ {
+ return !this->_root_ptr;
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ void
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::clear()
+ {
+ if (this->_root_ptr)
+ {
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ this->_allocator.destroy(this->_root_ptr);
+ this->_allocator.deallocate(this->_root_ptr, 1);
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::destroy(this->_allocator, this->_root_ptr);
+ ::boost::container::allocator_traits<
+ allocator_type
+ >::deallocate(this->_allocator, this->_root_ptr, 1);
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_NO_CXX11_NULLPTR
+ this->_root_ptr = 0;
+#else
+ this->_root_ptr = nullptr;
+#endif
+ }
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::size_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_size(::boost::mpl::true_) const
+ {
+ return this->_root_ptr ? get(*this->_root_ptr, count_key()) : 0;
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::size_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::_size(::boost::mpl::false_) const
+ {
+ size_type result = ::boost::initialized_value;
+
+ for (const_iterator itr = this->cbegin(); itr; ++itr)
+ {
+ ++result;
+ }
+
+ return result;
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::size_type
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::size() const
+ {
+ return this->_size(result_of::has_key<node,count_key>());
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::transform_function::const_result
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::operator[](size_type const& index) const
+ {
+ BOOST_ASSERT_MSG(
+ this->_root_ptr && (index < this->size())
+ , "index out of bounds"
+ );
+
+ typename node::const_pointer node_ptr = this->_root_ptr;
+
+ return transform_function()(
+ *binary_descendant_at_index(node_ptr, index)
+ );
+ }
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ inline typename binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::transform_function::mutable_result
+ binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >::operator[](size_type const& index)
+ {
+ BOOST_ASSERT_MSG(
+ this->_root_ptr && (index < this->size())
+ , "index out of bounds"
+ );
+
+ return transform_function()(
+ *binary_descendant_at_index(this->_root_ptr, index)
+ );
+ }
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename NodeGenerator
+ , typename T
+ , typename CompareSelector
+ , typename Balancer
+ >
+ class binode_set
+ : public
+ //[reference__binode_set__bases
+ binode_associative_container<
+ NodeGenerator
+ , T
+ , void
+ , ::boost::mpl::false_
+ , CompareSelector
+ , Balancer
+ >
+ //]
+ {
+ typedef binode_associative_container<
+ NodeGenerator
+ , T
+ , void
+ , ::boost::mpl::false_
+ , CompareSelector
+ , Balancer
+ >
+ super_t;
+
+ public:
+ BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY(binode_set, super_t)
+ };
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename NodeGenerator
+ , typename T
+ , typename CompareSelector
+ , typename Balancer
+ >
+ class binode_multiset
+ : public
+ //[reference__binode_multiset__bases
+ binode_associative_container<
+ NodeGenerator
+ , T
+ , void
+ , ::boost::mpl::true_
+ , CompareSelector
+ , Balancer
+ >
+ //]
+ {
+ typedef binode_associative_container<
+ NodeGenerator
+ , T
+ , void
+ , ::boost::mpl::true_
+ , CompareSelector
+ , Balancer
+ >
+ super_t;
+
+ public:
+ BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY(
+ binode_multiset
+ , super_t
+ )
+ };
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename NodeGenerator
+ , typename Key
+ , typename Mapped
+ , typename CompareSelector
+ , typename Balancer
+ >
+ class binode_map
+ : public
+ //[reference__binode_map__bases
+ binode_associative_container<
+ NodeGenerator
+ , Key
+ , Mapped
+ , ::boost::mpl::false_
+ , CompareSelector
+ , Balancer
+ >
+ //]
+ {
+ typedef binode_associative_container<
+ NodeGenerator
+ , Key
+ , Mapped
+ , ::boost::mpl::false_
+ , CompareSelector
+ , Balancer
+ >
+ super_t;
+
+ public:
+ //[reference__binode_map__mapped_type
+ typedef Mapped mapped_type;
+ //]
+
+ BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY(binode_map, super_t)
+ };
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename NodeGenerator
+ , typename Key
+ , typename Mapped
+ , typename CompareSelector
+ , typename Balancer
+ >
+ class binode_multimap
+ : public
+ //[reference__binode_multimap__bases
+ binode_associative_container<
+ NodeGenerator
+ , Key
+ , Mapped
+ , ::boost::mpl::true_
+ , CompareSelector
+ , Balancer
+ >
+ //]
+ {
+ typedef binode_associative_container<
+ NodeGenerator
+ , Key
+ , Mapped
+ , ::boost::mpl::true_
+ , CompareSelector
+ , Balancer
+ >
+ super_t;
+
+ public:
+ //[reference__binode_multimap__mapped_type
+ typedef Mapped mapped_type;
+ //]
+
+ BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY(
+ binode_multimap
+ , super_t
+ )
+ };
+}} // namespace boost::tree_node
+
+#endif // BOOST_TREE_NODE_CONTAINER_BINODE_ASSOCIATIVE_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/container/binode_associative_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/container/binode_associative_fwd.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,60 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_CONTAINER_BINODE_ASSOCIATIVE_FWD_HPP_INCLUDED
+#define BOOST_TREE_NODE_CONTAINER_BINODE_ASSOCIATIVE_FWD_HPP_INCLUDED
+
+#include <boost/container_gen/selectors.hpp>
+#include <boost/tree_node/balancer/red_black.hpp>
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename NodeGenerator
+ , typename T1
+ , typename T2
+ , typename IsMultipleAssociative
+ , typename CompareSelector
+ , typename Balancer
+ >
+ class binode_associative_container;
+
+ template <
+ typename NodeGenerator
+ , typename T
+ , typename CompareSelector = ::boost::default_ordering_selector
+ , typename Balancer = red_black_balancer
+ >
+ class binode_set;
+
+ template <
+ typename NodeGenerator
+ , typename T
+ , typename CompareSelector = ::boost::default_ordering_selector
+ , typename Balancer = red_black_balancer
+ >
+ class binode_multiset;
+
+ template <
+ typename NodeGenerator
+ , typename Key
+ , typename Mapped
+ , typename CompareSelector = ::boost::default_ordering_selector
+ , typename Balancer = red_black_balancer
+ >
+ class binode_map;
+
+ template <
+ typename NodeGenerator
+ , typename Key
+ , typename Mapped
+ , typename CompareSelector = ::boost::default_ordering_selector
+ , typename Balancer = red_black_balancer
+ >
+ class binode_multimap;
+}} // namespace boost::tree_node
+
+#endif // BOOST_TREE_NODE_CONTAINER_BINODE_ASSOCIATIVE_FWD_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/container/binode_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/container/binode_fwd.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,22 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_CONTAINER_BINODE_FWD_HPP_INCLUDED
+#define BOOST_TREE_NODE_CONTAINER_BINODE_FWD_HPP_INCLUDED
+
+#include <boost/tree_node/balancer/red_black.hpp>
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename NodeGenerator
+ , typename T
+ , typename Balancer = red_black_balancer
+ >
+ class binode_container;
+}} // namespace boost::tree_node
+
+#endif // BOOST_TREE_NODE_CONTAINER_BINODE_FWD_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/intrinsic/at_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/intrinsic/at_key.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,37 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_INTRINSIC_AT_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_INTRINSIC_AT_KEY_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/utility/get_reference.hpp>
+
+//[reference__tree_node__result_of__at_key
+namespace boost { namespace tree_node { namespace result_of {
+
+ template <typename Key>
+ struct at_key_impl
+ {
+ template <typename Node>
+ struct apply
+ {
+ typedef BOOST_TYPEOF_TPL(get<Key>(::boost::get_reference<Node>()))
+ type;
+ };
+ };
+
+ template <typename Node, typename Key>
+ struct at_key : ::boost::mpl::apply_wrap1<at_key_impl<Key>,Node>
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2,at_key,(Node,Key))
+ };
+}}} // namespace boost::tree_node::result_of
+//]
+
+#endif // BOOST_TREE_NODE_INTRINSIC_AT_KEY_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/intrinsic/get_keys.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/intrinsic/get_keys.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,50 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_INTRINSIC_GET_KEYS_HPP_INCLUDED
+#define BOOST_TREE_NODE_INTRINSIC_GET_KEYS_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/vector/vector0.hpp>
+#include <boost/mpl/joint_view.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+//[reference__tree_node__result_of__get_keys
+namespace boost { namespace tree_node { namespace result_of {
+
+ template <typename Node>
+ struct get_keys_impl
+ {
+ typedef ::boost::mpl::vector0<> type;
+ };
+
+ template <typename Node>
+ class get_keys
+ {
+ typedef typename Node::super_t _base;
+
+ public:
+ typedef typename ::boost::mpl::joint_view<
+ typename get_keys_impl<Node>::type
+ , typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<_base>
+ , ::boost::mpl::vector0<>
+ , get_keys<_base>
+ >::type
+ >::type
+ type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,get_keys,(Node))
+ };
+}}} // namespace boost::tree_node::result_of
+//]
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#endif // BOOST_TREE_NODE_INTRINSIC_GET_KEYS_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/intrinsic/get_properties.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/intrinsic/get_properties.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,133 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_INTRINSIC_GET_PROPERTIES_HPP_INCLUDED
+#define BOOST_TREE_NODE_INTRINSIC_GET_PROPERTIES_HPP_INCLUDED
+
+#include <boost/tree_node/preprocessor.hpp>
+
+#if !defined BOOST_TREE_NODE_CAN_USE_FUSION
+#error This component requires working Boost.Fusion.
+#endif
+
+#include <boost/fusion/support/pair.hpp>
+#include <boost/tree_node/intrinsic/at_key.hpp>
+
+namespace boost { namespace tree_node { namespace _detail {
+
+ template <typename Node>
+ class fused_val_function
+ {
+ Node& _node;
+
+ public:
+ template <typename T>
+ struct result;
+
+ template <typename Key>
+ struct result<fused_val_function(Key)>
+ {
+ typedef typename ::boost::fusion::result_of::make_pair<
+ Key
+ , typename ::boost::tree_node::result_of::at_key<
+ Node
+ , Key
+ >::type
+ >::type
+ type;
+ };
+
+ explicit fused_val_function(Node& node);
+
+ template <typename Key>
+ typename result<fused_val_function(Key)>::type operator()(Key) const;
+ };
+
+ template <typename Node>
+ fused_val_function<Node>::fused_val_function(Node& node) : _node(node)
+ {
+ }
+
+ template <typename Node>
+ template <typename Key>
+ inline typename fused_val_function<
+ Node
+ >::BOOST_NESTED_TEMPLATE result<fused_val_function<Node>(Key)>::type
+ fused_val_function<Node>::operator()(Key) const
+ {
+ return ::boost::fusion::make_pair<Key>(get<Key>(_node));
+ }
+}}} // namespace boost::tree_node::_detail
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/fusion/view/transform_view.hpp>
+#include <boost/tree_node/intrinsic/get_keys.hpp>
+
+//[reference__result_of__get_properties
+namespace boost { namespace tree_node { namespace result_of {
+
+ template <typename Node>
+ struct get_properties
+ {
+//<-
+#if 0
+//->
+ typedef unspecified type;
+//<-
+#endif
+ typedef ::boost::fusion::transform_view<
+ typename get_keys<
+ typename ::std::tr1::remove_const<Node>::type
+ >::type const
+ , ::boost::tree_node::_detail::fused_val_function<Node>
+ >
+ type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,get_properties,(Node))
+//->
+ };
+}}} // namespace boost::tree_node::result_of
+//]
+
+//[reference__get_properties
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ typename result_of::get_properties<Node const>::type
+ get_properties(Node const& node);
+
+ //<-
+ template <typename Node>
+ inline typename result_of::get_properties<Node const>::type
+ get_properties(Node const& node)
+ {
+ typedef ::boost::tree_node::_detail::fused_val_function<Node const> F;
+ typedef typename result_of::get_keys<Node>::type Keys;
+
+ return ::boost::fusion::transform_view<Keys const,F>(Keys(), F(node));
+ }
+ //->
+
+ template <typename Node>
+ typename result_of::get_properties<Node>::type
+ get_properties(Node& node);
+
+ //<-
+ template <typename Node>
+ inline typename result_of::get_properties<Node>::type
+ get_properties(Node& node)
+ {
+ typedef ::boost::tree_node::_detail::fused_val_function<Node> F;
+ typedef typename result_of::get_keys<Node>::type Keys;
+
+ return ::boost::fusion::transform_view<Keys const,F>(Keys(), F(node));
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_INTRINSIC_GET_PROPERTIES_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/intrinsic/has_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/intrinsic/has_key.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,62 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_INTRINSIC_HAS_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_INTRINSIC_HAS_KEY_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/tr1/type_traits.hpp>
+
+namespace boost { namespace tree_node { namespace result_of {
+
+ template <typename Node, typename Key>
+ struct has_key : ::std::tr1::is_base_of<Key,Node>
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2,has_key,(Node,Key))
+ };
+}}} // namespace boost::tree_node::result_of
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+//[reference__tree_node__result_of__has_key
+namespace boost { namespace tree_node { namespace result_of {
+
+ template <typename Node, typename Key>
+ struct has_key_impl : has_key_impl<typename Node::super_t,Key>
+ {
+ };
+
+ template <typename Key>
+ struct has_key_impl<void,Key> : ::boost::mpl::false_
+ {
+ };
+
+ template <typename Node, typename Key>
+ struct has_key : has_key_impl<Node,Key>::type
+ {
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2,has_key,(Node,Key))
+ };
+}}} // namespace boost::tree_node::result_of
+//]
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//[reference__tree_node__has_key
+namespace boost { namespace tree_node {
+
+ template <typename Key, typename Node>
+ typename result_of::has_key<Node,Key>::type has_key(Node const& node);
+
+ template <typename Key, typename Node>
+ inline typename result_of::has_key<Node,Key>::type has_key(Node const&)
+ {
+ return typename result_of::has_key<Node,Key>::type();
+ }
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_INTRINSIC_HAS_KEY_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/intrinsic/value_at_key.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/intrinsic/value_at_key.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,46 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_INTRINSIC_VALUE_AT_KEY_HPP_INCLUDED
+#define BOOST_TREE_NODE_INTRINSIC_VALUE_AT_KEY_HPP_INCLUDED
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/typeof/typeof.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/utility/get_reference.hpp>
+
+//[reference__tree_node__result_of__value_at_key
+namespace boost { namespace tree_node { namespace result_of {
+
+ template <typename Node, typename Key>
+ class value_at_key
+ {
+ typedef typename ::std::tr1::remove_const<Node>::type::super_t
+ _base;
+
+ public:
+ typedef BOOST_TYPEOF_TPL(
+ get<Key>(
+ ::boost::get_reference<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_const<Node>
+ , _base const
+ , _base
+ >::type
+ >()
+ )
+ )
+ type;
+
+ //<-
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(2,value_at_key,(Node,Key))
+ //->
+ };
+}}} // namespace boost::tree_node::result_of
+//]
+
+#endif // BOOST_TREE_NODE_INTRINSIC_VALUE_AT_KEY_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/iterator/breadth_first.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/iterator/breadth_first.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,211 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ITERATOR_BREADTH_FIRST_HPP
+#define BOOST_TREE_NODE_ITERATOR_BREADTH_FIRST_HPP
+
+#include <deque>
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#endif
+
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/detail/metafunction/container_pointer.hpp>
+#include <boost/detail/metafunction/container_iterator.hpp>
+
+//[reference__breadth_first_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ class breadth_first_iterator
+ : public ::boost::iterator_adaptor<
+ breadth_first_iterator<Node>
+//<-
+#if 0
+//->
+ , Node*
+ //<-
+#endif
+ , typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ //->
+ , ::boost::use_default
+ , ::boost::forward_traversal_tag
+ >
+ {
+ //<-
+ typedef ::boost::iterator_adaptor<
+ breadth_first_iterator<Node>
+ , typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ , ::boost::use_default
+ , ::boost::forward_traversal_tag
+ >
+ super_t;
+
+#if !defined BOOST_NO_SFINAE
+ //->
+ struct enabler
+ {
+ };
+ //<-
+#endif
+
+ public: // Should be private, but conversion ctor won't work.
+ ::std::deque<
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ > _queue;
+ ::boost::tree_node::traversal_state _state;
+ //->
+
+ public:
+ breadth_first_iterator();
+
+ explicit breadth_first_iterator(Node& node);
+
+ template <typename N>
+ breadth_first_iterator(
+ breadth_first_iterator<N> const& other
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ , typename ::boost::enable_if<
+ ::std::tr1::is_convertible<N,Node>
+ , enabler
+ >::type = enabler()
+//<-
+#endif
+//->
+ );
+
+ operator ::boost::tree_node::traversal_state() const;
+
+ //<-
+#if !BOOST_WORKAROUND(__GNUC__, == 2)
+ private:
+ friend class ::boost::iterator_core_access;
+#endif
+
+ void increment();
+
+ template <typename N>
+ bool equal(breadth_first_iterator<N> const& other) const;
+ //->
+ };
+
+ //<-
+ template <typename Node>
+ breadth_first_iterator<Node>::breadth_first_iterator()
+ : super_t(), _queue(), _state(::boost::tree_node::no_traversal)
+ {
+ }
+
+ template <typename Node>
+ breadth_first_iterator<Node>::breadth_first_iterator(Node& node)
+ : super_t(&node)
+ , _queue()
+ , _state(::boost::tree_node::breadth_first_traversal)
+ {
+ }
+
+ template <typename Node>
+ template <typename N>
+ breadth_first_iterator<Node>::breadth_first_iterator(
+ breadth_first_iterator<N> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ ::std::tr1::is_convertible<N,Node>
+ , enabler
+ >::type
+#endif
+ ) : super_t(other.base())
+ , _queue(other._queue.begin(), other._queue.end())
+ , _state(other._state)
+ {
+ }
+
+ template <typename Node>
+ inline breadth_first_iterator<Node>::operator
+ ::boost::tree_node::traversal_state() const
+ {
+ return this->_state;
+ }
+
+ template <typename Node>
+ void breadth_first_iterator<Node>::increment()
+ {
+ typedef typename ::boost::detail::metafunction::container_iterator<
+ Node
+ >::type
+ child_itr;
+
+ child_itr itr_end = this->base()->end();
+
+ for (child_itr itr = this->base()->begin(); itr != itr_end; ++itr)
+ {
+ this->_queue.push_back(&dereference_iterator(itr));
+ }
+
+ if (this->_queue.empty())
+ {
+ this->_state = ::boost::tree_node::no_traversal;
+ }
+ else
+ {
+ this->base_reference() = this->_queue.front();
+ this->_queue.pop_front();
+ }
+ }
+
+ template <typename Node>
+ template <typename N>
+ inline bool
+ breadth_first_iterator<Node>::equal(
+ breadth_first_iterator<N> const& other
+ ) const
+ {
+ if (this->_state == other._state)
+ {
+ return this->_state ? (
+ this->base() == other.base()
+ ) : !other._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_breadth_first_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ breadth_first_iterator<Node> make_breadth_first_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline breadth_first_iterator<Node> make_breadth_first_iterator(Node& node)
+ {
+ return breadth_first_iterator<Node>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ITERATOR_BREADTH_FIRST_HPP
+
Added: sandbox/tree_node/boost/tree_node/iterator/breadth_first_descendant.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/iterator/breadth_first_descendant.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,230 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ITERATOR_BREADTH_FIRST_DESCENDANT_HPP
+#define BOOST_TREE_NODE_ITERATOR_BREADTH_FIRST_DESCENDANT_HPP
+
+#include <deque>
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#endif
+
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/detail/metafunction/container_iterator.hpp>
+
+//[reference__breadth_first_descendant_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ class breadth_first_descendant_iterator
+ : public ::boost::iterator_adaptor<
+ breadth_first_descendant_iterator<Node>
+//<-
+#if 0
+//->
+ , typename ::boost::mpl::if_<
+ ::std::tr1::is_const<Node>
+ , typename Node::const_iterator
+ , typename Node::iterator
+ >::type
+ //<-
+#endif
+ , typename ::boost::detail::metafunction::container_iterator<
+ Node
+ >::type
+ //->
+ , ::boost::use_default
+ , ::boost::forward_traversal_tag
+ >
+ {
+ //<-
+ typedef typename ::boost::detail::metafunction::container_iterator<
+ Node
+ >::type
+ child_iterator;
+ typedef ::boost::iterator_adaptor<
+ breadth_first_descendant_iterator<Node>
+ , child_iterator
+ , ::boost::use_default
+ , ::boost::forward_traversal_tag
+ >
+ super_t;
+
+#if !defined BOOST_NO_SFINAE
+ //->
+ struct enabler
+ {
+ };
+ //<-
+#endif
+
+ public: // Should be private, but conversion ctor won't work.
+ ::std::deque<child_iterator> _queue;
+ ::boost::tree_node::traversal_state _state;
+ //->
+
+ public:
+ breadth_first_descendant_iterator();
+
+ explicit breadth_first_descendant_iterator(Node& node);
+
+ template <typename N>
+ breadth_first_descendant_iterator(
+ breadth_first_descendant_iterator<N> const& other
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ , typename ::boost::enable_if<
+ ::std::tr1::is_convertible<N,Node>
+ , enabler
+ >::type = enabler()
+//<-
+#endif
+//->
+ );
+
+ operator ::boost::tree_node::traversal_state() const;
+
+ //<-
+#if !BOOST_WORKAROUND(__GNUC__, == 2)
+ private:
+ friend class ::boost::iterator_core_access;
+#endif
+
+ void increment();
+
+ template <typename N>
+ bool equal(breadth_first_descendant_iterator<N> const& other) const;
+
+ private:
+ void _push_children(Node& node);
+
+ void _pop();
+ //->
+ };
+
+ //<-
+ template <typename Node>
+ breadth_first_descendant_iterator<
+ Node
+ >::breadth_first_descendant_iterator()
+ : super_t(), _queue(), _state(::boost::tree_node::no_traversal)
+ {
+ }
+
+ template <typename Node>
+ breadth_first_descendant_iterator<Node>::breadth_first_descendant_iterator(
+ Node& node
+ ) : super_t()
+ , _queue()
+ , _state(::boost::tree_node::breadth_first_traversal)
+ {
+ this->_push_children(node);
+ this->_pop();
+ }
+
+ template <typename Node>
+ template <typename N>
+ breadth_first_descendant_iterator<Node>::breadth_first_descendant_iterator(
+ breadth_first_descendant_iterator<N> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ ::std::tr1::is_convertible<N,Node>
+ , enabler
+ >::type
+#endif
+ ) : super_t(other.base())
+ , _queue(other._queue.begin(), other._queue.end())
+ , _state(other._state)
+ {
+ }
+
+ template <typename Node>
+ inline breadth_first_descendant_iterator<Node>::operator
+ ::boost::tree_node::traversal_state() const
+ {
+ return this->_state;
+ }
+
+ template <typename Node>
+ inline void breadth_first_descendant_iterator<Node>::increment()
+ {
+ this->_push_children(dereference_iterator(this->base()));
+ this->_pop();
+ }
+
+ template <typename Node>
+ template <typename N>
+ inline bool
+ breadth_first_descendant_iterator<Node>::equal(
+ breadth_first_descendant_iterator<N> const& other
+ ) const
+ {
+ if (this->_state == other._state)
+ {
+ return this->_state ? (
+ this->base() == other.base()
+ ) : !other._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ template <typename Node>
+ void breadth_first_descendant_iterator<Node>::_push_children(Node& node)
+ {
+ child_iterator itr_end = node.end();
+
+ for (child_iterator itr = node.begin(); itr != itr_end; ++itr)
+ {
+ this->_queue.push_back(itr);
+ }
+ }
+
+ template <typename Node>
+ inline void breadth_first_descendant_iterator<Node>::_pop()
+ {
+ if (this->_queue.empty())
+ {
+ this->_state = ::boost::tree_node::no_traversal;
+ }
+ else
+ {
+ this->base_reference() = this->_queue.front();
+ this->_queue.pop_front();
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_breadth_first_descendant_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ breadth_first_descendant_iterator<Node>
+ make_breadth_first_descendant_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline breadth_first_descendant_iterator<Node>
+ make_breadth_first_descendant_iterator(Node& node)
+ {
+ return breadth_first_descendant_iterator<Node>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ITERATOR_BREADTH_FIRST_DESCENDANT_HPP
+
Added: sandbox/tree_node/boost/tree_node/iterator/depth_first.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/iterator/depth_first.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,568 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ITERATOR_DEPTH_FIRST_HPP
+#define BOOST_TREE_NODE_ITERATOR_DEPTH_FIRST_HPP
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_CXX11_NULLPTR
+#include <cstddef>
+#endif
+
+#include <iterator>
+#include <deque>
+#include <boost/assert.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/utility/value_init.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/equal_to.hpp>
+#endif
+
+#include <boost/mpl/bool.hpp>
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/detail/metafunction/is_bidirectional_iterator.hpp>
+#include <boost/detail/metafunction/container_pointer.hpp>
+#include <boost/detail/metafunction/container_iterator.hpp>
+#include <boost/detail/metafunction/container_reverse_iterator.hpp>
+
+//[reference__depth_first_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node, typename IsReverse = ::boost::mpl::false_>
+ class depth_first_iterator
+ : public ::boost::iterator_adaptor<
+ depth_first_iterator<Node,IsReverse>
+//<-
+#if 0
+//->
+ , Node*
+ //<-
+#endif
+ , typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ //->
+ , ::boost::use_default
+ , typename ::boost::mpl::if_<
+ // Node [const] has bidirectional iterators
+ //<-
+ ::boost::detail::metafunction::is_bidirectional_iterator<
+ typename ::std::tr1::remove_const<Node>::type::iterator
+ >
+ //->
+ , ::boost::bidirectional_traversal_tag
+ , ::boost::forward_traversal_tag
+ >::type
+ >
+ {
+ //<-
+ typedef typename ::boost::mpl::eval_if<
+ IsReverse
+ , ::boost::detail::metafunction::container_reverse_iterator<
+ Node
+ >
+ , ::boost::detail::metafunction::container_iterator<Node>
+ >::type
+ child_iterator;
+ typedef ::boost::iterator_adaptor<
+ depth_first_iterator<Node,IsReverse>
+ , typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ , ::boost::use_default
+ , typename ::boost::mpl::if_<
+ ::boost::detail::metafunction
+ ::is_bidirectional_iterator<
+ typename ::std::tr1::remove_const<
+ Node
+ >::type::iterator
+ >
+ , ::boost::bidirectional_traversal_tag
+ , ::boost::forward_traversal_tag
+ >::type
+ >
+ super_t;
+
+#if !defined BOOST_NO_SFINAE
+ struct enabler
+ {
+ };
+#endif
+
+ public: // Should be private, but conversion ctor won't work.
+ ::std::deque<
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ > _node_stack; // ancestors
+ ::std::deque<child_iterator> _itr_stack; // total position
+ child_iterator _current_itr; // points to base()
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type _root_ptr;
+ ::boost::tree_node::traversal_state _state;
+ //->
+
+ public:
+//<-
+#if 0
+//->
+ explicit depth_first_iterator(Node* const& node_ptr = nullptr);
+//<-
+#endif
+ explicit depth_first_iterator(
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type const& node_ptr = ::boost::initialized_value
+ );
+//->
+
+ explicit depth_first_iterator(Node& node);
+
+ template <typename N, typename I>
+ depth_first_iterator(
+ depth_first_iterator<N,I> const& other
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type = enabler()
+//<-
+#endif
+//->
+ );
+
+ operator ::boost::tree_node::traversal_state() const;
+
+ //<-
+#if !BOOST_WORKAROUND(__GNUC__, == 2)
+ private:
+ friend class ::boost::iterator_core_access;
+#endif
+
+ void increment();
+
+ void decrement();
+
+ template <typename N, typename I>
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ equal(depth_first_iterator<N,I> const& other) const;
+
+ private:
+ child_iterator _begin(::boost::mpl::false_);
+
+ child_iterator _begin(::boost::mpl::true_);
+
+ child_iterator _end(::boost::mpl::false_);
+
+ child_iterator _end(::boost::mpl::true_);
+ //->
+ };
+
+ //<-
+ template <typename Node, typename IsReverse>
+ depth_first_iterator<Node,IsReverse>::depth_first_iterator(
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type const& node_ptr
+ ) : super_t(
+#if defined BOOST_NO_CXX11_NULLPTR
+ 0
+#else
+ nullptr
+#endif
+ )
+ , _node_stack()
+ , _itr_stack()
+ , _current_itr()
+ , _root_ptr(node_ptr)
+ , _state(::boost::tree_node::no_traversal)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ depth_first_iterator<Node,IsReverse>::depth_first_iterator(Node& node)
+ : super_t(&node)
+ , _node_stack()
+ , _itr_stack()
+ , _current_itr()
+ , _root_ptr(&node)
+ , _state(::boost::tree_node::pre_order_traversal)
+ {
+ this->_itr_stack.push_back(this->_begin(IsReverse()));
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ depth_first_iterator<Node,IsReverse>::depth_first_iterator(
+ depth_first_iterator<N,I> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type
+#endif
+ ) : super_t(other.base())
+ , _node_stack(other._node_stack.begin(), other._node_stack.end())
+ , _itr_stack(other._itr_stack.begin(), other._itr_stack.end())
+ , _current_itr(other._current_itr)
+ , _root_ptr(other._root_ptr)
+ , _state(other._state)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ inline depth_first_iterator<Node,IsReverse>::operator
+ ::boost::tree_node::traversal_state() const
+ {
+ return this->_state;
+ }
+
+ template <typename Node, typename IsReverse>
+ void depth_first_iterator<Node,IsReverse>::increment()
+ {
+ switch (this->_state)
+ {
+ case ::boost::tree_node::pre_order_traversal:
+ {
+ child_iterator& itr = this->_itr_stack.back();
+
+ if (itr == this->_end(IsReverse()))
+ {
+ // No children: change state.
+ this->_state = ::boost::tree_node::post_order_traversal;
+ }
+ else
+ {
+ // Go deeper.
+ this->_node_stack.push_back(this->base());
+ this->base_reference() = &(
+ dereference_iterator(this->_current_itr = itr)
+ );
+ this->_itr_stack.push_back(this->_begin(IsReverse()));
+ }
+
+ break;
+ }
+
+ case ::boost::tree_node::post_order_traversal:
+ {
+ this->_itr_stack.pop_back();
+
+ if (this->_node_stack.empty())
+ {
+ // Pass the end.
+ this->_state = ::boost::tree_node::no_traversal;
+ this->_itr_stack.clear();
+ }
+ else
+ {
+ this->base_reference() = this->_node_stack.back();
+ this->_node_stack.pop_back();
+
+ if (++this->_current_itr == this->_end(IsReverse()))
+ {
+ // No next sibling: traverse the parent.
+ child_iterator itr = this->_itr_stack.back();
+
+ this->_itr_stack.pop_back();
+
+ if (!this->_itr_stack.empty())
+ {
+ this->_current_itr = this->_itr_stack.back();
+ }
+
+ this->_itr_stack.push_back(itr);
+ }
+ else
+ {
+ // Traverse the sibling.
+ this->_itr_stack.pop_back();
+ this->_node_stack.push_back(this->base());
+ this->_itr_stack.push_back(this->_current_itr);
+ this->base_reference() = &(
+ dereference_iterator(this->_current_itr)
+ );
+ this->_state = ::boost::tree_node::pre_order_traversal;
+ this->_itr_stack.push_back(this->_begin(IsReverse()));
+ }
+ }
+
+ break;
+ }
+
+ default:
+ {
+ BOOST_ASSERT_MSG(false, "Do not increment past-the-end!");
+ }
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ void depth_first_iterator<Node,IsReverse>::decrement()
+ {
+ switch (this->_state)
+ {
+ case ::boost::tree_node::pre_order_traversal:
+ {
+ this->_itr_stack.pop_back();
+
+ if (this->_node_stack.empty())
+ {
+ // Pass the end.
+ this->_state = ::boost::tree_node::no_traversal;
+ this->_itr_stack.clear();
+ }
+ else
+ {
+ this->base_reference() = this->_node_stack.back();
+ this->_node_stack.pop_back();
+
+ if (this->_current_itr == this->_begin(IsReverse()))
+ {
+ // No previous sibling: traverse the parent.
+ child_iterator itr = this->_itr_stack.back();
+
+ this->_itr_stack.pop_back();
+
+ if (!this->_itr_stack.empty())
+ {
+ this->_current_itr = this->_itr_stack.back();
+ }
+
+ this->_itr_stack.push_back(itr);
+ }
+ else
+ {
+ // Traverse the sibling.
+ this->_itr_stack.pop_back();
+ this->_node_stack.push_back(this->base());
+ this->_itr_stack.push_back(--this->_current_itr);
+ this->base_reference() = &(
+ dereference_iterator(this->_current_itr)
+ );
+ this->_state = ::boost::tree_node::post_order_traversal;
+
+ // Add last child position, if any, to total position.
+ child_iterator last_itr = this->_begin(IsReverse());
+
+ if (last_itr != this->_end(IsReverse()))
+ {
+ ::std::advance(last_itr, this->base()->size() - 1);
+ }
+
+ this->_itr_stack.push_back(last_itr);
+ }
+ }
+
+ break;
+ }
+
+ case ::boost::tree_node::post_order_traversal:
+ {
+ child_iterator& itr = this->_itr_stack.back();
+
+ if (itr == this->_end(IsReverse()))
+ {
+ // No children: change state.
+ this->_state = ::boost::tree_node::pre_order_traversal;
+ }
+ else
+ {
+ // Go deeper.
+ this->_node_stack.push_back(this->base());
+ this->base_reference() = &(
+ dereference_iterator(this->_current_itr = itr)
+ );
+
+ // Add last child position, if any, to total position.
+ child_iterator last_itr = this->_begin(IsReverse());
+
+ if (last_itr != this->_end(IsReverse()))
+ {
+ ::std::advance(last_itr, this->base()->size() - 1);
+ }
+
+ this->_itr_stack.push_back(last_itr);
+ }
+
+ break;
+ }
+
+ default:
+ {
+ BOOST_ASSERT_MSG(
+ this->_root_ptr
+ , "Do not decrement past-the-end of NULL!"
+ );
+ this->base_reference() = this->_root_ptr;
+ this->_state = ::boost::tree_node::post_order_traversal;
+
+ // Add last child position, if any, to total position.
+ child_iterator last_itr = this->_begin(IsReverse());
+
+ if (last_itr != this->_end(IsReverse()))
+ {
+ ::std::advance(last_itr, this->base()->size() - 1);
+ }
+
+ this->_itr_stack.push_back(last_itr);
+ break;
+ }
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ depth_first_iterator<Node,IsReverse>::equal(
+ depth_first_iterator<N,I> const& other
+ ) const
+ {
+ if (this->_state == other._state)
+ {
+ return this->_state ? (
+ this->base() == other.base()
+ ) : !other._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename depth_first_iterator<Node,IsReverse>::child_iterator
+ depth_first_iterator<Node,IsReverse>::_begin(::boost::mpl::false_)
+ {
+ return this->base()->begin();
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename depth_first_iterator<Node,IsReverse>::child_iterator
+ depth_first_iterator<Node,IsReverse>::_begin(::boost::mpl::true_)
+ {
+ return this->base()->rbegin();
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename depth_first_iterator<Node,IsReverse>::child_iterator
+ depth_first_iterator<Node,IsReverse>::_end(::boost::mpl::false_)
+ {
+ return this->base()->end();
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename depth_first_iterator<Node,IsReverse>::child_iterator
+ depth_first_iterator<Node,IsReverse>::_end(::boost::mpl::true_)
+ {
+ return this->base()->rend();
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_depth_first_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ depth_first_iterator<Node> make_depth_first_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline depth_first_iterator<Node> make_depth_first_iterator(Node& node)
+ {
+ return depth_first_iterator<Node>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_depth_first_iterator_end
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ depth_first_iterator<Node> make_depth_first_iterator_end(Node* ptr);
+
+ //<-
+ template <typename Node>
+ inline depth_first_iterator<Node> make_depth_first_iterator_end(Node* ptr)
+ {
+ return depth_first_iterator<Node>(ptr);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_depth_first_reverse_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ depth_first_iterator<Node,::boost::mpl::true_>
+ make_depth_first_reverse_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline depth_first_iterator<Node,::boost::mpl::true_>
+ make_depth_first_reverse_iterator(Node& node)
+ {
+ return depth_first_iterator<Node,::boost::mpl::true_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_depth_first_reverse_iterator_end
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ depth_first_iterator<Node,::boost::mpl::true_>
+ make_depth_first_reverse_iterator_end(Node* ptr);
+
+ //<-
+ template <typename Node>
+ inline depth_first_iterator<Node,::boost::mpl::true_>
+ make_depth_first_reverse_iterator_end(Node* ptr)
+ {
+ return depth_first_iterator<Node,::boost::mpl::true_>(ptr);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ITERATOR_DEPTH_FIRST_HPP
+
Added: sandbox/tree_node/boost/tree_node/iterator/depth_first_descendant.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/iterator/depth_first_descendant.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,667 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ITERATOR_DEPTH_FIRST_DESCENDANT_HPP
+#define BOOST_TREE_NODE_ITERATOR_DEPTH_FIRST_DESCENDANT_HPP
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_CXX11_NULLPTR
+#include <cstddef>
+#endif
+
+#include <iterator>
+#include <deque>
+#include <boost/assert.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/utility/value_init.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/equal_to.hpp>
+#endif
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/detail/metafunction/container_pointer.hpp>
+#include <boost/detail/metafunction/container_iterator.hpp>
+#include <boost/detail/metafunction/container_reverse_iterator.hpp>
+
+//[reference__depth_first_descendant_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node, typename IsReverse = ::boost::mpl::false_>
+ class depth_first_descendant_iterator
+ : public ::boost::iterator_adaptor<
+ depth_first_descendant_iterator<Node,IsReverse>
+//<-
+#if 0
+//->
+ , typename ::boost::mpl::eval_if<
+ IsReverse
+ , ::boost::mpl::if_<
+ ::std::tr1::is_const<Node>
+ , typename Node::const_reverse_iterator
+ , typename Node::reverse_iterator
+ >
+ , ::boost::mpl::if_<
+ ::std::tr1::is_const<Node>
+ , typename Node::const_iterator
+ , typename Node::iterator
+ >
+ >::type
+ //<-
+#endif
+ , typename ::boost::mpl::eval_if<
+ IsReverse
+ , ::boost::detail::metafunction::container_reverse_iterator<Node>
+ , ::boost::detail::metafunction::container_iterator<Node>
+ >::type
+ //->
+ , ::boost::use_default
+ , typename ::boost::mpl::if_<
+ // Node [const] has bidirectional iterators
+ //<-
+ ::boost::detail::metafunction::is_bidirectional_iterator<
+ typename ::std::tr1::remove_const<Node>::type::iterator
+ >
+ //->
+ , ::boost::bidirectional_traversal_tag
+ , ::boost::forward_traversal_tag
+ >::type
+ >
+ {
+ //<-
+ typedef typename ::boost::mpl::eval_if<
+ IsReverse
+ , ::boost::detail::metafunction::container_reverse_iterator<
+ Node
+ >
+ , ::boost::detail::metafunction::container_iterator<Node>
+ >::type
+ child_iterator;
+ typedef ::boost::iterator_adaptor<
+ depth_first_descendant_iterator<Node,IsReverse>
+ , child_iterator
+ , ::boost::use_default
+ , typename ::boost::mpl::if_<
+ ::boost::detail::metafunction
+ ::is_bidirectional_iterator<
+ typename ::std::tr1::remove_const<
+ Node
+ >::type::iterator
+ >
+ , ::boost::bidirectional_traversal_tag
+ , ::boost::forward_traversal_tag
+ >::type
+ >
+ super_t;
+
+#if !defined BOOST_NO_SFINAE
+ //->
+ struct enabler
+ {
+ };
+ //<-
+#endif
+
+ public: // Should be private, but conversion ctor won't work.
+ ::std::deque<
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ > _node_stack;
+ ::std::deque<child_iterator> _itr_stack;
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type _node_ptr;
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type _root_ptr;
+ ::boost::tree_node::traversal_state _state;
+ //->
+
+ public:
+//<-
+#if 0
+//->
+ explicit depth_first_descendant_iterator(
+ Node* const& node_ptr = nullptr
+ );
+//<-
+#endif
+ explicit depth_first_descendant_iterator(
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type const& node_ptr = ::boost::initialized_value
+ );
+//->
+
+ explicit depth_first_descendant_iterator(Node& node);
+
+ template <typename N, typename I>
+ depth_first_descendant_iterator(
+ depth_first_descendant_iterator<N,I> const& other
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type = enabler()
+//<-
+#endif
+//->
+ );
+
+ operator ::boost::tree_node::traversal_state() const;
+
+ //<-
+#if !BOOST_WORKAROUND(__GNUC__, == 2)
+ private:
+ friend class ::boost::iterator_core_access;
+#endif
+
+ void increment();
+
+ void decrement();
+
+ template <typename N, typename I>
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ equal(depth_first_descendant_iterator<N,I> const& other) const;
+
+ private:
+ child_iterator _begin(::boost::mpl::false_);
+
+ child_iterator _begin(::boost::mpl::true_);
+
+ child_iterator _end(::boost::mpl::false_);
+
+ child_iterator _end(::boost::mpl::true_);
+ //->
+ };
+
+ //<-
+ template <typename Node, typename IsReverse>
+ depth_first_descendant_iterator<
+ Node
+ , IsReverse
+ >::depth_first_descendant_iterator(
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type const& node_ptr
+ ) : super_t()
+ , _node_stack()
+ , _itr_stack()
+ , _node_ptr(
+#if defined BOOST_NO_CXX11_NULLPTR
+ 0
+#else
+ nullptr
+#endif
+ )
+ , _root_ptr(node_ptr)
+ , _state(::boost::tree_node::no_traversal)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ depth_first_descendant_iterator<
+ Node
+ , IsReverse
+ >::depth_first_descendant_iterator(Node& node)
+ : super_t()
+ , _node_stack()
+ , _itr_stack()
+ , _node_ptr(&node)
+ , _root_ptr(&node)
+ , _state(::boost::tree_node::pre_order_traversal)
+ {
+ this->_itr_stack.push_back(this->_begin(IsReverse()));
+ this->increment();
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ depth_first_descendant_iterator<
+ Node
+ , IsReverse
+ >::depth_first_descendant_iterator(
+ depth_first_descendant_iterator<N,I> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type
+#endif
+ ) : super_t(other.base())
+ , _node_stack(other._node_stack.begin(), other._node_stack.end())
+ , _itr_stack(other._itr_stack.begin(), other._itr_stack.end())
+ , _node_ptr(other._node_ptr)
+ , _root_ptr(other._root_ptr)
+ , _state(other._state)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ inline depth_first_descendant_iterator<Node,IsReverse>::operator
+ ::boost::tree_node::traversal_state() const
+ {
+ return this->_state;
+ }
+
+ template <typename Node, typename IsReverse>
+ void depth_first_descendant_iterator<Node,IsReverse>::increment()
+ {
+ switch (this->_state)
+ {
+ case ::boost::tree_node::pre_order_traversal:
+ {
+ child_iterator& itr = this->_itr_stack.back();
+
+ if (itr == this->_end(IsReverse()))
+ {
+ if (this->_node_stack.empty())
+ {
+ // Root has no descendants.
+ this->_state = ::boost::tree_node::no_traversal;
+ this->_node_ptr = ::boost::initialized_value;
+ this->_itr_stack.clear();
+ }
+ else
+ {
+ // No children: change state.
+ this->_state = ::boost::tree_node::post_order_traversal;
+ }
+ }
+ else
+ {
+ // Go deeper.
+ this->_node_stack.push_back(this->_node_ptr);
+ this->_node_ptr = &dereference_iterator(
+ this->base_reference() = itr
+ );
+ this->_itr_stack.push_back(this->_begin(IsReverse()));
+ }
+
+ break;
+ }
+
+ case ::boost::tree_node::post_order_traversal:
+ {
+ if (this->_node_stack.empty())
+ {
+ // Pass the end.
+ this->_state = ::boost::tree_node::no_traversal;
+ this->_node_ptr = ::boost::initialized_value;
+ this->_itr_stack.clear();
+ }
+ else
+ {
+ this->_itr_stack.pop_back();
+ this->_node_ptr = this->_node_stack.back();
+ this->_node_stack.pop_back();
+
+ if (++this->base_reference() == this->_end(IsReverse()))
+ {
+ if (this->_node_stack.empty())
+ {
+ // Pass the end.
+ this->_state = ::boost::tree_node::no_traversal;
+ this->_node_ptr = ::boost::initialized_value;
+ this->_itr_stack.clear();
+ }
+ else
+ {
+ // No next sibling: traverse the parent.
+ child_iterator itr = this->_itr_stack.back();
+
+ this->_itr_stack.pop_back();
+
+ if (!this->_itr_stack.empty())
+ {
+ this->base_reference() = (
+ this->_itr_stack.back()
+ );
+ }
+
+ this->_itr_stack.push_back(itr);
+ }
+ }
+ else
+ {
+ // Traverse the sibling.
+ this->_itr_stack.pop_back();
+ this->_node_stack.push_back(this->_node_ptr);
+ this->_itr_stack.push_back(this->base());
+ this->_node_ptr = &dereference_iterator(this->base());
+ this->_state = ::boost::tree_node::pre_order_traversal;
+ this->_itr_stack.push_back(this->_begin(IsReverse()));
+ }
+ }
+
+ break;
+ }
+
+ default:
+ {
+ BOOST_ASSERT_MSG(false, "Do not increment past-the-end!");
+ }
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ void depth_first_descendant_iterator<Node,IsReverse>::decrement()
+ {
+ switch (this->_state)
+ {
+ case ::boost::tree_node::pre_order_traversal:
+ {
+ if (this->_node_stack.empty())
+ {
+ // Pass the end.
+ this->_state = ::boost::tree_node::no_traversal;
+ this->_node_ptr = ::boost::initialized_value;
+ this->_itr_stack.clear();
+ }
+ else
+ {
+ this->_itr_stack.pop_back();
+ this->_node_ptr = this->_node_stack.back();
+ this->_node_stack.pop_back();
+
+ if (this->base() == this->_begin(IsReverse()))
+ {
+ if (this->_node_stack.empty())
+ {
+ // Pass the end.
+ this->_state = ::boost::tree_node::no_traversal;
+ this->_node_ptr = ::boost::initialized_value;
+ this->_itr_stack.clear();
+ }
+ else
+ {
+ // No next sibling: traverse the parent.
+ child_iterator itr = this->_itr_stack.back();
+
+ this->_itr_stack.pop_back();
+
+ if (!this->_itr_stack.empty())
+ {
+ this->base_reference() = (
+ this->_itr_stack.back()
+ );
+ }
+
+ this->_itr_stack.push_back(itr);
+ }
+ }
+ else
+ {
+ // Traverse the sibling.
+ --this->base_reference();
+ this->_itr_stack.pop_back();
+ this->_node_stack.push_back(this->_node_ptr);
+ this->_itr_stack.push_back(this->base());
+ this->_node_ptr = &dereference_iterator(this->base());
+ this->_state = ::boost::tree_node::post_order_traversal;
+
+ // Add last child position, if any, to total position.
+ child_iterator last_itr = this->_begin(IsReverse());
+
+ if (last_itr != this->_end(IsReverse()))
+ {
+ ::std::advance(
+ last_itr
+ , this->_node_ptr->size() - 1
+ );
+ }
+
+ this->_itr_stack.push_back(last_itr);
+ }
+ }
+
+ break;
+ }
+
+ case ::boost::tree_node::post_order_traversal:
+ {
+ child_iterator& itr = this->_itr_stack.back();
+
+ if (itr == this->_end(IsReverse()))
+ {
+ // No children: change state.
+ this->_state = ::boost::tree_node::pre_order_traversal;
+ }
+ else
+ {
+ // Go deeper.
+ this->_node_stack.push_back(this->_node_ptr);
+ this->_node_ptr = &dereference_iterator(
+ this->base_reference() = itr
+ );
+
+ // Add last child position, if any, to total position.
+ child_iterator last_itr = this->_begin(IsReverse());
+
+ if (last_itr != this->_end(IsReverse()))
+ {
+ ::std::advance(last_itr, this->_node_ptr->size() - 1);
+ }
+
+ this->_itr_stack.push_back(last_itr);
+ }
+
+ break;
+ }
+
+ default:
+ {
+ BOOST_ASSERT_MSG(
+ this->_root_ptr
+ , "Do not decrement past-the-end of NULL!"
+ );
+ BOOST_ASSERT_MSG(
+ !this->_root_ptr->empty()
+ , "There are no descendants to traverse!"
+ );
+ this->_node_ptr = this->_root_ptr;
+ this->_state = ::boost::tree_node::post_order_traversal;
+
+ child_iterator last_itr = this->_begin(IsReverse());
+
+ if (last_itr != this->_end(IsReverse()))
+ {
+ ::std::advance(last_itr, this->_node_ptr->size() - 1);
+ }
+
+ this->_itr_stack.push_back(this->base_reference() = last_itr);
+ this->_node_stack.push_back(this->_node_ptr);
+ this->_node_ptr = &dereference_iterator(this->base());
+ last_itr = this->_begin(IsReverse());
+
+ if (last_itr != this->_end(IsReverse()))
+ {
+ ::std::advance(last_itr, this->_node_ptr->size() - 1);
+ }
+
+ this->_itr_stack.push_back(last_itr);
+ break;
+ }
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ depth_first_descendant_iterator<Node,IsReverse>::equal(
+ depth_first_descendant_iterator<N,I> const& other
+ ) const
+ {
+ if (this->_state == other._state)
+ {
+ return this->_state ? (
+ this->base() == other.base()
+ ) : !other._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename depth_first_descendant_iterator<
+ Node
+ , IsReverse
+ >::child_iterator
+ depth_first_descendant_iterator<Node,IsReverse>::_begin(
+ ::boost::mpl::false_
+ )
+ {
+ return this->_node_ptr->begin();
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename depth_first_descendant_iterator<
+ Node
+ , IsReverse
+ >::child_iterator
+ depth_first_descendant_iterator<Node,IsReverse>::_begin(
+ ::boost::mpl::true_
+ )
+ {
+ return this->_node_ptr->rbegin();
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename depth_first_descendant_iterator<
+ Node
+ , IsReverse
+ >::child_iterator
+ depth_first_descendant_iterator<Node,IsReverse>::_end(
+ ::boost::mpl::false_
+ )
+ {
+ return this->_node_ptr->end();
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename depth_first_descendant_iterator<
+ Node
+ , IsReverse
+ >::child_iterator
+ depth_first_descendant_iterator<Node,IsReverse>::_end(
+ ::boost::mpl::true_
+ )
+ {
+ return this->_node_ptr->rend();
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_depth_first_descendant_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ depth_first_descendant_iterator<Node>
+ make_depth_first_descendant_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline depth_first_descendant_iterator<Node>
+ make_depth_first_descendant_iterator(Node& node)
+ {
+ return depth_first_descendant_iterator<Node>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_depth_first_descendant_iterator_end
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ depth_first_descendant_iterator<Node>
+ make_depth_first_descendant_iterator_end(Node* ptr);
+
+ //<-
+ template <typename Node>
+ inline depth_first_descendant_iterator<Node>
+ make_depth_first_descendant_iterator_end(Node* ptr)
+ {
+ return depth_first_descendant_iterator<Node>(ptr);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_depth_first_descendant_reverse_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ depth_first_descendant_iterator<Node,::boost::mpl::true_>
+ make_depth_first_descendant_reverse_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline depth_first_descendant_iterator<Node,::boost::mpl::true_>
+ make_depth_first_descendant_reverse_iterator(Node& node)
+ {
+ return depth_first_descendant_iterator<Node,::boost::mpl::true_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_depth_first_descendant_reverse_iterator_end
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ depth_first_descendant_iterator<Node,::boost::mpl::true_>
+ make_depth_first_descendant_reverse_iterator_end(Node* ptr);
+
+ //<-
+ template <typename Node>
+ inline depth_first_descendant_iterator<Node,::boost::mpl::true_>
+ make_depth_first_descendant_reverse_iterator_end(Node* ptr)
+ {
+ return depth_first_descendant_iterator<Node,::boost::mpl::true_>(ptr);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ITERATOR_DEPTH_FIRST_DESCENDANT_HPP
+
Added: sandbox/tree_node/boost/tree_node/iterator/dereference.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/iterator/dereference.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,125 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ITERATOR_DEREFERENCE_HPP
+#define BOOST_TREE_NODE_ITERATOR_DEREFERENCE_HPP
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/and.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/aux_/lambda_support.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/utility/get_iterator_second.hpp>
+#include <boost/detail/metafunction/has_first_type.hpp>
+#include <boost/detail/metafunction/has_second_type.hpp>
+
+namespace boost { namespace tree_node { namespace _detail {
+
+ template <typename Iterator>
+ class deref_iterator_helper
+ {
+ typedef typename ::boost::iterator_value<Iterator>::type
+ _value_type;
+ typedef typename ::boost::mpl::and_<
+ typename ::boost::detail::metafunction::has_first_type<
+ _value_type
+ >::type
+ , typename ::boost::detail::metafunction::has_second_type<
+ _value_type
+ >::type
+ >::type
+ _is_associative;
+
+ public:
+ typedef Iterator
+ argument_type;
+ typedef typename ::boost::mpl::eval_if<
+ _is_associative
+ , ::boost::get_iterator_second_result<Iterator>
+ , ::boost::iterator_reference<Iterator>
+ >::type
+ result_type;
+
+ result_type operator()(argument_type itr) const;
+
+ private:
+ static result_type _evaluate(Iterator itr, ::boost::mpl::true_);
+
+ static result_type _evaluate(Iterator itr, ::boost::mpl::false_);
+ };
+
+ template <typename Iterator>
+ inline typename deref_iterator_helper<Iterator>::result_type
+ deref_iterator_helper<Iterator>::operator()(
+ argument_type itr
+ ) const
+ {
+ return this->_evaluate(itr, _is_associative());
+ }
+
+ template <typename Iterator>
+ inline typename deref_iterator_helper<Iterator>::result_type
+ deref_iterator_helper<Iterator>::_evaluate(
+ Iterator itr
+ , ::boost::mpl::true_
+ )
+ {
+ return ::boost::get_iterator_second(itr);
+ }
+
+ template <typename Iterator>
+ inline typename deref_iterator_helper<Iterator>::result_type
+ deref_iterator_helper<Iterator>::_evaluate(
+ Iterator itr
+ , ::boost::mpl::false_
+ )
+ {
+ return *itr;
+ }
+}}} // namespace boost::tree_node::_detail
+
+//[reference__tree_node__result_of__dereference_iterator
+namespace boost { namespace tree_node { namespace result_of {
+
+ template <typename Iterator>
+ struct dereference_iterator
+ {
+//<-
+#if 0
+//->
+ typedef unspecified type;
+//<-
+#endif
+ typedef typename ::boost::tree_node::_detail::deref_iterator_helper<
+ Iterator
+ >::result_type
+ type;
+
+ BOOST_MPL_AUX_LAMBDA_SUPPORT(1,dereference_iterator,(Iterator))
+//->
+ };
+}}} // namespace boost::tree_node::result_of
+//]
+
+//[reference__tree_node__dereference_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Iterator>
+ typename result_of::dereference_iterator<Iterator>::type
+ dereference_iterator(Iterator itr);
+
+ //<-
+ template <typename Iterator>
+ inline typename result_of::dereference_iterator<Iterator>::type
+ dereference_iterator(Iterator itr)
+ {
+ return _detail::deref_iterator_helper<Iterator>()(itr);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ITERATOR_DEREFERENCE_HPP
+
Added: sandbox/tree_node/boost/tree_node/iterator/in_order.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/iterator/in_order.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,642 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ITERATOR_IN_ORDER_HPP
+#define BOOST_TREE_NODE_ITERATOR_IN_ORDER_HPP
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_CXX11_NULLPTR
+#include <cstddef>
+#endif
+
+#include <iterator>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/utility/value_init.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/mpl/equal_to.hpp>
+#endif
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/not.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/detail/metafunction/container_pointer.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/key/count.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#include <boost/tree_node/algorithm/advance_binary.hpp>
+#include <boost/tree_node/algorithm/binary_index_of.hpp>
+#include <boost/assert.hpp>
+
+//[reference__in_order_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node, typename IsReverse = ::boost::mpl::false_>
+ class in_order_iterator
+ : public ::boost::iterator_adaptor<
+ in_order_iterator<Node,IsReverse>
+//<-
+#if 0
+//->
+ , Node*
+ //<-
+#endif
+ , typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ //->
+ , ::boost::use_default
+ , typename ::boost::mpl::if_<
+ result_of::has_key<
+ typename ::std::tr1::remove_const<Node>::type
+ , count_key
+ >
+ // TODO: Replace with indexable_traversal_tag
+ , ::boost::random_access_traversal_tag
+ , ::boost::bidirectional_traversal_tag
+ >::type
+ >
+ {
+ //<-
+ typedef ::boost::iterator_adaptor<
+ in_order_iterator<Node,IsReverse>
+ , typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ , ::boost::use_default
+ , typename ::boost::mpl::if_<
+ result_of::has_key<
+ typename ::std::tr1::remove_const<Node>::type
+ , count_key
+ >
+ // TODO: Replace with indexable_traversal_tag
+ , ::boost::random_access_traversal_tag
+ , ::boost::bidirectional_traversal_tag
+ >::type
+ >
+ super_t;
+
+#if !defined BOOST_NO_SFINAE
+ //->
+ struct enabler
+ {
+ };
+ //<-
+#endif
+
+ public: // Should be private, but conversion ctor won't work.
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type _root_ptr;
+ ::boost::tree_node::traversal_state _state;
+ //->
+
+ public:
+//<-
+#if 0
+//->
+ explicit in_order_iterator(Node* const& node_ptr = nullptr);
+//<-
+#endif
+ explicit in_order_iterator(
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type const& node_ptr = ::boost::initialized_value
+ );
+//->
+
+ explicit in_order_iterator(Node& node, bool is_not_position = true);
+
+ template <typename N, typename I>
+ in_order_iterator(
+ in_order_iterator<N,I> const& other
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type = enabler()
+//<-
+#endif
+//->
+ );
+
+ operator ::boost::tree_node::traversal_state() const;
+
+ //<-
+#if !BOOST_WORKAROUND(__GNUC__, == 2)
+ private:
+ friend class ::boost::iterator_core_access;
+#endif
+
+ void increment();
+
+ void decrement();
+
+ void advance(typename super_t::difference_type n);
+
+ template <typename N, typename I>
+#if defined BOOST_NO_SFINAE
+ typename super_t::difference_type
+#else
+ typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , typename super_t::difference_type
+ >::type
+#endif
+ distance_to(in_order_iterator<N,I> const& other) const;
+
+ template <typename N, typename I>
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ equal(in_order_iterator<N,I> const& other) const;
+
+ private:
+ void _increment(::boost::mpl::false_);
+
+ void _increment(::boost::mpl::true_);
+
+ void _initialize(::boost::mpl::false_);
+
+ void _initialize(::boost::mpl::true_);
+ //->
+ };
+
+ //<-
+ template <typename Node, typename IsReverse>
+ in_order_iterator<Node,IsReverse>::in_order_iterator(
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type const& node_ptr
+ ) : super_t(
+#if defined BOOST_NO_CXX11_NULLPTR
+ 0
+#else
+ nullptr
+#endif
+ )
+ , _root_ptr(node_ptr)
+ , _state(::boost::tree_node::no_traversal)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ in_order_iterator<Node,IsReverse>::in_order_iterator(
+ Node& node
+ , bool is_not_position
+ ) : super_t(&node)
+ , _root_ptr(&node)
+ , _state(::boost::tree_node::in_order_traversal)
+ {
+ if (is_not_position)
+ {
+ this->_initialize(IsReverse());
+ }
+ else
+ {
+ while (this->_root_ptr->get_parent_ptr())
+ {
+ this->_root_ptr = this->_root_ptr->get_parent_ptr();
+ }
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ in_order_iterator<Node,IsReverse>::in_order_iterator(
+ in_order_iterator<N,I> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type
+#endif
+ ) : super_t(other.base())
+ , _root_ptr(other._root_ptr)
+ , _state(other._state)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ inline in_order_iterator<Node,IsReverse>::operator
+ ::boost::tree_node::traversal_state() const
+ {
+ return this->_state;
+ }
+
+ template <typename Node, typename IsReverse>
+ void in_order_iterator<Node,IsReverse>::_initialize(::boost::mpl::false_)
+ {
+ while (this->base()->get_left_child_ptr())
+ {
+ this->base_reference() = this->base()->get_left_child_ptr();
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ void in_order_iterator<Node,IsReverse>::_initialize(::boost::mpl::true_)
+ {
+ while (this->base()->get_right_child_ptr())
+ {
+ this->base_reference() = this->base()->get_right_child_ptr();
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ void in_order_iterator<Node,IsReverse>::_increment(::boost::mpl::false_ tag)
+ {
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type node_ptr = this->base();
+
+ if (node_ptr)
+ {
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type other_ptr = node_ptr->get_right_child_ptr();
+
+ if (other_ptr)
+ {
+ while (other_ptr->get_left_child_ptr())
+ {
+ other_ptr = other_ptr->get_left_child_ptr();
+ }
+
+ this->base_reference() = other_ptr;
+ return;
+ }
+
+ other_ptr = this->_root_ptr->get_parent_ptr();
+
+ for (
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type next_ptr = node_ptr->get_parent_ptr();
+ next_ptr != other_ptr;
+ next_ptr = next_ptr->get_parent_ptr()
+ )
+ {
+ if (node_ptr == next_ptr->get_left_child_ptr())
+ {
+ this->base_reference() = next_ptr;
+ return;
+ }
+
+ node_ptr = next_ptr;
+ }
+
+ this->base_reference() = ::boost::initialized_value;
+ this->_state = ::boost::tree_node::no_traversal;
+ }
+ else
+ {
+ BOOST_ASSERT_MSG(
+ this->_root_ptr
+ , "Do not decrement past-the-end of NULL!"
+ );
+ this->base_reference() = this->_root_ptr;
+ this->_state = ::boost::tree_node::in_order_traversal;
+ this->_initialize(tag);
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ void in_order_iterator<Node,IsReverse>::_increment(::boost::mpl::true_ tag)
+ {
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type node_ptr = this->base();
+
+ if (node_ptr)
+ {
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type other_ptr = node_ptr->get_left_child_ptr();
+
+ if (other_ptr)
+ {
+ while (other_ptr->get_right_child_ptr())
+ {
+ other_ptr = other_ptr->get_right_child_ptr();
+ }
+
+ this->base_reference() = other_ptr;
+ return;
+ }
+
+ other_ptr = this->_root_ptr->get_parent_ptr();
+
+ for (
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type next_ptr = node_ptr->get_parent_ptr();
+ next_ptr != other_ptr;
+ next_ptr = next_ptr->get_parent_ptr()
+ )
+ {
+ if (node_ptr == next_ptr->get_right_child_ptr())
+ {
+ this->base_reference() = next_ptr;
+ return;
+ }
+
+ node_ptr = next_ptr;
+ }
+
+ this->base_reference() = ::boost::initialized_value;
+ this->_state = ::boost::tree_node::no_traversal;
+ }
+ else
+ {
+ BOOST_ASSERT_MSG(
+ this->_root_ptr
+ , "Do not decrement past-the-end of NULL!"
+ );
+ this->base_reference() = this->_root_ptr;
+ this->_state = ::boost::tree_node::in_order_traversal;
+ this->_initialize(tag);
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ inline void in_order_iterator<Node,IsReverse>::increment()
+ {
+ BOOST_ASSERT_MSG(this->_state, "Do not increment past-the-end!");
+ this->_increment(IsReverse());
+ }
+
+ template <typename Node, typename IsReverse>
+ inline void in_order_iterator<Node,IsReverse>::decrement()
+ {
+ this->_increment(::boost::mpl::not_<IsReverse>());
+ }
+
+ template <typename Node, typename IsReverse>
+ inline void
+ in_order_iterator<Node,IsReverse>::advance(
+ typename super_t::difference_type n
+ )
+ {
+ if (!n)
+ {
+ return;
+ }
+
+ static typename super_t::difference_type const z = (
+ ::boost::initialized_value
+ );
+
+ if (n < z)
+ {
+ if (this->_state)
+ {
+ BOOST_ASSERT_MSG(
+ IsReverse::value ? !(
+ get(*this->_root_ptr, count_key()) < binary_index_of(
+ this->base()
+ , -n
+ , this->_root_ptr
+ )
+ ) : !(
+ binary_index_of(this->base(), n, this->_root_ptr) < z
+ )
+ , "Index out of bounds."
+ );
+ }
+ else
+ {
+ this->decrement();
+
+ if (!++n)
+ {
+ return;
+ }
+ }
+ }
+
+ if (
+ !(
+ this->base_reference() = advance_binary(
+ this->base()
+ , IsReverse::value ? -n : n
+ , this->_root_ptr
+ )
+ )
+ )
+ {
+ this->_state = ::boost::tree_node::no_traversal;
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ inline
+#if defined BOOST_NO_SFINAE
+ typename in_order_iterator<Node,IsReverse>::super_t::difference_type
+#else
+ typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , typename in_order_iterator<
+ Node
+ , IsReverse
+ >::super_t::difference_type
+ >::type
+#endif
+ in_order_iterator<Node,IsReverse>::distance_to(
+ in_order_iterator<N,I> const& other
+ ) const
+ {
+ BOOST_ASSERT_MSG(
+ this->_root_ptr == other._root_ptr
+ , "Iterators are unreachable from each other."
+ );
+
+ typename super_t::difference_type v = ::boost::initialized_value;
+
+ if (this->_state)
+ {
+ if (other._state)
+ {
+ return IsReverse::value ? (
+ binary_index_of(this->base(), v, this->_root_ptr)
+ - binary_index_of(other.base(), v, other._root_ptr)
+ ) : (
+ binary_index_of(other.base(), v, other._root_ptr)
+ - binary_index_of(this->base(), v, this->_root_ptr)
+ );
+ }
+ else if (IsReverse::value)
+ {
+ v = binary_index_of(this->base(), v, this->_root_ptr);
+ return ++v;
+ }
+ else
+ {
+ v = -binary_index_of(this->base(), v, this->_root_ptr);
+ return (v += get(*this->_root_ptr, count_key()));
+ }
+ }
+ else if (other._state)
+ {
+ if (IsReverse::value)
+ {
+ v = -binary_index_of(other.base(), v, other._root_ptr);
+ return --v;
+ }
+ else
+ {
+ v = binary_index_of(other.base(), v, other._root_ptr);
+ return (v -= get(*other._root_ptr, count_key()));
+ }
+ }
+ else
+ {
+ return v;
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ in_order_iterator<Node,IsReverse>::equal(
+ in_order_iterator<N,I> const& other
+ ) const
+ {
+ if (this->_state == other._state)
+ {
+ return this->_state ? (
+ this->base() == other.base()
+ ) : !other._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_in_order_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ in_order_iterator<Node> make_in_order_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline in_order_iterator<Node> make_in_order_iterator(Node& node)
+ {
+ return in_order_iterator<Node>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_in_order_iterator_end
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ in_order_iterator<Node> make_in_order_iterator_end(Node* node_ptr);
+
+ //<-
+ template <typename Node>
+ inline in_order_iterator<Node> make_in_order_iterator_end(Node* node_ptr)
+ {
+ return in_order_iterator<Node>(node_ptr);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_in_order_reverse_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ in_order_iterator<Node,::boost::mpl::true_>
+ make_in_order_reverse_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline in_order_iterator<Node,::boost::mpl::true_>
+ make_in_order_reverse_iterator(Node& node)
+ {
+ return in_order_iterator<Node,::boost::mpl::true_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_in_order_reverse_iterator_end
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ in_order_iterator<Node,::boost::mpl::true_>
+ make_in_order_reverse_iterator_end(Node* node_ptr);
+
+ //<-
+ template <typename Node>
+ inline in_order_iterator<Node,::boost::mpl::true_>
+ make_in_order_reverse_iterator_end(Node* node_ptr)
+ {
+ return in_order_iterator<Node,::boost::mpl::true_>(node_ptr);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_in_order_iterator_position
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ in_order_iterator<Node> make_in_order_iterator_position(Node& node);
+
+ //<-
+ template <typename Node>
+ inline in_order_iterator<Node> make_in_order_iterator_position(Node& node)
+ {
+ return in_order_iterator<Node>(node, false);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ITERATOR_IN_ORDER_HPP
+
Added: sandbox/tree_node/boost/tree_node/iterator/post_order.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/iterator/post_order.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,366 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ITERATOR_POST_ORDER_HPP
+#define BOOST_TREE_NODE_ITERATOR_POST_ORDER_HPP
+
+#include <deque>
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/equal_to.hpp>
+#endif
+
+#include <boost/mpl/bool.hpp>
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/detail/metafunction/container_pointer.hpp>
+#include <boost/detail/metafunction/container_iterator.hpp>
+#include <boost/detail/metafunction/container_reverse_iterator.hpp>
+
+//[reference__post_order_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node, typename IsReverse = ::boost::mpl::false_>
+ class post_order_iterator
+ : public ::boost::iterator_adaptor<
+ post_order_iterator<Node,IsReverse>
+//<-
+#if 0
+//->
+ , Node*
+ //<-
+#endif
+ , typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ //->
+ , ::boost::use_default
+ , ::boost::forward_traversal_tag
+ >
+ {
+ //<-
+ typedef ::boost::iterator_adaptor<
+ post_order_iterator<Node,IsReverse>
+ , typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ , ::boost::use_default
+ , ::boost::forward_traversal_tag
+ >
+ super_t;
+
+#if !defined BOOST_NO_SFINAE
+ //->
+ struct enabler
+ {
+ };
+ //<-
+#endif
+
+ public: // Should be private, but conversion ctor won't work.
+ ::std::deque<
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ > _stack;
+ ::boost::tree_node::traversal_state _state;
+ //->
+
+ public:
+ post_order_iterator();
+
+ explicit post_order_iterator(Node& node);
+
+ template <typename N, typename I>
+ post_order_iterator(
+ post_order_iterator<N,I> const& other
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type = enabler()
+//<-
+#endif
+//->
+ );
+
+ operator ::boost::tree_node::traversal_state() const;
+
+ //<-
+#if !BOOST_WORKAROUND(__GNUC__, == 2)
+ private:
+ friend class ::boost::iterator_core_access;
+#endif
+
+ void increment();
+
+ template <typename N, typename I>
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ equal(post_order_iterator<N,I> const& other) const;
+
+ private:
+ void _init(::boost::mpl::false_);
+
+ void _init(::boost::mpl::true_);
+ //->
+ };
+
+ //<-
+ template <typename Node, typename IsReverse>
+ post_order_iterator<Node,IsReverse>::post_order_iterator()
+ : super_t(), _stack(), _state(::boost::tree_node::no_traversal)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ post_order_iterator<Node,IsReverse>::post_order_iterator(Node& node)
+ : super_t(&node)
+ , _stack()
+ , _state(::boost::tree_node::post_order_traversal)
+ {
+ this->_init(IsReverse());
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ post_order_iterator<Node,IsReverse>::post_order_iterator(
+ post_order_iterator<N,I> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type
+#endif
+ ) : super_t(other.base())
+ , _stack(other._stack.begin(), other._stack.end())
+ , _state(other._state)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ inline post_order_iterator<Node,IsReverse>::operator
+ ::boost::tree_node::traversal_state() const
+ {
+ return this->_state;
+ }
+
+ template <typename Node, typename IsReverse>
+ inline void post_order_iterator<Node,IsReverse>::increment()
+ {
+ if (this->_stack.empty())
+ {
+ this->_state = ::boost::tree_node::no_traversal;
+ }
+ else
+ {
+ this->base_reference() = this->_stack.back();
+ this->_stack.pop_back();
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ post_order_iterator<Node,IsReverse>::equal(
+ post_order_iterator<N,I> const& other
+ ) const
+ {
+ if (this->_state == other._state)
+ {
+ return this->_state ? (
+ this->base() == other.base()
+ ) : !other._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ void post_order_iterator<Node,IsReverse>::_init(::boost::mpl::false_)
+ {
+ typedef typename ::boost::detail::metafunction::container_iterator<
+ Node
+ >::type
+ child_iterator;
+
+ child_iterator itr = this->base()->begin();
+ child_iterator itr_end = this->base()->end();
+
+ if (itr != itr_end)
+ {
+ this->_stack.push_back(this->base());
+
+ for (::std::deque<child_iterator> pre_order_stack;;)
+ {
+ while (itr != itr_end)
+ {
+ pre_order_stack.push_back(itr);
+ ++itr;
+ }
+
+ this->_stack.push_back(
+ &dereference_iterator(pre_order_stack.back())
+ );
+ pre_order_stack.pop_back();
+
+ if (pre_order_stack.empty())
+ {
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type node_ptr = (
+ this->base_reference() = this->_stack.back()
+ );
+
+ itr = node_ptr->begin();
+ itr_end = node_ptr->end();
+
+ if (itr == itr_end)
+ {
+ this->_stack.pop_back();
+ break;
+ }
+ }
+ else
+ {
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type node_ptr = this->_stack.back();
+
+ itr = node_ptr->begin();
+ itr_end = node_ptr->end();
+ }
+ }
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ void post_order_iterator<Node,IsReverse>::_init(::boost::mpl::true_)
+ {
+ typedef typename ::boost::detail::metafunction
+ ::container_reverse_iterator<Node>::type
+ child_iterator;
+
+ child_iterator itr = this->base()->rbegin();
+ child_iterator itr_end = this->base()->rend();
+
+ if (itr != itr_end)
+ {
+ this->_stack.push_back(this->base());
+
+ for (::std::deque<child_iterator> pre_order_stack;;)
+ {
+ while (itr != itr_end)
+ {
+ pre_order_stack.push_back(itr);
+ ++itr;
+ }
+
+ this->_stack.push_back(
+ &dereference_iterator(pre_order_stack.back())
+ );
+ pre_order_stack.pop_back();
+
+ if (pre_order_stack.empty())
+ {
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type node_ptr = (
+ this->base_reference() = this->_stack.back()
+ );
+
+ itr = node_ptr->rbegin();
+ itr_end = node_ptr->rend();
+
+ if (itr == itr_end)
+ {
+ this->_stack.pop_back();
+ break;
+ }
+ }
+ else
+ {
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type node_ptr = this->_stack.back();
+
+ itr = node_ptr->rbegin();
+ itr_end = node_ptr->rend();
+ }
+ }
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_post_order_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ post_order_iterator<Node> make_post_order_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline post_order_iterator<Node> make_post_order_iterator(Node& node)
+ {
+ return post_order_iterator<Node>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_pre_order_reverse_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ post_order_iterator<Node,::boost::mpl::true_>
+ make_pre_order_reverse_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline post_order_iterator<Node,::boost::mpl::true_>
+ make_pre_order_reverse_iterator(Node& node)
+ {
+ return post_order_iterator<Node,::boost::mpl::true_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ITERATOR_POST_ORDER_HPP
+
Added: sandbox/tree_node/boost/tree_node/iterator/post_order_descendant.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/iterator/post_order_descendant.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,379 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ITERATOR_POST_ORDER_DESCENDANT_HPP
+#define BOOST_TREE_NODE_ITERATOR_POST_ORDER_DESCENDANT_HPP
+
+#include <deque>
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/equal_to.hpp>
+#endif
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/detail/metafunction/container_iterator.hpp>
+#include <boost/detail/metafunction/container_reverse_iterator.hpp>
+
+//[reference__post_order_descendant_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node, typename IsReverse = ::boost::mpl::false_>
+ class post_order_descendant_iterator
+ : public ::boost::iterator_adaptor<
+ post_order_descendant_iterator<Node,IsReverse>
+//<-
+#if 0
+//->
+ , typename ::boost::mpl::eval_if<
+ IsReverse
+ , ::boost::mpl::if_<
+ ::std::tr1::is_const<Node>
+ , typename Node::const_reverse_iterator
+ , typename Node::reverse_iterator
+ >
+ , ::boost::mpl::if_<
+ ::std::tr1::is_const<Node>
+ , typename Node::const_iterator
+ , typename Node::iterator
+ >
+ >::type
+ //<-
+#endif
+ , typename ::boost::mpl::eval_if<
+ IsReverse
+ , ::boost::detail::metafunction::container_reverse_iterator<Node>
+ , ::boost::detail::metafunction::container_iterator<Node>
+ >::type
+ //->
+ , ::boost::use_default
+ , ::boost::forward_traversal_tag
+ >
+ {
+ //<-
+ typedef typename ::boost::mpl::eval_if<
+ IsReverse
+ , ::boost::detail::metafunction::container_reverse_iterator<
+ Node
+ >
+ , ::boost::detail::metafunction::container_iterator<Node>
+ >::type
+ child_iterator;
+ typedef ::boost::iterator_adaptor<
+ post_order_descendant_iterator<Node,IsReverse>
+ , child_iterator
+ , ::boost::use_default
+ , ::boost::forward_traversal_tag
+ >
+ super_t;
+
+#if !defined BOOST_NO_SFINAE
+ //->
+ struct enabler
+ {
+ };
+ //<-
+#endif
+
+ public: // Should be private, but conversion ctor won't work.
+ ::std::deque<child_iterator> _stack;
+ ::boost::tree_node::traversal_state _state;
+ //->
+
+ public:
+ post_order_descendant_iterator();
+
+ explicit post_order_descendant_iterator(Node& node);
+
+ template <typename N, typename I>
+ post_order_descendant_iterator(
+ post_order_descendant_iterator<N,I> const& other
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type = enabler()
+//<-
+#endif
+//->
+ );
+
+ operator ::boost::tree_node::traversal_state() const;
+
+ //<-
+#if !BOOST_WORKAROUND(__GNUC__, == 2)
+ private:
+ friend class ::boost::iterator_core_access;
+#endif
+
+ void increment();
+
+ template <typename N, typename I>
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ equal(post_order_descendant_iterator<N,I> const& other) const;
+
+ private:
+ void _initialize(Node& node, ::boost::mpl::false_);
+
+ void _initialize(Node& node, ::boost::mpl::true_);
+ //->
+ };
+
+ //<-
+ template <typename Node, typename IsReverse>
+ post_order_descendant_iterator<
+ Node
+ , IsReverse
+ >::post_order_descendant_iterator()
+ : super_t(), _stack(), _state(::boost::tree_node::no_traversal)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ post_order_descendant_iterator<
+ Node
+ , IsReverse
+ >::post_order_descendant_iterator(Node& node)
+ : super_t(), _stack(), _state(::boost::tree_node::post_order_traversal)
+ {
+ this->_initialize(node, IsReverse());
+
+ if (this->_stack.empty())
+ {
+ this->_state = ::boost::tree_node::no_traversal;
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ post_order_descendant_iterator<
+ Node
+ , IsReverse
+ >::post_order_descendant_iterator(
+ post_order_descendant_iterator<N,I> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type
+#endif
+ ) : super_t(other.base())
+ , _stack(other._stack.begin(), other._stack.end())
+ , _state(other._state)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ inline post_order_descendant_iterator<Node,IsReverse>::operator
+ ::boost::tree_node::traversal_state() const
+ {
+ return this->_state;
+ }
+
+ template <typename Node, typename IsReverse>
+ inline void post_order_descendant_iterator<Node,IsReverse>::increment()
+ {
+ if (this->_stack.empty())
+ {
+ this->_state = ::boost::tree_node::no_traversal;
+ }
+ else
+ {
+ this->base_reference() = this->_stack.back();
+ this->_stack.pop_back();
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ post_order_descendant_iterator<Node,IsReverse>::equal(
+ post_order_descendant_iterator<N,I> const& other
+ ) const
+ {
+ if (this->_state == other._state)
+ {
+ return this->_state ? (
+ this->base() == other.base()
+ ) : !other._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ void
+ post_order_descendant_iterator<Node,IsReverse>::_initialize(
+ Node& node
+ , ::boost::mpl::false_
+ )
+ {
+ child_iterator itr = node.begin();
+ child_iterator itr_end = node.end();
+
+ if (itr != itr_end)
+ {
+ for (::std::deque<child_iterator> pre_order_stack;;)
+ {
+ while (itr != itr_end)
+ {
+ pre_order_stack.push_back(itr);
+ ++itr;
+ }
+
+ this->_stack.push_back(pre_order_stack.back());
+ pre_order_stack.pop_back();
+
+ if (pre_order_stack.empty())
+ {
+ Node& n = dereference_iterator(
+ this->base_reference() = this->_stack.back()
+ );
+
+ itr = n.begin();
+ itr_end = n.end();
+
+ if (itr == itr_end)
+ {
+ this->_stack.pop_back();
+ break;
+ }
+ }
+ else
+ {
+ Node& n = dereference_iterator(this->_stack.back());
+
+ itr = n.begin();
+ itr_end = n.end();
+ }
+ }
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ void
+ post_order_descendant_iterator<Node,IsReverse>::_initialize(
+ Node& node
+ , ::boost::mpl::true_
+ )
+ {
+ child_iterator itr = node.rbegin();
+ child_iterator itr_end = node.rend();
+
+ if (itr != itr_end)
+ {
+ for (::std::deque<child_iterator> pre_order_stack;;)
+ {
+ while (itr != itr_end)
+ {
+ pre_order_stack.push_back(itr);
+ ++itr;
+ }
+
+ this->_stack.push_back(pre_order_stack.back());
+ pre_order_stack.pop_back();
+
+ if (pre_order_stack.empty())
+ {
+ Node& n = dereference_iterator(
+ this->base_reference() = this->_stack.back()
+ );
+
+ itr = n.rbegin();
+ itr_end = n.rend();
+
+ if (itr == itr_end)
+ {
+ this->_stack.pop_back();
+ break;
+ }
+ }
+ else
+ {
+ Node& n = dereference_iterator(this->_stack.back());
+
+ itr = n.rbegin();
+ itr_end = n.rend();
+ }
+ }
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_post_order_descendant_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ post_order_descendant_iterator<Node>
+ make_post_order_descendant_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline post_order_descendant_iterator<Node>
+ make_post_order_descendant_iterator(Node& node)
+ {
+ return post_order_descendant_iterator<Node>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_pre_order_descendant_reverse_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ post_order_descendant_iterator<Node,::boost::mpl::true_>
+ make_pre_order_descendant_reverse_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline post_order_descendant_iterator<Node,::boost::mpl::true_>
+ make_pre_order_descendant_reverse_iterator(Node& node)
+ {
+ return post_order_descendant_iterator<Node,::boost::mpl::true_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ITERATOR_POST_ORDER_DESCENDANT_HPP
+
Added: sandbox/tree_node/boost/tree_node/iterator/pre_order.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/iterator/pre_order.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,343 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ITERATOR_PRE_ORDER_HPP
+#define BOOST_TREE_NODE_ITERATOR_PRE_ORDER_HPP
+
+#include <deque>
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/equal_to.hpp>
+#endif
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/detail/metafunction/container_pointer.hpp>
+#include <boost/detail/metafunction/container_iterator.hpp>
+#include <boost/detail/metafunction/container_reverse_iterator.hpp>
+
+//[reference__pre_order_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node, typename IsReverse = ::boost::mpl::false_>
+ class pre_order_iterator
+ : public ::boost::iterator_adaptor<
+ pre_order_iterator<Node,IsReverse>
+//<-
+#if 0
+//->
+ , Node*
+ //<-
+#endif
+ , typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ //->
+ , ::boost::use_default
+ , ::boost::forward_traversal_tag
+ >
+ {
+ //<-
+ typedef typename ::boost::mpl::eval_if<
+ IsReverse
+ , ::boost::detail::metafunction::container_reverse_iterator<
+ Node
+ >
+ , ::boost::detail::metafunction::container_iterator<Node>
+ >::type
+ child_iterator;
+ typedef ::boost::iterator_adaptor<
+ pre_order_iterator<Node,IsReverse>
+ , typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ , ::boost::use_default
+ , ::boost::forward_traversal_tag
+ >
+ super_t;
+
+#if !defined BOOST_NO_SFINAE
+ //->
+ struct enabler
+ {
+ };
+ //<-
+#endif
+
+ public: // Should be private, but conversion ctor won't work.
+ ::std::deque<
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ > _node_stack;
+ ::std::deque<child_iterator> _itr_stack;
+ child_iterator _current_itr;
+ ::boost::tree_node::traversal_state _state;
+ //->
+
+ public:
+ pre_order_iterator();
+
+ explicit pre_order_iterator(Node& node);
+
+ template <typename N, typename I>
+ pre_order_iterator(
+ pre_order_iterator<N,I> const& other
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type = enabler()
+//<-
+#endif
+//->
+ );
+
+ operator ::boost::tree_node::traversal_state() const;
+
+ //<-
+#if !BOOST_WORKAROUND(__GNUC__, == 2)
+ private:
+ friend class ::boost::iterator_core_access;
+#endif
+
+ void increment();
+
+ template <typename N, typename I>
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ equal(pre_order_iterator<N,I> const& other) const;
+
+ private:
+ void _push(::boost::mpl::false_);
+
+ void _push(::boost::mpl::true_);
+
+ child_iterator _end(::boost::mpl::false_);
+
+ child_iterator _end(::boost::mpl::true_);
+ //->
+ };
+
+ //<-
+ template <typename Node, typename IsReverse>
+ pre_order_iterator<Node,IsReverse>::pre_order_iterator()
+ : super_t()
+ , _node_stack()
+ , _itr_stack()
+ , _current_itr()
+ , _state(::boost::tree_node::no_traversal)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ pre_order_iterator<Node,IsReverse>::pre_order_iterator(Node& node)
+ : super_t(&node)
+ , _node_stack()
+ , _itr_stack()
+ , _current_itr()
+ , _state(::boost::tree_node::pre_order_traversal)
+ {
+ this->_push(IsReverse());
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ pre_order_iterator<Node,IsReverse>::pre_order_iterator(
+ pre_order_iterator<N,I> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type
+#endif
+ ) : super_t(other.base())
+ , _node_stack(other._node_stack.begin(), other._node_stack.end())
+ , _itr_stack(other._itr_stack.begin(), other._itr_stack.end())
+ , _current_itr(other._current_itr)
+ , _state(other._state)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ inline pre_order_iterator<Node,IsReverse>::operator
+ ::boost::tree_node::traversal_state() const
+ {
+ return this->_state;
+ }
+
+ template <typename Node, typename IsReverse>
+ void pre_order_iterator<Node,IsReverse>::increment()
+ {
+ if (this->_itr_stack.back() == this->_end(IsReverse()))
+ {
+ bool is_post_order = true;
+
+ while (is_post_order)
+ {
+ this->_itr_stack.pop_back();
+
+ if (this->_node_stack.empty())
+ {
+ this->_state = ::boost::tree_node::no_traversal;
+ this->_itr_stack.clear();
+ is_post_order = false;
+ }
+ else
+ {
+ this->base_reference() = this->_node_stack.back();
+ this->_node_stack.pop_back();
+
+ if (++this->_current_itr == this->_end(IsReverse()))
+ {
+ child_iterator itr = this->_itr_stack.back();
+
+ this->_itr_stack.pop_back();
+
+ if (!this->_itr_stack.empty())
+ {
+ this->_current_itr = this->_itr_stack.back();
+ }
+
+ this->_itr_stack.push_back(itr);
+ }
+ else
+ {
+ this->_itr_stack.pop_back();
+ this->_node_stack.push_back(this->base());
+ this->_itr_stack.push_back(this->_current_itr);
+ this->base_reference() = &(
+ dereference_iterator(this->_current_itr)
+ );
+ this->_push(IsReverse());
+ is_post_order = false;
+ }
+ }
+ }
+ }
+ else
+ {
+ this->_node_stack.push_back(this->base());
+ this->base_reference() = &dereference_iterator(
+ this->_current_itr = this->_itr_stack.back()
+ );
+ this->_push(IsReverse());
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ pre_order_iterator<Node,IsReverse>::equal(
+ pre_order_iterator<N,I> const& other
+ ) const
+ {
+ if (this->_state == other._state)
+ {
+ return this->_state ? (*(*this) == *(*other)) : !other._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ inline void pre_order_iterator<Node,IsReverse>::_push(::boost::mpl::false_)
+ {
+ this->_itr_stack.push_back(this->base()->begin());
+ }
+
+ template <typename Node, typename IsReverse>
+ inline void pre_order_iterator<Node,IsReverse>::_push(::boost::mpl::true_)
+ {
+ this->_itr_stack.push_back(this->base()->rbegin());
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename pre_order_iterator<Node,IsReverse>::child_iterator
+ pre_order_iterator<Node,IsReverse>::_end(::boost::mpl::false_)
+ {
+ return this->base()->end();
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename pre_order_iterator<Node,IsReverse>::child_iterator
+ pre_order_iterator<Node,IsReverse>::_end(::boost::mpl::true_)
+ {
+ return this->base()->rend();
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_pre_order_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ pre_order_iterator<Node> make_pre_order_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline pre_order_iterator<Node> make_pre_order_iterator(Node& node)
+ {
+ return pre_order_iterator<Node>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_post_order_reverse_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ pre_order_iterator<Node,::boost::mpl::true_>
+ make_post_order_reverse_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline pre_order_iterator<Node,::boost::mpl::true_>
+ make_post_order_reverse_iterator(Node& node)
+ {
+ return pre_order_iterator<Node,::boost::mpl::true_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ITERATOR_PRE_ORDER_HPP
+
Added: sandbox/tree_node/boost/tree_node/iterator/pre_order_descendant.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/iterator/pre_order_descendant.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,385 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_ITERATOR_PRE_ORDER_DESCENDANT_HPP
+#define BOOST_TREE_NODE_ITERATOR_PRE_ORDER_DESCENDANT_HPP
+
+#include <deque>
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/equal_to.hpp>
+#endif
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/iterator/iterator_categories.hpp>
+#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/detail/metafunction/container_pointer.hpp>
+#include <boost/detail/metafunction/container_iterator.hpp>
+#include <boost/detail/metafunction/container_reverse_iterator.hpp>
+
+//[reference__pre_order_descendant_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node, typename IsReverse = ::boost::mpl::false_>
+ class pre_order_descendant_iterator
+ : public ::boost::iterator_adaptor<
+ pre_order_descendant_iterator<Node,IsReverse>
+//<-
+#if 0
+//->
+ , typename ::boost::mpl::eval_if<
+ IsReverse
+ , ::boost::mpl::if_<
+ ::std::tr1::is_const<Node>
+ , typename Node::const_reverse_iterator
+ , typename Node::reverse_iterator
+ >
+ , ::boost::mpl::if_<
+ ::std::tr1::is_const<Node>
+ , typename Node::const_iterator
+ , typename Node::iterator
+ >
+ >::type
+ //<-
+#endif
+ , typename ::boost::mpl::eval_if<
+ IsReverse
+ , ::boost::detail::metafunction::container_reverse_iterator<Node>
+ , ::boost::detail::metafunction::container_iterator<Node>
+ >::type
+ //->
+ , ::boost::use_default
+ , ::boost::forward_traversal_tag
+ >
+ {
+ //<-
+ typedef typename ::boost::mpl::eval_if<
+ IsReverse
+ , ::boost::detail::metafunction::container_reverse_iterator<
+ Node
+ >
+ , ::boost::detail::metafunction::container_iterator<Node>
+ >::type
+ child_iterator;
+ typedef ::boost::iterator_adaptor<
+ pre_order_descendant_iterator<Node,IsReverse>
+ , child_iterator
+ , ::boost::use_default
+ , ::boost::forward_traversal_tag
+ >
+ super_t;
+
+#if !defined BOOST_NO_SFINAE
+ //->
+ struct enabler
+ {
+ };
+ //<-
+#endif
+
+ public: // Should be private, but conversion ctor won't work.
+ ::std::deque<
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type
+ > _node_stack;
+ ::std::deque<child_iterator> _itr_stack;
+ typename ::boost::detail::metafunction::container_pointer<
+ Node
+ >::type _current_node;
+ ::boost::tree_node::traversal_state _state;
+ //->
+
+ public:
+ pre_order_descendant_iterator();
+
+ explicit pre_order_descendant_iterator(Node& node);
+
+ template <typename N, typename I>
+ pre_order_descendant_iterator(
+ pre_order_descendant_iterator<N,I> const& other
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type = enabler()
+//<-
+#endif
+//->
+ );
+
+ operator ::boost::tree_node::traversal_state() const;
+
+ //<-
+#if !BOOST_WORKAROUND(__GNUC__, == 2)
+ private:
+ friend class ::boost::iterator_core_access;
+#endif
+
+ void increment();
+
+ template <typename N, typename I>
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ equal(pre_order_descendant_iterator<N,I> const& other) const;
+
+ private:
+ void _push(::boost::mpl::false_);
+
+ void _push(::boost::mpl::true_);
+
+ child_iterator _end(::boost::mpl::false_);
+
+ child_iterator _end(::boost::mpl::true_);
+ //->
+ };
+
+ //<-
+ template <typename Node, typename IsReverse>
+ pre_order_descendant_iterator<
+ Node
+ , IsReverse
+ >::pre_order_descendant_iterator()
+ : super_t()
+ , _node_stack()
+ , _itr_stack()
+ , _current_node()
+ , _state(::boost::tree_node::no_traversal)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ pre_order_descendant_iterator<
+ Node
+ , IsReverse
+ >::pre_order_descendant_iterator(Node& node)
+ : super_t()
+ , _node_stack()
+ , _itr_stack()
+ , _current_node(&node)
+ , _state(::boost::tree_node::pre_order_traversal)
+ {
+ this->_push(IsReverse());
+ this->increment();
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ pre_order_descendant_iterator<
+ Node
+ , IsReverse
+ >::pre_order_descendant_iterator(
+ pre_order_descendant_iterator<N,I> const& other
+#if !defined BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<N,Node>
+ , ::boost::mpl::equal_to<I,IsReverse>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type
+#endif
+ ) : super_t(other.base())
+ , _node_stack(other._node_stack.begin(), other._node_stack.end())
+ , _itr_stack(other._itr_stack.begin(), other._itr_stack.end())
+ , _current_node(other._current_node)
+ , _state(other._state)
+ {
+ }
+
+ template <typename Node, typename IsReverse>
+ inline pre_order_descendant_iterator<Node,IsReverse>::operator
+ ::boost::tree_node::traversal_state() const
+ {
+ return this->_state;
+ }
+
+ template <typename Node, typename IsReverse>
+ void pre_order_descendant_iterator<Node,IsReverse>::increment()
+ {
+ if (this->_itr_stack.back() == this->_end(IsReverse()))
+ {
+ bool is_post_order = true;
+
+ while (is_post_order)
+ {
+ this->_itr_stack.pop_back();
+
+ if (this->_node_stack.empty())
+ {
+ this->_state = ::boost::tree_node::no_traversal;
+ this->_itr_stack.clear();
+ is_post_order = false;
+ }
+ else
+ {
+ this->_current_node = this->_node_stack.back();
+ this->_node_stack.pop_back();
+
+ if (++this->base_reference() == this->_end(IsReverse()))
+ {
+ child_iterator itr = this->_itr_stack.back();
+
+ this->_itr_stack.pop_back();
+
+ if (!this->_itr_stack.empty())
+ {
+ this->base_reference() = this->_itr_stack.back();
+ }
+
+ this->_itr_stack.push_back(itr);
+ }
+ else
+ {
+ this->_itr_stack.pop_back();
+ this->_node_stack.push_back(this->_current_node);
+ this->_itr_stack.push_back(this->base());
+ this->_current_node = &(
+ dereference_iterator(this->base())
+ );
+ this->_push(IsReverse());
+ is_post_order = false;
+ }
+ }
+ }
+ }
+ else
+ {
+ this->_node_stack.push_back(this->_current_node);
+ this->_current_node = &dereference_iterator(
+ this->base_reference() = this->_itr_stack.back()
+ );
+ this->_push(IsReverse());
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ template <typename N, typename I>
+ inline
+#if defined BOOST_NO_SFINAE
+ bool
+#else
+ typename ::boost::enable_if<
+ ::boost::mpl::equal_to<I,IsReverse>
+ , bool
+ >::type
+#endif
+ pre_order_descendant_iterator<Node,IsReverse>::equal(
+ pre_order_descendant_iterator<N,I> const& other
+ ) const
+ {
+ if (this->_state == other._state)
+ {
+ return this->_state ? (*(*this) == *(*other)) : !other._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+
+ template <typename Node, typename IsReverse>
+ inline void
+ pre_order_descendant_iterator<Node,IsReverse>::_push(
+ ::boost::mpl::false_
+ )
+ {
+ this->_itr_stack.push_back(this->_current_node->begin());
+ }
+
+ template <typename Node, typename IsReverse>
+ inline void
+ pre_order_descendant_iterator<Node,IsReverse>::_push(
+ ::boost::mpl::true_
+ )
+ {
+ this->_itr_stack.push_back(this->_current_node->rbegin());
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename pre_order_descendant_iterator<
+ Node
+ , IsReverse
+ >::child_iterator
+ pre_order_descendant_iterator<Node,IsReverse>::_end(
+ ::boost::mpl::false_
+ )
+ {
+ return this->_current_node->end();
+ }
+
+ template <typename Node, typename IsReverse>
+ inline typename pre_order_descendant_iterator<
+ Node
+ , IsReverse
+ >::child_iterator
+ pre_order_descendant_iterator<Node,IsReverse>::_end(
+ ::boost::mpl::true_
+ )
+ {
+ return this->_current_node->rend();
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_pre_order_descendant_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ pre_order_descendant_iterator<Node>
+ make_pre_order_descendant_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline pre_order_descendant_iterator<Node>
+ make_pre_order_descendant_iterator(Node& node)
+ {
+ return pre_order_descendant_iterator<Node>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_post_order_descendant_reverse_iterator
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ pre_order_descendant_iterator<Node,::boost::mpl::true_>
+ make_post_order_descendant_reverse_iterator(Node& node);
+
+ //<-
+ template <typename Node>
+ inline pre_order_descendant_iterator<Node,::boost::mpl::true_>
+ make_post_order_descendant_reverse_iterator(Node& node)
+ {
+ return pre_order_descendant_iterator<Node,::boost::mpl::true_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_ITERATOR_PRE_ORDER_DESCENDANT_HPP
+
Added: sandbox/tree_node/boost/tree_node/key/accumulation.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/key/accumulation.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,53 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_KEY_ACCUMULATION_HPP
+#define BOOST_TREE_NODE_KEY_ACCUMULATION_HPP
+
+#include <boost/config.hpp>
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#error boost::tree_node::with_accumulation uses Boost.Accumulators,
+#error which requires working partial template specialization.
+#endif
+
+#include <boost/mpl/bool.hpp>
+#include <boost/accumulators/statistics/sum.hpp>
+#include <boost/tree_node/key/data.hpp>
+
+//[reference__accumulation_key
+namespace boost { namespace tree_node {
+
+ //<-
+ struct accumulation_key_base
+ {
+ };
+ //->
+
+ template <
+ typename Key = data_key
+ , typename Tag = ::boost::accumulators::tag::sum
+ , typename IncludesAllDescendants = ::boost::mpl::true_
+ , typename IncludesRoot = ::boost::mpl::true_
+ , typename Value = void
+ >
+ struct accumulation_key
+ //<-
+ : accumulation_key_base
+ //->
+ {
+ typedef Key key;
+ typedef Tag tag;
+ typedef IncludesAllDescendants includes_all_descendants;
+ typedef IncludesRoot includes_root;
+ typedef Value value;
+ };
+
+ typedef accumulation_key<> default_accumulation_key;
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_KEY_ACCUMULATION_HPP
+
Added: sandbox/tree_node/boost/tree_node/key/count.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/key/count.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,19 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_KEY_COUNT_HPP
+#define BOOST_TREE_NODE_KEY_COUNT_HPP
+
+//[reference__count_key
+namespace boost { namespace tree_node {
+
+ struct count_key
+ {
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_KEY_COUNT_HPP
+
Added: sandbox/tree_node/boost/tree_node/key/data.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/key/data.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,19 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_KEY_DATA_HPP
+#define BOOST_TREE_NODE_KEY_DATA_HPP
+
+//[reference__data_key
+namespace boost { namespace tree_node {
+
+ struct data_key
+ {
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_KEY_DATA_HPP
+
Added: sandbox/tree_node/boost/tree_node/key/height.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/key/height.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,19 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_KEY_HEIGHT_HPP
+#define BOOST_TREE_NODE_KEY_HEIGHT_HPP
+
+//[reference__height_key
+namespace boost { namespace tree_node {
+
+ struct height_key
+ {
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_KEY_HEIGHT_HPP
+
Added: sandbox/tree_node/boost/tree_node/key/position.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/key/position.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,19 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_KEY_POSITION_HPP
+#define BOOST_TREE_NODE_KEY_POSITION_HPP
+
+//[reference__position_key
+namespace boost { namespace tree_node {
+
+ struct position_key
+ {
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_KEY_POSITION_HPP
+
Added: sandbox/tree_node/boost/tree_node/key/red_black_flag.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/key/red_black_flag.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,23 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_KEY_RED_BLACK_FLAG_HPP
+#define BOOST_TREE_NODE_KEY_RED_BLACK_FLAG_HPP
+
+//[reference__red_black_flag_key
+namespace boost { namespace tree_node {
+
+ struct red_flag_key
+ {
+ };
+
+ struct black_flag_key
+ {
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_KEY_RED_BLACK_FLAG_HPP
+
Added: sandbox/tree_node/boost/tree_node/nary_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/nary_node.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,1325 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_NARY_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_NARY_NODE_HPP_INCLUDED
+
+#include <utility>
+#include <boost/mpl/assert.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/iterator/transform_iterator.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/emplace_function_gen.hpp>
+#include <boost/container_gen/is_recursive_selector.hpp>
+#include <boost/container_gen/has_stable_iters_selector.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/nary_node_fwd.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#include <boost/tree_node/intrinsic/get_keys.hpp>
+#include <boost/detail/metafunction/container_reverse_iterator.hpp>
+#include <boost/assert.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/move/move.hpp>
+#endif
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/enum_trailing.hpp>
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/type_traits/is_pod.hpp>
+
+namespace boost {
+
+ template <typename Derived, typename T, typename Selector>
+ struct is_POD<
+ ::boost::tree_node::nary_node_base<Derived,T,Selector>
+ > : ::boost::false_type
+ {
+ };
+
+ template <typename Derived, typename T, typename Selector>
+ struct is_pod<
+ ::boost::tree_node::nary_node_base<Derived,T,Selector>
+ > : ::boost::false_type
+ {
+ };
+} // namespace boost
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/mpl/vector.hpp>
+#include <boost/mpl/placeholders.hpp>
+#include <boost/mpl/transform_view.hpp>
+#include <boost/fusion/sequence/intrinsic/at_key.hpp>
+#include <boost/fusion/iterator/key_of.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/support/category_of.hpp>
+
+namespace boost { namespace tree_node { namespace result_of {
+
+ template <
+ typename Derived
+ , typename T
+ , typename Selector
+ , typename FusionKey
+ >
+ struct has_key_impl<nary_node_base<Derived,T,Selector>,FusionKey>
+ : ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::has_key<T,FusionKey>
+ , ::std::tr1::is_same<FusionKey,data_key>
+ >::type
+ {
+ };
+
+ template <typename Derived, typename T, typename Selector>
+ struct get_keys_impl<nary_node_base<Derived,T,Selector> >
+ : ::boost::mpl::eval_if<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::transform_view<
+ T
+ , ::boost::fusion::result_of::key_of< ::boost::mpl::_>
+ >
+ , ::boost::mpl::vector1<data_key>
+ >
+ {
+ };
+}}} // namespace boost::tree_node::result_of
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Selector>
+ class nary_node_base
+ : public
+ //[reference__nary_node_base__bases
+ tree_node_base<Derived>
+ //]
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ , public data_key
+#endif
+ , private ::boost::noncopyable
+ {
+ BOOST_MPL_ASSERT((::boost::is_recursive_selector<Selector>));
+
+ //[reference__nary_node_base__children
+ typedef typename ::boost::container_gen<Selector,Derived>::type
+ children;
+ //]
+
+ public:
+ //[reference__nary_node_base__super_t
+ typedef tree_node_base<Derived>
+ super_t;
+ //]
+
+ //[reference__nary_node_base__traits
+ struct traits
+ {
+ typedef T data_type;
+ typedef typename children::allocator_type allocator;
+ typedef allocator const& allocator_reference;
+ };
+ //]
+
+ //[reference__nary_node_base__pointer
+ typedef typename super_t::pointer
+ pointer;
+ //]
+
+ //[reference__nary_node_base__const_pointer
+ typedef typename super_t::const_pointer
+ const_pointer;
+ //]
+
+ //[reference__nary_node_base__iterator
+ typedef typename children::iterator
+ iterator;
+ //]
+
+ //[reference__nary_node_base__const_iterator
+ typedef typename children::const_iterator
+ const_iterator;
+ //]
+
+ //[reference__nary_node_base__reverse_iterator
+ typedef // typename children::reverse_iterator
+ //<-
+ typename ::boost::detail::metafunction
+ ::container_reverse_iterator<children>::type
+ //->
+ reverse_iterator;
+ //]
+
+ //[reference__nary_node_base__const_reverse_iterator
+ typedef // typename children::const_reverse_iterator
+ //<-
+ typename ::boost::detail::metafunction
+ ::container_reverse_iterator<children const>::type
+ //->
+ const_reverse_iterator;
+ //]
+
+ //[reference__nary_node_base__size_type
+ typedef typename children::size_type
+ size_type;
+ //]
+
+ private:
+ children _children;
+ typename traits::data_type _data;
+ pointer _parent;
+
+ protected:
+ //[reference__nary_node_base__derived_copy_ctor
+ nary_node_base(Derived const& copy);
+ //]
+
+ //[reference__nary_node_base__derived_copy_ctor_w_allocator
+ nary_node_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ );
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ nary_node_base(BOOST_RV_REF(Derived) source);
+
+ nary_node_base(
+ BOOST_RV_REF(Derived) source
+ , typename traits::allocator_reference allocator
+ );
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__nary_node_base__emplacement_ctor
+ template <typename ...Args>
+ explicit nary_node_base(Args&& ...args);
+ //]
+
+ //[reference__nary_node_base__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit nary_node_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL
+ , nary_node_base
+ )
+
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL
+ , nary_node_base
+ )
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~nary_node_base();
+
+ //[reference__nary_node_base__on_post_copy_or_move
+ void on_post_copy_or_move();
+ //]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ //[reference__nary_node_base__copy_assign
+ void copy_assign(Derived const& copy);
+ //]
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ public:
+ //[reference__nary_node_base__data_key_value_operator__const
+ typename traits::data_type const& operator[](data_key const&) const;
+ //]
+
+ //[reference__nary_node_base__data_key_value_operator
+ typename traits::data_type& operator[](data_key const&);
+ //]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ //[reference__nary_node_base__key_value_operator__const
+ template <typename FusionKey>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ operator[](FusionKey const&) const;
+ //]
+
+ //[reference__nary_node_base__key_value_operator
+ template <typename FusionKey>
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ operator[](FusionKey const&);
+ //]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ //[reference__nary_node_base__get_parent_ptr__const
+ const_pointer get_parent_ptr() const;
+ //]
+
+ //[reference__nary_node_base__get_parent_ptr
+ pointer get_parent_ptr();
+ //]
+
+ //[reference__nary_node_base__insert
+ iterator insert(Derived const& child);
+ //]
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__nary_node_base__emplace
+ template <typename ...Args>
+ iterator emplace(Args&& ...args);
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_NARY_NODE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ emplace( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_NARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_NARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ //[reference__nary_node_base__cbegin
+ const_iterator cbegin() const;
+ const_iterator begin() const;
+ //]
+
+ //[reference__nary_node_base__begin
+ iterator begin();
+ //]
+
+ //[reference__nary_node_base__cend
+ const_iterator cend() const;
+ const_iterator end() const;
+ //]
+
+ //[reference__nary_node_base__end
+ iterator end();
+ //]
+
+ //[reference__nary_node_base__crbegin
+ const_reverse_iterator crbegin() const;
+ const_reverse_iterator rbegin() const;
+ //]
+
+ //[reference__nary_node_base__rbegin
+ reverse_iterator rbegin();
+ //]
+
+ //[reference__nary_node_base__crend
+ const_reverse_iterator crend() const;
+ const_reverse_iterator rend() const;
+ //]
+
+ //[reference__nary_node_base__rend
+ reverse_iterator rend();
+ //]
+
+ //[reference__nary_node_base__size
+ size_type size() const;
+ //]
+
+ //[reference__nary_node_base__empty
+ bool empty() const;
+ //]
+
+ //[reference__nary_node_base__clear
+ void clear();
+ //]
+
+ private:
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ iterator _add_child(Args&& ...args);
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_NARY_NODE_MACRO(z, n, _) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ iterator \
+ _add_child( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ); \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_NARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_NARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ void _initialize(iterator& to_child);
+
+ void _link_children_to_parent();
+
+ void _on_post_modify_value(data_key const& key);
+
+ template <typename D, typename T0, typename S, typename V>
+ friend void
+ put(
+ nary_node_base<D,T0,S>& node
+ , data_key const& key
+ , V const& value
+ );
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename FusionKey>
+ void _on_post_modify_value(FusionKey const& key);
+
+ template <
+ typename D
+ , typename T0
+ , typename S
+ , typename FusionKey
+ , typename V
+ >
+ friend void
+ put(
+ nary_node_base<D,T0,S>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T0>::type
+ , ::boost::fusion::traits::is_associative<T0>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<nary_node_base<D,T0,S>,FusionKey>
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ };
+
+ template <typename Derived, typename T, typename Selector>
+ nary_node_base<Derived,T,Selector>::nary_node_base(Derived const& copy)
+ : _children(copy._children)
+ , _data(copy._data)
+ , _parent(copy._parent)
+ {
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ nary_node_base<Derived,T,Selector>::nary_node_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ ) : _children(copy._children, allocator)
+ , _data(copy._data)
+ , _parent(copy._parent)
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T, typename Selector>
+ nary_node_base<Derived,T,Selector>::nary_node_base(
+ BOOST_RV_REF(Derived) source
+ ) : _children(::boost::move(source._children))
+ , _data(::boost::move(source._data))
+ , _parent(source._parent)
+ {
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ nary_node_base<Derived,T,Selector>::nary_node_base(
+ BOOST_RV_REF(Derived) source
+ , typename traits::allocator_reference allocator
+ ) : _children(::boost::move(source._children), allocator)
+ , _data(::boost::move(source._data))
+ , _parent(source._parent)
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename T, typename Selector>
+ template <typename ...Args>
+ nary_node_base<Derived,T,Selector>::nary_node_base(Args&& ...args)
+ : _children(), _data(::boost::forward<Args>(args)...), _parent()
+ {
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ template <typename ...Args>
+ nary_node_base<Derived,T,Selector>::nary_node_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : _children(allocator), _data(::boost::forward<Args>(args)...), _parent()
+ {
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_NARY_NODE_MACRO(z, n, _) \
+ template <typename Derived, typename T, typename Selector> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ nary_node_base<Derived,T,Selector>::nary_node_base( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) : _children() \
+ , _data( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ , _parent() \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_NARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_NARY_NODE_MACRO
+
+#define BOOST_TREE_NODE_NARY_NODE_MACRO(z, n, _) \
+ template <typename Derived, typename T, typename Selector> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ nary_node_base<Derived,T,Selector>::nary_node_base( \
+ ::boost::container::allocator_arg_t \
+ , typename traits::allocator_reference allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) : _children(allocator) \
+ , _data( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+ , _parent() \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_NARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_NARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename T, typename Selector>
+ nary_node_base<Derived,T,Selector>::~nary_node_base()
+ {
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline void nary_node_base<Derived,T,Selector>::on_post_copy_or_move()
+ {
+ this->_link_children_to_parent();
+ this->on_post_propagate_value(data_key());
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T, typename Selector>
+ void nary_node_base<Derived,T,Selector>::copy_assign(Derived const& copy)
+ {
+ Derived twin(copy);
+
+ this->_children = twin._children;
+ this->_data = twin._data;
+ }
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <typename Derived, typename T, typename Selector>
+ void
+ nary_node_base<Derived,T,Selector>::copy_assign(
+ BOOST_COPY_ASSIGN_REF(Derived) copy
+ )
+ {
+ Derived twin(static_cast<Derived const&>(copy));
+
+ this->_children = ::boost::move(twin._children);
+ this->_data = ::boost::move(twin._data);
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline void
+ nary_node_base<Derived,T,Selector>::move_assign(
+ BOOST_RV_REF(Derived) source
+ )
+ {
+ this->_children = ::boost::move(source._children);
+ this->_data = ::boost::move(source._data);
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type const&
+ nary_node_base<Derived,T,Selector>::operator[](data_key const&) const
+ {
+ return this->_data;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::traits::data_type&
+ nary_node_base<Derived,T,Selector>::operator[](data_key const&)
+ {
+ return this->_data;
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Derived, typename T, typename Selector>
+ template <typename FusionKey>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ nary_node_base<Derived,T,Selector>::operator[](FusionKey const&) const
+ {
+ return ::boost::fusion::at_key<FusionKey>(this->_data);
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ template <typename FusionKey>
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ nary_node_base<Derived,T,Selector>::operator[](FusionKey const&)
+ {
+ return ::boost::fusion::at_key<FusionKey>(this->_data);
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::const_pointer
+ nary_node_base<Derived,T,Selector>::get_parent_ptr() const
+ {
+ return this->_parent;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::pointer
+ nary_node_base<Derived,T,Selector>::get_parent_ptr()
+ {
+ return this->_parent;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::iterator
+ nary_node_base<Derived,T,Selector>::insert(Derived const& child)
+ {
+#if defined BOOST_MSVC
+ Derived twin(child);
+ iterator result(this->_add_child(twin));
+#else
+ iterator result(this->_add_child(Derived(child)));
+#endif
+ BOOST_ASSERT((*result)._parent == this->get_derived());
+ return result;
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename T, typename Selector>
+ template <typename ...Args>
+ inline typename nary_node_base<Derived,T,Selector>::iterator
+ nary_node_base<Derived,T,Selector>::emplace(Args&& ...args)
+ {
+ iterator result(this->_add_child(::boost::forward<Args>(args)...));
+ BOOST_ASSERT((*result)._parent == this->get_derived());
+ return result;
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_NARY_NODE_MACRO(z, n, _) \
+ template <typename Derived, typename T, typename Selector> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ inline typename nary_node_base<Derived,T,Selector>::iterator \
+ nary_node_base<Derived,T,Selector>::emplace( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ iterator result = this->_add_child( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ BOOST_ASSERT((*result)._parent == this->get_derived()); \
+ return result; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_NARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_NARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::const_iterator
+ nary_node_base<Derived,T,Selector>::cbegin() const
+ {
+ return this->_children.cbegin();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::const_iterator
+ nary_node_base<Derived,T,Selector>::begin() const
+ {
+ return this->_children.begin();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::iterator
+ nary_node_base<Derived,T,Selector>::begin()
+ {
+ return this->_children.begin();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::const_iterator
+ nary_node_base<Derived,T,Selector>::cend() const
+ {
+ return this->_children.cend();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::const_iterator
+ nary_node_base<Derived,T,Selector>::end() const
+ {
+ return this->_children.end();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::iterator
+ nary_node_base<Derived,T,Selector>::end()
+ {
+ return this->_children.end();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::const_reverse_iterator
+ nary_node_base<Derived,T,Selector>::crbegin() const
+ {
+ return this->_children.crbegin();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::const_reverse_iterator
+ nary_node_base<Derived,T,Selector>::rbegin() const
+ {
+ return this->_children.rbegin();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::reverse_iterator
+ nary_node_base<Derived,T,Selector>::rbegin()
+ {
+ return this->_children.rbegin();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::const_reverse_iterator
+ nary_node_base<Derived,T,Selector>::crend() const
+ {
+ return this->_children.crend();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::const_reverse_iterator
+ nary_node_base<Derived,T,Selector>::rend() const
+ {
+ return this->_children.rend();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::reverse_iterator
+ nary_node_base<Derived,T,Selector>::rend()
+ {
+ return this->_children.rend();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::size_type
+ nary_node_base<Derived,T,Selector>::size() const
+ {
+ return this->_children.size();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline bool nary_node_base<Derived,T,Selector>::empty() const
+ {
+ return this->_children.empty();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline void nary_node_base<Derived,T,Selector>::clear()
+ {
+ this->_children.clear();
+ this->on_post_clear();
+ }
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename Derived, typename T, typename Selector>
+ template <typename ...Args>
+ inline typename nary_node_base<Derived,T,Selector>::iterator
+ nary_node_base<Derived,T,Selector>::_add_child(Args&& ...args)
+ {
+ typename ::boost::emplace_function_gen<Selector>::type emplacer;
+ ::std::pair<iterator,bool> p = emplacer(
+ this->_children
+ , ::boost::forward<Args>(args)...
+ );
+
+ if (p.second)
+ {
+ this->_initialize(p.first);
+ }
+
+ return p.first;
+ }
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_NARY_NODE_MACRO(z, n, _) \
+ template <typename Derived, typename T, typename Selector> \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ inline typename nary_node_base<Derived,T,Selector>::iterator \
+ nary_node_base<Derived,T,Selector>::_add_child( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+ { \
+ typename ::boost::emplace_function_gen<Selector>::type emplacer; \
+ ::std::pair<iterator,bool> p = emplacer( \
+ this->_children \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ); \
+ if (p.second) \
+ { \
+ this->_initialize(p.first); \
+ } \
+ return p.first; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_NARY_NODE_MACRO
+ , _
+ )
+#undef BOOST_TREE_NODE_NARY_NODE_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <typename Derived, typename T, typename Selector>
+ inline void
+ nary_node_base<Derived,T,Selector>::_initialize(iterator& to_child)
+ {
+ (*to_child)._parent = this->get_derived();
+ (*to_child).on_post_inserted(
+ to_child
+ , ::boost::has_stable_iterators_selector<Selector>()
+ );
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ void nary_node_base<Derived,T,Selector>::_link_children_to_parent()
+ {
+ iterator itr_end = this->end();
+
+ for (iterator itr = this->begin(); itr != itr_end; ++itr)
+ {
+ (*itr)._parent = this->get_derived();
+ }
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline void
+ nary_node_base<Derived,T,Selector>::_on_post_modify_value(
+ data_key const& key
+ )
+ {
+ this->on_post_modify_value(key);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Derived, typename T, typename Selector>
+ template <typename FusionKey>
+ inline void
+ nary_node_base<Derived,T,Selector>::_on_post_modify_value(
+ FusionKey const& key
+ )
+ {
+ this->on_post_modify_value(key);
+ }
+#endif
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type const&
+ get(
+ nary_node_base<Derived,T,Selector> const& node
+ , data_key const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename nary_node_base<Derived,T,Selector>::traits::data_type&
+ get(nary_node_base<Derived,T,Selector>& node, data_key const& key)
+ {
+ return node[key];
+ }
+
+#if !defined BOOST_NO_SFINAE
+ template <typename Key, typename Derived, typename T, typename Selector>
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type const&
+ >::type
+ get(nary_node_base<Derived,T,Selector> const& node)
+ {
+ return node[data_key()];
+ }
+
+ template <typename Key, typename Derived, typename T, typename Selector>
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type&
+ >::type
+ get(nary_node_base<Derived,T,Selector>& node)
+ {
+ return node[data_key()];
+ }
+#endif // BOOST_NO_SFINAE
+
+ template <typename Derived, typename T, typename Selector, typename V>
+ inline void
+ put(
+ nary_node_base<Derived,T,Selector>& node
+ , data_key const& key
+ , V const& value
+ )
+ {
+ node[key] = value;
+ node._on_post_modify_value(key);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <
+ typename Derived
+ , typename T
+ , typename Selector
+ , typename FusionKey
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ get(
+ nary_node_base<Derived,T,Selector> const& node
+ , FusionKey const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <
+ typename Derived
+ , typename T
+ , typename Selector
+ , typename FusionKey
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ get(nary_node_base<Derived,T,Selector>& node, FusionKey const& key)
+ {
+ return node[key];
+ }
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename T
+ , typename Selector
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ get(nary_node_base<Derived,T,Selector> const& node)
+ {
+ return node[FusionKey()];
+ }
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename T
+ , typename Selector
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ get(nary_node_base<Derived,T,Selector>& node)
+ {
+ return node[FusionKey()];
+ }
+
+ template <
+ typename Derived
+ , typename T
+ , typename Selector
+ , typename FusionKey
+ , typename V
+ >
+ inline void
+ put(
+ nary_node_base<Derived,T,Selector>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type
+ )
+ {
+ node[key] = value;
+ node._on_post_modify_value(key);
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+}} // namespace boost::tree_node
+
+//[reference__nary_node_base_gen
+namespace boost { namespace tree_node {
+
+ template <typename Selector = ::boost::ptr_dequeS>
+ struct nary_node_base_gen
+ {
+ template <typename Derived, typename T>
+ struct apply
+ {
+ typedef nary_node_base<Derived,T,Selector> type;
+ };
+ };
+
+ typedef nary_node_base_gen<> nary_node_base_default_gen;
+}} // namespace boost::tree_node
+//]
+
+namespace boost { namespace tree_node {
+
+ template <typename T, typename Selector>
+ struct nary_node
+ : public
+ //[reference__nary_node__bases
+ nary_node_base<nary_node<T,Selector>,T,Selector>
+ //]
+ {
+ //[reference__nary_node__super_t
+ typedef nary_node_base<nary_node,T,Selector>
+ super_t;
+ //]
+
+ //[reference__nary_node__traits
+ typedef typename super_t::traits
+ traits;
+ //]
+
+ //[reference__nary_node__pointer
+ typedef typename super_t::pointer
+ pointer;
+ //]
+
+ //[reference__nary_node__const_pointer
+ typedef typename super_t::const_pointer
+ const_pointer;
+ //]
+
+ //[reference__nary_node__iterator
+ typedef typename super_t::iterator
+ iterator;
+ //]
+
+ //[reference__nary_node__const_iterator
+ typedef typename super_t::const_iterator
+ const_iterator;
+ //]
+
+ //[reference__nary_node__reverse_iterator
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ //]
+
+ //[reference__nary_node__const_reverse_iterator
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ //]
+
+ //[reference__nary_node__size_type
+ typedef typename super_t::size_type
+ size_type;
+ //]
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(nary_node, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__nary_node__emplacement_ctor
+ template <typename ...Args>
+ explicit nary_node(Args&& ...args);
+ //]
+
+ //[reference__nary_node__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit nary_node(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (nary_node, super_t)
+ )
+
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF
+ , (nary_node, super_t)
+ )
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename T, typename Selector>
+ template <typename ...Args>
+ inline nary_node<T,Selector>::nary_node(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ {
+ }
+
+ template <typename T, typename Selector>
+ template <typename ...Args>
+ inline nary_node<T,Selector>::nary_node(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ {
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+}} // namespace boost::tree_node
+
+//[reference__nary_node_gen
+namespace boost { namespace tree_node {
+
+ template <typename Selector = ::boost::ptr_dequeS>
+ struct nary_node_gen
+ {
+ template <typename T>
+ struct apply
+ {
+ typedef nary_node<T,Selector> type;
+ };
+ };
+
+ typedef nary_node_gen<> nary_node_default_gen;
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_NARY_NODE_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/nary_node_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/nary_node_fwd.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,254 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_NARY_NODE_FWD_HPP_INCLUDED
+#define BOOST_TREE_NODE_NARY_NODE_FWD_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/key/data.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#endif
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/fusion/sequence/intrinsic/has_key.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/fusion/support/category_of.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#endif
+
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Selector>
+ class nary_node_base;
+
+ template <typename T, typename Selector = ::boost::ptr_dequeS>
+ struct nary_node;
+}} // namespace boost::tree_node
+
+//[reference__nary_node_base__at_data_key__const
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Selector>
+ typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type const&
+ get(
+ nary_node_base<Derived,T,Selector> const& node
+ , data_key const& key
+ );
+
+//<-
+#if defined BOOST_NO_SFINAE
+//->
+ template <typename Key, typename Derived, typename T, typename Selector>
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type const&
+ >::type
+ get(nary_node_base<Derived,T,Selector> const& node);
+//<-
+#endif // BOOST_NO_SFINAE
+//->
+}} // namespace boost::tree_node
+//]
+
+//[reference__nary_node_base__at_data_key
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Selector>
+ typename nary_node_base<Derived,T,Selector>::traits::data_type&
+ get(nary_node_base<Derived,T,Selector>& node, data_key const& key);
+
+//<-
+#if defined BOOST_NO_SFINAE
+//->
+ template <typename Key, typename Derived, typename T, typename Selector>
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,data_key>
+ , typename nary_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type&
+ >::type
+ get(nary_node_base<Derived,T,Selector>& node);
+//<-
+#endif // BOOST_NO_SFINAE
+//->
+}} // namespace boost::tree_node
+//]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+//[reference__nary_node_base__at_key__const
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename T
+ , typename Selector
+ , typename FusionKey
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ get(
+ nary_node_base<Derived,T,Selector> const& node
+ , FusionKey const& key
+ );
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename T
+ , typename Selector
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T const,FusionKey>
+ >::type
+ get(nary_node_base<Derived,T,Selector> const& node);
+}} // namespace boost::tree_node
+//]
+
+//[reference__nary_node_base__at_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename T
+ , typename Selector
+ , typename FusionKey
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ get(nary_node_base<Derived,T,Selector>& node, FusionKey const& key);
+
+ template <
+ typename FusionKey
+ , typename Derived
+ , typename T
+ , typename Selector
+ >
+ typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::fusion::result_of::at_key<T,FusionKey>
+ >::type
+ get(nary_node_base<Derived,T,Selector>& node);
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+//[reference__nary_node_base__put_data
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Selector, typename V>
+ void
+ put(
+ nary_node_base<Derived,T,Selector>& node
+ , data_key const& key
+ , V const& value
+ );
+}} // namespace boost::tree_node
+//]
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+//[reference__nary_node_base__put
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename T
+ , typename Selector
+ , typename FusionKey
+ , typename V
+ >
+ void
+ put(
+ nary_node_base<Derived,T,Selector>& node
+ , FusionKey const& key
+ , V const& value
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ typename ::boost::mpl::eval_if<
+ typename ::boost::fusion::traits::is_sequence<T>::type
+ , ::boost::fusion::traits::is_associative<T>
+ , ::boost::mpl::false_
+ >::type
+ , result_of::has_key<
+ nary_node_base<Derived,T,Selector>
+ , FusionKey
+ >
+ , ::boost::mpl::false_
+ >::type
+ , ::boost::mpl::true_
+ >::type = ::boost::mpl::true_()
+ );
+}} // namespace boost::tree_node
+//]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+#endif // BOOST_TREE_NODE_NARY_NODE_FWD_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/preprocessor.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/preprocessor.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,445 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_PREPROCESSOR_HPP_INCLUDED
+#define BOOST_TREE_NODE_PREPROCESSOR_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+#if !defined BOOST_NO_SFINAE \
+ && !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION \
+ && !defined BOOST_TREE_NODE_CAN_USE_FUSION
+#define BOOST_TREE_NODE_CAN_USE_FUSION
+#endif
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION \
+ && defined BOOST_TYPEOF_NATIVE \
+ && !defined BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF
+#define BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF
+#endif
+
+#include <boost/container/scoped_allocator_fwd.hpp>
+#include <boost/container/detail/workaround.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/cat.hpp>
+#include <boost/preprocessor/repetition/enum.hpp>
+#include <boost/preprocessor/repetition/enum_params.hpp>
+#include <boost/preprocessor/repetition/enum_trailing.hpp>
+#include <boost/preprocessor/control/expr_if.hpp>
+#include <boost/preprocessor/control/expr_iif.hpp>
+#include <boost/preprocessor/comparison/equal.hpp>
+#include <boost/preprocessor/arithmetic/dec.hpp>
+#include <boost/preprocessor/tuple/elem.hpp>
+#include <boost/container/detail/preprocessor.hpp>
+
+//[reference__macro__emplacement_ctor_header
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_HEADER(z, n, Type) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ BOOST_PP_EXPR_IIF(BOOST_PP_EQUAL(n, 1), explicit) \
+ Type( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+//]
+
+//[reference__macro__emplacement_ctor_fwd_decl
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL(z, n, Type) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_HEADER(z, n, Type); \
+//]
+
+//[reference__macro__emplacement_ctor_base_fwd
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_BASE_FWD(z, n, Base) \
+ : Base( \
+ BOOST_PP_CAT(BOOST_PP_ENUM_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+//]
+
+//[reference__macro__emplacement_ctor_inline_header
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_HEADER( \
+ z \
+ , n \
+ , BOOST_PP_TUPLE_ELEM(2, 0, Tuple) \
+ ) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_BASE_FWD( \
+ z \
+ , n \
+ , BOOST_PP_TUPLE_ELEM(2, 1, Tuple) \
+ ) \
+//]
+
+//[reference__macro__emplacement_ctor_inline_def
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ { \
+ Base::on_post_emplacement_construct(); \
+ } \
+//]
+
+//[reference__macro__emplacement_ctor_w_alloc_header
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_HEADER(z, n, Type) \
+ BOOST_PP_EXPR_IF(n, template <) \
+ BOOST_PP_ENUM_PARAMS_Z(z, n, typename P) \
+ BOOST_PP_EXPR_IF(n, >) \
+ BOOST_PP_EXPR_IIF(BOOST_PP_EQUAL(n, 1), explicit) \
+ Type( \
+ ::boost::container::allocator_arg_t \
+ , typename traits::allocator_reference allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_LIST \
+ , _ \
+ ) \
+ ) \
+//]
+
+//[reference__macro__emplacement_ctor_w_alloc_fwd_decl
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL(z, n, Type) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_HEADER(z, n, Type); \
+//]
+
+//[reference__macro__emplacement_ctor_w_alloc_base_fwd
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_BASE_FWD(z, n, Base) \
+ : Base( \
+ ::boost::container::allocator_arg \
+ , allocator \
+ BOOST_PP_CAT(BOOST_PP_ENUM_TRAILING_, z)( \
+ n \
+ , BOOST_CONTAINER_PP_PARAM_FORWARD \
+ , _ \
+ ) \
+ ) \
+//]
+
+//[reference__macro__emplacement_ctor_w_alloc_inline_header
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_HEADER( \
+ z \
+ , n \
+ , BOOST_PP_TUPLE_ELEM(2, 0, Tuple) \
+ ) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_BASE_FWD( \
+ z \
+ , n \
+ , BOOST_PP_TUPLE_ELEM(2, 1, Tuple) \
+ ) \
+//]
+
+//[reference__macro__emplacement_ctor_w_alloc_inline_def
+#define BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER(z, n, Tuple) \
+ { \
+ Base::on_post_emplacement_construct(); \
+ } \
+//]
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+//[reference__macro__copy_constructible
+#define BOOST_TREE_NODE_COPY_CONSTRUCTIBLE(Derived, Base) \
+ inline Derived(Derived const& copy) : Base(copy) \
+ { \
+ Base::on_post_copy_or_move(); \
+ } \
+ inline Derived( \
+ Derived const& copy \
+ , typename traits::allocator_reference a \
+ ) : Base(copy, a) \
+ { \
+ Base::on_post_copy_or_move(); \
+ } \
+ inline Derived(Derived& copy) \
+ : Base(const_cast<Derived const&>(copy)) \
+ { \
+ Base::on_post_copy_or_move(); \
+ } \
+ inline Derived( \
+ Derived& copy \
+ , typename traits::allocator_reference a \
+ ) : Base(const_cast<Derived const&>(copy), a) \
+ { \
+ Base::on_post_copy_or_move(); \
+ } \
+//]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(Derived, Base) \
+ BOOST_TREE_NODE_COPY_CONSTRUCTIBLE(Derived, Base) \
+ inline Derived& operator=(Derived const& copy) \
+ { \
+ if (this != ©) \
+ { \
+ Base::copy_assign(copy); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+ inline Derived& operator=(Derived& copy) \
+ { \
+ if (this != ©) \
+ { \
+ Base::copy_assign(const_cast<Derived const&>(copy)); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+//!
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#if defined BOOST_NO_RVALUE_REFERENCES
+#include <boost/move/move.hpp>
+#define BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(Derived, Base) \
+ BOOST_TREE_NODE_COPY_CONSTRUCTIBLE(Derived, Base) \
+ inline Derived(::boost::rv<Derived>& source) : Base(source) \
+ { \
+ Base::on_post_copy_or_move(); \
+ } \
+ inline Derived( \
+ ::boost::rv<Derived>& source \
+ , typename traits::allocator_reference a \
+ ) : Base(source, a) \
+ { \
+ Base::on_post_copy_or_move(); \
+ } \
+ inline operator ::boost::rv<Derived> const&() const \
+ { \
+ return *static_cast< ::boost::rv<Derived> const*>(this); \
+ } \
+ inline operator ::boost::rv<Derived>&() \
+ { \
+ return *static_cast< ::boost::rv<Derived>*>(this); \
+ } \
+ inline Derived& operator=(::boost::rv<Derived> const& ca_ref) \
+ { \
+ Derived const& copy = static_cast<Derived const&>(ca_ref); \
+ if (this != ©) \
+ { \
+ Base::copy_assign(copy); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+ inline Derived& operator=(::boost::rv<Derived>& rv_ref) \
+ { \
+ if (this != &static_cast<Derived&>(rv_ref)) \
+ { \
+ Base::move_assign(rv_ref); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+ inline Derived& operator=(Derived& copy) \
+ { \
+ if (this != ©) \
+ { \
+ Base::copy_assign(const_cast<Derived const&>(copy)); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+//!
+#else // !defined BOOST_NO_RVALUE_REFERENCES
+//[reference__macro__copyable_and_movable
+#define BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(Derived, Base) \
+ BOOST_TREE_NODE_COPY_CONSTRUCTIBLE(Derived, Base) \
+ inline Derived(Derived&& source) \
+ : Base(static_cast<Derived&&>(source)) \
+ { \
+ Base::on_post_copy_or_move(); \
+ } \
+ inline Derived( \
+ Derived&& source \
+ , typename traits::allocator_reference a \
+ ) : Base(static_cast<Derived&&>(source), a) \
+ { \
+ Base::on_post_copy_or_move(); \
+ } \
+ inline Derived& operator=(Derived const& copy) \
+ { \
+ if (this != ©) \
+ { \
+ Base::copy_assign(copy); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+ inline Derived& operator=(Derived&& source) \
+ { \
+ if (this != &static_cast<Derived&>(source)) \
+ { \
+ Base::move_assign(static_cast<Derived&&>(source)); \
+ Base::on_post_copy_or_move(); \
+ } \
+ return *this; \
+ } \
+//]
+#endif // BOOST_NO_RVALUE_REFERENCES
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//[reference__macro__container_derived_impl
+#define BOOST_TREE_NODE_CONTAINER_DERIVED_IMPL(Derived, Base) \
+ typedef typename Base::reference reference; \
+ typedef typename Base::const_reference const_reference; \
+ typedef typename Base::pointer pointer; \
+ typedef typename Base::const_pointer const_pointer; \
+ typedef typename Base::iterator iterator; \
+ typedef typename Base::const_iterator const_iterator; \
+ typedef typename Base::size_type size_type; \
+ typedef typename Base::allocator_type allocator_type; \
+ inline Derived() : Base() \
+ { \
+ } \
+ inline explicit Derived(allocator_type const& a) : Base(a) \
+ { \
+ } \
+ inline Derived(Derived const& copy) \
+ : Base(static_cast<Base const&>(copy)) \
+ { \
+ } \
+ inline Derived(Derived const& copy, allocator_type const& a) \
+ : Base(static_cast<Base const&>(copy), a) \
+ { \
+ } \
+ inline Derived(Derived& copy) \
+ : Base( \
+ static_cast<Base const&>(const_cast<Derived const&>(copy)) \
+ ) \
+ { \
+ } \
+ inline Derived(Derived& copy, allocator_type const& a) \
+ : Base( \
+ static_cast<Base const&>(const_cast<Derived const&>(copy)) \
+ , a \
+ ) \
+ { \
+ } \
+//]
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#define BOOST_TREE_NODE_CONTAINER_DERIVED_BODY(Derived, Base) \
+ BOOST_TREE_NODE_CONTAINER_DERIVED_IMPL(Derived, Base) \
+ inline Derived& operator=(Derived const& copy) \
+ { \
+ if (this != ©) \
+ { \
+ Base::operator=(const_cast<Base const&>(copy)); \
+ } \
+ return *this; \
+ } \
+ inline Derived& operator=(Derived& copy) \
+ { \
+ if (this != ©) \
+ { \
+ Base::operator=(const_cast<Base const&>(copy)); \
+ } \
+ return *this; \
+ } \
+//!
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#if defined BOOST_NO_RVALUE_REFERENCES
+#include <boost/move/move.hpp>
+#define BOOST_TREE_NODE_CONTAINER_DERIVED_BODY(Derived, Base) \
+ BOOST_TREE_NODE_CONTAINER_DERIVED_IMPL(Derived, Base) \
+ inline Derived(::boost::rv<Derived>& source) \
+ : Base(::boost::move(static_cast<Base&>(source))) \
+ { \
+ } \
+ inline Derived( \
+ ::boost::rv<Derived>& source \
+ , allocator_type const& a \
+ ) : Base(::boost::move(static_cast<Base&>(source)), a) \
+ { \
+ } \
+ inline operator ::boost::rv<Derived> const&() const \
+ { \
+ return *static_cast< ::boost::rv<Derived> const*>(this); \
+ } \
+ inline operator ::boost::rv<Derived>&() \
+ { \
+ return *static_cast< ::boost::rv<Derived>*>(this); \
+ } \
+ inline Derived& operator=(::boost::rv<Derived> const& ca_ref) \
+ { \
+ Base const& copy = static_cast<Base const&>( \
+ static_cast<Derived const&>(ca_ref) \
+ ); \
+ if (this != ©) \
+ { \
+ Base::operator=(copy); \
+ } \
+ return *this; \
+ } \
+ inline Derived& operator=(::boost::rv<Derived>& rv_ref) \
+ { \
+ if (this != &static_cast<Derived&>(rv_ref)) \
+ { \
+ Base::operator=(::boost::move(static_cast<Base&>(rv_ref))); \
+ } \
+ return *this; \
+ } \
+ inline Derived& operator=(Derived& copy) \
+ { \
+ if (this != ©) \
+ { \
+ Base::operator=( \
+ static_cast<Base const&>( \
+ const_cast<Derived const&>(copy) \
+ ) \
+ ); \
+ } \
+ return *this; \
+ } \
+//!
+#else // !defined BOOST_NO_RVALUE_REFERENCES
+//[reference__macro__container_derived_body
+#define BOOST_TREE_NODE_CONTAINER_DERIVED_BODY(Derived, Base) \
+ BOOST_TREE_NODE_CONTAINER_DERIVED_IMPL(Derived, Base) \
+ inline Derived(Derived&& source) \
+ : Base(static_cast<Base&&>(source)) \
+ { \
+ } \
+ inline Derived(Derived&& source, allocator_type const& a) \
+ : Base(static_cast<Base&&>(source), a) \
+ { \
+ } \
+ inline Derived& operator=(Derived const& copy) \
+ { \
+ if (this != ©) \
+ { \
+ Base::operator=(static_cast<Base const&>(copy)); \
+ } \
+ return *this; \
+ } \
+ inline Derived& operator=(Derived&& source) \
+ { \
+ if (this != &static_cast<Derived&>(source)) \
+ { \
+ Base::operator=(static_cast<Derived&&>(source)); \
+ } \
+ return *this; \
+ } \
+//]
+#endif // BOOST_NO_RVALUE_REFERENCES
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//[reference__macro__associative_container_derived_body
+#define BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY(Derived, Base) \
+ typedef typename Base::key_type key_type; \
+ typedef typename Base::value_type value_type; \
+ typedef typename Base::key_compare key_compare; \
+ typedef typename Base::value_compare value_compare \
+ BOOST_TREE_NODE_CONTAINER_DERIVED_BODY(Derived, Base) \
+//]
+
+#endif // BOOST_TREE_NODE_PREPROCESSOR_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/traits/binary_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/traits/binary_node.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,97 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_TRAITS_BINARY_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_TRAITS_BINARY_NODE_HPP_INCLUDED
+
+#include <boost/tree_node/traits/binary_node_fwd.hpp>
+
+//[reference__binary_node_traits
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ struct binary_node_traits
+ {
+ typedef Node node;
+ typedef typename Node::pointer node_ptr;
+ typedef typename Node::const_pointer const_node_ptr;
+
+ static const_node_ptr get_parent(const_node_ptr n);
+ static node_ptr get_parent(node_ptr n);
+ static void set_parent(node_ptr n, node_ptr p);
+ static const_node_ptr get_left(const_node_ptr n);
+ static node_ptr get_left(node_ptr n);
+ static void set_left(node_ptr n, node_ptr l);
+ static const_node_ptr get_right(const_node_ptr n);
+ static node_ptr get_right(node_ptr n);
+ static void set_right(node_ptr n, node_ptr r);
+ };
+
+ //<-
+ template <typename Node>
+ inline typename binary_node_traits<Node>::const_node_ptr
+ binary_node_traits<Node>::get_parent(const_node_ptr n)
+ {
+ return n->get_parent_ptr();
+ }
+
+ template <typename Node>
+ inline typename binary_node_traits<Node>::node_ptr
+ binary_node_traits<Node>::get_parent(node_ptr n)
+ {
+ return n->get_parent_ptr();
+ }
+
+ template <typename Node>
+ inline void binary_node_traits<Node>::set_parent(node_ptr n, node_ptr p)
+ {
+ n->_set_parent_ptr(p);
+ }
+
+ template <typename Node>
+ inline typename binary_node_traits<Node>::const_node_ptr
+ binary_node_traits<Node>::get_left(const_node_ptr n)
+ {
+ return n->get_left_child_ptr();
+ }
+
+ template <typename Node>
+ inline typename binary_node_traits<Node>::node_ptr
+ binary_node_traits<Node>::get_left(node_ptr n)
+ {
+ return n->get_left_child_ptr();
+ }
+
+ template <typename Node>
+ inline void binary_node_traits<Node>::set_left(node_ptr n, node_ptr l)
+ {
+ n->_set_left_child_ptr(l);
+ }
+
+ template <typename Node>
+ inline typename binary_node_traits<Node>::const_node_ptr
+ binary_node_traits<Node>::get_right(const_node_ptr n)
+ {
+ return n->get_right_child_ptr();
+ }
+
+ template <typename Node>
+ inline typename binary_node_traits<Node>::node_ptr
+ binary_node_traits<Node>::get_right(node_ptr n)
+ {
+ return n->get_right_child_ptr();
+ }
+
+ template <typename Node>
+ inline void binary_node_traits<Node>::set_right(node_ptr n, node_ptr r)
+ {
+ n->_set_right_child_ptr(r);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_BINARY_NODE_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/traits/binary_node_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/traits/binary_node_fwd.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,16 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_TRAITS_BINARY_NODE_FWD_HPP_INCLUDED
+#define BOOST_TREE_NODE_TRAITS_BINARY_NODE_FWD_HPP_INCLUDED
+
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ struct binary_node_traits;
+}} // namespace boost::tree_node
+
+#endif // BOOST_TREE_NODE_TRAITS_BINARY_NODE_FWD_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/traits/red_black_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/traits/red_black_node.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,63 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_TRAITS_RED_BLACK_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_TRAITS_RED_BLACK_NODE_HPP_INCLUDED
+
+#include <boost/tree_node/traits/red_black_node_fwd.hpp>
+
+//[reference__red_black_node_traits
+namespace boost { namespace tree_node {
+
+ template <typename NodeTraits>
+ struct red_black_node_traits : NodeTraits
+ {
+ typedef bool color;
+
+ static color get_color(typename NodeTraits::const_node_ptr n);
+ static void set_color(typename NodeTraits::node_ptr n, color c);
+ static color black();
+ static color red();
+ };
+
+ //<-
+ template <typename NodeTraits>
+ inline typename red_black_node_traits<NodeTraits>::color
+ red_black_node_traits<NodeTraits>::get_color(
+ typename NodeTraits::const_node_ptr n
+ )
+ {
+ return get(*n, red_flag_key());
+ }
+
+ template <typename NodeTraits>
+ inline void
+ red_black_node_traits<NodeTraits>::set_color(
+ typename NodeTraits::node_ptr n
+ , typename red_black_node_traits<NodeTraits>::color c
+ )
+ {
+ put(*n, red_flag_key(), c);
+ }
+
+ template <typename NodeTraits>
+ inline typename red_black_node_traits<NodeTraits>::color
+ red_black_node_traits<NodeTraits>::black()
+ {
+ return false;
+ }
+
+ template <typename NodeTraits>
+ inline typename red_black_node_traits<NodeTraits>::color
+ red_black_node_traits<NodeTraits>::red()
+ {
+ return true;
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_TRAITS_RED_BLACK_NODE_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/traits/red_black_node_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/traits/red_black_node_fwd.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,16 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_TRAITS_RED_BLACK_NODE_FWD_HPP_INCLUDED
+#define BOOST_TREE_NODE_TRAITS_RED_BLACK_NODE_FWD_HPP_INCLUDED
+
+namespace boost { namespace tree_node {
+
+ template <typename NodeTraits>
+ struct red_black_node_traits;
+}} // namespace boost::tree_node
+
+#endif // BOOST_TREE_NODE_TRAITS_RED_BLACK_NODE_FWD_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/traversal_state.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/traversal_state.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,24 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_TRAVERSAL_STATE_HPP
+#define BOOST_TREE_NODE_TRAVERSAL_STATE_HPP
+
+//[reference__traversal_state
+namespace boost { namespace tree_node {
+
+ enum traversal_state
+ {
+ no_traversal
+ , pre_order_traversal
+ , post_order_traversal
+ , breadth_first_traversal
+ , in_order_traversal
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_TRAVERSAL_STATE_HPP
+
Added: sandbox/tree_node/boost/tree_node/with_accumulation.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_accumulation.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,2519 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_WITH_ACCUMULATION_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_ACCUMULATION_HPP_INCLUDED
+
+#include <boost/tree_node/with_accumulation_fwd.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/accumulators/framework/accumulator_set.hpp>
+#include <boost/accumulators/framework/extractor.hpp>
+#include <boost/accumulators/framework/features.hpp>
+#include <boost/utility/value_init.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/key/accumulation.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#include <boost/tree_node/intrinsic/get_keys.hpp>
+#include <boost/tree_node/intrinsic/at_key.hpp>
+#include <boost/tree_node/iterator/breadth_first_descendant.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/assert.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/mpl/vector.hpp>
+#include <boost/move/move.hpp>
+#include <boost/type_traits/is_pod.hpp>
+
+namespace boost {
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename AccumulationKey
+ >
+ struct is_POD<
+ ::boost::tree_node::with_accumulation<
+ BaseGenerator
+ , T1
+ , T2
+ , AccumulationKey
+ >
+ > : ::boost::false_type
+ {
+ };
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename AccumulationKey
+ >
+ struct is_pod<
+ ::boost::tree_node::with_accumulation<
+ BaseGenerator
+ , T1
+ , T2
+ , AccumulationKey
+ >
+ > : ::boost::false_type
+ {
+ };
+} // namespace boost
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ class with_accumulation_base
+ : public
+ //[reference__with_accumulation_base__bases
+ ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ //]
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ , public accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+#endif
+ , private ::boost::noncopyable
+ {
+ friend struct tree_node_base<Derived>;
+
+ typedef with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ self;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ private:
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<Value>
+ , result_of::value_at_key<self,Key>
+ , ::boost::mpl::identity<Value>
+ >::type
+ AccumulationValue;
+
+ AccumulationValue _accumulation;
+
+ protected:
+ //[reference__with_accumulation_base__derived_copy_ctor
+ with_accumulation_base(Derived const& copy);
+ //]
+
+ //[reference__with_accumulation_base__derived_copy_ctor_w_allocator
+ with_accumulation_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ );
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_accumulation_base(BOOST_RV_REF(Derived) source);
+
+ with_accumulation_base(
+ BOOST_RV_REF(Derived) source
+ , typename traits::allocator_reference allocator
+ );
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_accumulation_base__emplacement_ctor
+ template <typename ...Args>
+ explicit with_accumulation_base(Args&& ...args);
+ //]
+
+ //[reference__with_accumulation_base__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit with_accumulation_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_WITH_ACCUMULATION_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ , _accumulation( \
+ IncludesRoot::value \
+ ? ::boost::initialized_value \
+ : ::boost::accumulators::extractor<Tag>()( \
+ ::boost::accumulators::accumulator_set< \
+ AccumulationValue \
+ , ::boost::accumulators::features<Tag> \
+ >() \
+ ) \
+ ) \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_ACCUMULATION_MACRO
+ , (with_accumulation_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_ACCUMULATION_MACRO
+
+#define BOOST_TREE_NODE_WITH_ACCUMULATION_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER(z, n, Tuple) \
+ , _accumulation( \
+ IncludesRoot::value \
+ ? ::boost::initialized_value \
+ : ::boost::accumulators::extractor<Tag>()( \
+ ::boost::accumulators::accumulator_set< \
+ AccumulationValue \
+ , ::boost::accumulators::features<Tag> \
+ >() \
+ ) \
+ ) \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_ACCUMULATION_MACRO
+ , (with_accumulation_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_ACCUMULATION_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~with_accumulation_base();
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ void copy_assign(Derived const& copy);
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ void on_post_emplacement_construct();
+
+ void on_post_copy_or_move();
+
+ template <typename K>
+ void on_post_modify_value_impl(K const& key);
+
+ void on_post_modify_value_impl(Key const& key);
+
+ template <typename K>
+ void on_post_propagate_value_impl(K const& key);
+
+ void on_post_propagate_value_impl(Key const& key);
+
+ template <typename K>
+ void on_post_propagate_value_once_impl(K const& key);
+
+ void on_post_propagate_value_once_impl(Key const& key);
+
+ template <typename BooleanIntegralConstant>
+ void
+ on_post_inserted_impl(
+ iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ );
+
+ void on_post_erase_impl();
+
+ void on_post_clear_impl();
+
+ void on_post_rotate_left_impl();
+
+ void on_post_rotate_right_impl();
+
+ public:
+ //[reference__with_accumulation_base__key_value_operator
+//<-
+#if 0
+//->
+ typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<Value>
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , Key
+ >
+ , ::boost::mpl::identity<Value>
+ >::type const&
+//<-
+#endif
+ AccumulationValue const&
+//->
+ operator[](
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const&
+ )
+ const;
+ //]
+
+ private:
+ void
+ _set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const&
+ );
+
+ void _update();
+
+ static void
+ _update(
+ pointer p
+ , accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const&
+ );
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::with_accumulation_base(Derived const& copy)
+ : super_t(copy)
+ , _accumulation(
+ static_cast<self const&>(copy)[
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ ]
+ )
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::with_accumulation_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ ) : super_t(copy, allocator)
+ , _accumulation(
+ static_cast<self const&>(copy)[
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ ]
+ )
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::with_accumulation_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ ) : super_t(source)
+#else
+ Derived&& source
+ ) : super_t(static_cast<Derived&&>(source))
+#endif
+ , _accumulation(
+ static_cast<self&&>(source)[
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ ]
+ )
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::with_accumulation_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ , typename traits::allocator_reference allocator
+ ) : super_t(source, allocator)
+#else
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ ) : super_t(static_cast<Derived&&>(source), allocator)
+#endif
+ , _accumulation(
+ static_cast<self&&>(source)[
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ ]
+ )
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ template <typename ...Args>
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::with_accumulation_base(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ , _accumulation(
+ IncludesRoot::value
+ ? ::boost::initialized_value
+ : ::boost::accumulators::extractor<Tag>()(
+ ::boost::accumulators::accumulator_set<
+ AccumulationValue
+ , ::boost::accumulators::features<Tag>
+ >()
+ )
+ )
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ template <typename ...Args>
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::with_accumulation_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ , _accumulation(
+ IncludesRoot::value
+ ? ::boost::initialized_value
+ : ::boost::accumulators::extractor<Tag>()(
+ ::boost::accumulators::accumulator_set<
+ AccumulationValue
+ , ::boost::accumulators::features<Tag>
+ >()
+ )
+ )
+ {
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::~with_accumulation_base()
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesRoot
+ , Value
+ >::copy_assign(Derived const& copy)
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::move_assign(BOOST_RV_REF(Derived) source)
+ {
+#if defined BOOST_NO_RVALUE_REFERENCES
+ super_t::move_assign(source);
+#else
+ super_t::move_assign(static_cast<Derived&&>(source));
+#endif
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy)
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ {
+ super_t::copy_assign(copy);
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_emplacement_construct()
+ {
+ super_t::on_post_emplacement_construct();
+
+ if (IncludesRoot::value)
+ {
+ self::_accumulation = get<Key>(*this->get_derived());
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_copy_or_move()
+ {
+ super_t::on_post_copy_or_move();
+ this->_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ template <typename K>
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_modify_value_impl(K const& key)
+ {
+ super_t::on_post_modify_value_impl(key);
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_modify_value_impl(Key const& key)
+ {
+ super_t::on_post_modify_value_impl(key);
+
+ if (IncludesRoot::value)
+ {
+ this->_update();
+ }
+ else if (pointer p = this->get_parent_ptr())
+ {
+ static_cast<self*>(p)->_update();
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ template <typename K>
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_propagate_value_impl(K const& key)
+ {
+ super_t::on_post_propagate_value_impl(key);
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_propagate_value_impl(Key const& key)
+ {
+ super_t::on_post_propagate_value_impl(key);
+
+ if (IncludesRoot::value)
+ {
+ this->_update();
+ }
+ else if (pointer p = this->get_parent_ptr())
+ {
+ static_cast<self*>(p)->_update();
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ template <typename K>
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_propagate_value_once_impl(K const& key)
+ {
+ super_t::on_post_propagate_value_once_impl(key);
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_propagate_value_once_impl(Key const& key)
+ {
+ super_t::on_post_propagate_value_once_impl(key);
+
+ if (IncludesRoot::value)
+ {
+ this->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ }
+
+ self* p = this->get_parent_ptr();
+
+ BOOST_ASSERT_MSG(
+ p
+ , "Do not call on_post_propagate_value_once() on root."
+ );
+ p->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+
+ if ((p = p->get_parent_ptr()))
+ {
+ p->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ template <typename BooleanIntegralConstant>
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_inserted_impl(
+ iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ )
+ {
+ super_t::on_post_inserted_impl(
+ position
+ , invalidates_sibling_positions
+ );
+ static_cast<self*>(this->get_parent_ptr())->_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_erase_impl()
+ {
+ super_t::on_post_erase_impl();
+ this->_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_clear_impl()
+ {
+ super_t::on_post_clear_impl();
+ this->_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_rotate_left_impl()
+ {
+ super_t::on_post_rotate_left_impl();
+ this->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ static_cast<self*>(this->get_parent_ptr())->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ this->on_post_propagate_value_once(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::on_post_rotate_right_impl()
+ {
+ super_t::on_post_rotate_right_impl();
+ this->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ static_cast<self*>(this->get_parent_ptr())->_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ this->on_post_propagate_value_once(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::AccumulationValue const&
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::operator[](
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const&
+ ) const
+ {
+ return self::_accumulation;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::_set_accumulation(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const&
+ )
+ {
+ ::boost::accumulators::accumulator_set<
+ AccumulationValue
+ , ::boost::accumulators::features<Tag>
+ > acc;
+
+ if (IncludesRoot::value)
+ {
+ acc(get<Key>(*this->get_derived()));
+ }
+
+ if (IncludesAllDescendants::value)
+ {
+ for (
+ ::boost::tree_node::breadth_first_descendant_iterator<
+ Derived const
+ > c_itr(*this->get_derived());
+ c_itr;
+ ++c_itr
+ )
+ {
+ acc(get<Key>(::boost::tree_node::dereference_iterator(c_itr)));
+ }
+ }
+ else
+ {
+ const_iterator c_end = this->end();
+
+ for (const_iterator c_itr = this->begin(); c_itr != c_end; ++c_itr)
+ {
+ acc(get<Key>(::boost::tree_node::dereference_iterator(c_itr)));
+ }
+ }
+
+ self::_accumulation = ::boost::accumulators::extractor<
+ Tag
+ >()(acc);
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::_update()
+ {
+ self::_update(
+ this->get_derived()
+ , accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ this->on_post_propagate_value(
+ accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >()
+ );
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ void
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::_update(
+ pointer p
+ , accumulation_key<
+ Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& key
+ )
+ {
+ do
+ {
+ static_cast<self*>(p)->_set_accumulation(key);
+ }
+ while ((p = p->get_parent_ptr()));
+ }
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ , typename AccumulationKey
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<
+ accumulation_key<Key,Tag,IncludesAllDescendants,IncludesRoot,Value>
+ , AccumulationKey
+ >
+ , typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<Value>
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , Key
+ >
+ , ::boost::mpl::identity<Value>
+ >::type const&
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ , AccumulationKey const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ , typename AccumulationKey
+ >
+ inline typename ::boost::lazy_disable_if<
+ typename ::boost::mpl::eval_if<
+ ::std::tr1::is_base_of<accumulation_key_base,AccumulationKey>
+ , ::std::tr1::is_same<
+ accumulation_key<Key,Tag,IncludesAllDescendants,IncludesRoot,Value>
+ , AccumulationKey
+ >
+ , ::boost::mpl::true_
+ >::type
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , AccumulationKey
+ >
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ , AccumulationKey const& key
+ )
+ {
+ return get(
+ static_cast<
+ typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t const&
+ >(node)
+ , key
+ );
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ , typename ExplicitKey
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::eval_if<
+ ::std::tr1::is_base_of<accumulation_key_base,ExplicitKey>
+ , ::boost::mpl::false_
+ , ::boost::mpl::eval_if<
+ ::std::tr1::is_same<ExplicitKey,Key>
+ , ::boost::mpl::false_
+ , result_of::has_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , ExplicitKey
+ >
+ >
+ >::type
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const
+ , ExplicitKey
+ >
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ , ExplicitKey const& key
+ )
+ {
+ return get(
+ static_cast<
+ typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t const&
+ >(node)
+ , key
+ );
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ , typename ExplicitKey
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::eval_if<
+ ::std::tr1::is_base_of<accumulation_key_base,ExplicitKey>
+ , ::boost::mpl::false_
+ , ::boost::mpl::eval_if<
+ ::std::tr1::is_same<ExplicitKey,Key>
+ , ::boost::mpl::false_
+ , result_of::has_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , ExplicitKey
+ >
+ >
+ >::type
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , ExplicitKey
+ >
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >& node
+ , ExplicitKey const& key
+ )
+ {
+ return get(
+ static_cast<
+ typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t&
+ >(node)
+ , key
+ );
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ , typename ExplicitKey
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::eval_if<
+ ::std::tr1::is_base_of<accumulation_key_base,ExplicitKey>
+ , ::boost::mpl::false_
+ , ::std::tr1::is_same<ExplicitKey,Key>
+ >::type
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const
+ , ExplicitKey
+ >
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ , ExplicitKey const& key
+ )
+ {
+ return get(
+ static_cast<
+ typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t const&
+ >(node)
+ , key
+ );
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ , typename ExplicitKey
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::eval_if<
+ ::std::tr1::is_base_of<accumulation_key_base,ExplicitKey>
+ , ::boost::mpl::false_
+ , ::std::tr1::is_same<ExplicitKey,Key>
+ >::type
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , ExplicitKey
+ >
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >& node
+ , ExplicitKey const& key
+ )
+ {
+ return get(
+ static_cast<
+ typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t&
+ >(node)
+ , key
+ );
+ }
+
+ template <
+ typename AccumulationKey
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<
+ accumulation_key<Key,Tag,IncludesAllDescendants,IncludesRoot,Value>
+ , AccumulationKey
+ >
+ , typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<Value>
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , Key
+ >
+ , ::boost::mpl::identity<Value>
+ >::type const&
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ )
+ {
+ return node[AccumulationKey()];
+ }
+
+ template <
+ typename AccumulationKey
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline typename ::boost::lazy_disable_if<
+ typename ::boost::mpl::eval_if<
+ ::std::tr1::is_base_of<accumulation_key_base,AccumulationKey>
+ , ::std::tr1::is_same<
+ accumulation_key<Key,Tag,IncludesAllDescendants,IncludesRoot,Value>
+ , AccumulationKey
+ >
+ , ::boost::mpl::true_
+ >::type
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , AccumulationKey
+ >
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ )
+ {
+ return get<AccumulationKey>(
+ static_cast<
+ typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t const&
+ >(node)
+ );
+ }
+
+ template <
+ typename ExplicitKey
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::eval_if<
+ ::std::tr1::is_base_of<accumulation_key_base,ExplicitKey>
+ , ::boost::mpl::false_
+ , ::boost::mpl::eval_if<
+ ::std::tr1::is_same<ExplicitKey,Key>
+ , ::boost::mpl::false_
+ , result_of::has_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , ExplicitKey
+ >
+ >
+ >::type
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const
+ , ExplicitKey
+ >
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ )
+ {
+ return get<ExplicitKey>(
+ static_cast<
+ typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t const&
+ >(node)
+ );
+ }
+
+ template <
+ typename ExplicitKey
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::eval_if<
+ ::std::tr1::is_base_of<accumulation_key_base,ExplicitKey>
+ , ::boost::mpl::false_
+ , ::boost::mpl::eval_if<
+ ::std::tr1::is_same<ExplicitKey,Key>
+ , ::boost::mpl::false_
+ , result_of::has_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , ExplicitKey
+ >
+ >
+ >::type
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , ExplicitKey
+ >
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >& node
+ )
+ {
+ return get<ExplicitKey>(
+ static_cast<
+ typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t&
+ >(node)
+ );
+ }
+
+ template <
+ typename ExplicitKey
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::eval_if<
+ ::std::tr1::is_base_of<accumulation_key_base,ExplicitKey>
+ , ::boost::mpl::false_
+ , ::std::tr1::is_same<ExplicitKey,Key>
+ >::type
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const
+ , ExplicitKey
+ >
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ )
+ {
+ return get<Key>(
+ static_cast<
+ typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t const&
+ >(node)
+ );
+ }
+
+ template <
+ typename ExplicitKey
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ inline typename ::boost::lazy_enable_if<
+ typename ::boost::mpl::eval_if<
+ ::std::tr1::is_base_of<accumulation_key_base,ExplicitKey>
+ , ::boost::mpl::false_
+ , ::std::tr1::is_same<ExplicitKey,Key>
+ >::type
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , ExplicitKey
+ >
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >& node
+ )
+ {
+ return get<Key>(
+ static_cast<
+ typename with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >::super_t&
+ >(node)
+ );
+ }
+}} // namespace boost::tree_node
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+namespace boost { namespace tree_node { namespace result_of {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ struct has_key_impl<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , accumulation_key<Key,Tag,IncludesAllDescendants,IncludesRoot,Value>
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ struct get_keys_impl<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ > : ::boost::mpl::vector1<
+ accumulation_key<Key,Tag,IncludesAllDescendants,IncludesRoot,Value>
+ >
+ {
+ };
+
+ template <
+ typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ struct at_key_impl<
+ accumulation_key<Key,Tag,IncludesAllDescendants,IncludesRoot,Value>
+ >
+ {
+ template <typename Node>
+ struct apply : apply<typename Node::super_t>
+ {
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ struct apply<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ > : ::boost::mpl::eval_if<
+ ::std::tr1::is_void<Value>
+ , value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , Key
+ >
+ , ::boost::mpl::identity<Value>
+ >
+ {
+ };
+ };
+}}} // namespace boost::tree_node::result_of
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+//[reference__with_accumulation_base_gen
+namespace boost { namespace tree_node {
+
+ template <
+ typename BaseGenerator
+ , typename AccumulationKey = default_accumulation_key
+ >
+ struct with_accumulation_base_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , typename AccumulationKey::key
+ , typename AccumulationKey::tag
+ , typename AccumulationKey::includes_all_descendants
+ , typename AccumulationKey::includes_root
+ , typename AccumulationKey::value
+ >
+ type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename AccumulationKey
+ >
+ struct with_accumulation
+ : public
+ //[reference__with_accumulation__bases
+ with_accumulation_base<
+ with_accumulation<
+ BaseGenerator
+ , T1
+ , T2
+ , AccumulationKey
+ >
+ , BaseGenerator
+ , T1
+ , T2
+ , typename AccumulationKey::key
+ , typename AccumulationKey::tag
+ , typename AccumulationKey::includes_all_descendants
+ , typename AccumulationKey::includes_root
+ , typename AccumulationKey::value
+ >
+ //]
+ {
+ //[reference__with_accumulator__super_t
+ typedef with_accumulation_base<
+ with_accumulation
+ , BaseGenerator
+ , T1
+ , T2
+ , typename AccumulationKey::key
+ , typename AccumulationKey::tag
+ , typename AccumulationKey::includes_all_descendants
+ , typename AccumulationKey::includes_root
+ , typename AccumulationKey::value
+ >
+ super_t;
+ //]
+
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(with_accumulation, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_accumulation__emplacement_ctor
+ template <typename ...Args>
+ explicit with_accumulation(Args&& ...args);
+ //]
+
+ //[reference__with_accumulation__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit with_accumulation(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (with_accumulation, super_t)
+ )
+
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF
+ , (with_accumulation, super_t)
+ )
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename AccumulationKey
+ >
+ template <typename ...Args>
+ inline with_accumulation<
+ BaseGenerator
+ , T1
+ , T2
+ , AccumulationKey
+ >::with_accumulation(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ {
+ super_t::on_post_emplacement_construct();
+ }
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename AccumulationKey
+ >
+ template <typename ...Args>
+ inline with_accumulation<
+ BaseGenerator
+ , T1
+ , T2
+ , AccumulationKey
+ >::with_accumulation(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ {
+ super_t::on_post_emplacement_construct();
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+}} // namespace boost::tree_node
+
+//[reference__with_accumulation_gen
+namespace boost { namespace tree_node {
+
+ template <
+ typename BaseGenerator
+ , typename AccumulationKey = default_accumulation_key
+ >
+ struct with_accumulation_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_accumulation<BaseGenerator,T1,T2,AccumulationKey>
+ type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_WITH_ACCUMULATION_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/with_accumulation_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_accumulation_fwd.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,158 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_WITH_ACCUMULATION_FWD_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_ACCUMULATION_FWD_HPP_INCLUDED
+
+#include <boost/config.hpp>
+
+#if defined BOOST_NO_SFINAE
+#error boost::tree_node::with_accumulation requires working boost::enable_if.
+#endif
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#error boost::tree_node::with_accumulation uses Boost.Accumulators,
+#error which requires working partial template specialization.
+#endif
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/identity.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/utility/enable_if.hpp>
+#include <boost/tree_node/key/accumulation.hpp>
+#include <boost/tree_node/intrinsic/value_at_key.hpp>
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ class with_accumulation_base;
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2 = void
+ , typename AccumulationKey = default_accumulation_key
+ >
+ struct with_accumulation;
+}} // namespace boost::tree_node
+
+//[reference__with_accumulation_base__at_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ , typename AccumulationKey
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<
+ accumulation_key<Key,Tag,IncludesAllDescendants,IncludesRoot,Value>
+ , AccumulationKey
+ >
+ , typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<Value>
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , Key
+ >
+ , ::boost::mpl::identity<Value>
+ >::type const&
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ , AccumulationKey const& key
+ );
+
+ template <
+ typename AccumulationKey
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Key
+ , typename Tag
+ , typename IncludesAllDescendants
+ , typename IncludesRoot
+ , typename Value
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<
+ accumulation_key<Key,Tag,IncludesAllDescendants,IncludesRoot,Value>
+ , AccumulationKey
+ >
+ , typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<Value>
+ , result_of::value_at_key<
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >
+ , Key
+ >
+ , ::boost::mpl::identity<Value>
+ >::type const&
+ >::type
+ get(
+ with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ > const& node
+ );
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_WITH_ACCUMULATION_FWD_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/with_count.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_count.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,922 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_WITH_COUNT_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_COUNT_HPP_INCLUDED
+
+#include <cstddef>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/utility/value_init.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/with_count_fwd.hpp>
+#include <boost/tree_node/key/count.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#include <boost/tree_node/intrinsic/get_keys.hpp>
+#include <boost/tree_node/intrinsic/at_key.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/mpl/vector.hpp>
+#include <boost/move/move.hpp>
+#include <boost/type_traits/is_pod.hpp>
+
+namespace boost {
+
+ template <typename BaseGenerator, typename T1, typename T2, typename Count>
+ struct is_POD<
+ ::boost::tree_node::with_count<BaseGenerator,T1,T2,Count>
+ > : ::boost::false_type
+ {
+ };
+
+ template <typename BaseGenerator, typename T1, typename T2, typename Count>
+ struct is_pod<
+ ::boost::tree_node::with_count<BaseGenerator,T1,T2,Count>
+ > : ::boost::false_type
+ {
+ };
+} // namespace boost
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ class with_count_base
+ : public
+ //[reference__with_count_base__bases
+ ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ //]
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ , public count_key
+#endif
+ , private ::boost::noncopyable
+ {
+ friend struct tree_node_base<Derived>;
+
+ typedef with_count_base<Derived,BaseGenerator,T1,T2,Count>
+ self;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ super_t;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ //[reference__with_count_base__traits
+ struct traits : super_t::traits
+ {
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Count>
+ , size_type
+ , Count
+ >::type
+ count;
+ };
+ //]
+
+ private:
+ typename traits::count _count;
+
+ protected:
+ //[reference__with_count_base__derived_copy_ctor
+ with_count_base(Derived const& copy);
+ //]
+
+ //[reference__with_count_base__derived_copy_ctor_w_allocator
+ with_count_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ );
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_count_base(BOOST_RV_REF(Derived) source);
+
+ with_count_base(
+ BOOST_RV_REF(Derived) source
+ , typename traits::allocator_reference allocator
+ );
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_count_base__emplacement_ctor
+ template <typename ...Args>
+ explicit with_count_base(Args&& ...args);
+ //]
+
+ //[reference__with_count_base__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit with_count_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_WITH_COUNT_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ , _count(::boost::initialized_value) \
+ { \
+ ++this->_count; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_COUNT_MACRO
+ , (with_count_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_COUNT_MACRO
+
+#define BOOST_TREE_NODE_WITH_COUNT_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER(z, n, Tuple) \
+ , _count(::boost::initialized_value) \
+ { \
+ ++this->_count; \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_COUNT_MACRO
+ , (with_count_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_COUNT_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~with_count_base();
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ void copy_assign(Derived const& copy);
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ void on_post_copy_or_move();
+
+ template <typename BooleanIntegralConstant>
+ void
+ on_post_inserted_impl(
+ iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ );
+
+ void on_post_erase_impl();
+
+ void on_post_clear_impl();
+
+ void on_post_rotate_left_impl();
+
+ void on_post_rotate_right_impl();
+
+ public:
+ //[reference__with_count_base__key_value_operator
+ typename traits::count const& operator[](count_key const&) const;
+ //]
+
+ private:
+ void _shallow_update();
+
+ static typename traits::count
+ _get_count(const_iterator c_itr, const_iterator c_end);
+
+ static void
+ _update_less_count(
+ pointer p
+ , typename traits::count const& difference
+ );
+
+ static void
+ _update_greater_count(
+ pointer p
+ , typename traits::count const& difference
+ );
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::with_count_base(
+ Derived const& copy
+ ) : super_t(copy), _count(copy._count)
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::with_count_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ ) : super_t(copy, allocator), _count(copy._count)
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::with_count_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ ) : super_t(source)
+#else
+ Derived&& source
+ ) : super_t(static_cast<Derived&&>(source))
+#endif
+ , _count(source._count)
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::with_count_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ , typename traits::allocator_reference allocator
+ ) : super_t(source, allocator)
+#else
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ ) : super_t(static_cast<Derived&&>(source), allocator)
+#endif
+ , _count(source._count)
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ template <typename ...Args>
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::with_count_base(
+ Args&& ...args
+ ) : super_t(::boost::forward<Args>(args)...)
+ , _count(::boost::initialized_value)
+ {
+ ++this->_count;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ template <typename ...Args>
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::with_count_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ , _count(::boost::initialized_value)
+ {
+ ++this->_count;
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::~with_count_base()
+ {
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::copy_assign(
+ Derived const& copy
+ )
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::move_assign(
+ BOOST_RV_REF(Derived) source
+ )
+ {
+#if defined BOOST_NO_RVALUE_REFERENCES
+ super_t::move_assign(source);
+#else
+ super_t::move_assign(static_cast<Derived&&>(source));
+#endif
+// this->_count = source._count;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::copy_assign(
+ BOOST_COPY_ASSIGN_REF(Derived) copy
+ )
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ {
+ super_t::copy_assign(copy);
+// this->_count = copy._count;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::on_post_copy_or_move()
+ {
+ super_t::on_post_copy_or_move();
+ this->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ template <typename BooleanIntegralConstant>
+ inline void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::on_post_inserted_impl(
+ iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ )
+ {
+ super_t::on_post_inserted_impl(
+ position
+ , invalidates_sibling_positions
+ );
+ self::_update_greater_count(this->get_derived(), this->_count);
+ this->on_post_propagate_value(count_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::on_post_erase_impl()
+ {
+ super_t::on_post_erase_impl();
+ this->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::on_post_clear_impl()
+ {
+ super_t::on_post_clear_impl();
+ self::_update_less_count(this->get_derived(), --this->_count);
+ ++(this->_count = ::boost::initialized_value);
+ this->on_post_propagate_value(count_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::on_post_rotate_left_impl()
+ {
+ super_t::on_post_rotate_left_impl();
+
+ pointer p = this->get_parent_ptr();
+
+ if (p->get_right_child_ptr())
+ {
+ this->_count -= p->get_right_child_ptr()->_count;
+ }
+
+ if (this->get_left_child_ptr())
+ {
+ p->_count += this->get_left_child_ptr()->_count;
+ }
+
+ --this->_count;
+ ++p->_count;
+ this->on_post_propagate_value_once(count_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::on_post_rotate_right_impl()
+ {
+ super_t::on_post_rotate_right_impl();
+
+ pointer p = this->get_parent_ptr();
+
+ if (pointer l = p->get_left_child_ptr())
+ {
+ this->_count -= p->get_left_child_ptr()->_count;
+ }
+
+ if (this->get_right_child_ptr())
+ {
+ p->_count += this->get_right_child_ptr()->_count;
+ }
+
+ --this->_count;
+ ++p->_count;
+ this->on_post_propagate_value_once(count_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline typename with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::traits::count const&
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>::operator[](
+ count_key const&
+ ) const
+ {
+ return this->_count;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ void with_count_base<Derived,BaseGenerator,T1,T2,Count>::_shallow_update()
+ {
+ typename traits::count new_count = self::_get_count(
+ this->begin()
+ , this->end()
+ );
+
+ if (++new_count < this->_count)
+ {
+ self::_update_less_count(
+ this->get_derived()
+ , this->_count - new_count
+ );
+ this->_count = new_count;
+ this->on_post_propagate_value(count_key());
+ }
+ else if (this->_count < new_count)
+ {
+ self::_update_greater_count(
+ this->get_derived()
+ , new_count - this->_count
+ );
+ this->_count = new_count;
+ this->on_post_propagate_value(count_key());
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ typename with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::traits::count
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::_get_count(const_iterator c_itr, const_iterator c_end)
+ {
+ typename traits::count result = ::boost::initialized_value;
+
+ while (c_itr != c_end)
+ {
+ result += ::boost::tree_node::dereference_iterator(
+ c_itr
+ )._count;
+ ++c_itr;
+ }
+
+ return result;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::_update_less_count(
+ pointer p
+ , typename traits::count const& difference
+ )
+ {
+ while ((p = p->get_parent_ptr()))
+ {
+ p->_count -= difference;
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ void
+ with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::_update_greater_count(
+ pointer p
+ , typename traits::count const& difference
+ )
+ {
+ while ((p = p->get_parent_ptr()))
+ {
+ p->_count += difference;
+ }
+ }
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline typename with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::traits::count const&
+ get(
+ with_count_base<Derived,BaseGenerator,T1,T2,Count> const& node
+ , count_key const& key
+ )
+ {
+ return node[key];
+ }
+
+#if !defined BOOST_NO_SFINAE
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,count_key>
+ , typename with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::traits::count const&
+ >::type
+ get(with_count_base<Derived,BaseGenerator,T1,T2,Count> const& node)
+ {
+ return node[count_key()];
+ }
+#endif // BOOST_NO_SFINAE
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node { namespace result_of {
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ struct has_key_impl<
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>
+ , count_key
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ struct get_keys_impl<
+ with_count_base<Derived,BaseGenerator,T1,T2,Count>
+ > : ::boost::mpl::vector1<count_key>
+ {
+ };
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <>
+ struct at_key_impl<count_key>
+ {
+ template <typename Node>
+ struct apply
+ {
+ typedef typename Node::traits::count const& type;
+ };
+ };
+}}} // namespace boost::tree_node::result_of
+
+//[reference__with_count_base_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename Count = void>
+ struct with_count_base_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_count_base<Derived,BaseGenerator,T1,T2,Count> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename T1, typename T2, typename Count>
+ struct with_count
+ : public
+ //[reference__with_count__bases
+ with_count_base<
+ with_count<BaseGenerator,T1,T2,Count>
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >
+ //]
+ {
+ typedef with_count_base<with_count,BaseGenerator,T1,T2,Count>
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(with_count, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_count__emplacement_ctor
+ template <typename ...Args>
+ explicit with_count(Args&& ...args);
+ //]
+
+ //[reference__with_count__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit with_count(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (with_count, super_t)
+ )
+
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF
+ , (with_count, super_t)
+ )
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename BaseGenerator, typename T1, typename T2, typename Count>
+ template <typename ...Args>
+ inline with_count<BaseGenerator,T1,T2,Count>::with_count(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ {
+ super_t::on_post_emplacement_construct();
+ }
+
+ template <typename BaseGenerator, typename T1, typename T2, typename Count>
+ template <typename ...Args>
+ inline with_count<BaseGenerator,T1,T2,Count>::with_count(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ {
+ super_t::on_post_emplacement_construct();
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+}} // namespace boost::tree_node
+
+//[reference__with_count_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename Count = void>
+ struct with_count_gen
+ {
+ template <typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_count<BaseGenerator,T1,T2,Count> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_WITH_COUNT_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/with_count_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_count_fwd.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,88 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_WITH_COUNT_FWD_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_COUNT_FWD_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/tree_node/key/count.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#endif
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ class with_count_base;
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2 = void
+ , typename Count = void
+ >
+ struct with_count;
+}} // namespace boost::tree_node
+
+//[reference__with_count_base__at_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ typename with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::traits::count const&
+ get(
+ with_count_base<Derived,BaseGenerator,T1,T2,Count> const& node
+ , count_key const& key
+ );
+
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Count
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,count_key>
+ , typename with_count_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Count
+ >::traits::count const&
+ >::type
+ get(with_count_base<Derived,BaseGenerator,T1,T2,Count> const& node);
+//<-
+#endif // BOOST_NO_SFINAE
+//->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_WITH_COUNT_FWD_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/with_height.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_height.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,916 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_WITH_HEIGHT_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_HEIGHT_HPP_INCLUDED
+
+#include <cstddef>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/utility/value_init.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/with_height_fwd.hpp>
+#include <boost/tree_node/key/height.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#include <boost/tree_node/intrinsic/get_keys.hpp>
+#include <boost/tree_node/intrinsic/at_key.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/mpl/vector.hpp>
+#include <boost/move/move.hpp>
+#include <boost/type_traits/is_pod.hpp>
+
+namespace boost {
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ struct is_POD<
+ ::boost::tree_node::with_height<BaseGenerator,T1,T2,Height>
+ > : ::boost::false_type
+ {
+ };
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ struct is_pod<
+ ::boost::tree_node::with_height<BaseGenerator,T1,T2,Height>
+ > : ::boost::false_type
+ {
+ };
+} // namespace boost
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ class with_height_base
+ : public
+ //[reference__with_height_base__bases
+ ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ //]
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ , public height_key
+#endif
+ , private ::boost::noncopyable
+ {
+ friend struct tree_node_base<Derived>;
+
+ typedef with_height_base<Derived,BaseGenerator,T1,T2,Height>
+ self;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ super_t;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ //[reference__with_height_base__traits
+ struct traits : super_t::traits
+ {
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_void<Height>
+ , size_type
+ , Height
+ >::type
+ height;
+ };
+ //]
+
+ private:
+ typename traits::height _height;
+
+ protected:
+ //[reference__with_height_base__derived_copy_ctor
+ with_height_base(Derived const& copy);
+ //]
+
+ //[reference__with_height_base__derived_copy_ctor_w_allocator
+ with_height_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ );
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_height_base(BOOST_RV_REF(Derived) source);
+
+ with_height_base(
+ BOOST_RV_REF(Derived) source
+ , typename traits::allocator_reference allocator
+ );
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_height_base__emplacement_ctor
+ template <typename ...Args>
+ explicit with_height_base(Args&& ...args);
+ //]
+
+ //[reference__with_height_base__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit with_height_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_WITH_HEIGHT_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ , _height(::boost::initialized_value) \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_HEIGHT_MACRO
+ , (with_height_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_HEIGHT_MACRO
+
+#define BOOST_TREE_NODE_WITH_HEIGHT_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER(z, n, Tuple) \
+ , _height(::boost::initialized_value) \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_HEIGHT_MACRO
+ , (with_height_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_HEIGHT_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~with_height_base();
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ void copy_assign(Derived const& copy);
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ void on_post_copy_or_move();
+
+ template <typename BooleanIntegralConstant>
+ void
+ on_post_inserted_impl(
+ iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ );
+
+ void on_post_erase_impl();
+
+ void on_post_clear_impl();
+
+ void on_post_rotate_left_impl();
+
+ void on_post_rotate_right_impl();
+
+ public:
+ //[reference__with_height_base__key_value_operator
+ typename traits::height const& operator[](height_key const&) const;
+ //]
+
+ private:
+ void _shallow_update();
+
+ static typename traits::height
+ _get_max_height(const_iterator c_itr, const_iterator c_end);
+
+ static void _update_less_height(pointer p);
+
+ static void _update_greater_height(pointer p);
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::with_height_base(
+ Derived const& copy
+ ) : super_t(copy), _height(copy._height)
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::with_height_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ ) : super_t(copy, allocator), _height(copy._height)
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::with_height_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ ) : super_t(source)
+#else
+ Derived&& source
+ ) : super_t(static_cast<Derived&&>(source))
+#endif
+ , _height(source._height)
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::with_height_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ , typename traits::allocator_reference allocator
+ ) : super_t(source, allocator)
+#else
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ ) : super_t(static_cast<Derived&&>(source), allocator)
+#endif
+ , _height(source._height)
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ template <typename ...Args>
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::with_height_base(
+ Args&& ...args
+ ) : super_t(::boost::forward<Args>(args)...)
+ , _height(::boost::initialized_value)
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ template <typename ...Args>
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::with_height_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ , _height(::boost::initialized_value)
+ {
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::~with_height_base()
+ {
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::copy_assign(
+ Derived const& copy
+ )
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::move_assign(
+ BOOST_RV_REF(Derived) source
+ )
+ {
+#if defined BOOST_NO_RVALUE_REFERENCES
+ super_t::move_assign(source);
+#else
+ super_t::move_assign(static_cast<Derived&&>(source));
+#endif
+// this->_height = source._height;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::copy_assign(
+ BOOST_COPY_ASSIGN_REF(Derived) copy
+ )
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ {
+ super_t::copy_assign(copy);
+// this->_height = copy._height;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::on_post_copy_or_move()
+ {
+ super_t::on_post_copy_or_move();
+ this->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ template <typename BooleanIntegralConstant>
+ inline void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::on_post_inserted_impl(
+ iterator position
+ , BooleanIntegralConstant invalidates_sibling_positions
+ )
+ {
+ super_t::on_post_inserted_impl(
+ position
+ , invalidates_sibling_positions
+ );
+ this->get_parent_ptr()->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::on_post_erase_impl()
+ {
+ super_t::on_post_erase_impl();
+ this->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::on_post_clear_impl()
+ {
+ super_t::on_post_clear_impl();
+ this->_height = ::boost::initialized_value;
+ self::_update_less_height(this->get_derived());
+ this->on_post_propagate_value(height_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::on_post_rotate_left_impl()
+ {
+ super_t::on_post_rotate_left_impl();
+ this->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::on_post_rotate_right_impl()
+ {
+ super_t::on_post_rotate_right_impl();
+ this->_shallow_update();
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline typename with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::traits::height const&
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::operator[](height_key const&) const
+ {
+ return this->_height;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ void
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>::_shallow_update()
+ {
+ typename traits::height new_height = self::_get_max_height(
+ this->begin()
+ , this->end()
+ );
+
+ if (new_height < this->_height)
+ {
+ this->_height = new_height;
+ self::_update_less_height(this->get_derived());
+ this->on_post_propagate_value(height_key());
+ }
+ else if (this->_height < new_height)
+ {
+ this->_height = new_height;
+ self::_update_greater_height(this->get_derived());
+ this->on_post_propagate_value(height_key());
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ typename with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::traits::height
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::_get_max_height(const_iterator c_itr, const_iterator c_end)
+ {
+ typename traits::height result = ::boost::initialized_value;
+
+ for (typename traits::height height_plus_1; c_itr != c_end; ++c_itr)
+ {
+ height_plus_1 = ::boost::tree_node::dereference_iterator(
+ c_itr
+ )._height;
+
+ if (result < ++height_plus_1)
+ {
+ result = height_plus_1;
+ }
+ }
+
+ return result;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::_update_less_height(pointer p)
+ {
+ typename traits::height new_height;
+
+ while ((p = p->get_parent_ptr()))
+ {
+ new_height = self::_get_max_height(p->begin(), p->end());
+
+ if (p->_height == new_height)
+ {
+ return;
+ }
+ else
+ {
+ // This is no longer the deepest branch.
+ p->_height = new_height;
+ }
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ void
+ with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::_update_greater_height(pointer p)
+ {
+ typename traits::height p_height = p->_height;
+
+ while ((p = p->get_parent_ptr()) && (p->_height < ++p_height))
+ {
+ // This is the new deepest branch.
+ p->_height = p_height;
+ }
+ }
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline typename with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::traits::height const&
+ get(
+ with_height_base<Derived,BaseGenerator,T1,T2,Height> const& node
+ , height_key const& key
+ )
+ {
+ return node[key];
+ }
+
+#if !defined BOOST_NO_SFINAE
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,height_key>
+ , typename with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::traits::height const&
+ >::type
+ get(with_height_base<Derived,BaseGenerator,T1,T2,Height> const& node)
+ {
+ return node[height_key()];
+ }
+#endif // BOOST_NO_SFINAE
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node { namespace result_of {
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ struct has_key_impl<
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>
+ , height_key
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ struct get_keys_impl<
+ with_height_base<Derived,BaseGenerator,T1,T2,Height>
+ > : ::boost::mpl::vector1<height_key>
+ {
+ };
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <>
+ struct at_key_impl<height_key>
+ {
+ template <typename Node>
+ struct apply
+ {
+ typedef typename Node::traits::height const& type;
+ };
+ };
+}}} // namespace boost::tree_node::result_of
+
+//[reference__with_height_base_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename Height = void>
+ struct with_height_base_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_height_base<Derived,BaseGenerator,T1,T2,Height> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ struct with_height
+ : public
+ //[reference__with_height__bases
+ with_height_base<
+ with_height<BaseGenerator,T1,T2,Height>
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >
+ //]
+ {
+ typedef with_height_base<with_height,BaseGenerator,T1,T2,Height>
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(with_height, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_height__emplacement_ctor
+ template <typename ...Args>
+ explicit with_height(Args&& ...args);
+ //]
+
+ //[reference__with_height__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit with_height(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (with_height, super_t)
+ )
+
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF
+ , (with_height, super_t)
+ )
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ template <typename ...Args>
+ inline with_height<BaseGenerator,T1,T2,Height>::with_height(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ {
+ super_t::on_post_emplacement_construct();
+ }
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ template <typename ...Args>
+ inline with_height<BaseGenerator,T1,T2,Height>::with_height(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ {
+ super_t::on_post_emplacement_construct();
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+}} // namespace boost::tree_node
+
+//[reference__with_height_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename Height = void>
+ struct with_height_gen
+ {
+ template <typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_height<BaseGenerator,T1,T2,Height> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_WITH_HEIGHT_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/with_height_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_height_fwd.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,88 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_WITH_HEIGHT_FWD_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_HEIGHT_FWD_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/tree_node/key/height.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#endif
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ class with_height_base;
+
+ template <
+ typename BaseGenerator
+ , typename T1
+ , typename T2 = void
+ , typename Height = void
+ >
+ struct with_height;
+}} // namespace boost::tree_node
+
+//[reference__with_height_base__at_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ typename with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::traits::height const&
+ get(
+ with_height_base<Derived,BaseGenerator,T1,T2,Height> const& node
+ , height_key const& key
+ );
+
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ , typename Height
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,height_key>
+ , typename with_height_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Height
+ >::traits::height const&
+ >::type
+ get(with_height_base<Derived,BaseGenerator,T1,T2,Height> const& node);
+//<-
+#endif // BOOST_NO_SFINAE
+//->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_WITH_HEIGHT_FWD_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/with_position.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_position.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,652 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_WITH_POSITION_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_POSITION_HPP_INCLUDED
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/detail/metafunction/container_iterator.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/with_position_fwd.hpp>
+#include <boost/tree_node/key/position.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#include <boost/tree_node/intrinsic/get_keys.hpp>
+#include <boost/tree_node/intrinsic/at_key.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/mpl/vector.hpp>
+#include <boost/move/move.hpp>
+#include <boost/type_traits/is_pod.hpp>
+
+namespace boost {
+
+ template <typename BaseGenerator, typename T1, typename T2>
+ struct is_POD<
+ ::boost::tree_node::with_position<BaseGenerator,T1,T2>
+ > : ::boost::false_type
+ {
+ };
+
+ template <typename BaseGenerator, typename T1, typename T2>
+ struct is_pod<
+ ::boost::tree_node::with_position<BaseGenerator,T1,T2>
+ > : ::boost::false_type
+ {
+ };
+} // namespace boost
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ class with_position_base
+ : public
+ //[reference__with_position_base__bases
+ ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ //]
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ , public position_key
+#endif
+ , private ::boost::noncopyable
+ {
+ friend struct tree_node_base<Derived>;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ private:
+ iterator _position;
+
+ protected:
+ //[reference__with_position_base__derived_copy_ctor
+ with_position_base(Derived const& copy);
+ //]
+
+ //[reference__with_position_base__derived_copy_ctor_w_allocator
+ with_position_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ );
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_position_base(BOOST_RV_REF(Derived) source);
+
+ with_position_base(
+ BOOST_RV_REF(Derived) source
+ , typename traits::allocator_reference allocator
+ );
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_position_base__emplacement_ctor
+ template <typename ...Args>
+ explicit with_position_base(Args&& ...args);
+ //]
+
+ //[reference__with_position_base__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit with_position_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_WITH_POSITION_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ , _position() \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_POSITION_MACRO
+ , (with_position_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_POSITION_MACRO
+
+#define BOOST_TREE_NODE_WITH_POSITION_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER(z, n, Tuple) \
+ , _position() \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_POSITION_MACRO
+ , (with_position_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_POSITION_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~with_position_base();
+
+ void on_post_copy_or_move();
+
+ void on_post_inserted_impl(iterator position, ::boost::mpl::true_);
+
+ void on_post_inserted_impl(iterator position, ::boost::mpl::false_);
+
+ public:
+ //[reference__with_position_base__key_value_operator__const
+ const_iterator operator[](position_key const&) const;
+ //]
+
+ //[reference__with_position_base__key_value_operator
+ iterator operator[](position_key const&);
+ //]
+
+ private:
+ static void _set_child_positions(pointer to_parent);
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_position_base<Derived,BaseGenerator,T1,T2>::with_position_base(
+ Derived const& copy
+ ) : super_t(copy), _position()
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_position_base<Derived,BaseGenerator,T1,T2>::with_position_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ ) : super_t(copy, allocator), _position()
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_position_base<Derived,BaseGenerator,T1,T2>::with_position_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ ) : super_t(source)
+#else
+ Derived&& source
+ ) : super_t(static_cast<Derived&&>(source))
+#endif
+ , _position()
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_position_base<Derived,BaseGenerator,T1,T2>::with_position_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ , typename traits::allocator_reference allocator
+ ) : super_t(source, allocator)
+#else
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ ) : super_t(static_cast<Derived&&>(source), allocator)
+#endif
+ , _position()
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ template <typename ...Args>
+ with_position_base<Derived,BaseGenerator,T1,T2>::with_position_base(
+ Args&& ...args
+ ) : super_t(::boost::forward<Args>(args)...), _position()
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ template <typename ...Args>
+ with_position_base<Derived,BaseGenerator,T1,T2>::with_position_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ , _position()
+ {
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_position_base<Derived,BaseGenerator,T1,T2>::~with_position_base()
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_position_base<Derived,BaseGenerator,T1,T2>::on_post_copy_or_move()
+ {
+ super_t::on_post_copy_or_move();
+ this->_set_child_positions(this->get_derived());
+ this->on_post_modify_value(position_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_position_base<Derived,BaseGenerator,T1,T2>::on_post_inserted_impl(
+ iterator position
+ , ::boost::mpl::true_ t
+ )
+ {
+ super_t::on_post_inserted_impl(position, t);
+ this->_position = position;
+ this->on_post_modify_value(position_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_position_base<Derived,BaseGenerator,T1,T2>::on_post_inserted_impl(
+ iterator position
+ , ::boost::mpl::false_ f
+ )
+ {
+ super_t::on_post_inserted_impl(position, f);
+ this->_set_child_positions(this->get_parent_ptr());
+
+ iterator itr_end = this->get_parent_ptr()->end();
+
+ for (
+ iterator itr = this->get_parent_ptr()->begin();
+ itr != itr_end;
+ ++itr
+ )
+ {
+ dereference_iterator(itr).on_post_modify_value(position_key());
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename with_position_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::const_iterator
+ with_position_base<Derived,BaseGenerator,T1,T2>::operator[](
+ position_key const&
+ ) const
+ {
+ return this->_position;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename with_position_base<Derived,BaseGenerator,T1,T2>::iterator
+ with_position_base<Derived,BaseGenerator,T1,T2>::operator[](
+ position_key const&
+ )
+ {
+ return this->_position;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ void
+ with_position_base<Derived,BaseGenerator,T1,T2>::_set_child_positions(
+ pointer to_parent
+ )
+ {
+ iterator itr_end = to_parent->end();
+
+ for (iterator itr = to_parent->begin(); itr != itr_end; ++itr)
+ {
+ dereference_iterator(itr)._position = itr;
+ }
+ }
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename with_position_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::const_iterator
+ get(
+ with_position_base<Derived,BaseGenerator,T1,T2> const& node
+ , position_key const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename with_position_base<Derived,BaseGenerator,T1,T2>::iterator
+ get(
+ with_position_base<Derived,BaseGenerator,T1,T2>& node
+ , position_key const& key
+ )
+ {
+ return node[key];
+ }
+
+#if !defined BOOST_NO_SFINAE
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,position_key>
+ , typename with_position_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::const_iterator
+ >::type
+ get(with_position_base<Derived,BaseGenerator,T1,T2> const& node)
+ {
+ return node[position_key()];
+ }
+
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,position_key>
+ , typename with_position_base<Derived,BaseGenerator,T1,T2>::iterator
+ >::type
+ get(with_position_base<Derived,BaseGenerator,T1,T2>& node)
+ {
+ return node[position_key()];
+ }
+#endif // BOOST_NO_SFINAE
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node { namespace result_of {
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ struct has_key_impl<
+ with_position_base<Derived,BaseGenerator,T1,T2>
+ , position_key
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ struct get_keys_impl<
+ with_position_base<Derived,BaseGenerator,T1,T2>
+ > : ::boost::mpl::vector1<position_key>
+ {
+ };
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <>
+ struct at_key_impl<position_key>
+ {
+ template <typename Node>
+ struct apply
+ {
+ typedef typename ::boost::detail::metafunction::container_iterator<
+ Node
+ >::type
+ type;
+ };
+ };
+}}} // namespace boost::tree_node::result_of
+
+//[reference__with_position_base_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator>
+ struct with_position_base_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_position_base<Derived,BaseGenerator,T1,T2> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename T1, typename T2>
+ struct with_position
+ : public
+ //[reference__with_position__bases
+ with_position_base<
+ with_position<BaseGenerator,T1,T2>
+ , BaseGenerator
+ , T1
+ , T2
+ >
+ //]
+ {
+ typedef with_position_base<with_position,BaseGenerator,T1,T2>
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(with_position, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_position__emplacement_ctor
+ template <typename ...Args>
+ explicit with_position(Args&& ...args);
+ //]
+
+ //[reference__with_position__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit with_position(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (with_position, super_t)
+ )
+
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF
+ , (with_position, super_t)
+ )
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename BaseGenerator, typename T1, typename T2>
+ template <typename ...Args>
+ inline with_position<BaseGenerator,T1,T2>::with_position(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...)
+ {
+ super_t::on_post_emplacement_construct();
+ }
+
+ template <typename BaseGenerator, typename T1, typename T2>
+ template <typename ...Args>
+ inline with_position<BaseGenerator,T1,T2>::with_position(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ {
+ super_t::on_post_emplacement_construct();
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+}} // namespace boost::tree_node
+
+//[reference__with_position_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator>
+ struct with_position_gen
+ {
+ template <typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_position<BaseGenerator,T1,T2> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_WITH_POSITION_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/with_position_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_position_fwd.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,114 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_WITH_POSITION_FWD_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_POSITION_FWD_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/tree_node/key/position.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#endif
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ class with_position_base;
+
+ template <typename BaseGenerator, typename T1, typename T2 = void>
+ struct with_position;
+}} // namespace boost::tree_node
+
+//[reference__with_position_base__at_key__const
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ typename with_position_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::const_iterator
+ get(
+ with_position_base<Derived,BaseGenerator,T1,T2> const& node
+ , position_key const& key
+ );
+
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,position_key>
+ , typename with_position_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::const_iterator
+ >::type
+ get(with_position_base<Derived,BaseGenerator,T1,T2> const& node);
+//<-
+#endif
+//->
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_position_base__at_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ typename with_position_base<Derived,BaseGenerator,T1,T2>::iterator
+ get(
+ with_position_base<Derived,BaseGenerator,T1,T2>& node
+ , position_key const& key
+ );
+
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,position_key>
+ , typename with_position_base<Derived,BaseGenerator,T1,T2>::iterator
+ >::type
+ get(with_position_base<Derived,BaseGenerator,T1,T2>& node);
+//<-
+#endif
+//->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_WITH_POSITION_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/with_red_black_flag.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_red_black_flag.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,762 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_HPP_INCLUDED
+
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/with_red_black_flag_fwd.hpp>
+#include <boost/tree_node/traits/red_black_node_fwd.hpp>
+#include <boost/tree_node/intrinsic/has_key.hpp>
+#include <boost/tree_node/intrinsic/get_keys.hpp>
+#include <boost/tree_node/intrinsic/at_key.hpp>
+
+#if !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#include <boost/preprocessor/repetition/repeat.hpp>
+#endif
+
+#include <boost/tree_node/_detail/config_begin.hpp>
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/mpl/vector.hpp>
+#include <boost/move/move.hpp>
+#include <boost/type_traits/is_pod.hpp>
+
+namespace boost {
+
+ template <typename BaseGenerator, typename T1, typename T2>
+ struct is_POD<
+ ::boost::tree_node::with_red_black_flag<BaseGenerator,T1,T2>
+ > : ::boost::false_type
+ {
+ };
+
+ template <typename BaseGenerator, typename T1, typename T2>
+ struct is_pod<
+ ::boost::tree_node::with_red_black_flag<BaseGenerator,T1,T2>
+ > : ::boost::false_type
+ {
+ };
+} // namespace boost
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ class with_red_black_flag_base
+ : public
+ //[reference__with_red_black_flag_base__bases
+ ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ //]
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ , public red_flag_key
+ , public black_flag_key
+#endif
+ , private ::boost::noncopyable
+ {
+ friend struct tree_node_base<Derived>;
+
+ public:
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_void<T2>
+ , ::boost::mpl::apply_wrap2<BaseGenerator,Derived,T1>
+ , ::boost::mpl::apply_wrap3<BaseGenerator,Derived,T1,T2>
+ >::type
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ private:
+ bool _is_red;
+
+ protected:
+ //[reference__with_red_black_flag_base__derived_copy_ctor
+ with_red_black_flag_base(Derived const& copy);
+ //]
+
+ //[reference__with_red_black_flag_base__derived_copy_ctor_w_allocator
+ with_red_black_flag_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ );
+ //]
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ with_red_black_flag_base(BOOST_RV_REF(Derived) source);
+
+ with_red_black_flag_base(
+ BOOST_RV_REF(Derived) source
+ , typename traits::allocator_reference allocator
+ );
+#endif
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_red_black_flag_base__emplacement_ctor
+ template <typename ...Args>
+ explicit with_red_black_flag_base(Args&& ...args);
+ //]
+
+ //[reference__with_red_black_flag_base__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit with_red_black_flag_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+#define BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ , _is_red(false) \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_MACRO
+ , (with_red_black_flag_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_MACRO
+
+#define BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER(z, n, Tuple) \
+ , _is_red(false) \
+ { \
+ } \
+//!
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_MACRO
+ , (with_red_black_flag_base, super_t)
+ )
+#undef BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_MACRO
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ ~with_red_black_flag_base();
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ void copy_assign(Derived const& copy);
+#else
+ void copy_assign(BOOST_COPY_ASSIGN_REF(Derived) copy);
+
+ void move_assign(BOOST_RV_REF(Derived) source);
+#endif
+
+ void on_post_copy_or_move();
+
+ public:
+ //[reference__with_red_black_flag_base__key_value_operator__red
+ bool operator[](red_flag_key const&) const;
+ //]
+
+ //[reference__with_red_black_flag_base__key_value_operator__black
+ bool operator[](black_flag_key const&) const;
+ //]
+
+ //[reference__with_red_black_flag_base__set_red_flag
+ void set_red_flag(bool flag);
+ //]
+
+ //[reference__with_red_black_flag_base__set_black_flag
+ void set_black_flag(bool flag);
+ //]
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::with_red_black_flag_base(Derived const& copy)
+ : super_t(copy), _is_red(copy._is_red)
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::with_red_black_flag_base(
+ Derived const& copy
+ , typename traits::allocator_reference allocator
+ ) : super_t(copy, allocator), _is_red(copy._is_red)
+ {
+ }
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::with_red_black_flag_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ ) : super_t(source)
+#else
+ Derived&& source
+ ) : super_t(static_cast<Derived&&>(source))
+#endif
+ , _is_red(source._is_red)
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::with_red_black_flag_base(
+#if defined BOOST_NO_RVALUE_REFERENCES
+ ::boost::rv<Derived>& source
+ , typename traits::allocator_reference allocator
+ ) : super_t(source, allocator)
+#else
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ ) : super_t(static_cast<Derived&&>(source), allocator)
+#endif
+ , _is_red(source._is_red)
+ {
+ }
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ template <typename ...Args>
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::with_red_black_flag_base(Args&& ...args)
+ : super_t(::boost::forward<Args>(args)...), _is_red(false)
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ template <typename ...Args>
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::with_red_black_flag_base(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ , _is_red(false)
+ {
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::~with_red_black_flag_base()
+ {
+ }
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>::copy_assign(
+ Derived const& copy
+ )
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>::move_assign(
+ BOOST_RV_REF(Derived) source
+ )
+ {
+#if defined BOOST_NO_RVALUE_REFERENCES
+ super_t::move_assign(source);
+#else
+ super_t::move_assign(static_cast<Derived&&>(source));
+#endif
+ this->_is_red = source._is_red;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>::copy_assign(
+ BOOST_COPY_ASSIGN_REF(Derived) copy
+ )
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ {
+ super_t::copy_assign(copy);
+ this->_is_red = copy._is_red;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::on_post_copy_or_move()
+ {
+ super_t::on_post_copy_or_move();
+ this->on_post_modify_value(red_flag_key());
+ this->on_post_modify_value(black_flag_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline bool
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::operator[](red_flag_key const&) const
+ {
+ return this->_is_red;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline bool
+ with_red_black_flag_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::operator[](black_flag_key const&) const
+ {
+ return !this->_is_red;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>::set_red_flag(
+ bool flag
+ )
+ {
+ this->_is_red = flag;
+ this->on_post_modify_value(red_flag_key());
+ this->on_post_modify_value(black_flag_key());
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>::set_black_flag(
+ bool flag
+ )
+ {
+ this->_is_red = !flag;
+ this->on_post_modify_value(red_flag_key());
+ this->on_post_modify_value(black_flag_key());
+ }
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline bool
+ get(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node
+ , red_flag_key const& key
+ )
+ {
+ return node[key];
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline bool
+ get(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node
+ , black_flag_key const& key
+ )
+ {
+ return node[key];
+ }
+
+#if !defined BOOST_NO_SFINAE
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,red_flag_key>
+ , bool
+ >::type
+ get(with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node)
+ {
+ return node[red_flag_key()];
+ }
+
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,black_flag_key>
+ , bool
+ >::type
+ get(with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node)
+ {
+ return node[black_flag_key()];
+ }
+#endif // BOOST_NO_SFINAE
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ put(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>& node
+ , red_flag_key const& key
+ , bool value
+ )
+ {
+ node.set_red_flag(value);
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline void
+ put(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>& node
+ , black_flag_key const& key
+ , bool value
+ )
+ {
+ node.set_black_flag(value);
+ }
+}} // namespace boost::tree_node
+
+namespace boost { namespace tree_node { namespace result_of {
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ struct has_key_impl<
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>
+ , red_flag_key
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ struct has_key_impl<
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>
+ , black_flag_key
+ > : ::boost::mpl::true_
+ {
+ };
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ struct get_keys_impl<
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>
+ > : ::boost::mpl::vector2<red_flag_key,black_flag_key>
+ {
+ };
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ template <>
+ struct at_key_impl<red_flag_key>
+ {
+ template <typename Node>
+ struct apply
+ {
+ typedef bool type;
+ };
+ };
+
+ template <>
+ struct at_key_impl<black_flag_key>
+ {
+ template <typename Node>
+ struct apply
+ {
+ typedef bool type;
+ };
+ };
+}}} // namespace boost::tree_node::result_of
+
+//[reference__with_red_black_flag_base_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator>
+ struct with_red_black_flag_base_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_red_black_flag_base<Derived,BaseGenerator,T1,T2> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename T1, typename T2>
+ struct with_red_black_flag
+ : public
+ //[reference__with_red_black_flag__bases
+ with_red_black_flag_base<
+ with_red_black_flag<BaseGenerator,T1,T2>
+ , BaseGenerator
+ , T1
+ , T2
+ >
+ //]
+ {
+ typedef with_red_black_flag_base<
+ with_red_black_flag
+ , BaseGenerator
+ , T1
+ , T2
+ >
+ super_t;
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::iterator
+ iterator;
+ typedef typename super_t::const_iterator
+ const_iterator;
+ typedef typename super_t::reverse_iterator
+ reverse_iterator;
+ typedef typename super_t::const_reverse_iterator
+ const_reverse_iterator;
+ typedef typename super_t::size_type
+ size_type;
+
+ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(with_red_black_flag, super_t)
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ //[reference__with_red_black_flag__emplacement_ctor
+ template <typename ...Args>
+ explicit with_red_black_flag(Args&& ...args);
+ //]
+
+ //[reference__with_red_black_flag__emplacement_ctor_w_allocator
+ template <typename ...Args>
+ explicit with_red_black_flag(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+ //]
+#else // !defined BOOST_CONTAINER_PERFECT_FORWARDING
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (with_red_black_flag, super_t)
+ )
+
+ BOOST_PP_REPEAT(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF
+ , (with_red_black_flag, super_t)
+ )
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+ };
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename BaseGenerator, typename T1, typename T2>
+ template <typename ...Args>
+ inline with_red_black_flag<BaseGenerator,T1,T2>::with_red_black_flag(
+ Args&& ...args
+ ) : super_t(::boost::forward<Args>(args)...)
+ {
+ super_t::on_post_emplacement_construct();
+ }
+
+ template <typename BaseGenerator, typename T1, typename T2>
+ template <typename ...Args>
+ inline with_red_black_flag<BaseGenerator,T1,T2>::with_red_black_flag(
+ ::boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : super_t(
+ ::boost::container::allocator_arg
+ , allocator
+ , ::boost::forward<Args>(args)...
+ )
+ {
+ super_t::on_post_emplacement_construct();
+ }
+#endif // BOOST_CONTAINER_PERFECT_FORWARDING
+}} // namespace boost::tree_node
+
+//[reference__with_red_black_flag_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator>
+ struct with_red_black_flag_gen
+ {
+ template <typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_red_black_flag<BaseGenerator,T1,T2> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#include <boost/tree_node/_detail/config_end.hpp>
+
+#endif // BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/tree_node/with_red_black_flag_fwd.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_red_black_flag_fwd.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,140 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_FWD_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_FWD_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/tree_node/key/red_black_flag.hpp>
+
+#if !defined BOOST_NO_SFINAE
+#include <boost/utility/enable_if.hpp>
+#include <boost/tr1/type_traits.hpp>
+#endif
+
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ class with_red_black_flag_base;
+
+ template <typename BaseGenerator, typename T1, typename T2 = void>
+ struct with_red_black_flag;
+}} // namespace boost::tree_node
+
+//[reference__with_red_black_flag_base__at_red_flag_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ bool
+ get(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node
+ , red_flag_key const& key
+ );
+
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,red_flag_key>
+ , bool
+ >::type
+ get(with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node);
+//<-
+#endif
+//->
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_red_black_flag_base__at_black_flag_key
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ bool
+ get(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node
+ , black_flag_key const& key
+ );
+
+//<-
+#if !defined BOOST_NO_SFINAE
+//->
+ template <
+ typename Key
+ , typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ typename ::boost::enable_if<
+ ::std::tr1::is_same<Key,black_flag_key>
+ , bool
+ >::type
+ get(with_red_black_flag_base<Derived,BaseGenerator,T1,T2> const& node);
+//<-
+#endif
+//->
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_red_black_flag_base__put__red
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ void
+ put(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>& node
+ , red_flag_key const& key
+ , bool value
+ );
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_red_black_flag_base__put__black
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ void
+ put(
+ with_red_black_flag_base<Derived,BaseGenerator,T1,T2>& node
+ , black_flag_key const& key
+ , bool value
+ );
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_FWD_HPP_INCLUDED
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/associative_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/associative_node.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,29 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_ASSOCIATIVE_NODE_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_ASSOCIATIVE_NODE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_map.hpp>
+#include <boost/typeof/boost/container_gen/selectors.hpp>
+#include <boost/tree_node/associative_node.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::associative_node_base, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::associative_node_base_gen
+ , 1
+)
+BOOST_TYPEOF_REGISTER_TYPE(
+ ::boost::tree_node::associative_node_base_default_gen
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::associative_node, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::associative_node, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::associative_node_gen, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::associative_node_default_gen)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_ASSOCIATIVE_NODE_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/balancer/adelson_velskii_landis.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/balancer/adelson_velskii_landis.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,16 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_BALANCER_ADELSON_VELSKII_LANDIS_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_BALANCER_ADELSON_VELSKII_LANDIS_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/balancer/adelson_velskii_landis.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::adelson_velskii_landis_balancer)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_BALANCER_ADELSON_VELSKII_LANDIS_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/balancer/red_black.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/balancer/red_black.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,16 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_BALANCER_RED_BLACK_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_BALANCER_RED_BLACK_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/balancer/red_black.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::red_black_balancer)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_BALANCER_RED_BLACK_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/binary_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/binary_node.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,30 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_BINARY_NODE_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_BINARY_NODE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/container_gen/selectors.hpp>
+#include <boost/tree_node/binary_node.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::_detail::binary_child_iterator
+ , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binary_node_base, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binary_node_base_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binary_node_base_gen, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::binary_node_base_default_gen)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binary_node, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binary_node, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binary_node, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binary_node_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binary_node_gen, 2)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::binary_node_default_gen)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_BINARY_NODE_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/container/binode.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/container/binode.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,19 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_CONTAINER_BINODE_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_CONTAINER_BINODE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/container_gen/selectors.hpp>
+#include <boost/typeof/boost/tree_node/balancer/red_black.hpp>
+#include <boost/tree_node/container/binode.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_container, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_container, 3)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_CONTAINER_BINODE_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/container/binode_associative.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/container/binode_associative.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,33 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_CONTAINER_BINODE_ASSOCIATIVE_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_CONTAINER_BINODE_ASSOCIATIVE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/container_gen/selectors.hpp>
+#include <boost/typeof/boost/tree_node/balancer/red_black.hpp>
+#include <boost/tree_node/container/binode_associative.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::binode_associative_container
+ , 6
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_set, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_set, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_set, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_multiset, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_multiset, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_multiset, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_map, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_map, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_map, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_multimap, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_multimap, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::binode_multimap, 5)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_CONTAINER_BINODE_ASSOCIATIVE_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/iterator/breadth_first.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/iterator/breadth_first.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,16 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_BREADTH_FIRST_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_BREADTH_FIRST_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/iterator/breadth_first.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::breadth_first_iterator, 1)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_BREADTH_FIRST_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/iterator/breadth_first_descendant.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/iterator/breadth_first_descendant.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,19 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_BREADTH_FIRST_DESCENDANT_ITERATOR_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_BREADTH_FIRST_DESCENDANT_ITERATOR_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/breadth_first_desc_iterator.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::breadth_first_descendant_iterator
+ , 1
+)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_BREADTH_FIRST_DESCENDANT_ITERATOR_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/iterator/depth_first.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/iterator/depth_first.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,18 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_DEPTH_FIRST_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_DEPTH_FIRST_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/tree_node/iterator/depth_first.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::depth_first_iterator, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::depth_first_iterator, 2)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_DEPTH_FIRST_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/iterator/depth_first_descendant.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/iterator/depth_first_descendant.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,24 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_DEPTH_FIRST_DESCENDANT_ITERATOR_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_DEPTH_FIRST_DESCENDANT_ITERATOR_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/tree_node/iterator/depth_first_descendant.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::depth_first_descendant_iterator
+ , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::depth_first_descendant_iterator
+ , 2
+)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_DEPTH_FIRST_DESCENDANT_ITERATOR_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/iterator/in_order.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/iterator/in_order.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,18 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_IN_ORDER_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_IN_ORDER_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/tree_node/iterator/in_order.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::in_order_iterator, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::in_order_iterator, 2)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_IN_ORDER_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/iterator/post_order.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/iterator/post_order.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,18 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_POST_ORDER_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_POST_ORDER_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/tree_node/iterator/post_order.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::post_order_iterator, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::post_order_iterator, 2)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_POST_ORDER_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/iterator/post_order_descendant.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/iterator/post_order_descendant.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,24 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_POST_ORDER_DESCENDANT_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_POST_ORDER_DESCENDANT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/tree_node/iterator/post_order_descendant.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::post_order_descendant_iterator
+ , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::post_order_descendant_iterator
+ , 2
+)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_POST_ORDER_DESCENDANT_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/iterator/pre_order.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/iterator/pre_order.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,18 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_PRE_ORDER_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_PRE_ORDER_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/tree_node/iterator/pre_order.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::pre_order_iterator, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::pre_order_iterator, 2)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_PRE_ORDER_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/iterator/pre_order_descendant.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/iterator/pre_order_descendant.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,24 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_PRE_ORDER_DESCENDANT_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_PRE_ORDER_DESCENDANT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/tree_node/iterator/pre_order_descendant.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::pre_order_descendant_iterator
+ , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::pre_order_descendant_iterator
+ , 2
+)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_ITERATOR_PRE_ORDER_DESCENDANT_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/key/accumulation.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/key/accumulation.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,24 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_KEY_ACCUMULATION_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_KEY_ACCUMULATION_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/typeof/boost/accumulators/statistics/sum.hpp>
+#include <boost/typeof/boost/tree_node/key/data.hpp>
+#include <boost/tree_node/key/accumulation.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::default_accumulation_key)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::accumulation_key, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::accumulation_key, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::accumulation_key, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::accumulation_key, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::accumulation_key, 5)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_KEY_ACCUMULATION_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/key/count.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/key/count.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,16 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_KEY_COUNT_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_KEY_COUNT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/key/count.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::count_key)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_KEY_COUNT_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/key/data.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/key/data.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,16 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_KEY_DATA_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_KEY_DATA_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/key/data.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::data_key)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_KEY_DATA_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/key/height.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/key/height.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,16 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_KEY_HEIGHT_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_KEY_HEIGHT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/key/height.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::height_key)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_KEY_HEIGHT_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/key/position.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/key/position.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,16 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_KEY_POSITION_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_KEY_POSITION_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/key/position.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::position_key)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_KEY_POSITION_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/key/red_black_flag.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/key/red_black_flag.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,17 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_KEY_RED_BLACK_FLAG_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_KEY_RED_BLACK_FLAG_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/key/red_black_flag.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::red_flag_key)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::black_flag_key)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_KEY_RED_BLACK_FLAG_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/nary_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/nary_node.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,24 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_NARY_NODE_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_NARY_NODE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_deque.hpp>
+#include <boost/typeof/boost/container_gen/selectors.hpp>
+#include <boost/tree_node/nary_node.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::nary_node_base, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::nary_node_base_gen, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::nary_node_base_default_gen)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::nary_node, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::nary_node, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::nary_node_gen, 1)
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::nary_node_default_gen)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_NARY_NODE_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/traversal_state.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/traversal_state.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,16 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_TRAVERSAL_STATE_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_TRAVERSAL_STATE_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(::boost::tree_node::traversal_state)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_TRAVERSAL_STATE_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/with_accumulation.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/with_accumulation.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,30 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_WITH_ACCUMULATION_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_WITH_ACCUMULATION_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/tree_node/key/accumulation.hpp>
+#include <boost/tree_node/with_accumulation.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_accumulation_base, 9)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::with_accumulation_base_gen
+ , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::with_accumulation_base_gen
+ , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_accumulation, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_accumulation, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_accumulation, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_accumulation_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_accumulation_gen, 2)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_WITH_ACCUMULATION_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/with_count.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/with_count.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,24 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_WITH_COUNT_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_WITH_COUNT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/tree_node/key/count.hpp>
+#include <boost/tree_node/with_count.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count_base, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count_base_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count_base_gen, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_count_gen, 2)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_WITH_COUNT_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/with_height.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/with_height.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,24 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_WITH_HEIGHT_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_WITH_HEIGHT_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/tree_node/key/height.hpp>
+#include <boost/tree_node/with_height.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height_base, 5)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height_base_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height_base_gen, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_height_gen, 2)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_WITH_HEIGHT_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/with_position.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/with_position.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,21 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_WITH_POSITION_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_WITH_POSITION_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/tree_node/key/position.hpp>
+#include <boost/tree_node/with_position.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_position_base, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_position_base_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_position, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_position, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_position_gen, 1)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_WITH_POSITION_HPP
+
Added: sandbox/tree_node/boost/typeof/boost/tree_node/with_red_black_flag.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/typeof/boost/tree_node/with_red_black_flag.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,24 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef BOOST_TYPEOF_BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_HPP
+#define BOOST_TYPEOF_BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_HPP
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/typeof/boost/tree_node/key/red_black_flag.hpp>
+#include <boost/tree_node/with_red_black_flag.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_red_black_flag_base, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ ::boost::tree_node::with_red_black_flag_base_gen
+ , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_red_black_flag, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_red_black_flag, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(::boost::tree_node::with_red_black_flag_gen, 1)
+
+#endif // BOOST_TYPEOF_BOOST_TREE_NODE_WITH_RED_BLACK_FLAG_HPP
+
Added: sandbox/tree_node/libs/tree_node/doc/Jamroot
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/Jamroot 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,29 @@
+project html ;
+import boostbook : boostbook ;
+using quickbook ;
+
+xml tree_node
+ :
+ tree_node.qbk
+ ;
+boostbook standalone
+ :
+ tree_node
+ :
+ <xsl:param>admon.graphics.path=http://www.boost.org/doc/libs/release/doc/src/images/
+ <xsl:param>navig.graphics.path=http://www.boost.org/doc/libs/release/doc/src/images/
+ <xsl:param>boost.root=http://www.boost.org
+ <xsl:param>boost.libraries=http://www.boost.org/libs/libraries.htm
+ <xsl:param>boost.image.src=../../../../boost.png
+ <xsl:param>boost.image.alt="C++ Boost"
+ <xsl:param>boost.image.w=277
+ <xsl:param>boost.image.h=86
+ <xsl:param>html.stylesheet=http://www.boost.org/doc/libs/release/doc/src/boostbook.css
+ <xsl:param>nav.layout=none
+ <xsl:param>chunk.section.depth=2
+ <xsl:param>chunk.first.sections=1
+ <xsl:param>generate.section.toc.level=0
+ <xsl:param>toc.section.depth=0
+ <xsl:param>toc.max.depth=0
+ ;
+
Added: sandbox/tree_node/libs/tree_node/doc/changelog.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/changelog.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,110 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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 Changelog]
+
+[heading From 0.3 to 0.4]
+
+ * Added __binode_container__, __binode_associative_container__,
+ __binode_set__, __binode_multiset__, __binode_map__, and
+ __binode_multimap__ data structures.
+ * Added __red_black_balancer__ and __avl_balancer__ structs.
+ * Added __Reversible_Tree_Node__, __Indexable_Container__, and
+ __Indexable_Iterator__ concepts.
+ * Refined the [*Type Generator] concept into __Node_Type_Generator__ and
+ __Base_Type_Generator__ concepts.
+ * Added __TREE_NODE_COPYABLE_AND_MOVABLE__,
+ __TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL__,
+ __TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER__,
+ __TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF__,
+ __TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL__,
+ __TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER__,
+ __TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF__,
+ __TREE_NODE_CAN_USE_FUSION__, and __TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF__
+ preprocessor macros.
+ * Added size type and emplacement constructor and size method expressions to
+ __Tree_Node__ concept.
+ * Added `on_post_*` and `on_post_*_impl` method expressions to
+ __Base_Tree_Node__ concept.
+ * Added iterator range and immutable iterator range types to
+ __Associative_Tree_Node__ concept.
+ * __Tree_Node__ models are now __Movable__.
+ * __Tree_Node__ models are no longer __Equality_Comparable__ or
+ __Less_Than_Comparable__.
+ * Added __tree_node_with_accumulation__ adaptor class template,
+ the corresponding __Base_Tree_Node__ model
+ __tree_node_with_accumulation_base__, the corresponding
+ __Node_Type_Generator__ model __tree_node_with_accumulation_gen__,
+ and the corresponding __Base_Type_Generator__ model
+ __tree_node_with_accumulation_base_gen__.
+ * Added __tree_node_with_count__ adaptor class template, the corresponding
+ __Base_Tree_Node__ model __tree_node_with_count_base__, the
+ corresponding __Node_Type_Generator__ model __tree_node_with_count_gen__,
+ and the corresponding __Base_Type_Generator__ model
+ __tree_node_with_count_base_gen__.
+ * Renamed `with_depth` to __tree_node_with_height__.
+ * Renamed `with_depth_base` to __tree_node_with_height_base__.
+ * Renamed `with_depth_gen` to __tree_node_with_height_gen__.
+ * Added the __Base_Type_Generator__ models
+ __tree_node_with_count_base_gen__, __tree_node_with_height_base_gen__,
+ __tree_node_with_position_base_gen__, and
+ __tree_node_with_red_black_flag_base_gen__.
+ * Removed `tree_node_equal`, `tree_node_strictly_equal`,
+ `tree_node_lexicographical_compare`, and
+ `tree_node_strict_lexicographical_compare` algorithms.
+
+[heading From 0.2 to 0.3]
+
+ * Added __Associative_Tree_Node__, __Non_Associative_Tree_Node__,
+ __Binary_Tree_Node__, __N_ary_Tree_Node__, and [*Type Generator] concepts.
+ * Added __binary_node__ data structure, the corresponding __Base_Tree_Node__
+ model __binary_node_base__, and the corresponding [*Type Generator] model
+ __binary_node_gen__.
+ * Renamed `raw_node` to __nary_node__; added the corresponding
+ __Base_Tree_Node__ model __nary_node_base__ and the corresponding
+ [*Type Generator] model __nary_node_gen__.
+ * Renamed `raw_associative_node` to __associative_node__; added the
+ corresponding __Base_Tree_Node__ model __associative_node_base__ and the
+ corresponding [*Type Generator] model __associative_node_gen__.
+ * Added the __Base_Tree_Node__ model `with_depth_base` and the corresponding
+ [*Type Generator] model `with_depth_gen`.
+ * Added __tree_node_with_position__ adaptor class template, the corresponding
+ __Base_Tree_Node__ model __tree_node_with_position_base__, and the
+ corresponding [*Type Generator] model __tree_node_with_position_gen__.
+ * Added __tree_node_with_red_black_flag__ adaptor class template, the
+ corresponding __Base_Tree_Node__ model
+ __tree_node_with_red_black_flag_base__, and the corresponding
+ [*Type Generator] model __tree_node_with_red_black_flag_gen__.
+ * Added __breadth_first_descendant_iterator__,
+ __pre_order_descendant_iterator__, __post_order_descendant_iterator__,
+ __in_order_iterator__, and __depth_first_descendant_iterator__ adaptor
+ class templates.
+ * Added __dereference_iterator__, `tree_node_equal`,
+ `tree_node_strictly_equal`, `tree_node_lexicographical_compare`, and
+ `tree_node_strict_lexicographical_compare` algorithms.
+ * Removed [*Factory-Constructible Tree Node] and [*Cloneable Tree Node]
+ concepts.
+ * Removed `tree_node_factory` facade.
+ * Removed `shared_tree_node_base` `struct` template.
+ * Removed `simple_node` and `simple_associative_node` data structures.
+ * Removed `with_child_range_access` adaptor class template; __Tree_Node__
+ concept now requires child range access for all models.
+
+[heading From 0.1 to 0.2]
+
+ * Added __Base_Tree_Node__, [*Factory-Constructible Tree Node], and
+ [*Cloneable Tree Node] concepts.
+ * Added `tree_node_factory` facade.
+ * Added __tree_node_base__ and `shared_tree_node_base` `struct` templates;
+ each __Tree_Node__ model that is not a __Base_Tree_Node__ now inherits from
+ a corresponding __Base_Tree_Node__ which, in turn, inherits from one of
+ these two types.
+ * Added `with_child_range_access` and `with_depth` adaptor class templates.
+
+[endsect] [/ Changelog]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_assoc_tree_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_assoc_tree_node.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,197 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:associative_tree_node Associative Tree Node]
+
+[section Description]
+Models of this concept provide key-based access to their child nodes.
+[endsect]
+
+[section Refinement of]
+__Tree_Node__
+[endsect]
+
+[variablelist Notation
+ [[`Node`][A type that models the [*Associative Tree Node] concept.]]
+ [[`node`][An object of type `Node::pointer`.]]
+ [[`const_node`][An object of type `Node::const_pointer`.]]
+ [[`key`][An object of type `Node::traits::key_type const&`.]]
+ [
+ [`args...`]
+ [
+ Arguments to be forwarded to the appropriate
+ `Node::traits::data_type` constructor.
+ ]
+ ]
+]
+
+[section:types Associated Types]
+Three new types are introduced.
+
+[table
+ [[Name][Expression][Description][Requirements]]
+ [
+ [Key type]
+ [`Node::traits::key_type`]
+ [The type of a key that a tree node will associate with a child node.]
+ []
+ ]
+ [
+ [Iterator range type]
+ [`Node::traits::iterator_range`]
+ [The type of a range of child nodes and their associated keys.]
+ [It must model a __Boost_Range__ concept.]
+ ]
+ [
+ [Immutable iterator range type]
+ [`Node::traits::const_iterator_range`]
+ [
+ The type of an immutable view of a range of child nodes and their
+ associated keys.
+ ]
+ [It must model a __Boost_Range__ concept.]
+ ]
+]
+
+In addition, the requirements for the iterator types are strengthened:
+
+ * The value type of `Node::iterator` must define a `first_type` type.
+ * The value type of `Node::iterator` must define a `first` member variable of
+ type `first_type`.
+ * Given an object `itr` of type `Node::iterator`, `itr->first` must be
+ convertible to `Node::traits::key_type const&`.
+ * The value type of `Node::iterator` must define a `second_type` type.
+ * The value type of `Node::iterator` must define a `second` member variable
+ of type `second_type`.
+ * Given an object `itr` of type `Node::iterator`,
+ [^_dereference_iterator_(itr)] must be convertible to `Node&`.
+ * The value type of `Node::const_iterator` must define a `first_type` type.
+ * The value type of `Node::const_iterator` must define a `first` member
+ variable of type `first_type`.
+ * Given an object `itr` of type `Node::const_iterator`, `itr->first` must be
+ convertible to `Node::traits::key_type const&`.
+ * The value type of `Node::const_iterator` must define a `second_type` type.
+ * The value type of `Node::const_iterator` must define a `second` member
+ variable of type `second_type`.
+ * Given an object `itr` of type `Node::const_iterator`,
+ [^_dereference_iterator_(itr)] must be convertible to `Node const&`.
+
+[endsect]
+
+[section:expressions Valid Expressions and Semantics]
+In addition to the expressions defined in the __Tree_Node__ concept, the
+following expressions must be valid.
+
+[table
+ [
+ [Name]
+ [Expression]
+ [Type requirements]
+ [Return Type]
+ [Semantics]
+ [__Runtime_Complexity__]
+ ]
+ [
+ [Child creation]
+ [`node->emplace(key, args...);`]
+ []
+ [`Node::iterator`]
+ [
+ Creates and returns a tree node to be associated with the specified
+ key in the range of children of the invoking node. The node
+ returned will initialize its data with the specified arguments.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Child copy creation]
+ [`node->insert(key, const_node)`]
+ [
+ The data type must model the __Copy_Constructible__ and __Movable__
+ concepts.
+ ]
+ [`Node::iterator`]
+ [
+ Creates and returns a deep copy of `const_node` to be associated
+ with the specified key in the range of children of the invoking
+ node.
+ ]
+ [Linear with respect to the number of descendants of `const_node`]
+ ]
+ [
+ [Child search]
+ [`const_node->find(key)`]
+ []
+ [`Node::const_iterator`]
+ [
+ Returns an iterator pointing to a child node associated with the
+ specified key, or `const_node->end()` if no such child exists.
+ ]
+ [Logarithmic]
+ ]
+ [
+ [Child search]
+ [`node->find(key)`]
+ []
+ [`Node::iterator`]
+ [
+ Returns an iterator pointing to a child node associated with the
+ specified key, or `node->end()` if no such child exists.
+ ]
+ [Logarithmic]
+ ]
+ [
+ [Child search range]
+ [`const_node->equal_range(key)`]
+ []
+ [`Node::traits::const_iterator_range`]
+ [
+ Returns a __Boost_Range__ of all child nodes associated with the
+ specified key. The child nodes in the range returned cannot be
+ modified. If no such children exist, then the range will be empty.
+ ]
+ [Logarithmic]
+ ]
+ [
+ [Child search range]
+ [`node->equal_range(key)`]
+ []
+ [`Node::traits::iterator_range`]
+ [
+ Returns a __Boost_Range__ of all child nodes associated with the
+ specified key. The child nodes in the range returned can be
+ modified. If no such children exist, then the range will be empty.
+ ]
+ [Logarithmic]
+ ]
+ [
+ [Remove children]
+ [`node->erase(key)`]
+ []
+ [`Node::size_type`]
+ [
+ Removes all child nodes associated with the specified key from the
+ tree node. Returns the number of children removed.
+ ]
+ [
+ Linear with respect to the number of children and their descendants
+ in the range to be removed, plus logarithmic
+ ]
+ ]
+]
+[endsect]
+
+[section Models]
+
+ * __associative_node__
+ * __associative_node_base__
+
+[endsect]
+
+[endsect] [/ Associative Tree Node]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_base_tree_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_base_tree_node.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,299 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:base_tree_node Base Tree Node]
+
+[section Description]
+Models of this concept allow the __Tree_Node__ adaptor types to parameterically
+inherit their functionality for greater reuse.
+
+In practice, each [*Base Tree Node] model must do the following:
+
+ * Inherit from either __tree_node_base__ or the return type of a
+ __Base_Type_Generator__.
+ * Take in the derived type and the data type as template parameters.
+ * Also take in the key type if the derived type is (possibly) an
+ __Associative_Tree_Node__ model.
+ * Declare a template instantiation of __tree_node_base__ with the derived
+ type as a `friend struct` if it overrides any of __tree_node_base__
+ implementation methods.
+
+[endsect]
+
+[section Refinement of]
+__Tree_Node__
+[endsect]
+
+[variablelist Notation
+ [[`Base`][A type that models the [*Base Tree Node] concept.]]
+ [[`base`][An object of type `Base*`.]]
+ [[`const_base`][An object of type `Base const*`.]]
+ [[`Node`][A __Tree_Node__ model that inherits from `Base`.]]
+ [[`copy`][An object of type `Node const&`.]]
+ [[`source`][An object of type `Node&&`.]]
+ [[`itr`][An object of type `Node::iterator`.]]
+ [[`BIC`][A type that models the __Boolean_Integral_Constant__ concept.]]
+ [[`bic`][An object of type `BIC`.]]
+]
+
+[section:types Associated Types]
+No additional types beyond those defined in the __Tree_Node__ concept.
+[endsect]
+
+[section:expressions Valid Expressions and Semantics]
+In addition to the expressions defined in the __Tree_Node__ concept, the
+following expressions must be valid.
+
+[table
+ [[Name][Expression][Return Type][Semantics][__Runtime_Complexity__]]
+ [
+ [Derived access]
+ [`base->get_derived()`]
+ [`Node::pointer`]
+ [Returns a pointer to the same `Node` object.]
+ [Constant]
+ ]
+ [
+ [Derived access]
+ [`const_base->get_derived()`]
+ [`Node::const_pointer`]
+ [Returns a pointer to the same immutable `Node` object.]
+ [Constant]
+ ]
+]
+
+Also, the following expressions must be valid (unless the `Node` type does
+/not/ define the operation within which the expression can be invoked).
+
+[table
+ [
+ [Name]
+ [Expression]
+ [Return Type]
+ [Semantics]
+ [Type requirements]
+ [__Runtime_Complexity__]
+ ]
+ [
+ [Derived copy constructor]
+ [`Base(copy)`]
+ []
+ [Constructs a deep copy of the specified node.]
+ [
+ The initializer list of the `Node` copy constructor must be able
+ to call this constructor.
+ ]
+ [Linear with respect to the number of descendants]
+ ]
+ [
+ [Derived move constructor]
+ [`Base(source)`]
+ []
+ [Transfers the contents of the specified node to this one.]
+ [
+ The initializer list of the `Node` move constructor must be able
+ to call this constructor.
+ ]
+ [Linear with respect to the number of children]
+ ]
+ [
+ [Base copy assignment]
+ [`base->copy_assign(copy)`]
+ [`void`]
+ [
+ Structurally modifies the invoking node so that it is a deep copy
+ of the specified node.
+ ]
+ [
+ The body of the `Node` copy assignment operator must be able
+ to call this method.
+ ]
+ [Linear with respect to the number of descendants]
+ ]
+ [
+ [Base move assignment]
+ [`base->move_assign(source)`]
+ [`void`]
+ [
+ Structurally modifies the invoking node so that it stores the
+ contents of the specified node.
+ ]
+ [
+ The body of the `Node` move assignment operator must be able
+ to call this method.
+ ]
+ [Linear with respect to the number of children]
+ ]
+ [
+ [Copy or move notification]
+ [`base->on_post_copy_or_move()`]
+ [`void`]
+ [
+ Upholds any `Node`-specific invariants not upheld by either the
+ `Node` copy or move constructor's initializer lists or by the
+ base copy or move assignment method. For example, if the `Base`
+ type defines `Node::pointer` member variables referring to a
+ parent and a number of child nodes, then this method and not the
+ derived copy or move constructors must link the children to their
+ parent via derived access because `Node` will be an incomplete type
+ during initialization.
+ ]
+ [
+ The body of the `Node` copy or move constructor or assignment
+ operator must be able to call this method.
+ ]
+ [
+ Linear with respect to the number of children plus the number of
+ ancestors
+ ]
+ ]
+ [
+ [Key-value modified notification]
+ [`base->on_post_modify_value(Key())`]
+ [`void`]
+ [
+ Updates any `Node`-specific information invalidated by operations
+ that modify the value that the tree node associates with the
+ specified key.
+ ]
+ [
+ The body of the `Node` key-value modification function must be able
+ to call this method, and [^_result_of__has_key_<Node,Key>] must be
+ equivalent to __mpl_true__.
+ ]
+ [Linear with respect to the number of ancestors]
+ ]
+ [
+ [Key-value propagated notification]
+ [`base->on_post_propagate_value(Key())`]
+ [`void`]
+ [
+ Updates any `Node`-specific information invalidated by operations
+ that propagate the value that the tree node associates with the
+ specified key up the tree node's chain of ancestors.
+ ]
+ [
+ [^_result_of__has_key_<Node,Key>] must be equivalent to
+ __mpl_true__.
+ ]
+ [Linear with respect to the number of ancestors]
+ ]
+ [
+ [Key-value once-propagated notification]
+ [`base->on_post_propagate_value_once(Key())`]
+ [`void`]
+ [
+ Updates any `Node`-specific information invalidated by operations
+ that propagate the value that the tree node associates with the
+ specified key up to the tree node's parent.
+ ]
+ [
+ [^_result_of__has_key_<Node,Key>] must be equivalent to
+ __mpl_true__.
+ ]
+ [Constant]
+ ]
+ [
+ [Insertion notification]
+ [`base->on_post_inserted(itr, bic)`]
+ [`void`]
+ [
+ Updates any `Node`-specific information invalidated by operations
+ that insert or emplace the invoking node. The specified iterator
+ points to this node.
+ ]
+ [
+ The body of any `Node` insertion or emplacement member function
+ must be able to call this method.
+ ]
+ [
+ Amortized constant if `BIC::value == true`, linear with respect to
+ the number of siblings otherwise
+ ]
+ ]
+ [
+ [Erasure notification]
+ [`base->on_post_erase()`]
+ [`void`]
+ [
+ Updates any `Node`-specific information invalidated by operations
+ that remove the specified children and their descendants from a
+ node.
+ ]
+ [
+ The body of any `Node` erasure member function must be able to call
+ this method.
+ ]
+ [
+ Linear with respect to the number of children plus the number of
+ ancestors
+ ]
+ ]
+ [
+ [Clear notification]
+ [`base->on_post_clear()`]
+ [`void`]
+ [
+ Updates any `Node`-specific information invalidated by operations
+ that remove all descendants from a node.
+ ]
+ [
+ The body of the `Node::clear()` member function must be able
+ to call this method.
+ ]
+ [
+ Linear with respect to the number of children removed plus the
+ number of ancestors
+ ]
+ ]
+ [
+ [Left rotation notification]
+ [`base->on_post_rotate_left()`]
+ [`void`]
+ [
+ Updates any `Node`-specific information invalidated by operations
+ that rotate a node to the left.
+ ]
+ [
+ The body of the `Node::rotate_left()` member function must be able
+ to call this method.
+ ]
+ [Linear with respect to the number of ancestors]
+ ]
+ [
+ [Right rotation notification]
+ [`base->on_post_rotate_right()`]
+ [`void`]
+ [
+ Updates any `Node`-specific information invalidated by operations
+ that rotate a node to the right.
+ ]
+ [
+ The body of the `Node::rotate_right()` member function must be able
+ to call this method.
+ ]
+ [Linear with respect to the number of ancestors]
+ ]
+]
+[endsect] [/ Valid Expressions and Semantics]
+
+[section Models]
+
+ * __binary_node_base__
+ * __nary_node_base__
+ * __associative_node_base__
+ * __tree_node_with_accumulation_base__
+ * __tree_node_with_count_base__
+ * __tree_node_with_height_base__
+ * __tree_node_with_position_base__
+ * __tree_node_with_red_black_flag_base__
+
+[endsect]
+
+[endsect] [/ Base Tree Node]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_base_type_generator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_base_type_generator.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,74 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:base_type_generator Base Type Generator]
+
+[section Description]
+A [*Base Type Generator] is a __Metafunction_Class__ that returns a
+__Base_Tree_Node__ from which __Tree_Node__ adaptor types can inherit the
+necessary functionality.
+[endsect]
+
+[variablelist Notation
+ [
+ [`Generator`]
+ [A type that models the [*Base Type Generator] concept.]
+ ]
+ [
+ [`Derived`]
+ [
+ The most descendant type that will inherit from the return type of
+ `Generator`.
+ ]
+ ]
+ [
+ [`Key`]
+ [The key type of the __Associative_Tree_Node__ to be returned.]
+ ]
+ [
+ [`Data`]
+ [The data type of the __Tree_Node__ to be returned.]
+ ]
+]
+
+[section:expressions Valid Expressions and Semantics]
+[table
+ [[Name][Expression][Return Type]]
+ [
+ [Non-associative invocation]
+ [[^_mpl_apply_wrap2_<Generator,Derived,Data>::type]]
+ [
+ A __Non_Associative_Tree_Node__ model whose `traits::data_type` is
+ the same as `Data`.
+ ]
+ ]
+ [
+ [Associative invocation]
+ [[^_mpl_apply_wrap3_<Generator,Derived,Key,Data>::type]]
+ [
+ An __Associative_Tree_Node__ model whose `traits::key_type` is the
+ same as `Key` and whose `traits::data_type` is the same as `Data`.
+ ]
+ ]
+]
+[endsect]
+
+[section Models]
+
+ * __binary_node_base_gen__
+ * __nary_node_base_gen__
+ * __associative_node_base_gen__
+ * __tree_node_with_count_base_gen__
+ * __tree_node_with_height_base_gen__
+ * __tree_node_with_position_base_gen__
+ * __tree_node_with_red_black_flag_base_gen__
+
+[endsect]
+
+[endsect] [/ Base Type Generator]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_binary_tree_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_binary_tree_node.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,225 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:binary_tree_node Binary Tree Node]
+
+[section Description]
+Models of this concept store at most two child nodes: left and right. The
+operations that this concept defines include access to these children and
+rotations that use the appropriate child as a pivot node.
+[endsect]
+
+[section Refinement of]
+
+ * __Non_Associative_Tree_Node__
+ * __Reversible_Tree_Node__
+
+[endsect]
+
+[variablelist Notation
+ [
+ [`Node`]
+ [A type that models the [*Binary Tree Node] concept.]
+ ]
+ [
+ [`node`]
+ [An object of type `Node::pointer`.]
+ ]
+ [
+ [`const_node`]
+ [An object of type `Node::const_pointer`.]
+ ]
+ [
+ [`args...`]
+ [
+ Arguments to be forwarded to the appropriate
+ `Node::traits::data_type` constructor.
+ ]
+ ]
+]
+
+[section:types Associated Types]
+No additional types beyond those defined in the __Non_Associative_Tree_Node__
+and __Reversible_Tree_Node__ concepts.
+[endsect]
+
+[section:expressions Valid Expressions and Semantics]
+In addition to the expressions defined in the __Non_Associative_Tree_Node__
+and __Reversible_Tree_Node__ concepts, the following expressions must be valid.
+
+[table
+ [
+ [Name]
+ [Expression]
+ [Type requirements]
+ [Return Type]
+ [Semantics]
+ [__Runtime_Complexity__]
+ ]
+ [
+ [Left child creation]
+ [`node->emplace_left(args...)`]
+ []
+ [`Node::iterator`]
+ [
+ Creates and returns a tree node to be stored as the left child of
+ the invoking node. The node returned will initialize its data with
+ the specified arguments.
+
+ If a left child existed previously, that node shall become the left
+ child of the new node.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Left child copy creation]
+ [`node->insert_left(const_node)`]
+ [
+ The data type must model the __Copy_Constructible__ and __Movable__
+ concepts.
+ ]
+ [`Node::iterator`]
+ [
+ Creates and returns a deep copy of `const_node` to be stored as the
+ left child of the invoking node.
+
+ If a left child existed previously, that node shall become the
+ left-most descendant of the new node, or the first node encountered
+ during a forward in-order traversal of the new node's descendants.
+ ]
+ [Linear with respect to the number of descendants of `const_node`]
+ ]
+ [
+ [Right child creation]
+ [`node->emplace_right(args...)`]
+ []
+ [`Node::iterator`]
+ [
+ Creates and returns a tree node to be stored as the right child of
+ the invoking node. The node returned will initialize its data with
+ the specified arguments.
+
+ If a right child existed previously, that node shall become the
+ right child of the new node.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Right child copy creation]
+ [`node->insert_right(const_node)`]
+ [
+ The data type must model the __Copy_Constructible__ and __Movable__
+ concepts.
+ ]
+ [`Node::iterator`]
+ [
+ Creates and returns a deep copy of `const_node` to be stored as the
+ right child of the invoking node.
+
+ If a right child existed previously, that node shall become the
+ right-most descendant of the new node, or the last node encountered
+ during a forward in-order traversal of the new node's descendants.
+ ]
+ [Linear with respect to the number of descendants of `const_node`]
+ ]
+ [
+ [Left child access]
+ [`const_node->get_left_child_ptr()`]
+ []
+ [`Node::const_pointer`]
+ [
+ Returns the left child of the tree node, or a null pointer if no
+ such tree node exists.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Left child access]
+ [`node->get_left_child_ptr()`]
+ []
+ [`Node::pointer`]
+ [
+ Returns the left child of the tree node, or a null pointer if no
+ such tree node exists.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Right child access]
+ [`const_node->get_right_child_ptr()`]
+ []
+ [`Node::const_pointer`]
+ [
+ Returns the right child of the tree node, or a null pointer if no
+ such tree node exists.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Right child access]
+ [`node->get_right_child_ptr()`]
+ []
+ [`Node::pointer`]
+ [
+ Returns the right child of the tree node, or a null pointer if no
+ such tree node exists.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Rotate left]
+ [`node->rotate_left()`]
+ []
+ [`Node::pointer`]
+ [
+ Rotates the tree node in its hierarchy so that its right child, the
+ pivot node, becomes its parent. The left child of the pivot node
+ becomes the right child of the tree node. Returns the pivot node.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Rotate right]
+ [`node->rotate_right()`]
+ []
+ [`Node::pointer`]
+ [
+ Rotates the tree node in its hierarchy so that its left child, the
+ pivot node, becomes its parent. The right child of the pivot node
+ becomes the left child of the tree node. Returns the pivot node.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Remove left child]
+ [`node->erase_left()`]
+ []
+ [`void`]
+ [Removes the left child from the tree node.]
+ [Linear with respect to the number of descendants of the left child]
+ ]
+ [
+ [Remove right child]
+ [`node->erase_right()`]
+ []
+ [`void`]
+ [Removes the right child from the tree node.]
+ [Linear with respect to the number of descendants of the right child]
+ ]
+]
+[endsect]
+
+[section Models]
+
+ * __binary_node__
+ * __binary_node_base__
+
+[endsect]
+
+[endsect] [/ Binary Tree Node]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_descendant_iterator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_descendant_iterator.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,85 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:tree_node_desc_iterator Tree Node Descendant Iterator]
+
+[section Description]
+This concept may seem redundant at first, especially when iterating through
+__Non_Associative_Tree_Node__ objects; however, for __Associative_Tree_Node__
+objects, models of this concept provide the sole means of accessing the key
+associated with each node being traversed. (Root nodes are not associated with
+keys at the tree node level, so models of this concept do not traverse them.)
+[endsect]
+
+[section Refinement of]
+__Tree_Node_Iterator__
+[endsect]
+
+[variablelist Notation
+ [
+ [`Iterator`]
+ [A type that models the [*Tree Node Descendant Iterator] concept.]
+ ]
+ [
+ [`itr`]
+ [An object of type `Iterator`.]
+ ]
+ [
+ [`Node`]
+ [A type that models the __Tree_Node__ concept.]
+ ]
+ [
+ [`node`]
+ [An object of type `Node&`.]
+ ]
+]
+
+[section:types Associated Types]
+No additional types beyond those defined in the __Tree_Node_Iterator__ concept;
+however, the requirements for the value type are strengthened: it must be the
+appropriate iterator type of `Node`.
+[endsect]
+
+[section:expressions Valid Expressions and Semantics]
+None beyond those defined in the __Tree_Node_Iterator__ concept; however, the
+type requirements for the constructors are strengthened, and their semantics
+are clarified.
+
+[table
+ [
+ [Name]
+ [Expression]
+ [Type requirements]
+ [Semantics]
+ ]
+ [
+ [Constructor from node]
+ [``
+ Iterator(node)
+ Iterator itr(node)
+ ``]
+ []
+ [
+ Constructs an iterator that will iterate through the descendants of
+ the specified node.
+ ]
+ ]
+]
+[endsect]
+
+[section Models]
+
+ * __breadth_first_descendant_iterator__
+ * __pre_order_descendant_iterator__
+ * __post_order_descendant_iterator__
+ * __depth_first_descendant_iterator__
+
+[endsect]
+
+[endsect] [/ Tree Node Descendant Iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_full_iterator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_full_iterator.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,71 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:full_tree_node_iterator Full Tree Node Iterator]
+
+[section Description]
+This concept specifies the requirement that models traverse the root node as
+well as its descendants.
+[endsect]
+
+[section Refinement of]
+__Tree_Node_Iterator__
+[endsect]
+
+[variablelist Notation
+ [[`Iterator`][A type that models the [*Full Tree Node Iterator] concept.]]
+ [[`itr`][An object of type `Iterator`.]]
+ [[`Node`][The value type of `Iterator`.]]
+ [[`node`][An object of type `Node&`.]]
+]
+
+[section:types Associated Types]
+No additional types beyond those defined in the __Tree_Node_Iterator__ concept;
+however, the requirements for the value type are strengthened: it must model
+the __Tree_Node__ concept.
+[endsect]
+
+[section:expressions Valid Expressions and Semantics]
+None beyond those defined in the __Tree_Node_Iterator__ concept; however, the
+type requirements for the constructors are strengthened, and their semantics
+are clarified.
+
+[table
+ [
+ [Name]
+ [Expression]
+ [Type requirements]
+ [Semantics]
+ ]
+ [
+ [Constructor from node]
+ [``
+ Iterator(node)
+ Iterator itr(node)
+ ``]
+ []
+ [
+ Constructs an iterator that will iterate through the specified node
+ and its descendants.
+ ]
+ ]
+]
+[endsect]
+
+[section Models]
+
+ * __breadth_first_iterator__
+ * __pre_order_iterator__
+ * __post_order_iterator__
+ * __in_order_iterator__
+ * __depth_first_iterator__
+
+[endsect]
+
+[endsect] [/ Full Tree Node Iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_indexable_container.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_indexable_container.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,73 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:indexable_container Indexable Container]
+
+[section Description]
+An [*Indexable Container] is a __Reversible_Container__ whose iterator type is
+an __Indexable_Iterator__. It provides sub-linear time access to arbitrary
+elements.
+[endsect]
+
+[section Refinement of]
+__Reversible_Container__
+[endsect]
+
+[section:types Associated Types]
+None beyond those defined in __Reversible_Container__. However, the
+requirements for the iterator type are strengthened: it must be an
+__Indexable_Iterator__.
+[endsect]
+
+[variablelist Notation
+ [[`X`][A type that models the [*Indexable Container] concept.]]
+ [[`a`][An object of type `X`.]]
+]
+
+[section:expressions Valid Expressions and Semantics]
+In addition to the expressions defined in the __Reversible_Container__ concept,
+the following expressions must be valid.
+
+[table
+ [
+ [Name]
+ [Expression]
+ [Return Type]
+ [Semantics]
+ [Type Requirements]
+ [Precondition]
+ [Invariant]
+ [__Runtime_Complexity__]
+ ]
+ [
+ [Element access]
+ [`a[n]`]
+ [`reference` if `a` is mutable, `const_reference` otherwise]
+ [Returns the `n`th element from the beginning of the container.]
+ [`n` must be convertible to `size_type`]
+ [`0 < n <= a.size()`]
+ [Equivalent to `*(a.begin() + n)`.]
+ [Sublinear]
+ ]
+]
+[endsect] [/ Valid Expressions and Semantics]
+
+[section Models]
+
+ * __binode_container__ if the value associated with __count_key__ exists for
+ the return type of `NodeGenerator`
+ * __binode_associative_container__
+ * __binode_set__
+ * __binode_map__
+ * __binode_multiset__
+ * __binode_multimap__
+
+[endsect]
+
+[endsect] [/ Tree Node]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_indexable_iterator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_indexable_iterator.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,163 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:indexable_iterator Indexable Iterator]
+
+[section Description]
+An [*Indexable Iterator] is an iterator that provides both increment and
+decrement as well as sublinear-time operators for moving forward and backward
+in arbitrary-sized steps. The runtime complexity requirement is the only
+major difference between an [*Indexable Iterator] and a
+__Random_Access_Iterator__.
+[endsect]
+
+[section Refinement of]
+
+ * __Bidirectional_Iterator__
+ * __Less_Than_Comparable__
+
+[endsect]
+
+[section:types Associated Types]
+No additional types beyond those defined in the __Bidirectional_Iterator__ and
+__Less_Than_Comparable__ concepts.
+[endsect]
+
+[variablelist Notation
+ [[`Iterator`][A type that models the [*Indexable Iterator] concept.]]
+ [[`i`, `j`][Objects of type `Iterator`.]]
+ [[`T`][The value type of `Iterator`.]]
+ [[`t`][An object of type `T`.]]
+ [[`Distance`][The distance type of `Iterator`.]]
+ [[`n`][An object of type `Distance`.]]
+]
+
+[section:expressions Valid Expressions and Semantics]
+In addition to the expressions defined in the __Bidirectional_Iterator__
+concept, the following expressions must be valid.
+
+[table
+ [
+ [Name]
+ [Expression]
+ [Return Type]
+ [Semantics]
+ [Type Requirements]
+ [Precondition]
+ [Postcondition]
+ [__Runtime_Complexity__]
+ ]
+ [
+ [Iterator addition assignment]
+ [`i += n`]
+ [`X&`]
+ [
+ If `n > 0`, equivalent to executing `++i` `n` times. If `n < 0`,
+ equivalent to executing `--i` `n` times. If `n == 0`, this is a
+ null operation.
+ ]
+ []
+ [
+ Including `i` itself, there must be `n` dereferenceable or
+ past-the-end iterators following or preceding `i`, depending on
+ whether `n` is positive or negative.
+ ]
+ [`i` is dereferenceable or past-the-end.]
+ []
+ ]
+ [
+ [Iterator addition]
+ [`i + n` or `n + i`]
+ [`X`]
+ [
+ Equivalent to `{ X tmp = i; return tmp += n; }`. The two forms
+ `i + n` and `n + i` are identical.
+ ]
+ []
+ [Same as for `i += n`]
+ [The result is dereferenceable or past-the-end.]
+ []
+ ]
+ [
+ [Iterator subtraction assignment]
+ [`i -= n`]
+ [`X&`]
+ [Equivalent to `i += (-n)`.]
+ []
+ [
+ Including `i` itself, there must be `n` dereferenceable or
+ past-the-end iterators preceding or following `i`, depending on
+ whether `n` is positive or negative.
+ ]
+ [`i` is dereferenceable or past-the-end.]
+ []
+ ]
+ [
+ [Iterator subtraction]
+ [`i - n`]
+ [`X`]
+ [Equivalent to `{ X tmp = i; return tmp -= n; }`.]
+ []
+ [Same as for `i -= n`]
+ [The result is dereferenceable or past-the-end.]
+ []
+ ]
+ [
+ [Difference]
+ [`i - j`]
+ [`Distance`]
+ [Returns a number `n` such that `i == j + n`.]
+ []
+ [
+ Either `i` is reachable from `j` or `j` is reachable from `i`, or
+ both.
+ ]
+ []
+ []
+ ]
+ [
+ [Element operator]
+ [`i[n]`]
+ [Convertible to `T`]
+ [Equivalent to `*(i + n)`.]
+ []
+ [`i + n` exists and is dereferenceable.]
+ []
+ []
+ ]
+ [
+ [Element assignment]
+ [`i[n] = t`]
+ [Convertible to `T`]
+ [Equivalent to `*(i + n)`.]
+ [`X` is mutable.]
+ [`i + n` exists and is dereferenceable.]
+ [`i[n]` is a copy of `t`.]
+ []
+ ]
+]
+
+In addition, the domain of the less-than comparison expression `i < j` is the
+group of iterators that are reachable from each other: that is, either `i` is
+reachable from `j` or `j` is reachable from `i`, or both.
+
+The __Forward_Iterator__ and __Reverse_Iterator__ requirements that the
+increment and decrement operators must exhibit constant time complexity have
+been relaxed; they now need only exhibit linear time complexity with respect
+to the number of descendants in the worst case.
+[endsect]
+
+[section Models]
+
+ * The iterator types of __binode_container__.
+ * The iterator types of __binode_associative_container__.
+
+[endsect]
+
+[endsect] [/ Tree Node Iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_iterator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_iterator.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,103 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:tree_node_iterator Tree Node Iterator]
+
+[section Description]
+Tree-traversing iterators at the __Tree_Node__ level must be created
+differently from iterators at the __Container__ level. Furthermore, tree node
+iterators typically store more stateful information than their __Container__
+counterparts; requiring two of them to check for dereferenceability may prove
+somewhat memory-inefficient. This concept provides an alternate means of
+checking for dereferenceability that requires the use of only the active
+iterator.
+[endsect]
+
+[section Refinement of]
+__Forward_Iterator__
+[endsect]
+
+[variablelist Notation
+ [[`Iterator`][A type that models the [*Tree Node Iterator] concept.]]
+ [[`itr`][An object of type `Iterator`.]]
+ [[`Node`][A type that models the __Tree_Node__ concept.]]
+ [[`node`][An object of type `Node&`.]]
+]
+
+[section:types Associated Types]
+No additional types beyond those defined in the __Forward_Iterator__ concept.
+[endsect]
+
+[section:expressions Valid Expressions and Semantics]
+In addition to the expressions defined in the __Forward_Iterator__ concept, the
+following expressions must be valid.
+
+[table
+ [
+ [Name]
+ [Expression]
+ [Return Type]
+ [Semantics]
+ [__Runtime_Complexity__]
+ ]
+ [
+ [Default constructor]
+ [``
+ Iterator()
+ Iterator itr
+ ``]
+ []
+ [Constructs a non-dereferenceable (past-the-end) iterator.]
+ [Constant]
+ ]
+ [
+ [Constructor from node]
+ [``
+ Iterator(node)
+ Iterator itr(node)
+ ``]
+ []
+ [Refinement-specific.]
+ [Amortized constant]
+ ]
+ [
+ [Dereferenceability]
+ [`itr`]
+ [A type that can be used in a boolean context.]
+ [
+ Returns a value convertible to `true` if `itr` is dereferenceable,
+ a value convertible to `false` if it is past-the-end.
+ ]
+ [Constant]
+ ]
+ [
+ [Node dereference]
+ [[^_dereference_iterator_(itr)]]
+ [`Node&` or `Node const&`, depending on the mutability of `itr`.]
+ [
+ Returns a reference to the __Tree_Node__ to which `itr` currently
+ points.
+ ]
+ [Constant]
+ ]
+]
+
+The __Forward_Iterator__ requirement that the increment operators must exhibit
+constant time complexity has been relaxed; they now need only exhibit linear
+time complexity with respect to the number of descendants in the worst case.
+[endsect]
+
+[section Models]
+
+ * All models of the __Full_Tree_Node_Iterator__ concept.
+ * All models of the __Tree_Node_Descendant_Iterator__ concept.
+
+[endsect]
+
+[endsect] [/ Tree Node Iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_nary_tree_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_nary_tree_node.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,97 @@
+[/=============================================================================
+ Copyright (C) 2011-2012 Cromwell D. Enage
+
+ 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:nary_tree_node N-ary Tree Node]
+
+[section Description]
+Models of this concept store arbitrary numbers of children and provide simple
+child insertion expressions.
+[endsect]
+
+[section Refinement of]
+__Non_Associative_Tree_Node__
+[endsect]
+
+[variablelist Notation
+ [
+ [`Node`]
+ [A type that models the [*N-ary Tree Node] concept.]
+ ]
+ [
+ [`node`]
+ [An object of type `Node::pointer`.]
+ ]
+ [
+ [`const_node`]
+ [An object of type `Node::const_pointer`.]
+ ]
+ [
+ [`args...`]
+ [
+ Arguments to be forwarded to the appropriate
+ `Node::traits::data_type` constructor.
+ ]
+ ]
+]
+
+[section:types Associated Types]
+No additional types beyond those defined in the __Non_Associative_Tree_Node__
+concept.
+[endsect]
+
+[section:expressions Valid Expressions and Semantics]
+In addition to the expressions defined in the __Non_Associative_Tree_Node__
+concept, the following expressions must be valid.
+
+[table
+ [
+ [Name]
+ [Expression]
+ [Type requirements]
+ [Return Type]
+ [Semantics]
+ [__Runtime_Complexity__]
+ ]
+ [
+ [Child creation]
+ [`node->emplace(args...)`]
+ []
+ [`Node::iterator`]
+ [
+ Creates and returns a tree node to be stored in the range of
+ children of the invoking node. The node returned will initialize
+ its data with the specified arguments.
+ ]
+ [Logarithmic]
+ ]
+ [
+ [Child copy creation]
+ [`node->insert(const_node)`]
+ [
+ The data type must model the __Copy_Constructible__ and __Movable__
+ concepts.
+ ]
+ [`Node::iterator`]
+ [
+ Creates and returns a deep copy of `const_node` to be stored in the
+ range of children of the invoking node.
+ ]
+ [Linear with respect to the number of descendants of `const_node`]
+ ]
+]
+[endsect]
+
+[section Models]
+
+ * __nary_node__
+ * __nary_node_base__
+
+[endsect]
+
+[endsect] [/ N-ary Tree Node]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_node_type_generator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_node_type_generator.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,66 @@
+[/=============================================================================
+ Copyright (C) 2011-2012 Cromwell D. Enage
+
+ 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:node_type_generator Node Type Generator]
+
+[section Description]
+A [*Node Type Generator] is a __Metafunction_Class__ that returns a
+__Tree_Node__ model of which objects can be instantiated.
+[endsect]
+
+[variablelist Notation
+ [
+ [`Generator`]
+ [A type that models the [*Node Type Generator] concept.]
+ ]
+ [
+ [`Key`]
+ [The key type of the __Associative_Tree_Node__ to be returned.]
+ ]
+ [
+ [`Data`]
+ [The data type of the __Tree_Node__ to be returned.]
+ ]
+]
+
+[section:expressions Valid Expressions and Semantics]
+[table
+ [[Name][Expression][Return Type]]
+ [
+ [Non-associative invocation]
+ [[^_mpl_apply_wrap1_<Generator,Data>::type]]
+ [
+ A __Non_Associative_Tree_Node__ model whose `traits::data_type` is
+ the same as `Data`.
+ ]
+ ]
+ [
+ [Associative invocation]
+ [[^_mpl_apply_wrap2_<Generator,Key,Data>::type]]
+ [
+ An __Associative_Tree_Node__ model whose `traits::key_type` is the
+ same as `Key` and whose `traits::data_type` is the same as `Data`.
+ ]
+ ]
+]
+[endsect]
+
+[section Models]
+
+ * __binary_node_gen__
+ * __nary_node_gen__
+ * __associative_node_gen__
+ * __tree_node_with_count_gen__
+ * __tree_node_with_height_gen__
+ * __tree_node_with_position_gen__
+ * __tree_node_with_red_black_flag_gen__
+
+[endsect]
+
+[endsect] [/ Node Type Generator]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_non_assoc_tree_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_non_assoc_tree_node.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,43 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:non_assoc_tree_node Non-Associative Tree Node]
+
+[section Description]
+Models of this concept provide access to their child nodes via iterator
+dereferencing.
+[endsect]
+
+[section Refinement of]
+__Tree_Node__
+[endsect]
+
+[section:types Associated Types]
+No additional types beyond those defined in the __Tree_Node__ concept; however,
+the requirements for the child iterator types are strengthened:
+
+ * The value type of `Node::iterator` must be `Node&`.
+ * The value type of `Node::const_iterator` must be `Node const&`.
+
+[endsect]
+
+[section:expressions Valid Expressions and Semantics]
+None beyond those defined in the __Tree_Node__ concept.
+[endsect]
+
+[section Models]
+
+ * __binary_node__
+ * __binary_node_base__
+ * __nary_node__
+ * __nary_node_base__
+
+[endsect]
+
+[endsect] [/ Non-Associative Tree Node]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_rvrsible_tree_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_rvrsible_tree_node.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,161 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:reversible_tree_node Reversible Tree Node]
+
+[section Description]
+Objects of types that model both the __Tree_Node_Iterator__ and
+__Bidirectional_Iterator__ concepts can iterate over objects of types that
+model this concept.
+[endsect]
+
+[section Refinement of]
+__Tree_Node__
+[endsect]
+
+[variablelist Notation
+ [[`Node`][A type that models the [*Reversible Tree Node] concept.]]
+ [[`node`][An object of type `Node::pointer`.]]
+ [[`const_node`][An object of type `Node::const_pointer`.]]
+]
+
+[section:types Associated Types]
+Two new types are introduced.
+
+[table
+ [[Name][Expression][Description][Requirements]]
+ [
+ [Reverse iterator type]
+ [`Node::reverse_iterator`]
+ [
+ The type of iterator used to iterate in reverse through the
+ children of a `Node` object.
+ ]
+ [
+ It must model the __Bidirectional_Iterator__ concept, and it must
+ be convertible to `Node::const_reverse_iterator`.
+ ]
+ ]
+ [
+ [Immutable reverse iterator type]
+ [`Node::const_reverse_iterator`]
+ [
+ The type of iterator used to iterate in reverse through the
+ children of a `Node const` object.
+ ]
+ [
+ It must model the __Bidirectional_Iterator__ concept, and it must
+ /not/ point to a mutable object.
+ ]
+ ]
+]
+
+In addition, the requirements for the iterator types are strengthened: they
+must also model the __Bidirectional_Iterator__ concept.
+[endsect]
+
+[section:expressions Valid Expressions and Semantics]
+In addition to the expressions defined in the __Tree_Node__ concept, the
+following expressions must be valid.
+
+[table
+ [
+ [Name]
+ [Expression]
+ [Return Type]
+ [Semantics]
+ [Type Requirements]
+ [__Runtime_Complexity__]
+ ]
+ [
+ [Children reverse range begin access]
+ [`const_node->rbegin()`]
+ [`Node::const_reverse_iterator`]
+ [
+ Returns an iterator pointing to the beginning of the reverse range
+ of children of the tree node. If the range is empty, then the
+ iterator points past-the-end.
+ ]
+ []
+ [Constant]
+ ]
+ [
+ [Children reverse range begin access]
+ [`node->rbegin()`]
+ [`Node::reverse_iterator`]
+ [
+ Returns an iterator pointing to the beginning of the reverse range
+ of children of the tree node. If the range is empty, then the
+ iterator points past-the-end.
+ ]
+ []
+ [Constant]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [`const_node->rend()`]
+ [`Node::const_reverse_iterator`]
+ [
+ Returns an iterator pointing past the end of the reverse range of
+ children of the tree node.
+ ]
+ []
+ [Constant]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [`node->rend()`]
+ [`Node::reverse_iterator`]
+ [
+ Returns an iterator pointing past the end of the reverse range of
+ children of the tree node.
+ ]
+ []
+ [Constant]
+ ]
+]
+[endsect] [/ Valid Expressions and Semantics]
+
+[section Models]
+
+ * __binary_node__
+ * __binary_node_base__
+ * __nary_node__ if [^_container_gen_<Selector,_nary_node_>::type] returns a
+ __Reversible_Container__ model
+ * __nary_node_base__ if [^_container_gen_<Selector,Derived>::type] returns a
+ __Reversible_Container__ model
+ * __associative_node__ if
+ [^_container_gen_<Selector,Key,_associative_node_>::type] returns a
+ __Reversible_Container__ model
+ * __associative_node_base__ if [^_container_gen_<Selector,Key,Derived>::type]
+ returns a __Reversible_Container__ model
+ * __tree_node_with_accumulation__ if `BaseGenerator` returns a [*Reversible
+ Tree Node] model
+ * __tree_node_with_accumulation_base__ if `BaseGenerator` returns a
+ [*Reversible Tree Node] model
+ * __tree_node_with_count__ if `BaseGenerator` returns a [*Reversible Tree
+ Node] model
+ * __tree_node_with_count_base__ if `BaseGenerator` returns a [*Reversible
+ Tree Node] model
+ * __tree_node_with_height__ if `BaseGenerator` returns a [*Reversible Tree
+ Node] model
+ * __tree_node_with_height_base__ if `BaseGenerator` returns a [*Reversible
+ Tree Node] model
+ * __tree_node_with_position__ if `BaseGenerator` returns a [*Reversible Tree
+ Node] model
+ * __tree_node_with_position_base__ if `BaseGenerator` returns a [*Reversible
+ Tree Node] model
+ * __tree_node_with_red_black_flag__ if `BaseGenerator` returns a [*Reversible
+ Tree Node] model
+ * __tree_node_with_red_black_flag_base__ if `BaseGenerator` returns a
+ [*Reversible Tree Node] model
+
+[endsect]
+
+[endsect] [/ Reversible Tree Node]
+
Added: sandbox/tree_node/libs/tree_node/doc/concept_tree_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_tree_node.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,333 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:tree_node Tree Node]
+
+[section Description]
+All tree node implementations that this library provides model this concept:
+a structure that maintains information about its data and its immediate
+parent-child relationships. However, in practice, a full-fledged tree node
+data structure or adaptor consists of four components: a __Base_Tree_Node__
+model that defines the functionality, a __Base_Type_Generator__ that returns
+the __Base_Tree_Node__ model from which adaptor types can also inherit, a
+[*Tree Node] model that inherits from the base type and is better suited for
+external usage, and a __Node_Type_Generator__ that returns the [*Tree Node]
+model.
+[endsect]
+
+[variablelist Notation
+ [[`Node`][A type that models the [*Tree Node] concept.]]
+ [[`node`][An object of type `Node::pointer`.]]
+ [[`const_node`][An object of type `Node::const_pointer`.]]
+ [
+ [`args...`]
+ [
+ Arguments to be forwarded to the appropriate
+ `Node::traits::data_type` constructor.
+ ]
+ ]
+]
+
+[section:types Associated Types]
+[table
+ [[Name][Expression][Description][Requirements]]
+ [
+ [Super type]
+ [`Node::super_t`]
+ [The type from which `Node` inherits its functionality.]
+ [
+ It must either be [^_tree_node_base_<Node>] or model the
+ __Base_Tree_Node__ concept.
+ ]
+ ]
+ [
+ [Data type]
+ [`Node::traits::data_type`]
+ [The type of user data stored in a tree node.]
+ []
+ ]
+ [
+ [Pointer type]
+ [`Node::pointer`]
+ [The type of a pointer to a `Node` object.]
+ [
+ It must model the __Trivial_Iterator__ concept, it must point to
+ a mutable object, and it must be implicitly convertible to
+ `Node::const_pointer`.
+ ]
+ ]
+ [
+ [Pointer-to-const type]
+ [`Node::const_pointer`]
+ [The type of a pointer to a `Node const` object.]
+ [
+ It must model the __Trivial_Iterator__ concept, and it must /not/
+ point to a mutable object.
+ ]
+ ]
+ [
+ [Iterator type]
+ [`Node::iterator`]
+ [
+ The type of iterator used to iterate through the children of a
+ `Node` object.
+ ]
+ [
+ It must model the __Input_Iterator__ concept, and it must be
+ convertible to `Node::const_iterator`.
+ ]
+ ]
+ [
+ [Immutable iterator type]
+ [`Node::const_iterator`]
+ [
+ The type of iterator used to iterate through the children of a
+ `Node const` object.
+ ]
+ [
+ It must model the __Input_Iterator__ concept, and it must /not/
+ point to a mutable object.
+ ]
+ ]
+ [
+ [Size type]
+ [`Node::size_type`]
+ [
+ The type of unsigned integer used to represent the number of
+ children of a `Node const` object.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:expressions Valid Expressions and Semantics]
+[table
+ [
+ [Name]
+ [Expression]
+ [Return Type]
+ [Semantics]
+ [Type Requirements]
+ [__Runtime_Complexity__]
+ ]
+ [
+ [Emplacement constructor]
+ [`Node(args...)`]
+ []
+ [
+ Constructs a `Node` object that initializes its user data with the
+ specified arguments.
+ ]
+ []
+ []
+ ]
+ [
+ [Data read-only access]
+ [``
+ get<_data_key_>(const_node)
+ get(const_node, _data_key_())
+ ``]
+ [`Node::traits::data_type const&`]
+ [Returns the user data stored in the tree node.]
+ []
+ [Constant]
+ ]
+ [
+ [Data access]
+ [``
+ get<_data_key_>(node)
+ get(node, _data_key_())
+ ``]
+ [`Node::traits::data_type&`]
+ [Returns the user data stored in the tree node.]
+ []
+ [Constant]
+ ]
+ [
+ [Data modification]
+ [`put(node, _data_key_(), data)`]
+ [`void`]
+ [Sets the user data to be stored in the tree node.]
+ [The type of `data` must be convertible to `Node::traits::data_type`.]
+ [Constant]
+ ]
+ [
+ [Key-value read-only access]
+ [``
+ get<Key>(const_node)
+ get(const_node, Key())
+ ``]
+ [``
+ _result_of__at_key_<Node const,Key>::type
+ ``]
+ [
+ Returns the value that the tree node associates with the specified
+ key.
+ ]
+ [
+ [^_result_of__has_key_<Node,Key>] must be equivalent to
+ __mpl_true__.
+ ]
+ [Constant]
+ ]
+ [
+ [Key-value access]
+ [``
+ get<Key>(node)
+ get(node, Key())
+ ``]
+ [``
+ _result_of__at_key_<Node,Key>::type
+ ``]
+ [
+ Returns the value that the tree node associates with the specified
+ key.
+ ]
+ [
+ [^_result_of__has_key_<Node,Key>] must be equivalent to
+ __mpl_true__.
+ ]
+ [Constant]
+ ]
+ [
+ [Key-value modification]
+ [`put(node, Key(), value)`]
+ [`void`]
+ [
+ Sets the value to be associated with the specified key type in the
+ tree node.
+ ]
+ [
+ [^_result_of__has_key_<Node,Key>] must be equivalent to
+ __mpl_true__, and the type of `value` must be convertible to
+ [^_result_of__value_at_key_<Node,Key>::type].
+ ]
+ [Constant]
+ ]
+ [
+ [Parent access]
+ [`const_node->get_parent_ptr()`]
+ [`Node::const_pointer`]
+ [
+ Returns a pointer to the parent of the tree node, or a null pointer
+ if the node is the root.
+ ]
+ []
+ [Constant]
+ ]
+ [
+ [Parent access]
+ [`node->get_parent_ptr()`]
+ [`Node::pointer`]
+ [
+ Returns a pointer to the parent of the tree node, or a null pointer
+ if the node is the root.
+ ]
+ []
+ [Constant]
+ ]
+ [
+ [Children range begin access]
+ [`const_node->begin()`]
+ [`Node::const_iterator`]
+ [
+ Returns an iterator pointing to the beginning of the range of
+ children of the tree node. If the range is empty, then the
+ iterator points past-the-end.
+ ]
+ []
+ [Constant]
+ ]
+ [
+ [Children range begin access]
+ [`node->begin()`]
+ [`Node::iterator`]
+ [
+ Returns an iterator pointing to the beginning of the range of
+ children of the tree node. If the range is empty, then the
+ iterator points past-the-end.
+ ]
+ []
+ [Constant]
+ ]
+ [
+ [Children range past-the-end access]
+ [`const_node->end()`]
+ [`Node::const_iterator`]
+ [
+ Returns an iterator pointing past the end of the range of children
+ of the tree node.
+ ]
+ []
+ [Constant]
+ ]
+ [
+ [Children range past-the-end access]
+ [`node->end()`]
+ [`Node::iterator`]
+ [
+ Returns an iterator pointing past the end of the range of children
+ of the tree node.
+ ]
+ []
+ [Constant]
+ ]
+ [
+ [Children range size query]
+ [`const_node->size()`]
+ [`Node::size_type`]
+ [Returns the number of children of the tree node.]
+ []
+ [Linear with respect to the number of children]
+ ]
+ [
+ [Leaf node query]
+ [`const_node->empty()`]
+ [`bool`]
+ [
+ Equivalent to `const_node->begin() == const_node->end()`, but may
+ be more efficient in certain cases.
+ ]
+ []
+ [Linear with respect to the number of children]
+ ]
+ [
+ [Remove all descendants]
+ [`node->clear()`]
+ [`void`]
+ [Removes all children and their descendants from the tree node.]
+ []
+ [Linear with respect to the number of children and their descendants]
+ ]
+]
+[endsect] [/ Valid Expressions and Semantics]
+
+[section Models]
+
+ * __binary_node__
+ * __binary_node_base__
+ * __nary_node__
+ * __nary_node_base__
+ * __associative_node__
+ * __associative_node_base__
+ * __tree_node_with_accumulation__
+ * __tree_node_with_accumulation_base__
+ * __tree_node_with_count__
+ * __tree_node_with_count_base__
+ * __tree_node_with_height__
+ * __tree_node_with_height_base__
+ * __tree_node_with_position__
+ * __tree_node_with_position_base__
+ * __tree_node_with_red_black_flag__
+ * __tree_node_with_red_black_flag_base__
+
+[endsect]
+
+[endsect] [/ Tree Node]
+
Added: sandbox/tree_node/libs/tree_node/doc/concepts.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concepts.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,47 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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 Concepts]
+
+[include concept_tree_node.qbk]
+[include concept_base_tree_node.qbk]
+[include concept_rvrsible_tree_node.qbk]
+[include concept_assoc_tree_node.qbk]
+[include concept_non_assoc_tree_node.qbk]
+[include concept_binary_tree_node.qbk]
+[include concept_nary_tree_node.qbk]
+[include concept_node_type_generator.qbk]
+[include concept_base_type_generator.qbk]
+[include concept_iterator.qbk]
+[include concept_full_iterator.qbk]
+[include concept_descendant_iterator.qbk]
+[include concept_indexable_container.qbk]
+[include concept_indexable_iterator.qbk]
+
+[heading Core Concepts]
+
+ * __Tree_Node__
+ * __Base_Tree_Node__
+ * __Reversible_Tree_Node__
+ * __Associative_Tree_Node__
+ * __Non_Associative_Tree_Node__
+ * __Binary_Tree_Node__
+ * __N_ary_Tree_Node__
+ * __Node_Type_Generator__
+ * __Base_Type_Generator__
+ * __Tree_Node_Iterator__
+ * __Full_Tree_Node_Iterator__
+ * __Tree_Node_Descendant_Iterator__
+
+[heading Auxiliary Concepts]
+
+ * __Indexable_Container__
+ * __Indexable_Iterator__
+
+[endsect] [/ Concepts]
+
Added: sandbox/tree_node/libs/tree_node/doc/html/index.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/index.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,70 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter 1. tree_node 0.4</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="index.html" title="Chapter 1. tree_node 0.4">
+<link rel="next" href="tree_node/concepts.html" title="Concepts">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="tree_node/concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a></div>
+<div class="chapter">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="tree_node"></a>Chapter 1. tree_node 0.4</h2></div>
+<div><div class="author"><h3 class="author">
+<span class="firstname">Cromwell D.</span> <span class="surname">Enage</span>
+</h3></div></div>
+<div><p class="copyright">Copyright © 2011-2013 Cromwell D. Enage</p></div>
+<div><div class="legalnotice">
+<a name="tree_node.legal"></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>
+</div></div>
+</div></div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section">Concepts</span></dt>
+<dt><span class="section">Reference</span></dt>
+<dt><span class="section">Changelog</span></dt>
+</dl>
+</div>
+<h3>
+<a name="tree_node.h0"></a>
+ <span class="phrase"><a name="tree_node.rationale"></a></span><a class="link" href="index.html#tree_node.rationale">Rationale</a>
+ </h3>
+<p>
+ Over the course of reimplementing a decision tree learning algorithm to use modern
+ C++ techniques, the need for a generic tree library became evident. The in-house
+ data structures in use at the time were undergoing modification as well. It was
+ found that the core operations occurred at the node level rather than at the
+ tree level, which stored only high-level algorithms. Efforts went underway to
+ retrofit these algorithms to use iterators and to further factor out generic
+ data structures from the decision tree components and other application-specific
+ utilities. This library represents the Boostified culmination of these efforts.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="http://www.boost.org/doc/libs/release/doc/src/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This library depends on Boost.ContainerGen, which is not yet a part
+ of Boost. For now, you must perform a Subversion checkout from the <a href="http://svn.boost.org/" target="_top">SVN
+ Trac</a>.
+ </p></td></tr>
+</table></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: March 02, 2013 at 02:42:02 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="tree_node/concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a></div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/changelog.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/changelog.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,142 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Changelog</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="prev" href="reference/can_use_fusion_with_typeof.html" title="BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/can_use_fusion_with_typeof.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tree_node.changelog"></a><a class="link" href="changelog.html" title="Changelog">Changelog</a>
+</h2></div></div></div>
+<h4>
+<a name="tree_node.changelog.h0"></a>
+ <span class="phrase"><a name="tree_node.changelog.from_0_3_to_0_4"></a></span><a class="link" href="changelog.html#tree_node.changelog.from_0_3_to_0_4">From
+ 0.3 to 0.4</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="reference/binode_container.html" title="binode_container<NodeGenerator,T,Balancer>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_container</span></code></a><span class="special">,</span> <a class="link" href="reference/binode_assoc_container.html" title="binode_associative_container< NodeGenerator , T1 , T2 , IsMultipleAssociative , CompareSelector , Balancer >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_associative_container</span></code></a><span class="special">,</span>
+ <a class="link" href="reference/binode_set.html" title="binode_set<NodeGenerator,T,CompareSelector,Balancer>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_set</span></code></a><span class="special">,</span> <a class="link" href="reference/binode_multiset.html" title="binode_multiset<NodeGenerator,T,CompareSelector,Balancer>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_multiset</span></code></a><span class="special">,</span> <a class="link" href="reference/binode_map.html" title="binode_map<NodeGenerator,Key,Mapped,CompareSelector,Balancer>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_map</span></code></a><span class="special">,</span> <span class="keyword">and</span>
+ <a class="link" href="reference/binode_multimap.html" title="binode_multimap<NodeGenerator,Key,Mapped,CompareSelector,Balancer>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_multimap</span></code></a> <span class="identifier">data</span> <span class="identifier">structures</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="reference/red_black_balancer.html" title="red_black_balancer"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">red_black_balancer</span></code></a> <span class="keyword">and</span> <a class="link" href="reference/avl_balancer.html" title="avl_balancer"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">adelson_velskii_landis_balancer</span></code></a> <span class="identifier">structs</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a><span class="special">,</span> <a class="link" href="concepts/indexable_container.html" title="Indexable Container"><span class="bold"><strong>Indexable Container</strong></span></a><span class="special">,</span> <span class="keyword">and</span>
+ <a class="link" href="concepts/indexable_iterator.html" title="Indexable Iterator"><span class="bold"><strong>Indexable Iterator</strong></span></a> <span class="identifier">concepts</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Refined</span> <span class="identifier">the</span> <span class="special">[*</span><span class="identifier">Type</span> <span class="identifier">Generator</span><span class="special">]</span> <span class="identifier">concept</span> <span class="identifier">into</span> <a class="link" href="concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node Type Generator</strong></span></a> <span class="keyword">and</span>
+ <a class="link" href="concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> <span class="identifier">concepts</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="reference/copyable_and_movable.html" title="BOOST_TREE_NODE_COPYABLE_AND_MOVABLE"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_COPYABLE_AND_MOVABLE</span></code></a><span class="special">,</span>
+ <a class="link" href="reference/emplace_ctor_fwd_decl.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL</span></code></a><span class="special">,</span>
+ <a class="link" href="reference/emplace_ctor_inline_hdr.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HDR"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER</span></code></a><span class="special">,</span>
+ <a class="link" href="reference/emplace_ctor_inline_def.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF</span></code></a><span class="special">,</span>
+ <a class="link" href="reference/emplace_ctor_w_alloc_f_dcl.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL</span></code></a><span class="special">,</span>
+ <a class="link" href="reference/emplace_ctor_w_alloc_i_hdr.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER</span></code></a><span class="special">,</span>
+ <a class="link" href="reference/emplace_ctor_w_alloc_i_def.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF</span></code></a><span class="special">,</span>
+ <a class="link" href="reference/can_use_fusion.html" title="BOOST_TREE_NODE_CAN_USE_FUSION"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_CAN_USE_FUSION</span></code></a><span class="special">,</span> <span class="keyword">and</span> <a class="link" href="reference/can_use_fusion_with_typeof.html" title="BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF</span></code></a>
+ <span class="identifier">preprocessor</span> <span class="identifier">macros</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <span class="identifier">size</span> <span class="identifier">type</span> <span class="keyword">and</span> <span class="identifier">emplacement</span> <span class="identifier">constructor</span> <span class="keyword">and</span> <span class="identifier">size</span> <span class="identifier">method</span> <span class="identifier">expressions</span> <span class="identifier">to</span>
+ <a class="link" href="concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> <span class="identifier">concept</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <span class="error">`</span><span class="identifier">on_post_</span><span class="special">*</span><span class="error">`</span> <span class="keyword">and</span> <span class="error">`</span><span class="identifier">on_post_</span><span class="special">*</span><span class="identifier">_impl</span><span class="error">`</span> <span class="identifier">method</span> <span class="identifier">expressions</span> <span class="identifier">to</span>
+ <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> <span class="identifier">concept</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <span class="identifier">iterator</span> <span class="identifier">range</span> <span class="keyword">and</span> <span class="identifier">immutable</span> <span class="identifier">iterator</span> <span class="identifier">range</span> <span class="identifier">types</span> <span class="identifier">to</span>
+ <a class="link" href="concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> <span class="identifier">concept</span><span class="special">.</span>
+<span class="special">*</span> <a class="link" href="concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> <span class="identifier">models</span> <span class="identifier">are</span> <span class="identifier">now</span> Movable<span class="special">.</span>
+<span class="special">*</span> <a class="link" href="concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> <span class="identifier">models</span> <span class="identifier">are</span> <span class="identifier">no</span> <span class="identifier">longer</span> Equality Comparable <span class="keyword">or</span>
+ Less-Than Comparable<span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="reference/with_accumulation.html" title="with_accumulation<BaseGenerator,T1,T2,AccumulationKey>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation</span></code></a> <span class="identifier">adaptor</span> <span class="keyword">class</span> <span class="keyword">template</span><span class="special">,</span>
+ <span class="identifier">the</span> <span class="identifier">corresponding</span> <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> <span class="identifier">model</span>
+ <a class="link" href="reference/with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a><span class="special">,</span> <span class="identifier">the</span> <span class="identifier">corresponding</span>
+ <a class="link" href="concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node Type Generator</strong></span></a> <span class="identifier">model</span> <a class="link" href="reference/with_accumulation_gen.html" title="with_accumulation_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_gen</span></code></a><span class="special">,</span>
+ <span class="keyword">and</span> <span class="identifier">the</span> <span class="identifier">corresponding</span> <a class="link" href="concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> <span class="identifier">model</span>
+ <a class="link" href="reference/with_accumulation_base_gen.html" title="with_accumulation_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base_gen</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="reference/with_count.html" title="with_count<BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count</span></code></a> <span class="identifier">adaptor</span> <span class="keyword">class</span> <span class="keyword">template</span><span class="special">,</span> <span class="identifier">the</span> <span class="identifier">corresponding</span>
+ <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> <span class="identifier">model</span> <a class="link" href="reference/with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base</span></code></a><span class="special">,</span> <span class="identifier">the</span>
+ <span class="identifier">corresponding</span> <a class="link" href="concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node Type Generator</strong></span></a> <span class="identifier">model</span> <a class="link" href="reference/with_count_gen.html" title="with_count_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_gen</span></code></a><span class="special">,</span>
+ <span class="keyword">and</span> <span class="identifier">the</span> <span class="identifier">corresponding</span> <a class="link" href="concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> <span class="identifier">model</span>
+ <a class="link" href="reference/with_count_base_gen.html" title="with_count_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base_gen</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Renamed</span> <span class="error">`</span><span class="identifier">with_depth</span><span class="error">`</span> <span class="identifier">to</span> <a class="link" href="reference/with_height.html" title="with_height<BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Renamed</span> <span class="error">`</span><span class="identifier">with_depth_base</span><span class="error">`</span> <span class="identifier">to</span> <a class="link" href="reference/with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Renamed</span> <span class="error">`</span><span class="identifier">with_depth_gen</span><span class="error">`</span> <span class="identifier">to</span> <a class="link" href="reference/with_height_gen.html" title="with_height_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_gen</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <span class="identifier">the</span> <a class="link" href="concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> <span class="identifier">models</span>
+ <a class="link" href="reference/with_count_base_gen.html" title="with_count_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base_gen</span></code></a><span class="special">,</span> <a class="link" href="reference/with_height_base_gen.html" title="with_height_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base_gen</span></code></a><span class="special">,</span>
+ <a class="link" href="reference/with_position_base_gen.html" title="with_position_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base_gen</span></code></a><span class="special">,</span> <span class="keyword">and</span>
+ <a class="link" href="reference/with_rb_flag_base_gen.html" title="with_red_black_flag_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base_gen</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Removed</span> <span class="error">`</span><span class="identifier">tree_node_equal</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">tree_node_strictly_equal</span><span class="error">`</span><span class="special">,</span>
+ <span class="error">`</span><span class="identifier">tree_node_lexicographical_compare</span><span class="error">`</span><span class="special">,</span> <span class="keyword">and</span>
+ <span class="error">`</span><span class="identifier">tree_node_strict_lexicographical_compare</span><span class="error">`</span> <span class="identifier">algorithms</span><span class="special">.</span>
+</pre>
+<h4>
+<a name="tree_node.changelog.h1"></a>
+ <span class="phrase"><a name="tree_node.changelog.from_0_2_to_0_3"></a></span><a class="link" href="changelog.html#tree_node.changelog.from_0_2_to_0_3">From
+ 0.2 to 0.3</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a><span class="special">,</span> <a class="link" href="concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a><span class="special">,</span>
+ <a class="link" href="concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a><span class="special">,</span> <a class="link" href="concepts/nary_tree_node.html" title="N-ary Tree Node"><span class="bold"><strong>N-ary Tree Node</strong></span></a><span class="special">,</span> <span class="keyword">and</span> <span class="special">[*</span><span class="identifier">Type</span> <span class="identifier">Generator</span><span class="special">]</span> <span class="identifier">concepts</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="reference/binary_node.html" title="binary_node<T,Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node</span></code></a> <span class="identifier">data</span> <span class="identifier">structure</span><span class="special">,</span> <span class="identifier">the</span> <span class="identifier">corresponding</span> <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a>
+ <span class="identifier">model</span> <a class="link" href="reference/binary_node_base.html" title="binary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_base</span></code></a><span class="special">,</span> <span class="keyword">and</span> <span class="identifier">the</span> <span class="identifier">corresponding</span> <span class="special">[*</span><span class="identifier">Type</span> <span class="identifier">Generator</span><span class="special">]</span> <span class="identifier">model</span>
+ <a class="link" href="reference/binary_node_gen.html" title="binary_node_gen<Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_gen</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Renamed</span> <span class="error">`</span><span class="identifier">raw_node</span><span class="error">`</span> <span class="identifier">to</span> <a class="link" href="reference/nary_node.html" title="nary_node<T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node</span></code></a><span class="special">;</span> <span class="identifier">added</span> <span class="identifier">the</span> <span class="identifier">corresponding</span>
+ <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> <span class="identifier">model</span> <a class="link" href="reference/nary_node_base.html" title="nary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_base</span></code></a> <span class="keyword">and</span> <span class="identifier">the</span> <span class="identifier">corresponding</span>
+ <span class="special">[*</span><span class="identifier">Type</span> <span class="identifier">Generator</span><span class="special">]</span> <span class="identifier">model</span> <a class="link" href="reference/nary_node_gen.html" title="nary_node_gen<Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_gen</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Renamed</span> <span class="error">`</span><span class="identifier">raw_associative_node</span><span class="error">`</span> <span class="identifier">to</span> <a class="link" href="reference/associative_node.html" title="associative_node<Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node</span></code></a><span class="special">;</span> <span class="identifier">added</span> <span class="identifier">the</span>
+ <span class="identifier">corresponding</span> <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> <span class="identifier">model</span> <a class="link" href="reference/associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_base</span></code></a> <span class="keyword">and</span> <span class="identifier">the</span>
+ <span class="identifier">corresponding</span> <span class="special">[*</span><span class="identifier">Type</span> <span class="identifier">Generator</span><span class="special">]</span> <span class="identifier">model</span> <a class="link" href="reference/associative_node_gen.html" title="associative_node_gen<Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_gen</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <span class="identifier">the</span> <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> <span class="identifier">model</span> <span class="error">`</span><span class="identifier">with_depth_base</span><span class="error">`</span> <span class="keyword">and</span> <span class="identifier">the</span> <span class="identifier">corresponding</span>
+ <span class="special">[*</span><span class="identifier">Type</span> <span class="identifier">Generator</span><span class="special">]</span> <span class="identifier">model</span> <span class="error">`</span><span class="identifier">with_depth_gen</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="reference/with_position.html" title="with_position<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position</span></code></a> <span class="identifier">adaptor</span> <span class="keyword">class</span> <span class="keyword">template</span><span class="special">,</span> <span class="identifier">the</span> <span class="identifier">corresponding</span>
+ <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> <span class="identifier">model</span> <a class="link" href="reference/with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base</span></code></a><span class="special">,</span> <span class="keyword">and</span> <span class="identifier">the</span>
+ <span class="identifier">corresponding</span> <span class="special">[*</span><span class="identifier">Type</span> <span class="identifier">Generator</span><span class="special">]</span> <span class="identifier">model</span> <a class="link" href="reference/with_position_gen.html" title="with_position_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_gen</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="reference/with_rb_flag.html" title="with_red_black_flag<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag</span></code></a> <span class="identifier">adaptor</span> <span class="keyword">class</span> <span class="keyword">template</span><span class="special">,</span> <span class="identifier">the</span>
+ <span class="identifier">corresponding</span> <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> <span class="identifier">model</span>
+ <a class="link" href="reference/with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base</span></code></a><span class="special">,</span> <span class="keyword">and</span> <span class="identifier">the</span> <span class="identifier">corresponding</span>
+ <span class="special">[*</span><span class="identifier">Type</span> <span class="identifier">Generator</span><span class="special">]</span> <span class="identifier">model</span> <a class="link" href="reference/with_rb_flag_gen.html" title="with_red_black_flag_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_gen</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="reference/breadth_first_desc_iter.html" title="breadth_first_descendant_iterator<Node>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">breadth_first_descendant_iterator</span></code></a><span class="special">,</span>
+ <a class="link" href="reference/pre_order_desc_iter.html" title="pre_order_descendant_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">pre_order_descendant_iterator</span></code></a><span class="special">,</span> <a class="link" href="reference/post_order_desc_iter.html" title="post_order_descendant_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">post_order_descendant_iterator</span></code></a><span class="special">,</span>
+ <a class="link" href="reference/in_order_iterator.html" title="in_order_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">in_order_iterator</span></code></a><span class="special">,</span> <span class="keyword">and</span> <a class="link" href="reference/depth_first_desc_iter.html" title="depth_first_descendant_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">depth_first_descendant_iterator</span></code></a> <span class="identifier">adaptor</span>
+ <span class="keyword">class</span> <span class="identifier">templates</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="reference/dereference_iterator.html" title="dereference_iterator()"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">dereference_iterator</span><span class="special">()</span></code></a><span class="special">,</span> <span class="error">`</span><span class="identifier">tree_node_equal</span><span class="error">`</span><span class="special">,</span>
+ <span class="error">`</span><span class="identifier">tree_node_strictly_equal</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">tree_node_lexicographical_compare</span><span class="error">`</span><span class="special">,</span> <span class="keyword">and</span>
+ <span class="error">`</span><span class="identifier">tree_node_strict_lexicographical_compare</span><span class="error">`</span> <span class="identifier">algorithms</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Removed</span> <span class="special">[*</span><span class="identifier">Factory</span><span class="special">-</span><span class="identifier">Constructible</span> <span class="identifier">Tree</span> <span class="identifier">Node</span><span class="special">]</span> <span class="keyword">and</span> <span class="special">[*</span><span class="identifier">Cloneable</span> <span class="identifier">Tree</span> <span class="identifier">Node</span><span class="special">]</span>
+ <span class="identifier">concepts</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Removed</span> <span class="error">`</span><span class="identifier">tree_node_factory</span><span class="error">`</span> <span class="identifier">facade</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Removed</span> <span class="error">`</span><span class="identifier">shared_tree_node_base</span><span class="error">`</span> <span class="error">`</span><span class="keyword">struct</span><span class="error">`</span> <span class="keyword">template</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Removed</span> <span class="error">`</span><span class="identifier">simple_node</span><span class="error">`</span> <span class="keyword">and</span> <span class="error">`</span><span class="identifier">simple_associative_node</span><span class="error">`</span> <span class="identifier">data</span> <span class="identifier">structures</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Removed</span> <span class="error">`</span><span class="identifier">with_child_range_access</span><span class="error">`</span> <span class="identifier">adaptor</span> <span class="keyword">class</span> <span class="keyword">template</span><span class="special">;</span> <a class="link" href="concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a>
+ <span class="identifier">concept</span> <span class="identifier">now</span> <span class="identifier">requires</span> <span class="identifier">child</span> <span class="identifier">range</span> <span class="identifier">access</span> <span class="keyword">for</span> <span class="identifier">all</span> <span class="identifier">models</span><span class="special">.</span>
+</pre>
+<h4>
+<a name="tree_node.changelog.h2"></a>
+ <span class="phrase"><a name="tree_node.changelog.from_0_1_to_0_2"></a></span><a class="link" href="changelog.html#tree_node.changelog.from_0_1_to_0_2">From
+ 0.1 to 0.2</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a><span class="special">,</span> <span class="special">[*</span><span class="identifier">Factory</span><span class="special">-</span><span class="identifier">Constructible</span> <span class="identifier">Tree</span> <span class="identifier">Node</span><span class="special">],</span> <span class="keyword">and</span>
+ <span class="special">[*</span><span class="identifier">Cloneable</span> <span class="identifier">Tree</span> <span class="identifier">Node</span><span class="special">]</span> <span class="identifier">concepts</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <span class="error">`</span><span class="identifier">tree_node_factory</span><span class="error">`</span> <span class="identifier">facade</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <a class="link" href="reference/tree_node_base.html" title="tree_node_base<Derived>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">tree_node_base</span></code></a> <span class="keyword">and</span> <span class="error">`</span><span class="identifier">shared_tree_node_base</span><span class="error">`</span> <span class="error">`</span><span class="keyword">struct</span><span class="error">`</span> <span class="identifier">templates</span><span class="special">;</span>
+ <span class="identifier">each</span> <a class="link" href="concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> <span class="identifier">model</span> <span class="identifier">that</span> <span class="identifier">is</span> <span class="keyword">not</span> <span class="identifier">a</span> <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> <span class="identifier">now</span> <span class="identifier">inherits</span> <span class="identifier">from</span>
+ <span class="identifier">a</span> <span class="identifier">corresponding</span> <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> <span class="identifier">which</span><span class="special">,</span> <span class="identifier">in</span> <span class="identifier">turn</span><span class="special">,</span> <span class="identifier">inherits</span> <span class="identifier">from</span> <span class="identifier">one</span> <span class="identifier">of</span>
+ <span class="identifier">these</span> <span class="identifier">two</span> <span class="identifier">types</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Added</span> <span class="error">`</span><span class="identifier">with_child_range_access</span><span class="error">`</span> <span class="keyword">and</span> <span class="error">`</span><span class="identifier">with_depth</span><span class="error">`</span> <span class="identifier">adaptor</span> <span class="keyword">class</span> <span class="identifier">templates</span><span class="special">.</span>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reference/can_use_fusion_with_typeof.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Concepts</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="prev" href="../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="next" href="concepts/tree_node.html" title="Tree Node">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="concepts/tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tree_node.concepts"></a><a class="link" href="concepts.html" title="Concepts">Concepts</a>
+</h2></div></div></div>
+<h4>
+<a name="tree_node.concepts.h0"></a>
+ <span class="phrase"><a name="tree_node.concepts.core_concepts"></a></span><a class="link" href="concepts.html#tree_node.concepts.core_concepts">Core
+ Concepts</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a>
+ <span class="special">*</span> <a class="link" href="concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a>
+ <span class="special">*</span> <a class="link" href="concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ <span class="special">*</span> <a class="link" href="concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ <span class="special">*</span> <a class="link" href="concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a>
+ <span class="special">*</span> <a class="link" href="concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ <span class="special">*</span> <a class="link" href="concepts/nary_tree_node.html" title="N-ary Tree Node"><span class="bold"><strong>N-ary Tree Node</strong></span></a>
+<span class="special">*</span> <a class="link" href="concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node Type Generator</strong></span></a>
+<span class="special">*</span> <a class="link" href="concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a>
+<span class="special">*</span> <a class="link" href="concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a>
+ <span class="special">*</span> <a class="link" href="concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+ <span class="special">*</span> <a class="link" href="concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+</pre>
+<h4>
+<a name="tree_node.concepts.h1"></a>
+ <span class="phrase"><a name="tree_node.concepts.auxiliary_concepts"></a></span><a class="link" href="concepts.html#tree_node.concepts.auxiliary_concepts">Auxiliary
+ Concepts</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="concepts/indexable_container.html" title="Indexable Container"><span class="bold"><strong>Indexable Container</strong></span></a>
+<span class="special">*</span> <a class="link" href="concepts/indexable_iterator.html" title="Indexable Iterator"><span class="bold"><strong>Indexable Iterator</strong></span></a>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="concepts/tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/associative_tree_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/associative_tree_node.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,499 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Associative Tree Node</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="reversible_tree_node.html" title="Reversible Tree Node">
+<link rel="next" href="non_assoc_tree_node.html" title="Non-Associative Tree Node">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reversible_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="non_assoc_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.associative_tree_node"></a><a class="link" href="associative_tree_node.html" title="Associative Tree Node">Associative
+ Tree Node</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.associative_tree_node.description"></a><a class="link" href="associative_tree_node.html#tree_node.concepts.associative_tree_node.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Models of this concept provide key-based access to their child nodes.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.associative_tree_node.refinement_of"></a><a class="link" href="associative_tree_node.html#tree_node.concepts.associative_tree_node.refinement_of" title="Refinement of">Refinement
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Node</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>Associative Tree Node</strong></span>
+ concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">const_node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_pointer</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">key</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span>
+ <span class="keyword">const</span><span class="special">&</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">args</span><span class="special">...</span></code></span></dt>
+<dd><p>
+ Arguments to be forwarded to the appropriate <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span></code>
+ constructor.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.associative_tree_node.types"></a><a class="link" href="associative_tree_node.html#tree_node.concepts.associative_tree_node.types" title="Associated Types">Associated
+ Types</a>
+</h4></div></div></div>
+<p>
+ Three new types are introduced.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Key type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a key that a tree node will associate with a child
+ node.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator range type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">iterator_range</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a range of child nodes and their associated keys.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model a Boost.Range concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable iterator range type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">const_iterator_range</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of an immutable view of a range of child nodes and their
+ associated keys.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model a Boost.Range concept.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ In addition, the requirements for the iterator types are strengthened:
+ </p>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">The</span> <span class="identifier">value</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">define</span> <span class="identifier">a</span> <span class="error">`</span><span class="identifier">first_type</span><span class="error">`</span> <span class="identifier">type</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="identifier">value</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">define</span> <span class="identifier">a</span> <span class="error">`</span><span class="identifier">first</span><span class="error">`</span> <span class="identifier">member</span> <span class="identifier">variable</span> <span class="identifier">of</span>
+ <span class="identifier">type</span> <span class="error">`</span><span class="identifier">first_type</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Given</span> <span class="identifier">an</span> <span class="identifier">object</span> <span class="error">`</span><span class="identifier">itr</span><span class="error">`</span> <span class="identifier">of</span> <span class="identifier">type</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">itr</span><span class="special">-></span><span class="identifier">first</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">be</span>
+ <span class="identifier">convertible</span> <span class="identifier">to</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="identifier">value</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">define</span> <span class="identifier">a</span> <span class="error">`</span><span class="identifier">second_type</span><span class="error">`</span> <span class="identifier">type</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="identifier">value</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">define</span> <span class="identifier">a</span> <span class="error">`</span><span class="identifier">second</span><span class="error">`</span> <span class="identifier">member</span> <span class="identifier">variable</span>
+ <span class="identifier">of</span> <span class="identifier">type</span> <span class="error">`</span><span class="identifier">second_type</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Given</span> <span class="identifier">an</span> <span class="identifier">object</span> <span class="error">`</span><span class="identifier">itr</span><span class="error">`</span> <span class="identifier">of</span> <span class="identifier">type</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span><span class="error">`</span><span class="special">,</span>
+ <span class="special">[^</span><a class="link" href="../reference/dereference_iterator.html" title="dereference_iterator()">tree_node::dereference_iterator</a><span class="special">(</span><span class="identifier">itr</span><span class="special">)]</span> <span class="identifier">must</span> <span class="identifier">be</span> <span class="identifier">convertible</span> <span class="identifier">to</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">&</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="identifier">value</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">define</span> <span class="identifier">a</span> <span class="error">`</span><span class="identifier">first_type</span><span class="error">`</span> <span class="identifier">type</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="identifier">value</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">define</span> <span class="identifier">a</span> <span class="error">`</span><span class="identifier">first</span><span class="error">`</span> <span class="identifier">member</span>
+ <span class="identifier">variable</span> <span class="identifier">of</span> <span class="identifier">type</span> <span class="error">`</span><span class="identifier">first_type</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Given</span> <span class="identifier">an</span> <span class="identifier">object</span> <span class="error">`</span><span class="identifier">itr</span><span class="error">`</span> <span class="identifier">of</span> <span class="identifier">type</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="error">`</span><span class="special">,</span> <span class="error">`</span><span class="identifier">itr</span><span class="special">-></span><span class="identifier">first</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">be</span>
+ <span class="identifier">convertible</span> <span class="identifier">to</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="identifier">value</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">define</span> <span class="identifier">a</span> <span class="error">`</span><span class="identifier">second_type</span><span class="error">`</span> <span class="identifier">type</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="identifier">value</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">define</span> <span class="identifier">a</span> <span class="error">`</span><span class="identifier">second</span><span class="error">`</span> <span class="identifier">member</span>
+ <span class="identifier">variable</span> <span class="identifier">of</span> <span class="identifier">type</span> <span class="error">`</span><span class="identifier">second_type</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Given</span> <span class="identifier">an</span> <span class="identifier">object</span> <span class="error">`</span><span class="identifier">itr</span><span class="error">`</span> <span class="identifier">of</span> <span class="identifier">type</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="error">`</span><span class="special">,</span>
+ <span class="special">[^</span><a class="link" href="../reference/dereference_iterator.html" title="dereference_iterator()">tree_node::dereference_iterator</a><span class="special">(</span><span class="identifier">itr</span><span class="special">)]</span> <span class="identifier">must</span> <span class="identifier">be</span> <span class="identifier">convertible</span> <span class="identifier">to</span> <span class="error">`</span><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">&</span><span class="error">`</span><span class="special">.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.associative_tree_node.expressions"></a><a class="link" href="associative_tree_node.html#tree_node.concepts.associative_tree_node.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<p>
+ In addition to the expressions defined in the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept, the following expressions
+ must be valid.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Type requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+<th>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Amortized_analysis" target="_top">Runtime
+ Complexity</a>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Child creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">emplace</span><span class="special">(</span><span class="identifier">key</span><span class="special">,</span>
+ <span class="identifier">args</span><span class="special">...);</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Creates and returns a tree node to be associated with the specified
+ key in the range of children of the invoking node. The node returned
+ will initialize its data with the specified arguments.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child copy creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">key</span><span class="special">,</span>
+ <span class="identifier">const_node</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type must model the Copy Constructible and Movable
+ concepts.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Creates and returns a deep copy of <code class="computeroutput"><span class="identifier">const_node</span></code>
+ to be associated with the specified key in the range of children
+ of the invoking node.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of descendants of <code class="computeroutput"><span class="identifier">const_node</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child search
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">find</span><span class="special">(</span><span class="identifier">key</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an iterator pointing to a child node associated with
+ the specified key, or <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">end</span><span class="special">()</span></code> if no such child exists.
+ </p>
+ </td>
+<td>
+ <p>
+ Logarithmic
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child search
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">find</span><span class="special">(</span><span class="identifier">key</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an iterator pointing to a child node associated with
+ the specified key, or <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">end</span><span class="special">()</span></code> if no such child exists.
+ </p>
+ </td>
+<td>
+ <p>
+ Logarithmic
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child search range
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">equal_range</span><span class="special">(</span><span class="identifier">key</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">const_iterator_range</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a Boost.Range of all child nodes
+ associated with the specified key. The child nodes in the range
+ returned cannot be modified. If no such children exist, then
+ the range will be empty.
+ </p>
+ </td>
+<td>
+ <p>
+ Logarithmic
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child search range
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">equal_range</span><span class="special">(</span><span class="identifier">key</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">iterator_range</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a Boost.Range of all child nodes
+ associated with the specified key. The child nodes in the range
+ returned can be modified. If no such children exist, then the
+ range will be empty.
+ </p>
+ </td>
+<td>
+ <p>
+ Logarithmic
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove children
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">erase</span><span class="special">(</span><span class="identifier">key</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">size_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Removes all child nodes associated with the specified key from
+ the tree node. Returns the number of children removed.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of children and their descendants
+ in the range to be removed, plus logarithmic
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.associative_tree_node.models"></a><a class="link" href="associative_tree_node.html#tree_node.concepts.associative_tree_node.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/associative_node.html" title="associative_node<Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_base</span></code></a>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="reversible_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="non_assoc_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/base_tree_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/base_tree_node.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,748 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Base Tree Node</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="tree_node.html" title="Tree Node">
+<link rel="next" href="reversible_tree_node.html" title="Reversible Tree Node">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reversible_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.base_tree_node"></a><a class="link" href="base_tree_node.html" title="Base Tree Node">Base Tree Node</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.base_tree_node.description"></a><a class="link" href="base_tree_node.html#tree_node.concepts.base_tree_node.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Models of this concept allow the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor types to parameterically
+ inherit their functionality for greater reuse.
+ </p>
+<p>
+ In practice, each <span class="bold"><strong>Base Tree Node</strong></span> model
+ must do the following:
+ </p>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">Inherit</span> <span class="identifier">from</span> <span class="identifier">either</span> <a class="link" href="../reference/tree_node_base.html" title="tree_node_base<Derived>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">tree_node_base</span></code></a> <span class="keyword">or</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="identifier">a</span>
+ <a class="link" href="base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Take</span> <span class="identifier">in</span> <span class="identifier">the</span> <span class="identifier">derived</span> <span class="identifier">type</span> <span class="keyword">and</span> <span class="identifier">the</span> <span class="identifier">data</span> <span class="identifier">type</span> <span class="identifier">as</span> <span class="keyword">template</span> <span class="identifier">parameters</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Also</span> <span class="identifier">take</span> <span class="identifier">in</span> <span class="identifier">the</span> <span class="identifier">key</span> <span class="identifier">type</span> <span class="keyword">if</span> <span class="identifier">the</span> <span class="identifier">derived</span> <span class="identifier">type</span> <span class="identifier">is</span> <span class="special">(</span><span class="identifier">possibly</span><span class="special">)</span> <span class="identifier">an</span>
+ <a class="link" href="associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> <span class="identifier">model</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">Declare</span> <span class="identifier">a</span> <span class="keyword">template</span> <span class="identifier">instantiation</span> <span class="identifier">of</span> <a class="link" href="../reference/tree_node_base.html" title="tree_node_base<Derived>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">tree_node_base</span></code></a> <span class="identifier">with</span> <span class="identifier">the</span> <span class="identifier">derived</span>
+ <span class="identifier">type</span> <span class="identifier">as</span> <span class="identifier">a</span> <span class="error">`</span><span class="keyword">friend</span> <span class="keyword">struct</span><span class="error">`</span> <span class="keyword">if</span> <span class="identifier">it</span> <span class="identifier">overrides</span> <span class="identifier">any</span> <span class="identifier">of</span> <a class="link" href="../reference/tree_node_base.html" title="tree_node_base<Derived>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">tree_node_base</span></code></a>
+ <span class="identifier">implementation</span> <span class="identifier">methods</span><span class="special">.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.base_tree_node.refinement_of"></a><a class="link" href="base_tree_node.html#tree_node.concepts.base_tree_node.refinement_of" title="Refinement of">Refinement
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Base</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>Base Tree Node</strong></span>
+ concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">base</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Base</span><span class="special">*</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">const_base</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Base</span> <span class="keyword">const</span><span class="special">*</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Node</span></code></span></dt>
+<dd><p>
+ A <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a> model that inherits from <code class="computeroutput"><span class="identifier">Base</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">copy</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">&</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">source</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">&&</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">itr</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">BIC</span></code></span></dt>
+<dd><p>
+ A type that models the Boolean Integral Constant concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">bic</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">BIC</span></code>.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.base_tree_node.types"></a><a class="link" href="base_tree_node.html#tree_node.concepts.base_tree_node.types" title="Associated Types">Associated
+ Types</a>
+</h4></div></div></div>
+<p>
+ No additional types beyond those defined in the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.base_tree_node.expressions"></a><a class="link" href="base_tree_node.html#tree_node.concepts.base_tree_node.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<p>
+ In addition to the expressions defined in the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept, the following expressions
+ must be valid.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+<th>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Amortized_analysis" target="_top">Runtime
+ Complexity</a>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Derived access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-></span><span class="identifier">get_derived</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a pointer to the same <code class="computeroutput"><span class="identifier">Node</span></code>
+ object.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_base</span><span class="special">-></span><span class="identifier">get_derived</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a pointer to the same immutable <code class="computeroutput"><span class="identifier">Node</span></code>
+ object.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Also, the following expressions must be valid (unless the <code class="computeroutput"><span class="identifier">Node</span></code> type does <span class="emphasis"><em>not</em></span>
+ define the operation within which the expression can be invoked).
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+<th>
+ <p>
+ Type requirements
+ </p>
+ </th>
+<th>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Amortized_analysis" target="_top">Runtime
+ Complexity</a>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Derived copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Base</span><span class="special">(</span><span class="identifier">copy</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constructs a deep copy of the specified node.
+ </p>
+ </td>
+<td>
+ <p>
+ The initializer list of the <code class="computeroutput"><span class="identifier">Node</span></code>
+ copy constructor must be able to call this constructor.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of descendants
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Base</span><span class="special">(</span><span class="identifier">source</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Transfers the contents of the specified node to this one.
+ </p>
+ </td>
+<td>
+ <p>
+ The initializer list of the <code class="computeroutput"><span class="identifier">Node</span></code>
+ move constructor must be able to call this constructor.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of children
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Base copy assignment
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-></span><span class="identifier">copy_assign</span><span class="special">(</span><span class="identifier">copy</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Structurally modifies the invoking node so that it is a deep
+ copy of the specified node.
+ </p>
+ </td>
+<td>
+ <p>
+ The body of the <code class="computeroutput"><span class="identifier">Node</span></code>
+ copy assignment operator must be able to call this method.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of descendants
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Base move assignment
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-></span><span class="identifier">move_assign</span><span class="special">(</span><span class="identifier">source</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Structurally modifies the invoking node so that it stores the
+ contents of the specified node.
+ </p>
+ </td>
+<td>
+ <p>
+ The body of the <code class="computeroutput"><span class="identifier">Node</span></code>
+ move assignment operator must be able to call this method.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of children
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy or move notification
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-></span><span class="identifier">on_post_copy_or_move</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Upholds any <code class="computeroutput"><span class="identifier">Node</span></code>-specific
+ invariants not upheld by either the <code class="computeroutput"><span class="identifier">Node</span></code>
+ copy or move constructor's initializer lists or by the base copy
+ or move assignment method. For example, if the <code class="computeroutput"><span class="identifier">Base</span></code> type defines <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code> member variables referring
+ to a parent and a number of child nodes, then this method and
+ not the derived copy or move constructors must link the children
+ to their parent via derived access because <code class="computeroutput"><span class="identifier">Node</span></code>
+ will be an incomplete type during initialization.
+ </p>
+ </td>
+<td>
+ <p>
+ The body of the <code class="computeroutput"><span class="identifier">Node</span></code>
+ copy or move constructor or assignment operator must be able
+ to call this method.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of children plus the number
+ of ancestors
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value modified notification
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-></span><span class="identifier">on_post_modify_value</span><span class="special">(</span><span class="identifier">Key</span><span class="special">())</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Updates any <code class="computeroutput"><span class="identifier">Node</span></code>-specific
+ information invalidated by operations that modify the value that
+ the tree node associates with the specified key.
+ </p>
+ </td>
+<td>
+ <p>
+ The body of the <code class="computeroutput"><span class="identifier">Node</span></code>
+ key-value modification function must be able to call this method,
+ and <code class="literal"><a class="link" href="../reference/has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis">tree_node::result_of::has_key</a><Node,Key></code>
+ must be equivalent to boost::mpl::true_
.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of ancestors
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value propagated notification
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-></span><span class="identifier">on_post_propagate_value</span><span class="special">(</span><span class="identifier">Key</span><span class="special">())</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Updates any <code class="computeroutput"><span class="identifier">Node</span></code>-specific
+ information invalidated by operations that propagate the value
+ that the tree node associates with the specified key up the tree
+ node's chain of ancestors.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../reference/has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis">tree_node::result_of::has_key</a><Node,Key></code>
+ must be equivalent to boost::mpl::true_
.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of ancestors
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value once-propagated notification
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-></span><span class="identifier">on_post_propagate_value_once</span><span class="special">(</span><span class="identifier">Key</span><span class="special">())</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Updates any <code class="computeroutput"><span class="identifier">Node</span></code>-specific
+ information invalidated by operations that propagate the value
+ that the tree node associates with the specified key up to the
+ tree node's parent.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../reference/has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis">tree_node::result_of::has_key</a><Node,Key></code>
+ must be equivalent to boost::mpl::true_
.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Insertion notification
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-></span><span class="identifier">on_post_inserted</span><span class="special">(</span><span class="identifier">itr</span><span class="special">,</span>
+ <span class="identifier">bic</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Updates any <code class="computeroutput"><span class="identifier">Node</span></code>-specific
+ information invalidated by operations that insert or emplace
+ the invoking node. The specified iterator points to this node.
+ </p>
+ </td>
+<td>
+ <p>
+ The body of any <code class="computeroutput"><span class="identifier">Node</span></code>
+ insertion or emplacement member function must be able to call
+ this method.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant if <code class="computeroutput"><span class="identifier">BIC</span><span class="special">::</span><span class="identifier">value</span>
+ <span class="special">==</span> <span class="keyword">true</span></code>,
+ linear with respect to the number of siblings otherwise
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Erasure notification
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-></span><span class="identifier">on_post_erase</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Updates any <code class="computeroutput"><span class="identifier">Node</span></code>-specific
+ information invalidated by operations that remove the specified
+ children and their descendants from a node.
+ </p>
+ </td>
+<td>
+ <p>
+ The body of any <code class="computeroutput"><span class="identifier">Node</span></code>
+ erasure member function must be able to call this method.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of children plus the number
+ of ancestors
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Clear notification
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-></span><span class="identifier">on_post_clear</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Updates any <code class="computeroutput"><span class="identifier">Node</span></code>-specific
+ information invalidated by operations that remove all descendants
+ from a node.
+ </p>
+ </td>
+<td>
+ <p>
+ The body of the <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">clear</span><span class="special">()</span></code> member function must be able
+ to call this method.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of children removed plus the
+ number of ancestors
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left rotation notification
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-></span><span class="identifier">on_post_rotate_left</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Updates any <code class="computeroutput"><span class="identifier">Node</span></code>-specific
+ information invalidated by operations that rotate a node to the
+ left.
+ </p>
+ </td>
+<td>
+ <p>
+ The body of the <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">rotate_left</span><span class="special">()</span></code> member function must be able
+ to call this method.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of ancestors
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right rotation notification
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-></span><span class="identifier">on_post_rotate_right</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Updates any <code class="computeroutput"><span class="identifier">Node</span></code>-specific
+ information invalidated by operations that rotate a node to the
+ right.
+ </p>
+ </td>
+<td>
+ <p>
+ The body of the <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">rotate_right</span><span class="special">()</span></code> member function must be able
+ to call this method.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of ancestors
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.base_tree_node.models"></a><a class="link" href="base_tree_node.html#tree_node.concepts.base_tree_node.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/binary_node_base.html" title="binary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/nary_node_base.html" title="nary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base</span></code></a>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reversible_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/base_type_generator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/base_type_generator.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,151 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Base Type Generator</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="node_type_generator.html" title="Node Type Generator">
+<link rel="next" href="tree_node_iterator.html" title="Tree Node Iterator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="node_type_generator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tree_node_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.base_type_generator"></a><a class="link" href="base_type_generator.html" title="Base Type Generator">Base Type Generator</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.base_type_generator.description"></a><a class="link" href="base_type_generator.html#tree_node.concepts.base_type_generator.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ A <span class="bold"><strong>Base Type Generator</strong></span> is a Metafunction Class that returns a <a class="link" href="base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a> from which <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor types can inherit the necessary
+ functionality.
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Generator</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>Base Type Generator</strong></span>
+ concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Derived</span></code></span></dt>
+<dd><p>
+ The most descendant type that will inherit from the return type of
+ <code class="computeroutput"><span class="identifier">Generator</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Key</span></code></span></dt>
+<dd><p>
+ The key type of the <a class="link" href="associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> to be returned.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Data</span></code></span></dt>
+<dd><p>
+ The data type of the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> to be returned.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.base_type_generator.expressions"></a><a class="link" href="base_type_generator.html#tree_node.concepts.base_type_generator.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Non-associative invocation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">boost::mpl::apply_wrap2<Generator,Derived,Data>::type</code>
+ </p>
+ </td>
+<td>
+ <p>
+ A <a class="link" href="non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> model
+ whose <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span></code>
+ is the same as <code class="computeroutput"><span class="identifier">Data</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Associative invocation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">boost::mpl::apply_wrap3<Generator,Derived,Key,Data>::type</code>
+ </p>
+ </td>
+<td>
+ <p>
+ An <a class="link" href="associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> model whose
+ <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span></code> is the same as <code class="computeroutput"><span class="identifier">Key</span></code> and whose <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span></code> is the same as <code class="computeroutput"><span class="identifier">Data</span></code>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.base_type_generator.models"></a><a class="link" href="base_type_generator.html#tree_node.concepts.base_type_generator.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/binary_node_base_gen.html" title="binary_node_base_gen<Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_base_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/nary_node_base_gen.html" title="nary_node_base_gen<Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_base_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/assoc_node_base_gen.html" title="associative_node_base_gen<Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_base_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_count_base_gen.html" title="with_count_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_height_base_gen.html" title="with_height_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_position_base_gen.html" title="with_position_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_rb_flag_base_gen.html" title="with_red_black_flag_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base_gen</span></code></a>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="node_type_generator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tree_node_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/binary_tree_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/binary_tree_node.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,542 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Binary Tree Node</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="non_assoc_tree_node.html" title="Non-Associative Tree Node">
+<link rel="next" href="nary_tree_node.html" title="N-ary Tree Node">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="non_assoc_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nary_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.binary_tree_node"></a><a class="link" href="binary_tree_node.html" title="Binary Tree Node">Binary Tree Node</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.binary_tree_node.description"></a><a class="link" href="binary_tree_node.html#tree_node.concepts.binary_tree_node.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Models of this concept store at most two child nodes: left and right. The
+ operations that this concept defines include access to these children and
+ rotations that use the appropriate child as a pivot node.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.binary_tree_node.refinement_of"></a><a class="link" href="binary_tree_node.html#tree_node.concepts.binary_tree_node.refinement_of" title="Refinement of">Refinement
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a>
+<span class="special">*</span> <a class="link" href="reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+</pre>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Node</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>Binary Tree Node</strong></span>
+ concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">const_node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_pointer</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">args</span><span class="special">...</span></code></span></dt>
+<dd><p>
+ Arguments to be forwarded to the appropriate <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span></code>
+ constructor.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.binary_tree_node.types"></a><a class="link" href="binary_tree_node.html#tree_node.concepts.binary_tree_node.types" title="Associated Types">Associated
+ Types</a>
+</h4></div></div></div>
+<p>
+ No additional types beyond those defined in the <a class="link" href="non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> and <a class="link" href="reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a> concepts.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.binary_tree_node.expressions"></a><a class="link" href="binary_tree_node.html#tree_node.concepts.binary_tree_node.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<p>
+ In addition to the expressions defined in the <a class="link" href="non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> and <a class="link" href="reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a> concepts, the following
+ expressions must be valid.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Type requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+<th>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Amortized_analysis" target="_top">Runtime
+ Complexity</a>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Left child creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">emplace_left</span><span class="special">(</span><span class="identifier">args</span><span class="special">...)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Creates and returns a tree node to be stored as the left child
+ of the invoking node. The node returned will initialize its data
+ with the specified arguments.
+ </p>
+ <p>
+ If a left child existed previously, that node shall become the
+ left child of the new node.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left child copy creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">insert_left</span><span class="special">(</span><span class="identifier">const_node</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type must model the Copy Constructible and Movable
+ concepts.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Creates and returns a deep copy of <code class="computeroutput"><span class="identifier">const_node</span></code>
+ to be stored as the left child of the invoking node.
+ </p>
+ <p>
+ If a left child existed previously, that node shall become the
+ left-most descendant of the new node, or the first node encountered
+ during a forward in-order traversal of the new node's descendants.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of descendants of <code class="computeroutput"><span class="identifier">const_node</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">emplace_right</span><span class="special">(</span><span class="identifier">args</span><span class="special">...)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Creates and returns a tree node to be stored as the right child
+ of the invoking node. The node returned will initialize its data
+ with the specified arguments.
+ </p>
+ <p>
+ If a right child existed previously, that node shall become the
+ right child of the new node.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child copy creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">insert_right</span><span class="special">(</span><span class="identifier">const_node</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type must model the Copy Constructible and Movable
+ concepts.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Creates and returns a deep copy of <code class="computeroutput"><span class="identifier">const_node</span></code>
+ to be stored as the right child of the invoking node.
+ </p>
+ <p>
+ If a right child existed previously, that node shall become the
+ right-most descendant of the new node, or the last node encountered
+ during a forward in-order traversal of the new node's descendants.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of descendants of <code class="computeroutput"><span class="identifier">const_node</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left child access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">get_left_child_ptr</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the left child of the tree node, or a null pointer if
+ no such tree node exists.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left child access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">get_left_child_ptr</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the left child of the tree node, or a null pointer if
+ no such tree node exists.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">get_right_child_ptr</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the right child of the tree node, or a null pointer if
+ no such tree node exists.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">get_right_child_ptr</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the right child of the tree node, or a null pointer if
+ no such tree node exists.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Rotate left
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">rotate_left</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Rotates the tree node in its hierarchy so that its right child,
+ the pivot node, becomes its parent. The left child of the pivot
+ node becomes the right child of the tree node. Returns the pivot
+ node.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Rotate right
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">rotate_right</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Rotates the tree node in its hierarchy so that its left child,
+ the pivot node, becomes its parent. The right child of the pivot
+ node becomes the left child of the tree node. Returns the pivot
+ node.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove left child
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">erase_left</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Removes the left child from the tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of descendants of the left
+ child
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove right child
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">erase_right</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Removes the right child from the tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of descendants of the right
+ child
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.binary_tree_node.models"></a><a class="link" href="binary_tree_node.html#tree_node.concepts.binary_tree_node.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/binary_node.html" title="binary_node<T,Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/binary_node_base.html" title="binary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_base</span></code></a>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="non_assoc_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nary_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/full_tree_node_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/full_tree_node_iterator.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,165 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Full Tree Node Iterator</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="tree_node_iterator.html" title="Tree Node Iterator">
+<link rel="next" href="tree_node_desc_iterator.html" title="Tree Node Descendant Iterator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tree_node_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tree_node_desc_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.full_tree_node_iterator"></a><a class="link" href="full_tree_node_iterator.html" title="Full Tree Node Iterator">Full Tree
+ Node Iterator</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.full_tree_node_iterator.description"></a><a class="link" href="full_tree_node_iterator.html#tree_node.concepts.full_tree_node_iterator.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This concept specifies the requirement that models traverse the root node
+ as well as its descendants.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.full_tree_node_iterator.refinement_of"></a><a class="link" href="full_tree_node_iterator.html#tree_node.concepts.full_tree_node_iterator.refinement_of" title="Refinement of">Refinement
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree
+ Node Iterator</strong></span></a>
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iterator</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>Full Tree Node Iterator</strong></span>
+ concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">itr</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Iterator</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Node</span></code></span></dt>
+<dd><p>
+ The value type of <code class="computeroutput"><span class="identifier">Iterator</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">&</span></code>.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.full_tree_node_iterator.types"></a><a class="link" href="full_tree_node_iterator.html#tree_node.concepts.full_tree_node_iterator.types" title="Associated Types">Associated
+ Types</a>
+</h4></div></div></div>
+<p>
+ No additional types beyond those defined in the <a class="link" href="tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a> concept; however, the
+ requirements for the value type are strengthened: it must model the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a>
+ concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.full_tree_node_iterator.expressions"></a><a class="link" href="full_tree_node_iterator.html#tree_node.concepts.full_tree_node_iterator.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<p>
+ None beyond those defined in the <a class="link" href="tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a> concept; however, the
+ type requirements for the constructors are strengthened, and their semantics
+ are clarified.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Type requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Constructor from node
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">Iterator</span><span class="special">(</span><span class="identifier">node</span><span class="special">)</span>
+<span class="identifier">Iterator</span> <span class="identifier">itr</span><span class="special">(</span><span class="identifier">node</span><span class="special">)</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constructs an iterator that will iterate through the specified
+ node and its descendants.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.full_tree_node_iterator.models"></a><a class="link" href="full_tree_node_iterator.html#tree_node.concepts.full_tree_node_iterator.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/breadth_first_iterator.html" title="breadth_first_iterator<Node>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">breadth_first_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/pre_order_iterator.html" title="pre_order_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">pre_order_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/post_order_iterator.html" title="post_order_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">post_order_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/in_order_iterator.html" title="in_order_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">in_order_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/depth_first_iterator.html" title="depth_first_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">depth_first_iterator</span></code></a>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tree_node_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tree_node_desc_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/indexable_container.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/indexable_container.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,208 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Indexable Container</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="tree_node_desc_iterator.html" title="Tree Node Descendant Iterator">
+<link rel="next" href="indexable_iterator.html" title="Indexable Iterator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tree_node_desc_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexable_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.indexable_container"></a><a class="link" href="indexable_container.html" title="Indexable Container">Indexable Container</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.indexable_container.description"></a><a class="link" href="indexable_container.html#tree_node.concepts.indexable_container.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ An <span class="bold"><strong>Indexable Container</strong></span> is a Reversible Container whose iterator type
+ is an <a class="link" href="indexable_iterator.html" title="Indexable Iterator"><span class="bold"><strong>Indexable
+ Iterator</strong></span></a>. It provides sub-linear time access to arbitrary
+ elements.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.indexable_container.refinement_of"></a><a class="link" href="indexable_container.html#tree_node.concepts.indexable_container.refinement_of" title="Refinement of">Refinement
+ of</a>
+</h4></div></div></div>
+<p>
+ Reversible Container
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.indexable_container.types"></a><a class="link" href="indexable_container.html#tree_node.concepts.indexable_container.types" title="Associated Types">Associated
+ Types</a>
+</h4></div></div></div>
+<p>
+ None beyond those defined in Reversible Container. However, the requirements
+ for the iterator type are strengthened: it must be an <a class="link" href="indexable_iterator.html" title="Indexable Iterator"><span class="bold"><strong>Indexable Iterator</strong></span></a>.
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">X</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>Indexable Container</strong></span>
+ concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">a</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">X</span></code>.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.indexable_container.expressions"></a><a class="link" href="indexable_container.html#tree_node.concepts.indexable_container.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<p>
+ In addition to the expressions defined in the Reversible Container concept, the following
+ expressions must be valid.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+<th>
+ <p>
+ Type Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Precondition
+ </p>
+ </th>
+<th>
+ <p>
+ Invariant
+ </p>
+ </th>
+<th>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Amortized_analysis" target="_top">Runtime
+ Complexity</a>
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Element access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">a</span><span class="special">[</span><span class="identifier">n</span><span class="special">]</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reference</span></code> if
+ <code class="computeroutput"><span class="identifier">a</span></code> is mutable,
+ <code class="computeroutput"><span class="identifier">const_reference</span></code>
+ otherwise
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the <code class="computeroutput"><span class="identifier">n</span></code>th
+ element from the beginning of the container.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">n</span></code> must be convertible
+ to <code class="computeroutput"><span class="identifier">size_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="number">0</span> <span class="special"><</span>
+ <span class="identifier">n</span> <span class="special"><=</span>
+ <span class="identifier">a</span><span class="special">.</span><span class="identifier">size</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Equivalent to <code class="computeroutput"><span class="special">*(</span><span class="identifier">a</span><span class="special">.</span><span class="identifier">begin</span><span class="special">()</span>
+ <span class="special">+</span> <span class="identifier">n</span><span class="special">)</span></code>.
+ </p>
+ </td>
+<td>
+ <p>
+ Sublinear
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.indexable_container.models"></a><a class="link" href="indexable_container.html#tree_node.concepts.indexable_container.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/binode_container.html" title="binode_container<NodeGenerator,T,Balancer>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_container</span></code></a> <span class="keyword">if</span> <span class="identifier">the</span> <span class="identifier">value</span> <span class="identifier">associated</span> <span class="identifier">with</span> <a class="link" href="../reference/count_key.html" title="count_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">count_key</span></code></a> <span class="identifier">exists</span> <span class="keyword">for</span>
+ <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">NodeGenerator</span><span class="error">`</span>
+<span class="special">*</span> <a class="link" href="../reference/binode_assoc_container.html" title="binode_associative_container< NodeGenerator , T1 , T2 , IsMultipleAssociative , CompareSelector , Balancer >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_associative_container</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/binode_set.html" title="binode_set<NodeGenerator,T,CompareSelector,Balancer>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_set</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/binode_map.html" title="binode_map<NodeGenerator,Key,Mapped,CompareSelector,Balancer>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_map</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/binode_multiset.html" title="binode_multiset<NodeGenerator,T,CompareSelector,Balancer>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_multiset</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/binode_multimap.html" title="binode_multimap<NodeGenerator,Key,Mapped,CompareSelector,Balancer>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_multimap</span></code></a>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tree_node_desc_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexable_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/indexable_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/indexable_iterator.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,478 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Indexable Iterator</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="indexable_container.html" title="Indexable Container">
+<link rel="next" href="../reference.html" title="Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="indexable_container.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.indexable_iterator"></a><a class="link" href="indexable_iterator.html" title="Indexable Iterator">Indexable Iterator</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.indexable_iterator.description"></a><a class="link" href="indexable_iterator.html#tree_node.concepts.indexable_iterator.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ An <span class="bold"><strong>Indexable Iterator</strong></span> is an iterator that
+ provides both increment and decrement as well as sublinear-time operators
+ for moving forward and backward in arbitrary-sized steps. The runtime complexity
+ requirement is the only major difference between an <span class="bold"><strong>Indexable
+ Iterator</strong></span> and a Random Access Iterator.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.indexable_iterator.refinement_of"></a><a class="link" href="indexable_iterator.html#tree_node.concepts.indexable_iterator.refinement_of" title="Refinement of">Refinement
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> Bidirectional Iterator
+<span class="special">*</span> Less-Than Comparable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.indexable_iterator.types"></a><a class="link" href="indexable_iterator.html#tree_node.concepts.indexable_iterator.types" title="Associated Types">Associated
+ Types</a>
+</h4></div></div></div>
+<p>
+ No additional types beyond those defined in the Bidirectional Iterator and Less-Than Comparable concepts.
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iterator</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>Indexable Iterator</strong></span>
+ concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">i</span></code>, <code class="computeroutput"><span class="identifier">j</span></code></span></dt>
+<dd><p>
+ Objects of type <code class="computeroutput"><span class="identifier">Iterator</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span></code></span></dt>
+<dd><p>
+ The value type of <code class="computeroutput"><span class="identifier">Iterator</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">t</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">T</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Distance</span></code></span></dt>
+<dd><p>
+ The distance type of <code class="computeroutput"><span class="identifier">Iterator</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">n</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Distance</span></code>.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.indexable_iterator.expressions"></a><a class="link" href="indexable_iterator.html#tree_node.concepts.indexable_iterator.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<p>
+ In addition to the expressions defined in the Bidirectional Iterator concept, the following
+ expressions must be valid.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+<th>
+ <p>
+ Type Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Precondition
+ </p>
+ </th>
+<th>
+ <p>
+ Postcondition
+ </p>
+ </th>
+<th>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Amortized_analysis" target="_top">Runtime
+ Complexity</a>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Iterator addition assignment
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">i</span> <span class="special">+=</span>
+ <span class="identifier">n</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">X</span><span class="special">&</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ If <code class="computeroutput"><span class="identifier">n</span> <span class="special">></span>
+ <span class="number">0</span></code>, equivalent to executing
+ <code class="computeroutput"><span class="special">++</span><span class="identifier">i</span></code>
+ <code class="computeroutput"><span class="identifier">n</span></code> times. If
+ <code class="computeroutput"><span class="identifier">n</span> <span class="special"><</span>
+ <span class="number">0</span></code>, equivalent to executing
+ <code class="computeroutput"><span class="special">--</span><span class="identifier">i</span></code>
+ <code class="computeroutput"><span class="identifier">n</span></code> times. If
+ <code class="computeroutput"><span class="identifier">n</span> <span class="special">==</span>
+ <span class="number">0</span></code>, this is a null operation.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Including <code class="computeroutput"><span class="identifier">i</span></code> itself,
+ there must be <code class="computeroutput"><span class="identifier">n</span></code>
+ dereferenceable or past-the-end iterators following or preceding
+ <code class="computeroutput"><span class="identifier">i</span></code>, depending
+ on whether <code class="computeroutput"><span class="identifier">n</span></code>
+ is positive or negative.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">i</span></code> is dereferenceable
+ or past-the-end.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator addition
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">i</span> <span class="special">+</span>
+ <span class="identifier">n</span></code> or <code class="computeroutput"><span class="identifier">n</span> <span class="special">+</span>
+ <span class="identifier">i</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">X</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Equivalent to <code class="computeroutput"><span class="special">{</span> <span class="identifier">X</span> <span class="identifier">tmp</span>
+ <span class="special">=</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">return</span>
+ <span class="identifier">tmp</span> <span class="special">+=</span>
+ <span class="identifier">n</span><span class="special">;</span>
+ <span class="special">}</span></code>. The two forms <code class="computeroutput"><span class="identifier">i</span> <span class="special">+</span>
+ <span class="identifier">n</span></code> and <code class="computeroutput"><span class="identifier">n</span> <span class="special">+</span>
+ <span class="identifier">i</span></code> are identical.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Same as for <code class="computeroutput"><span class="identifier">i</span> <span class="special">+=</span> <span class="identifier">n</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The result is dereferenceable or past-the-end.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator subtraction assignment
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">i</span> <span class="special">-=</span>
+ <span class="identifier">n</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">X</span><span class="special">&</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Equivalent to <code class="computeroutput"><span class="identifier">i</span> <span class="special">+=</span> <span class="special">(-</span><span class="identifier">n</span><span class="special">)</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Including <code class="computeroutput"><span class="identifier">i</span></code> itself,
+ there must be <code class="computeroutput"><span class="identifier">n</span></code>
+ dereferenceable or past-the-end iterators preceding or following
+ <code class="computeroutput"><span class="identifier">i</span></code>, depending
+ on whether <code class="computeroutput"><span class="identifier">n</span></code>
+ is positive or negative.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">i</span></code> is dereferenceable
+ or past-the-end.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator subtraction
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">i</span> <span class="special">-</span>
+ <span class="identifier">n</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">X</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Equivalent to <code class="computeroutput"><span class="special">{</span> <span class="identifier">X</span> <span class="identifier">tmp</span>
+ <span class="special">=</span> <span class="identifier">i</span><span class="special">;</span> <span class="keyword">return</span>
+ <span class="identifier">tmp</span> <span class="special">-=</span>
+ <span class="identifier">n</span><span class="special">;</span>
+ <span class="special">}</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Same as for <code class="computeroutput"><span class="identifier">i</span> <span class="special">-=</span> <span class="identifier">n</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The result is dereferenceable or past-the-end.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Difference
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">i</span> <span class="special">-</span>
+ <span class="identifier">j</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Distance</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a number <code class="computeroutput"><span class="identifier">n</span></code>
+ such that <code class="computeroutput"><span class="identifier">i</span> <span class="special">==</span> <span class="identifier">j</span>
+ <span class="special">+</span> <span class="identifier">n</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Either <code class="computeroutput"><span class="identifier">i</span></code> is reachable
+ from <code class="computeroutput"><span class="identifier">j</span></code> or <code class="computeroutput"><span class="identifier">j</span></code> is reachable from <code class="computeroutput"><span class="identifier">i</span></code>, or both.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Element operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">i</span><span class="special">[</span><span class="identifier">n</span><span class="special">]</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Convertible to <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Equivalent to <code class="computeroutput"><span class="special">*(</span><span class="identifier">i</span> <span class="special">+</span>
+ <span class="identifier">n</span><span class="special">)</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">i</span> <span class="special">+</span>
+ <span class="identifier">n</span></code> exists and is dereferenceable.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Element assignment
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">i</span><span class="special">[</span><span class="identifier">n</span><span class="special">]</span>
+ <span class="special">=</span> <span class="identifier">t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Convertible to <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Equivalent to <code class="computeroutput"><span class="special">*(</span><span class="identifier">i</span> <span class="special">+</span>
+ <span class="identifier">n</span><span class="special">)</span></code>.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">X</span></code> is mutable.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">i</span> <span class="special">+</span>
+ <span class="identifier">n</span></code> exists and is dereferenceable.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">i</span><span class="special">[</span><span class="identifier">n</span><span class="special">]</span></code>
+ is a copy of <code class="computeroutput"><span class="identifier">t</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ In addition, the domain of the less-than comparison expression <code class="computeroutput"><span class="identifier">i</span> <span class="special"><</span> <span class="identifier">j</span></code> is the group of iterators that are
+ reachable from each other: that is, either <code class="computeroutput"><span class="identifier">i</span></code>
+ is reachable from <code class="computeroutput"><span class="identifier">j</span></code> or
+ <code class="computeroutput"><span class="identifier">j</span></code> is reachable from <code class="computeroutput"><span class="identifier">i</span></code>, or both.
+ </p>
+<p>
+ The Forward Iterator and Reverse Iterator requirements that the increment
+ and decrement operators must exhibit constant time complexity have been
+ relaxed; they now need only exhibit linear time complexity with respect
+ to the number of descendants in the worst case.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.indexable_iterator.models"></a><a class="link" href="indexable_iterator.html#tree_node.concepts.indexable_iterator.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">The</span> <span class="identifier">iterator</span> <span class="identifier">types</span> <span class="identifier">of</span> <a class="link" href="../reference/binode_container.html" title="binode_container<NodeGenerator,T,Balancer>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_container</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="identifier">iterator</span> <span class="identifier">types</span> <span class="identifier">of</span> <a class="link" href="../reference/binode_assoc_container.html" title="binode_associative_container< NodeGenerator , T1 , T2 , IsMultipleAssociative , CompareSelector , Balancer >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_associative_container</span></code></a><span class="special">.</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="indexable_container.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/nary_tree_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/nary_tree_node.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,215 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>N-ary Tree Node</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="binary_tree_node.html" title="Binary Tree Node">
+<link rel="next" href="node_type_generator.html" title="Node Type Generator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="node_type_generator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.nary_tree_node"></a><a class="link" href="nary_tree_node.html" title="N-ary Tree Node">N-ary Tree Node</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.nary_tree_node.description"></a><a class="link" href="nary_tree_node.html#tree_node.concepts.nary_tree_node.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Models of this concept store arbitrary numbers of children and provide
+ simple child insertion expressions.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.nary_tree_node.refinement_of"></a><a class="link" href="nary_tree_node.html#tree_node.concepts.nary_tree_node.refinement_of" title="Refinement of">Refinement
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative
+ Tree Node</strong></span></a>
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Node</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>N-ary Tree Node</strong></span>
+ concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">const_node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_pointer</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">args</span><span class="special">...</span></code></span></dt>
+<dd><p>
+ Arguments to be forwarded to the appropriate <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span></code>
+ constructor.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.nary_tree_node.types"></a><a class="link" href="nary_tree_node.html#tree_node.concepts.nary_tree_node.types" title="Associated Types">Associated
+ Types</a>
+</h4></div></div></div>
+<p>
+ No additional types beyond those defined in the <a class="link" href="non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.nary_tree_node.expressions"></a><a class="link" href="nary_tree_node.html#tree_node.concepts.nary_tree_node.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<p>
+ In addition to the expressions defined in the <a class="link" href="non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> concept, the following
+ expressions must be valid.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Type requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+<th>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Amortized_analysis" target="_top">Runtime
+ Complexity</a>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Child creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">emplace</span><span class="special">(</span><span class="identifier">args</span><span class="special">...)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Creates and returns a tree node to be stored in the range of
+ children of the invoking node. The node returned will initialize
+ its data with the specified arguments.
+ </p>
+ </td>
+<td>
+ <p>
+ Logarithmic
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child copy creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">insert</span><span class="special">(</span><span class="identifier">const_node</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type must model the Copy Constructible and Movable
+ concepts.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Creates and returns a deep copy of <code class="computeroutput"><span class="identifier">const_node</span></code>
+ to be stored in the range of children of the invoking node.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of descendants of <code class="computeroutput"><span class="identifier">const_node</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.nary_tree_node.models"></a><a class="link" href="nary_tree_node.html#tree_node.concepts.nary_tree_node.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/nary_node.html" title="nary_node<T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/nary_node_base.html" title="nary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_base</span></code></a>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="node_type_generator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/node_type_generator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/node_type_generator.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,145 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Node Type Generator</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="nary_tree_node.html" title="N-ary Tree Node">
+<link rel="next" href="base_type_generator.html" title="Base Type Generator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nary_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="base_type_generator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.node_type_generator"></a><a class="link" href="node_type_generator.html" title="Node Type Generator">Node Type Generator</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.node_type_generator.description"></a><a class="link" href="node_type_generator.html#tree_node.concepts.node_type_generator.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ A <span class="bold"><strong>Node Type Generator</strong></span> is a Metafunction Class that returns a <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a>
+ model of which objects can be instantiated.
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Generator</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>Node Type Generator</strong></span>
+ concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Key</span></code></span></dt>
+<dd><p>
+ The key type of the <a class="link" href="associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> to be returned.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Data</span></code></span></dt>
+<dd><p>
+ The data type of the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> to be returned.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.node_type_generator.expressions"></a><a class="link" href="node_type_generator.html#tree_node.concepts.node_type_generator.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Non-associative invocation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">boost::mpl::apply_wrap1<Generator,Data>::type</code>
+ </p>
+ </td>
+<td>
+ <p>
+ A <a class="link" href="non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> model
+ whose <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span></code>
+ is the same as <code class="computeroutput"><span class="identifier">Data</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Associative invocation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">boost::mpl::apply_wrap2<Generator,Key,Data>::type</code>
+ </p>
+ </td>
+<td>
+ <p>
+ An <a class="link" href="associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> model whose
+ <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span></code> is the same as <code class="computeroutput"><span class="identifier">Key</span></code> and whose <code class="computeroutput"><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span></code> is the same as <code class="computeroutput"><span class="identifier">Data</span></code>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.node_type_generator.models"></a><a class="link" href="node_type_generator.html#tree_node.concepts.node_type_generator.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/binary_node_gen.html" title="binary_node_gen<Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/nary_node_gen.html" title="nary_node_gen<Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/associative_node_gen.html" title="associative_node_gen<Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_count_gen.html" title="with_count_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_height_gen.html" title="with_height_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_position_gen.html" title="with_position_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_rb_flag_gen.html" title="with_red_black_flag_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_gen</span></code></a>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nary_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="base_type_generator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/non_assoc_tree_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/non_assoc_tree_node.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,88 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Non-Associative Tree Node</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="associative_tree_node.html" title="Associative Tree Node">
+<link rel="next" href="binary_tree_node.html" title="Binary Tree Node">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="associative_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.non_assoc_tree_node"></a><a class="link" href="non_assoc_tree_node.html" title="Non-Associative Tree Node">Non-Associative
+ Tree Node</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.non_assoc_tree_node.description"></a><a class="link" href="non_assoc_tree_node.html#tree_node.concepts.non_assoc_tree_node.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Models of this concept provide access to their child nodes via iterator
+ dereferencing.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.non_assoc_tree_node.refinement_of"></a><a class="link" href="non_assoc_tree_node.html#tree_node.concepts.non_assoc_tree_node.refinement_of" title="Refinement of">Refinement
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.non_assoc_tree_node.types"></a><a class="link" href="non_assoc_tree_node.html#tree_node.concepts.non_assoc_tree_node.types" title="Associated Types">Associated
+ Types</a>
+</h4></div></div></div>
+<p>
+ No additional types beyond those defined in the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept; however, the requirements
+ for the child iterator types are strengthened:
+ </p>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">The</span> <span class="identifier">value</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">be</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">&</span><span class="error">`</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="identifier">value</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">be</span> <span class="error">`</span><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">&</span><span class="error">`</span><span class="special">.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.non_assoc_tree_node.expressions"></a><a class="link" href="non_assoc_tree_node.html#tree_node.concepts.non_assoc_tree_node.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<p>
+ None beyond those defined in the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.non_assoc_tree_node.models"></a><a class="link" href="non_assoc_tree_node.html#tree_node.concepts.non_assoc_tree_node.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/binary_node.html" title="binary_node<T,Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/binary_node_base.html" title="binary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/nary_node.html" title="nary_node<T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/nary_node_base.html" title="nary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_base</span></code></a>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="associative_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/reversible_tree_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/reversible_tree_node.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,382 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Reversible Tree Node</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="base_tree_node.html" title="Base Tree Node">
+<link rel="next" href="associative_tree_node.html" title="Associative Tree Node">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="base_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="associative_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.reversible_tree_node"></a><a class="link" href="reversible_tree_node.html" title="Reversible Tree Node">Reversible Tree
+ Node</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.reversible_tree_node.description"></a><a class="link" href="reversible_tree_node.html#tree_node.concepts.reversible_tree_node.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Objects of types that model both the <a class="link" href="tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a> and Bidirectional Iterator concepts can iterate
+ over objects of types that model this concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.reversible_tree_node.refinement_of"></a><a class="link" href="reversible_tree_node.html#tree_node.concepts.reversible_tree_node.refinement_of" title="Refinement of">Refinement
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Node</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>Reversible Tree Node</strong></span>
+ concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">const_node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_pointer</span></code>.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.reversible_tree_node.types"></a><a class="link" href="reversible_tree_node.html#tree_node.concepts.reversible_tree_node.types" title="Associated Types">Associated
+ Types</a>
+</h4></div></div></div>
+<p>
+ Two new types are introduced.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">reverse_iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of iterator used to iterate in reverse through the children
+ of a <code class="computeroutput"><span class="identifier">Node</span></code> object.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Bidirectional Iterator concept,
+ and it must be convertible to <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_reverse_iterator</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_reverse_iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of iterator used to iterate in reverse through the children
+ of a <code class="computeroutput"><span class="identifier">Node</span> <span class="keyword">const</span></code>
+ object.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Bidirectional Iterator concept,
+ and it must <span class="emphasis"><em>not</em></span> point to a mutable object.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ In addition, the requirements for the iterator types are strengthened:
+ they must also model the Bidirectional Iterator concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.reversible_tree_node.expressions"></a><a class="link" href="reversible_tree_node.html#tree_node.concepts.reversible_tree_node.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<p>
+ In addition to the expressions defined in the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept, the following expressions
+ must be valid.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+<th>
+ <p>
+ Type Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Amortized_analysis" target="_top">Runtime
+ Complexity</a>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">rbegin</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_reverse_iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an iterator pointing to the beginning of the reverse
+ range of children of the tree node. If the range is empty, then
+ the iterator points past-the-end.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">rbegin</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">reverse_iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an iterator pointing to the beginning of the reverse
+ range of children of the tree node. If the range is empty, then
+ the iterator points past-the-end.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">rend</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_reverse_iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an iterator pointing past the end of the reverse range
+ of children of the tree node.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">rend</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">reverse_iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an iterator pointing past the end of the reverse range
+ of children of the tree node.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.reversible_tree_node.models"></a><a class="link" href="reversible_tree_node.html#tree_node.concepts.reversible_tree_node.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/binary_node.html" title="binary_node<T,Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/binary_node_base.html" title="binary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/nary_node.html" title="nary_node<T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node</span></code></a> <span class="keyword">if</span> <span class="special">[^</span>container_gen<span class="special"><</span><span class="identifier">Selector</span><span class="special">,</span><a class="link" href="../reference/nary_node.html" title="nary_node<T,Selector>">tree_node::nary_node</a><span class="special">>::</span><span class="identifier">type</span><span class="special">]</span> <span class="identifier">returns</span> <span class="identifier">a</span>
+ Reversible Container <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/nary_node_base.html" title="nary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_base</span></code></a> <span class="keyword">if</span> <span class="special">[^</span>container_gen<span class="special"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">>::</span><span class="identifier">type</span><span class="special">]</span> <span class="identifier">returns</span> <span class="identifier">a</span>
+ Reversible Container <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/associative_node.html" title="associative_node<Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node</span></code></a> <span class="keyword">if</span>
+ <span class="special">[^</span>container_gen<span class="special"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><a class="link" href="../reference/associative_node.html" title="associative_node<Key,Data,Selector>">tree_node::associative_node</a><span class="special">>::</span><span class="identifier">type</span><span class="special">]</span> <span class="identifier">returns</span> <span class="identifier">a</span>
+ Reversible Container <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_base</span></code></a> <span class="keyword">if</span> <span class="special">[^</span>container_gen<span class="special"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">>::</span><span class="identifier">type</span><span class="special">]</span>
+ <span class="identifier">returns</span> <span class="identifier">a</span> Reversible Container <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/with_accumulation.html" title="with_accumulation<BaseGenerator,T1,T2,AccumulationKey>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation</span></code></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">returns</span> <span class="identifier">a</span> <span class="special">[*</span><span class="identifier">Reversible</span>
+ <span class="identifier">Tree</span> <span class="identifier">Node</span><span class="special">]</span> <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">returns</span> <span class="identifier">a</span>
+ <span class="special">[*</span><span class="identifier">Reversible</span> <span class="identifier">Tree</span> <span class="identifier">Node</span><span class="special">]</span> <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/with_count.html" title="with_count<BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count</span></code></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">returns</span> <span class="identifier">a</span> <span class="special">[*</span><span class="identifier">Reversible</span> <span class="identifier">Tree</span>
+ <span class="identifier">Node</span><span class="special">]</span> <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base</span></code></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">returns</span> <span class="identifier">a</span> <span class="special">[*</span><span class="identifier">Reversible</span>
+ <span class="identifier">Tree</span> <span class="identifier">Node</span><span class="special">]</span> <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/with_height.html" title="with_height<BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height</span></code></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">returns</span> <span class="identifier">a</span> <span class="special">[*</span><span class="identifier">Reversible</span> <span class="identifier">Tree</span>
+ <span class="identifier">Node</span><span class="special">]</span> <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base</span></code></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">returns</span> <span class="identifier">a</span> <span class="special">[*</span><span class="identifier">Reversible</span>
+ <span class="identifier">Tree</span> <span class="identifier">Node</span><span class="special">]</span> <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/with_position.html" title="with_position<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position</span></code></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">returns</span> <span class="identifier">a</span> <span class="special">[*</span><span class="identifier">Reversible</span> <span class="identifier">Tree</span>
+ <span class="identifier">Node</span><span class="special">]</span> <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base</span></code></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">returns</span> <span class="identifier">a</span> <span class="special">[*</span><span class="identifier">Reversible</span>
+ <span class="identifier">Tree</span> <span class="identifier">Node</span><span class="special">]</span> <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/with_rb_flag.html" title="with_red_black_flag<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag</span></code></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">returns</span> <span class="identifier">a</span> <span class="special">[*</span><span class="identifier">Reversible</span>
+ <span class="identifier">Tree</span> <span class="identifier">Node</span><span class="special">]</span> <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../reference/with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base</span></code></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">returns</span> <span class="identifier">a</span>
+ <span class="special">[*</span><span class="identifier">Reversible</span> <span class="identifier">Tree</span> <span class="identifier">Node</span><span class="special">]</span> <span class="identifier">model</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="base_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="associative_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/tree_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/tree_node.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,863 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tree Node</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="../concepts.html" title="Concepts">
+<link rel="next" href="base_tree_node.html" title="Base Tree Node">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="base_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.tree_node"></a><a class="link" href="tree_node.html" title="Tree Node">Tree Node</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node.description"></a><a class="link" href="tree_node.html#tree_node.concepts.tree_node.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ All tree node implementations that this library provides model this concept:
+ a structure that maintains information about its data and its immediate
+ parent-child relationships. However, in practice, a full-fledged tree node
+ data structure or adaptor consists of four components: a <a class="link" href="base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> model that defines the functionality,
+ a <a class="link" href="base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base
+ Type Generator</strong></span></a> that returns the <a class="link" href="base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> model from which adaptor types
+ can also inherit, a <span class="bold"><strong>Tree Node</strong></span> model that
+ inherits from the base type and is better suited for external usage, and
+ a <a class="link" href="node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node
+ Type Generator</strong></span></a> that returns the <span class="bold"><strong>Tree
+ Node</strong></span> model.
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Node</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>Tree Node</strong></span> concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">const_node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_pointer</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">args</span><span class="special">...</span></code></span></dt>
+<dd><p>
+ Arguments to be forwarded to the appropriate <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span></code>
+ constructor.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node.types"></a><a class="link" href="tree_node.html#tree_node.concepts.tree_node.types" title="Associated Types">Associated Types</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Super type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">super_t</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type from which <code class="computeroutput"><span class="identifier">Node</span></code>
+ inherits its functionality.
+ </p>
+ </td>
+<td>
+ <p>
+ It must either be <code class="literal"><a class="link" href="../reference/tree_node_base.html" title="tree_node_base<Derived>">tree_node::tree_node_base</a><Node></code>
+ or model the <a class="link" href="base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of user data stored in a tree node.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a pointer to a <code class="computeroutput"><span class="identifier">Node</span></code>
+ object.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Trivial Iterator concept, it must
+ point to a mutable object, and it must be implicitly convertible
+ to <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_pointer</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer-to-const type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a pointer to a <code class="computeroutput"><span class="identifier">Node</span>
+ <span class="keyword">const</span></code> object.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Trivial Iterator concept, and
+ it must <span class="emphasis"><em>not</em></span> point to a mutable object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of iterator used to iterate through the children of
+ a <code class="computeroutput"><span class="identifier">Node</span></code> object.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Input Iterator concept, and it
+ must be convertible to <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of iterator used to iterate through the children of
+ a <code class="computeroutput"><span class="identifier">Node</span> <span class="keyword">const</span></code>
+ object.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Input Iterator concept, and it
+ must <span class="emphasis"><em>not</em></span> point to a mutable object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Size type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">size_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of unsigned integer used to represent the number of
+ children of a <code class="computeroutput"><span class="identifier">Node</span>
+ <span class="keyword">const</span></code> object.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node.expressions"></a><a class="link" href="tree_node.html#tree_node.concepts.tree_node.expressions" title="Valid Expressions and Semantics">Valid Expressions
+ and Semantics</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+<th>
+ <p>
+ Type Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Amortized_analysis" target="_top">Runtime
+ Complexity</a>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">(</span><span class="identifier">args</span><span class="special">...)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">Node</span></code>
+ object that initializes its user data with the specified arguments.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">get</span><span class="special"><</span><a class="link" href="../reference/data_key.html" title="data_key">tree_node::data_key</a><span class="special">>(</span><span class="identifier">const_node</span><span class="special">)</span>
+<span class="identifier">get</span><span class="special">(</span><span class="identifier">const_node</span><span class="special">,</span> <a class="link" href="../reference/data_key.html" title="data_key">tree_node::data_key</a><span class="special">())</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span> <span class="keyword">const</span><span class="special">&</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the user data stored in the tree node.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">get</span><span class="special"><</span><a class="link" href="../reference/data_key.html" title="data_key">tree_node::data_key</a><span class="special">>(</span><span class="identifier">node</span><span class="special">)</span>
+<span class="identifier">get</span><span class="special">(</span><span class="identifier">node</span><span class="special">,</span> <a class="link" href="../reference/data_key.html" title="data_key">tree_node::data_key</a><span class="special">())</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the user data stored in the tree node.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data modification
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">put</span><span class="special">(</span><span class="identifier">node</span><span class="special">,</span>
+ <a class="link" href="../reference/data_key.html" title="data_key">tree_node::data_key</a><span class="special">(),</span> <span class="identifier">data</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Sets the user data to be stored in the tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ The type of <code class="computeroutput"><span class="identifier">data</span></code>
+ must be convertible to <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span></code>.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">get</span><span class="special"><</span><span class="identifier">Key</span><span class="special">>(</span><span class="identifier">const_node</span><span class="special">)</span>
+<span class="identifier">get</span><span class="special">(</span><span class="identifier">const_node</span><span class="special">,</span> <span class="identifier">Key</span><span class="special">())</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../reference/at_key.html" title="result_of::at_key<Node,Key>">tree_node::result_of::at_key</a><span class="special"><</span><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">,</span><span class="identifier">Key</span><span class="special">>::</span><span class="identifier">type</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the value that the tree node associates with the specified
+ key.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../reference/has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis">tree_node::result_of::has_key</a><Node,Key></code>
+ must be equivalent to boost::mpl::true_
.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">get</span><span class="special"><</span><span class="identifier">Key</span><span class="special">>(</span><span class="identifier">node</span><span class="special">)</span>
+<span class="identifier">get</span><span class="special">(</span><span class="identifier">node</span><span class="special">,</span> <span class="identifier">Key</span><span class="special">())</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><a class="link" href="../reference/at_key.html" title="result_of::at_key<Node,Key>">tree_node::result_of::at_key</a><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">Key</span><span class="special">>::</span><span class="identifier">type</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the value that the tree node associates with the specified
+ key.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../reference/has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis">tree_node::result_of::has_key</a><Node,Key></code>
+ must be equivalent to boost::mpl::true_
.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value modification
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">put</span><span class="special">(</span><span class="identifier">node</span><span class="special">,</span>
+ <span class="identifier">Key</span><span class="special">(),</span>
+ <span class="identifier">value</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Sets the value to be associated with the specified key type in
+ the tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../reference/has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis">tree_node::result_of::has_key</a><Node,Key></code>
+ must be equivalent to boost::mpl::true_
, and the type
+ of <code class="computeroutput"><span class="identifier">value</span></code> must
+ be convertible to <code class="literal"><a class="link" href="../reference/value_at_key.html" title="result_of::value_at_key<Node,Key>">tree_node::value_at_key</a><Node,Key>::type</code>.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">get_parent_ptr</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a pointer to the parent of the tree node, or a null pointer
+ if the node is the root.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">get_parent_ptr</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a pointer to the parent of the tree node, or a null pointer
+ if the node is the root.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">begin</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an iterator pointing to the beginning of the range of
+ children of the tree node. If the range is empty, then the iterator
+ points past-the-end.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">begin</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an iterator pointing to the beginning of the range of
+ children of the tree node. If the range is empty, then the iterator
+ points past-the-end.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">end</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an iterator pointing past the end of the range of children
+ of the tree node.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">end</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns an iterator pointing past the end of the range of children
+ of the tree node.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range size query
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">size</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">size_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the number of children of the tree node.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of children
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Leaf node query
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">empty</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">bool</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Equivalent to <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-></span><span class="identifier">begin</span><span class="special">()</span> <span class="special">==</span>
+ <span class="identifier">const_node</span><span class="special">-></span><span class="identifier">end</span><span class="special">()</span></code>,
+ but may be more efficient in certain cases.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of children
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove all descendants
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-></span><span class="identifier">clear</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Removes all children and their descendants from the tree node.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of children and their descendants
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node.models"></a><a class="link" href="tree_node.html#tree_node.concepts.tree_node.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/binary_node.html" title="binary_node<T,Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/binary_node_base.html" title="binary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/nary_node.html" title="nary_node<T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/nary_node_base.html" title="nary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/associative_node.html" title="associative_node<Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_accumulation.html" title="with_accumulation<BaseGenerator,T1,T2,AccumulationKey>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_count.html" title="with_count<BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_height.html" title="with_height<BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_position.html" title="with_position<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_rb_flag.html" title="with_red_black_flag<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base</span></code></a>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="base_tree_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/tree_node_desc_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/tree_node_desc_iterator.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,168 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tree Node Descendant Iterator</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="full_tree_node_iterator.html" title="Full Tree Node Iterator">
+<link rel="next" href="indexable_container.html" title="Indexable Container">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="full_tree_node_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexable_container.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.tree_node_desc_iterator"></a><a class="link" href="tree_node_desc_iterator.html" title="Tree Node Descendant Iterator">Tree Node
+ Descendant Iterator</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node_desc_iterator.description"></a><a class="link" href="tree_node_desc_iterator.html#tree_node.concepts.tree_node_desc_iterator.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This concept may seem redundant at first, especially when iterating through
+ <a class="link" href="non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative
+ Tree Node</strong></span></a> objects; however, for <a class="link" href="associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> objects, models of
+ this concept provide the sole means of accessing the key associated with
+ each node being traversed. (Root nodes are not associated with keys at
+ the tree node level, so models of this concept do not traverse them.)
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node_desc_iterator.refinement_of"></a><a class="link" href="tree_node_desc_iterator.html#tree_node.concepts.tree_node_desc_iterator.refinement_of" title="Refinement of">Refinement
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree
+ Node Iterator</strong></span></a>
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iterator</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>Tree Node Descendant Iterator</strong></span>
+ concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">itr</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Iterator</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Node</span></code></span></dt>
+<dd><p>
+ A type that models the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">&</span></code>.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node_desc_iterator.types"></a><a class="link" href="tree_node_desc_iterator.html#tree_node.concepts.tree_node_desc_iterator.types" title="Associated Types">Associated
+ Types</a>
+</h4></div></div></div>
+<p>
+ No additional types beyond those defined in the <a class="link" href="tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a> concept; however, the
+ requirements for the value type are strengthened: it must be the appropriate
+ iterator type of <code class="computeroutput"><span class="identifier">Node</span></code>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node_desc_iterator.expressions"></a><a class="link" href="tree_node_desc_iterator.html#tree_node.concepts.tree_node_desc_iterator.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<p>
+ None beyond those defined in the <a class="link" href="tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a> concept; however, the
+ type requirements for the constructors are strengthened, and their semantics
+ are clarified.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Type requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Constructor from node
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">Iterator</span><span class="special">(</span><span class="identifier">node</span><span class="special">)</span>
+<span class="identifier">Iterator</span> <span class="identifier">itr</span><span class="special">(</span><span class="identifier">node</span><span class="special">)</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constructs an iterator that will iterate through the descendants
+ of the specified node.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node_desc_iterator.models"></a><a class="link" href="tree_node_desc_iterator.html#tree_node.concepts.tree_node_desc_iterator.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/breadth_first_desc_iter.html" title="breadth_first_descendant_iterator<Node>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">breadth_first_descendant_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/pre_order_desc_iter.html" title="pre_order_descendant_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">pre_order_descendant_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/post_order_desc_iter.html" title="post_order_descendant_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">post_order_descendant_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/depth_first_desc_iter.html" title="depth_first_descendant_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">depth_first_descendant_iterator</span></code></a>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="full_tree_node_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="indexable_container.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/tree_node_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/tree_node_iterator.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,267 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tree Node Iterator</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="base_type_generator.html" title="Base Type Generator">
+<link rel="next" href="full_tree_node_iterator.html" title="Full Tree Node Iterator">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="base_type_generator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="full_tree_node_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.tree_node_iterator"></a><a class="link" href="tree_node_iterator.html" title="Tree Node Iterator">Tree Node Iterator</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node_iterator.description"></a><a class="link" href="tree_node_iterator.html#tree_node.concepts.tree_node_iterator.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Tree-traversing iterators at the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> level must be created differently
+ from iterators at the Container level. Furthermore, tree node
+ iterators typically store more stateful information than their Container counterparts; requiring two of
+ them to check for dereferenceability may prove somewhat memory-inefficient.
+ This concept provides an alternate means of checking for dereferenceability
+ that requires the use of only the active iterator.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node_iterator.refinement_of"></a><a class="link" href="tree_node_iterator.html#tree_node.concepts.tree_node_iterator.refinement_of" title="Refinement of">Refinement
+ of</a>
+</h4></div></div></div>
+<p>
+ Forward Iterator
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Iterator</span></code></span></dt>
+<dd><p>
+ A type that models the <span class="bold"><strong>Tree Node Iterator</strong></span>
+ concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">itr</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Iterator</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">Node</span></code></span></dt>
+<dd><p>
+ A type that models the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">node</span></code></span></dt>
+<dd><p>
+ An object of type <code class="computeroutput"><span class="identifier">Node</span><span class="special">&</span></code>.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node_iterator.types"></a><a class="link" href="tree_node_iterator.html#tree_node.concepts.tree_node_iterator.types" title="Associated Types">Associated
+ Types</a>
+</h4></div></div></div>
+<p>
+ No additional types beyond those defined in the Forward Iterator concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node_iterator.expressions"></a><a class="link" href="tree_node_iterator.html#tree_node.concepts.tree_node_iterator.expressions" title="Valid Expressions and Semantics">Valid
+ Expressions and Semantics</a>
+</h4></div></div></div>
+<p>
+ In addition to the expressions defined in the Forward Iterator concept, the following
+ expressions must be valid.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Return Type
+ </p>
+ </th>
+<th>
+ <p>
+ Semantics
+ </p>
+ </th>
+<th>
+ <p>
+ <a href="http://en.wikipedia.org/wiki/Amortized_analysis" target="_top">Runtime
+ Complexity</a>
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">Iterator</span><span class="special">()</span>
+<span class="identifier">Iterator</span> <span class="identifier">itr</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constructs a non-dereferenceable (past-the-end) iterator.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from node
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">Iterator</span><span class="special">(</span><span class="identifier">node</span><span class="special">)</span>
+<span class="identifier">Iterator</span> <span class="identifier">itr</span><span class="special">(</span><span class="identifier">node</span><span class="special">)</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Refinement-specific.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereferenceability
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">itr</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A type that can be used in a boolean context.
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a value convertible to <code class="computeroutput"><span class="keyword">true</span></code>
+ if <code class="computeroutput"><span class="identifier">itr</span></code> is dereferenceable,
+ a value convertible to <code class="computeroutput"><span class="keyword">false</span></code>
+ if it is past-the-end.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Node dereference
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="../reference/dereference_iterator.html" title="dereference_iterator()">tree_node::dereference_iterator</a>(itr)</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">&</span></code>
+ or <code class="computeroutput"><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">&</span></code>, depending on the mutability
+ of <code class="computeroutput"><span class="identifier">itr</span></code>.
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a reference to the <a class="link" href="tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> to which <code class="computeroutput"><span class="identifier">itr</span></code> currently points.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ The Forward Iterator requirement that the increment
+ operators must exhibit constant time complexity has been relaxed; they
+ now need only exhibit linear time complexity with respect to the number
+ of descendants in the worst case.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.tree_node_iterator.models"></a><a class="link" href="tree_node_iterator.html#tree_node.concepts.tree_node_iterator.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <span class="identifier">All</span> <span class="identifier">models</span> <span class="identifier">of</span> <span class="identifier">the</span> <a class="link" href="full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a> <span class="identifier">concept</span><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">All</span> <span class="identifier">models</span> <span class="identifier">of</span> <span class="identifier">the</span> <a class="link" href="tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a> <span class="identifier">concept</span><span class="special">.</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="base_type_generator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="full_tree_node_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,196 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Reference</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="prev" href="concepts/indexable_iterator.html" title="Indexable Iterator">
+<link rel="next" href="reference/binode_container.html" title="binode_container<NodeGenerator,T,Balancer>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="concepts/indexable_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference/binode_container.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="tree_node.reference"></a><a class="link" href="reference.html" title="Reference">Reference</a>
+</h2></div></div></div>
+<h4>
+<a name="tree_node.reference.h0"></a>
+ <span class="phrase"><a name="tree_node.reference.container_types"></a></span><a class="link" href="reference.html#tree_node.reference.container_types">Container
+ Types</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/binode_container.html" title="binode_container<NodeGenerator,T,Balancer>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_container</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/binode_assoc_container.html" title="binode_associative_container< NodeGenerator , T1 , T2 , IsMultipleAssociative , CompareSelector , Balancer >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_associative_container</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h1"></a>
+ <span class="phrase"><a name="tree_node.reference.balancer_types"></a></span><a class="link" href="reference.html#tree_node.reference.balancer_types">Balancer
+ Types</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/red_black_balancer.html" title="red_black_balancer"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">red_black_balancer</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/avl_balancer.html" title="avl_balancer"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">adelson_velskii_landis_balancer</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h2"></a>
+ <span class="phrase"><a name="tree_node.reference.node_types"></a></span><a class="link" href="reference.html#tree_node.reference.node_types">Node
+ Types</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/binary_node.html" title="binary_node<T,Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/nary_node.html" title="nary_node<T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/associative_node.html" title="associative_node<Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h3"></a>
+ <span class="phrase"><a name="tree_node.reference.adaptor_types"></a></span><a class="link" href="reference.html#tree_node.reference.adaptor_types">Adaptor
+ Types</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/with_accumulation.html" title="with_accumulation<BaseGenerator,T1,T2,AccumulationKey>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_count.html" title="with_count<BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_height.html" title="with_height<BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_position.html" title="with_position<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_rb_flag.html" title="with_red_black_flag<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h4"></a>
+ <span class="phrase"><a name="tree_node.reference.base_types"></a></span><a class="link" href="reference.html#tree_node.reference.base_types">Base
+ Types</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/tree_node_base.html" title="tree_node_base<Derived>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">tree_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/binary_node_base.html" title="binary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/nary_node_base.html" title="nary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h5"></a>
+ <span class="phrase"><a name="tree_node.reference.type_generators"></a></span><a class="link" href="reference.html#tree_node.reference.type_generators">Type
+ Generators</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/binary_node_gen.html" title="binary_node_gen<Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/nary_node_gen.html" title="nary_node_gen<Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/associative_node_gen.html" title="associative_node_gen<Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_accumulation_gen.html" title="with_accumulation_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_count_gen.html" title="with_count_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_height_gen.html" title="with_height_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_position_gen.html" title="with_position_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_rb_flag_gen.html" title="with_red_black_flag_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_gen</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h6"></a>
+ <span class="phrase"><a name="tree_node.reference.iterator_types"></a></span><a class="link" href="reference.html#tree_node.reference.iterator_types">Iterator
+ Types</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/breadth_first_iterator.html" title="breadth_first_iterator<Node>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">breadth_first_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/breadth_first_desc_iter.html" title="breadth_first_descendant_iterator<Node>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">breadth_first_descendant_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/pre_order_iterator.html" title="pre_order_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">pre_order_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/pre_order_desc_iter.html" title="pre_order_descendant_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">pre_order_descendant_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/post_order_iterator.html" title="post_order_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">post_order_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/post_order_desc_iter.html" title="post_order_descendant_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">post_order_descendant_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/in_order_iterator.html" title="in_order_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">in_order_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/depth_first_iterator.html" title="depth_first_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">depth_first_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/depth_first_desc_iter.html" title="depth_first_descendant_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">depth_first_descendant_iterator</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h7"></a>
+ <span class="phrase"><a name="tree_node.reference.enum_types"></a></span><a class="link" href="reference.html#tree_node.reference.enum_types">Enum
+ Types</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/traversal_state.html" title="traversal_state"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">traversal_state</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h8"></a>
+ <span class="phrase"><a name="tree_node.reference.key_types"></a></span><a class="link" href="reference.html#tree_node.reference.key_types">Key
+ Types</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/data_key.html" title="data_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">data_key</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/accumulation_key.html" title="accumulation_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">accumulation_key</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/count_key.html" title="count_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">count_key</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/height_key.html" title="height_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">height_key</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/position_key.html" title="position_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">position_key</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/red_black_flag_key.html" title="red_flag_key and black_flag_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">red_flag_key</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/red_black_flag_key.html" title="red_flag_key and black_flag_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">black_flag_key</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h9"></a>
+ <span class="phrase"><a name="tree_node.reference.algorithms"></a></span><a class="link" href="reference.html#tree_node.reference.algorithms">Algorithms</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/advance_binary.html" title="advance_binary()"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">advance_binary</span><span class="special">()</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/binary_index_of.html" title="binary_index_of()"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_index_of</span><span class="special">()</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/binary_descendant.html" title="binary_descendant()"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_descendant</span><span class="special">()</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/binary_descendant_at_index.html" title="binary_descendant_at_index()"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_descendant_at_index</span><span class="special">()</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/binary_lower_bound.html" title="binary_lower_bound()"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_lower_bound</span><span class="special">()</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/binary_upper_bound.html" title="binary_upper_bound()"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_upper_bound</span><span class="special">()</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h10"></a>
+ <span class="phrase"><a name="tree_node.reference.intrinsic_functions"></a></span><a class="link" href="reference.html#tree_node.reference.intrinsic_functions">Intrinsic
+ Functions</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/dereference_iterator.html" title="dereference_iterator()"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">dereference_iterator</span><span class="special">()</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/get_properties.html" title="get_properties()"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">get_properties</span><span class="special">()</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/has_key.html" title="has_key()"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">has_key</span><span class="special">()</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h11"></a>
+ <span class="phrase"><a name="tree_node.reference.metafunctions"></a></span><a class="link" href="reference.html#tree_node.reference.metafunctions">Metafunctions</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/dereference_iterator.html#tree_node.reference.dereference_iterator.result_of" title="Return Type Metafunction Synopsis"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">dereference_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/get_properties.html#tree_node.reference.get_properties.result_of" title="Return Type Metafunction Synopsis"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_properties</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/get_keys.html" title="result_of::get_keys<Node>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_keys</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/at_key.html" title="result_of::at_key<Node,Key>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/value_at_key.html" title="result_of::value_at_key<Node,Key>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at_key</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h12"></a>
+ <span class="phrase"><a name="tree_node.reference.boilerplate_macros"></a></span><a class="link" href="reference.html#tree_node.reference.boilerplate_macros">Boilerplate
+ Macros</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/copyable_and_movable.html" title="BOOST_TREE_NODE_COPYABLE_AND_MOVABLE"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_COPYABLE_AND_MOVABLE</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/container_derived_body.html" title="BOOST_TREE_NODE_CONTAINER_DERIVED_BODY"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_CONTAINER_DERIVED_BODY</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/assoc_cont_derived_body.html" title="BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h13"></a>
+ <span class="phrase"><a name="tree_node.reference.workaround_macros"></a></span><a class="link" href="reference.html#tree_node.reference.workaround_macros">Workaround
+ Macros</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/emplace_ctor_fwd_decl.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/emplace_ctor_inline_hdr.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HDR"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/emplace_ctor_inline_def.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/emplace_ctor_w_alloc_f_dcl.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/emplace_ctor_w_alloc_i_hdr.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/emplace_ctor_w_alloc_i_def.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF</span></code></a>
+</pre>
+<h4>
+<a name="tree_node.reference.h14"></a>
+ <span class="phrase"><a name="tree_node.reference.feature_querying_macros"></a></span><a class="link" href="reference.html#tree_node.reference.feature_querying_macros">Feature
+ Querying Macros</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/can_use_fusion.html" title="BOOST_TREE_NODE_CAN_USE_FUSION"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_CAN_USE_FUSION</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/can_use_fusion_with_typeof.html" title="BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF</span></code></a>
+</pre>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="concepts/indexable_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="reference/binode_container.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/accumulation_key.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/accumulation_key.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,252 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>accumulation_key</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="data_key.html" title="data_key">
+<link rel="next" href="count_key.html" title="count_key">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="data_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="count_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.accumulation_key"></a><a class="link" href="accumulation_key.html" title="accumulation_key"><code class="computeroutput"><span class="identifier">accumulation_key</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.accumulation_key.synopsis"></a><a class="link" href="accumulation_key.html#tree_node.reference.accumulation_key.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Key</span> <span class="special">=</span> <span class="identifier">data_key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">accumulators</span><span class="special">::</span><span class="identifier">tag</span><span class="special">::</span><span class="identifier">sum</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IncludesAllDescendants</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IncludesRoot</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Value</span> <span class="special">=</span> <span class="keyword">void</span>
+ <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">accumulation_key</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">Key</span> <span class="identifier">key</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">Tag</span> <span class="identifier">tag</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">IncludesAllDescendants</span> <span class="identifier">includes_all_descendants</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">IncludesRoot</span> <span class="identifier">includes_root</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">Value</span> <span class="identifier">value</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">accumulation_key</span><span class="special"><></span> <span class="identifier">default_accumulation_key</span><span class="special">;</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.accumulation_key.description"></a><a class="link" href="accumulation_key.html#tree_node.reference.accumulation_key.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Use this type to access statistical data stored in <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> objects of types ultimately inheriting
+ from <a class="link" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.accumulation_key.definition"></a><a class="link" href="accumulation_key.html#tree_node.reference.accumulation_key.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/key/accumulation.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/key/accumulation.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.accumulation_key.tpl_param"></a><a class="link" href="accumulation_key.html#tree_node.reference.accumulation_key.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Key</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type used to access the data to be accumulated.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis">tree_node::result_of::has_key</a><Node,Key></code>
+ must evaluate to boost::mpl::true_
for some <code class="computeroutput"><span class="identifier">Node</span> <span class="identifier">node</span></code>
+ storing the desired data.
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="data_key.html" title="data_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">data_key</span></code></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Tag</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of the actual computation.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a valid Boost.Accumulators feature.
+ </p>
+ </td>
+<td>
+ <p>
+ accumulators::tag::sum
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IncludesAllDescendants</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Configures the <a class="link" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a>
+ to include all descendants of a target node for statistical evaluation
+ if set to boost::mpl::true_
; otherwise, only
+ the node's immediate children will be included.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </p>
+ </td>
+<td>
+ <p>
+ boost::mpl::true_
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IncludesRoot</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Configures the <a class="link" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a>
+ to include a target node along with its children/descendants
+ for statistical evaluation if set to boost::mpl::true_
; otherwise, the
+ node will be excluded from evaluation.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </p>
+ </td>
+<td>
+ <p>
+ boost::mpl::true_
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Value</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of the accumulated result. If left unspecified, the
+ <a class="link" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a>
+ will use the type of the data to be accumulated.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="data_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="count_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/advance_binary.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/advance_binary.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,75 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>advance_binary()</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="red_black_flag_key.html" title="red_flag_key and black_flag_key">
+<link rel="next" href="binary_index_of.html" title="binary_index_of()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="red_black_flag_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_index_of.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.advance_binary"></a><a class="link" href="advance_binary.html" title="advance_binary()"><code class="computeroutput"><span class="identifier">advance_binary</span><span class="special">()</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.advance_binary.synopsis"></a><a class="link" href="advance_binary.html#tree_node.reference.advance_binary.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Difference</span><span class="special">></span>
+ <span class="identifier">NodePointer</span>
+ <span class="identifier">advance_binary</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span>
+ <span class="special">,</span> <span class="identifier">Difference</span> <span class="identifier">difference</span>
+ <span class="special">,</span> <span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">root_ptr</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Difference</span><span class="special">></span>
+ <span class="identifier">NodePointer</span> <span class="identifier">advance_binary</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">Difference</span> <span class="identifier">difference</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section"><div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.advance_binary.description"></a><a class="link" href="advance_binary.html#tree_node.reference.advance_binary.description" title="Description">Description</a>
+</h4></div></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.advance_binary.definition"></a><a class="link" href="advance_binary.html#tree_node.reference.advance_binary.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/algorithm/advance_binary.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="red_black_flag_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_index_of.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/assoc_cont_derived_body.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/assoc_cont_derived_body.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,98 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="container_derived_body.html" title="BOOST_TREE_NODE_CONTAINER_DERIVED_BODY">
+<link rel="next" href="emplace_ctor_fwd_decl.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="container_derived_body.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_ctor_fwd_decl.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.assoc_cont_derived_body"></a><a class="link" href="assoc_cont_derived_body.html" title="BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY</span></code>
+ </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.assoc_cont_derived_body.synopsis"></a><a class="link" href="assoc_cont_derived_body.html#tree_node.reference.assoc_cont_derived_body.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span> <span class="special">\</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Base</span><span class="special">::</span><span class="identifier">key_type</span> <span class="identifier">key_type</span><span class="special">;</span> <span class="special">\</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Base</span><span class="special">::</span><span class="identifier">value_type</span> <span class="identifier">value_type</span><span class="special">;</span> <span class="special">\</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Base</span><span class="special">::</span><span class="identifier">key_compare</span> <span class="identifier">key_compare</span><span class="special">;</span> <span class="special">\</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Base</span><span class="special">::</span><span class="identifier">value_compare</span> <span class="identifier">value_compare</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_CONTAINER_DERIVED_BODY</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.assoc_cont_derived_body.description"></a><a class="link" href="assoc_cont_derived_body.html#tree_node.reference.assoc_cont_derived_body.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Meant to be used in the <code class="computeroutput"><span class="keyword">public</span></code>
+ scope of an Associative Container model that inherits
+ from another.
+ </p>
+<p>
+ This macro defines the type definitions; the default, copy, and move constructors;
+ and the copy and move assignment operators necessary for the <code class="computeroutput"><span class="identifier">Derived</span></code> class to model the Default Constructible, Copy Constructible, Assignable, Movable, and Associative Container concepts.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.assoc_cont_derived_body.usage"></a><a class="link" href="assoc_cont_derived_body.html#tree_node.reference.assoc_cont_derived_body.usage" title="Usage">Usage</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.assoc_cont_derived_body.arguments"></a><a class="link" href="assoc_cont_derived_body.html#tree_node.reference.assoc_cont_derived_body.arguments" title="Arguments">Arguments</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <span class="special">/</span><span class="identifier">Derived</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">enclosing</span> <span class="identifier">type</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">Base</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">type</span> <span class="identifier">from</span> <span class="identifier">which</span> <span class="error">`</span><span class="identifier">Derived</span><span class="error">`</span> <span class="identifier">inherits</span><span class="special">.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.assoc_cont_derived_body.definition"></a><a class="link" href="assoc_cont_derived_body.html#tree_node.reference.assoc_cont_derived_body.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/preprocessor.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="container_derived_body.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_ctor_fwd_decl.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/assoc_node_base_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/assoc_node_base_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,183 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>associative_node_base_gen<Selector></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>">
+<link rel="next" href="with_accumulation.html" title="with_accumulation<BaseGenerator,T1,T2,AccumulationKey>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="associative_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_accumulation.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.assoc_node_base_gen"></a><a class="link" href="assoc_node_base_gen.html" title="associative_node_base_gen<Selector>"><code class="computeroutput"><span class="identifier">associative_node_base_gen</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.assoc_node_base_gen.synopsis"></a><a class="link" href="assoc_node_base_gen.html#tree_node.reference.assoc_node_base_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">associative_node_base_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Data</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">associative_node_base_gen</span><span class="special"><></span> <span class="identifier">associative_node_base_default_gen</span><span class="special">;</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.assoc_node_base_gen.description"></a><a class="link" href="assoc_node_base_gen.html#tree_node.reference.assoc_node_base_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.assoc_node_base_gen.definition"></a><a class="link" href="assoc_node_base_gen.html#tree_node.reference.assoc_node_base_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/associative_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.assoc_node_base_gen.model_of"></a><a class="link" href="assoc_node_base_gen.html#tree_node.reference.assoc_node_base_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.assoc_node_base_gen.tpl_param"></a><a class="link" href="assoc_node_base_gen.html#tree_node.reference.assoc_node_base_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Selector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines the child container type of <a class="link" href="associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_base</span></code></a>.
+ </p>
+ </td>
+<td>
+ <p>
+ * <code class="literal">is_recursive_selector<Selector></code>
+ must return boost::mpl::true_
. * <code class="literal">is_associative_selector<Selector></code>
+ must return boost::mpl::true_
.
+ </p>
+ </td>
+<td>
+ <p>
+ ptr_mapS
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.assoc_node_base_gen.expressions"></a><a class="link" href="assoc_node_base_gen.html#tree_node.reference.assoc_node_base_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Derived</span></code> be the type
+ that will inherit from <a class="link" href="associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_base</span></code></a>. Let <code class="computeroutput"><span class="identifier">Key</span></code> be the key type. Let <code class="computeroutput"><span class="identifier">Data</span></code> be the user data type. Let <code class="computeroutput"><span class="identifier">Selector</span></code> be a valid <code class="computeroutput"><span class="identifier">associative_node_base_gen</span></code>
+ template argument.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap3<span class="special"><</span>
+ <span class="identifier">associative_node_base_gen</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>">tree_node::associative_node_base</a><Derived,Key,Data,Selector></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.assoc_node_base_gen.complexity"></a><a class="link" href="assoc_node_base_gen.html#tree_node.reference.assoc_node_base_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="associative_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_accumulation.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/associative_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/associative_node.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,1041 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>associative_node<Key,Data,Selector></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="nary_node_base_gen.html" title="nary_node_base_gen<Selector>">
+<link rel="next" href="associative_node_gen.html" title="associative_node_gen<Selector>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nary_node_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="associative_node_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.associative_node"></a><a class="link" href="associative_node.html" title="associative_node<Key,Data,Selector>"><code class="computeroutput"><span class="identifier">associative_node</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node.description"></a><a class="link" href="associative_node.html#tree_node.reference.associative_node.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This class template is suitable for classes or algorithms that need to
+ map keys to child nodes in a tree node data structure. Objects of this
+ type can be stored by value, and their children can be accessed by their
+ associated keys for fast lookup.
+ </p>
+<p>
+ If the user data type models the Fusion Associative Sequence concept, then
+ each of the elements within can be also be obtained through key-value access
+ and set through key-value modification as defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept; more specifically, for
+ some object <code class="computeroutput"><span class="identifier">node</span></code> of type
+ <code class="computeroutput"><span class="identifier">Node</span></code> such that <code class="computeroutput"><span class="identifier">Node</span></code> is a template instantiation of
+ <code class="computeroutput"><span class="identifier">associative_node</span></code>, then
+ for any type <code class="computeroutput"><span class="identifier">Key</span></code> such that
+ <code class="literal">fusion::has_key<Key>(get<<a class="link" href="data_key.html" title="data_key">tree_node::data_key</a>>(node))</code>
+ returns <code class="computeroutput"><span class="keyword">true</span></code>, so does <code class="literal"><a class="link" href="has_key.html" title="has_key()">tree_node::has_key</a><Key>(node)</code>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node.definition"></a><a class="link" href="associative_node.html#tree_node.reference.associative_node.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/associative_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/associative_node_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/associative_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node.tpl_param"></a><a class="link" href="associative_node.html#tree_node.reference.associative_node.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Key</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a key object to be associated with a child of a
+ <code class="computeroutput"><span class="identifier">associative_node</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Data</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of the user data to be stored in an <code class="computeroutput"><span class="identifier">associative_node</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Selector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines the child container type.
+ </p>
+ </td>
+<td>
+ <p>
+ * <code class="literal">is_recursive_selector<Selector></code>
+ must return boost::mpl::true_
. * <code class="literal">is_associative_selector<Selector></code>
+ must return boost::mpl::true_
.
+ </p>
+ </td>
+<td>
+ <p>
+ ptr_mapS
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node.model_of"></a><a class="link" href="associative_node.html#tree_node.reference.associative_node.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+<span class="special">*</span> <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a> <span class="keyword">if</span>
+ <span class="special">[^</span>container_gen<span class="special"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">associative_node</span><span class="special">>::</span><span class="identifier">type</span><span class="special">]</span>
+ <span class="identifier">returns</span> <span class="identifier">a</span> Reversible Container <span class="identifier">model</span>
+<span class="special">*</span> Default Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">Data</span><span class="error">`</span> <span class="identifier">is</span> Default Constructible
+<span class="special">*</span> Copy Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">Data</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible
+<span class="special">*</span> Assignable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">Data</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible <span class="keyword">and</span> Movable
+<span class="special">*</span> Movable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">Data</span><span class="error">`</span> <span class="identifier">is</span> Movable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node.public_bases"></a><a class="link" href="associative_node.html#tree_node.reference.associative_node.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">associative_node_base</span><span class="special"><</span>
+ <span class="identifier">associative_node</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+ <span class="special">,</span> <span class="identifier">Selector</span>
+<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node.members"></a><a class="link" href="associative_node.html#tree_node.reference.associative_node.members" title="Public Members">Public
+ Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Super type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">associative_node_base</span><span class="special"><</span>
+ <span class="identifier">associative_node</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+ <span class="special">,</span> <span class="identifier">Selector</span>
+ <span class="special">></span>
+ <span class="identifier">super_t</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key type, data type, iterator range type, immutable iterator
+ range type, allocator type, allocator reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">traits</span>
+ <span class="identifier">traits</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">pointer</span>
+ <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer-to-const type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_pointer</span>
+ <span class="identifier">const_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">iterator</span>
+ <span class="identifier">iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_iterator</span>
+ <span class="identifier">const_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">reverse_iterator</span>
+ <span class="identifier">reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_reverse_iterator</span>
+ <span class="identifier">const_reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">associative_node</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">associative_node</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">associative_node</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">associative_node</span><span class="special">(</span><span class="identifier">associative_node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">associative_node</span><span class="special">(</span>
+ <span class="identifier">associative_node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">associative_node</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">associative_node</span><span class="special">(</span><span class="identifier">associative_node</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">associative_node</span><span class="special">(</span>
+ <span class="identifier">associative_node</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">associative_node</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">associative_node</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">associative_node</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">associative_node</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">associative_node</span><span class="special">&&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_parent_ptr</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_parent_ptr</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="identifier">iterator</span> <span class="identifier">emplace</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child copy creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span>
+ <span class="identifier">insert</span><span class="special">(</span>
+ <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">,</span> <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">child</span>
+ <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">begin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rend</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range size query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child search
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">find</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child search
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">find</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child search range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">const_iterator_range</span>
+ <span class="identifier">equal_range</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child search range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">iterator_range</span>
+ <span class="identifier">equal_range</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove children
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">size_type</span> <span class="identifier">erase</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Leaf node query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove all children
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">clear</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node.non_members"></a><a class="link" href="associative_node.html#tree_node.reference.associative_node.non_members" title="Non-Members">Non-Members</a>
+</h4></div></div></div>
+<p>
+ Same as those defined in <a class="link" href="associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_base</span></code></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node.example"></a><a class="link" href="associative_node.html#tree_node.reference.associative_node.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ <example/associative_node.cpp>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node.test"></a><a class="link" href="associative_node.html#tree_node.reference.associative_node.test" title="Test">Test</a>
+</h4></div></div></div>
+<p>
+ <test/associative_node.cpp>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nary_node_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="associative_node_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/associative_node_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/associative_node_base.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,1673 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>associative_node_base<Derived,Key,Data,Selector></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="associative_node_gen.html" title="associative_node_gen<Selector>">
+<link rel="next" href="assoc_node_base_gen.html" title="associative_node_base_gen<Selector>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="associative_node_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assoc_node_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.associative_node_base"></a><a class="link" href="associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>"><code class="computeroutput"><span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span></code> </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_base.description"></a><a class="link" href="associative_node_base.html#tree_node.reference.associative_node_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="associative_node.html" title="associative_node<Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node</span></code></a> class template
+ inherits its functionality from this class template. They differ only with
+ regard to template parameters: the <a class="link" href="associative_node.html" title="associative_node<Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node</span></code></a> class template
+ is meant to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">associative_node_base</span></code>
+ is more suitable as a base class template from which <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor class templates can derive
+ via the <a class="link" href="assoc_node_base_gen.html" title="associative_node_base_gen<Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_base_gen</span></code></a> <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base
+ Type Generator</strong></span></a>.
+ </p>
+<p>
+ If the user data type models the Fusion Associative Sequence concept, then
+ each of the elements within can be also be obtained through key-value access
+ and set through key-value modification as defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept; more specifically, for
+ some object <code class="computeroutput"><span class="identifier">node</span></code> of type
+ <code class="computeroutput"><span class="identifier">Node</span></code> such that <code class="computeroutput"><span class="identifier">Node</span></code> inherits from <code class="computeroutput"><span class="identifier">associative_node_base</span></code>,
+ then for any type <code class="computeroutput"><span class="identifier">Key</span></code> such
+ that <code class="literal">fusion::has_key<Key>(get<<a class="link" href="data_key.html" title="data_key">tree_node::data_key</a>>(node))</code>
+ returns <code class="computeroutput"><span class="keyword">true</span></code>, so does <code class="literal"><a class="link" href="has_key.html" title="has_key()">tree_node::has_key</a><Key>(node)</code>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_base.definition"></a><a class="link" href="associative_node_base.html#tree_node.reference.associative_node_base.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/associative_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/associative_node_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/associative_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_base.tpl_param"></a><a class="link" href="associative_node_base.html#tree_node.reference.associative_node_base.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Derived</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The most descendant type that will inherit from this one.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Key</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Data</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Selector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines the child container type.
+ </p>
+ </td>
+<td>
+ <p>
+ * <code class="literal">is_recursive_selector<Selector></code>
+ must return boost::mpl::true_
. * <code class="literal">is_associative_selector<Selector></code>
+ must return boost::mpl::true_
.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_base.model_of"></a><a class="link" href="associative_node_base.html#tree_node.reference.associative_node_base.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+<span class="special">*</span> <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a> <span class="keyword">if</span> <span class="special">[^</span>container_gen<span class="special"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">>::</span><span class="identifier">type</span><span class="special">]</span>
+ <span class="identifier">returns</span> <span class="identifier">a</span> Reversible Container <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a>
+<span class="special">*</span> Default Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">Data</span><span class="error">`</span> <span class="identifier">is</span> Default Constructible
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_base.public_bases"></a><a class="link" href="associative_node_base.html#tree_node.reference.associative_node_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">tree_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_base.members"></a><a class="link" href="associative_node_base.html#tree_node.reference.associative_node_base.members" title="Members">Members</a>
+</h4></div></div></div>
+<p>
+ Given:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">children</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Super type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">tree_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">></span>
+ <span class="identifier">super_t</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key type, data type, iterator range type, immutable iterator
+ range type, allocator type, allocator reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">traits</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">Key</span>
+ <span class="identifier">key_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">Data</span>
+ <span class="identifier">data_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span><span class="special"><</span><span class="identifier">iterator</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">iterator</span><span class="special">,</span><span class="identifier">iterator</span><span class="special">></span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">iterator_range</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">is_ptr_selector</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_range</span><span class="special"><</span><span class="identifier">const_iterator</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">const_iterator</span><span class="special">,</span><span class="identifier">const_iterator</span><span class="special">></span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">const_iterator_range</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">children</span><span class="special">::</span><span class="identifier">allocator_type</span>
+ <span class="identifier">allocator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">allocator</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="identifier">allocator_reference</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">pointer</span>
+ <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer-to-const type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_pointer</span>
+ <span class="identifier">const_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">children</span><span class="special">::</span><span class="identifier">iterator</span>
+ <span class="identifier">iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">children</span><span class="special">::</span><span class="identifier">const_iterator</span>
+ <span class="identifier">const_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="comment">// typename children::reverse_iterator</span>
+ <span class="identifier">reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="comment">// typename children::const_reverse_iterator</span>
+ <span class="identifier">const_reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">associative_node_base</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">associative_node_base</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">associative_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">associative_node_base</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">associative_node_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">associative_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">associative_node_base</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">associative_node_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">associative_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy or move notification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">on_post_copy_or_move</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy assignment
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">copy_assign</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move assignment
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">Derived</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">Derived</span><span class="special">&&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ User data member read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">FusionKey</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lazy_enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">Data</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">Data</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">Data</span> <span class="keyword">const</span><span class="special">,</span><span class="identifier">FusionKey</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">nary_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ User data member access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">FusionKey</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lazy_enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">Data</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">Data</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">FusionKey</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">nary_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_parent_ptr</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_parent_ptr</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="identifier">iterator</span> <span class="identifier">emplace</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child copy creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span>
+ <span class="identifier">insert</span><span class="special">(</span>
+ <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">,</span> <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">child</span>
+ <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">begin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rend</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range size query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child search
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">find</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child search
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">find</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child search range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">const_iterator_range</span>
+ <span class="identifier">equal_range</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child search range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">iterator_range</span>
+ <span class="identifier">equal_range</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove children
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">size_type</span> <span class="identifier">erase</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Leaf node query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove all children
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">clear</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_derived</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_derived</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_base.non_members"></a><a class="link" href="associative_node_base.html#tree_node.reference.associative_node_base.non_members" title="Non-Members">Non-Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ User data read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Data</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">associative_node_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+ <span class="special">,</span> <span class="identifier">Selector</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">DataKey</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Data</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Selector</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">DataKey</span><span class="special">,</span><span class="identifier">data_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">associative_node_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+ <span class="special">,</span> <span class="identifier">Selector</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ User data access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Data</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Selector</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">associative_node_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+ <span class="special">,</span> <span class="identifier">Selector</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">>&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">DataKey</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Data</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Selector</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">DataKey</span><span class="special">,</span><span class="identifier">data_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">associative_node_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+ <span class="special">,</span> <span class="identifier">Selector</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">>&</span> <span class="identifier">node</span><span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ User data modification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Data</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">V</span>
+ <span class="special">></span>
+ <span class="keyword">void</span>
+ <span class="identifier">put</span><span class="special">(</span>
+ <span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">>&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">,</span> <span class="identifier">V</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">value</span>
+ <span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">FusionKey</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lazy_enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">Data</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">Data</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">Data</span> <span class="keyword">const</span><span class="special">,</span><span class="identifier">FusionKey</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">FusionKey</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lazy_enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">Data</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">Data</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">FusionKey</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value modification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Data</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">FusionKey</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">V</span>
+ <span class="special">></span>
+ <span class="keyword">void</span>
+ <span class="identifier">put</span><span class="special">(</span>
+ <span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">>&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">,</span> <span class="identifier">V</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">value</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">Data</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">Data</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">associative_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">()</span>
+ <span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="associative_node_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assoc_node_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/associative_node_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/associative_node_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,182 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>associative_node_gen<Selector></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="associative_node.html" title="associative_node<Key,Data,Selector>">
+<link rel="next" href="associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="associative_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="associative_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.associative_node_gen"></a><a class="link" href="associative_node_gen.html" title="associative_node_gen<Selector>"><code class="computeroutput"><span class="identifier">associative_node_gen</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_gen.synopsis"></a><a class="link" href="associative_node_gen.html#tree_node.reference.associative_node_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_mapS</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">associative_node_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Data</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">associative_node</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">associative_node_gen</span><span class="special"><></span> <span class="identifier">associative_node_default_gen</span><span class="special">;</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_gen.description"></a><a class="link" href="associative_node_gen.html#tree_node.reference.associative_node_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_gen.definition"></a><a class="link" href="associative_node_gen.html#tree_node.reference.associative_node_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/associative_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_gen.model_of"></a><a class="link" href="associative_node_gen.html#tree_node.reference.associative_node_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_gen.tpl_param"></a><a class="link" href="associative_node_gen.html#tree_node.reference.associative_node_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Selector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines the child container type of <a class="link" href="associative_node.html" title="associative_node<Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node</span></code></a>.
+ </p>
+ </td>
+<td>
+ <p>
+ * <code class="literal">is_recursive_selector<Selector></code>
+ must return boost::mpl::true_
. * <code class="literal">is_associative_selector<Selector></code>
+ must return boost::mpl::true_
.
+ </p>
+ </td>
+<td>
+ <p>
+ ptr_mapS
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_gen.expressions"></a><a class="link" href="associative_node_gen.html#tree_node.reference.associative_node_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Derived</span></code> be the type
+ that will inherit from <a class="link" href="associative_node_base.html" title="associative_node_base<Derived,Key,Data,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">associative_node_base</span></code></a>. Let <code class="computeroutput"><span class="identifier">Key</span></code> be the key type. Let <code class="computeroutput"><span class="identifier">Data</span></code> be the user data type. Let <code class="computeroutput"><span class="identifier">Selector</span></code> be a valid <code class="computeroutput"><span class="identifier">associative_node_gen</span></code>
+ template argument.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span>
+ <span class="identifier">associative_node_gen</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="associative_node.html" title="associative_node<Key,Data,Selector>">tree_node::associative_node</a><Key,Data,Selector></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.associative_node_gen.complexity"></a><a class="link" href="associative_node_gen.html#tree_node.reference.associative_node_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="associative_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="associative_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/at_key.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/at_key.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,99 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>result_of::at_key<Node,Key></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="get_keys.html" title="result_of::get_keys<Node>">
+<link rel="next" href="value_at_key.html" title="result_of::value_at_key<Node,Key>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="get_keys.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="value_at_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.at_key"></a><a class="link" href="at_key.html" title="result_of::at_key<Node,Key>"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">Key</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.at_key.synopsis"></a><a class="link" href="at_key.html#tree_node.reference.at_key.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">at_key_impl</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">BOOST_TYPEOF_TPL</span><span class="special">(</span><span class="identifier">get</span><span class="special"><</span><span class="identifier">Key</span><span class="special">>(::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get_reference</span><span class="special"><</span><span class="identifier">Node</span><span class="special">>()))</span>
+ <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">at_key</span> <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap1</span><span class="special"><</span><span class="identifier">at_key_impl</span><span class="special"><</span><span class="identifier">Key</span><span class="special">>,</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">{</span>
+ <span class="identifier">BOOST_MPL_AUX_LAMBDA_SUPPORT</span><span class="special">(</span><span class="number">2</span><span class="special">,</span><span class="identifier">at_key</span><span class="special">,(</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">Key</span><span class="special">))</span>
+ <span class="special">};</span>
+<span class="special">}}}</span> <span class="comment">// namespace boost::tree_node::result_of</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.at_key.description"></a><a class="link" href="at_key.html#tree_node.reference.at_key.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Node</span></code> be a (possibly
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified) <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> model. Let <code class="computeroutput"><span class="identifier">Key</span></code>
+ be a type for which <code class="literal"><a class="link" href="has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis">tree_node::result_of::has_key</a><Node,Key></code>
+ evaluates to boost::mpl::true_
.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">Key</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> The type of the result of
+ using <code class="computeroutput"><span class="identifier">get</span></code> to access the
+ value associated with key type <code class="computeroutput"><span class="identifier">Key</span></code>
+ in <code class="computeroutput"><span class="identifier">Node</span></code>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.at_key.definition"></a><a class="link" href="at_key.html#tree_node.reference.at_key.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/intrinsic/at_key.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="get_keys.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="value_at_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/avl_balancer.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/avl_balancer.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,88 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>avl_balancer</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="red_black_balancer.html" title="red_black_balancer">
+<link rel="next" href="binary_node.html" title="binary_node<T,Size,AllocatorSelector>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="red_black_balancer.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.avl_balancer"></a><a class="link" href="avl_balancer.html" title="avl_balancer"><code class="computeroutput"><span class="identifier">avl_balancer</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.avl_balancer.synopsis"></a><a class="link" href="avl_balancer.html#tree_node.reference.avl_balancer.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">struct</span> <span class="identifier">adelson_velskii_landis_balancer</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="identifier">NodePointer</span> <span class="identifier">post_insert</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">choose_predecessor</span><span class="special">(</span><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">pre_erase</span><span class="special">(</span><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="identifier">NodePointer</span> <span class="identifier">post_erase_left</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="identifier">NodePointer</span> <span class="identifier">post_erase_right</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span><span class="special">);</span>
+
+ <span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.avl_balancer.description"></a><a class="link" href="avl_balancer.html#tree_node.reference.avl_balancer.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.avl_balancer.definition"></a><a class="link" href="avl_balancer.html#tree_node.reference.avl_balancer.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/balancer/adelson_velskii_landis.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="red_black_balancer.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_descendant.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_descendant.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binary_descendant()</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binary_index_of.html" title="binary_index_of()">
+<link rel="next" href="binary_descendant_at_index.html" title="binary_descendant_at_index()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_index_of.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_descendant_at_index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binary_descendant"></a><a class="link" href="binary_descendant.html" title="binary_descendant()"><code class="computeroutput"><span class="identifier">binary_descendant</span><span class="special">()</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_descendant.synopsis"></a><a class="link" href="binary_descendant.html#tree_node.reference.binary_descendant.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Value</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Compare</span><span class="special">></span>
+ <span class="identifier">NodePointer</span>
+ <span class="identifier">binary_descendant</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span>
+ <span class="special">,</span> <span class="identifier">Value</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">value</span>
+ <span class="special">,</span> <span class="identifier">Compare</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">compare</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section"><div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_descendant.description"></a><a class="link" href="binary_descendant.html#tree_node.reference.binary_descendant.description" title="Description">Description</a>
+</h4></div></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_descendant.definition"></a><a class="link" href="binary_descendant.html#tree_node.reference.binary_descendant.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/algorithm/binary_descendant.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_index_of.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_descendant_at_index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_descendant_at_index.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_descendant_at_index.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,67 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binary_descendant_at_index()</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binary_descendant.html" title="binary_descendant()">
+<link rel="next" href="binary_lower_bound.html" title="binary_lower_bound()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_descendant.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_lower_bound.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binary_descendant_at_index"></a><a class="link" href="binary_descendant_at_index.html" title="binary_descendant_at_index()"><code class="computeroutput"><span class="identifier">binary_descendant_at_index</span><span class="special">()</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_descendant_at_index.synopsis"></a><a class="link" href="binary_descendant_at_index.html#tree_node.reference.binary_descendant_at_index.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Index</span><span class="special">></span>
+ <span class="identifier">NodePointer</span> <span class="identifier">binary_descendant_at_index</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">Index</span> <span class="identifier">index</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section"><div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_descendant_at_index.description"></a><a class="link" href="binary_descendant_at_index.html#tree_node.reference.binary_descendant_at_index.description" title="Description">Description</a>
+</h4></div></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_descendant_at_index.definition"></a><a class="link" href="binary_descendant_at_index.html#tree_node.reference.binary_descendant_at_index.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/algorithm/binary_descendant_at_index.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_descendant.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_lower_bound.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_index_of.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_index_of.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,75 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binary_index_of()</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="advance_binary.html" title="advance_binary()">
+<link rel="next" href="binary_descendant.html" title="binary_descendant()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="advance_binary.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_descendant.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binary_index_of"></a><a class="link" href="binary_index_of.html" title="binary_index_of()"><code class="computeroutput"><span class="identifier">binary_index_of</span><span class="special">()</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_index_of.synopsis"></a><a class="link" href="binary_index_of.html#tree_node.reference.binary_index_of.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Value</span><span class="special">></span>
+ <span class="identifier">Value</span>
+ <span class="identifier">binary_index_of</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span>
+ <span class="special">,</span> <span class="identifier">Value</span> <span class="identifier">offset</span>
+ <span class="special">,</span> <span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">root_ptr</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Value</span><span class="special">></span>
+ <span class="identifier">Value</span> <span class="identifier">binary_index_of</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span><span class="special">,</span> <span class="identifier">Value</span> <span class="identifier">offset</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section"><div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_index_of.description"></a><a class="link" href="binary_index_of.html#tree_node.reference.binary_index_of.description" title="Description">Description</a>
+</h4></div></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_index_of.definition"></a><a class="link" href="binary_index_of.html#tree_node.reference.binary_index_of.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/algorithm/binary_index_of.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="advance_binary.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_descendant.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_lower_bound.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_lower_bound.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binary_lower_bound()</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binary_descendant_at_index.html" title="binary_descendant_at_index()">
+<link rel="next" href="binary_upper_bound.html" title="binary_upper_bound()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_descendant_at_index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_upper_bound.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binary_lower_bound"></a><a class="link" href="binary_lower_bound.html" title="binary_lower_bound()"><code class="computeroutput"><span class="identifier">binary_lower_bound</span><span class="special">()</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_lower_bound.synopsis"></a><a class="link" href="binary_lower_bound.html#tree_node.reference.binary_lower_bound.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Value</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Compare</span><span class="special">></span>
+ <span class="identifier">NodePointer</span>
+ <span class="identifier">binary_lower_bound</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span>
+ <span class="special">,</span> <span class="identifier">Value</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">value</span>
+ <span class="special">,</span> <span class="identifier">Compare</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">compare</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section"><div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_lower_bound.description"></a><a class="link" href="binary_lower_bound.html#tree_node.reference.binary_lower_bound.description" title="Description">Description</a>
+</h4></div></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_lower_bound.definition"></a><a class="link" href="binary_lower_bound.html#tree_node.reference.binary_lower_bound.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/algorithm/binary_lower_bound.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_descendant_at_index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_upper_bound.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_node.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,1144 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binary_node<T,Size,AllocatorSelector></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="avl_balancer.html" title="avl_balancer">
+<link rel="next" href="binary_node_gen.html" title="binary_node_gen<Size,AllocatorSelector>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="avl_balancer.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_node_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binary_node"></a><a class="link" href="binary_node.html" title="binary_node<T,Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">binary_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">AllocatorSelector</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node.description"></a><a class="link" href="binary_node.html#tree_node.reference.binary_node.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This class template is suitable for classes or algorithms that require
+ a binary tree node data structure. Objects of this type can be stored by
+ value.
+ </p>
+<p>
+ If the user data type models the Fusion Associative Sequence concept, then
+ each of the elements within can be also be obtained through key-value access
+ and set through key-value modification as defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept; more specifically, for
+ some object <code class="computeroutput"><span class="identifier">node</span></code> of type
+ <code class="computeroutput"><span class="identifier">Node</span></code> such that <code class="computeroutput"><span class="identifier">Node</span></code> is a template instantiation of
+ <code class="computeroutput"><span class="identifier">binary_node</span></code>, then for any
+ type <code class="computeroutput"><span class="identifier">Key</span></code> such that <code class="literal">fusion::has_key<Key>(get<<a class="link" href="data_key.html" title="data_key">tree_node::data_key</a>>(node))</code>
+ returns <code class="computeroutput"><span class="keyword">true</span></code>, so does <code class="literal"><a class="link" href="has_key.html" title="has_key()">tree_node::has_key</a><Key>(node)</code>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node.definition"></a><a class="link" href="binary_node.html#tree_node.reference.binary_node.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/binary_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/binary_node_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/binary_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node.tpl_param"></a><a class="link" href="binary_node.html#tree_node.reference.binary_node.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of the user data to be stored in a <code class="computeroutput"><span class="identifier">binary_node</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Size</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The size type.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">uint32_t</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AllocatorSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Unary Metafunction Class that
+ takes in <code class="computeroutput"><span class="identifier">binary_node</span></code>
+ and returns either an allocator model or a mutable reference
+ to one.
+ </p>
+ </td>
+<td>
+ <p>
+ std_allocator_selector
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node.model_of"></a><a class="link" href="binary_node.html#tree_node.reference.binary_node.model_of" title="Model of">Model of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+<span class="special">*</span> Default Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Default Constructible
+<span class="special">*</span> Copy Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible
+<span class="special">*</span> Assignable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible <span class="keyword">and</span> Movable
+<span class="special">*</span> Movable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Movable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node.public_bases"></a><a class="link" href="binary_node.html#tree_node.reference.binary_node.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">binary_node_base</span><span class="special"><</span>
+ <span class="identifier">binary_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">AllocatorSelector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">T</span>
+ <span class="special">,</span> <span class="identifier">Size</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap1</span><span class="special"><</span>
+ <span class="identifier">AllocatorSelector</span>
+ <span class="special">,</span> <span class="identifier">binary_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">AllocatorSelector</span><span class="special">></span>
+ <span class="special">>::</span><span class="identifier">type</span>
+<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node.members"></a><a class="link" href="binary_node.html#tree_node.reference.binary_node.members" title="Public Members">Public Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Super type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">binary_node_base</span><span class="special"><</span>
+ <span class="identifier">binary_node</span>
+ <span class="special">,</span> <span class="identifier">T</span>
+ <span class="special">,</span> <span class="identifier">Size</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap1</span><span class="special"><</span>
+ <span class="identifier">AllocatorSelector</span>
+ <span class="special">,</span> <span class="identifier">binary_node</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">></span>
+ <span class="identifier">super_t</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data type, allocator type, allocator reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">traits</span>
+ <span class="identifier">traits</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">pointer</span>
+ <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer-to-const type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_pointer</span>
+ <span class="identifier">const_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">iterator</span>
+ <span class="identifier">iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_iterator</span>
+ <span class="identifier">const_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">reverse_iterator</span>
+ <span class="identifier">reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_reverse_iterator</span>
+ <span class="identifier">const_reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Size type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">size_type</span>
+ <span class="identifier">size_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">binary_node</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">binary_node</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binary_node</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binary_node</span><span class="special">(</span><span class="identifier">binary_node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binary_node</span><span class="special">(</span>
+ <span class="identifier">binary_node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binary_node</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binary_node</span><span class="special">(</span><span class="identifier">binary_node</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binary_node</span><span class="special">(</span>
+ <span class="identifier">binary_node</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binary_node</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binary_node</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binary_node</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binary_node</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binary_node</span><span class="special">&&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_parent_ptr</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_parent_ptr</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left child creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="identifier">iterator</span> <span class="identifier">emplace_left</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left child copy creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">insert_left</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">child</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="identifier">iterator</span> <span class="identifier">emplace_right</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child copy creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">insert_right</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">child</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left child access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_left_child_ptr</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left child access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_left_child_ptr</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_right_child_ptr</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_right_child_ptr</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">begin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rend</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range size query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Rotate left
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">rotate_left</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Rotate right
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">rotate_right</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove left child
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">erase_left</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove right child
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">erase_right</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Leaf node query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove all children
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">clear</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node.non_members"></a><a class="link" href="binary_node.html#tree_node.reference.binary_node.non_members" title="Non-Members">Non-Members</a>
+</h4></div></div></div>
+<p>
+ Same as those defined in <a class="link" href="binary_node_base.html" title="binary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_base</span></code></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node.example"></a><a class="link" href="binary_node.html#tree_node.reference.binary_node.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ <example/binary_node.cpp>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node.test"></a><a class="link" href="binary_node.html#tree_node.reference.binary_node.test" title="Test">Test</a>
+</h4></div></div></div>
+<p>
+ <test/binary_node.cpp>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="avl_balancer.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_node_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_node_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_node_base.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,1796 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binary_node_base<Derived,T,Selector></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binary_node_gen.html" title="binary_node_gen<Size,AllocatorSelector>">
+<link rel="next" href="binary_node_base_gen.html" title="binary_node_base_gen<Size,AllocatorSelector>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_node_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_node_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binary_node_base"></a><a class="link" href="binary_node_base.html" title="binary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base.description"></a><a class="link" href="binary_node_base.html#tree_node.reference.binary_node_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="binary_node.html" title="binary_node<T,Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node</span></code></a>
+ class template inherits its functionality from this class template. They
+ differ only with regard to template parameters: the <a class="link" href="binary_node.html" title="binary_node<T,Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node</span></code></a> class template is
+ meant to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">binary_node_base</span></code>
+ is more suitable as a base class template from which <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor class templates can derive
+ via the <a class="link" href="binary_node_base_gen.html" title="binary_node_base_gen<Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_base_gen</span></code></a> <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a>.
+ </p>
+<p>
+ If the user data type models the Fusion Associative Sequence concept, then
+ each of the elements within can be also be obtained through key-value access
+ and set through key-value modification as defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept; more specifically, for
+ some object <code class="computeroutput"><span class="identifier">node</span></code> of type
+ <code class="computeroutput"><span class="identifier">Node</span></code> such that <code class="computeroutput"><span class="identifier">Node</span></code> inherits from <code class="computeroutput"><span class="identifier">binary_node_base</span></code>,
+ then for any type <code class="computeroutput"><span class="identifier">Key</span></code> such
+ that <code class="literal">fusion::has_key<Key>(get<<a class="link" href="data_key.html" title="data_key">tree_node::data_key</a>>(node))</code>
+ returns <code class="computeroutput"><span class="keyword">true</span></code>, so does <code class="literal"><a class="link" href="has_key.html" title="has_key()">tree_node::has_key</a><Key>(node)</code>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base.definition"></a><a class="link" href="binary_node_base.html#tree_node.reference.binary_node_base.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/binary_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/binary_node_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/binary_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base.tpl_param"></a><a class="link" href="binary_node_base.html#tree_node.reference.binary_node_base.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Derived</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The most descendant type that will inherit from this one.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Size</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The size type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Selector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Unary Metafunction Class that
+ takes in <code class="computeroutput"><span class="identifier">binary_node</span></code>
+ and returns either an allocator model or a mutable reference
+ to one.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base.model_of"></a><a class="link" href="binary_node_base.html#tree_node.reference.binary_node_base.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+<span class="special">*</span> <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a>
+<span class="special">*</span> Default Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Default Constructible
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base.public_bases"></a><a class="link" href="binary_node_base.html#tree_node.reference.binary_node_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">tree_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base.members"></a><a class="link" href="binary_node_base.html#tree_node.reference.binary_node_base.members" title="Members">Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Super type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">tree_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">></span> <span class="identifier">super_t</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data type, allocator type, allocator reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">traits</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span>
+ <span class="identifier">data_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">remove_reference</span><span class="special"><</span><span class="identifier">Allocator</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">allocator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_reference</span><span class="special"><</span><span class="identifier">Allocator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">add_reference</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">add_const</span><span class="special"><</span><span class="identifier">Allocator</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">allocator_reference</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">pointer</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer-to-const type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_pointer</span> <span class="identifier">const_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">implementation_defined</span> <span class="identifier">iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">implementation_defined</span> <span class="identifier">const_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">implementation_defined</span> <span class="identifier">reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">implementation_defined</span> <span class="identifier">const_reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Size type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">Size</span> <span class="identifier">size_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">binary_node_base</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">binary_node_base</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binary_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binary_node_base</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binary_node_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binary_node_base</span></code>
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binary_node_base</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binary_node_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binary_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy or move notification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">on_post_copy_or_move</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy assignment
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">copy_assign</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move assignment
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">move_assign</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ User data member read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">FusionKey</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lazy_enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">,</span><span class="identifier">FusionKey</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binary_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ User data member access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">FusionKey</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lazy_enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">FusionKey</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binary_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_parent_ptr</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_parent_ptr</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left child creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="identifier">iterator</span> <span class="identifier">emplace_left</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left child copy creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">insert_left</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">child</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="identifier">iterator</span> <span class="identifier">emplace_right</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child copy creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">insert_right</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">child</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left child access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_left_child_ptr</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left child access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_left_child_ptr</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_right_child_ptr</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_right_child_ptr</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">begin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rend</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range size query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Rotate left
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">rotate_left</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Rotate right
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">rotate_right</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove left child
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">erase_left</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove right child
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">erase_right</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Leaf node query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove all children
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">clear</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_derived</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_derived</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base.non_members"></a><a class="link" href="binary_node_base.html#tree_node.reference.binary_node_base.non_members" title="Non-Members">Non-Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ User data read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</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">Size</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">binary_node_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">T</span>
+ <span class="special">,</span> <span class="identifier">Size</span>
+ <span class="special">,</span> <span class="identifier">Allocator</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</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">Size</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">data_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">binary_node_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">T</span>
+ <span class="special">,</span> <span class="identifier">Size</span>
+ <span class="special">,</span> <span class="identifier">Allocator</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ User data access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</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">Size</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</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">Size</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">data_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">node</span><span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ User data modification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</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">Size</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">V</span>
+ <span class="special">></span>
+ <span class="keyword">void</span>
+ <span class="identifier">put</span><span class="special">(</span>
+ <span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">,</span> <span class="identifier">V</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">value</span>
+ <span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">FusionKey</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lazy_enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">,</span><span class="identifier">FusionKey</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&);</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">FusionKey</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lazy_enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">FusionKey</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value modification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</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">Size</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Allocator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">FusionKey</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">V</span>
+ <span class="special">></span>
+ <span class="keyword">void</span>
+ <span class="identifier">put</span><span class="special">(</span>
+ <span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">>&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">,</span> <span class="identifier">V</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">value</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">binary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">Allocator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">()</span>
+ <span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_node_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_node_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_node_base_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_node_base_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,211 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binary_node_base_gen<Size,AllocatorSelector></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binary_node_base.html" title="binary_node_base<Derived,T,Selector>">
+<link rel="next" href="nary_node.html" title="nary_node<T,Selector>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nary_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binary_node_base_gen"></a><a class="link" href="binary_node_base_gen.html" title="binary_node_base_gen<Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">binary_node_base_gen</span><span class="special"><</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">AllocatorSelector</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base_gen.synopsis"></a><a class="link" href="binary_node_base_gen.html#tree_node.reference.binary_node_base_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Size</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint32_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span>
+ <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">binary_node_base_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">binary_node_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">T</span>
+ <span class="special">,</span> <span class="identifier">Size</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap1</span><span class="special"><</span>
+ <span class="identifier">AllocatorSelector</span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">></span>
+ <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">binary_node_base_gen</span><span class="special"><></span> <span class="identifier">binary_node_base_default_gen</span><span class="special">;</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base_gen.description"></a><a class="link" href="binary_node_base_gen.html#tree_node.reference.binary_node_base_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base_gen.definition"></a><a class="link" href="binary_node_base_gen.html#tree_node.reference.binary_node_base_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/binary_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base_gen.tpl_param"></a><a class="link" href="binary_node_base_gen.html#tree_node.reference.binary_node_base_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Size</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The size type of the return type of this metafunction class.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">uint32_t</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AllocatorSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Unary Metafunction Class that
+ takes in the return type of this metafunction class and returns
+ either an allocator model or a mutable reference to one.
+ </p>
+ </td>
+<td>
+ <p>
+ std_allocator_selector
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base_gen.model_of"></a><a class="link" href="binary_node_base_gen.html#tree_node.reference.binary_node_base_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base_gen.expressions"></a><a class="link" href="binary_node_base_gen.html#tree_node.reference.binary_node_base_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Derived</span></code> be the type
+ that will inherit from <a class="link" href="binary_node_base.html" title="binary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binary_node_base</span></code></a>. Let <code class="computeroutput"><span class="identifier">T</span></code> be the user data type.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span>
+ <span class="identifier">binary_node_base_gen</span><span class="special"><</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">AllocatorSelector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">T</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span>
+</p>
+<pre class="programlisting"><a class="link" href="binary_node_base.html" title="binary_node_base<Derived,T,Selector>">tree_node::binary_node_base</a><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">T</span>
+ <span class="special">,</span> <span class="identifier">Size</span>
+ <span class="special">,</span> boost::mpl::apply_wrap1<span class="special"><</span><span class="identifier">AllocatorSelector</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">>::</span><span class="identifier">type</span>
+<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_base_gen.complexity"></a><a class="link" href="binary_node_base_gen.html#tree_node.reference.binary_node_base_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nary_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_node_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_node_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,189 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binary_node_gen<Size,AllocatorSelector></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binary_node.html" title="binary_node<T,Size,AllocatorSelector>">
+<link rel="next" href="binary_node_base.html" title="binary_node_base<Derived,T,Selector>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binary_node_gen"></a><a class="link" href="binary_node_gen.html" title="binary_node_gen<Size,AllocatorSelector>"><code class="computeroutput"><span class="identifier">binary_node_gen</span><span class="special"><</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">AllocatorSelector</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_gen.synopsis"></a><a class="link" href="binary_node_gen.html#tree_node.reference.binary_node_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Size</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint32_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AllocatorSelector</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">std_allocator_selector</span>
+ <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">binary_node_gen</span>
+ <span class="special">{</span>
+ <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">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">binary_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">AllocatorSelector</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">binary_node_gen</span><span class="special"><></span> <span class="identifier">binary_node_default_gen</span><span class="special">;</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_gen.description"></a><a class="link" href="binary_node_gen.html#tree_node.reference.binary_node_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_gen.definition"></a><a class="link" href="binary_node_gen.html#tree_node.reference.binary_node_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/binary_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_gen.tpl_param"></a><a class="link" href="binary_node_gen.html#tree_node.reference.binary_node_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Size</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The size type of the return type of this metafunction class.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">uint32_t</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AllocatorSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Unary Metafunction Class that
+ takes in the return type of this metafunction class and returns
+ either an allocator model or a mutable reference to one.
+ </p>
+ </td>
+<td>
+ <p>
+ std_allocator_selector
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_gen.model_of"></a><a class="link" href="binary_node_gen.html#tree_node.reference.binary_node_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_gen.expressions"></a><a class="link" href="binary_node_gen.html#tree_node.reference.binary_node_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">T</span></code> be the user data
+ type.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap1<span class="special"><</span><span class="identifier">binary_node_gen</span><span class="special"><</span><span class="identifier">Size</span><span class="special">,</span><span class="identifier">AllocatorSelector</span><span class="special">>,</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="binary_node.html" title="binary_node<T,Size,AllocatorSelector>">tree_node::binary_node</a><T,Size,AllocatorSelector></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_node_gen.complexity"></a><a class="link" href="binary_node_gen.html#tree_node.reference.binary_node_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binary_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_upper_bound.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binary_upper_bound.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,72 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binary_upper_bound()</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binary_lower_bound.html" title="binary_lower_bound()">
+<link rel="next" href="dereference_iterator.html" title="dereference_iterator()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_lower_bound.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="dereference_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binary_upper_bound"></a><a class="link" href="binary_upper_bound.html" title="binary_upper_bound()"><code class="computeroutput"><span class="identifier">binary_upper_bound</span><span class="special">()</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_upper_bound.synopsis"></a><a class="link" href="binary_upper_bound.html#tree_node.reference.binary_upper_bound.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Value</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Compare</span><span class="special">></span>
+ <span class="identifier">NodePointer</span>
+ <span class="identifier">binary_upper_bound</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span>
+ <span class="special">,</span> <span class="identifier">Value</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">value</span>
+ <span class="special">,</span> <span class="identifier">Compare</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">compare</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section"><div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_upper_bound.description"></a><a class="link" href="binary_upper_bound.html#tree_node.reference.binary_upper_bound.description" title="Description">Description</a>
+</h4></div></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binary_upper_bound.definition"></a><a class="link" href="binary_upper_bound.html#tree_node.reference.binary_upper_bound.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/algorithm/binary_upper_bound.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_lower_bound.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="dereference_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_assoc_container.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_assoc_container.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,1359 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binode_associative_container< NodeGenerator , T1 , T2 , IsMultipleAssociative , CompareSelector , Balancer ></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binode_container.html" title="binode_container<NodeGenerator,T,Balancer>">
+<link rel="next" href="binode_set.html" title="binode_set<NodeGenerator,T,CompareSelector,Balancer>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binode_container.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binode_set.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binode_assoc_container"></a><a class="link" href="binode_assoc_container.html" title="binode_associative_container< NodeGenerator , T1 , T2 , IsMultipleAssociative , CompareSelector , Balancer >"><code class="computeroutput"><span class="identifier">binode_associative_container</span><span class="special"><</span>
+ <span class="identifier">NodeGenerator</span> <span class="special">,</span>
+ <span class="identifier">T1</span> <span class="special">,</span> <span class="identifier">T2</span> <span class="special">,</span> <span class="identifier">IsMultipleAssociative</span>
+ <span class="special">,</span> <span class="identifier">CompareSelector</span>
+ <span class="special">,</span> <span class="identifier">Balancer</span>
+ <span class="special">></span></code> </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_assoc_container.description"></a><a class="link" href="binode_assoc_container.html#tree_node.reference.binode_assoc_container.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_assoc_container.definition"></a><a class="link" href="binode_assoc_container.html#tree_node.reference.binode_assoc_container.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/container/binode_associative.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/container/binode_associative_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/container/binode_associative.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_assoc_container.tpl_param"></a><a class="link" href="binode_assoc_container.html#tree_node.reference.binode_assoc_container.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">NodeGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node Type Generator</strong></span></a> that takes
+ in the value type and returns a <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a> model.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The mapped type; ignored if <code class="computeroutput"><span class="keyword">void</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IsMultipleAssociative</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Boolean Integral Constant that
+ determines whether this type will model the Multiple Sorted Associative Container
+ concept or the Unique Sorted Associative Container
+ concept.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">CompareSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Unary Metafunction Class that
+ takes in the value type and returns a Strict Weak Ordering model.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Balancer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ TODO.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_assoc_container.model_of"></a><a class="link" href="binode_assoc_container.html#tree_node.reference.binode_assoc_container.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> Simple Associative Container <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T2</span><span class="error">`</span> <span class="identifier">is</span> <span class="error">`</span><span class="keyword">void</span><span class="error">`</span><span class="special">,</span>
+ Pair Associative Container <span class="identifier">otherwise</span>
+<span class="special">*</span> Multiple Sorted Associative Container <span class="keyword">if</span> <span class="error">`</span><span class="identifier">IsMultipleAssociative</span><span class="error">`</span>
+ <span class="identifier">evaluates</span> <span class="identifier">to</span> boost::mpl::true_
<span class="special">,</span> Unique Sorted Associative Container
+ <span class="identifier">otherwise</span>
+<span class="special">*</span> <a class="link" href="../concepts/indexable_container.html" title="Indexable Container"><span class="bold"><strong>Indexable Container</strong></span></a> <span class="keyword">if</span> <span class="identifier">the</span> <span class="identifier">value</span> <span class="identifier">associated</span> <span class="identifier">with</span> <a class="link" href="count_key.html" title="count_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">count_key</span></code></a> <span class="identifier">exists</span>
+ <span class="keyword">for</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">NodeGenerator</span><span class="error">`</span>
+<span class="special">*</span> Default Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Default Constructible
+<span class="special">*</span> Copy Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible
+<span class="special">*</span> Assignable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible <span class="keyword">and</span> Movable
+<span class="special">*</span> Movable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Movable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_assoc_container.members"></a><a class="link" href="binode_assoc_container.html#tree_node.reference.binode_assoc_container.members" title="Public Members">Public
+ Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Key type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">T1</span> <span class="identifier">key_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Value type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T1</span> <span class="keyword">const</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">value_type</span><span class="special">&</span> <span class="identifier">reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference-to-const type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">const_reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">value_type</span><span class="special">*</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer-to-const type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">const_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Node type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap1</span><span class="special"><</span>
+ <span class="identifier">NodeGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">node</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_associative_container</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Also, given: [reference__binode_associative_container__transform_function]
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">transform_iterator</span><span class="special"><</span>
+ <span class="identifier">transform_function</span>
+ <span class="special">,</span> <span class="identifier">in_order_iterator</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">node</span> <span class="keyword">const</span>
+ <span class="special">,</span> <span class="identifier">node</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">></span>
+ <span class="special">></span>
+ <span class="identifier">iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">transform_iterator</span><span class="special"><</span>
+ <span class="identifier">transform_function</span>
+ <span class="special">,</span> <span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">node</span> <span class="keyword">const</span><span class="special">></span>
+ <span class="special">></span>
+ <span class="identifier">const_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">transform_iterator</span><span class="special"><</span>
+ <span class="identifier">transform_function</span>
+ <span class="special">,</span> <span class="identifier">in_order_iterator</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">node</span> <span class="keyword">const</span>
+ <span class="special">,</span> <span class="identifier">node</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">></span>
+ <span class="special">></span>
+ <span class="identifier">reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reversible Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">transform_iterator</span><span class="special"><</span>
+ <span class="identifier">transform_function</span>
+ <span class="special">,</span> <span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">node</span> <span class="keyword">const</span><span class="special">,::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">></span>
+ <span class="special">></span>
+ <span class="identifier">const_reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reversible Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Size type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span><span class="identifier">node</span><span class="special">,</span><span class="identifier">count_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at_key</span><span class="special"><</span><span class="identifier">node</span><span class="special">,</span><span class="identifier">count_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">node</span><span class="special">::</span><span class="identifier">size_type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">size_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key compare type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap1</span><span class="special"><</span>
+ <span class="identifier">CompareSelector</span>
+ <span class="special">,</span> <span class="identifier">key_type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">key_compare</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Value compare type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">class</span> <span class="identifier">value_compare</span>
+<span class="special">{</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">bool</span> <span class="identifier">result_type</span><span class="special">;</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">value_compare</span><span class="special">(</span><span class="identifier">key_compare</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">compare</span><span class="special">);</span>
+ <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">const_reference</span><span class="special">,</span> <span class="identifier">const_reference</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">result_type</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">,</span> <span class="identifier">node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">n</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Allocator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator</span> <span class="identifier">allocator_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_associative_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_associative_container</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">explicit</span> <span class="identifier">binode_associative_container</span><span class="special">(</span><span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_associative_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_associative_container</span><span class="special">(</span>
+ <span class="identifier">binode_associative_container</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_associative_container</span><span class="special">(</span>
+ <span class="identifier">binode_associative_container</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_associative_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_associative_container</span><span class="special">(</span>
+ <span class="identifier">binode_associative_container</span><span class="special">&&</span> <span class="identifier">source</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_associative_container</span><span class="special">(</span>
+ <span class="identifier">binode_associative_container</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_associative_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_associative_container</span><span class="special">&</span>
+ <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binode_associative_container</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_associative_container</span><span class="special">&</span>
+ <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binode_associative_container</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Destructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">~</span><span class="identifier">binode_associative_container</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_associative_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Root node read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">node</span><span class="special">::</span><span class="identifier">const_pointer</span> <span class="identifier">data</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_associative_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Beginning of read-only range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Beginning of range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">begin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ End of read-only range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ End of range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Beginning of read-only reverse range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reversible Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Beginning of reverse range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reversible Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ End of read-only reverse range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reversible Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ End of reverse range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rend</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reversible Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">find</span><span class="special">(</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">find</span><span class="special">(</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Beginning of key-value range read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">lower_bound</span><span class="special">(</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sorted Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Beginning of key-value range access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">lower_bound</span><span class="special">(</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sorted Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ End of key-value range read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">upper_bound</span><span class="special">(</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sorted Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ End of key-value range access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">upper_bound</span><span class="special">(</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sorted Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value range read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">const_iterator</span><span class="special">,</span><span class="identifier">const_iterator</span><span class="special">></span>
+ <span class="identifier">equal_range</span><span class="special">(</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value range access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">iterator</span><span class="special">,</span><span class="identifier">iterator</span><span class="special">></span> <span class="identifier">equal_range</span><span class="special">(</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value insertion
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="identifier">IsMultipleAssociative</span>
+ <span class="special">,</span> <span class="identifier">iterator</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">iterator</span><span class="special">,</span><span class="keyword">bool</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">insert</span><span class="special">(</span><span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">value</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value emplacement
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="identifier">IsMultipleAssociative</span>
+ <span class="special">,</span> <span class="identifier">iterator</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special"><</span><span class="identifier">iterator</span><span class="special">,</span><span class="keyword">bool</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">emplace</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key erasure
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">size_type</span> <span class="identifier">erase</span><span class="special">(</span><span class="identifier">key_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Empty container query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove all elements
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">clear</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Size query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Element read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">transform_function</span><span class="special">::</span><span class="identifier">const_result</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">size_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">index</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/indexable_container.html" title="Indexable Container"><span class="bold"><strong>Indexable Container</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Element access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">transform_function</span><span class="special">::</span><span class="identifier">mutable_result</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">size_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">index</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/indexable_container.html" title="Indexable Container"><span class="bold"><strong>Indexable Container</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_assoc_container.test"></a><a class="link" href="binode_assoc_container.html#tree_node.reference.binode_assoc_container.test" title="Test">Test</a>
+</h4></div></div></div>
+<p>
+ <test/containers.cpp>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binode_container.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binode_set.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_container.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_container.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,1284 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binode_container<NodeGenerator,T,Balancer></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="../reference.html" title="Reference">
+<link rel="next" href="binode_assoc_container.html" title="binode_associative_container< NodeGenerator , T1 , T2 , IsMultipleAssociative , CompareSelector , Balancer >">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binode_assoc_container.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binode_container"></a><a class="link" href="binode_container.html" title="binode_container<NodeGenerator,T,Balancer>"><code class="computeroutput"><span class="identifier">binode_container</span><span class="special"><</span><span class="identifier">NodeGenerator</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Balancer</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_container.description"></a><a class="link" href="binode_container.html#tree_node.reference.binode_container.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_container.definition"></a><a class="link" href="binode_container.html#tree_node.reference.binode_container.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/container/binode.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/container/binode_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/container/binode.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_container.tpl_param"></a><a class="link" href="binode_container.html#tree_node.reference.binode_container.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">NodeGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node Type Generator</strong></span></a> that takes
+ in the value type and returns a <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a> model.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The value type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Balancer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ TODO.
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="red_black_balancer.html" title="red_black_balancer"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">red_black_balancer</span></code></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_container.model_of"></a><a class="link" href="binode_container.html#tree_node.reference.binode_container.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> Front Insertion Sequence
+<span class="special">*</span> Back Insertion Sequence
+<span class="special">*</span> <a class="link" href="../concepts/indexable_container.html" title="Indexable Container"><span class="bold"><strong>Indexable Container</strong></span></a> <span class="keyword">if</span> <span class="identifier">the</span> <span class="identifier">value</span> <span class="identifier">associated</span> <span class="identifier">with</span> <a class="link" href="count_key.html" title="count_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">count_key</span></code></a> <span class="identifier">exists</span>
+ <span class="keyword">for</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">NodeGenerator</span><span class="error">`</span>
+<span class="special">*</span> Default Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Default Constructible
+<span class="special">*</span> Copy Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible
+<span class="special">*</span> Assignable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible <span class="keyword">and</span> Movable
+<span class="special">*</span> Movable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Movable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_container.members"></a><a class="link" href="binode_container.html#tree_node.reference.binode_container.members" title="Public Members">Public
+ Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Value type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">value_type</span><span class="special">&</span> <span class="identifier">reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference-to-const type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">const_reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">value_type</span><span class="special">*</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer-to-const type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">const_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Node type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap1</span><span class="special"><</span>
+ <span class="identifier">NodeGenerator</span>
+ <span class="special">,</span> <span class="identifier">value_type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">node</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_container</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Also, given:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">transform_function</span>
+<span class="special">{</span>
+ <span class="identifier">const_reference</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">n</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">node</span><span class="special">&</span> <span class="identifier">n</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">transform_iterator</span><span class="special"><</span>
+ <span class="identifier">transform_function</span>
+ <span class="special">,</span> <span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">node</span><span class="special">></span>
+ <span class="special">></span>
+ <span class="identifier">iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">transform_iterator</span><span class="special"><</span>
+ <span class="identifier">transform_function</span>
+ <span class="special">,</span> <span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">node</span> <span class="keyword">const</span><span class="special">></span>
+ <span class="special">></span>
+ <span class="identifier">const_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">transform_iterator</span><span class="special"><</span>
+ <span class="identifier">transform_function</span>
+ <span class="special">,</span> <span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">node</span><span class="special">,::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">></span>
+ <span class="special">></span>
+ <span class="identifier">reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reversible Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">transform_iterator</span><span class="special"><</span>
+ <span class="identifier">transform_function</span>
+ <span class="special">,</span> <span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">node</span> <span class="keyword">const</span><span class="special">,::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">></span>
+ <span class="special">></span>
+ <span class="identifier">const_reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reversible Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Size type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span><span class="identifier">node</span><span class="special">,</span><span class="identifier">count_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at_key</span><span class="special"><</span><span class="identifier">node</span><span class="special">,</span><span class="identifier">count_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">node</span><span class="special">::</span><span class="identifier">size_type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">size_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Allocator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">node</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator</span> <span class="identifier">allocator_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_container</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">explicit</span> <span class="identifier">binode_container</span><span class="special">(</span><span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_container</span><span class="special">(</span><span class="identifier">binode_container</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_container</span><span class="special">(</span>
+ <span class="identifier">binode_container</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_container</span><span class="special">(</span><span class="identifier">binode_container</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_container</span><span class="special">(</span>
+ <span class="identifier">binode_container</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_container</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binode_container</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_container</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binode_container</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Destructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">~</span><span class="identifier">binode_container</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Root node read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">node</span><span class="special">::</span><span class="identifier">const_pointer</span> <span class="identifier">data</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Root node access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">node</span><span class="special">::</span><span class="identifier">pointer</span> <span class="identifier">data</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_container</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Beginning of read-only range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Beginning of range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">begin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ End of read-only range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ End of range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Beginning of read-only reverse range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reversible Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Beginning of reverse range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reversible Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ End of read-only reverse range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reversible Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ End of reverse range
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rend</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reversible Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Back read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reference</span> <span class="identifier">back</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Back access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reference</span> <span class="identifier">back</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Back insertion
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">push_back</span><span class="special">(</span><span class="identifier">const_reference</span> <span class="identifier">t</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Back Insertion Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Back emplacement
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">emplace_back</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Back Insertion Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Back removal
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">pop_back</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Back Insertion Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Front read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reference</span> <span class="identifier">front</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Front access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reference</span> <span class="identifier">front</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Front insertion
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">push_front</span><span class="special">(</span><span class="identifier">const_reference</span> <span class="identifier">t</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Front Insertion Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Front emplacement
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">emplace_front</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Front Insertion Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Front removal
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">pop_front</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Front Insertion Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Insertion
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">const_iterator</span> <span class="identifier">itr</span><span class="special">,</span> <span class="identifier">const_reference</span> <span class="identifier">t</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="identifier">iterator</span> <span class="identifier">emplace</span><span class="special">(</span><span class="identifier">const_iterator</span> <span class="identifier">itr</span><span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Erasure
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">erase</span><span class="special">(</span><span class="identifier">const_iterator</span> <span class="identifier">p</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Range erasure
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">erase</span><span class="special">(</span><span class="identifier">const_iterator</span> <span class="identifier">itr</span><span class="special">,</span> <span class="identifier">const_iterator</span> <span class="identifier">itr_end</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Empty container query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove all elements
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">clear</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Sequence
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Size query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Element read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reference</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">size_type</span> <span class="identifier">index</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/indexable_container.html" title="Indexable Container"><span class="bold"><strong>Indexable Container</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Element access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">size_type</span> <span class="identifier">index</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/indexable_container.html" title="Indexable Container"><span class="bold"><strong>Indexable Container</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_container.test"></a><a class="link" href="binode_container.html#tree_node.reference.binode_container.test" title="Test">Test</a>
+</h4></div></div></div>
+<p>
+ <test/containers.cpp>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binode_assoc_container.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_map.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_map.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,445 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binode_map<NodeGenerator,Key,Mapped,CompareSelector,Balancer></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binode_multiset.html" title="binode_multiset<NodeGenerator,T,CompareSelector,Balancer>">
+<link rel="next" href="binode_multimap.html" title="binode_multimap<NodeGenerator,Key,Mapped,CompareSelector,Balancer>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binode_multiset.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binode_multimap.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binode_map"></a><a class="link" href="binode_map.html" title="binode_map<NodeGenerator,Key,Mapped,CompareSelector,Balancer>"><code class="computeroutput"><span class="identifier">binode_map</span><span class="special"><</span><span class="identifier">NodeGenerator</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Mapped</span><span class="special">,</span><span class="identifier">CompareSelector</span><span class="special">,</span><span class="identifier">Balancer</span><span class="special">></span></code> </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_map.description"></a><a class="link" href="binode_map.html#tree_node.reference.binode_map.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_map.definition"></a><a class="link" href="binode_map.html#tree_node.reference.binode_map.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/container/binode_associative.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/container/binode_associative_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/container/binode_associative.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_map.tpl_param"></a><a class="link" href="binode_map.html#tree_node.reference.binode_map.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">NodeGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node Type Generator</strong></span></a> that takes
+ in the value type and returns a <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a> model.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Key</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Mapped</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The mapped type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">CompareSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Unary Metafunction Class that
+ takes in the value type and returns a Strict Weak Ordering model.
+ </p>
+ </td>
+<td>
+ <p>
+ default_ordering_selector
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Balancer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ TODO.
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="red_black_balancer.html" title="red_black_balancer"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">red_black_balancer</span></code></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_map.model_of"></a><a class="link" href="binode_map.html#tree_node.reference.binode_map.model_of" title="Model of">Model of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> Pair Associative Container
+<span class="special">*</span> Unique Sorted Associative Container
+<span class="special">*</span> <a class="link" href="../concepts/indexable_container.html" title="Indexable Container"><span class="bold"><strong>Indexable Container</strong></span></a> <span class="keyword">if</span> <span class="identifier">the</span> <span class="identifier">value</span> <span class="identifier">associated</span> <span class="identifier">with</span> <a class="link" href="count_key.html" title="count_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">count_key</span></code></a> <span class="identifier">exists</span>
+ <span class="keyword">for</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">NodeGenerator</span><span class="error">`</span>
+<span class="special">*</span> Default Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Default Constructible
+<span class="special">*</span> Copy Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible
+<span class="special">*</span> Assignable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible <span class="keyword">and</span> Movable
+<span class="special">*</span> Movable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Movable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_map.public_bases"></a><a class="link" href="binode_map.html#tree_node.reference.binode_map.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">binode_associative_container</span><span class="special"><</span>
+ <span class="identifier">NodeGenerator</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Mapped</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">,</span> <span class="identifier">CompareSelector</span>
+ <span class="special">,</span> <span class="identifier">Balancer</span>
+<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_map.members"></a><a class="link" href="binode_map.html#tree_node.reference.binode_map.members" title="Public Members">Public Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from <a class="link" href="binode_assoc_container.html" title="binode_associative_container< NodeGenerator , T1 , T2 , IsMultipleAssociative , CompareSelector , Balancer >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_associative_container</span></code></a>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Mapped type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">Mapped</span> <span class="identifier">mapped_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Pair Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_map</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">explicit</span> <span class="identifier">binode_map</span><span class="special">(</span><span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_map</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_map</span><span class="special">(</span><span class="identifier">binode_map</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_map</span><span class="special">(</span>
+ <span class="identifier">binode_map</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_map</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_map</span><span class="special">(</span><span class="identifier">binode_map</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_map</span><span class="special">(</span>
+ <span class="identifier">binode_map</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_map</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_map</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binode_map</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_map</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binode_map</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_map.test"></a><a class="link" href="binode_map.html#tree_node.reference.binode_map.test" title="Test">Test</a>
+</h4></div></div></div>
+<p>
+ <test/containers.cpp>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binode_multiset.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binode_multimap.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_multimap.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_multimap.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,448 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binode_multimap<NodeGenerator,Key,Mapped,CompareSelector,Balancer></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binode_map.html" title="binode_map<NodeGenerator,Key,Mapped,CompareSelector,Balancer>">
+<link rel="next" href="red_black_balancer.html" title="red_black_balancer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binode_map.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="red_black_balancer.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binode_multimap"></a><a class="link" href="binode_multimap.html" title="binode_multimap<NodeGenerator,Key,Mapped,CompareSelector,Balancer>"><code class="computeroutput"><span class="identifier">binode_multimap</span><span class="special"><</span><span class="identifier">NodeGenerator</span><span class="special">,</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Mapped</span><span class="special">,</span><span class="identifier">CompareSelector</span><span class="special">,</span><span class="identifier">Balancer</span><span class="special">></span></code> </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multimap.description"></a><a class="link" href="binode_multimap.html#tree_node.reference.binode_multimap.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multimap.definition"></a><a class="link" href="binode_multimap.html#tree_node.reference.binode_multimap.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/container/binode_associative.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/container/binode_associative_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/container/binode_associative.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multimap.tpl_param"></a><a class="link" href="binode_multimap.html#tree_node.reference.binode_multimap.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">NodeGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node Type Generator</strong></span></a> that takes
+ in the value type and returns a <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a> model.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Key</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Mapped</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The mapped type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">CompareSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Unary Metafunction Class that
+ takes in the value type and returns a Strict Weak Ordering model.
+ </p>
+ </td>
+<td>
+ <p>
+ default_ordering_selector
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Balancer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ TODO.
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="red_black_balancer.html" title="red_black_balancer"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">red_black_balancer</span></code></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multimap.model_of"></a><a class="link" href="binode_multimap.html#tree_node.reference.binode_multimap.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> Pair Associative Container
+<span class="special">*</span> Multiple Sorted Associative Container
+<span class="special">*</span> <a class="link" href="../concepts/indexable_container.html" title="Indexable Container"><span class="bold"><strong>Indexable Container</strong></span></a> <span class="keyword">if</span> <span class="identifier">the</span> <span class="identifier">value</span> <span class="identifier">associated</span> <span class="identifier">with</span> <a class="link" href="count_key.html" title="count_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">count_key</span></code></a> <span class="identifier">exists</span>
+ <span class="keyword">for</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">NodeGenerator</span><span class="error">`</span>
+<span class="special">*</span> Default Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Default Constructible
+<span class="special">*</span> Copy Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible
+<span class="special">*</span> Assignable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible <span class="keyword">and</span> Movable
+<span class="special">*</span> Movable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Movable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multimap.public_bases"></a><a class="link" href="binode_multimap.html#tree_node.reference.binode_multimap.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">binode_associative_container</span><span class="special"><</span>
+ <span class="identifier">NodeGenerator</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Mapped</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">,</span> <span class="identifier">CompareSelector</span>
+ <span class="special">,</span> <span class="identifier">Balancer</span>
+<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multimap.members"></a><a class="link" href="binode_multimap.html#tree_node.reference.binode_multimap.members" title="Public Members">Public
+ Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from <a class="link" href="binode_assoc_container.html" title="binode_associative_container< NodeGenerator , T1 , T2 , IsMultipleAssociative , CompareSelector , Balancer >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_associative_container</span></code></a>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Mapped type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">Mapped</span> <span class="identifier">mapped_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Pair Associative Container
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multimap</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">explicit</span> <span class="identifier">binode_multimap</span><span class="special">(</span><span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_map</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multimap</span><span class="special">(</span><span class="identifier">binode_multimap</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multimap</span><span class="special">(</span>
+ <span class="identifier">binode_multimap</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_multimap</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multimap</span><span class="special">(</span><span class="identifier">binode_multimap</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multimap</span><span class="special">(</span>
+ <span class="identifier">binode_multimap</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_multimap</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multimap</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binode_multimap</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multimap</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binode_multimap</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multimap.test"></a><a class="link" href="binode_multimap.html#tree_node.reference.binode_multimap.test" title="Test">Test</a>
+</h4></div></div></div>
+<p>
+ <test/containers.cpp>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binode_map.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="red_black_balancer.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_multiset.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_multiset.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,415 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binode_multiset<NodeGenerator,T,CompareSelector,Balancer></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binode_set.html" title="binode_set<NodeGenerator,T,CompareSelector,Balancer>">
+<link rel="next" href="binode_map.html" title="binode_map<NodeGenerator,Key,Mapped,CompareSelector,Balancer>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binode_set.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binode_map.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binode_multiset"></a><a class="link" href="binode_multiset.html" title="binode_multiset<NodeGenerator,T,CompareSelector,Balancer>"><code class="computeroutput"><span class="identifier">binode_multiset</span><span class="special"><</span><span class="identifier">NodeGenerator</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">CompareSelector</span><span class="special">,</span><span class="identifier">Balancer</span><span class="special">></span></code>
+ </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multiset.description"></a><a class="link" href="binode_multiset.html#tree_node.reference.binode_multiset.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multiset.definition"></a><a class="link" href="binode_multiset.html#tree_node.reference.binode_multiset.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/container/binode_associative.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/container/binode_associative_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/container/binode_associative.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multiset.tpl_param"></a><a class="link" href="binode_multiset.html#tree_node.reference.binode_multiset.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">NodeGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node Type Generator</strong></span></a> that takes
+ in the value type and returns a <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a> model.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type, also the value type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">CompareSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Unary Metafunction Class that
+ takes in the value type and returns a Strict Weak Ordering model.
+ </p>
+ </td>
+<td>
+ <p>
+ default_ordering_selector
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Balancer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ TODO.
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="red_black_balancer.html" title="red_black_balancer"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">red_black_balancer</span></code></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multiset.model_of"></a><a class="link" href="binode_multiset.html#tree_node.reference.binode_multiset.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> Simple Associative Container
+<span class="special">*</span> Multiple Sorted Associative Container
+<span class="special">*</span> <a class="link" href="../concepts/indexable_container.html" title="Indexable Container"><span class="bold"><strong>Indexable Container</strong></span></a> <span class="keyword">if</span> <span class="identifier">the</span> <span class="identifier">value</span> <span class="identifier">associated</span> <span class="identifier">with</span> <a class="link" href="count_key.html" title="count_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">count_key</span></code></a> <span class="identifier">exists</span>
+ <span class="keyword">for</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">NodeGenerator</span><span class="error">`</span>
+<span class="special">*</span> Default Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Default Constructible
+<span class="special">*</span> Copy Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible
+<span class="special">*</span> Assignable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible <span class="keyword">and</span> Movable
+<span class="special">*</span> Movable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Movable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multiset.public_bases"></a><a class="link" href="binode_multiset.html#tree_node.reference.binode_multiset.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">binode_associative_container</span><span class="special"><</span>
+ <span class="identifier">NodeGenerator</span>
+ <span class="special">,</span> <span class="identifier">T</span>
+ <span class="special">,</span> <span class="keyword">void</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">,</span> <span class="identifier">CompareSelector</span>
+ <span class="special">,</span> <span class="identifier">Balancer</span>
+<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multiset.members"></a><a class="link" href="binode_multiset.html#tree_node.reference.binode_multiset.members" title="Public Members">Public
+ Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from <a class="link" href="binode_assoc_container.html" title="binode_associative_container< NodeGenerator , T1 , T2 , IsMultipleAssociative , CompareSelector , Balancer >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_associative_container</span></code></a>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multiset</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">explicit</span> <span class="identifier">binode_multiset</span><span class="special">(</span><span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_multiset</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multiset</span><span class="special">(</span><span class="identifier">binode_multiset</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multiset</span><span class="special">(</span>
+ <span class="identifier">binode_multiset</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_multiset</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multiset</span><span class="special">(</span><span class="identifier">binode_multiset</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multiset</span><span class="special">(</span>
+ <span class="identifier">binode_multiset</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_multiset</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multiset</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binode_multiset</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_multiset</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binode_multiset</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_multiset.test"></a><a class="link" href="binode_multiset.html#tree_node.reference.binode_multiset.test" title="Test">Test</a>
+</h4></div></div></div>
+<p>
+ <test/containers.cpp>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binode_set.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binode_map.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_set.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/binode_set.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,411 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>binode_set<NodeGenerator,T,CompareSelector,Balancer></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binode_assoc_container.html" title="binode_associative_container< NodeGenerator , T1 , T2 , IsMultipleAssociative , CompareSelector , Balancer >">
+<link rel="next" href="binode_multiset.html" title="binode_multiset<NodeGenerator,T,CompareSelector,Balancer>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binode_assoc_container.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binode_multiset.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.binode_set"></a><a class="link" href="binode_set.html" title="binode_set<NodeGenerator,T,CompareSelector,Balancer>"><code class="computeroutput"><span class="identifier">binode_set</span><span class="special"><</span><span class="identifier">NodeGenerator</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">CompareSelector</span><span class="special">,</span><span class="identifier">Balancer</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_set.description"></a><a class="link" href="binode_set.html#tree_node.reference.binode_set.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_set.definition"></a><a class="link" href="binode_set.html#tree_node.reference.binode_set.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/container/binode_associative.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/container/binode_associative_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/container/binode_associative.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_set.tpl_param"></a><a class="link" href="binode_set.html#tree_node.reference.binode_set.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">NodeGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node Type Generator</strong></span></a> that takes
+ in the value type and returns a <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a> model.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type, also the value type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">CompareSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Unary Metafunction Class that
+ takes in the value type and returns a Strict Weak Ordering model.
+ </p>
+ </td>
+<td>
+ <p>
+ default_ordering_selector
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Balancer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ TODO.
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="red_black_balancer.html" title="red_black_balancer"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">red_black_balancer</span></code></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_set.model_of"></a><a class="link" href="binode_set.html#tree_node.reference.binode_set.model_of" title="Model of">Model of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> Simple Associative Container
+<span class="special">*</span> Unique Sorted Associative Container
+<span class="special">*</span> <a class="link" href="../concepts/indexable_container.html" title="Indexable Container"><span class="bold"><strong>Indexable Container</strong></span></a> <span class="keyword">if</span> <span class="identifier">the</span> <span class="identifier">value</span> <span class="identifier">associated</span> <span class="identifier">with</span> <a class="link" href="count_key.html" title="count_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">count_key</span></code></a> <span class="identifier">exists</span>
+ <span class="keyword">for</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">NodeGenerator</span><span class="error">`</span>
+<span class="special">*</span> Default Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Default Constructible
+<span class="special">*</span> Copy Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible
+<span class="special">*</span> Assignable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible <span class="keyword">and</span> Movable
+<span class="special">*</span> Movable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Movable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_set.public_bases"></a><a class="link" href="binode_set.html#tree_node.reference.binode_set.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">binode_associative_container</span><span class="special"><</span>
+ <span class="identifier">NodeGenerator</span>
+ <span class="special">,</span> <span class="identifier">T</span>
+ <span class="special">,</span> <span class="keyword">void</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">,</span> <span class="identifier">CompareSelector</span>
+ <span class="special">,</span> <span class="identifier">Balancer</span>
+<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_set.members"></a><a class="link" href="binode_set.html#tree_node.reference.binode_set.members" title="Public Members">Public Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from <a class="link" href="binode_assoc_container.html" title="binode_associative_container< NodeGenerator , T1 , T2 , IsMultipleAssociative , CompareSelector , Balancer >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">binode_associative_container</span></code></a>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_set</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">explicit</span> <span class="identifier">binode_set</span><span class="special">(</span><span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_set</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_set</span><span class="special">(</span><span class="identifier">binode_set</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_set</span><span class="special">(</span>
+ <span class="identifier">binode_set</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_set</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_set</span><span class="special">(</span><span class="identifier">binode_set</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_set</span><span class="special">(</span>
+ <span class="identifier">binode_set</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">binode_set</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_set</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binode_set</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">binode_set</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">binode_set</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.binode_set.test"></a><a class="link" href="binode_set.html#tree_node.reference.binode_set.test" title="Test">Test</a>
+</h4></div></div></div>
+<p>
+ <test/containers.cpp>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binode_assoc_container.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="binode_multiset.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/breadth_first_desc_iter.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/breadth_first_desc_iter.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,604 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>breadth_first_descendant_iterator<Node></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="breadth_first_iterator.html" title="breadth_first_iterator<Node>">
+<link rel="next" href="pre_order_iterator.html" title="pre_order_iterator<Node,IsReverse>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="breadth_first_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pre_order_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.breadth_first_desc_iter"></a><a class="link" href="breadth_first_desc_iter.html" title="breadth_first_descendant_iterator<Node>"><code class="computeroutput"><span class="identifier">breadth_first_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_desc_iter.synopsis"></a><a class="link" href="breadth_first_desc_iter.html#tree_node.reference.breadth_first_desc_iter.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">breadth_first_descendant_iterator</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_adaptor</span><span class="special"><</span>
+ <span class="identifier">breadth_first_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_const</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_traversal_tag</span>
+ <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">enabler</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">breadth_first_descendant_iterator</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">breadth_first_descendant_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
+ <span class="identifier">breadth_first_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">breadth_first_descendant_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">other</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">enabler</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">enabler</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="keyword">operator</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">traversal_state</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_desc_iter.description"></a><a class="link" href="breadth_first_desc_iter.html#tree_node.reference.breadth_first_desc_iter.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This iterator traverses the descendants of the specified root node in breadth-first
+ fashion, e.g. given the following tree representation:
+ </p>
+<p>
+</p>
+<pre class="programlisting"> <span class="identifier">A</span>
+ <span class="special">|</span>
+ <span class="identifier">C</span><span class="special">---+---</span><span class="identifier">B</span>
+ <span class="special">|</span> <span class="special">|</span>
+<span class="special">+-+-+</span> <span class="special">+-+-+</span>
+<span class="special">|</span> <span class="special">|</span> <span class="special">|</span> <span class="special">|</span>
+<span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+<p>
+ This iterator will traverse the tree nodes in the following order:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">C</span> <span class="identifier">B</span> <span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_desc_iter.definition"></a><a class="link" href="breadth_first_desc_iter.html#tree_node.reference.breadth_first_desc_iter.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/iterator/breadth_first_descendant.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/iterator/breadth_first_descendant.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_desc_iter.tpl_param"></a><a class="link" href="breadth_first_desc_iter.html#tree_node.reference.breadth_first_desc_iter.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept, but it can be
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified.
+ </p>
+ </td>
+<td>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_desc_iter.model_of"></a><a class="link" href="breadth_first_desc_iter.html#tree_node.reference.breadth_first_desc_iter.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+<span class="special">*</span> Default Constructible
+<span class="special">*</span> Copy Constructible
+<span class="special">*</span> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_desc_iter.public_bases"></a><a class="link" href="breadth_first_desc_iter.html#tree_node.reference.breadth_first_desc_iter.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ None.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_desc_iter.members"></a><a class="link" href="breadth_first_desc_iter.html#tree_node.reference.breadth_first_desc_iter.members" title="Members">Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Value type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">difference_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">iterator_category</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">breadth_first_descendant_iterator</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from node
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">explicit</span> <span class="identifier">breadth_first_descendant_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conversion constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
+<span class="identifier">breadth_first_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">breadth_first_descendant_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">breadth_first_descendant_iterator</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">breadth_first_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">breadth_first_descendant_iterator</span> <span class="keyword">const</span><span class="special">&</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">breadth_first_descendant_iterator</span><span class="special">&</span>
+ <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">breadth_first_descendant_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">breadth_first_descendant_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">breadth_first_descendant_iterator</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">tree_node::traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_desc_iter.non_members"></a><a class="link" href="breadth_first_desc_iter.html#tree_node.reference.breadth_first_desc_iter.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Iterator creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">breadth_first_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">make_breadth_first_descendant_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">breadth_first_descendant_iterator</span></code>
+ that will iterate through the descendants of the specified node.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="breadth_first_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pre_order_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/breadth_first_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/breadth_first_iterator.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,594 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>breadth_first_iterator<Node></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="tree_node_base.html" title="tree_node_base<Derived>">
+<link rel="next" href="breadth_first_desc_iter.html" title="breadth_first_descendant_iterator<Node>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tree_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="breadth_first_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.breadth_first_iterator"></a><a class="link" href="breadth_first_iterator.html" title="breadth_first_iterator<Node>"><code class="computeroutput"><span class="identifier">breadth_first_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_iterator.synopsis"></a><a class="link" href="breadth_first_iterator.html#tree_node.reference.breadth_first_iterator.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">breadth_first_iterator</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_adaptor</span><span class="special"><</span>
+ <span class="identifier">breadth_first_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Node</span><span class="special">*</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_traversal_tag</span>
+ <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">enabler</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">breadth_first_iterator</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">breadth_first_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
+ <span class="identifier">breadth_first_iterator</span><span class="special">(</span>
+ <span class="identifier">breadth_first_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">other</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">enabler</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">enabler</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="keyword">operator</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">traversal_state</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_iterator.description"></a><a class="link" href="breadth_first_iterator.html#tree_node.reference.breadth_first_iterator.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This iterator traverses the specified root node and all its descendants
+ in breadth-first fashion, e.g. given the following tree representation:
+ </p>
+<p>
+</p>
+<pre class="programlisting"> <span class="identifier">A</span>
+ <span class="special">|</span>
+ <span class="identifier">C</span><span class="special">---+---</span><span class="identifier">B</span>
+ <span class="special">|</span> <span class="special">|</span>
+<span class="special">+-+-+</span> <span class="special">+-+-+</span>
+<span class="special">|</span> <span class="special">|</span> <span class="special">|</span> <span class="special">|</span>
+<span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+<p>
+ This iterator will traverse the tree nodes in the following order:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">A</span> <span class="identifier">C</span> <span class="identifier">B</span> <span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_iterator.definition"></a><a class="link" href="breadth_first_iterator.html#tree_node.reference.breadth_first_iterator.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/iterator/breadth_first.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/iterator/breadth_first.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_iterator.tpl_param"></a><a class="link" href="breadth_first_iterator.html#tree_node.reference.breadth_first_iterator.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept, but it can be
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified.
+ </p>
+ </td>
+<td>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_iterator.model_of"></a><a class="link" href="breadth_first_iterator.html#tree_node.reference.breadth_first_iterator.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+<span class="special">*</span> Default Constructible
+<span class="special">*</span> Copy Constructible
+<span class="special">*</span> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_iterator.public_bases"></a><a class="link" href="breadth_first_iterator.html#tree_node.reference.breadth_first_iterator.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ None.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_iterator.members"></a><a class="link" href="breadth_first_iterator.html#tree_node.reference.breadth_first_iterator.members" title="Members">Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Value type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">difference_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">iterator_category</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">breadth_first_iterator</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from node
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">explicit</span> <span class="identifier">breadth_first_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conversion constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
+<span class="identifier">breadth_first_iterator</span><span class="special">(</span><span class="identifier">breadth_first_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">breadth_first_iterator</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">breadth_first_iterator</span><span class="special">(</span><span class="identifier">breadth_first_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">breadth_first_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">breadth_first_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">breadth_first_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">breadth_first_iterator</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">tree_node::traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.breadth_first_iterator.non_members"></a><a class="link" href="breadth_first_iterator.html#tree_node.reference.breadth_first_iterator.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Iterator creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">breadth_first_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span> <span class="identifier">make_breadth_first_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">breadth_first_iterator</span></code>
+ that will iterate through the specified node and its descendants.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="tree_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="breadth_first_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/can_use_fusion.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/can_use_fusion.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,57 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_TREE_NODE_CAN_USE_FUSION</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="emplace_ctor_w_alloc_i_def.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF">
+<link rel="next" href="can_use_fusion_with_typeof.html" title="BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_ctor_w_alloc_i_def.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="can_use_fusion_with_typeof.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.can_use_fusion"></a><a class="link" href="can_use_fusion.html" title="BOOST_TREE_NODE_CAN_USE_FUSION"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_CAN_USE_FUSION</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.can_use_fusion.description"></a><a class="link" href="can_use_fusion.html#tree_node.reference.can_use_fusion.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Defined only if the compiler supports enable_if
and partial specialization
+ of templates.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.can_use_fusion.definition"></a><a class="link" href="can_use_fusion.html#tree_node.reference.can_use_fusion.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/preprocessor.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_ctor_w_alloc_i_def.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="can_use_fusion_with_typeof.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/can_use_fusion_with_typeof.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/can_use_fusion_with_typeof.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,58 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="can_use_fusion.html" title="BOOST_TREE_NODE_CAN_USE_FUSION">
+<link rel="next" href="../changelog.html" title="Changelog">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="can_use_fusion.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../changelog.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.can_use_fusion_with_typeof"></a><a class="link" href="can_use_fusion_with_typeof.html" title="BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF</span></code>
+ </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.can_use_fusion_with_typeof.description"></a><a class="link" href="can_use_fusion_with_typeof.html#tree_node.reference.can_use_fusion_with_typeof.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Defined only if <a class="link" href="can_use_fusion.html" title="BOOST_TREE_NODE_CAN_USE_FUSION"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_CAN_USE_FUSION</span></code></a>
+ is defined and BOOST_TYPEOF_EMULATION
is not.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.can_use_fusion_with_typeof.definition"></a><a class="link" href="can_use_fusion_with_typeof.html#tree_node.reference.can_use_fusion_with_typeof.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/preprocessor.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="can_use_fusion.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="../changelog.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/container_derived_body.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/container_derived_body.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,116 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_TREE_NODE_CONTAINER_DERIVED_BODY</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="copyable_and_movable.html" title="BOOST_TREE_NODE_COPYABLE_AND_MOVABLE">
+<link rel="next" href="assoc_cont_derived_body.html" title="BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="copyable_and_movable.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assoc_cont_derived_body.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.container_derived_body"></a><a class="link" href="container_derived_body.html" title="BOOST_TREE_NODE_CONTAINER_DERIVED_BODY"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_CONTAINER_DERIVED_BODY</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.container_derived_body.synopsis"></a><a class="link" href="container_derived_body.html#tree_node.reference.container_derived_body.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_CONTAINER_DERIVED_BODY</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_CONTAINER_DERIVED_IMPL</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span> <span class="special">\</span>
+ <span class="keyword">inline</span> <span class="identifier">Derived</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">Base</span><span class="special">&&>(</span><span class="identifier">source</span><span class="special">))</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">inline</span> <span class="identifier">Derived</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">,</span> <span class="identifier">allocator_type</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">a</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">Base</span><span class="special">&&>(</span><span class="identifier">source</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">inline</span> <span class="identifier">Derived</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="keyword">this</span> <span class="special">!=</span> <span class="special">&</span><span class="identifier">copy</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="keyword">operator</span><span class="special">=(</span><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">Base</span> <span class="keyword">const</span><span class="special">&>(</span><span class="identifier">copy</span><span class="special">));</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">inline</span> <span class="identifier">Derived</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="keyword">this</span> <span class="special">!=</span> <span class="special">&</span><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">&>(</span><span class="identifier">source</span><span class="special">))</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="keyword">operator</span><span class="special">=(</span><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">&&>(</span><span class="identifier">source</span><span class="special">));</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.container_derived_body.description"></a><a class="link" href="container_derived_body.html#tree_node.reference.container_derived_body.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Meant to be used in the <code class="computeroutput"><span class="keyword">public</span></code>
+ scope of a Container model that inherits from another.
+ </p>
+<p>
+ This macro defines the type definitions; the default, copy, and move constructors;
+ and the copy and move assignment operators necessary for the <code class="computeroutput"><span class="identifier">Derived</span></code> class to model the Default Constructible, Copy Constructible, Assignable, Movable, and Container concepts.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.container_derived_body.usage"></a><a class="link" href="container_derived_body.html#tree_node.reference.container_derived_body.usage" title="Usage">Usage</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">BOOST_TREE_NODE_CONTAINER_DERIVED_BODY</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.container_derived_body.arguments"></a><a class="link" href="container_derived_body.html#tree_node.reference.container_derived_body.arguments" title="Arguments">Arguments</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <span class="special">/</span><span class="identifier">Derived</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">enclosing</span> <span class="identifier">type</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">Base</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">type</span> <span class="identifier">from</span> <span class="identifier">which</span> <span class="error">`</span><span class="identifier">Derived</span><span class="error">`</span> <span class="identifier">inherits</span><span class="special">.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.container_derived_body.definition"></a><a class="link" href="container_derived_body.html#tree_node.reference.container_derived_body.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/preprocessor.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="copyable_and_movable.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="assoc_cont_derived_body.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/copyable_and_movable.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/copyable_and_movable.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,151 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_TREE_NODE_COPYABLE_AND_MOVABLE</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="value_at_key.html" title="result_of::value_at_key<Node,Key>">
+<link rel="next" href="container_derived_body.html" title="BOOST_TREE_NODE_CONTAINER_DERIVED_BODY">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="value_at_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="container_derived_body.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.copyable_and_movable"></a><a class="link" href="copyable_and_movable.html" title="BOOST_TREE_NODE_COPYABLE_AND_MOVABLE"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_COPYABLE_AND_MOVABLE</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.copyable_and_movable.synopsis"></a><a class="link" href="copyable_and_movable.html#tree_node.reference.copyable_and_movable.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_COPY_CONSTRUCTIBLE</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span> <span class="special">\</span>
+ <span class="keyword">inline</span> <span class="identifier">Derived</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">)</span> <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span><span class="identifier">copy</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">on_post_copy_or_move</span><span class="special">();</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">inline</span> <span class="identifier">Derived</span><span class="special">(</span> <span class="special">\</span>
+ <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">a</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span><span class="identifier">copy</span><span class="special">,</span> <span class="identifier">a</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">on_post_copy_or_move</span><span class="special">();</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">inline</span> <span class="identifier">Derived</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span><span class="keyword">const_cast</span><span class="special"><</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&>(</span><span class="identifier">copy</span><span class="special">))</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">on_post_copy_or_move</span><span class="special">();</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">inline</span> <span class="identifier">Derived</span><span class="special">(</span> <span class="special">\</span>
+ <span class="identifier">Derived</span><span class="special">&</span> <span class="identifier">copy</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">a</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span><span class="keyword">const_cast</span><span class="special"><</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&>(</span><span class="identifier">copy</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">on_post_copy_or_move</span><span class="special">();</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_COPYABLE_AND_MOVABLE</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_COPY_CONSTRUCTIBLE</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span> <span class="special">\</span>
+ <span class="keyword">inline</span> <span class="identifier">Derived</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">&&>(</span><span class="identifier">source</span><span class="special">))</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">on_post_copy_or_move</span><span class="special">();</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">inline</span> <span class="identifier">Derived</span><span class="special">(</span> <span class="special">\</span>
+ <span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">a</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">&&>(</span><span class="identifier">source</span><span class="special">),</span> <span class="identifier">a</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">on_post_copy_or_move</span><span class="special">();</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">inline</span> <span class="identifier">Derived</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="keyword">this</span> <span class="special">!=</span> <span class="special">&</span><span class="identifier">copy</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">copy_assign</span><span class="special">(</span><span class="identifier">copy</span><span class="special">);</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">on_post_copy_or_move</span><span class="special">();</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">inline</span> <span class="identifier">Derived</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="keyword">this</span> <span class="special">!=</span> <span class="special">&</span><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">&>(</span><span class="identifier">source</span><span class="special">))</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">move_assign</span><span class="special">(</span><span class="keyword">static_cast</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">&&>(</span><span class="identifier">source</span><span class="special">));</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">on_post_copy_or_move</span><span class="special">();</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="keyword">this</span><span class="special">;</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.copyable_and_movable.description"></a><a class="link" href="copyable_and_movable.html#tree_node.reference.copyable_and_movable.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Meant to be used in the <code class="computeroutput"><span class="keyword">public</span></code>
+ scope of a <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a> model that inherits from a <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a>, this macro defines the copy
+ and move constructors and the copy and move assignment operators necessary
+ for the <code class="computeroutput"><span class="identifier">Derived</span></code> class to
+ model the Copy Constructible, Assignable, and Movable concepts.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.copyable_and_movable.usage"></a><a class="link" href="copyable_and_movable.html#tree_node.reference.copyable_and_movable.usage" title="Usage">Usage</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">BOOST_TREE_NODE_COPYABLE_AND_MOVABLE</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.copyable_and_movable.arguments"></a><a class="link" href="copyable_and_movable.html#tree_node.reference.copyable_and_movable.arguments" title="Arguments">Arguments</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <span class="special">/</span><span class="identifier">Derived</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">enclosing</span> <span class="identifier">type</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">Base</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">type</span> <span class="identifier">from</span> <span class="identifier">which</span> <span class="error">`</span><span class="identifier">Derived</span><span class="error">`</span> <span class="identifier">inherits</span><span class="special">.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.copyable_and_movable.definition"></a><a class="link" href="copyable_and_movable.html#tree_node.reference.copyable_and_movable.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/preprocessor.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="value_at_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="container_derived_body.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/count_key.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/count_key.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,83 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>count_key</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="accumulation_key.html" title="accumulation_key">
+<link rel="next" href="height_key.html" title="height_key">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="accumulation_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="height_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.count_key"></a><a class="link" href="count_key.html" title="count_key"><code class="computeroutput"><span class="identifier">count_key</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.count_key.synopsis"></a><a class="link" href="count_key.html#tree_node.reference.count_key.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">struct</span> <span class="identifier">count_key</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.count_key.description"></a><a class="link" href="count_key.html#tree_node.reference.count_key.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Use this type to access the number of each <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> object plus its descendants, the
+ sum of which is known as the <span class="bold"><strong>count</strong></span> of
+ the node. The <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a> type must ultimately inherit from <a class="link" href="with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base</span></code></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.count_key.definition"></a><a class="link" href="count_key.html#tree_node.reference.count_key.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/key/count.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/key/count.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="accumulation_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="height_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/data_key.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/data_key.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,80 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>data_key</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="traversal_state.html" title="traversal_state">
+<link rel="next" href="accumulation_key.html" title="accumulation_key">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="traversal_state.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="accumulation_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.data_key"></a><a class="link" href="data_key.html" title="data_key"><code class="computeroutput"><span class="identifier">data_key</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.data_key.synopsis"></a><a class="link" href="data_key.html#tree_node.reference.data_key.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">struct</span> <span class="identifier">data_key</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.data_key.description"></a><a class="link" href="data_key.html#tree_node.reference.data_key.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Use this type to access the user data stored in <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> objects.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.data_key.definition"></a><a class="link" href="data_key.html#tree_node.reference.data_key.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/key/data.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/key/data.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="traversal_state.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="accumulation_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/depth_first_desc_iter.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/depth_first_desc_iter.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,759 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>depth_first_descendant_iterator<Node,IsReverse></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="depth_first_iterator.html" title="depth_first_iterator<Node,IsReverse>">
+<link rel="next" href="traversal_state.html" title="traversal_state">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="depth_first_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="traversal_state.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.depth_first_desc_iter"></a><a class="link" href="depth_first_desc_iter.html" title="depth_first_descendant_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">depth_first_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span></code> </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_desc_iter.synopsis"></a><a class="link" href="depth_first_desc_iter.html#tree_node.reference.depth_first_desc_iter.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsReverse</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">depth_first_descendant_iterator</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_adaptor</span><span class="special"><</span>
+ <span class="identifier">depth_first_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="identifier">IsReverse</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_const</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_reverse_iterator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">reverse_iterator</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_const</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span>
+ <span class="special">></span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="comment">// Node [const] has bidirectional iterators</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bidirectional_traversal_tag</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_traversal_tag</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">enabler</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">explicit</span> <span class="identifier">depth_first_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">Node</span><span class="special">*</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node_ptr</span> <span class="special">=</span> <span class="identifier">nullptr</span>
+ <span class="special">);</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">depth_first_descendant_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">I</span><span class="special">></span>
+ <span class="identifier">depth_first_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">depth_first_descendant_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">I</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">other</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special"><</span><span class="identifier">I</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">enabler</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">enabler</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="keyword">operator</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">traversal_state</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_desc_iter.description"></a><a class="link" href="depth_first_desc_iter.html#tree_node.reference.depth_first_desc_iter.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This iterator traverses the specified root node and all its descendants
+ in depth-first fashion, e.g. given the following tree representation:
+ </p>
+<p>
+</p>
+<pre class="programlisting"> <span class="identifier">A</span>
+ <span class="special">|</span>
+ <span class="identifier">C</span><span class="special">---+---</span><span class="identifier">B</span>
+ <span class="special">|</span> <span class="special">|</span>
+<span class="special">+-+-+</span> <span class="special">+-+-+</span>
+<span class="special">|</span> <span class="special">|</span> <span class="special">|</span> <span class="special">|</span>
+<span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+<p>
+ This iterator will traverse the tree nodes in the following order:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">C</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">D</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">D</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">E</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">E</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">C</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">B</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">F</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">F</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">G</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">G</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">B</span> <span class="identifier">post_order_traversal</span>
+</pre>
+<p>
+ </p>
+<p>
+ The traversal state conversion operator of this iterator will yield each
+ value in the column on the right at the appropriate iteration.
+ </p>
+<p>
+ This iterator can also be used to traverse the tree nodes in reverse:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">B</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">G</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">G</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">F</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">F</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">B</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">C</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">E</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">E</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">D</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">D</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">C</span> <span class="identifier">pre_order_traversal</span>
+</pre>
+<p>
+ </p>
+<p>
+ This iterator is ideal for algorithms that need to perform both preprocessing
+ and postprocessing of a tree node, e.g. non-recursive copy constructors.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_desc_iter.definition"></a><a class="link" href="depth_first_desc_iter.html#tree_node.reference.depth_first_desc_iter.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/iterator/depth_first_descendant.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/iterator/depth_first_descendant.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_desc_iter.tpl_param"></a><a class="link" href="depth_first_desc_iter.html#tree_node.reference.depth_first_desc_iter.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept, but it can be
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IsReverse</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Configures the <code class="computeroutput"><span class="identifier">depth_first_descendant_iterator</span></code>
+ to traverse tree nodes in reverse depth-first fashion if equivalent
+ to boost::mpl::true_
; otherwise, the
+ nodes will be traversed in depth-first fashion.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </p>
+ </td>
+<td>
+ <p>
+ boost::mpl::false_
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_desc_iter.model_of"></a><a class="link" href="depth_first_desc_iter.html#tree_node.reference.depth_first_desc_iter.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+<span class="special">*</span> Bidirectional Iterator
+<span class="special">*</span> Default Constructible
+<span class="special">*</span> Copy Constructible
+<span class="special">*</span> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_desc_iter.public_bases"></a><a class="link" href="depth_first_desc_iter.html#tree_node.reference.depth_first_desc_iter.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ None.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_desc_iter.members"></a><a class="link" href="depth_first_desc_iter.html#tree_node.reference.depth_first_desc_iter.members" title="Members">Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Value type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">difference_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">iterator_category</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_descendant_iterator</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from node
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_descendant_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conversion constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
+<span class="identifier">depth_first_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">depth_first_descendant_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">depth_first_descendant_iterator</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">depth_first_descendant_iterator</span> <span class="keyword">const</span><span class="special">&</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_descendant_iterator</span><span class="special">&</span>
+ <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">depth_first_descendant_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_descendant_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_descendant_iterator</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-decrement operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_descendant_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">--();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Bidirectional Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-decrement operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_descendant_iterator</span> <span class="keyword">operator</span><span class="special">--(</span><span class="keyword">int</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Bidirectional Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">tree_node::traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_desc_iter.non_members"></a><a class="link" href="depth_first_desc_iter.html#tree_node.reference.depth_first_desc_iter.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Iterator creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">depth_first_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">make_depth_first_descendant_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">depth_first_descendant_iterator</span></code>
+ that will iterate through the descendants of the specified node.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iteration
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">depth_first_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">></span>
+ <span class="identifier">make_depth_first_descendant_reverse_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">depth_first_descendant_iterator</span></code>
+ that will iterate through the descendants of the specified node
+ in reverse order.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="depth_first_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="traversal_state.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/depth_first_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/depth_first_iterator.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,740 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>depth_first_iterator<Node,IsReverse></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="in_order_iterator.html" title="in_order_iterator<Node,IsReverse>">
+<link rel="next" href="depth_first_desc_iter.html" title="depth_first_descendant_iterator<Node,IsReverse>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="in_order_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="depth_first_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.depth_first_iterator"></a><a class="link" href="depth_first_iterator.html" title="depth_first_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">depth_first_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_iterator.synopsis"></a><a class="link" href="depth_first_iterator.html#tree_node.reference.depth_first_iterator.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsReverse</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">depth_first_iterator</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_adaptor</span><span class="special"><</span>
+ <span class="identifier">depth_first_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Node</span><span class="special">*</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="comment">// Node [const] has bidirectional iterators</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bidirectional_traversal_tag</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_traversal_tag</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">></span>
+ <span class="special">{</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">explicit</span> <span class="identifier">depth_first_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">*</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node_ptr</span> <span class="special">=</span> <span class="identifier">nullptr</span><span class="special">);</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">depth_first_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">I</span><span class="special">></span>
+ <span class="identifier">depth_first_iterator</span><span class="special">(</span>
+ <span class="identifier">depth_first_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">I</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">other</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special"><</span><span class="identifier">I</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">enabler</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">enabler</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="keyword">operator</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">traversal_state</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_iterator.description"></a><a class="link" href="depth_first_iterator.html#tree_node.reference.depth_first_iterator.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This iterator traverses the specified root node and all its descendants
+ in depth-first fashion, e.g. given the following tree representation:
+ </p>
+<p>
+</p>
+<pre class="programlisting"> <span class="identifier">A</span>
+ <span class="special">|</span>
+ <span class="identifier">C</span><span class="special">---+---</span><span class="identifier">B</span>
+ <span class="special">|</span> <span class="special">|</span>
+<span class="special">+-+-+</span> <span class="special">+-+-+</span>
+<span class="special">|</span> <span class="special">|</span> <span class="special">|</span> <span class="special">|</span>
+<span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+<p>
+ This iterator will traverse the tree nodes in the following order:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">A</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">C</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">D</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">D</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">E</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">E</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">C</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">B</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">F</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">F</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">G</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">G</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">B</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">A</span> <span class="identifier">post_order_traversal</span>
+</pre>
+<p>
+ </p>
+<p>
+ The traversal state conversion operator of this iterator will yield each
+ value in the column on the right at the appropriate iteration.
+ </p>
+<p>
+ This iterator can also be used to traverse the tree nodes in reverse:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">A</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">B</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">G</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">G</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">F</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">F</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">B</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">C</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">E</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">E</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">D</span> <span class="identifier">post_order_traversal</span>
+<span class="identifier">D</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">C</span> <span class="identifier">pre_order_traversal</span>
+<span class="identifier">A</span> <span class="identifier">pre_order_traversal</span>
+</pre>
+<p>
+ </p>
+<p>
+ This iterator is ideal for algorithms that need to perform both preprocessing
+ and postprocessing of a tree node.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_iterator.definition"></a><a class="link" href="depth_first_iterator.html#tree_node.reference.depth_first_iterator.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/iterator/depth_first.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/iterator/depth_first.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_iterator.tpl_param"></a><a class="link" href="depth_first_iterator.html#tree_node.reference.depth_first_iterator.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept, but it can be
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IsReverse</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Configures the <code class="computeroutput"><span class="identifier">depth_first_iterator</span></code>
+ to traverse tree nodes in reverse depth-first fashion if equivalent
+ to boost::mpl::true_
; otherwise, the
+ nodes will be traversed in depth-first fashion.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </p>
+ </td>
+<td>
+ <p>
+ boost::mpl::false_
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_iterator.model_of"></a><a class="link" href="depth_first_iterator.html#tree_node.reference.depth_first_iterator.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+<span class="special">*</span> Bidirectional Iterator
+<span class="special">*</span> Default Constructible
+<span class="special">*</span> Copy Constructible
+<span class="special">*</span> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_iterator.public_bases"></a><a class="link" href="depth_first_iterator.html#tree_node.reference.depth_first_iterator.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ None.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_iterator.members"></a><a class="link" href="depth_first_iterator.html#tree_node.reference.depth_first_iterator.members" title="Members">Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Value type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">difference_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">iterator_category</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_iterator</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from node
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conversion constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
+<span class="identifier">depth_first_iterator</span><span class="special">(</span><span class="identifier">depth_first_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">depth_first_iterator</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_iterator</span><span class="special">(</span><span class="identifier">depth_first_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">depth_first_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_iterator</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-decrement operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">--();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Bidirectional Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-decrement operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">depth_first_iterator</span> <span class="keyword">operator</span><span class="special">--(</span><span class="keyword">int</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Bidirectional Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">tree_node::traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.depth_first_iterator.non_members"></a><a class="link" href="depth_first_iterator.html#tree_node.reference.depth_first_iterator.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Iterator creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">depth_first_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span> <span class="identifier">make_depth_first_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">depth_first_iterator</span></code>
+ that will iterate through the specified node and its descendants.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse iterator creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">depth_first_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">></span>
+ <span class="identifier">make_depth_first_reverse_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">depth_first_iterator</span></code>
+ that will iterate through the specified node and its descendants
+ in reverse order.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="in_order_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="depth_first_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/dereference_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/dereference_iterator.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,118 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>dereference_iterator()</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binary_upper_bound.html" title="binary_upper_bound()">
+<link rel="next" href="get_properties.html" title="get_properties()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_upper_bound.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_properties.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.dereference_iterator"></a><a class="link" href="dereference_iterator.html" title="dereference_iterator()"><code class="computeroutput"><span class="identifier">dereference_iterator</span><span class="special">()</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.dereference_iterator.function_synopsis"></a><a class="link" href="dereference_iterator.html#tree_node.reference.dereference_iterator.function_synopsis" title="Function Synopsis">Function
+ Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">dereference_iterator</span><span class="special"><</span><span class="identifier">Iterator</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">dereference_iterator</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">itr</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.dereference_iterator.function_description"></a><a class="link" href="dereference_iterator.html#tree_node.reference.dereference_iterator.function_description" title="Function Description">Function
+ Description</a>
+</h4></div></div></div>
+<p>
+ This function takes in a <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a> and returns the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a>
+ to which it currently points. In terms of genericity, this function is
+ necessary not only because it handles both <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a> and <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a> models, but
+ because the iterator interface of associative Boost.PointerContainer types is different
+ from that of their standard library counterparts.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.dereference_iterator.result_of"></a><a class="link" href="dereference_iterator.html#tree_node.reference.dereference_iterator.result_of" title="Return Type Metafunction Synopsis">Return
+ Type Metafunction Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">dereference_iterator</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}}}</span> <span class="comment">// namespace boost::tree_node::result_of</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.dereference_iterator.return_type_metafunction_description"></a><a class="link" href="dereference_iterator.html#tree_node.reference.dereference_iterator.return_type_metafunction_description" title="Return Type Metafunction Description">Return
+ Type Metafunction Description</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Itr</span></code> be a <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a> model.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">dereference_iterator</span><span class="special"><</span><span class="identifier">Itr</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> A Fusion Sequence of <a href="http://www.boost.org/libs/fusion/doc/html/fusion/support/pair.html" target="_top">half-runtime
+ pairs</a> of key types and their matching value types as defined by
+ the specified node type.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.dereference_iterator.definition"></a><a class="link" href="dereference_iterator.html#tree_node.reference.dereference_iterator.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/iterator/dereference.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_upper_bound.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_properties.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_fwd_decl.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_fwd_decl.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,123 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="assoc_cont_derived_body.html" title="BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY">
+<link rel="next" href="emplace_ctor_inline_hdr.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HDR">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="assoc_cont_derived_body.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_ctor_inline_hdr.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.emplace_ctor_fwd_decl"></a><a class="link" href="emplace_ctor_fwd_decl.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_fwd_decl.synopsis"></a><a class="link" href="emplace_ctor_fwd_decl.html#tree_node.reference.emplace_ctor_fwd_decl.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_HEADER</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_EXPR_IF</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="keyword">template</span> <span class="special"><)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_ENUM_PARAMS_Z</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_EXPR_IF</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="special">>)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_EXPR_IIF</span><span class="special">(</span><span class="identifier">BOOST_PP_EQUAL</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="number">1</span><span class="special">),</span> <span class="keyword">explicit</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">Type</span><span class="special">(</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_CAT</span><span class="special">(</span><span class="identifier">BOOST_PP_ENUM_</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)(</span> <span class="special">\</span>
+ <span class="identifier">n</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">BOOST_CONTAINER_PP_PARAM_LIST</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">_</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_HEADER</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">);</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_fwd_decl.description"></a><a class="link" href="emplace_ctor_fwd_decl.html#tree_node.reference.emplace_ctor_fwd_decl.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Defined only if the compiler does not support perfect forwarding, and meant
+ to be used in the <code class="computeroutput"><span class="keyword">public</span></code> scope
+ of a <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>, this macro expands to the forward declaration
+ of a constructor that will emulate it.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_fwd_decl.usage"></a><a class="link" href="emplace_ctor_fwd_decl.html#tree_node.reference.emplace_ctor_fwd_decl.usage" title="Usage">Usage</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">some_node_type</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+<span class="preprocessor">#if</span> <span class="identifier">defined</span> <span class="identifier">BOOST_CONTAINER_PERFECT_FORWARDING</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+ <span class="keyword">explicit</span> <span class="identifier">some_node_type</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+<span class="preprocessor">#else</span>
+ BOOST_PP_REPEAT<span class="special">(</span>
+ <span class="identifier">BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS</span>
+ <span class="special">,</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL</span>
+ <span class="special">,</span> <span class="identifier">some_node_type</span>
+ <span class="special">)</span>
+<span class="preprocessor">#endif</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_fwd_decl.arguments"></a><a class="link" href="emplace_ctor_fwd_decl.html#tree_node.reference.emplace_ctor_fwd_decl.arguments" title="Arguments">Arguments</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <span class="special">/</span><span class="identifier">z</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">next</span> <span class="identifier">available</span> BOOST_PP_REPEAT
<span class="identifier">dimension</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">n</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">number</span> <span class="identifier">of</span> <span class="identifier">arguments</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="identifier">current</span> <span class="identifier">iteration</span><span class="error">'</span><span class="identifier">s</span> <span class="identifier">constructor</span>
+ <span class="identifier">will</span> <span class="identifier">accept</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">some_node_type</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">enclosing</span> <span class="identifier">type</span><span class="special">.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_fwd_decl.definition"></a><a class="link" href="emplace_ctor_fwd_decl.html#tree_node.reference.emplace_ctor_fwd_decl.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/preprocessor.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="assoc_cont_derived_body.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_ctor_inline_hdr.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_inline_def.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_inline_def.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,115 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="emplace_ctor_inline_hdr.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HDR">
+<link rel="next" href="emplace_ctor_w_alloc_f_dcl.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_ctor_inline_hdr.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_ctor_w_alloc_f_dcl.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.emplace_ctor_inline_def"></a><a class="link" href="emplace_ctor_inline_def.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_inline_def.synopsis"></a><a class="link" href="emplace_ctor_inline_def.html#tree_node.reference.emplace_ctor_inline_def.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">on_post_emplacement_construct</span><span class="special">();</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_inline_def.description"></a><a class="link" href="emplace_ctor_inline_def.html#tree_node.reference.emplace_ctor_inline_def.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Defined only if the compiler does not support perfect forwarding, and meant
+ to be used in the <code class="computeroutput"><span class="keyword">public</span></code> scope
+ of a <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a> model that inherits from a <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> and defines no additional
+ members, this macro expands to the inline definition of a constructor that
+ will emulate it. Uses <a class="link" href="emplace_ctor_inline_hdr.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HDR"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER</span></code></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_inline_def.usage"></a><a class="link" href="emplace_ctor_inline_def.html#tree_node.reference.emplace_ctor_inline_def.usage" title="Usage">Usage</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">Derived</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">Base</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+<span class="preprocessor">#if</span> <span class="identifier">defined</span> <span class="identifier">BOOST_CONTAINER_PERFECT_FORWARDING</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+ <span class="keyword">inline</span> <span class="keyword">explicit</span> <span class="identifier">Derived</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward</span><span class="special"><</span><span class="identifier">Args</span><span class="special">>(</span><span class="identifier">args</span><span class="special">)...)</span>
+ <span class="special">{</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">on_post_emplacement_construct</span><span class="special">();</span>
+ <span class="special">}</span>
+<span class="preprocessor">#else</span>
+ BOOST_PP_REPEAT<span class="special">(</span>
+ <span class="identifier">BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS</span>
+ <span class="special">,</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span>
+ <span class="special">)</span>
+<span class="preprocessor">#endif</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_inline_def.arguments"></a><a class="link" href="emplace_ctor_inline_def.html#tree_node.reference.emplace_ctor_inline_def.arguments" title="Arguments">Arguments</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <span class="special">/</span><span class="identifier">z</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">next</span> <span class="identifier">available</span> BOOST_PP_REPEAT
<span class="identifier">dimension</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">n</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">number</span> <span class="identifier">of</span> <span class="identifier">arguments</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="identifier">current</span> <span class="identifier">iteration</span><span class="error">'</span><span class="identifier">s</span> <span class="identifier">constructor</span>
+ <span class="identifier">will</span> <span class="identifier">accept</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">Derived</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">enclosing</span> <span class="identifier">type</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">Base</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">type</span> <span class="identifier">from</span> <span class="identifier">which</span> <span class="error">`</span><span class="identifier">Derived</span><span class="error">`</span> <span class="identifier">inherits</span><span class="special">.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_inline_def.definition"></a><a class="link" href="emplace_ctor_inline_def.html#tree_node.reference.emplace_ctor_inline_def.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/preprocessor.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_ctor_inline_hdr.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_ctor_w_alloc_f_dcl.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_inline_hdr.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_inline_hdr.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,161 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HDR</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="emplace_ctor_fwd_decl.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL">
+<link rel="next" href="emplace_ctor_inline_def.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_ctor_fwd_decl.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_ctor_inline_def.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.emplace_ctor_inline_hdr"></a><a class="link" href="emplace_ctor_inline_hdr.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HDR"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HDR</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_inline_hdr.synopsis"></a><a class="link" href="emplace_ctor_inline_hdr.html#tree_node.reference.emplace_ctor_inline_hdr.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_HEADER</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_EXPR_IF</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="keyword">template</span> <span class="special"><)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_ENUM_PARAMS_Z</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_EXPR_IF</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="special">>)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_EXPR_IIF</span><span class="special">(</span><span class="identifier">BOOST_PP_EQUAL</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="number">1</span><span class="special">),</span> <span class="keyword">explicit</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">Type</span><span class="special">(</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_CAT</span><span class="special">(</span><span class="identifier">BOOST_PP_ENUM_</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)(</span> <span class="special">\</span>
+ <span class="identifier">n</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">BOOST_CONTAINER_PP_PARAM_LIST</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">_</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_BASE_FWD</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_CAT</span><span class="special">(</span><span class="identifier">BOOST_PP_ENUM_</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)(</span> <span class="special">\</span>
+ <span class="identifier">n</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">BOOST_CONTAINER_PP_PARAM_FORWARD</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">_</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_HEADER</span><span class="special">(</span> <span class="special">\</span>
+ <span class="identifier">z</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">n</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">BOOST_PP_TUPLE_ELEM</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_BASE_FWD</span><span class="special">(</span> <span class="special">\</span>
+ <span class="identifier">z</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">n</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">BOOST_PP_TUPLE_ELEM</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_inline_hdr.description"></a><a class="link" href="emplace_ctor_inline_hdr.html#tree_node.reference.emplace_ctor_inline_hdr.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Defined only if the compiler does not support perfect forwarding, this
+ macro expands to the header of a constructor that emulates it along witht
+ the first part of its initialization list.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_inline_hdr.usage"></a><a class="link" href="emplace_ctor_inline_hdr.html#tree_node.reference.emplace_ctor_inline_hdr.usage" title="Usage">Usage</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">Derived</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">Base</span>
+<span class="special">{</span>
+ <span class="keyword">int</span> <span class="identifier">some_member</span><span class="special">;</span>
+
+ <span class="keyword">void</span> <span class="identifier">post_construct</span><span class="special">(</span><span class="keyword">int</span><span class="special">);</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+<span class="preprocessor">#if</span> <span class="identifier">defined</span> <span class="identifier">BOOST_CONTAINER_PERFECT_FORWARDING</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+ <span class="keyword">inline</span> <span class="keyword">explicit</span> <span class="identifier">Derived</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">)</span>
+ <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward</span><span class="special"><</span><span class="identifier">Args</span><span class="special">>(</span><span class="identifier">args</span><span class="special">)...)</span>
+ <span class="special">,</span> <span class="identifier">some_member</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">this</span><span class="special">-></span><span class="identifier">post_construct</span><span class="special">(</span><span class="keyword">this</span><span class="special">-></span><span class="identifier">some_member</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="preprocessor">#else</span>
+<span class="preprocessor">#define</span> <span class="identifier">YOUR_MACRO</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">some_member</span><span class="special">(</span><span class="number">0</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="keyword">this</span><span class="special">-></span><span class="identifier">post_construct</span><span class="special">(</span><span class="keyword">this</span><span class="special">-></span><span class="identifier">some_member</span><span class="special">);</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+<span class="comment">//!</span>
+ BOOST_PP_REPEAT<span class="special">(</span>
+ <span class="identifier">BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS</span>
+ <span class="special">,</span> <span class="identifier">YOUR_MACRO</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span>
+ <span class="special">)</span>
+<span class="preprocessor">#undef</span> <span class="identifier">YOUR_MACRO</span>
+<span class="preprocessor">#endif</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_inline_hdr.arguments"></a><a class="link" href="emplace_ctor_inline_hdr.html#tree_node.reference.emplace_ctor_inline_hdr.arguments" title="Arguments">Arguments</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <span class="special">/</span><span class="identifier">z</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">next</span> <span class="identifier">available</span> BOOST_PP_REPEAT
<span class="identifier">dimension</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">n</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">number</span> <span class="identifier">of</span> <span class="identifier">arguments</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="identifier">current</span> <span class="identifier">iteration</span><span class="error">'</span><span class="identifier">s</span> <span class="identifier">constructor</span>
+ <span class="identifier">will</span> <span class="identifier">accept</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">Derived</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">enclosing</span> <span class="identifier">type</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">Base</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">type</span> <span class="identifier">from</span> <span class="identifier">which</span> <span class="error">`</span><span class="identifier">Derived</span><span class="error">`</span> <span class="identifier">inherits</span><span class="special">.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_inline_hdr.definition"></a><a class="link" href="emplace_ctor_inline_hdr.html#tree_node.reference.emplace_ctor_inline_hdr.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/preprocessor.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_ctor_fwd_decl.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_ctor_inline_def.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_w_alloc_f_dcl.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_w_alloc_f_dcl.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,132 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="emplace_ctor_inline_def.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF">
+<link rel="next" href="emplace_ctor_w_alloc_i_hdr.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_ctor_inline_def.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_ctor_w_alloc_i_hdr.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_f_dcl"></a><a class="link" href="emplace_ctor_w_alloc_f_dcl.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL</span></code>
+ </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_f_dcl.synopsis"></a><a class="link" href="emplace_ctor_w_alloc_f_dcl.html#tree_node.reference.emplace_ctor_w_alloc_f_dcl.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_HEADER</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_EXPR_IF</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="keyword">template</span> <span class="special"><)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_ENUM_PARAMS_Z</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_EXPR_IF</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="special">>)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_EXPR_IIF</span><span class="special">(</span><span class="identifier">BOOST_PP_EQUAL</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="number">1</span><span class="special">),</span> <span class="keyword">explicit</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">Type</span><span class="special">(</span> <span class="special">\</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_CAT</span><span class="special">(</span><span class="identifier">BOOST_PP_ENUM_TRAILING_</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)(</span> <span class="special">\</span>
+ <span class="identifier">n</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">BOOST_CONTAINER_PP_PARAM_LIST</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">_</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_HEADER</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">);</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_f_dcl.description"></a><a class="link" href="emplace_ctor_w_alloc_f_dcl.html#tree_node.reference.emplace_ctor_w_alloc_f_dcl.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Defined only if the compiler does not support perfect forwarding, and meant
+ to be used in the <code class="computeroutput"><span class="keyword">public</span></code> scope
+ of a <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>, this macro expands to the forward declaration
+ of a constructor that will emulate it.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_f_dcl.usage"></a><a class="link" href="emplace_ctor_w_alloc_f_dcl.html#tree_node.reference.emplace_ctor_w_alloc_f_dcl.usage" title="Usage">Usage</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">some_node_type</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">traits</span><span class="special">;</span>
+
+<span class="preprocessor">#if</span> <span class="identifier">defined</span> <span class="identifier">BOOST_CONTAINER_PERFECT_FORWARDING</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+ <span class="keyword">explicit</span> <span class="identifier">some_node_type</span><span class="special">(</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+ <span class="special">);</span>
+<span class="preprocessor">#else</span>
+ BOOST_PP_REPEAT<span class="special">(</span>
+ <span class="identifier">BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS</span>
+ <span class="special">,</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL</span>
+ <span class="special">,</span> <span class="identifier">some_node_type</span>
+ <span class="special">)</span>
+<span class="preprocessor">#endif</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_f_dcl.arguments"></a><a class="link" href="emplace_ctor_w_alloc_f_dcl.html#tree_node.reference.emplace_ctor_w_alloc_f_dcl.arguments" title="Arguments">Arguments</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <span class="special">/</span><span class="identifier">z</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">next</span> <span class="identifier">available</span> BOOST_PP_REPEAT
<span class="identifier">dimension</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">n</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">number</span> <span class="identifier">of</span> <span class="identifier">arguments</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="identifier">current</span> <span class="identifier">iteration</span><span class="error">'</span><span class="identifier">s</span> <span class="identifier">constructor</span>
+ <span class="identifier">will</span> <span class="identifier">accept</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">some_node_type</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">enclosing</span> <span class="identifier">type</span><span class="special">.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_f_dcl.definition"></a><a class="link" href="emplace_ctor_w_alloc_f_dcl.html#tree_node.reference.emplace_ctor_w_alloc_f_dcl.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/preprocessor.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_ctor_inline_def.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_ctor_w_alloc_i_hdr.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_w_alloc_i_def.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_w_alloc_i_def.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,122 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="emplace_ctor_w_alloc_i_hdr.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER">
+<link rel="next" href="can_use_fusion.html" title="BOOST_TREE_NODE_CAN_USE_FUSION">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_ctor_w_alloc_i_hdr.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="can_use_fusion.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_i_def"></a><a class="link" href="emplace_ctor_w_alloc_i_def.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF</span></code>
+ </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_i_def.synopsis"></a><a class="link" href="emplace_ctor_w_alloc_i_def.html#tree_node.reference.emplace_ctor_w_alloc_i_def.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">on_post_emplacement_construct</span><span class="special">();</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_i_def.description"></a><a class="link" href="emplace_ctor_w_alloc_i_def.html#tree_node.reference.emplace_ctor_w_alloc_i_def.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Defined only if the compiler does not support perfect forwarding, and meant
+ to be used in the <code class="computeroutput"><span class="keyword">public</span></code> scope
+ of a <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a> model that inherits from a <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> and defines no additional
+ members, this macro expands to the inline definition of a constructor that
+ will emulate it. Uses <a class="link" href="emplace_ctor_w_alloc_i_hdr.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER</span></code></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_i_def.usage"></a><a class="link" href="emplace_ctor_w_alloc_i_def.html#tree_node.reference.emplace_ctor_w_alloc_i_def.usage" title="Usage">Usage</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">Derived</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">Base</span>
+<span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Base</span><span class="special">::</span><span class="identifier">traits</span> <span class="identifier">traits</span><span class="special">;</span>
+
+<span class="preprocessor">#if</span> <span class="identifier">defined</span> <span class="identifier">BOOST_CONTAINER_PERFECT_FORWARDING</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+ <span class="keyword">inline</span> <span class="keyword">explicit</span> <span class="identifier">Derived</span><span class="special">(</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+ <span class="special">)</span> <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg</span>
+ <span class="special">,</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward</span><span class="special"><</span><span class="identifier">Args</span><span class="special">>(</span><span class="identifier">args</span><span class="special">)...</span>
+ <span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">Base</span><span class="special">::</span><span class="identifier">on_post_emplacement_construct</span><span class="special">();</span>
+ <span class="special">}</span>
+<span class="preprocessor">#else</span>
+ BOOST_PP_REPEAT<span class="special">(</span>
+ <span class="identifier">BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS</span>
+ <span class="special">,</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span>
+ <span class="special">)</span>
+<span class="preprocessor">#endif</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_i_def.arguments"></a><a class="link" href="emplace_ctor_w_alloc_i_def.html#tree_node.reference.emplace_ctor_w_alloc_i_def.arguments" title="Arguments">Arguments</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <span class="special">/</span><span class="identifier">Derived</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">enclosing</span> <span class="identifier">type</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">Base</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">type</span> <span class="identifier">from</span> <span class="identifier">which</span> <span class="error">`</span><span class="identifier">Derived</span><span class="error">`</span> <span class="identifier">inherits</span><span class="special">.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_i_def.definition"></a><a class="link" href="emplace_ctor_w_alloc_i_def.html#tree_node.reference.emplace_ctor_w_alloc_i_def.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/preprocessor.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_ctor_w_alloc_i_hdr.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="can_use_fusion.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_w_alloc_i_hdr.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/emplace_ctor_w_alloc_i_hdr.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,173 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="emplace_ctor_w_alloc_f_dcl.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL">
+<link rel="next" href="emplace_ctor_w_alloc_i_def.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_ctor_w_alloc_f_dcl.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_ctor_w_alloc_i_def.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_i_hdr"></a><a class="link" href="emplace_ctor_w_alloc_i_hdr.html" title="BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER"><code class="computeroutput"><span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER</span></code>
+ </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_i_hdr.synopsis"></a><a class="link" href="emplace_ctor_w_alloc_i_hdr.html#tree_node.reference.emplace_ctor_w_alloc_i_hdr.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_HEADER</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_EXPR_IF</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="keyword">template</span> <span class="special"><)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_ENUM_PARAMS_Z</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">P</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_EXPR_IF</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="special">>)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_EXPR_IIF</span><span class="special">(</span><span class="identifier">BOOST_PP_EQUAL</span><span class="special">(</span><span class="identifier">n</span><span class="special">,</span> <span class="number">1</span><span class="special">),</span> <span class="keyword">explicit</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">Type</span><span class="special">(</span> <span class="special">\</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_CAT</span><span class="special">(</span><span class="identifier">BOOST_PP_ENUM_TRAILING_</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)(</span> <span class="special">\</span>
+ <span class="identifier">n</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">BOOST_CONTAINER_PP_PARAM_LIST</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">_</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_BASE_FWD</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span> <span class="special">\</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">allocator</span> <span class="special">\</span>
+ <span class="identifier">BOOST_PP_CAT</span><span class="special">(</span><span class="identifier">BOOST_PP_ENUM_TRAILING_</span><span class="special">,</span> <span class="identifier">z</span><span class="special">)(</span> <span class="special">\</span>
+ <span class="identifier">n</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">BOOST_CONTAINER_PP_PARAM_FORWARD</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">_</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_HEADER</span><span class="special">(</span> <span class="special">\</span>
+ <span class="identifier">z</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">n</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">BOOST_PP_TUPLE_ELEM</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">0</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_BASE_FWD</span><span class="special">(</span> <span class="special">\</span>
+ <span class="identifier">z</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">n</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">BOOST_PP_TUPLE_ELEM</span><span class="special">(</span><span class="number">2</span><span class="special">,</span> <span class="number">1</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">)</span> <span class="special">\</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_i_hdr.description"></a><a class="link" href="emplace_ctor_w_alloc_i_hdr.html#tree_node.reference.emplace_ctor_w_alloc_i_hdr.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Defined only if the compiler does not support perfect forwarding, this
+ macro expands to the header of a constructor that emulates it along witht
+ the first part of its initialization list.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_i_hdr.usage"></a><a class="link" href="emplace_ctor_w_alloc_i_hdr.html#tree_node.reference.emplace_ctor_w_alloc_i_hdr.usage" title="Usage">Usage</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">class</span> <span class="identifier">Derived</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">Base</span>
+<span class="special">{</span>
+ <span class="keyword">int</span> <span class="identifier">some_member</span><span class="special">;</span>
+
+ <span class="keyword">void</span> <span class="identifier">post_construct</span><span class="special">(</span><span class="keyword">int</span><span class="special">);</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+<span class="preprocessor">#if</span> <span class="identifier">defined</span> <span class="identifier">BOOST_CONTAINER_PERFECT_FORWARDING</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+ <span class="keyword">inline</span> <span class="keyword">explicit</span> <span class="identifier">Derived</span><span class="special">(</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+ <span class="special">)</span> <span class="special">:</span> <span class="identifier">Base</span><span class="special">(</span>
+ <span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg</span>
+ <span class="special">,</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward</span><span class="special"><</span><span class="identifier">Args</span><span class="special">>(</span><span class="identifier">args</span><span class="special">)...</span>
+ <span class="special">)</span>
+ <span class="special">,</span> <span class="identifier">some_member</span><span class="special">(</span><span class="number">0</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="keyword">this</span><span class="special">-></span><span class="identifier">post_construct</span><span class="special">(</span><span class="keyword">this</span><span class="special">-></span><span class="identifier">some_member</span><span class="special">);</span>
+ <span class="special">}</span>
+<span class="preprocessor">#else</span>
+<span class="preprocessor">#define</span> <span class="identifier">YOUR_MACRO</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="identifier">BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER</span><span class="special">(</span><span class="identifier">z</span><span class="special">,</span> <span class="identifier">n</span><span class="special">,</span> <span class="identifier">Tuple</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">,</span> <span class="identifier">some_member</span><span class="special">(</span><span class="number">0</span><span class="special">)</span> <span class="special">\</span>
+ <span class="special">{</span> <span class="special">\</span>
+ <span class="keyword">this</span><span class="special">-></span><span class="identifier">post_construct</span><span class="special">(</span><span class="keyword">this</span><span class="special">-></span><span class="identifier">some_member</span><span class="special">);</span> <span class="special">\</span>
+ <span class="special">}</span> <span class="special">\</span>
+<span class="comment">//!</span>
+ BOOST_PP_REPEAT<span class="special">(</span>
+ <span class="identifier">BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS</span>
+ <span class="special">,</span> <span class="identifier">YOUR_MACRO</span>
+ <span class="special">,</span> <span class="special">(</span><span class="identifier">Derived</span><span class="special">,</span> <span class="identifier">Base</span><span class="special">)</span>
+ <span class="special">)</span>
+<span class="preprocessor">#undef</span> <span class="identifier">YOUR_MACRO</span>
+<span class="preprocessor">#endif</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_i_hdr.arguments"></a><a class="link" href="emplace_ctor_w_alloc_i_hdr.html#tree_node.reference.emplace_ctor_w_alloc_i_hdr.arguments" title="Arguments">Arguments</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <span class="special">/</span><span class="identifier">z</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">next</span> <span class="identifier">available</span> BOOST_PP_REPEAT
<span class="identifier">dimension</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">n</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">number</span> <span class="identifier">of</span> <span class="identifier">arguments</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="identifier">current</span> <span class="identifier">iteration</span><span class="error">'</span><span class="identifier">s</span> <span class="identifier">constructor</span>
+ <span class="identifier">will</span> <span class="identifier">accept</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">Derived</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">enclosing</span> <span class="identifier">type</span><span class="special">.</span>
+<span class="special">*</span> <span class="special">/</span><span class="identifier">Base</span><span class="special">/</span> <span class="special">--</span> <span class="identifier">The</span> <span class="identifier">name</span> <span class="identifier">of</span> <span class="identifier">the</span> <span class="identifier">type</span> <span class="identifier">from</span> <span class="identifier">which</span> <span class="error">`</span><span class="identifier">Derived</span><span class="error">`</span> <span class="identifier">inherits</span><span class="special">.</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.emplace_ctor_w_alloc_i_hdr.definition"></a><a class="link" href="emplace_ctor_w_alloc_i_hdr.html#tree_node.reference.emplace_ctor_w_alloc_i_hdr.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/preprocessor.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="emplace_ctor_w_alloc_f_dcl.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="emplace_ctor_w_alloc_i_def.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/get_keys.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/get_keys.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,104 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>result_of::get_keys<Node></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="has_key.html" title="has_key()">
+<link rel="next" href="at_key.html" title="result_of::at_key<Node,Key>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="at_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.get_keys"></a><a class="link" href="get_keys.html" title="result_of::get_keys<Node>"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_keys</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.get_keys.synopsis"></a><a class="link" href="get_keys.html#tree_node.reference.get_keys.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">get_keys_impl</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector0</span><span class="special"><></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">get_keys</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">super_t</span> <span class="identifier">_base</span><span class="special">;</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">joint_view</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">get_keys_impl</span><span class="special"><</span><span class="identifier">Node</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">_base</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector0</span><span class="special"><></span>
+ <span class="special">,</span> <span class="identifier">get_keys</span><span class="special"><</span><span class="identifier">_base</span><span class="special">></span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">type</span><span class="special">;</span>
+
+ <span class="identifier">BOOST_MPL_AUX_LAMBDA_SUPPORT</span><span class="special">(</span><span class="number">1</span><span class="special">,</span><span class="identifier">get_keys</span><span class="special">,(</span><span class="identifier">Node</span><span class="special">))</span>
+ <span class="special">};</span>
+<span class="special">}}}</span> <span class="comment">// namespace boost::tree_node::result_of</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.get_keys.description"></a><a class="link" href="get_keys.html#tree_node.reference.get_keys.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Node</span></code> be a (possibly
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified) <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> model.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_keys</span><span class="special"><</span><span class="identifier">Node</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> A Fusion Sequence of key types--each of which,
+ when passed along with <code class="computeroutput"><span class="identifier">Node</span></code>
+ as template arguments to <a class="link" href="has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span></code></a>, will cause <a class="link" href="has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span></code></a> to evaluate to <a href="http://www.boost.org/libs/mpl/doc/refmanual/bool.html" target="_top"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span></
code></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.get_keys.definition"></a><a class="link" href="get_keys.html#tree_node.reference.get_keys.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/intrinsic/get_keys.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="has_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="at_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/get_properties.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/get_properties.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,125 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>get_properties()</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="dereference_iterator.html" title="dereference_iterator()">
+<link rel="next" href="has_key.html" title="has_key()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="dereference_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="has_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.get_properties"></a><a class="link" href="get_properties.html" title="get_properties()"><code class="computeroutput"><span class="identifier">get_properties</span><span class="special">()</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.get_properties.function_synopsis"></a><a class="link" href="get_properties.html#tree_node.reference.get_properties.function_synopsis" title="Function Synopsis">Function
+ Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_properties</span><span class="special"><</span><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get_properties</span><span class="special">(</span><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_properties</span><span class="special"><</span><span class="identifier">Node</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get_properties</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.get_properties.function_description"></a><a class="link" href="get_properties.html#tree_node.reference.get_properties.function_description" title="Function Description">Function
+ Description</a>
+</h4></div></div></div>
+<p>
+ This function returns a heterogeneous list of key types--each of which,
+ when passed as a template argument to <a class="link" href="has_key.html" title="has_key()"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">has_key</span><span class="special">()</span></code></a>
+ while the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a> object is passed by reference, will evaluate to
+ <code class="computeroutput"><span class="keyword">true</span></code>--each paired with the
+ value returned through key-value access of the specified node.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.get_properties.result_of"></a><a class="link" href="get_properties.html#tree_node.reference.get_properties.result_of" title="Return Type Metafunction Synopsis">Return
+ Type Metafunction Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">get_properties</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">unspecified</span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+<span class="special">}}}</span> <span class="comment">// namespace boost::tree_node::result_of</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.get_properties.return_type_metafunction_description"></a><a class="link" href="get_properties.html#tree_node.reference.get_properties.return_type_metafunction_description" title="Return Type Metafunction Description">Return
+ Type Metafunction Description</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Node</span></code> be a (possibly
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified) <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> model.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">get_properties</span><span class="special"><</span><span class="identifier">Node</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> A Fusion Sequence of <a href="http://www.boost.org/libs/fusion/doc/html/fusion/support/pair.html" target="_top">half-runtime
+ pairs</a> of key types and their matching value types as defined by
+ the specified node type.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.get_properties.definition"></a><a class="link" href="get_properties.html#tree_node.reference.get_properties.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/intrinsic/get_properties.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="dereference_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="has_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/has_key.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/has_key.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,131 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>has_key()</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="get_properties.html" title="get_properties()">
+<link rel="next" href="get_keys.html" title="result_of::get_keys<Node>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="get_properties.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_keys.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.has_key"></a><a class="link" href="has_key.html" title="has_key()"><code class="computeroutput"><span class="identifier">has_key</span><span class="special">()</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.has_key.function_synopsis"></a><a class="link" href="has_key.html#tree_node.reference.has_key.function_synopsis" title="Function Synopsis">Function
+ Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">Key</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">has_key</span><span class="special">(</span><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">inline</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">Key</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">has_key</span><span class="special">(</span><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">&)</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="keyword">typename</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">Key</span><span class="special">>::</span><span class="identifier">type</span><span class="special">();</span>
+ <span class="special">}</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.has_key.function_description"></a><a class="link" href="has_key.html#tree_node.reference.has_key.function_description" title="Function Description">Function
+ Description</a>
+</h4></div></div></div>
+<p>
+ This function returns <code class="computeroutput"><span class="keyword">true</span></code>
+ if the matching value exists in the specified node--that is, if <code class="computeroutput"><span class="identifier">get</span><span class="special">(</span><span class="identifier">node</span><span class="special">,</span> <span class="identifier">Key</span><span class="special">())</span></code>
+ and <code class="computeroutput"><span class="identifier">get</span><span class="special"><</span><span class="identifier">Key</span><span class="special">>(</span><span class="identifier">node</span><span class="special">)</span></code>
+ are well-formed expressions--<code class="computeroutput"><span class="keyword">false</span></code>
+ otherwise.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.has_key.result_of"></a><a class="link" href="has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis">Return Type
+ Metafunction Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_key_impl</span> <span class="special">:</span> <span class="identifier">has_key_impl</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">super_t</span><span class="special">,</span><span class="identifier">Key</span><span class="special">></span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_key_impl</span><span class="special"><</span><span class="keyword">void</span><span class="special">,</span><span class="identifier">Key</span><span class="special">></span> <span class="special">:</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">has_key</span> <span class="special">:</span> <span class="identifier">has_key_impl</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">Key</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">{</span>
+ <span class="identifier">BOOST_MPL_AUX_LAMBDA_SUPPORT</span><span class="special">(</span><span class="number">2</span><span class="special">,</span><span class="identifier">has_key</span><span class="special">,(</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">Key</span><span class="special">))</span>
+ <span class="special">};</span>
+<span class="special">}}}</span> <span class="comment">// namespace boost::tree_node::result_of</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.has_key.return_type_metafunction_description"></a><a class="link" href="has_key.html#tree_node.reference.has_key.return_type_metafunction_description" title="Return Type Metafunction Description">Return
+ Type Metafunction Description</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Node</span></code> be a (possibly
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified) <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> model.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> boost::mpl::true_
if, in any <code class="computeroutput"><span class="identifier">Node</span> <span class="identifier">node</span></code>,
+ the matching value exists--that is, if <code class="computeroutput"><span class="identifier">get</span><span class="special">(</span><span class="identifier">node</span><span class="special">,</span> <span class="identifier">Key</span><span class="special">())</span></code> and <code class="computeroutput"><span class="identifier">get</span><span class="special"><</span><span class="identifier">Key</span><span class="special">>(</span><span class="identifier">node</span><span class="special">)</span></code> are well-formed expressions--boost::mpl::false_
otherwise.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.has_key.definition"></a><a class="link" href="has_key.html#tree_node.reference.has_key.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/intrinsic/has_key.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="get_properties.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="get_keys.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/height_key.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/height_key.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,84 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>height_key</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="count_key.html" title="count_key">
+<link rel="next" href="position_key.html" title="position_key">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="count_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="position_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.height_key"></a><a class="link" href="height_key.html" title="height_key"><code class="computeroutput"><span class="identifier">height_key</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.height_key.synopsis"></a><a class="link" href="height_key.html#tree_node.reference.height_key.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">struct</span> <span class="identifier">height_key</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.height_key.description"></a><a class="link" href="height_key.html#tree_node.reference.height_key.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Use this type to access the <span class="bold"><strong>height</strong></span> of
+ a <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a> object, or the magnitude of the difference in ply
+ between it and its deepest descendant. The <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> type must ultimately inherit from
+ <a class="link" href="with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base</span></code></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.height_key.definition"></a><a class="link" href="height_key.html#tree_node.reference.height_key.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/key/height.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/key/height.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="count_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="position_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/in_order_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/in_order_iterator.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,819 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>in_order_iterator<Node,IsReverse></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="post_order_desc_iter.html" title="post_order_descendant_iterator<Node,IsReverse>">
+<link rel="next" href="depth_first_iterator.html" title="depth_first_iterator<Node,IsReverse>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="post_order_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="depth_first_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.in_order_iterator"></a><a class="link" href="in_order_iterator.html" title="in_order_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.in_order_iterator.synopsis"></a><a class="link" href="in_order_iterator.html#tree_node.reference.in_order_iterator.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsReverse</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">in_order_iterator</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_adaptor</span><span class="special"><</span>
+ <span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Node</span><span class="special">*</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">remove_const</span><span class="special"><</span><span class="identifier">Node</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">count_key</span>
+ <span class="special">></span>
+ <span class="comment">// TODO: Replace with indexable_traversal_tag</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">random_access_traversal_tag</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bidirectional_traversal_tag</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">enabler</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">explicit</span> <span class="identifier">in_order_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">*</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node_ptr</span> <span class="special">=</span> <span class="identifier">nullptr</span><span class="special">);</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">in_order_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">is_not_position</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">I</span><span class="special">></span>
+ <span class="identifier">in_order_iterator</span><span class="special">(</span>
+ <span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">I</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">other</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special"><</span><span class="identifier">I</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">enabler</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">enabler</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="keyword">operator</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">traversal_state</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.in_order_iterator.description"></a><a class="link" href="in_order_iterator.html#tree_node.reference.in_order_iterator.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This iterator traverses the specified root node and all its descendants
+ in in-order fashion, e.g. given the following tree representation:
+ </p>
+<p>
+</p>
+<pre class="programlisting"> <span class="identifier">A</span>
+ <span class="special">|</span>
+ <span class="identifier">C</span><span class="special">---+---</span><span class="identifier">B</span>
+ <span class="special">|</span> <span class="special">|</span>
+<span class="special">+-+-+</span> <span class="special">+-+-+</span>
+<span class="special">|</span> <span class="special">|</span> <span class="special">|</span> <span class="special">|</span>
+<span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+<p>
+ The tree nodes will be traversed forward in the following order:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">D</span> <span class="identifier">C</span> <span class="identifier">E</span> <span class="identifier">A</span> <span class="identifier">F</span> <span class="identifier">B</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+<p>
+ This iterator can also be used to traverse the tree nodes in reverse:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">G</span> <span class="identifier">B</span> <span class="identifier">F</span> <span class="identifier">A</span> <span class="identifier">E</span> <span class="identifier">C</span> <span class="identifier">D</span>
+</pre>
+<p>
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="http://www.boost.org/doc/libs/release/doc/src/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This iterator works only on <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a> models.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.in_order_iterator.definition"></a><a class="link" href="in_order_iterator.html#tree_node.reference.in_order_iterator.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/iterator/in_order.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/iterator/in_order.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.in_order_iterator.tpl_param"></a><a class="link" href="in_order_iterator.html#tree_node.reference.in_order_iterator.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept, but it can be
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IsReverse</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Configures the <code class="computeroutput"><span class="identifier">in_order_iterator</span></code>
+ to traverse tree nodes in reverse in-order fashion if equivalent
+ to boost::mpl::true_
; otherwise, the
+ nodes will be traversed in in-order fashion.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </p>
+ </td>
+<td>
+ <p>
+ boost::mpl::false_
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.in_order_iterator.model_of"></a><a class="link" href="in_order_iterator.html#tree_node.reference.in_order_iterator.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+<span class="special">*</span> <a class="link" href="../concepts/indexable_iterator.html" title="Indexable Iterator"><span class="bold"><strong>Indexable Iterator</strong></span></a> <span class="keyword">if</span> <span class="identifier">the</span> <span class="identifier">value</span> <span class="identifier">associated</span> <span class="identifier">with</span> <a class="link" href="count_key.html" title="count_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">count_key</span></code></a> <span class="identifier">exists</span>
+ <span class="keyword">for</span> <span class="error">`</span><span class="identifier">Node</span><span class="error">`</span><span class="special">;</span> Bidirectional Iterator <span class="identifier">otherwise</span>
+<span class="special">*</span> Default Constructible
+<span class="special">*</span> Copy Constructible
+<span class="special">*</span> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.in_order_iterator.public_bases"></a><a class="link" href="in_order_iterator.html#tree_node.reference.in_order_iterator.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ None.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.in_order_iterator.members"></a><a class="link" href="in_order_iterator.html#tree_node.reference.in_order_iterator.members" title="Members">Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Value type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">difference_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">iterator_category</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">in_order_iterator</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from node
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">in_order_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conversion constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
+<span class="identifier">in_order_iterator</span><span class="special">(</span><span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">in_order_iterator</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">in_order_iterator</span><span class="special">(</span><span class="identifier">in_order_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">in_order_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">in_order_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">in_order_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">in_order_iterator</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-decrement operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">in_order_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">--();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reverse Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-decrement operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">in_order_iterator</span> <span class="keyword">operator</span><span class="special">--(</span><span class="keyword">int</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Reverse Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Addition assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">in_order_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">+=(</span><span class="identifier">difference_type</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/indexable_iterator.html" title="Indexable Iterator"><span class="bold"><strong>Indexable Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Subtraction assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">in_order_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">-=(</span><span class="identifier">difference_type</span> <span class="identifier">n</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/indexable_iterator.html" title="Indexable Iterator"><span class="bold"><strong>Indexable Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">tree_node::traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.in_order_iterator.non_members"></a><a class="link" href="in_order_iterator.html#tree_node.reference.in_order_iterator.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Forward iterator creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span> <span class="identifier">make_in_order_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">in_order_iterator</span></code>
+ that will iterate forward through the specified node and its
+ descendants.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Forward iterator end creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span> <span class="identifier">make_in_order_iterator_end</span><span class="special">(</span><span class="identifier">Node</span><span class="special">*</span> <span class="identifier">node_ptr</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">in_order_iterator</span></code>
+ that points past-the-end of a forward iteration through the specified
+ node and its descendants.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse iterator creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">></span>
+ <span class="identifier">make_in_order_reverse_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">in_order_iterator</span></code>
+ that will iterate in reverse through the specified node and its
+ descendants.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse iterator end creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">in_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">></span>
+ <span class="identifier">make_in_order_reverse_iterator_end</span><span class="special">(</span><span class="identifier">Node</span><span class="special">*</span> <span class="identifier">node_ptr</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">in_order_iterator</span></code>
+ that points past-the-end of a reverse iteration through the specified
+ node and its descendants.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="post_order_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="depth_first_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/nary_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/nary_node.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,912 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>nary_node<T,Selector></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binary_node_base_gen.html" title="binary_node_base_gen<Size,AllocatorSelector>">
+<link rel="next" href="nary_node_gen.html" title="nary_node_gen<Selector>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_node_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nary_node_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.nary_node"></a><a class="link" href="nary_node.html" title="nary_node<T,Selector>"><code class="computeroutput"><span class="identifier">nary_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node.description"></a><a class="link" href="nary_node.html#tree_node.reference.nary_node.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This class template is suitable for classes or algorithms that require
+ a tree node data structure that can handle an arbitrary number of children.
+ Objects of this type can be stored by value.
+ </p>
+<p>
+ If the user data type models the Fusion Associative Sequence concept, then
+ each of the elements within can be also be obtained through key-value access
+ and set through key-value modification as defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept; more specifically, for
+ some object <code class="computeroutput"><span class="identifier">node</span></code> of type
+ <code class="computeroutput"><span class="identifier">Node</span></code> such that <code class="computeroutput"><span class="identifier">Node</span></code> is a template instantiation of
+ <code class="computeroutput"><span class="identifier">nary_node</span></code>, then for any
+ type <code class="computeroutput"><span class="identifier">Key</span></code> such that <code class="literal">fusion::has_key<Key>(get<<a class="link" href="data_key.html" title="data_key">tree_node::data_key</a>>(node))</code>
+ returns <code class="computeroutput"><span class="keyword">true</span></code>, so does <code class="literal"><a class="link" href="has_key.html" title="has_key()">tree_node::has_key</a><Key>(node)</code>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node.definition"></a><a class="link" href="nary_node.html#tree_node.reference.nary_node.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/nary_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/nary_node_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/nary_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node.tpl_param"></a><a class="link" href="nary_node.html#tree_node.reference.nary_node.tpl_param" title="Template Parameters">Template Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of the user data to be stored in an <code class="computeroutput"><span class="identifier">nary_node</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Selector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines the child container type.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">is_recursive_selector<Selector></code>
+ must return boost::mpl::true_
.
+ </p>
+ </td>
+<td>
+ <p>
+ ptr_dequeS
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node.model_of"></a><a class="link" href="nary_node.html#tree_node.reference.nary_node.model_of" title="Model of">Model of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/nary_tree_node.html" title="N-ary Tree Node"><span class="bold"><strong>N-ary Tree Node</strong></span></a>
+<span class="special">*</span> <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a> <span class="keyword">if</span> <span class="special">[^</span>container_gen<span class="special"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">nary_node</span><span class="special">>::</span><span class="identifier">type</span><span class="special">]</span>
+ <span class="identifier">returns</span> <span class="identifier">a</span> Reversible Container <span class="identifier">model</span>
+<span class="special">*</span> Default Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Default Constructible
+<span class="special">*</span> Copy Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible
+<span class="special">*</span> Assignable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Copy Constructible <span class="keyword">and</span> Movable
+<span class="special">*</span> Movable <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Movable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node.public_bases"></a><a class="link" href="nary_node.html#tree_node.reference.nary_node.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">nary_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">>,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node.members"></a><a class="link" href="nary_node.html#tree_node.reference.nary_node.members" title="Public Members">Public Members</a>
+</h4></div></div></div>
+<p>
+ Given:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">children</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Super type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">nary_node</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="identifier">super_t</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data type, allocator type, allocator reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">traits</span>
+ <span class="identifier">traits</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">pointer</span>
+ <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer-to-const type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_pointer</span>
+ <span class="identifier">const_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">iterator</span>
+ <span class="identifier">iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_iterator</span>
+ <span class="identifier">const_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">reverse_iterator</span>
+ <span class="identifier">reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_reverse_iterator</span>
+ <span class="identifier">const_reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">nary_node</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">nary_node</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">nary_node</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">nary_node</span><span class="special">(</span><span class="identifier">nary_node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">nary_node</span><span class="special">(</span>
+ <span class="identifier">nary_node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">nary_node</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">nary_node</span><span class="special">(</span><span class="identifier">nary_node</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">nary_node</span><span class="special">(</span>
+ <span class="identifier">nary_node</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">nary_node</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">nary_node</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">nary_node</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">nary_node</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">nary_node</span><span class="special">&&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_parent_ptr</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_parent_ptr</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="identifier">iterator</span> <span class="identifier">emplace</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/nary_tree_node.html" title="N-ary Tree Node"><span class="bold"><strong>N-ary
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child copy creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">child</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/nary_tree_node.html" title="N-ary Tree Node"><span class="bold"><strong>N-ary
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">begin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rend</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range size query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Leaf node query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove all children
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">clear</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node.non_members"></a><a class="link" href="nary_node.html#tree_node.reference.nary_node.non_members" title="Non-Members">Non-Members</a>
+</h4></div></div></div>
+<p>
+ Same as those defined in <a class="link" href="nary_node_base.html" title="nary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_base</span></code></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node.example"></a><a class="link" href="nary_node.html#tree_node.reference.nary_node.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ <example/nary_node.cpp>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node.test"></a><a class="link" href="nary_node.html#tree_node.reference.nary_node.test" title="Test">Test</a>
+</h4></div></div></div>
+<p>
+ <test/nary_node.cpp>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binary_node_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nary_node_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/nary_node_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/nary_node_base.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,1485 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>nary_node_base<Derived,T,Selector></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="nary_node_gen.html" title="nary_node_gen<Selector>">
+<link rel="next" href="nary_node_base_gen.html" title="nary_node_base_gen<Selector>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nary_node_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nary_node_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.nary_node_base"></a><a class="link" href="nary_node_base.html" title="nary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base.description"></a><a class="link" href="nary_node_base.html#tree_node.reference.nary_node_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="nary_node.html" title="nary_node<T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node</span></code></a>
+ class template inherits its functionality from this class template. They
+ differ only with regard to template parameters: the <a class="link" href="nary_node.html" title="nary_node<T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node</span></code></a> class template is meant
+ to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">nary_node_base</span></code>
+ is more suitable as a base class template from which <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor class templates can derive
+ via the <a class="link" href="nary_node_base_gen.html" title="nary_node_base_gen<Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_base_gen</span></code></a> <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a>.
+ </p>
+<p>
+ If the user data type models the Fusion Associative Sequence concept, then
+ each of the elements within can be also be obtained through key-value access
+ and set through key-value modification as defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept; more specifically, for
+ some object <code class="computeroutput"><span class="identifier">node</span></code> of type
+ <code class="computeroutput"><span class="identifier">Node</span></code> such that <code class="computeroutput"><span class="identifier">Node</span></code> inherits from <code class="computeroutput"><span class="identifier">nary_node_base</span></code>,
+ then for any type <code class="computeroutput"><span class="identifier">Key</span></code> such
+ that <code class="literal">fusion::has_key<Key>(get<<a class="link" href="data_key.html" title="data_key">tree_node::data_key</a>>(node))</code>
+ returns <code class="computeroutput"><span class="keyword">true</span></code>, so does <code class="literal"><a class="link" href="has_key.html" title="has_key()">tree_node::has_key</a><Key>(node)</code>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base.definition"></a><a class="link" href="nary_node_base.html#tree_node.reference.nary_node_base.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/nary_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/nary_node_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/nary_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base.tpl_param"></a><a class="link" href="nary_node_base.html#tree_node.reference.nary_node_base.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Derived</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The most descendant type that will inherit from this one.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Selector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines the child container type.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">is_recursive_selector<Selector></code>
+ must return boost::mpl::true_
.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base.model_of"></a><a class="link" href="nary_node_base.html#tree_node.reference.nary_node_base.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/nary_tree_node.html" title="N-ary Tree Node"><span class="bold"><strong>N-ary Tree Node</strong></span></a>
+<span class="special">*</span> <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a> <span class="keyword">if</span> <span class="special">[^</span>container_gen<span class="special"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">>::</span><span class="identifier">type</span><span class="special">]</span>
+ <span class="identifier">returns</span> <span class="identifier">a</span> Reversible Container <span class="identifier">model</span>
+<span class="special">*</span> <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a>
+<span class="special">*</span> Default Constructible <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T</span><span class="error">`</span> <span class="identifier">is</span> Default Constructible
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base.public_bases"></a><a class="link" href="nary_node_base.html#tree_node.reference.nary_node_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">tree_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base.members"></a><a class="link" href="nary_node_base.html#tree_node.reference.nary_node_base.members" title="Members">Members</a>
+</h4></div></div></div>
+<p>
+ Given:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container_gen</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">children</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Super type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">tree_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">></span>
+ <span class="identifier">super_t</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data type, allocator type, allocator reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">traits</span>
+<span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">T</span> <span class="identifier">data_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">children</span><span class="special">::</span><span class="identifier">allocator_type</span> <span class="identifier">allocator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">allocator</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">allocator_reference</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">pointer</span>
+ <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer-to-const type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_pointer</span>
+ <span class="identifier">const_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">children</span><span class="special">::</span><span class="identifier">iterator</span>
+ <span class="identifier">iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">children</span><span class="special">::</span><span class="identifier">const_iterator</span>
+ <span class="identifier">const_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="comment">// typename children::reverse_iterator</span>
+ <span class="identifier">reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable reverse iterator type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="comment">// typename children::const_reverse_iterator</span>
+ <span class="identifier">const_reverse_iterator</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">nary_node_base</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">nary_node_base</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">nary_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">nary_node_base</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">nary_node_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">nary_node_base</span></code>
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">nary_node_base</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">nary_node_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">nary_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy or move notification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">on_post_copy_or_move</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy assignment
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">copy_assign</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move assignment
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">Derived</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">Derived</span><span class="special">&&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ User data member read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">FusionKey</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lazy_enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">,</span><span class="identifier">FusionKey</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">nary_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ User data member access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">FusionKey</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lazy_enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">FusionKey</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">nary_node_base</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_parent_ptr</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Parent access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_parent_ptr</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="identifier">iterator</span> <span class="identifier">emplace</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/nary_tree_node.html" title="N-ary Tree Node"><span class="bold"><strong>N-ary
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child copy creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">insert</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">child</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/nary_tree_node.html" title="N-ary Tree Node"><span class="bold"><strong>N-ary
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">begin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="identifier">cend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_iterator</span> <span class="identifier">end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="identifier">end</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range begin access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rbegin</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_reverse_iterator</span> <span class="identifier">crend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+<span class="identifier">const_reverse_iterator</span> <span class="identifier">rend</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children reverse range past-the-end access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reverse_iterator</span> <span class="identifier">rend</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/reversible_tree_node.html" title="Reversible Tree Node"><span class="bold"><strong>Reversible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range size query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">size_type</span> <span class="identifier">size</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Leaf node query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="identifier">empty</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove all children
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">clear</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_derived</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_derived</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base
+ Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base.non_members"></a><a class="link" href="nary_node_base.html#tree_node.reference.nary_node_base.non_members" title="Non-Members">Non-Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ User data read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</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">Selector</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">nary_node_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">T</span>
+ <span class="special">,</span> <span class="identifier">Selector</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</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">Selector</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">data_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">nary_node_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">T</span>
+ <span class="special">,</span> <span class="identifier">Selector</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ user data access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</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">Selector</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">>&</span> <span class="identifier">node</span><span class="special">,</span> <span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</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">Selector</span><span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">data_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">nary_node_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">T</span>
+ <span class="special">,</span> <span class="identifier">Selector</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">>&</span> <span class="identifier">node</span><span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ User data modification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</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">Selector</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">V</span><span class="special">></span>
+ <span class="keyword">void</span>
+ <span class="identifier">put</span><span class="special">(</span>
+ <span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">>&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">data_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">,</span> <span class="identifier">V</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">value</span>
+ <span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">FusionKey</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lazy_enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">T</span> <span class="keyword">const</span><span class="special">,</span><span class="identifier">FusionKey</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">FusionKey</span><span class="special">></span>
+<span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lazy_enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">at_key</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">FusionKey</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Key-value modification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</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">Selector</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">FusionKey</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">V</span>
+ <span class="special">></span>
+ <span class="keyword">void</span>
+ <span class="identifier">put</span><span class="special">(</span>
+ <span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">>&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">,</span> <span class="identifier">V</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">value</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_sequence</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">fusion</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">is_associative</span><span class="special"><</span><span class="identifier">T</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">has_key</span><span class="special"><</span>
+ <span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">FusionKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">()</span>
+ <span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nary_node_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nary_node_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/nary_node_base_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/nary_node_base_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,177 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>nary_node_base_gen<Selector></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="nary_node_base.html" title="nary_node_base<Derived,T,Selector>">
+<link rel="next" href="associative_node.html" title="associative_node<Key,Data,Selector>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nary_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="associative_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.nary_node_base_gen"></a><a class="link" href="nary_node_base_gen.html" title="nary_node_base_gen<Selector>"><code class="computeroutput"><span class="identifier">nary_node_base_gen</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base_gen.synopsis"></a><a class="link" href="nary_node_base_gen.html#tree_node.reference.nary_node_base_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">nary_node_base_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">nary_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">nary_node_base_gen</span><span class="special"><></span> <span class="identifier">nary_node_base_default_gen</span><span class="special">;</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base_gen.description"></a><a class="link" href="nary_node_base_gen.html#tree_node.reference.nary_node_base_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base_gen.definition"></a><a class="link" href="nary_node_base_gen.html#tree_node.reference.nary_node_base_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/nary_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base_gen.model_of"></a><a class="link" href="nary_node_base_gen.html#tree_node.reference.nary_node_base_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base_gen.tpl_param"></a><a class="link" href="nary_node_base_gen.html#tree_node.reference.nary_node_base_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Selector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines the child container type of <a class="link" href="nary_node_base.html" title="nary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_base</span></code></a>.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">is_recursive_selector<Selector></code>
+ must return boost::mpl::true_
.
+ </p>
+ </td>
+<td>
+ <p>
+ ptr_dequeS
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base_gen.expressions"></a><a class="link" href="nary_node_base_gen.html#tree_node.reference.nary_node_base_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Derived</span></code> be the type
+ that will inherit from <a class="link" href="nary_node_base.html" title="nary_node_base<Derived,T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node_base</span></code></a>. Let <code class="computeroutput"><span class="identifier">T</span></code> be the user data type. Let <code class="computeroutput"><span class="identifier">Selector</span></code> be a valid <code class="computeroutput"><span class="identifier">nary_node_gen</span></code>
+ template argument.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span><span class="identifier">nary_node_base_gen</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">>,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="nary_node_base.html" title="nary_node_base<Derived,T,Selector>">tree_node::nary_node_base</a><Derived,T,Selector></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_base_gen.complexity"></a><a class="link" href="nary_node_base_gen.html#tree_node.reference.nary_node_base_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nary_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="associative_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/nary_node_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/nary_node_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,177 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>nary_node_gen<Selector></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="nary_node.html" title="nary_node<T,Selector>">
+<link rel="next" href="nary_node_base.html" title="nary_node_base<Derived,T,Selector>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nary_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nary_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.nary_node_gen"></a><a class="link" href="nary_node_gen.html" title="nary_node_gen<Selector>"><code class="computeroutput"><span class="identifier">nary_node_gen</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_gen.synopsis"></a><a class="link" href="nary_node_gen.html#tree_node.reference.nary_node_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Selector</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">ptr_dequeS</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">nary_node_gen</span>
+ <span class="special">{</span>
+ <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">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">nary_node</span><span class="special"><</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+
+ <span class="keyword">typedef</span> <span class="identifier">nary_node_gen</span><span class="special"><></span> <span class="identifier">nary_node_default_gen</span><span class="special">;</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_gen.description"></a><a class="link" href="nary_node_gen.html#tree_node.reference.nary_node_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_gen.definition"></a><a class="link" href="nary_node_gen.html#tree_node.reference.nary_node_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/nary_node.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_gen.model_of"></a><a class="link" href="nary_node_gen.html#tree_node.reference.nary_node_gen.model_of" title="Model of">Model of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_gen.tpl_param"></a><a class="link" href="nary_node_gen.html#tree_node.reference.nary_node_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Selector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines the child container type of <a class="link" href="nary_node.html" title="nary_node<T,Selector>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">nary_node</span></code></a>.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">is_recursive_selector<Selector></code>
+ must return boost::mpl::true_
.
+ </p>
+ </td>
+<td>
+ <p>
+ ptr_dequeS
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_gen.expressions"></a><a class="link" href="nary_node_gen.html#tree_node.reference.nary_node_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">T</span></code> be the user data
+ type. Let <code class="computeroutput"><span class="identifier">Selector</span></code> be a
+ valid <code class="computeroutput"><span class="identifier">nary_node_gen</span></code> template
+ argument.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap1<span class="special"><</span><span class="identifier">nary_node_gen</span><span class="special"><</span><span class="identifier">Selector</span><span class="special">>,</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="nary_node.html" title="nary_node<T,Selector>">tree_node::nary_node</a><T,Selector></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.nary_node_gen.complexity"></a><a class="link" href="nary_node_gen.html#tree_node.reference.nary_node_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="nary_node.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="nary_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/position_key.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/position_key.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,83 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>position_key</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="height_key.html" title="height_key">
+<link rel="next" href="red_black_flag_key.html" title="red_flag_key and black_flag_key">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="height_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="red_black_flag_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.position_key"></a><a class="link" href="position_key.html" title="position_key"><code class="computeroutput"><span class="identifier">position_key</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.position_key.synopsis"></a><a class="link" href="position_key.html#tree_node.reference.position_key.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">struct</span> <span class="identifier">position_key</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.position_key.description"></a><a class="link" href="position_key.html#tree_node.reference.position_key.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Use this type to access the iterator that points to a <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> object in its parent's collection
+ of children. The <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> type must ultimately inherit from
+ <a class="link" href="with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base</span></code></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.position_key.definition"></a><a class="link" href="position_key.html#tree_node.reference.position_key.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/key/position.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/key/position.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="height_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="red_black_flag_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/post_order_desc_iter.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/post_order_desc_iter.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,675 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>post_order_descendant_iterator<Node,IsReverse></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="post_order_iterator.html" title="post_order_iterator<Node,IsReverse>">
+<link rel="next" href="in_order_iterator.html" title="in_order_iterator<Node,IsReverse>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="post_order_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="in_order_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.post_order_desc_iter"></a><a class="link" href="post_order_desc_iter.html" title="post_order_descendant_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">post_order_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_desc_iter.synopsis"></a><a class="link" href="post_order_desc_iter.html#tree_node.reference.post_order_desc_iter.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsReverse</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">post_order_descendant_iterator</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_adaptor</span><span class="special"><</span>
+ <span class="identifier">post_order_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="identifier">IsReverse</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_const</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_reverse_iterator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">reverse_iterator</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_const</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span>
+ <span class="special">></span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_traversal_tag</span>
+ <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">enabler</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">post_order_descendant_iterator</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">post_order_descendant_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">I</span><span class="special">></span>
+ <span class="identifier">post_order_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">post_order_descendant_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">I</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">other</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special"><</span><span class="identifier">I</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">enabler</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">enabler</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="keyword">operator</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">traversal_state</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_desc_iter.description"></a><a class="link" href="post_order_desc_iter.html#tree_node.reference.post_order_desc_iter.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This iterator traverses the descendants of the specified root node in either
+ post-order or reverse pre-order fashion, e.g. given the following tree
+ representation:
+ </p>
+<p>
+</p>
+<pre class="programlisting"> <span class="identifier">A</span>
+ <span class="special">|</span>
+ <span class="identifier">C</span><span class="special">---+---</span><span class="identifier">B</span>
+ <span class="special">|</span> <span class="special">|</span>
+<span class="special">+-+-+</span> <span class="special">+-+-+</span>
+<span class="special">|</span> <span class="special">|</span> <span class="special">|</span> <span class="special">|</span>
+<span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+<p>
+ This iterator will traverse the tree nodes in the following order:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">C</span> <span class="identifier">F</span> <span class="identifier">G</span> <span class="identifier">B</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_desc_iter.definition"></a><a class="link" href="post_order_desc_iter.html#tree_node.reference.post_order_desc_iter.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/iterator/post_order_descendant.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/iterator/post_order_descendant.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_desc_iter.tpl_param"></a><a class="link" href="post_order_desc_iter.html#tree_node.reference.post_order_desc_iter.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept, but it can be
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IsReverse</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Configures the <code class="computeroutput"><span class="identifier">post_order_descendant_iterator</span></code>
+ to traverse tree nodes in reverse pre-order fashion if equivalent
+ to boost::mpl::true_
; otherwise, the
+ nodes will be traversed in post-order fashion.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </p>
+ </td>
+<td>
+ <p>
+ boost::mpl::false_
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_desc_iter.model_of"></a><a class="link" href="post_order_desc_iter.html#tree_node.reference.post_order_desc_iter.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+<span class="special">*</span> Default Constructible
+<span class="special">*</span> Copy Constructible
+<span class="special">*</span> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_desc_iter.public_bases"></a><a class="link" href="post_order_desc_iter.html#tree_node.reference.post_order_desc_iter.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ None.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_desc_iter.members"></a><a class="link" href="post_order_desc_iter.html#tree_node.reference.post_order_desc_iter.members" title="Members">Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Value type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">difference_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">iterator_category</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">post_order_descendant_iterator</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from node
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">post_order_descendant_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conversion constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
+<span class="identifier">post_order_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">post_order_descendant_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">post_order_iterator</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">post_order_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">post_order_descendant_iterator</span> <span class="keyword">const</span><span class="special">&</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">post_order_descendant_iterator</span><span class="special">&</span>
+ <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">post_order_descendant_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">post_order_descendant_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">post_order_descendant_iterator</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">tree_node::traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_desc_iter.non_members"></a><a class="link" href="post_order_desc_iter.html#tree_node.reference.post_order_desc_iter.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Iterator creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">post_order_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">make_post_order_descendant_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">post_order_descendant_iterator</span></code>
+ that will iterate through the descendants of the specified node
+ in post-order fashion.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iteration
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">post_order_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">></span>
+ <span class="identifier">make_pre_order_descendant_reverse_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">post_order_descendant_iterator</span></code>
+ that will iterate through the descendants of the specified node
+ in reverse pre-order fashion.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="post_order_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="in_order_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/post_order_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/post_order_iterator.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,657 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>post_order_iterator<Node,IsReverse></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="pre_order_desc_iter.html" title="pre_order_descendant_iterator<Node,IsReverse>">
+<link rel="next" href="post_order_desc_iter.html" title="post_order_descendant_iterator<Node,IsReverse>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="pre_order_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="post_order_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.post_order_iterator"></a><a class="link" href="post_order_iterator.html" title="post_order_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">post_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_iterator.synopsis"></a><a class="link" href="post_order_iterator.html#tree_node.reference.post_order_iterator.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsReverse</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">post_order_iterator</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_adaptor</span><span class="special"><</span>
+ <span class="identifier">post_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Node</span><span class="special">*</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_traversal_tag</span>
+ <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">enabler</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">post_order_iterator</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">post_order_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">I</span><span class="special">></span>
+ <span class="identifier">post_order_iterator</span><span class="special">(</span>
+ <span class="identifier">post_order_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">I</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">other</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special"><</span><span class="identifier">I</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">enabler</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">enabler</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="keyword">operator</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">traversal_state</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_iterator.description"></a><a class="link" href="post_order_iterator.html#tree_node.reference.post_order_iterator.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This iterator traverses the specified root node and all its descendants
+ in either post-order or reverse pre-order fashion, e.g. given the following
+ tree representation:
+ </p>
+<p>
+</p>
+<pre class="programlisting"> <span class="identifier">A</span>
+ <span class="special">|</span>
+ <span class="identifier">C</span><span class="special">---+---</span><span class="identifier">B</span>
+ <span class="special">|</span> <span class="special">|</span>
+<span class="special">+-+-+</span> <span class="special">+-+-+</span>
+<span class="special">|</span> <span class="special">|</span> <span class="special">|</span> <span class="special">|</span>
+<span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+<p>
+ This iterator will traverse the tree nodes in the following order:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">C</span> <span class="identifier">F</span> <span class="identifier">G</span> <span class="identifier">B</span> <span class="identifier">A</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_iterator.definition"></a><a class="link" href="post_order_iterator.html#tree_node.reference.post_order_iterator.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/iterator/post_order.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/iterator/post_order.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_iterator.tpl_param"></a><a class="link" href="post_order_iterator.html#tree_node.reference.post_order_iterator.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept, but it can be
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IsReverse</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Configures the <code class="computeroutput"><span class="identifier">post_order_iterator</span></code>
+ to traverse tree nodes in reverse pre-order fashion if equivalent
+ to boost::mpl::true_
; otherwise, the
+ nodes will be traversed in post-order fashion.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </p>
+ </td>
+<td>
+ <p>
+ boost::mpl::false_
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_iterator.model_of"></a><a class="link" href="post_order_iterator.html#tree_node.reference.post_order_iterator.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+<span class="special">*</span> Default Constructible
+<span class="special">*</span> Copy Constructible
+<span class="special">*</span> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_iterator.public_bases"></a><a class="link" href="post_order_iterator.html#tree_node.reference.post_order_iterator.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ None.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_iterator.members"></a><a class="link" href="post_order_iterator.html#tree_node.reference.post_order_iterator.members" title="Members">Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Value type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">difference_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">iterator_category</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">post_order_iterator</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from node
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">explicit</span> <span class="identifier">post_order_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conversion constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
+<span class="identifier">post_order_iterator</span><span class="special">(</span><span class="identifier">post_order_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">post_order_iterator</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">post_order_iterator</span><span class="special">(</span><span class="identifier">post_order_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">post_order_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">post_order_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">post_order_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">post_order_iterator</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">tree_node::traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.post_order_iterator.non_members"></a><a class="link" href="post_order_iterator.html#tree_node.reference.post_order_iterator.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Iterator creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">post_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span> <span class="identifier">make_post_order_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">post_order_iterator</span></code>
+ that will iterate through the specified node and its descendants
+ in post-order fashion.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iteration
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">post_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">></span>
+ <span class="identifier">make_pre_order_reverse_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">post_order_iterator</span></code>
+ that will iterate through the specified node and its descendants
+ in reverse pre-order fashion.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="pre_order_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="post_order_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/pre_order_desc_iter.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/pre_order_desc_iter.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,675 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>pre_order_descendant_iterator<Node,IsReverse></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="pre_order_iterator.html" title="pre_order_iterator<Node,IsReverse>">
+<link rel="next" href="post_order_iterator.html" title="post_order_iterator<Node,IsReverse>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="pre_order_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="post_order_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.pre_order_desc_iter"></a><a class="link" href="pre_order_desc_iter.html" title="pre_order_descendant_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">pre_order_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_desc_iter.synopsis"></a><a class="link" href="pre_order_desc_iter.html#tree_node.reference.pre_order_desc_iter.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsReverse</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">pre_order_descendant_iterator</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_adaptor</span><span class="special"><</span>
+ <span class="identifier">pre_order_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="identifier">IsReverse</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_const</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_reverse_iterator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">reverse_iterator</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_const</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_iterator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">iterator</span>
+ <span class="special">></span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_traversal_tag</span>
+ <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">enabler</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">pre_order_descendant_iterator</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">pre_order_descendant_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">I</span><span class="special">></span>
+ <span class="identifier">pre_order_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">pre_order_descendant_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">I</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">other</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special"><</span><span class="identifier">I</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">enabler</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">enabler</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="keyword">operator</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">traversal_state</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_desc_iter.description"></a><a class="link" href="pre_order_desc_iter.html#tree_node.reference.pre_order_desc_iter.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This iterator traverses the descendants of the specified root node in either
+ pre-order or reverse post-order fashion, e.g. given the following tree
+ representation:
+ </p>
+<p>
+</p>
+<pre class="programlisting"> <span class="identifier">A</span>
+ <span class="special">|</span>
+ <span class="identifier">C</span><span class="special">---+---</span><span class="identifier">B</span>
+ <span class="special">|</span> <span class="special">|</span>
+<span class="special">+-+-+</span> <span class="special">+-+-+</span>
+<span class="special">|</span> <span class="special">|</span> <span class="special">|</span> <span class="special">|</span>
+<span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+<p>
+ This iterator will traverse the tree nodes in the following order:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">C</span> <span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">B</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_desc_iter.definition"></a><a class="link" href="pre_order_desc_iter.html#tree_node.reference.pre_order_desc_iter.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/iterator/pre_order_descendant.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/iterator/pre_order_descendant.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_desc_iter.tpl_param"></a><a class="link" href="pre_order_desc_iter.html#tree_node.reference.pre_order_desc_iter.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept, but it can be
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IsReverse</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Configures the <code class="computeroutput"><span class="identifier">pre_order_descendant_iterator</span></code>
+ to traverse tree nodes in reverse post-order fashion if equivalent
+ to boost::mpl::true_
; otherwise, the
+ nodes will be traversed in pre-order fashion.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </p>
+ </td>
+<td>
+ <p>
+ boost::mpl::false_
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_desc_iter.model_of"></a><a class="link" href="pre_order_desc_iter.html#tree_node.reference.pre_order_desc_iter.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+<span class="special">*</span> Default Constructible
+<span class="special">*</span> Copy Constructible
+<span class="special">*</span> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_desc_iter.public_bases"></a><a class="link" href="pre_order_desc_iter.html#tree_node.reference.pre_order_desc_iter.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ None.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_desc_iter.members"></a><a class="link" href="pre_order_desc_iter.html#tree_node.reference.pre_order_desc_iter.members" title="Members">Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Value type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">difference_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">iterator_category</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pre_order_descendant_iterator</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from node
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">explicit</span> <span class="identifier">pre_order_descendant_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator"><span class="bold"><strong>Tree Node Descendant Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conversion constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
+<span class="identifier">pre_order_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">pre_order_descendant_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pre_order_descendant_iterator</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pre_order_descendant_iterator</span><span class="special">(</span>
+ <span class="identifier">pre_order_descendant_iterator</span> <span class="keyword">const</span><span class="special">&</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pre_order_descendant_iterator</span><span class="special">&</span>
+ <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">pre_order_descendant_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pre_order_descendant_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pre_order_descendant_iterator</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">tree_node::traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_desc_iter.non_members"></a><a class="link" href="pre_order_desc_iter.html#tree_node.reference.pre_order_desc_iter.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Iterator creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">pre_order_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">make_pre_order_descendant_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">pre_order_descendant_iterator</span></code>
+ that will iterate through the descendants of the specified node
+ in pre-order fashion.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iteration
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">pre_order_descendant_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">></span>
+ <span class="identifier">make_post_order_descendant_reverse_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">pre_order_descendant_iterator</span></code>
+ that will iterate through the descendants of the specified node
+ in reverse post-order fashion.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="pre_order_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="post_order_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/pre_order_iterator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/pre_order_iterator.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,657 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>pre_order_iterator<Node,IsReverse></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="breadth_first_desc_iter.html" title="breadth_first_descendant_iterator<Node>">
+<link rel="next" href="pre_order_desc_iter.html" title="pre_order_descendant_iterator<Node,IsReverse>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="breadth_first_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pre_order_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.pre_order_iterator"></a><a class="link" href="pre_order_iterator.html" title="pre_order_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">pre_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_iterator.synopsis"></a><a class="link" href="pre_order_iterator.html#tree_node.reference.pre_order_iterator.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IsReverse</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">pre_order_iterator</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">iterator_adaptor</span><span class="special"><</span>
+ <span class="identifier">pre_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Node</span><span class="special">*</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">use_default</span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_traversal_tag</span>
+ <span class="special">></span>
+ <span class="special">{</span>
+ <span class="keyword">struct</span> <span class="identifier">enabler</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">pre_order_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">I</span><span class="special">></span>
+ <span class="identifier">pre_order_iterator</span><span class="special">(</span>
+ <span class="identifier">pre_order_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">I</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">other</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_convertible</span><span class="special"><</span><span class="identifier">N</span><span class="special">,</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">equal_to</span><span class="special"><</span><span class="identifier">I</span><span class="special">,</span><span class="identifier">IsReverse</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">,</span> <span class="identifier">enabler</span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="special">=</span> <span class="identifier">enabler</span><span class="special">()</span>
+ <span class="special">);</span>
+
+ <span class="keyword">operator</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">traversal_state</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_iterator.description"></a><a class="link" href="pre_order_iterator.html#tree_node.reference.pre_order_iterator.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This iterator traverses the specified root node and all its descendants
+ in either pre-order or reverse post-order fashion, e.g. given the following
+ tree representation:
+ </p>
+<p>
+</p>
+<pre class="programlisting"> <span class="identifier">A</span>
+ <span class="special">|</span>
+ <span class="identifier">C</span><span class="special">---+---</span><span class="identifier">B</span>
+ <span class="special">|</span> <span class="special">|</span>
+<span class="special">+-+-+</span> <span class="special">+-+-+</span>
+<span class="special">|</span> <span class="special">|</span> <span class="special">|</span> <span class="special">|</span>
+<span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+<p>
+ This iterator will traverse the tree nodes in the following order:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">A</span> <span class="identifier">C</span> <span class="identifier">D</span> <span class="identifier">E</span> <span class="identifier">B</span> <span class="identifier">F</span> <span class="identifier">G</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_iterator.definition"></a><a class="link" href="pre_order_iterator.html#tree_node.reference.pre_order_iterator.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/iterator/pre_order.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/iterator/pre_order.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_iterator.tpl_param"></a><a class="link" href="pre_order_iterator.html#tree_node.reference.pre_order_iterator.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept, but it can be
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IsReverse</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Configures the <code class="computeroutput"><span class="identifier">pre_order_iterator</span></code>
+ to traverse tree nodes in reverse post-order fashion if equivalent
+ to boost::mpl::true_
; otherwise, the
+ nodes will be traversed in pre-order fashion.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </p>
+ </td>
+<td>
+ <p>
+ boost::mpl::false_
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_iterator.model_of"></a><a class="link" href="pre_order_iterator.html#tree_node.reference.pre_order_iterator.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+<span class="special">*</span> Default Constructible
+<span class="special">*</span> Copy Constructible
+<span class="special">*</span> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_iterator.public_bases"></a><a class="link" href="pre_order_iterator.html#tree_node.reference.pre_order_iterator.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ None.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_iterator.members"></a><a class="link" href="pre_order_iterator.html#tree_node.reference.pre_order_iterator.members" title="Members">Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Value type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">value_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">reference</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">difference_type</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="special">...</span> <span class="identifier">iterator_category</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pre_order_iterator</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from node
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">explicit</span> <span class="identifier">pre_order_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/full_tree_node_iterator.html" title="Full Tree Node Iterator"><span class="bold"><strong>Full Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Conversion constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">N</span><span class="special">></span>
+<span class="identifier">pre_order_iterator</span><span class="special">(</span><span class="identifier">pre_order_iterator</span><span class="special"><</span><span class="identifier">N</span><span class="special">></span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pre_order_iterator</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pre_order_iterator</span><span class="special">(</span><span class="identifier">pre_order_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pre_order_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">pre_order_iterator</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">->()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pre_order_iterator</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">++();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pre_order_iterator</span> <span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">tree_node::traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.pre_order_iterator.non_members"></a><a class="link" href="pre_order_iterator.html#tree_node.reference.pre_order_iterator.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Iterator creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">pre_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span> <span class="identifier">make_pre_order_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">pre_order_iterator</span></code>
+ that will iterate through the specified node and its descendants
+ in pre-order fashion.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse iterator creation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="identifier">pre_order_iterator</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">></span>
+ <span class="identifier">make_post_order_reverse_iterator</span><span class="special">(</span><span class="identifier">Node</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs and returns a <code class="computeroutput"><span class="identifier">pre_order_iterator</span></code>
+ that will iterate through the specified node and its descendants
+ in reverse post-order fashion.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="breadth_first_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="pre_order_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/red_black_balancer.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/red_black_balancer.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,88 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>red_black_balancer</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="binode_multimap.html" title="binode_multimap<NodeGenerator,Key,Mapped,CompareSelector,Balancer>">
+<link rel="next" href="avl_balancer.html" title="avl_balancer">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binode_multimap.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="avl_balancer.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.red_black_balancer"></a><a class="link" href="red_black_balancer.html" title="red_black_balancer"><code class="computeroutput"><span class="identifier">red_black_balancer</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.red_black_balancer.synopsis"></a><a class="link" href="red_black_balancer.html#tree_node.reference.red_black_balancer.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">struct</span> <span class="identifier">red_black_balancer</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="identifier">NodePointer</span> <span class="identifier">post_insert</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">choose_predecessor</span><span class="special">(</span><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="keyword">bool</span> <span class="identifier">pre_erase</span><span class="special">(</span><span class="identifier">Node</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="identifier">NodePointer</span> <span class="identifier">post_erase_left</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">></span>
+ <span class="keyword">static</span> <span class="identifier">NodePointer</span> <span class="identifier">post_erase_right</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="identifier">node_ptr</span><span class="special">);</span>
+
+ <span class="special">};</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.red_black_balancer.description"></a><a class="link" href="red_black_balancer.html#tree_node.reference.red_black_balancer.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.red_black_balancer.definition"></a><a class="link" href="red_black_balancer.html#tree_node.reference.red_black_balancer.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/balancer/red_black.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="binode_multimap.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="avl_balancer.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/red_black_flag_key.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/red_black_flag_key.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,86 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>red_flag_key and black_flag_key</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="position_key.html" title="position_key">
+<link rel="next" href="advance_binary.html" title="advance_binary()">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="position_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="advance_binary.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.red_black_flag_key"></a><a class="link" href="red_black_flag_key.html" title="red_flag_key and black_flag_key"><code class="computeroutput"><span class="identifier">red_flag_key</span></code> and <code class="computeroutput"><span class="identifier">black_flag_key</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.red_black_flag_key.synopsis"></a><a class="link" href="red_black_flag_key.html#tree_node.reference.red_black_flag_key.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">struct</span> <span class="identifier">red_flag_key</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+
+ <span class="keyword">struct</span> <span class="identifier">black_flag_key</span>
+ <span class="special">{</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.red_black_flag_key.description"></a><a class="link" href="red_black_flag_key.html#tree_node.reference.red_black_flag_key.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Use these types to query the red-or-black flag stored in <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> objects of types ultimately inheriting
+ from <a class="link" href="with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base</span></code></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.red_black_flag_key.definition"></a><a class="link" href="red_black_flag_key.html#tree_node.reference.red_black_flag_key.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/key/red_black_flag.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/key/red_black_flag.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="position_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="advance_binary.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/traversal_state.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/traversal_state.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,95 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>traversal_state</title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="depth_first_desc_iter.html" title="depth_first_descendant_iterator<Node,IsReverse>">
+<link rel="next" href="data_key.html" title="data_key">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="depth_first_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="data_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.traversal_state"></a><a class="link" href="traversal_state.html" title="traversal_state"><code class="computeroutput"><span class="identifier">traversal_state</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.traversal_state.synopsis"></a><a class="link" href="traversal_state.html#tree_node.reference.traversal_state.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">enum</span> <span class="identifier">traversal_state</span>
+ <span class="special">{</span>
+ <span class="identifier">no_traversal</span>
+ <span class="special">,</span> <span class="identifier">pre_order_traversal</span>
+ <span class="special">,</span> <span class="identifier">post_order_traversal</span>
+ <span class="special">,</span> <span class="identifier">breadth_first_traversal</span>
+ <span class="special">,</span> <span class="identifier">in_order_traversal</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.traversal_state.description"></a><a class="link" href="traversal_state.html#tree_node.reference.traversal_state.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This enumeration type is the return type of the dereferenceability expression
+ defined by each iterator type that this library provides. The <code class="computeroutput"><span class="identifier">no_traversal</span></code> value corresponds to <code class="computeroutput"><span class="keyword">false</span></code> in a boolean context, enabling the
+ iterator types to fulfill their runtime requirements for dereferenceability.
+ The <code class="computeroutput"><span class="identifier">pre_order_traversal</span></code>
+ and <code class="computeroutput"><span class="identifier">post_order_traversal</span></code>
+ values are significant because the <a class="link" href="depth_first_iterator.html" title="depth_first_iterator<Node,IsReverse>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">depth_first_iterator</span></code></a> traverses
+ each node twice, so algorithms must be able to distinguish which state
+ the iterator is in when it traverses a tree node. The <code class="computeroutput"><span class="identifier">breadth_first_traversal</span></code>
+ and <code class="computeroutput"><span class="identifier">in_order_traversal</span></code>
+ values are defined for completeness.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.traversal_state.definition"></a><a class="link" href="traversal_state.html#tree_node.reference.traversal_state.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/traversal_state.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/traversal_state.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="depth_first_desc_iter.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="data_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/tree_node_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/tree_node_base.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,754 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>tree_node_base<Derived></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_rb_flag_base_gen.html" title="with_red_black_flag_gen<BaseGenerator>">
+<link rel="next" href="breadth_first_iterator.html" title="breadth_first_iterator<Node>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_rb_flag_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="breadth_first_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.tree_node_base"></a><a class="link" href="tree_node_base.html" title="tree_node_base<Derived>"><code class="computeroutput"><span class="identifier">tree_node_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.tree_node_base.description"></a><a class="link" href="tree_node_base.html#tree_node.reference.tree_node_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ All models of the <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> concept that this library
+ provides either inherit from this type or declare it as a <code class="computeroutput"><span class="keyword">friend</span> <span class="keyword">struct</span></code>
+ if they override any of its implementation methods.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.tree_node_base.definition"></a><a class="link" href="tree_node_base.html#tree_node.reference.tree_node_base.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/base.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.tree_node_base.tpl_param"></a><a class="link" href="tree_node_base.html#tree_node.reference.tree_node_base.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Derived</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The most descendant type that will inherit from this one.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.tree_node_base.public_bases"></a><a class="link" href="tree_node_base.html#tree_node.reference.tree_node_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ None.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.tree_node_base.members"></a><a class="link" href="tree_node_base.html#tree_node.reference.tree_node_base.members" title="Members">Members</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">Derived</span><span class="special">*</span> <span class="identifier">pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer-to-const type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">const_pointer</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_pointer</span> <span class="identifier">get_derived</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns <code class="computeroutput"><span class="keyword">this</span></code> as
+ the derived type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">pointer</span> <span class="identifier">get_derived</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns <code class="computeroutput"><span class="keyword">this</span></code> as
+ the derived type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement construction notification implementation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">on_post_emplacement_construct</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ TODO.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data modified notification implementation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">on_post_modify_value_impl</span><span class="special">(</span><span class="identifier">Key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should override this method if they keep track
+ of modifications to the value that the invoking node associates
+ with the specified key. Does nothing by default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data modified notification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">on_post_modify_value</span><span class="special">(</span><span class="identifier">Key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should invoke this method after modifying the
+ value that the invoking node associates with the specified key.
+ Calls the corresponding implementation method.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data propagated notification implementation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">on_post_propagate_value_impl</span><span class="special">(</span><span class="identifier">Key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should override this method if they keep track
+ of modifications to values that each node in the chain of ancestors
+ associates with the specified key. Does nothing by default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data propagated notification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">on_post_propagate_value</span><span class="special">(</span><span class="identifier">Key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should invoke this method after propagating the
+ value that the invoking node associates with the specified key
+ up the chain of ancestors. Calls the corresponding implementation
+ method.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data propagated once notification implementation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">on_post_propagate_value_once_impl</span><span class="special">(</span><span class="identifier">Key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should override this method if they keep track
+ of modifications to the values that the invoking node and its
+ parent associate with the specified key. Does nothing by default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data propagated once notification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">on_post_propagate_value_once</span><span class="special">(</span><span class="identifier">Key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should invoke this method after modifying the
+ values that the invoking node and its parent associate with the
+ specified key. Calls the corresponding implementation method.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Insertion notification implementation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">on_post_inserted_impl</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">true_</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should override this method if they store iterators
+ that will remain valid even if any of the siblings of the pointees
+ are removed. The overriding implementation should simply store
+ the specified position. Does nothing by default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Insertion notification implementation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">on_post_inserted_impl</span><span class="special">(</span><span class="identifier">Iterator</span> <span class="identifier">position</span><span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">false_</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should override this method if they store iterators
+ that may become invalidated if any of the siblings of the pointees
+ are removed. The overriding implementation should validate the
+ positions of the siblings as well as its own. Does nothing by
+ default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Insertion notification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BooleanIntegralConstant</span><span class="special">></span>
+<span class="keyword">void</span>
+ <span class="identifier">on_post_inserted</span><span class="special">(</span>
+ <span class="identifier">Iterator</span> <span class="identifier">position</span>
+ <span class="special">,</span> <span class="identifier">BooleanIntegralConstant</span> <span class="identifier">invalidates_sibling_positions</span>
+ <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should invoke this method on their child nodes
+ after they are stored, or on the siblings of those child nodes
+ after they are removed. Calls the corresponding implementation
+ method.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Erasure notification implementation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">on_post_erase_impl</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should override this method after one or more
+ of the tree node's children are removed. Does nothing by default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Erasure notification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">on_post_erase</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should invoke this method after one or more of
+ the tree node's children are removed. Calls the corresponding
+ implementation method.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Clear notification implementation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">on_post_clear_impl</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should override this method after all of the tree
+ node's children are removed. Does nothing by default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Clear notification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">on_post_clear</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should invoke this method after all of the tree
+ node's children are removed. Calls the corresponding implementation
+ method.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left rotation notification implementation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">on_post_rotate_left_impl</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should override this method after the tree node
+ is rotate left. Does nothing by default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left rotation notification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">on_post_rotate_left</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should invoke this method after the tree node
+ is rotated left. Calls the corresponding implementation method.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right rotation notification implementation
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">on_post_rotate_right_impl</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should override this method after the tree node
+ is rotate right. Does nothing by default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right rotation notification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">on_post_rotate_right</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Subclass types should invoke this method after the tree node
+ is rotated right. Calls the corresponding implementation method.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_rb_flag_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="breadth_first_iterator.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/value_at_key.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/value_at_key.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,103 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>result_of::value_at_key<Node,Key></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="at_key.html" title="result_of::at_key<Node,Key>">
+<link rel="next" href="copyable_and_movable.html" title="BOOST_TREE_NODE_COPYABLE_AND_MOVABLE">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="at_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="copyable_and_movable.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.value_at_key"></a><a class="link" href="value_at_key.html" title="result_of::value_at_key<Node,Key>"><code class="computeroutput"><span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at_key</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">Key</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.value_at_key.synopsis"></a><a class="link" href="value_at_key.html#tree_node.reference.value_at_key.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">result_of</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span><span class="special">></span>
+ <span class="keyword">class</span> <span class="identifier">value_at_key</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">remove_const</span><span class="special"><</span><span class="identifier">Node</span><span class="special">>::</span><span class="identifier">type</span><span class="special">::</span><span class="identifier">super_t</span>
+ <span class="identifier">_base</span><span class="special">;</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="keyword">typedef</span> <span class="identifier">BOOST_TYPEOF_TPL</span><span class="special">(</span>
+ <span class="identifier">get</span><span class="special"><</span><span class="identifier">Key</span><span class="special">>(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get_reference</span><span class="special"><</span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">if_</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_const</span><span class="special"><</span><span class="identifier">Node</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">_base</span> <span class="keyword">const</span>
+ <span class="special">,</span> <span class="identifier">_base</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="special">>()</span>
+ <span class="special">)</span>
+ <span class="special">)</span>
+ <span class="identifier">type</span><span class="special">;</span>
+
+ <span class="special">};</span>
+<span class="special">}}}</span> <span class="comment">// namespace boost::tree_node::result_of</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.value_at_key.description"></a><a class="link" href="value_at_key.html#tree_node.reference.value_at_key.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Node</span></code> be a (possibly
+ <code class="computeroutput"><span class="keyword">const</span></code>-qualified) <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> model. Let <code class="computeroutput"><span class="identifier">Key</span></code>
+ be a type for which <code class="literal"><a class="link" href="has_key.html#tree_node.reference.has_key.result_of" title="Return Type Metafunction Synopsis">tree_node::result_of::has_key</a><Node,Key></code>
+ evaluates to boost::mpl::true_
.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at_key</span><span class="special"><</span><span class="identifier">Node</span><span class="special">,</span><span class="identifier">Key</span><span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> The actual element type associated
+ with key type <code class="computeroutput"><span class="identifier">Key</span></code> in <code class="computeroutput"><span class="identifier">Node</span></code>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.value_at_key.definition"></a><a class="link" href="value_at_key.html#tree_node.reference.value_at_key.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/intrinsic/value_at_key.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="at_key.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="copyable_and_movable.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_accumulation.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_accumulation.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,461 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_accumulation<BaseGenerator,T1,T2,AccumulationKey></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="assoc_node_base_gen.html" title="associative_node_base_gen<Selector>">
+<link rel="next" href="with_accumulation_gen.html" title="with_accumulation_gen<BaseGenerator>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="assoc_node_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_accumulation_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_accumulation"></a><a class="link" href="with_accumulation.html" title="with_accumulation<BaseGenerator,T1,T2,AccumulationKey>"><code class="computeroutput"><span class="identifier">with_accumulation</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">AccumulationKey</span><span class="special">></span></code> </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation.description"></a><a class="link" href="with_accumulation.html#tree_node.reference.with_accumulation.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ In addition to the other operations it inherits from the return type of
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>, this <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a>
+ adaptor performs statistical computations on user data when the node's
+ structure and/or contents are modified, then stores the result.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation.definition"></a><a class="link" href="with_accumulation.html#tree_node.reference.with_accumulation.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_accumulation.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_accumulation_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/with_accumulation.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation.tpl_param"></a><a class="link" href="with_accumulation.html#tree_node.reference.with_accumulation.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> model from
+ whose return type <code class="computeroutput"><span class="identifier">with_accumulation</span></code>
+ will ultimately inherit. [
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type if <code class="computeroutput"><span class="identifier">T2</span></code>
+ is specified; the user data type otherwise.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type if specified; ignored otherwise.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AccumulationKey</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A template instantiation of <a class="link" href="accumulation_key.html" title="accumulation_key"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">accumulation_key</span></code></a>.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">default_accumulation_key</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation.model_of"></a><a class="link" href="with_accumulation.html#tree_node.reference.with_accumulation.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T2</span><span class="error">`</span> <span class="identifier">is</span> <span class="identifier">specified</span><span class="special">;</span>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> <span class="identifier">otherwise</span>
+<span class="special">*</span> <span class="identifier">any</span> <span class="identifier">other</span> <span class="identifier">concept</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">models</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation.public_bases"></a><a class="link" href="with_accumulation.html#tree_node.reference.with_accumulation.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">with_accumulation_base</span><span class="special"><</span>
+ <span class="identifier">with_accumulation</span><span class="special"><</span>
+ <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="identifier">AccumulationKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">tag</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">includes_all_descendants</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">includes_root</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">value</span>
+<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation.members"></a><a class="link" href="with_accumulation.html#tree_node.reference.with_accumulation.members" title="Public Members">Public
+ Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from <a class="link" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a> as well
+ as from the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Super type
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typedef</span> <span class="identifier">with_accumulation_base</span><span class="special"><</span>
+ <span class="identifier">with_accumulation</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">tag</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">includes_all_descendants</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">includes_root</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">value</span>
+ <span class="special">></span>
+ <span class="identifier">super_t</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_accumulation</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_accumulation</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_accumulation</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_accumulation</span><span class="special">(</span><span class="identifier">with_accumulation</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_accumulation</span><span class="special">(</span>
+ <span class="identifier">with_accumulation</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_accumulation</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_accumulation</span><span class="special">(</span><span class="identifier">with_accumulation</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_accumulation</span><span class="special">(</span>
+ <span class="identifier">with_accumulation</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_accumulation</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_accumulation</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">with_accumulation</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_accumulation</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">with_accumulation</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation.non_members"></a><a class="link" href="with_accumulation.html#tree_node.reference.with_accumulation.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<p>
+ Same as those inherited from <a class="link" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a> and from
+ the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="assoc_node_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_accumulation_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_accumulation_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_accumulation_base.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,714 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value ></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_accumulation_gen.html" title="with_accumulation_gen<BaseGenerator>">
+<link rel="next" href="with_accumulation_base_gen.html" title="with_accumulation_base_gen<BaseGenerator>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_accumulation_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_accumulation_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_accumulation_base"></a><a class="link" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">with_accumulation_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span> <span class="special">,</span>
+ <span class="identifier">BaseGenerator</span> <span class="special">,</span>
+ <span class="identifier">T1</span> <span class="special">,</span> <span class="identifier">T2</span> <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Tag</span> <span class="special">,</span> <span class="identifier">IncludesAllDescendants</span>
+ <span class="special">,</span> <span class="identifier">IncludesRoot</span>
+ <span class="special">,</span> <span class="identifier">Value</span>
+ <span class="special">></span></code> </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base.description"></a><a class="link" href="with_accumulation_base.html#tree_node.reference.with_accumulation_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="with_accumulation.html" title="with_accumulation<BaseGenerator,T1,T2,AccumulationKey>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation</span></code></a> class template
+ inherits its functionality from this class template. They differ only with
+ regard to template parameters: the <a class="link" href="with_accumulation.html" title="with_accumulation<BaseGenerator,T1,T2,AccumulationKey>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation</span></code></a> class template
+ is meant to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">with_accumulation_base</span></code>
+ is more suitable as a base class template from which other <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor class templates can derive
+ via the <a class="link" href="with_accumulation_base_gen.html" title="with_accumulation_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base_gen</span></code></a> <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base
+ Type Generator</strong></span></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base.definition"></a><a class="link" href="with_accumulation_base.html#tree_node.reference.with_accumulation_base.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_accumulation.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_accumulation_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/with_accumulation.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base.tpl_param"></a><a class="link" href="with_accumulation_base.html#tree_node.reference.with_accumulation_base.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Requirements
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Derived</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The most descendant type that will inherit from this one.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <code class="computeroutput"><span class="identifier">with_accumulation_base</span></code>
+ will inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type if <code class="computeroutput"><span class="identifier">T2</span></code>
+ is not <code class="computeroutput"><span class="keyword">void</span></code>; the
+ user data type otherwise.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type if not <code class="computeroutput"><span class="keyword">void</span></code>;
+ ignored otherwise.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Key</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type associated with the value on which this <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor will perform
+ statistical computations.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal"><a class="link" href="has_key.html" title="has_key()">tree_node::has_key</a><Key>(base)</code>
+ must return <code class="computeroutput"><span class="keyword">true</span></code>
+ for some object <code class="computeroutput"><span class="identifier">base</span></code>
+ of the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Tag</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines what this <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor will compute.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a valid Boost.Accumulators feature.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IncludesAllDescendants</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Boolean Integral Constant that
+ determines whether this <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor will involve
+ all descendants (if set to boost::mpl::true_
) or just the
+ immediate children (if set to boost::mpl::false_
) in its computations.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">IncludesRoot</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A Boolean Integral Constant that
+ determines whether or not this <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor will include
+ the value of the root node in its computations.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Value</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of the result of the computation performed by this
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a> adaptor if specified; ignored if <code class="computeroutput"><span class="keyword">void</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base.model_of"></a><a class="link" href="with_accumulation_base.html#tree_node.reference.with_accumulation_base.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T2</span><span class="error">`</span> <span class="identifier">is</span> <span class="identifier">specified</span><span class="special">;</span>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> <span class="identifier">otherwise</span>
+<span class="special">*</span> <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a>
+<span class="special">*</span> <span class="identifier">any</span> <span class="identifier">other</span> <span class="identifier">concept</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">models</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base.public_bases"></a><a class="link" href="with_accumulation_base.html#tree_node.reference.with_accumulation_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap2</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T1</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap3</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base.members"></a><a class="link" href="with_accumulation_base.html#tree_node.reference.with_accumulation_base.members" title="Members">Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_accumulation_base</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_accumulation_base</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_accumulator</span></code>
+ object, initializing its user data with the trailing arguments.
+ Child nodes will be subsequently created using the specified
+ allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_accumulation_base</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_accumulation_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_accumulator</span></code>
+ object as a copy of the specified one. Child nodes will be subsequently
+ created using the specified allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_accumulation_base</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_accumulation_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_accumulator</span></code>
+ object and moves the contents of the specified node to the new
+ one. Child nodes will be subsequently created using the specified
+ allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Accumulation member read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">Value</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at_key</span><span class="special"><</span>
+ <span class="identifier">with_accumulation_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Tag</span>
+ <span class="special">,</span> <span class="identifier">IncludesAllDescendants</span>
+ <span class="special">,</span> <span class="identifier">IncludesRoot</span>
+ <span class="special">,</span> <span class="identifier">Value</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">identity</span><span class="special"><</span><span class="identifier">Value</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="keyword">operator</span><span class="special">[](</span>
+ <span class="identifier">accumulation_key</span><span class="special"><</span>
+ <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Tag</span>
+ <span class="special">,</span> <span class="identifier">IncludesAllDescendants</span>
+ <span class="special">,</span> <span class="identifier">IncludesRoot</span>
+ <span class="special">,</span> <span class="identifier">Value</span>
+ <span class="special">></span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="special">)</span>
+ <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the accumulated value of the statistical computations
+ performed by this <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base.non_members"></a><a class="link" href="with_accumulation_base.html#tree_node.reference.with_accumulation_base.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following non-members are defined.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Accumulation key-value read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IncludesAllDescendants</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IncludesRoot</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Value</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span>
+ <span class="identifier">accumulation_key</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Tag</span><span class="special">,</span><span class="identifier">IncludesAllDescendants</span><span class="special">,</span><span class="identifier">IncludesRoot</span><span class="special">,</span><span class="identifier">Value</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">AccumulationKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">Value</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at_key</span><span class="special"><</span>
+ <span class="identifier">with_accumulation_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Tag</span>
+ <span class="special">,</span> <span class="identifier">IncludesAllDescendants</span>
+ <span class="special">,</span> <span class="identifier">IncludesRoot</span>
+ <span class="special">,</span> <span class="identifier">Value</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">identity</span><span class="special"><</span><span class="identifier">Value</span><span class="special">></span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">with_accumulation_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Tag</span>
+ <span class="special">,</span> <span class="identifier">IncludesAllDescendants</span>
+ <span class="special">,</span> <span class="identifier">IncludesRoot</span>
+ <span class="special">,</span> <span class="identifier">Value</span>
+ <span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">AccumulationKey</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IncludesAllDescendants</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">IncludesRoot</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Value</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span>
+ <span class="identifier">accumulation_key</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Tag</span><span class="special">,</span><span class="identifier">IncludesAllDescendants</span><span class="special">,</span><span class="identifier">IncludesRoot</span><span class="special">,</span><span class="identifier">Value</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">AccumulationKey</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">Value</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">result_of</span><span class="special">::</span><span class="identifier">value_at_key</span><span class="special"><</span>
+ <span class="identifier">with_accumulation_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Tag</span>
+ <span class="special">,</span> <span class="identifier">IncludesAllDescendants</span>
+ <span class="special">,</span> <span class="identifier">IncludesRoot</span>
+ <span class="special">,</span> <span class="identifier">Value</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">identity</span><span class="special"><</span><span class="identifier">Value</span><span class="special">></span>
+ <span class="special">>::</span><span class="identifier">type</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">with_accumulation_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Tag</span>
+ <span class="special">,</span> <span class="identifier">IncludesAllDescendants</span>
+ <span class="special">,</span> <span class="identifier">IncludesRoot</span>
+ <span class="special">,</span> <span class="identifier">Value</span>
+ <span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span>
+ <span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_accumulation_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_accumulation_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_accumulation_base_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_accumulation_base_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,194 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_accumulation_base_gen<BaseGenerator></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >">
+<link rel="next" href="with_count.html" title="with_count<BaseGenerator,T1,T2,Count>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_accumulation_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_count.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_accumulation_base_gen"></a><a class="link" href="with_accumulation_base_gen.html" title="with_accumulation_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">with_accumulation_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span></code>
+ </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base_gen.synopsis"></a><a class="link" href="with_accumulation_base_gen.html#tree_node.reference.with_accumulation_base_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span> <span class="special">=</span> <span class="identifier">default_accumulation_key</span>
+ <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">with_accumulation_base_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">with_accumulation_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">tag</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">includes_all_descendants</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">includes_root</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span><span class="special">::</span><span class="identifier">value</span>
+ <span class="special">></span>
+ <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base_gen.description"></a><a class="link" href="with_accumulation_base_gen.html#tree_node.reference.with_accumulation_base_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base_gen.definition"></a><a class="link" href="with_accumulation_base_gen.html#tree_node.reference.with_accumulation_base_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">__with_accumulation_base_gen__header__</span><span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base_gen.model_of"></a><a class="link" href="with_accumulation_base_gen.html#tree_node.reference.with_accumulation_base_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base_gen.tpl_param"></a><a class="link" href="with_accumulation_base_gen.html#tree_node.reference.with_accumulation_base_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <a class="link" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a>
+ will inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base_gen.expressions"></a><a class="link" href="with_accumulation_base_gen.html#tree_node.reference.with_accumulation_base_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Derived</span></code> be the type
+ that will inherit from <a class="link" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a>. Let <code class="computeroutput"><span class="identifier">Key</span></code> be the key type. Let <code class="computeroutput"><span class="identifier">Data</span></code> be the user data type. Let <code class="computeroutput"><span class="identifier">BaseGenerator</span></code> be a valid <code class="computeroutput"><span class="identifier">with_accumulation_base_gen</span></code> template argument.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap3<span class="special"><</span>
+ <span class="identifier">with_accumulation_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a><Derived,BaseGenerator,Key,Data></code>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span>
+ <span class="identifier">with_accumulation_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation_base</span></code></a><Derived,BaseGenerator,Data,void></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_base_gen.complexity"></a><a class="link" href="with_accumulation_base_gen.html#tree_node.reference.with_accumulation_base_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_accumulation_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_count.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_accumulation_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_accumulation_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,184 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_accumulation_gen<BaseGenerator></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_accumulation.html" title="with_accumulation<BaseGenerator,T1,T2,AccumulationKey>">
+<link rel="next" href="with_accumulation_base.html" title="with_accumulation_base< Derived , BaseGenerator , T1 , T2 , Key , Tag , IncludesAllDescendants , IncludesRoot , Value >">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_accumulation.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_accumulation_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_accumulation_gen"></a><a class="link" href="with_accumulation_gen.html" title="with_accumulation_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">with_accumulation_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_gen.synopsis"></a><a class="link" href="with_accumulation_gen.html#tree_node.reference.with_accumulation_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">AccumulationKey</span> <span class="special">=</span> <span class="identifier">default_accumulation_key</span>
+ <span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">with_accumulation_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">with_accumulation</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">AccumulationKey</span><span class="special">></span>
+ <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_gen.description"></a><a class="link" href="with_accumulation_gen.html#tree_node.reference.with_accumulation_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_gen.definition"></a><a class="link" href="with_accumulation_gen.html#tree_node.reference.with_accumulation_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_accumulation.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_gen.model_of"></a><a class="link" href="with_accumulation_gen.html#tree_node.reference.with_accumulation_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_gen.tpl_param"></a><a class="link" href="with_accumulation_gen.html#tree_node.reference.with_accumulation_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <a class="link" href="with_accumulation.html" title="with_accumulation<BaseGenerator,T1,T2,AccumulationKey>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_accumulation</span></code></a> will
+ ultimately inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_gen.expressions"></a><a class="link" href="with_accumulation_gen.html#tree_node.reference.with_accumulation_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Key</span></code> be the key type.
+ Let <code class="computeroutput"><span class="identifier">Data</span></code> be the user data
+ type. Let <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ be a valid <code class="computeroutput"><span class="identifier">with_accumulation_gen</span></code>
+ template argument.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span>
+ <span class="identifier">with_accumulator_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_accumulation.html" title="with_accumulation<BaseGenerator,T1,T2,AccumulationKey>">tree_node::with_accumulation</a><BaseGenerator,Key,Data></code>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap1<span class="special"><</span>
+ <span class="identifier">with_accumulation_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_accumulation.html" title="with_accumulation<BaseGenerator,T1,T2,AccumulationKey>">tree_node::with_accumulation</a><BaseGenerator,Data,void></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_accumulation_gen.complexity"></a><a class="link" href="with_accumulation_gen.html#tree_node.reference.with_accumulation_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_accumulation.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_accumulation_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_count.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_count.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,423 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_count<BaseGenerator,T1,T2,Count></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_accumulation_base_gen.html" title="with_accumulation_base_gen<BaseGenerator>">
+<link rel="next" href="with_count_gen.html" title="with_count_gen<BaseGenerator>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_accumulation_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_count_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_count"></a><a class="link" href="with_count.html" title="with_count<BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">with_count</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Count</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count.description"></a><a class="link" href="with_count.html#tree_node.reference.with_count.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <span class="bold"><strong>count</strong></span> of a tree node can be defined
+ as the number of itself plus its descendants. In addition to the operations
+ it inherits from the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ this <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a> adaptor provides constant-time access to the count
+ of the node by updating this information after structural modifications
+ have been performed.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count.definition"></a><a class="link" href="with_count.html#tree_node.reference.with_count.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_count.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_count_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/with_count.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count.tpl_param"></a><a class="link" href="with_count.html#tree_node.reference.with_count.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <code class="computeroutput"><span class="identifier">with_count</span></code>
+ will ultimately inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type if <code class="computeroutput"><span class="identifier">T2</span></code>
+ is not <code class="computeroutput"><span class="keyword">void</span></code>; the
+ user data type otherwise.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type if not <code class="computeroutput"><span class="keyword">void</span></code>;
+ ignored otherwise.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Count</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The count type.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count.model_of"></a><a class="link" href="with_count.html#tree_node.reference.with_count.model_of" title="Model of">Model of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T2</span><span class="error">`</span> <span class="identifier">is</span> <span class="keyword">not</span> <span class="error">`</span><span class="keyword">void</span><span class="error">`</span><span class="special">;</span>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> <span class="identifier">otherwise</span>
+<span class="special">*</span> <span class="identifier">any</span> <span class="identifier">other</span> <span class="identifier">concept</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">models</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count.public_bases"></a><a class="link" href="with_count.html#tree_node.reference.with_count.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">with_count_base</span><span class="special"><</span>
+ <span class="identifier">with_count</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Count</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="identifier">Count</span>
+<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count.members"></a><a class="link" href="with_count.html#tree_node.reference.with_count.members" title="Public Members">Public Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from <a class="link" href="with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base</span></code></a> and from the return
+ type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_count</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_count</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_count</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_count</span><span class="special">(</span><span class="identifier">with_count</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_count</span><span class="special">(</span>
+ <span class="identifier">with_count</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_count</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_count</span><span class="special">(</span><span class="identifier">with_count</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_count</span><span class="special">(</span>
+ <span class="identifier">with_count</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_count</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_count</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">with_count</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_count</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">with_count</span><span class="special">&&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count.non_members"></a><a class="link" href="with_count.html#tree_node.reference.with_count.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<p>
+ Same as those inherited from <a class="link" href="with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base</span></code></a> and from the return
+ type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_accumulation_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_count_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_count_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_count_base.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,527 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_count_base<Derived,BaseGenerator,T1,T2,Count></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_count_gen.html" title="with_count_gen<BaseGenerator>">
+<link rel="next" href="with_count_base_gen.html" title="with_count_base_gen<BaseGenerator>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_count_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_count_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_count_base"></a><a class="link" href="with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">with_count_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Count</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base.description"></a><a class="link" href="with_count_base.html#tree_node.reference.with_count_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="with_count.html" title="with_count<BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count</span></code></a>
+ class template inherits its functionality from this class template. They
+ differ only with regard to template parameters: the <a class="link" href="with_count.html" title="with_count<BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count</span></code></a> class template is meant
+ to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">with_count_base</span></code>
+ is more suitable as a base class template from which other <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor class templates can derive
+ via the <a class="link" href="with_count_base_gen.html" title="with_count_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base_gen</span></code></a> <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base.definition"></a><a class="link" href="with_count_base.html#tree_node.reference.with_count_base.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_count.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_count_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/with_count.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base.tpl_param"></a><a class="link" href="with_count_base.html#tree_node.reference.with_count_base.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Derived</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The most descendant type that will inherit from this one.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <code class="computeroutput"><span class="identifier">with_count_base</span></code>
+ will inherit.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type if <code class="computeroutput"><span class="identifier">T2</span></code>
+ is not <code class="computeroutput"><span class="keyword">void</span></code>; the
+ user data type otherwise.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type if not <code class="computeroutput"><span class="keyword">void</span></code>;
+ ignored otherwise.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Count</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The count type.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base.model_of"></a><a class="link" href="with_count_base.html#tree_node.reference.with_count_base.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T2</span><span class="error">`</span> <span class="identifier">is</span> <span class="keyword">not</span> <span class="error">`</span><span class="keyword">void</span><span class="error">`</span><span class="special">;</span>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> <span class="identifier">otherwise</span>
+<span class="special">*</span> <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a>
+<span class="special">*</span> <span class="identifier">any</span> <span class="identifier">other</span> <span class="identifier">concept</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">models</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base.public_bases"></a><a class="link" href="with_count_base.html#tree_node.reference.with_count_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap2</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T1</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap3</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base.members"></a><a class="link" href="with_count_base.html#tree_node.reference.with_count_base.members" title="Members">Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_count_base</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_count_base</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_count_base</span></code>
+ object, initializing its user data with the trailing arguments.
+ Child nodes will be subsequently created using the specified
+ allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_count_base</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_count_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_count_base</span></code>
+ object as a copy of the specified one. Child nodes will be subsequently
+ created using the specified allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_count_base</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_count_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_count_base</span></code>
+ object and moves the contents of the specified node to the new
+ one. Child nodes will be subsequently created using the specified
+ allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Count member read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">count</span> <span class="keyword">const</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">count_key</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the height of this tree node.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base.non_members"></a><a class="link" href="with_count_base.html#tree_node.reference.with_count_base.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following non-members are defined.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Count read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Count</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">with_count_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="identifier">Count</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">count</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">with_count_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Count</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">count_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Count</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">count_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">with_count_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="identifier">Count</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">count</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">with_count_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Count</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_count_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_count_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_count_base_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_count_base_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,201 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_count_base_gen<BaseGenerator></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>">
+<link rel="next" href="with_height.html" title="with_height<BaseGenerator,T1,T2,Height>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_count_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_height.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_count_base_gen"></a><a class="link" href="with_count_base_gen.html" title="with_count_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">with_count_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base_gen.synopsis"></a><a class="link" href="with_count_base_gen.html#tree_node.reference.with_count_base_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">BaseGenerator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Count</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">with_count_base_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">with_count_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Count</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base_gen.description"></a><a class="link" href="with_count_base_gen.html#tree_node.reference.with_count_base_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base_gen.definition"></a><a class="link" href="with_count_base_gen.html#tree_node.reference.with_count_base_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_count.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base_gen.model_of"></a><a class="link" href="with_count_base_gen.html#tree_node.reference.with_count_base_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base_gen.tpl_param"></a><a class="link" href="with_count_base_gen.html#tree_node.reference.with_count_base_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <a class="link" href="with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base</span></code></a> will
+ inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Count</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The count type.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base_gen.expressions"></a><a class="link" href="with_count_base_gen.html#tree_node.reference.with_count_base_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Derived</span></code> be the type
+ that will inherit from <a class="link" href="with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count_base</span></code></a>. Let <code class="computeroutput"><span class="identifier">Key</span></code> be the key type. Let <code class="computeroutput"><span class="identifier">Data</span></code> be the user data type. Let <code class="computeroutput"><span class="identifier">BaseGenerator</span></code> be a valid first template
+ argument for <code class="computeroutput"><span class="identifier">with_count_base_gen</span></code>.
+ Let <code class="computeroutput"><span class="identifier">Count</span></code> be the count
+ type.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap3<span class="special"><</span>
+ <span class="identifier">with_count_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Count</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>">tree_node::with_count_base</a><Derived,BaseGenerator,Key,Data,Count></code>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span>
+ <span class="identifier">with_count_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Count</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>">tree_node::with_count_base</a><Derived,BaseGenerator,Data,void,Count></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_base_gen.complexity"></a><a class="link" href="with_count_base_gen.html#tree_node.reference.with_count_base_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_count_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_height.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_count_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_count_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,200 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_count_gen<BaseGenerator></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_count.html" title="with_count<BaseGenerator,T1,T2,Count>">
+<link rel="next" href="with_count_base.html" title="with_count_base<Derived,BaseGenerator,T1,T2,Count>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_count.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_count_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_count_gen"></a><a class="link" href="with_count_gen.html" title="with_count_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">with_count_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_gen.synopsis"></a><a class="link" href="with_count_gen.html#tree_node.reference.with_count_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">BaseGenerator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Count</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">with_count_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">with_count</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Count</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_gen.description"></a><a class="link" href="with_count_gen.html#tree_node.reference.with_count_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_gen.definition"></a><a class="link" href="with_count_gen.html#tree_node.reference.with_count_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_count.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_gen.model_of"></a><a class="link" href="with_count_gen.html#tree_node.reference.with_count_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_gen.tpl_param"></a><a class="link" href="with_count_gen.html#tree_node.reference.with_count_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <a class="link" href="with_count.html" title="with_count<BaseGenerator,T1,T2,Count>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_count</span></code></a> will ultimately
+ inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Count</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The count type.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_gen.expressions"></a><a class="link" href="with_count_gen.html#tree_node.reference.with_count_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Key</span></code> be the key type.
+ Let <code class="computeroutput"><span class="identifier">Data</span></code> be the user data
+ type. Let <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ be a valid first template argument for <code class="computeroutput"><span class="identifier">with_count_gen</span></code>.
+ Let <code class="computeroutput"><span class="identifier">Count</span></code> be the count
+ type.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span>
+ <span class="identifier">with_count_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Count</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_count.html" title="with_count<BaseGenerator,T1,T2,Count>">tree_node::with_count</a><BaseGenerator,Key,Data,Count></code>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap1<span class="special"><</span>
+ <span class="identifier">with_count_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Count</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_count.html" title="with_count<BaseGenerator,T1,T2,Count>">tree_node::with_count</a><BaseGenerator,Data,void,Count></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_count_gen.complexity"></a><a class="link" href="with_count_gen.html#tree_node.reference.with_count_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_count.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_count_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_height.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_height.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,424 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_height<BaseGenerator,T1,T2,Height></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_count_base_gen.html" title="with_count_base_gen<BaseGenerator>">
+<link rel="next" href="with_height_gen.html" title="with_height_gen<BaseGenerator>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_count_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_height_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_height"></a><a class="link" href="with_height.html" title="with_height<BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">with_height</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Height</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height.description"></a><a class="link" href="with_height.html#tree_node.reference.with_height.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <span class="bold"><strong>height</strong></span> of a tree node can be defined
+ as the magnitude of the difference between its ply and that of its deepest
+ descendant. In addition to the operations it inherits from the return type
+ of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>, this
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a> adaptor provides constant-time access to the height
+ of the node by updating this information after structural modifications
+ have been performed.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height.definition"></a><a class="link" href="with_height.html#tree_node.reference.with_height.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_height.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_height_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/with_height.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height.tpl_param"></a><a class="link" href="with_height.html#tree_node.reference.with_height.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <code class="computeroutput"><span class="identifier">with_height</span></code>
+ will ultimately inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type if <code class="computeroutput"><span class="identifier">T2</span></code>
+ is not <code class="computeroutput"><span class="keyword">void</span></code>; the
+ user data type otherwise.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type if not <code class="computeroutput"><span class="keyword">void</span></code>;
+ ignored otherwise.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Height</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The height type.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height.model_of"></a><a class="link" href="with_height.html#tree_node.reference.with_height.model_of" title="Model of">Model of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T2</span><span class="error">`</span> <span class="identifier">is</span> <span class="keyword">not</span> <span class="error">`</span><span class="keyword">void</span><span class="error">`</span><span class="special">;</span>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> <span class="identifier">otherwise</span>
+<span class="special">*</span> <span class="identifier">any</span> <span class="identifier">other</span> <span class="identifier">concept</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">models</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height.public_bases"></a><a class="link" href="with_height.html#tree_node.reference.with_height.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">with_height_base</span><span class="special"><</span>
+ <span class="identifier">with_height</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Height</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="identifier">Height</span>
+<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height.members"></a><a class="link" href="with_height.html#tree_node.reference.with_height.members" title="Public Members">Public Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from <a class="link" href="with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base</span></code></a> and from the
+ return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_height</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_height</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_height</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_height</span><span class="special">(</span><span class="identifier">with_height</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_height</span><span class="special">(</span>
+ <span class="identifier">with_height</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_height</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_height</span><span class="special">(</span><span class="identifier">with_height</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_height</span><span class="special">(</span>
+ <span class="identifier">with_height</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_height</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_height</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">with_height</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_height</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">with_height</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height.non_members"></a><a class="link" href="with_height.html#tree_node.reference.with_height.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<p>
+ Same as those inherited from <a class="link" href="with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base</span></code></a> and from the
+ return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_count_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_height_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_height_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_height_base.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,527 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_height_base<Derived,BaseGenerator,T1,T2,Height></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_height_gen.html" title="with_height_gen<BaseGenerator>">
+<link rel="next" href="with_height_base_gen.html" title="with_height_base_gen<BaseGenerator>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_height_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_height_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_height_base"></a><a class="link" href="with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">with_height_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Height</span><span class="special">></span></code> </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base.description"></a><a class="link" href="with_height_base.html#tree_node.reference.with_height_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="with_height.html" title="with_height<BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height</span></code></a>
+ class template inherits its functionality from this class template. They
+ differ only with regard to template parameters: the <a class="link" href="with_height.html" title="with_height<BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height</span></code></a> class template is
+ meant to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">with_height_base</span></code>
+ is more suitable as a base class template from which other <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor class templates can derive
+ via the <a class="link" href="with_height_base_gen.html" title="with_height_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base_gen</span></code></a> <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base.definition"></a><a class="link" href="with_height_base.html#tree_node.reference.with_height_base.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_height.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_height_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/with_height.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base.tpl_param"></a><a class="link" href="with_height_base.html#tree_node.reference.with_height_base.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Derived</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The most descendant type that will inherit from this one.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <code class="computeroutput"><span class="identifier">with_height_base</span></code>
+ will inherit.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type if <code class="computeroutput"><span class="identifier">T2</span></code>
+ is not <code class="computeroutput"><span class="keyword">void</span></code>; the
+ user data type otherwise.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type if not <code class="computeroutput"><span class="keyword">void</span></code>;
+ ignored otherwise.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Height</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The height type.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base.model_of"></a><a class="link" href="with_height_base.html#tree_node.reference.with_height_base.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T2</span><span class="error">`</span> <span class="identifier">is</span> <span class="keyword">not</span> <span class="error">`</span><span class="keyword">void</span><span class="error">`</span><span class="special">;</span>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> <span class="identifier">otherwise</span>
+<span class="special">*</span> <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a>
+<span class="special">*</span> <span class="identifier">any</span> <span class="identifier">other</span> <span class="identifier">concept</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">models</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base.public_bases"></a><a class="link" href="with_height_base.html#tree_node.reference.with_height_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap2</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T1</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap3</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base.members"></a><a class="link" href="with_height_base.html#tree_node.reference.with_height_base.members" title="Members">Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_height_base</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_height_base</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_height_base</span></code>
+ object, initializing its user data with the trailing arguments.
+ Child nodes will be subsequently created using the specified
+ allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_height_base</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_height_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_height_base</span></code>
+ object as a copy of the specified one. Child nodes will be subsequently
+ created using the specified allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_height_base</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_height_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_height_base</span></code>
+ object and moves the contents of the specified node to the new
+ one. Child nodes will be subsequently created using the specified
+ allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Height member read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">height</span> <span class="keyword">const</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">height_key</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the height of this tree node.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base.non_members"></a><a class="link" href="with_height_base.html#tree_node.reference.with_height_base.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following non-members are defined.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ Height read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Height</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">with_height_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="identifier">Height</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">height</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">with_height_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Height</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">height_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Height</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">height_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">with_height_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">,</span> <span class="identifier">Height</span>
+ <span class="special">>::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">height</span> <span class="keyword">const</span><span class="special">&</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">with_height_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Height</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_height_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_height_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_height_base_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_height_base_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,201 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_height_base_gen<BaseGenerator></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>">
+<link rel="next" href="with_position.html" title="with_position<BaseGenerator,T1,T2>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_height_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_position.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_height_base_gen"></a><a class="link" href="with_height_base_gen.html" title="with_height_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">with_height_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base_gen.synopsis"></a><a class="link" href="with_height_base_gen.html#tree_node.reference.with_height_base_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">BaseGenerator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Height</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">with_height_base_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">with_height_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Height</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base_gen.description"></a><a class="link" href="with_height_base_gen.html#tree_node.reference.with_height_base_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base_gen.definition"></a><a class="link" href="with_height_base_gen.html#tree_node.reference.with_height_base_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_height.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base_gen.model_of"></a><a class="link" href="with_height_base_gen.html#tree_node.reference.with_height_base_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base_gen.tpl_param"></a><a class="link" href="with_height_base_gen.html#tree_node.reference.with_height_base_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <a class="link" href="with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base</span></code></a> will
+ inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Height</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The height type.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base_gen.expressions"></a><a class="link" href="with_height_base_gen.html#tree_node.reference.with_height_base_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Derived</span></code> be the type
+ that will inherit from <a class="link" href="with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height_base</span></code></a>. Let <code class="computeroutput"><span class="identifier">Key</span></code> be the key type. Let <code class="computeroutput"><span class="identifier">Data</span></code> be the user data type. Let <code class="computeroutput"><span class="identifier">BaseGenerator</span></code> be a valid first template
+ argument for <code class="computeroutput"><span class="identifier">with_height_base_gen</span></code>.
+ Let <code class="computeroutput"><span class="identifier">Height</span></code> be the height
+ type.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap3<span class="special"><</span>
+ <span class="identifier">with_height_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Height</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>">tree_node::with_height_base</a><Derived,BaseGenerator,Key,Data,Height></code>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span>
+ <span class="identifier">with_height_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Height</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>">tree_node::with_height_base</a><Derived,BaseGenerator,Data,void,Height></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_base_gen.complexity"></a><a class="link" href="with_height_base_gen.html#tree_node.reference.with_height_base_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_height_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_position.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_height_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_height_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,200 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_height_gen<BaseGenerator></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_height.html" title="with_height<BaseGenerator,T1,T2,Height>">
+<link rel="next" href="with_height_base.html" title="with_height_base<Derived,BaseGenerator,T1,T2,Height>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_height.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_height_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_height_gen"></a><a class="link" href="with_height_gen.html" title="with_height_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">with_height_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_gen.synopsis"></a><a class="link" href="with_height_gen.html#tree_node.reference.with_height_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">BaseGenerator</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Height</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">with_height_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">with_height</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">,</span><span class="identifier">Height</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_gen.description"></a><a class="link" href="with_height_gen.html#tree_node.reference.with_height_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_gen.definition"></a><a class="link" href="with_height_gen.html#tree_node.reference.with_height_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_height.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_gen.model_of"></a><a class="link" href="with_height_gen.html#tree_node.reference.with_height_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_gen.tpl_param"></a><a class="link" href="with_height_gen.html#tree_node.reference.with_height_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <a class="link" href="with_height.html" title="with_height<BaseGenerator,T1,T2,Height>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_height</span></code></a> will ultimately
+ inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Height</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The height type.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_gen.expressions"></a><a class="link" href="with_height_gen.html#tree_node.reference.with_height_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Key</span></code> be the key type.
+ Let <code class="computeroutput"><span class="identifier">Data</span></code> be the user data
+ type. Let <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ be a valid first template argument for <code class="computeroutput"><span class="identifier">with_height_gen</span></code>.
+ Let <code class="computeroutput"><span class="identifier">Height</span></code> be the height
+ type.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span>
+ <span class="identifier">with_height_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Height</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_height.html" title="with_height<BaseGenerator,T1,T2,Height>">tree_node::with_height</a><BaseGenerator,Key,Data,Height></code>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap1<span class="special"><</span>
+ <span class="identifier">with_height_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Height</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_height.html" title="with_height<BaseGenerator,T1,T2,Height>">tree_node::with_height</a><BaseGenerator,Data,void,Height></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_height_gen.complexity"></a><a class="link" href="with_height_gen.html#tree_node.reference.with_height_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_height.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_height_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_position.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_position.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,401 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_position<BaseGenerator,T1,T2></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_height_base_gen.html" title="with_height_base_gen<BaseGenerator>">
+<link rel="next" href="with_position_gen.html" title="with_position_gen<BaseGenerator>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_height_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_position_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_position"></a><a class="link" href="with_position.html" title="with_position<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">with_position</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position.description"></a><a class="link" href="with_position.html#tree_node.reference.with_position.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a> adaptor provides access to its position in its parent's
+ range of children as well as the other operations it inherits from the
+ return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position.definition"></a><a class="link" href="with_position.html#tree_node.reference.with_position.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_position.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_position_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/with_position.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position.tpl_param"></a><a class="link" href="with_position.html#tree_node.reference.with_position.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <code class="computeroutput"><span class="identifier">with_position</span></code>
+ will ultimately inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type if <code class="computeroutput"><span class="identifier">T2</span></code>
+ is specified; the user data type otherwise.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type if specified; ignored otherwise.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position.model_of"></a><a class="link" href="with_position.html#tree_node.reference.with_position.model_of" title="Model of">Model of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T2</span><span class="error">`</span> <span class="identifier">is</span> <span class="identifier">specified</span><span class="special">;</span>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> <span class="identifier">otherwise</span>
+<span class="special">*</span> <span class="identifier">any</span> <span class="identifier">other</span> <span class="identifier">concept</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">models</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position.public_bases"></a><a class="link" href="with_position.html#tree_node.reference.with_position.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">with_position_base</span><span class="special"><</span>
+ <span class="identifier">with_position</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position.members"></a><a class="link" href="with_position.html#tree_node.reference.with_position.members" title="Public Members">Public Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from <a class="link" href="with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base</span></code></a> and from the
+ return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_position</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_position</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_position</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_position</span><span class="special">(</span><span class="identifier">with_position</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_position</span><span class="special">(</span>
+ <span class="identifier">with_position</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_position</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_position</span><span class="special">(</span><span class="identifier">with_position</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_position</span><span class="special">(</span>
+ <span class="identifier">with_position</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_position</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_position</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">with_position</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_position</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">with_position</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position.non_members"></a><a class="link" href="with_position.html#tree_node.reference.with_position.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<p>
+ Same as those inherited from <a class="link" href="with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base</span></code></a> and from the
+ return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_height_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_position_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_position_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_position_base.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,585 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_position_base<Derived,BaseGenerator,T1,T2></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_position_gen.html" title="with_position_gen<BaseGenerator>">
+<link rel="next" href="with_position_base_gen.html" title="with_position_base_gen<BaseGenerator>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_position_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_position_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_position_base"></a><a class="link" href="with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">with_position_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base.description"></a><a class="link" href="with_position_base.html#tree_node.reference.with_position_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="with_position.html" title="with_position<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position</span></code></a>
+ class template inherits its functionality from this class template. They
+ differ only with regard to template parameters: the <a class="link" href="with_position.html" title="with_position<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position</span></code></a> class template is
+ meant to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">with_position_base</span></code>
+ is more suitable as a base class template from which other <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor class templates can derive
+ via the <a class="link" href="with_position_base_gen.html" title="with_position_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base_gen</span></code></a> <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base.definition"></a><a class="link" href="with_position_base.html#tree_node.reference.with_position_base.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_position.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_position_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/with_position.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base.tpl_param"></a><a class="link" href="with_position_base.html#tree_node.reference.with_position_base.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Derived</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The most descendant type that will inherit from this one.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <code class="computeroutput"><span class="identifier">with_position_base</span></code>
+ will inherit.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type if <code class="computeroutput"><span class="identifier">T2</span></code>
+ is not <code class="computeroutput"><span class="keyword">void</span></code>; the
+ user data type otherwise.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type if not <code class="computeroutput"><span class="keyword">void</span></code>;
+ ignored otherwise.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base.model_of"></a><a class="link" href="with_position_base.html#tree_node.reference.with_position_base.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T2</span><span class="error">`</span> <span class="identifier">is</span> <span class="keyword">not</span> <span class="error">`</span><span class="keyword">void</span><span class="error">`</span><span class="special">;</span>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> <span class="identifier">otherwise</span>
+<span class="special">*</span> <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a>
+<span class="special">*</span> <span class="identifier">any</span> <span class="identifier">other</span> <span class="identifier">concept</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">models</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base.public_bases"></a><a class="link" href="with_position_base.html#tree_node.reference.with_position_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap2</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T1</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap3</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base.members"></a><a class="link" href="with_position_base.html#tree_node.reference.with_position_base.members" title="Members">Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_position_base</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_position_base</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_position_base</span></code>
+ object, initializing its user data with the trailing arguments.
+ Child nodes will be subsequently created using the specified
+ allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_position_base</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_position_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_position_base</span></code>
+ object as a copy of the specified one. Child nodes will be subsequently
+ created using the specified allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_position_base</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_position_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_position_base</span></code>
+ object and moves the contents of the specified node to the new
+ one. Child nodes will be subsequently created using the specified
+ allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Position member read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">const_iterator</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">position_key</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the immutable iterator that points to this tree node.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Position member access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">iterator</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">position_key</span> <span class="keyword">const</span><span class="special">&);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the iterator that points to this tree node.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base.non_members"></a><a class="link" href="with_position_base.html#tree_node.reference.with_position_base.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following non-members are defined.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Position read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">with_position_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">>::</span><span class="identifier">const_iterator</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">with_position_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">position_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">position_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">with_position_base</span><span class="special"><</span>
+ <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+ <span class="special">>::</span><span class="identifier">const_iterator</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">with_position_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Position access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="identifier">with_position_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">>::</span><span class="identifier">iterator</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">with_position_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">>&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">position_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">position_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">with_position_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">>::</span><span class="identifier">iterator</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">with_position_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">>&</span> <span class="identifier">node</span><span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_position_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_position_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_position_base_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_position_base_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,157 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_position_base_gen<BaseGenerator></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>">
+<link rel="next" href="with_rb_flag.html" title="with_red_black_flag<BaseGenerator,T1,T2>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_position_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_rb_flag.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_position_base_gen"></a><a class="link" href="with_position_base_gen.html" title="with_position_base_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">with_position_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base_gen.description"></a><a class="link" href="with_position_base_gen.html#tree_node.reference.with_position_base_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base_gen.definition"></a><a class="link" href="with_position_base_gen.html#tree_node.reference.with_position_base_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_position.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base_gen.model_of"></a><a class="link" href="with_position_base_gen.html#tree_node.reference.with_position_base_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base_gen.tpl_param"></a><a class="link" href="with_position_base_gen.html#tree_node.reference.with_position_base_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <a class="link" href="with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base</span></code></a> will
+ inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base_gen.expressions"></a><a class="link" href="with_position_base_gen.html#tree_node.reference.with_position_base_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Derived</span></code> be the type
+ that will inherit from <a class="link" href="with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position_base</span></code></a>. Let <code class="computeroutput"><span class="identifier">Key</span></code> be the key type. Let <code class="computeroutput"><span class="identifier">Data</span></code> be the user data type. Let <code class="computeroutput"><span class="identifier">BaseGenerator</span></code> be a valid <code class="computeroutput"><span class="identifier">with_position_base_gen</span></code> template argument.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap3<span class="special"><</span>
+ <span class="identifier">with_position_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>">tree_node::with_position_base</a><Derived,BaseGenerator,Key,Data></code>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span>
+ <span class="identifier">with_position_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>">tree_node::with_position_base</a><Derived,BaseGenerator,Data,void></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_base_gen.complexity"></a><a class="link" href="with_position_base_gen.html#tree_node.reference.with_position_base_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_position_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_rb_flag.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_position_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_position_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,158 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_position_gen<BaseGenerator></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_position.html" title="with_position<BaseGenerator,T1,T2>">
+<link rel="next" href="with_position_base.html" title="with_position_base<Derived,BaseGenerator,T1,T2>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_position.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_position_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_position_gen"></a><a class="link" href="with_position_gen.html" title="with_position_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">with_position_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_gen.description"></a><a class="link" href="with_position_gen.html#tree_node.reference.with_position_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_gen.definition"></a><a class="link" href="with_position_gen.html#tree_node.reference.with_position_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_position.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_gen.model_of"></a><a class="link" href="with_position_gen.html#tree_node.reference.with_position_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_gen.tpl_param"></a><a class="link" href="with_position_gen.html#tree_node.reference.with_position_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <a class="link" href="with_position.html" title="with_position<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_position</span></code></a> will ultimately
+ inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_gen.expressions"></a><a class="link" href="with_position_gen.html#tree_node.reference.with_position_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Key</span></code> be the key type.
+ Let <code class="computeroutput"><span class="identifier">Data</span></code> be the user data
+ type. Let <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ be a valid <code class="computeroutput"><span class="identifier">with_position_gen</span></code>
+ template argument.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span>
+ <span class="identifier">with_position_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_position.html" title="with_position<BaseGenerator,T1,T2>">tree_node::with_position</a><BaseGenerator,Key,Data></code>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap1<span class="special"><</span>
+ <span class="identifier">with_position_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_position.html" title="with_position<BaseGenerator,T1,T2>">tree_node::with_position</a><BaseGenerator,Data,void></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_position_gen.complexity"></a><a class="link" href="with_position_gen.html#tree_node.reference.with_position_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_position.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_position_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_rb_flag.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_rb_flag.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,400 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_red_black_flag<BaseGenerator,T1,T2></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_position_base_gen.html" title="with_position_base_gen<BaseGenerator>">
+<link rel="next" href="with_rb_flag_gen.html" title="with_red_black_flag_gen<BaseGenerator>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_position_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_rb_flag_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_rb_flag"></a><a class="link" href="with_rb_flag.html" title="with_red_black_flag<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">with_red_black_flag</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag.description"></a><a class="link" href="with_rb_flag.html#tree_node.reference.with_rb_flag.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ In addition to the other operations it inherits from the return type of
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>, this <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a>
+ adaptor provides access to a flag that indicates whether the node is red
+ or black.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag.definition"></a><a class="link" href="with_rb_flag.html#tree_node.reference.with_rb_flag.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_red_black_flag.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_red_black_flag_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/with_red_black_flag.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag.tpl_param"></a><a class="link" href="with_rb_flag.html#tree_node.reference.with_rb_flag.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> model from
+ whose return type <code class="computeroutput"><span class="identifier">with_red_black_flag</span></code>
+ will ultimately inherit. [
+ </p>
+ </td>
+<td class="auto-generated"> </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type if <code class="computeroutput"><span class="identifier">T2</span></code>
+ is specified; the user data type otherwise.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type if specified; ignored otherwise.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span></code>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag.model_of"></a><a class="link" href="with_rb_flag.html#tree_node.reference.with_rb_flag.model_of" title="Model of">Model of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T2</span><span class="error">`</span> <span class="identifier">is</span> <span class="identifier">specified</span><span class="special">;</span>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> <span class="identifier">otherwise</span>
+<span class="special">*</span> <span class="identifier">any</span> <span class="identifier">other</span> <span class="identifier">concept</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">models</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag.public_bases"></a><a class="link" href="with_rb_flag.html#tree_node.reference.with_rb_flag.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="identifier">with_red_black_flag_base</span><span class="special"><</span>
+ <span class="identifier">with_red_black_flag</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="identifier">T2</span>
+<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag.members"></a><a class="link" href="with_rb_flag.html#tree_node.reference.with_rb_flag.members" title="Public Members">Public Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from <a class="link" href="with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base</span></code></a> and from
+ the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_red_black_flag</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_red_black_flag</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_red_black_flag</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_red_black_flag</span><span class="special">(</span><span class="identifier">with_red_black_flag</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_red_black_flag</span><span class="special">(</span>
+ <span class="identifier">with_red_black_flag</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_red_black_flag</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_red_black_flag</span><span class="special">(</span><span class="identifier">with_red_black_flag</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_red_black_flag</span><span class="special">(</span>
+ <span class="identifier">with_red_black_flag</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_red_black_flag</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_red_black_flag</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">with_red_black_flag</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Move assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_red_black_flag</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">with_red_black_flag</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Movable
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag.non_members"></a><a class="link" href="with_rb_flag.html#tree_node.reference.with_rb_flag.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<p>
+ Same as those inherited from <a class="link" href="with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base</span></code></a> and from
+ the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_position_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_rb_flag_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_rb_flag_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_rb_flag_base.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,703 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_red_black_flag_base<Derived,BaseGenerator,T1,T2></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_rb_flag_gen.html" title="with_red_black_flag_gen<BaseGenerator>">
+<link rel="next" href="with_rb_flag_base_gen.html" title="with_red_black_flag_gen<BaseGenerator>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_rb_flag_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_rb_flag_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_rb_flag_base"></a><a class="link" href="with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">with_red_black_flag_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span></code> </a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base.description"></a><a class="link" href="with_rb_flag_base.html#tree_node.reference.with_rb_flag_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="with_rb_flag.html" title="with_red_black_flag<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag</span></code></a>
+ class template inherits its functionality from this class template. They
+ differ only with regard to template parameters: the <a class="link" href="with_rb_flag.html" title="with_red_black_flag<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag</span></code></a> class template
+ is meant to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">with_red_black_flag_base</span></code>
+ is more suitable as a base class template from which other <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> adaptor class templates can derive
+ via the <a class="link" href="with_rb_flag_base_gen.html" title="with_red_black_flag_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base_gen</span></code></a>
+ <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base
+ Type Generator</strong></span></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base.definition"></a><a class="link" href="with_rb_flag_base.html#tree_node.reference.with_rb_flag_base.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_red_black_flag.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ Forward-declared:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_red_black_flag_fwd.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+<p>
+ To register under Boost.Typeof:
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/typeof/boost/tree_node/with_red_black_flag.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base.tpl_param"></a><a class="link" href="with_rb_flag_base.html#tree_node.reference.with_rb_flag_base.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Derived</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The most descendant type that will inherit from this one.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <code class="computeroutput"><span class="identifier">with_red_black_flag_base</span></code>
+ will inherit.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type if <code class="computeroutput"><span class="identifier">T2</span></code>
+ is not <code class="computeroutput"><span class="keyword">void</span></code>; the
+ user data type otherwise.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The user data type if not <code class="computeroutput"><span class="keyword">void</span></code>;
+ ignored otherwise.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base.model_of"></a><a class="link" href="with_rb_flag_base.html#tree_node.reference.with_rb_flag_base.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../concepts/associative_tree_node.html" title="Associative Tree Node"><span class="bold"><strong>Associative Tree Node</strong></span></a> <span class="keyword">if</span> <span class="error">`</span><span class="identifier">T2</span><span class="error">`</span> <span class="identifier">is</span> <span class="keyword">not</span> <span class="error">`</span><span class="keyword">void</span><span class="error">`</span><span class="special">;</span>
+ <a class="link" href="../concepts/non_assoc_tree_node.html" title="Non-Associative Tree Node"><span class="bold"><strong>Non-Associative Tree Node</strong></span></a> <span class="identifier">otherwise</span>
+<span class="special">*</span> <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a>
+<span class="special">*</span> <span class="identifier">any</span> <span class="identifier">other</span> <span class="identifier">concept</span> <span class="identifier">that</span> <span class="identifier">the</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <span class="error">`</span><span class="identifier">BaseGenerator</span><span class="error">`</span> <span class="identifier">models</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base.public_bases"></a><a class="link" href="with_rb_flag_base.html#tree_node.reference.with_rb_flag_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_void</span><span class="special"><</span><span class="identifier">T2</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap2</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T1</span><span class="special">></span>
+ <span class="special">,</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mpl</span><span class="special">::</span><span class="identifier">apply_wrap3</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span>
+<span class="special">>::</span><span class="identifier">type</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base.members"></a><a class="link" href="with_rb_flag_base.html#tree_node.reference.with_rb_flag_base.members" title="Members">Members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following members are defined:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Emplacement constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_red_black_flag_base</span><span class="special">(</span><span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Emplacement constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="special">...</span><span class="identifier">Args</span><span class="special">></span>
+<span class="keyword">explicit</span> <span class="identifier">with_red_black_flag_base</span><span class="special">(</span>
+ <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">container</span><span class="special">::</span><span class="identifier">allocator_arg_t</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+ <span class="special">,</span> <span class="identifier">Args</span><span class="special">&&</span> <span class="special">...</span><span class="identifier">args</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_red_black_flag_base</span></code>
+ object, initializing its user data with the trailing arguments.
+ Child nodes will be subsequently created using the specified
+ allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_red_black_flag_base</span><span class="special">(</span><span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived copy constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_red_black_flag_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">copy</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_red_black_flag_base</span></code>
+ object as a copy of the specified one. Child nodes will be subsequently
+ created using the specified allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_red_black_flag_base</span><span class="special">(</span><span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the <a class="link" href="../concepts/base_tree_node.html" title="Base Tree Node"><span class="bold"><strong>Base Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Derived move constructor with allocator
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">with_red_black_flag_base</span><span class="special">(</span>
+ <span class="identifier">Derived</span><span class="special">&&</span> <span class="identifier">source</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">allocator_reference</span> <span class="identifier">allocator</span>
+<span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">protected</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">with_red_black_flag_base</span></code>
+ object and moves the contents of the specified node to the new
+ one. Child nodes will be subsequently created using the specified
+ allocator (or a copy if <code class="computeroutput"><span class="keyword">const</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Red flag query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">red_flag_key</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns <code class="computeroutput"><span class="keyword">true</span></code> if
+ the flag is set to red, <code class="computeroutput"><span class="keyword">false</span></code>
+ if it is set to black.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Black flag query
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">bool</span> <span class="keyword">operator</span><span class="special">[](</span><span class="identifier">black_flag_key</span> <span class="keyword">const</span><span class="special">&)</span> <span class="keyword">const</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns <code class="computeroutput"><span class="keyword">true</span></code> if
+ the flag is set to black, <code class="computeroutput"><span class="keyword">false</span></code>
+ if it is set to red.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Red flag setting
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">set_red_flag</span><span class="special">(</span><span class="keyword">bool</span> <span class="identifier">flag</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Sets the flag to red if the argument evaluates to <code class="computeroutput"><span class="keyword">true</span></code>; sets the flag to black if
+ the argument evaluates to <code class="computeroutput"><span class="keyword">false</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Black flag setting
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">set_black_flag</span><span class="special">(</span><span class="keyword">bool</span> <span class="identifier">flag</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Sets the flag to black if the argument evaluates to <code class="computeroutput"><span class="keyword">true</span></code>; sets the flag to red if
+ the argument evaluates to <code class="computeroutput"><span class="keyword">false</span></code>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base.non_members"></a><a class="link" href="with_rb_flag_base.html#tree_node.reference.with_rb_flag_base.non_members" title="Non-members">Non-members</a>
+</h4></div></div></div>
+<p>
+ In addition to those inherited from the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>,
+ the following non-members are defined.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Name
+ </p>
+ </th>
+<th>
+ <p>
+ Definition
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Red flag key-value read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">></span>
+ <span class="keyword">bool</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">with_red_black_flag_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">red_flag_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">red_flag_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">bool</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">with_red_black_flag_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Black flag key-value read-only access
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">></span>
+ <span class="keyword">bool</span>
+ <span class="identifier">get</span><span class="special">(</span>
+ <span class="identifier">with_red_black_flag_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">black_flag_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">></span>
+ <span class="keyword">typename</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">enable_if</span><span class="special"><</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">tr1</span><span class="special">::</span><span class="identifier">is_same</span><span class="special"><</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">black_flag_key</span><span class="special">></span>
+ <span class="special">,</span> <span class="keyword">bool</span>
+ <span class="special">>::</span><span class="identifier">type</span>
+ <span class="identifier">get</span><span class="special">(</span><span class="identifier">with_red_black_flag_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">node</span><span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Red flag key-value modification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">></span>
+ <span class="keyword">void</span>
+ <span class="identifier">put</span><span class="special">(</span>
+ <span class="identifier">with_red_black_flag_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">>&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">red_flag_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">value</span>
+ <span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Black flag key-value modification
+ </p>
+ </td>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span>
+ <span class="keyword">typename</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BaseGenerator</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span>
+ <span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span>
+ <span class="special">></span>
+ <span class="keyword">void</span>
+ <span class="identifier">put</span><span class="special">(</span>
+ <span class="identifier">with_red_black_flag_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">>&</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">black_flag_key</span> <span class="keyword">const</span><span class="special">&</span> <span class="identifier">key</span>
+ <span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">value</span>
+ <span class="special">);</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree
+ Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_rb_flag_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_rb_flag_base_gen.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_rb_flag_base_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_rb_flag_base_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,184 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_red_black_flag_gen<BaseGenerator></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>">
+<link rel="next" href="tree_node_base.html" title="tree_node_base<Derived>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_rb_flag_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tree_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_rb_flag_base_gen"></a><a class="link" href="with_rb_flag_base_gen.html" title="with_red_black_flag_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">with_red_black_flag_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base_gen.synopsis"></a><a class="link" href="with_rb_flag_base_gen.html#tree_node.reference.with_rb_flag_base_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">with_red_black_flag_base_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">Derived</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">with_red_black_flag_base</span><span class="special"><</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base_gen.description"></a><a class="link" href="with_rb_flag_base_gen.html#tree_node.reference.with_rb_flag_base_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base_gen.definition"></a><a class="link" href="with_rb_flag_base_gen.html#tree_node.reference.with_rb_flag_base_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_red_black_flag.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base_gen.model_of"></a><a class="link" href="with_rb_flag_base_gen.html#tree_node.reference.with_rb_flag_base_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base_gen.tpl_param"></a><a class="link" href="with_rb_flag_base_gen.html#tree_node.reference.with_rb_flag_base_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <a class="link" href="with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base</span></code></a>
+ will inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base_gen.expressions"></a><a class="link" href="with_rb_flag_base_gen.html#tree_node.reference.with_rb_flag_base_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Derived</span></code> be the type
+ that will inherit from <a class="link" href="with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag_base</span></code></a>. Let
+ <code class="computeroutput"><span class="identifier">Key</span></code> be the key type. Let
+ <code class="computeroutput"><span class="identifier">Data</span></code> be the user data type.
+ Let <code class="computeroutput"><span class="identifier">BaseGenerator</span></code> be a
+ valid <code class="computeroutput"><span class="identifier">with_red_black_flag_base_gen</span></code>
+ template argument.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap3<span class="special"><</span>
+ <span class="identifier">with_red_black_flag_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>">tree_node::with_red_black_flag_base</a><Derived,BaseGenerator,Key,Data></code>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span>
+ <span class="identifier">with_red_black_flag_base_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>">tree_node::with_red_black_flag_base</a><Derived,BaseGenerator,Data,void></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_base_gen.complexity"></a><a class="link" href="with_rb_flag_base_gen.html#tree_node.reference.with_rb_flag_base_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_rb_flag_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="tree_node_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_rb_flag_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_rb_flag_gen.html 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,180 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_red_black_flag_gen<BaseGenerator></title>
+<link rel="stylesheet" href="http://www.boost.org/doc/libs/release/doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../../index.html" title="Chapter 1. tree_node 0.4">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_rb_flag.html" title="with_red_black_flag<BaseGenerator,T1,T2>">
+<link rel="next" href="with_rb_flag_base.html" title="with_red_black_flag_base<Derived,BaseGenerator,T1,T2>">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr><td valign="top"><img alt="C++ Boost" width="277" height="86" src="../../../../../../boost.png"></td></tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_rb_flag.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_rb_flag_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.with_rb_flag_gen"></a><a class="link" href="with_rb_flag_gen.html" title="with_red_black_flag_gen<BaseGenerator>"><code class="computeroutput"><span class="identifier">with_red_black_flag_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_gen.synopsis"></a><a class="link" href="with_rb_flag_gen.html#tree_node.reference.with_rb_flag_gen.synopsis" title="Synopsis">Synopsis</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span> <span class="keyword">namespace</span> <span class="identifier">tree_node</span> <span class="special">{</span>
+
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">with_red_black_flag_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">=</span> <span class="keyword">void</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">with_red_black_flag</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">,</span><span class="identifier">T1</span><span class="special">,</span><span class="identifier">T2</span><span class="special">></span> <span class="identifier">type</span><span class="special">;</span>
+ <span class="special">};</span>
+ <span class="special">};</span>
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_gen.description"></a><a class="link" href="with_rb_flag_gen.html#tree_node.reference.with_rb_flag_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_gen.definition"></a><a class="link" href="with_rb_flag_gen.html#tree_node.reference.with_rb_flag_gen.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span>boost/tree_node/with_red_black_flag.hpp<span class="special">></span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_gen.model_of"></a><a class="link" href="with_rb_flag_gen.html#tree_node.reference.with_rb_flag_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/node_type_generator.html" title="Node Type Generator"><span class="bold"><strong>Node
+ Type Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_gen.tpl_param"></a><a class="link" href="with_rb_flag_gen.html#tree_node.reference.with_rb_flag_gen.tpl_param" title="Template Parameters">Template
+ Parameters</a>
+</h4></div></div></div>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Parameter
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+<th>
+ <p>
+ Default
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The <a class="link" href="../concepts/base_type_generator.html" title="Base Type Generator"><span class="bold"><strong>Base Type Generator</strong></span></a> from whose
+ return type <a class="link" href="with_rb_flag.html" title="with_red_black_flag<BaseGenerator,T1,T2>"><code class="computeroutput"><span class="identifier">tree_node</span><span class="special">::</span><span class="identifier">with_red_black_flag</span></code></a>
+ will ultimately inherit.
+ </p>
+ </td>
+<td>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_gen.expressions"></a><a class="link" href="with_rb_flag_gen.html#tree_node.reference.with_rb_flag_gen.expressions" title="Expression Semantics">Expression
+ Semantics</a>
+</h4></div></div></div>
+<p>
+ Let <code class="computeroutput"><span class="identifier">Key</span></code> be the key type.
+ Let <code class="computeroutput"><span class="identifier">Data</span></code> be the user data
+ type. Let <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ be a valid <code class="computeroutput"><span class="identifier">with_red_black_flag_gen</span></code>
+ template argument.
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special"><</span>
+ <span class="identifier">with_red_black_flag_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Key</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_rb_flag.html" title="with_red_black_flag<BaseGenerator,T1,T2>">tree_node::with_red_black_flag</a><BaseGenerator,Key,Data></code>
+ </p>
+<p>
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap1<span class="special"><</span>
+ <span class="identifier">with_red_black_flag_gen</span><span class="special"><</span><span class="identifier">BaseGenerator</span><span class="special">></span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">>::</span><span class="identifier">type</span> <span class="identifier">r</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+<p>
+ <span class="bold"><strong>Return type:</strong></span> <code class="literal"><a class="link" href="with_rb_flag.html" title="with_red_black_flag<BaseGenerator,T1,T2>">tree_node::with_red_black_flag</a><BaseGenerator,Data,void></code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_rb_flag_gen.complexity"></a><a class="link" href="with_rb_flag_gen.html#tree_node.reference.with_rb_flag_gen.complexity" title="Complexity">Complexity</a>
+</h4></div></div></div>
+<p>
+ Compile time.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2011-2013 Cromwell D. Enage<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="with_rb_flag.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="with_rb_flag_base.html"><img src="http://www.boost.org/doc/libs/release/doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: sandbox/tree_node/libs/tree_node/doc/ref_accumulation_key.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_accumulation_key.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,86 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:accumulation_key `accumulation_key`]
+
+[section Synopsis]
+[reference__accumulation_key]
+[endsect]
+
+[section Description]
+Use this type to access statistical data stored in __Tree_Node__ objects of
+types ultimately inheriting from __tree_node_with_accumulation_base__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__accumulation_key__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__accumulation_key__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Key`]
+ [The type used to access the data to be accumulated.]
+ [
+ [^_result_of__has_key_<Node,Key>] must evaluate to __mpl_true__ for
+ some `Node node` storing the desired data.
+ ]
+ [__data_key__]
+ ]
+ [
+ [`Tag`]
+ [The type of the actual computation.]
+ [It must be a valid __Boost_Accumulators__ feature.]
+ [__accumulators_tag_sum__]
+ ]
+ [
+ [`IncludesAllDescendants`]
+ [
+ Configures the __tree_node_with_accumulation_base__ to include all
+ descendants of a target node for statistical evaluation if set to
+ __mpl_true__; otherwise, only the node's immediate children will be
+ included.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ [__mpl_true__]
+ ]
+ [
+ [`IncludesRoot`]
+ [
+ Configures the __tree_node_with_accumulation_base__ to include a
+ target node along with its children/descendants for statistical
+ evaluation if set to __mpl_true__; otherwise, the node will be
+ excluded from evaluation.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ [__mpl_true__]
+ ]
+ [
+ [`Value`]
+ [
+ The type of the accumulated result. If left unspecified, the
+ __tree_node_with_accumulation_base__ will use the type of the data
+ to be accumulated.
+ ]
+ []
+ [`void`]
+ ]
+]
+[endsect]
+
+[endsect] [/ accumulation_key]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_advance_binary.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_advance_binary.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,26 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:advance_binary `advance_binary()`]
+
+[section Synopsis]
+[reference__tree_node__advance_binary]
+[endsect]
+
+[section Description]
+
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__advance_binary__header__>
+``
+[endsect]
+
+[endsect] [/ advance_binary]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_assoc_cont_derived_body.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_assoc_cont_derived_body.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,45 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:assoc_cont_derived_body
+ `BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY`
+]
+
+[section Synopsis]
+[reference__macro__associative_container_derived_body]
+[endsect]
+
+[section Description]
+Meant to be used in the `public` scope of an __Associative_Container__ model
+that inherits from another.
+
+This macro defines the type definitions; the default, copy, and move
+constructors; and the copy and move assignment operators necessary for the
+`Derived` class to model the __Default_Constructible__, __Copy_Constructible__,
+__Assignable__, __Movable__, and __Associative_Container__ concepts.
+[endsect]
+
+[section Usage]
+``
+BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY(Derived, Base)
+``
+[endsect]
+
+[section Arguments]
+ * /Derived/ -- The name of the enclosing type.
+ * /Base/ -- The name of the type from which `Derived` inherits.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__preprocessor__header__>
+``
+[endsect]
+
+[endsect] [/ BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_assoc_node_base_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_assoc_node_base_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,71 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:assoc_node_base_gen `associative_node_base_gen<Selector>`]
+
+[section Synopsis]
+[reference__associative_node_base_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__associative_node__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Base_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Selector`]
+ [
+ The type that determines the child container type of
+ __associative_node_base__.
+ ]
+ [
+ * [^_is_recursive_selector_<Selector>] must return __mpl_true__.
+ * [^_is_associative_selector_<Selector>] must return __mpl_true__.
+ ]
+ [__ptr_mapS__]
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from __associative_node_base__.
+Let `Key` be the key type.
+Let `Data` be the user data type.
+Let `Selector` be a valid `associative_node_base_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap3_<
+ associative_node_base_gen<Selector>
+ , Derived
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:] [^_associative_node_base_<Derived,Key,Data,Selector>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ associative_node_base_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_associative_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_associative_node.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,311 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:associative_node `associative_node<Key,Data,Selector>`]
+
+[section Description]
+This class template is suitable for classes or algorithms that need to map keys
+to child nodes in a tree node data structure. Objects of this type can be
+stored by value, and their children can be accessed by their associated keys
+for fast lookup.
+
+If the user data type models the __Fusion_Associative_Sequence__ concept, then
+each of the elements within can be also be obtained through key-value access
+and set through key-value modification as defined by the __Tree_Node__ concept;
+more specifically, for some object `node` of type `Node` such that `Node` is a
+template instantiation of `associative_node`, then for any type `Key` such that
+[^_fusion_has_key_<Key>(get<_data_key_>(node))] returns `true`, so does
+[^_has_key_<Key>(node)].
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__associative_node__header__>
+``
+
+Forward-declared:
+
+``
+#include <__associative_node__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__associative_node__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Key`]
+ [
+ The type of a key object to be associated with a child of a
+ `associative_node`.
+ ]
+ []
+ []
+ ]
+ [
+ [`Data`]
+ [The type of the user data to be stored in an `associative_node`.]
+ []
+ []
+ ]
+ [
+ [`Selector`]
+ [The type that determines the child container type.]
+ [
+ * [^_is_recursive_selector_<Selector>] must return __mpl_true__.
+ * [^_is_associative_selector_<Selector>] must return __mpl_true__.
+ ]
+ [__ptr_mapS__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__
+ * __Reversible_Tree_Node__ if
+ [^_container_gen_<Selector,Key,associative_node>::type]
+ returns a __Reversible_Container__ model
+ * __Default_Constructible__ if `Data` is __Default_Constructible__
+ * __Copy_Constructible__ if `Data` is __Copy_Constructible__
+ * __Assignable__ if `Data` is __Copy_Constructible__ and __Movable__
+ * __Movable__ if `Data` is __Movable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__associative_node__bases]
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Super type]
+ [[reference__associative_node__super_t]]
+ [__Tree_Node__]
+ ]
+ [
+ [
+ Key type, data type, iterator range type, immutable iterator
+ range type, allocator type, allocator reference type
+ ]
+ [[reference__associative_node__traits]]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [[reference__associative_node__pointer]]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [[reference__associative_node__const_pointer]]
+ [__Tree_Node__]
+ ]
+ [
+ [Iterator type]
+ [[reference__associative_node__iterator]]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Immutable iterator type]
+ [[reference__associative_node__const_iterator]]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Reverse iterator type]
+ [[reference__associative_node__reverse_iterator]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Immutable reverse iterator type]
+ [[reference__associative_node__const_reverse_iterator]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Emplacement constructor]
+ [[reference__associative_node__emplacement_ctor]]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__associative_node__emplacement_ctor_w_allocator]]
+ [`associative_node`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ associative_node(associative_node const& copy);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [``
+ associative_node(
+ associative_node const& copy
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`associative_node`]
+ ]
+ [
+ [Move constructor]
+ [``
+ associative_node(associative_node&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ associative_node(
+ associative_node&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`associative_node`]
+ ]
+ [
+ [Copy assignment operator]
+ [``
+ associative_node& operator=(associative_node const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ associative_node& operator=(associative_node&&);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Parent access]
+ [[reference__associative_node_base__get_parent_ptr__const]]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [[reference__associative_node_base__get_parent_ptr]]
+ [__Tree_Node__]
+ ]
+ [
+ [Child creation]
+ [[reference__associative_node_base__emplace]]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child copy creation]
+ [[reference__associative_node_base__insert]]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [[reference__associative_node_base__cbegin]]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [[reference__associative_node_base__begin]]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [[reference__associative_node_base__cend]]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [[reference__associative_node_base__end]]
+ [__Tree_Node__]
+ ]
+ [
+ [Children reverse range begin access]
+ [[reference__associative_node_base__crbegin]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range begin access]
+ [[reference__associative_node_base__rbegin]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [[reference__associative_node_base__crend]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [[reference__associative_node_base__rend]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children range size query]
+ [[reference__associative_node_base__size]]
+ [__Tree_Node__]
+ ]
+ [
+ [Child search]
+ [[reference__associative_node_base__find__const]]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search]
+ [[reference__associative_node_base__find]]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search range]
+ [[reference__associative_node_base__equal_range__const]]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search range]
+ [[reference__associative_node_base__equal_range]]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Remove children]
+ [[reference__associative_node_base__erase]]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Leaf node query]
+ [[reference__associative_node_base__empty]]
+ [__Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [[reference__associative_node_base__clear]]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-Members]
+Same as those defined in __associative_node_base__.
+[endsect]
+
+[section Example]
+<__example_associative_node_cpp__>
+[endsect]
+
+[section Test]
+<__test_associative_node_cpp__>
+[endsect]
+
+[endsect] [/ associative_node]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_associative_node_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_associative_node_base.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,396 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:associative_node_base
+ `associative_node_base<Derived,Key,Data,Selector>`
+]
+
+[section Description]
+The __associative_node__ class template inherits its functionality from this
+class template. They differ only with regard to template parameters: the
+__associative_node__ class template is meant to be used directly as a data
+structure, while `associative_node_base` is more suitable as a base class
+template from which __Tree_Node__ adaptor class templates can derive via the
+__associative_node_base_gen__ __Base_Type_Generator__.
+
+If the user data type models the __Fusion_Associative_Sequence__ concept, then
+each of the elements within can be also be obtained through key-value access
+and set through key-value modification as defined by the __Tree_Node__ concept;
+more specifically, for some object `node` of type `Node` such that `Node`
+inherits from `associative_node_base`, then for any type `Key` such that
+[^_fusion_has_key_<Key>(get<_data_key_>(node))] returns `true`, so does
+[^_has_key_<Key>(node)].
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__associative_node__header__>
+``
+
+Forward-declared:
+
+``
+#include <__associative_node__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__associative_node__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ []
+ ]
+ [
+ [`Key`]
+ [The key type.]
+ []
+ ]
+ [
+ [`Data`]
+ [The user data type.]
+ []
+ ]
+ [
+ [`Selector`]
+ [The type that determines the child container type.]
+ [
+ * [^_is_recursive_selector_<Selector>] must return __mpl_true__.
+ * [^_is_associative_selector_<Selector>] must return __mpl_true__.
+ ]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__
+ * __Reversible_Tree_Node__ if [^_container_gen_<Selector,Key,Derived>::type]
+ returns a __Reversible_Container__ model
+ * __Base_Tree_Node__
+ * __Default_Constructible__ if `Data` is __Default_Constructible__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__associative_node_base__bases]
+[endsect]
+
+[section:members Members]
+Given:
+[reference__associative_node_base__children]
+[table
+ [[Name][Definition][Scope][Where defined]]
+ [
+ [Super type]
+ [[reference__associative_node_base__super_t]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [
+ Key type, data type, iterator range type, immutable iterator
+ range type, allocator type, allocator reference type
+ ]
+ [[reference__associative_node_base__traits]]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [[reference__associative_node_base__pointer]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [[reference__associative_node_base__const_pointer]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Iterator type]
+ [[reference__associative_node_base__iterator]]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Immutable iterator type]
+ [[reference__associative_node_base__const_iterator]]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Reverse iterator type]
+ [[reference__associative_node_base__reverse_iterator]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Immutable reverse iterator type]
+ [[reference__associative_node_base__const_reverse_iterator]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Emplacement constructor]
+ [[reference__associative_node_base__emplacement_ctor]]
+ [`protected`]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__associative_node_base__emplacement_ctor_w_allocator]]
+ [`protected`]
+ [`associative_node_base`]
+ ]
+ [
+ [Derived copy constructor]
+ [[reference__associative_node_base__derived_copy_ctor]]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived copy constructor with allocator]
+ [[reference__associative_node_base__derived_copy_ctor_w_allocator]]
+ [`protected`]
+ [`associative_node_base`]
+ ]
+ [
+ [Derived move constructor]
+ [``
+ associative_node_base(Derived&& source);
+ ``]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived move constructor with allocator]
+ [``
+ associative_node_base(
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`protected`]
+ [`associative_node_base`]
+ ]
+ [
+ [Copy or move notification]
+ [[reference__associative_node_base__on_post_copy_or_move]]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived copy assignment]
+ [[reference__associative_node_base__copy_assign]]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived move assignment]
+ [``
+ Derived& operator=(Derived&&);
+ ``]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [User data member read-only access]
+ [[reference__associative_node_base__key_value_operator__const]]
+ [`public`]
+ [`nary_node_base`]
+ ]
+ [
+ [User data member access]
+ [[reference__associative_node_base__key_value_operator]]
+ [`public`]
+ [`nary_node_base`]
+ ]
+ [
+ [Parent access]
+ [[reference__associative_node_base__get_parent_ptr__const]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [[reference__associative_node_base__get_parent_ptr]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child creation]
+ [[reference__associative_node_base__emplace]]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child copy creation]
+ [[reference__associative_node_base__insert]]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [[reference__associative_node_base__cbegin]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [[reference__associative_node_base__begin]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [[reference__associative_node_base__cend]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [[reference__associative_node_base__end]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children reverse range begin access]
+ [[reference__associative_node_base__crbegin]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range begin access]
+ [[reference__associative_node_base__rbegin]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [[reference__associative_node_base__crend]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [[reference__associative_node_base__rend]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children range size query]
+ [[reference__associative_node_base__size]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child search]
+ [[reference__associative_node_base__find__const]]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search]
+ [[reference__associative_node_base__find]]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search range]
+ [[reference__associative_node_base__equal_range__const]]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search range]
+ [[reference__associative_node_base__equal_range]]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Remove children]
+ [[reference__associative_node_base__erase]]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Leaf node query]
+ [[reference__associative_node_base__empty]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [[reference__associative_node_base__clear]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Derived access]
+ [``
+ const_pointer get_derived() const;
+ ``]
+ [`public`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived access]
+ [``
+ pointer get_derived();
+ ``]
+ [`public`]
+ [__Base_Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-Members]
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [User data read-only access]
+ [[reference__associative_node_base__at_data_key__const]]
+ [__Tree_Node__]
+ ]
+ [
+ [User data access]
+ [[reference__associative_node_base__at_data_key]]
+ [__Tree_Node__]
+ ]
+ [
+ [User data modification]
+ [[reference__associative_node_base__put_data]]
+ [__Tree_Node__]
+ ]
+ [
+ [Key-value read-only access]
+ [[reference__associative_node_base__key_value_operator__const]]
+ [__Tree_Node__]
+ ]
+ [
+ [Key-value access]
+ [[reference__associative_node_base__key_value_operator]]
+ [__Tree_Node__]
+ ]
+ [
+ [Key-value modification]
+ [[reference__associative_node_base__put]]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Non-Members]
+
+[endsect] [/ associative_node_base]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_associative_node_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_associative_node_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,70 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:associative_node_gen `associative_node_gen<Selector>`]
+
+[section Synopsis]
+[reference__associative_node_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__associative_node__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Node_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Selector`]
+ [
+ The type that determines the child container type of
+ __associative_node__.
+ ]
+ [
+ * [^_is_recursive_selector_<Selector>] must return __mpl_true__.
+ * [^_is_associative_selector_<Selector>] must return __mpl_true__.
+ ]
+ [__ptr_mapS__]
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from __associative_node_base__.
+Let `Key` be the key type.
+Let `Data` be the user data type.
+Let `Selector` be a valid `associative_node_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap2_<
+ associative_node_gen<Selector>
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:] [^_associative_node_<Key,Data,Selector>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ associative_node_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_at_key.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_at_key.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,35 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:at_key `result_of::at_key<Node,Key>`]
+
+[section Synopsis]
+[reference__tree_node__result_of__at_key]
+[endsect]
+
+[section Description]
+Let `Node` be a (possibly `const`-qualified) __Tree_Node__ model.
+Let `Key` be a type for which [^_result_of__has_key_<Node,Key>] evaluates to
+__mpl_true__.
+
+``
+ typedef result_of::at_key<Node,Key>::type r;
+``
+
+[*Return type:] The type of the result of using `get` to access the value
+associated with key type `Key` in `Node`.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__at_key__header__>
+``
+[endsect]
+
+[endsect] [/ at_key]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_avl_balancer.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_avl_balancer.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,26 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:avl_balancer `avl_balancer`]
+
+[section Synopsis]
+[reference__adelson_velskii_landis_balancer]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__avl_balancer__header__>
+``
+[endsect]
+
+[endsect] [/ avl_balancer]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_bin_descendant_at_index.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_bin_descendant_at_index.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,26 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:binary_descendant_at_index `binary_descendant_at_index()`]
+
+[section Synopsis]
+[reference__tree_node__binary_descendant_at_index]
+[endsect]
+
+[section Description]
+
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binary_descendant_at_index__header__>
+``
+[endsect]
+
+[endsect] [/ binary_descendant_at_index]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binary_descendant.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binary_descendant.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,26 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:binary_descendant `binary_descendant()`]
+
+[section Synopsis]
+[reference__tree_node__binary_descendant]
+[endsect]
+
+[section Description]
+
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binary_descendant__header__>
+``
+[endsect]
+
+[endsect] [/ binary_descendant]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binary_index_of.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binary_index_of.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,26 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:binary_index_of `binary_index_of()`]
+
+[section Synopsis]
+[reference__tree_node__binary_index_of]
+[endsect]
+
+[section Description]
+
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binary_index_of__header__>
+``
+[endsect]
+
+[endsect] [/ binary_index_of]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binary_lower_bound.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binary_lower_bound.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,26 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:binary_lower_bound `binary_lower_bound()`]
+
+[section Synopsis]
+[reference__tree_node__binary_lower_bound]
+[endsect]
+
+[section Description]
+
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binary_lower_bound__header__>
+``
+[endsect]
+
+[endsect] [/ binary_lower_bound]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binary_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binary_node.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,327 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:binary_node `binary_node<T,Size,AllocatorSelector>`]
+
+[section Description]
+This class template is suitable for classes or algorithms that require a
+binary tree node data structure. Objects of this type can be stored by value.
+
+If the user data type models the __Fusion_Associative_Sequence__ concept, then
+each of the elements within can be also be obtained through key-value access
+and set through key-value modification as defined by the __Tree_Node__ concept;
+more specifically, for some object `node` of type `Node` such that `Node` is a
+template instantiation of `binary_node`, then for any type `Key` such that
+[^_fusion_has_key_<Key>(get<_data_key_>(node))] returns `true`, so does
+[^_has_key_<Key>(node)].
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binary_node__header__>
+``
+
+Forward-declared:
+
+``
+#include <__binary_node__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__binary_node__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`T`]
+ [The type of the user data to be stored in a `binary_node`.]
+ []
+ ]
+ [
+ [`Size`]
+ [The size type.]
+ [`uint32_t`]
+ ]
+ [
+ [`AllocatorSelector`]
+ [
+ A __Unary_Metafunction_Class__ that takes in `binary_node` and
+ returns either an allocator model or a mutable reference to one.
+ ]
+ [__std_allocator_selector__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Binary_Tree_Node__
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+ * __Copy_Constructible__ if `T` is __Copy_Constructible__
+ * __Assignable__ if `T` is __Copy_Constructible__ and __Movable__
+ * __Movable__ if `T` is __Movable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__binary_node__bases]
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Super type]
+ [[reference__binary_node__super_t]]
+ [__Tree_Node__]
+ ]
+ [
+ [Data type, allocator type, allocator reference type]
+ [[reference__binary_node__traits]]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [[reference__binary_node__pointer]]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [[reference__binary_node__const_pointer]]
+ [__Tree_Node__]
+ ]
+ [
+ [Iterator type]
+ [[reference__binary_node__iterator]]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Immutable iterator type]
+ [[reference__binary_node__const_iterator]]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Reverse iterator type]
+ [[reference__binary_node__reverse_iterator]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Immutable reverse iterator type]
+ [[reference__binary_node__const_reverse_iterator]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Size type]
+ [[reference__binary_node__size_type]]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor]
+ [[reference__binary_node__emplacement_ctor]]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__binary_node__emplacement_ctor_w_allocator]]
+ [`binary_node`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ binary_node(binary_node const& copy);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [``
+ binary_node(
+ binary_node const& copy
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`binary_node`]
+ ]
+ [
+ [Move constructor]
+ [``
+ binary_node(binary_node&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ binary_node(
+ binary_node&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`binary_node`]
+ ]
+ [
+ [Copy assignment operator]
+ [``
+ binary_node& operator=(binary_node const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ binary_node& operator=(binary_node&&);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Parent access]
+ [[reference__binary_node_base__get_parent_ptr__const]]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [[reference__binary_node_base__get_parent_ptr]]
+ [__Tree_Node__]
+ ]
+ [
+ [Left child creation]
+ [[reference__binary_node_base__emplace_left]]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child copy creation]
+ [[reference__binary_node_base__insert_left]]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child creation]
+ [[reference__binary_node_base__emplace_right]]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child copy creation]
+ [[reference__binary_node_base__insert_right]]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child access]
+ [[reference__binary_node_base__get_left_child_ptr__const]]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child access]
+ [[reference__binary_node_base__get_left_child_ptr]]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child access]
+ [[reference__binary_node_base__get_right_child_ptr__const]]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child access]
+ [[reference__binary_node_base__get_right_child_ptr]]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [[reference__binary_node_base__cbegin]]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [[reference__binary_node_base__begin]]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [[reference__binary_node_base__cend]]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [[reference__binary_node_base__end]]
+ [__Tree_Node__]
+ ]
+ [
+ [Children reverse range begin access]
+ [[reference__binary_node_base__crbegin]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range begin access]
+ [[reference__binary_node_base__rbegin]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [[reference__binary_node_base__crend]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [[reference__binary_node_base__rend]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children range size query]
+ [[reference__binary_node_base__size]]
+ [__Tree_Node__]
+ ]
+ [
+ [Rotate left]
+ [[reference__binary_node_base__rotate_left]]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Rotate right]
+ [[reference__binary_node_base__rotate_right]]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Remove left child]
+ [[reference__binary_node_base__erase_left]]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Remove right child]
+ [[reference__binary_node_base__erase_right]]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Leaf node query]
+ [[reference__binary_node_base__empty]]
+ [__Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [[reference__binary_node_base__clear]]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-Members]
+Same as those defined in __binary_node_base__.
+[endsect]
+
+[section Example]
+<__example_binary_node_cpp__>
+[endsect]
+
+[section Test]
+<__test_binary_node_cpp__>
+[endsect]
+
+[endsect] [/ binary_node]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binary_node_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binary_node_base.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,424 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:binary_node_base `binary_node_base<Derived,T,Selector>`]
+
+[section Description]
+The __binary_node__ class template inherits its functionality from this class
+template. They differ only with regard to template parameters: the
+__binary_node__ class template is meant to be used directly as a data
+structure, while `binary_node_base` is more suitable as a base class template
+from which __Tree_Node__ adaptor class templates can derive via the
+__binary_node_base_gen__ __Base_Type_Generator__.
+
+If the user data type models the __Fusion_Associative_Sequence__ concept, then
+each of the elements within can be also be obtained through key-value access
+and set through key-value modification as defined by the __Tree_Node__ concept;
+more specifically, for some object `node` of type `Node` such that `Node`
+inherits from `binary_node_base`, then for any type `Key` such that
+[^_fusion_has_key_<Key>(get<_data_key_>(node))] returns `true`, so does
+[^_has_key_<Key>(node)].
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binary_node__header__>
+``
+
+Forward-declared:
+
+``
+#include <__binary_node__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__binary_node__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ []
+ ]
+ [
+ [`T`]
+ [The user data type.]
+ []
+ ]
+ [
+ [`Size`]
+ [The size type.]
+ []
+ ]
+ [
+ [`Selector`]
+ [
+ A __Unary_Metafunction_Class__ that takes in `binary_node` and
+ returns either an allocator model or a mutable reference to one.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Binary_Tree_Node__
+ * __Base_Tree_Node__
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__binary_node_base__bases]
+[endsect]
+
+[section:members Members]
+[table
+ [[Name][Definition][Scope][Where defined]]
+ [
+ [Super type]
+ [[reference__binary_node_base__super_t]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Data type, allocator type, allocator reference type]
+ [[reference__binary_node_base__traits]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [[reference__binary_node_base__pointer]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [[reference__binary_node_base__const_pointer]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Iterator type]
+ [[reference__binary_node_base__iterator]]
+ [`public`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Immutable iterator type]
+ [[reference__binary_node_base__const_iterator]]
+ [`public`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Reverse iterator type]
+ [[reference__binary_node_base__reverse_iterator]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Immutable reverse iterator type]
+ [[reference__binary_node_base__const_reverse_iterator]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Size type]
+ [[reference__binary_node_base__size_type]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor]
+ [[reference__binary_node_base__emplacement_ctor]]
+ [`protected`]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__binary_node_base__emplacement_ctor_w_allocator]]
+ [`protected`]
+ [`binary_node_base`]
+ ]
+ [
+ [Derived copy constructor]
+ [[reference__binary_node_base__derived_copy_ctor]]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived copy constructor with allocator]
+ [[reference__binary_node_base__derived_copy_ctor_w_allocator]]
+ [`binary_node_base`]
+ ]
+ [
+ [Derived move constructor]
+ [``
+ binary_node_base(Derived&& source);
+ ``]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived move constructor with allocator]
+ [``
+ binary_node_base(
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`protected`]
+ [`binary_node_base`]
+ ]
+ [
+ [Copy or move notification]
+ [[reference__binary_node_base__on_post_copy_or_move]]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived copy assignment]
+ [[reference__binary_node_base__copy_assign]]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived move assignment]
+ [``
+ void move_assign(Derived&& source);
+ ``]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [User data member read-only access]
+ [[reference__binary_node_base__key_value_operator__const]]
+ [`public`]
+ [`binary_node_base`]
+ ]
+ [
+ [User data member access]
+ [[reference__binary_node_base__key_value_operator]]
+ [`public`]
+ [`binary_node_base`]
+ ]
+ [
+ [Parent access]
+ [[reference__binary_node_base__get_parent_ptr__const]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [[reference__binary_node_base__get_parent_ptr]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Left child creation]
+ [[reference__binary_node_base__emplace_left]]
+ [`public`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child copy creation]
+ [[reference__binary_node_base__insert_left]]
+ [`public`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child creation]
+ [[reference__binary_node_base__emplace_right]]
+ [`public`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child copy creation]
+ [[reference__binary_node_base__insert_right]]
+ [`public`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child access]
+ [[reference__binary_node_base__get_left_child_ptr__const]]
+ [`public`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child access]
+ [[reference__binary_node_base__get_left_child_ptr]]
+ [`public`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child access]
+ [[reference__binary_node_base__get_right_child_ptr__const]]
+ [`public`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child access]
+ [[reference__binary_node_base__get_right_child_ptr]]
+ [`public`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [[reference__binary_node_base__cbegin]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [[reference__binary_node_base__begin]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [[reference__binary_node_base__cend]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [[reference__binary_node_base__end]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children reverse range begin access]
+ [[reference__binary_node_base__crbegin]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range begin access]
+ [[reference__binary_node_base__rbegin]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [[reference__binary_node_base__crend]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [[reference__binary_node_base__rend]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children range size query]
+ [[reference__binary_node_base__size]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Rotate left]
+ [[reference__binary_node_base__rotate_left]]
+ [`public`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Rotate right]
+ [[reference__binary_node_base__rotate_right]]
+ [`public`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Remove left child]
+ [[reference__binary_node_base__erase_left]]
+ [`public`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Remove right child]
+ [[reference__binary_node_base__erase_right]]
+ [`public`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Leaf node query]
+ [[reference__binary_node_base__empty]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [[reference__binary_node_base__clear]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Derived access]
+ [``
+ const_pointer get_derived() const;
+ ``]
+ [`public`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived access]
+ [``
+ pointer get_derived();
+ ``]
+ [`public`]
+ [__Base_Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-Members]
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [User data read-only access]
+ [[reference__binary_node_base__at_data_key__const]]
+ [__Tree_Node__]
+ ]
+ [
+ [User data access]
+ [[reference__binary_node_base__at_data_key]]
+ [__Tree_Node__]
+ ]
+ [
+ [User data modification]
+ [[reference__binary_node_base__put_data]]
+ [__Tree_Node__]
+ ]
+ [
+ [Key-value read-only access]
+ [[reference__binary_node_base__key_value_operator__const]]
+ [__Tree_Node__]
+ ]
+ [
+ [Key-value access]
+ [[reference__binary_node_base__key_value_operator]]
+ [__Tree_Node__]
+ ]
+ [
+ [Key-value modification]
+ [[reference__binary_node_base__put]]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Non-Members]
+
+[endsect] [/ binary_node_base]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binary_node_base_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binary_node_base_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,79 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:binary_node_base_gen `binary_node_base_gen<Size,AllocatorSelector>`]
+
+[section Synopsis]
+[reference__binary_node_base_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binary_node__header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`Size`]
+ [The size type of the return type of this metafunction class.]
+ [`uint32_t`]
+ ]
+ [
+ [`AllocatorSelector`]
+ [
+ A __Unary_Metafunction_Class__ that takes in the return type of
+ this metafunction class and returns either an allocator model or a
+ mutable reference to one.
+ ]
+ [__std_allocator_selector__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+__Base_Type_Generator__
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from __binary_node_base__.
+Let `T` be the user data type.
+
+``
+ typedef _mpl_apply_wrap2_<
+ binary_node_base_gen<Size,AllocatorSelector>
+ , Derived
+ , T
+ >::type
+ r;
+``
+
+[*Return type:]
+``
+_binary_node_base_<
+ Derived
+ , T
+ , Size
+ , _mpl_apply_wrap1_<AllocatorSelector,Derived>::type
+>
+``
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ binary_node_base_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binary_node_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binary_node_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,66 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:binary_node_gen `binary_node_gen<Size,AllocatorSelector>`]
+
+[section Synopsis]
+[reference__binary_node_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binary_node__header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`Size`]
+ [The size type of the return type of this metafunction class.]
+ [`uint32_t`]
+ ]
+ [
+ [`AllocatorSelector`]
+ [
+ A __Unary_Metafunction_Class__ that takes in the return type of
+ this metafunction class and returns either an allocator model or a
+ mutable reference to one.
+ ]
+ [__std_allocator_selector__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+__Node_Type_Generator__
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `T` be the user data type.
+
+``
+ typedef _mpl_apply_wrap1_<binary_node_gen<Size,AllocatorSelector>,T>::type
+ r;
+``
+
+[*Return type:] [^_binary_node_<T,Size,AllocatorSelector>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ binary_node_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binary_upper_bound.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binary_upper_bound.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,26 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:binary_upper_bound `binary_upper_bound()`]
+
+[section Synopsis]
+[reference__tree_node__binary_upper_bound]
+[endsect]
+
+[section Description]
+
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binary_upper_bound__header__>
+``
+[endsect]
+
+[endsect] [/ binary_upper_bound]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binode_assoc_container.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binode_assoc_container.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,379 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:binode_assoc_container
+ `binode_associative_container<
+ NodeGenerator
+ , T1
+ , T2
+ , IsMultipleAssociative
+ , CompareSelector
+ , Balancer
+ >`
+]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binode_associative_container__header__>
+``
+
+Forward-declared:
+
+``
+#include <__binode_associative_container__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__binode_associative_container__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`NodeGenerator`]
+ [
+ A __Node_Type_Generator__ that takes in the value type and returns
+ a __Binary_Tree_Node__ model.
+ ]
+ []
+ ]
+ [
+ [`T1`]
+ [The key type.]
+ []
+ ]
+ [
+ [`T2`]
+ [The mapped type; ignored if `void`.]
+ []
+ ]
+ [
+ [`IsMultipleAssociative`]
+ [
+ A __Boolean_Integral_Constant__ that determines whether this type
+ will model the __Multiple_Sorted_Associative_Container__ concept or
+ the __Unique_Sorted_Associative_Container__ concept.
+ ]
+ []
+ ]
+ [
+ [`CompareSelector`]
+ [
+ A __Unary_Metafunction_Class__ that takes in the value type and
+ returns a __Strict_Weak_Ordering__ model.
+ ]
+ []
+ ]
+ [
+ [`Balancer`]
+ [TODO.]
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Simple_Associative_Container__ if `T2` is `void`,
+ __Pair_Associative_Container__ otherwise
+ * __Multiple_Sorted_Associative_Container__ if `IsMultipleAssociative`
+ evaluates to __mpl_true__, __Unique_Sorted_Associative_Container__
+ otherwise
+ * __Indexable_Container__ if the value associated with __count_key__ exists
+ for the return type of `NodeGenerator`
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+ * __Copy_Constructible__ if `T` is __Copy_Constructible__
+ * __Assignable__ if `T` is __Copy_Constructible__ and __Movable__
+ * __Movable__ if `T` is __Movable__
+
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Key type]
+ [[reference__binode_associative_container__key_type]]
+ [__Associative_Container__]
+ ]
+ [
+ [Value type]
+ [[reference__binode_associative_container__value_type]]
+ [__Associative_Container__]
+ ]
+ [
+ [Reference type]
+ [[reference__binode_associative_container__reference]]
+ [__Container__]
+ ]
+ [
+ [Reference-to-const type]
+ [[reference__binode_associative_container__const_reference]]
+ [__Container__]
+ ]
+ [
+ [Pointer type]
+ [[reference__binode_associative_container__pointer]]
+ [__Container__]
+ ]
+ [
+ [Pointer-to-const type]
+ [[reference__binode_associative_container__const_pointer]]
+ [__Container__]
+ ]
+ [
+ [Node type]
+ [[reference__binode_associative_container__node]]
+ [`binode_associative_container`]
+ ]
+]
+
+Also, given:
+[reference__binode_associative_container__transform_function]
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Iterator type]
+ [[reference__binode_associative_container__iterator]]
+ [__Container__]
+ ]
+ [
+ [Immutable iterator type]
+ [[reference__binode_associative_container__const_iterator]]
+ [__Container__]
+ ]
+ [
+ [Reverse iterator type]
+ [[reference__binode_associative_container__reverse_iterator]]
+ [__Reversible_Container__]
+ ]
+ [
+ [Immutable reverse iterator type]
+ [[reference__binode_associative_container__const_reverse_iterator]]
+ [__Reversible_Container__]
+ ]
+ [
+ [Size type]
+ [[reference__binode_associative_container__size_type]]
+ [__Container__]
+ ]
+ [
+ [Key compare type]
+ [[reference__binode_associative_container__key_compare]]
+ [__Associative_Container__]
+ ]
+ [
+ [Value compare type]
+ [[reference__binode_associative_container__value_compare]]
+ [__Associative_Container__]
+ ]
+ [
+ [Allocator type]
+ [[reference__binode_associative_container__allocator_type]]
+ [`binode_associative_container`]
+ ]
+ [
+ [Default constructor]
+ [[reference__binode_associative_container__default_ctor]]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor with allocator]
+ [[reference__binode_associative_container__ctor_w_alloc]]
+ [`binode_associative_container`]
+ ]
+ [
+ [Copy constructor]
+ [[reference__binode_associative_container__copy_ctor]]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [[reference__binode_associative_container__copy_ctor_w_alloc]]
+ [`binode_associative_container`]
+ ]
+ [
+ [Move constructor]
+ [``
+ binode_associative_container(
+ binode_associative_container&& source
+ );
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ binode_associative_container(
+ binode_associative_container&& source
+ , allocator_type const& allocator
+ );
+ ``]
+ [`binode_associative_container`]
+ ]
+ [
+ [Copy assignment operator]
+ [[reference__binode_associative_container__copy_assign]]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ binode_associative_container&
+ operator=(binode_associative_container&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Destructor]
+ [[reference__binode_associative_container__dtor]]
+ [`binode_associative_container`]
+ ]
+ [
+ [Root node read-only access]
+ [[reference__binode_associative_container__data]]
+ [`binode_associative_container`]
+ ]
+ [
+ [Beginning of read-only range]
+ [[reference__binode_associative_container__cbegin]]
+ [__Container__]
+ ]
+ [
+ [Beginning of range]
+ [[reference__binode_associative_container__begin]]
+ [__Container__]
+ ]
+ [
+ [End of read-only range]
+ [[reference__binode_associative_container__cend]]
+ [__Container__]
+ ]
+ [
+ [End of range]
+ [[reference__binode_associative_container__end]]
+ [__Container__]
+ ]
+ [
+ [Beginning of read-only reverse range]
+ [[reference__binode_associative_container__crbegin]]
+ [__Reversible_Container__]
+ ]
+ [
+ [Beginning of reverse range]
+ [[reference__binode_associative_container__rbegin]]
+ [__Reversible_Container__]
+ ]
+ [
+ [End of read-only reverse range]
+ [[reference__binode_associative_container__crend]]
+ [__Reversible_Container__]
+ ]
+ [
+ [End of reverse range]
+ [[reference__binode_associative_container__rend]]
+ [__Reversible_Container__]
+ ]
+ [
+ [Key-value read-only access]
+ [[reference__binode_associative_container__cfind]]
+ [__Associative_Container__]
+ ]
+ [
+ [Key-value access]
+ [[reference__binode_associative_container__find]]
+ [__Associative_Container__]
+ ]
+ [
+ [Beginning of key-value range read-only access]
+ [[reference__binode_associative_container__lower_bound__const]]
+ [__Sorted_Associative_Container__]
+ ]
+ [
+ [Beginning of key-value range access]
+ [[reference__binode_associative_container__lower_bound]]
+ [__Sorted_Associative_Container__]
+ ]
+ [
+ [End of key-value range read-only access]
+ [[reference__binode_associative_container__upper_bound__const]]
+ [__Sorted_Associative_Container__]
+ ]
+ [
+ [End of key-value range access]
+ [[reference__binode_associative_container__upper_bound]]
+ [__Sorted_Associative_Container__]
+ ]
+ [
+ [Key-value range read-only access]
+ [[reference__binode_associative_container__equal_range__const]]
+ [__Associative_Container__]
+ ]
+ [
+ [Key-value range access]
+ [[reference__binode_associative_container__equal_range]]
+ [__Associative_Container__]
+ ]
+ [
+ [Key-value insertion]
+ [[reference__binode_associative_container__insert]]
+ [__Associative_Container__]
+ ]
+ [
+ [Key-value emplacement]
+ [[reference__binode_associative_container__emplace]]
+ [__Associative_Container__]
+ ]
+ [
+ [Key erasure]
+ [[reference__binode_associative_container__erase]]
+ [__Sequence__]
+ ]
+ [
+ [Empty container query]
+ [[reference__binode_associative_container__empty]]
+ [__Container__]
+ ]
+ [
+ [Remove all elements]
+ [[reference__binode_associative_container__clear]]
+ [__Sequence__]
+ ]
+ [
+ [Size query]
+ [[reference__binode_associative_container__size]]
+ [__Container__]
+ ]
+ [
+ [Element read-only access]
+ [[reference__binode_associative_container__index_operator__const]]
+ [__Indexable_Container__]
+ ]
+ [
+ [Element access]
+ [[reference__binode_associative_container__index_operator]]
+ [__Indexable_Container__]
+ ]
+]
+[endsect] [/ Members]
+
+[section Test]
+<__test_containers_cpp__>
+[endsect]
+
+[endsect] [/ binode_associative_container]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binode_container.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binode_container.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,347 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:binode_container `binode_container<NodeGenerator,T,Balancer>`]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binode_container__header__>
+``
+
+Forward-declared:
+
+``
+#include <__binode_container__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__binode_container__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`NodeGenerator`]
+ [
+ A __Node_Type_Generator__ that takes in the value type and returns
+ a __Binary_Tree_Node__ model.
+ ]
+ []
+ ]
+ [
+ [`T`]
+ [The value type.]
+ []
+ ]
+ [
+ [`Balancer`]
+ [TODO.]
+ [__red_black_balancer__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Front_Insertion_Sequence__
+ * __Back_Insertion_Sequence__
+ * __Indexable_Container__ if the value associated with __count_key__ exists
+ for the return type of `NodeGenerator`
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+ * __Copy_Constructible__ if `T` is __Copy_Constructible__
+ * __Assignable__ if `T` is __Copy_Constructible__ and __Movable__
+ * __Movable__ if `T` is __Movable__
+
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Value type]
+ [[reference__binode_container__value_type]]
+ [__Container__]
+ ]
+ [
+ [Reference type]
+ [[reference__binode_container__reference]]
+ [__Container__]
+ ]
+ [
+ [Reference-to-const type]
+ [[reference__binode_container__const_reference]]
+ [__Container__]
+ ]
+ [
+ [Pointer type]
+ [[reference__binode_container__pointer]]
+ [__Container__]
+ ]
+ [
+ [Pointer-to-const type]
+ [[reference__binode_container__const_pointer]]
+ [__Container__]
+ ]
+ [
+ [Node type]
+ [[reference__binode_container__node]]
+ [`binode_container`]
+ ]
+]
+
+Also, given:
+[reference__binode_container__transform_function]
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Iterator type]
+ [[reference__binode_container__iterator]]
+ [__Container__]
+ ]
+ [
+ [Immutable iterator type]
+ [[reference__binode_container__const_iterator]]
+ [__Container__]
+ ]
+ [
+ [Reverse iterator type]
+ [[reference__binode_container__reverse_iterator]]
+ [__Reversible_Container__]
+ ]
+ [
+ [Immutable reverse iterator type]
+ [[reference__binode_container__const_reverse_iterator]]
+ [__Reversible_Container__]
+ ]
+ [
+ [Size type]
+ [[reference__binode_container__size_type]]
+ [__Container__]
+ ]
+ [
+ [Allocator type]
+ [[reference__binode_container__allocator_type]]
+ [`binode_container`]
+ ]
+ [
+ [Default constructor]
+ [[reference__binode_container__default_ctor]]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor with allocator]
+ [[reference__binode_container__ctor_w_alloc]]
+ [`binode_container`]
+ ]
+ [
+ [Copy constructor]
+ [[reference__binode_container__copy_ctor]]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [[reference__binode_container__copy_ctor_w_alloc]]
+ [`binode_container`]
+ ]
+ [
+ [Move constructor]
+ [``
+ binode_container(binode_container&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ binode_container(
+ binode_container&& source
+ , allocator_type const& allocator
+ );
+ ``]
+ [`binode_container`]
+ ]
+ [
+ [Copy assignment operator]
+ [[reference__binode_container__copy_assign]]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ binode_container& operator=(binode_container&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Destructor]
+ [[reference__binode_container__dtor]]
+ [`binode_container`]
+ ]
+ [
+ [Root node read-only access]
+ [[reference__binode_container__data__const]]
+ [`binode_container`]
+ ]
+ [
+ [Root node access]
+ [[reference__binode_container__data]]
+ [`binode_container`]
+ ]
+ [
+ [Beginning of read-only range]
+ [[reference__binode_container__cbegin]]
+ [__Container__]
+ ]
+ [
+ [Beginning of range]
+ [[reference__binode_container__begin]]
+ [__Container__]
+ ]
+ [
+ [End of read-only range]
+ [[reference__binode_container__cend]]
+ [__Container__]
+ ]
+ [
+ [End of range]
+ [[reference__binode_container__end]]
+ [__Container__]
+ ]
+ [
+ [Beginning of read-only reverse range]
+ [[reference__binode_container__crbegin]]
+ [__Reversible_Container__]
+ ]
+ [
+ [Beginning of reverse range]
+ [[reference__binode_container__rbegin]]
+ [__Reversible_Container__]
+ ]
+ [
+ [End of read-only reverse range]
+ [[reference__binode_container__crend]]
+ [__Reversible_Container__]
+ ]
+ [
+ [End of reverse range]
+ [[reference__binode_container__rend]]
+ [__Reversible_Container__]
+ ]
+ [
+ [Back read-only access]
+ [[reference__binode_container__cback]]
+ [__Sequence__]
+ ]
+ [
+ [Back access]
+ [[reference__binode_container__back]]
+ [__Sequence__]
+ ]
+ [
+ [Back insertion]
+ [[reference__binode_container__push_back]]
+ [__Back_Insertion_Sequence__]
+ ]
+ [
+ [Back emplacement]
+ [[reference__binode_container__emplace_back]]
+ [__Back_Insertion_Sequence__]
+ ]
+ [
+ [Back removal]
+ [[reference__binode_container__pop_back]]
+ [__Back_Insertion_Sequence__]
+ ]
+ [
+ [Front read-only access]
+ [[reference__binode_container__cfront]]
+ [__Sequence__]
+ ]
+ [
+ [Front access]
+ [[reference__binode_container__front]]
+ [__Sequence__]
+ ]
+ [
+ [Front insertion]
+ [[reference__binode_container__push_front]]
+ [__Front_Insertion_Sequence__]
+ ]
+ [
+ [Front emplacement]
+ [[reference__binode_container__emplace_front]]
+ [__Front_Insertion_Sequence__]
+ ]
+ [
+ [Front removal]
+ [[reference__binode_container__pop_front]]
+ [__Front_Insertion_Sequence__]
+ ]
+ [
+ [Insertion]
+ [[reference__binode_container__insert]]
+ [__Sequence__]
+ ]
+ [
+ [Emplacement]
+ [[reference__binode_container__emplace]]
+ [__Sequence__]
+ ]
+ [
+ [Erasure]
+ [[reference__binode_container__erase]]
+ [__Sequence__]
+ ]
+ [
+ [Range erasure]
+ [[reference__binode_container__erase_range]]
+ [__Sequence__]
+ ]
+ [
+ [Empty container query]
+ [[reference__binode_container__empty]]
+ [__Container__]
+ ]
+ [
+ [Remove all elements]
+ [[reference__binode_container__clear]]
+ [__Sequence__]
+ ]
+ [
+ [Size query]
+ [[reference__binode_container__size]]
+ [__Container__]
+ ]
+ [
+ [Element read-only access]
+ [[reference__binode_container__index_operator__const]]
+ [__Indexable_Container__]
+ ]
+ [
+ [Element access]
+ [[reference__binode_container__index_operator]]
+ [__Indexable_Container__]
+ ]
+]
+[endsect] [/ Members]
+
+[section Test]
+<__test_containers_cpp__>
+[endsect]
+
+[endsect] [/ binode_container]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binode_map.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binode_map.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,170 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:binode_map
+ `binode_map<NodeGenerator,Key,Mapped,CompareSelector,Balancer>`
+]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binode_associative_container__header__>
+``
+
+Forward-declared:
+
+``
+#include <__binode_associative_container__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__binode_associative_container__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`NodeGenerator`]
+ [
+ A __Node_Type_Generator__ that takes in the value type and returns
+ a __Binary_Tree_Node__ model.
+ ]
+ []
+ ]
+ [
+ [`Key`]
+ [The key type.]
+ []
+ ]
+ [
+ [`Mapped`]
+ [The mapped type.]
+ []
+ ]
+ [
+ [`CompareSelector`]
+ [
+ A __Unary_Metafunction_Class__ that takes in the value type and
+ returns a __Strict_Weak_Ordering__ model.
+ ]
+ [__default_ordering_selector__]
+ ]
+ [
+ [`Balancer`]
+ [TODO.]
+ [__red_black_balancer__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Pair_Associative_Container__
+ * __Unique_Sorted_Associative_Container__
+ * __Indexable_Container__ if the value associated with __count_key__ exists
+ for the return type of `NodeGenerator`
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+ * __Copy_Constructible__ if `T` is __Copy_Constructible__
+ * __Assignable__ if `T` is __Copy_Constructible__ and __Movable__
+ * __Movable__ if `T` is __Movable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__binode_map__bases]
+[endsect]
+
+[section:members Public Members]
+In addition to those inherited from __binode_associative_container__, the
+following members are defined:
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Mapped type]
+ [[reference__binode_map__mapped_type]]
+ [__Pair_Associative_Container__]
+ ]
+ [
+ [Default constructor]
+ [``
+ binode_map();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor with allocator]
+ [``
+ explicit binode_map(allocator_type const& allocator);
+ ``]
+ [`binode_map`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ binode_map(binode_map const& copy);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [``
+ binode_map(
+ binode_map const& copy
+ , allocator_type const& allocator
+ );
+ ``]
+ [`binode_map`]
+ ]
+ [
+ [Move constructor]
+ [``
+ binode_map(binode_map&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ binode_map(
+ binode_map&& source
+ , allocator_type const& allocator
+ );
+ ``]
+ [`binode_map`]
+ ]
+ [
+ [Copy assignment operator]
+ [``
+ binode_map& operator=(binode_map const& copy);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ binode_map& operator=(binode_map&& source);
+ ``]
+ [__Movable__]
+ ]
+]
+[endsect] [/ Members]
+
+[section Test]
+<__test_containers_cpp__>
+[endsect]
+
+[endsect] [/ binode_map]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binode_multimap.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binode_multimap.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,170 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:binode_multimap
+ `binode_multimap<NodeGenerator,Key,Mapped,CompareSelector,Balancer>`
+]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binode_associative_container__header__>
+``
+
+Forward-declared:
+
+``
+#include <__binode_associative_container__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__binode_associative_container__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`NodeGenerator`]
+ [
+ A __Node_Type_Generator__ that takes in the value type and returns
+ a __Binary_Tree_Node__ model.
+ ]
+ []
+ ]
+ [
+ [`Key`]
+ [The key type.]
+ []
+ ]
+ [
+ [`Mapped`]
+ [The mapped type.]
+ []
+ ]
+ [
+ [`CompareSelector`]
+ [
+ A __Unary_Metafunction_Class__ that takes in the value type and
+ returns a __Strict_Weak_Ordering__ model.
+ ]
+ [__default_ordering_selector__]
+ ]
+ [
+ [`Balancer`]
+ [TODO.]
+ [__red_black_balancer__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Pair_Associative_Container__
+ * __Multiple_Sorted_Associative_Container__
+ * __Indexable_Container__ if the value associated with __count_key__ exists
+ for the return type of `NodeGenerator`
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+ * __Copy_Constructible__ if `T` is __Copy_Constructible__
+ * __Assignable__ if `T` is __Copy_Constructible__ and __Movable__
+ * __Movable__ if `T` is __Movable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__binode_multimap__bases]
+[endsect]
+
+[section:members Public Members]
+In addition to those inherited from __binode_associative_container__, the
+following members are defined:
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Mapped type]
+ [[reference__binode_multimap__mapped_type]]
+ [__Pair_Associative_Container__]
+ ]
+ [
+ [Default constructor]
+ [``
+ binode_multimap();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor with allocator]
+ [``
+ explicit binode_multimap(allocator_type const& allocator);
+ ``]
+ [`binode_map`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ binode_multimap(binode_multimap const& copy);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [``
+ binode_multimap(
+ binode_multimap const& copy
+ , allocator_type const& allocator
+ );
+ ``]
+ [`binode_multimap`]
+ ]
+ [
+ [Move constructor]
+ [``
+ binode_multimap(binode_multimap&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ binode_multimap(
+ binode_multimap&& source
+ , allocator_type const& allocator
+ );
+ ``]
+ [`binode_multimap`]
+ ]
+ [
+ [Copy assignment operator]
+ [``
+ binode_multimap& operator=(binode_multimap const& copy);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ binode_multimap& operator=(binode_multimap&& source);
+ ``]
+ [__Movable__]
+ ]
+]
+[endsect] [/ Members]
+
+[section Test]
+<__test_containers_cpp__>
+[endsect]
+
+[endsect] [/ binode_multimap]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binode_multiset.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binode_multiset.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,160 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:binode_multiset
+ `binode_multiset<NodeGenerator,T,CompareSelector,Balancer>`
+]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binode_associative_container__header__>
+``
+
+Forward-declared:
+
+``
+#include <__binode_associative_container__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__binode_associative_container__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`NodeGenerator`]
+ [
+ A __Node_Type_Generator__ that takes in the value type and returns
+ a __Binary_Tree_Node__ model.
+ ]
+ []
+ ]
+ [
+ [`T`]
+ [The key type, also the value type.]
+ []
+ ]
+ [
+ [`CompareSelector`]
+ [
+ A __Unary_Metafunction_Class__ that takes in the value type and
+ returns a __Strict_Weak_Ordering__ model.
+ ]
+ [__default_ordering_selector__]
+ ]
+ [
+ [`Balancer`]
+ [TODO.]
+ [__red_black_balancer__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Simple_Associative_Container__
+ * __Multiple_Sorted_Associative_Container__
+ * __Indexable_Container__ if the value associated with __count_key__ exists
+ for the return type of `NodeGenerator`
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+ * __Copy_Constructible__ if `T` is __Copy_Constructible__
+ * __Assignable__ if `T` is __Copy_Constructible__ and __Movable__
+ * __Movable__ if `T` is __Movable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__binode_multiset__bases]
+[endsect]
+
+[section:members Public Members]
+In addition to those inherited from __binode_associative_container__, the
+following members are defined:
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Default constructor]
+ [``
+ binode_multiset();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor with allocator]
+ [``
+ explicit binode_multiset(allocator_type const& allocator);
+ ``]
+ [`binode_multiset`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ binode_multiset(binode_multiset const& copy);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [``
+ binode_multiset(
+ binode_multiset const& copy
+ , allocator_type const& allocator
+ );
+ ``]
+ [`binode_multiset`]
+ ]
+ [
+ [Move constructor]
+ [``
+ binode_multiset(binode_multiset&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ binode_multiset(
+ binode_multiset&& source
+ , allocator_type const& allocator
+ );
+ ``]
+ [`binode_multiset`]
+ ]
+ [
+ [Copy assignment operator]
+ [``
+ binode_multiset& operator=(binode_multiset const& copy);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ binode_multiset& operator=(binode_multiset&& source);
+ ``]
+ [__Movable__]
+ ]
+]
+[endsect] [/ Members]
+
+[section Test]
+<__test_containers_cpp__>
+[endsect]
+
+[endsect] [/ binode_multiset]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_binode_set.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_binode_set.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,158 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:binode_set `binode_set<NodeGenerator,T,CompareSelector,Balancer>`]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__binode_associative_container__header__>
+``
+
+Forward-declared:
+
+``
+#include <__binode_associative_container__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__binode_associative_container__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`NodeGenerator`]
+ [
+ A __Node_Type_Generator__ that takes in the value type and returns
+ a __Binary_Tree_Node__ model.
+ ]
+ []
+ ]
+ [
+ [`T`]
+ [The key type, also the value type.]
+ []
+ ]
+ [
+ [`CompareSelector`]
+ [
+ A __Unary_Metafunction_Class__ that takes in the value type and
+ returns a __Strict_Weak_Ordering__ model.
+ ]
+ [__default_ordering_selector__]
+ ]
+ [
+ [`Balancer`]
+ [TODO.]
+ [__red_black_balancer__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Simple_Associative_Container__
+ * __Unique_Sorted_Associative_Container__
+ * __Indexable_Container__ if the value associated with __count_key__ exists
+ for the return type of `NodeGenerator`
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+ * __Copy_Constructible__ if `T` is __Copy_Constructible__
+ * __Assignable__ if `T` is __Copy_Constructible__ and __Movable__
+ * __Movable__ if `T` is __Movable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__binode_set__bases]
+[endsect]
+
+[section:members Public Members]
+In addition to those inherited from __binode_associative_container__, the
+following members are defined:
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Default constructor]
+ [``
+ binode_set();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor with allocator]
+ [``
+ explicit binode_set(allocator_type const& allocator);
+ ``]
+ [`binode_set`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ binode_set(binode_set const& copy);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [``
+ binode_set(
+ binode_set const& copy
+ , allocator_type const& allocator
+ );
+ ``]
+ [`binode_set`]
+ ]
+ [
+ [Move constructor]
+ [``
+ binode_set(binode_set&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ binode_set(
+ binode_set&& source
+ , allocator_type const& allocator
+ );
+ ``]
+ [`binode_set`]
+ ]
+ [
+ [Copy assignment operator]
+ [``
+ binode_set& operator=(binode_set const& copy);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ binode_set& operator=(binode_set&& source);
+ ``]
+ [__Movable__]
+ ]
+]
+[endsect] [/ Members]
+
+[section Test]
+<__test_containers_cpp__>
+[endsect]
+
+[endsect] [/ binode_set]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_breadth_first_desc_iter.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_breadth_first_desc_iter.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,208 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:breadth_first_desc_iter `breadth_first_descendant_iterator<Node>`]
+
+[section Synopsis]
+[reference__breadth_first_descendant_iterator]
+[endsect]
+
+[section Description]
+This iterator traverses the descendants of the specified root node in
+breadth-first fashion, e.g. given the following tree representation:
+
+``
+ A
+ |
+ C---+---B
+ | |
++-+-+ +-+-+
+| | | |
+D E F G
+``
+
+This iterator will traverse the tree nodes in the following order:
+
+``
+C B D E F G
+``
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__breadth_first_descendant_iterator__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__breadth_first_descendant_iterator__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Node`]
+ [The type of a tree node.]
+ [
+ It must model the __Tree_Node__ concept, but it can be
+ `const`-qualified.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Tree_Node_Descendant_Iterator__
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Value type]
+ [``
+ typedef ... value_type;
+ ``]
+ [__Tree_Node_Descendant_Iterator__]
+ ]
+ [
+ [Reference type]
+ [``
+ typedef ... reference;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [``
+ typedef ... pointer;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Distance type]
+ [``
+ typedef ... difference_type;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [``
+ typedef ... iterator_category;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [``
+ breadth_first_descendant_iterator();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from node]
+ [``
+ explicit breadth_first_descendant_iterator(Node&);
+ ``]
+ [__Tree_Node_Descendant_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename N>
+ breadth_first_descendant_iterator(
+ breadth_first_descendant_iterator<N> const&
+ );
+ ``]
+ [`breadth_first_descendant_iterator`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ breadth_first_descendant_iterator(
+ breadth_first_descendant_iterator const&
+ );
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [``
+ breadth_first_descendant_iterator&
+ operator=(breadth_first_descendant_iterator const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Dereference operator]
+ [``
+ reference operator*() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Indirection operator]
+ [``
+ pointer operator->() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pre-increment operator]
+ [``
+ breadth_first_descendant_iterator& operator++();
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Post-increment operator]
+ [``
+ breadth_first_descendant_iterator operator++(int);
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Traversal state conversion operator]
+ [``
+ operator _traversal_state_() const;
+ ``]
+ [__Tree_Node_Iterator__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-members]
+[table
+ [[Name][Definition][Description]]
+ [
+ [Iterator creation]
+ [[reference__make_breadth_first_descendant_iterator]]
+ [
+ Constructs and returns a `breadth_first_descendant_iterator` that
+ will iterate through the descendants of the specified node.
+ ]
+ ]
+]
+[endsect]
+
+[endsect] [/ breadth_first_descendant_iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_breadth_first_iterator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_breadth_first_iterator.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,203 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:breadth_first_iterator `breadth_first_iterator<Node>`]
+
+[section Synopsis]
+[reference__breadth_first_iterator]
+[endsect]
+
+[section Description]
+This iterator traverses the specified root node and all its descendants in
+breadth-first fashion, e.g. given the following tree representation:
+
+``
+ A
+ |
+ C---+---B
+ | |
++-+-+ +-+-+
+| | | |
+D E F G
+``
+
+This iterator will traverse the tree nodes in the following order:
+
+``
+A C B D E F G
+``
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__breadth_first_iterator__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__breadth_first_iterator__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Node`]
+ [The type of a tree node.]
+ [
+ It must model the __Tree_Node__ concept, but it can be
+ `const`-qualified.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Full_Tree_Node_Iterator__
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Value type]
+ [``
+ typedef ... value_type;
+ ``]
+ [__Full_Tree_Node_Iterator__]
+ ]
+ [
+ [Reference type]
+ [``
+ typedef ... reference;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [``
+ typedef ... pointer;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Distance type]
+ [``
+ typedef ... difference_type;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [``
+ typedef ... iterator_category;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [``
+ breadth_first_iterator();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from node]
+ [``
+ explicit breadth_first_iterator(Node&);
+ ``]
+ [__Full_Tree_Node_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename N>
+ breadth_first_iterator(breadth_first_iterator<N> const&);
+ ``]
+ [`breadth_first_iterator`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ breadth_first_iterator(breadth_first_iterator const&);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [``
+ breadth_first_iterator& operator=(breadth_first_iterator const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Dereference operator]
+ [``
+ reference operator*() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Indirection operator]
+ [``
+ pointer operator->() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pre-increment operator]
+ [``
+ breadth_first_iterator& operator++();
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Post-increment operator]
+ [``
+ breadth_first_iterator operator++(int);
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Traversal state conversion operator]
+ [``
+ operator _traversal_state_() const;
+ ``]
+ [__Tree_Node_Iterator__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-members]
+[table
+ [[Name][Definition][Description]]
+ [
+ [Iterator creation]
+ [[reference__make_breadth_first_iterator]]
+ [
+ Constructs and returns a `breadth_first_iterator` that will iterate
+ through the specified node and its descendants.
+ ]
+ ]
+]
+[endsect]
+
+[endsect] [/ breadth_first_iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_can_use_fusion.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_can_use_fusion.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,23 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:can_use_fusion `BOOST_TREE_NODE_CAN_USE_FUSION`]
+
+[section Description]
+Defined only if the compiler supports __enable_if__ and partial specialization
+of templates.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__preprocessor__header__>
+``
+[endsect]
+
+[endsect] [/ BOOST_TREE_NODE_CAN_USE_FUSION]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_can_use_fusion_w_typeof.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_can_use_fusion_w_typeof.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,25 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:can_use_fusion_with_typeof
+ `BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF`
+]
+
+[section Description]
+Defined only if __TREE_NODE_CAN_USE_FUSION__ is defined and
+__TYPEOF_EMULATION__ is not.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__preprocessor__header__>
+``
+[endsect]
+
+[endsect] [/ BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_container_derived_body.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_container_derived_body.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,43 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:container_derived_body `BOOST_TREE_NODE_CONTAINER_DERIVED_BODY`]
+
+[section Synopsis]
+[reference__macro__container_derived_body]
+[endsect]
+
+[section Description]
+Meant to be used in the `public` scope of a __Container__ model that inherits
+from another.
+
+This macro defines the type definitions; the default, copy, and move
+constructors; and the copy and move assignment operators necessary for the
+`Derived` class to model the __Default_Constructible__, __Copy_Constructible__,
+__Assignable__, __Movable__, and __Container__ concepts.
+[endsect]
+
+[section Usage]
+``
+BOOST_TREE_NODE_CONTAINER_DERIVED_BODY(Derived, Base)
+``
+[endsect]
+
+[section Arguments]
+ * /Derived/ -- The name of the enclosing type.
+ * /Base/ -- The name of the type from which `Derived` inherits.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__preprocessor__header__>
+``
+[endsect]
+
+[endsect] [/ BOOST_TREE_NODE_CONTAINER_DERIVED_BODY]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_copyable_and_movable.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_copyable_and_movable.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,41 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ 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:copyable_and_movable `BOOST_TREE_NODE_COPYABLE_AND_MOVABLE`]
+
+[section Synopsis]
+[reference__macro__copy_constructible]
+[reference__macro__copyable_and_movable]
+[endsect]
+
+[section Description]
+Meant to be used in the `public` scope of a __Tree_Node__ model that inherits
+from a __Base_Tree_Node__, this macro defines the copy and move constructors
+and the copy and move assignment operators necessary for the `Derived` class
+to model the __Copy_Constructible__, __Assignable__, and __Movable__ concepts.
+[endsect]
+
+[section Usage]
+``
+BOOST_TREE_NODE_COPYABLE_AND_MOVABLE(Derived, Base)
+``
+[endsect]
+
+[section Arguments]
+ * /Derived/ -- The name of the enclosing type.
+ * /Base/ -- The name of the type from which `Derived` inherits.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__preprocessor__header__>
+``
+[endsect]
+
+[endsect] [/ BOOST_TREE_NODE_COPYABLE_AND_MOVABLE]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_count_key.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_count_key.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,34 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:count_key `count_key`]
+
+[section Synopsis]
+[reference__count_key]
+[endsect]
+
+[section Description]
+Use this type to access the number of each __Tree_Node__ object plus its
+descendants, the sum of which is known as the [*count] of the node. The
+__Tree_Node__ type must ultimately inherit from __tree_node_with_count_base__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__count_key__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__count_key__typeof_header__>
+``
+[endsect]
+
+[endsect] [/ count_key]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_data_key.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_data_key.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,32 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:data_key `data_key`]
+
+[section Synopsis]
+[reference__data_key]
+[endsect]
+
+[section Description]
+Use this type to access the user data stored in __Tree_Node__ objects.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__data_key__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__data_key__typeof_header__>
+``
+[endsect]
+
+[endsect] [/ data_key]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_depth_first_desc_iter.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_depth_first_desc_iter.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,278 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:depth_first_desc_iter
+ `depth_first_descendant_iterator<Node,IsReverse>`
+]
+
+[section Synopsis]
+[reference__depth_first_descendant_iterator]
+[endsect]
+
+[section Description]
+This iterator traverses the specified root node and all its descendants in
+depth-first fashion, e.g. given the following tree representation:
+
+``
+ A
+ |
+ C---+---B
+ | |
++-+-+ +-+-+
+| | | |
+D E F G
+``
+
+This iterator will traverse the tree nodes in the following order:
+
+``
+C pre_order_traversal
+D pre_order_traversal
+D post_order_traversal
+E pre_order_traversal
+E post_order_traversal
+C post_order_traversal
+B pre_order_traversal
+F pre_order_traversal
+F post_order_traversal
+G pre_order_traversal
+G post_order_traversal
+B post_order_traversal
+``
+
+The traversal state conversion operator of this iterator will yield each value
+in the column on the right at the appropriate iteration.
+
+This iterator can also be used to traverse the tree nodes in reverse:
+
+``
+B post_order_traversal
+G post_order_traversal
+G pre_order_traversal
+F post_order_traversal
+F pre_order_traversal
+B pre_order_traversal
+C post_order_traversal
+E post_order_traversal
+E pre_order_traversal
+D post_order_traversal
+D pre_order_traversal
+C pre_order_traversal
+``
+
+This iterator is ideal for algorithms that need to perform both preprocessing
+and postprocessing of a tree node, e.g. non-recursive copy constructors.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__depth_first_descendant_iterator__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__depth_first_descendant_iterator__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Node`]
+ [The type of a tree node.]
+ [
+ It must model the __Tree_Node__ concept, but it can be
+ `const`-qualified.
+ ]
+ []
+ ]
+ [
+ [`IsReverse`]
+ [
+ Configures the `depth_first_descendant_iterator` to traverse tree
+ nodes in reverse depth-first fashion if equivalent to __mpl_true__;
+ otherwise, the nodes will be traversed in depth-first fashion.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ [__mpl_false__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Tree_Node_Descendant_Iterator__
+ * __Bidirectional_Iterator__
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Value type]
+ [``
+ typedef ... value_type;
+ ``]
+ [__Tree_Node_Descendant_Iterator__]
+ ]
+ [
+ [Reference type]
+ [``
+ typedef ... reference;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [``
+ typedef ... pointer;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Distance type]
+ [``
+ typedef ... difference_type;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [``
+ typedef ... iterator_category;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [``
+ depth_first_descendant_iterator();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from node]
+ [``
+ depth_first_descendant_iterator(Node&);
+ ``]
+ [__Tree_Node_Descendant_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename N>
+ depth_first_descendant_iterator(
+ depth_first_descendant_iterator<N> const&
+ );
+ ``]
+ [`depth_first_descendant_iterator`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ depth_first_descendant_iterator(
+ depth_first_descendant_iterator const&
+ );
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [``
+ depth_first_descendant_iterator&
+ operator=(depth_first_descendant_iterator const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Dereference operator]
+ [``
+ reference operator*() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Indirection operator]
+ [``
+ pointer operator->() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pre-increment operator]
+ [``
+ depth_first_descendant_iterator& operator++();
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Post-increment operator]
+ [``
+ depth_first_descendant_iterator operator++(int);
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pre-decrement operator]
+ [``
+ depth_first_descendant_iterator& operator--();
+ ``]
+ [__Bidirectional_Iterator__]
+ ]
+ [
+ [Post-decrement operator]
+ [``
+ depth_first_descendant_iterator operator--(int);
+ ``]
+ [__Bidirectional_Iterator__]
+ ]
+ [
+ [Traversal state conversion operator]
+ [``
+ operator _traversal_state_() const;
+ ``]
+ [__Tree_Node_Iterator__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-members]
+[table
+ [[Name][Definition][Description]]
+ [
+ [Iterator creation]
+ [[reference__make_depth_first_descendant_iterator]]
+ [
+ Constructs and returns a `depth_first_descendant_iterator` that
+ will iterate through the descendants of the specified node.
+ ]
+ ]
+ [
+ [Iteration]
+ [[reference__make_depth_first_descendant_reverse_iterator]]
+ [
+ Constructs and returns a `depth_first_descendant_iterator` that
+ will iterate through the descendants of the specified node in
+ reverse order.
+ ]
+ ]
+]
+[endsect]
+
+[endsect] [/ depth_first_descendant_iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_depth_first_iterator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_depth_first_iterator.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,274 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:depth_first_iterator `depth_first_iterator<Node,IsReverse>`]
+
+[section Synopsis]
+[reference__depth_first_iterator]
+[endsect]
+
+[section Description]
+This iterator traverses the specified root node and all its descendants in
+depth-first fashion, e.g. given the following tree representation:
+
+``
+ A
+ |
+ C---+---B
+ | |
++-+-+ +-+-+
+| | | |
+D E F G
+``
+
+This iterator will traverse the tree nodes in the following order:
+
+``
+A pre_order_traversal
+C pre_order_traversal
+D pre_order_traversal
+D post_order_traversal
+E pre_order_traversal
+E post_order_traversal
+C post_order_traversal
+B pre_order_traversal
+F pre_order_traversal
+F post_order_traversal
+G pre_order_traversal
+G post_order_traversal
+B post_order_traversal
+A post_order_traversal
+``
+
+The traversal state conversion operator of this iterator will yield each value
+in the column on the right at the appropriate iteration.
+
+This iterator can also be used to traverse the tree nodes in reverse:
+
+``
+A post_order_traversal
+B post_order_traversal
+G post_order_traversal
+G pre_order_traversal
+F post_order_traversal
+F pre_order_traversal
+B pre_order_traversal
+C post_order_traversal
+E post_order_traversal
+E pre_order_traversal
+D post_order_traversal
+D pre_order_traversal
+C pre_order_traversal
+A pre_order_traversal
+``
+
+This iterator is ideal for algorithms that need to perform both preprocessing
+and postprocessing of a tree node.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__depth_first_iterator__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__depth_first_iterator__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Node`]
+ [The type of a tree node.]
+ [
+ It must model the __Tree_Node__ concept, but it can be
+ `const`-qualified.
+ ]
+ []
+ ]
+ [
+ [`IsReverse`]
+ [
+ Configures the `depth_first_iterator` to traverse tree nodes in
+ reverse depth-first fashion if equivalent to __mpl_true__;
+ otherwise, the nodes will be traversed in depth-first fashion.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ [__mpl_false__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Full_Tree_Node_Iterator__
+ * __Bidirectional_Iterator__
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Value type]
+ [``
+ typedef ... value_type;
+ ``]
+ [__Full_Tree_Node_Iterator__]
+ ]
+ [
+ [Reference type]
+ [``
+ typedef ... reference;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [``
+ typedef ... pointer;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Distance type]
+ [``
+ typedef ... difference_type;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [``
+ typedef ... iterator_category;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [``
+ depth_first_iterator();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from node]
+ [``
+ depth_first_iterator(Node&);
+ ``]
+ [__Full_Tree_Node_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename N>
+ depth_first_iterator(depth_first_iterator<N> const&);
+ ``]
+ [`depth_first_iterator`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ depth_first_iterator(depth_first_iterator const&);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [``
+ depth_first_iterator& operator=(depth_first_iterator const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Dereference operator]
+ [``
+ reference operator*() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Indirection operator]
+ [``
+ pointer operator->() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pre-increment operator]
+ [``
+ depth_first_iterator& operator++();
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Post-increment operator]
+ [``
+ depth_first_iterator operator++(int);
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pre-decrement operator]
+ [``
+ depth_first_iterator& operator--();
+ ``]
+ [__Bidirectional_Iterator__]
+ ]
+ [
+ [Post-decrement operator]
+ [``
+ depth_first_iterator operator--(int);
+ ``]
+ [__Bidirectional_Iterator__]
+ ]
+ [
+ [Traversal state conversion operator]
+ [``
+ operator _traversal_state_() const;
+ ``]
+ [__Tree_Node_Iterator__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-members]
+[table
+ [[Name][Expression][Description]]
+ [
+ [Iterator creation]
+ [[reference__make_depth_first_iterator]]
+ [
+ Constructs and returns a `depth_first_iterator` that will iterate
+ through the specified node and its descendants.
+ ]
+ ]
+ [
+ [Reverse iterator creation]
+ [[reference__make_depth_first_reverse_iterator]]
+ [
+ Constructs and returns a `depth_first_iterator` that will iterate
+ through the specified node and its descendants in reverse order.
+ ]
+ ]
+]
+[endsect]
+
+[endsect] [/ depth_first_iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_dereference_iterator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_dereference_iterator.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,46 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:dereference_iterator `dereference_iterator()`]
+
+[section Function Synopsis]
+[reference__tree_node__dereference_iterator]
+[endsect]
+
+[section Function Description]
+This function takes in a __Tree_Node_Iterator__ and returns the __Tree_Node__
+to which it currently points. In terms of genericity, this function is
+necessary not only because it handles both __Full_Tree_Node_Iterator__ and
+__Tree_Node_Descendant_Iterator__ models, but because the iterator interface of
+associative __Boost_Pointer_Container__ types is different from that of their
+standard library counterparts.
+[endsect]
+
+[section:result_of Return Type Metafunction Synopsis]
+[reference__tree_node__result_of__dereference_iterator]
+[endsect]
+
+[section Return Type Metafunction Description]
+Let `Itr` be a __Tree_Node_Iterator__ model.
+
+``
+ typedef dereference_iterator<Itr>::type r;
+``
+
+[*Return type:] A __Fusion_Sequence__ of __half_runtime_pairs__ of key types
+and their matching value types as defined by the specified node type.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__dereference_iterator__header__>
+``
+[endsect]
+
+[endsect] [/ dereference_iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_empl_ctor_w_allc_f_decl.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_empl_ctor_w_allc_f_decl.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,63 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:emplace_ctor_w_alloc_f_dcl
+ `BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL`
+]
+
+[section Synopsis]
+[reference__macro__emplacement_ctor_w_alloc_header]
+[reference__macro__emplacement_ctor_w_alloc_fwd_decl]
+[endsect]
+
+[section Description]
+Defined only if the compiler does not support perfect forwarding, and meant to
+be used in the `public` scope of a __Base_Tree_Node__, this macro expands to
+the forward declaration of a constructor that will emulate it.
+[endsect]
+
+[section Usage]
+``
+class some_node_type
+{
+ public:
+ typedef unspecified traits;
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ explicit some_node_type(
+ boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ );
+#else
+ _PP_REPEAT_(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL
+ , some_node_type
+ )
+#endif
+};
+``
+[endsect]
+
+[section Arguments]
+ * /z/ -- The next available __PP_REPEAT__ dimension.
+ * /n/ -- The number of arguments that the current iteration's constructor
+ will accept.
+ * /some_node_type/ -- The name of the enclosing type.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__preprocessor__header__>
+``
+[endsect]
+
+[endsect] [/ BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_empl_ctor_w_allc_il_def.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_empl_ctor_w_allc_il_def.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,69 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:emplace_ctor_w_alloc_i_def
+ `BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF`
+]
+
+[section Synopsis]
+[reference__macro__emplacement_ctor_w_alloc_inline_def]
+[endsect]
+
+[section Description]
+Defined only if the compiler does not support perfect forwarding, and meant to
+be used in the `public` scope of a __Tree_Node__ model that inherits from a
+__Base_Tree_Node__ and defines no additional members, this macro expands to the
+inline definition of a constructor that will emulate it. Uses
+__TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER__.
+[endsect]
+
+[section Usage]
+``
+class Derived : public Base
+{
+ public:
+ typedef typename Base::traits traits;
+
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ inline explicit Derived(
+ boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : Base(
+ boost::container::allocator_arg
+ , allocator
+ , boost::forward<Args>(args)...
+ )
+ {
+ Base::on_post_emplacement_construct();
+ }
+#else
+ _PP_REPEAT_(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF
+ , (Derived, Base)
+ )
+#endif
+};
+``
+[endsect]
+
+[section Arguments]
+ * /Derived/ -- The name of the enclosing type.
+ * /Base/ -- The name of the type from which `Derived` inherits.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__preprocessor__header__>
+``
+[endsect]
+
+[endsect] [/ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_empl_ctor_w_allc_il_hdr.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_empl_ctor_w_allc_il_hdr.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,83 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:emplace_ctor_w_alloc_i_hdr
+ `BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER`
+]
+
+[section Synopsis]
+[reference__macro__emplacement_ctor_w_alloc_header]
+[reference__macro__emplacement_ctor_w_alloc_base_fwd]
+[reference__macro__emplacement_ctor_w_alloc_inline_header]
+[endsect]
+
+[section Description]
+Defined only if the compiler does not support perfect forwarding, this macro
+expands to the header of a constructor that emulates it along witht the first
+part of its initialization list.
+[endsect]
+
+[section Usage]
+``
+class Derived : public Base
+{
+ int some_member;
+
+ void post_construct(int);
+
+ public:
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ inline explicit Derived(
+ boost::container::allocator_arg_t
+ , typename traits::allocator_reference allocator
+ , Args&& ...args
+ ) : Base(
+ boost::container::allocator_arg
+ , allocator
+ , boost::forward<Args>(args)...
+ )
+ , some_member(0)
+ {
+ this->post_construct(this->some_member);
+ }
+#else
+#define YOUR_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER(z, n, Tuple) \
+ , some_member(0) \
+ { \
+ this->post_construct(this->some_member); \
+ } \
+//!
+ _PP_REPEAT_(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , YOUR_MACRO
+ , (Derived, Base)
+ )
+#undef YOUR_MACRO
+#endif
+};
+``
+[endsect]
+
+[section Arguments]
+ * /z/ -- The next available __PP_REPEAT__ dimension.
+ * /n/ -- The number of arguments that the current iteration's constructor
+ will accept.
+ * /Derived/ -- The name of the enclosing type.
+ * /Base/ -- The name of the type from which `Derived` inherits.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__preprocessor__header__>
+``
+[endsect]
+
+[endsect] [/ BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_emplace_ctor_fwd_decl.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_emplace_ctor_fwd_decl.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,55 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ 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:emplace_ctor_fwd_decl `BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL`]
+
+[section Synopsis]
+[reference__macro__emplacement_ctor_header]
+[reference__macro__emplacement_ctor_fwd_decl]
+[endsect]
+
+[section Description]
+Defined only if the compiler does not support perfect forwarding, and meant to
+be used in the `public` scope of a __Base_Tree_Node__, this macro expands to
+the forward declaration of a constructor that will emulate it.
+[endsect]
+
+[section Usage]
+``
+class some_node_type
+{
+ public:
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ explicit some_node_type(Args&& ...args);
+#else
+ _PP_REPEAT_(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL
+ , some_node_type
+ )
+#endif
+};
+``
+[endsect]
+
+[section Arguments]
+ * /z/ -- The next available __PP_REPEAT__ dimension.
+ * /n/ -- The number of arguments that the current iteration's constructor
+ will accept.
+ * /some_node_type/ -- The name of the enclosing type.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__preprocessor__header__>
+``
+[endsect]
+
+[endsect] [/ BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_emplace_ctor_inline_def.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_emplace_ctor_inline_def.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,61 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ 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:emplace_ctor_inline_def `BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF`]
+
+[section Synopsis]
+[reference__macro__emplacement_ctor_inline_def]
+[endsect]
+
+[section Description]
+Defined only if the compiler does not support perfect forwarding, and meant to
+be used in the `public` scope of a __Tree_Node__ model that inherits from a
+__Base_Tree_Node__ and defines no additional members, this macro expands to the
+inline definition of a constructor that will emulate it. Uses
+__TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER__.
+[endsect]
+
+[section Usage]
+``
+class Derived : public Base
+{
+ public:
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ inline explicit Derived(Args&& ...args)
+ : Base(boost::forward<Args>(args)...)
+ {
+ Base::on_post_emplacement_construct();
+ }
+#else
+ _PP_REPEAT_(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF
+ , (Derived, Base)
+ )
+#endif
+};
+``
+[endsect]
+
+[section Arguments]
+ * /z/ -- The next available __PP_REPEAT__ dimension.
+ * /n/ -- The number of arguments that the current iteration's constructor
+ will accept.
+ * /Derived/ -- The name of the enclosing type.
+ * /Base/ -- The name of the type from which `Derived` inherits.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__preprocessor__header__>
+``
+[endsect]
+
+[endsect] [/ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_emplace_ctor_inline_hdr.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_emplace_ctor_inline_hdr.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,74 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ 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:emplace_ctor_inline_hdr `BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HDR`]
+
+[section Synopsis]
+[reference__macro__emplacement_ctor_header]
+[reference__macro__emplacement_ctor_base_fwd]
+[reference__macro__emplacement_ctor_inline_header]
+[endsect]
+
+[section Description]
+Defined only if the compiler does not support perfect forwarding, this macro
+expands to the header of a constructor that emulates it along witht the first
+part of its initialization list.
+[endsect]
+
+[section Usage]
+``
+class Derived : public Base
+{
+ int some_member;
+
+ void post_construct(int);
+
+ public:
+#if defined BOOST_CONTAINER_PERFECT_FORWARDING
+ template <typename ...Args>
+ inline explicit Derived(Args&& ...args)
+ : Base(boost::forward<Args>(args)...)
+ , some_member(0)
+ {
+ this->post_construct(this->some_member);
+ }
+#else
+#define YOUR_MACRO(z, n, Tuple) \
+ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER(z, n, Tuple) \
+ , some_member(0) \
+ { \
+ this->post_construct(this->some_member); \
+ } \
+//!
+ _PP_REPEAT_(
+ BOOST_CONTAINER_MAX_CONSTRUCTOR_PARAMETERS
+ , YOUR_MACRO
+ , (Derived, Base)
+ )
+#undef YOUR_MACRO
+#endif
+};
+``
+[endsect]
+
+[section Arguments]
+ * /z/ -- The next available __PP_REPEAT__ dimension.
+ * /n/ -- The number of arguments that the current iteration's constructor
+ will accept.
+ * /Derived/ -- The name of the enclosing type.
+ * /Base/ -- The name of the type from which `Derived` inherits.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__preprocessor__header__>
+``
+[endsect]
+
+[endsect] [/ BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HDR]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_get_keys.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_get_keys.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,34 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:get_keys `result_of::get_keys<Node>`]
+
+[section Synopsis]
+[reference__tree_node__result_of__get_keys]
+[endsect]
+
+[section Description]
+Let `Node` be a (possibly `const`-qualified) __Tree_Node__ model.
+
+``
+ typedef result_of::get_keys<Node>::type r;
+``
+
+[*Return type:] A __Fusion_Sequence__ of key types--each of which, when passed
+along with `Node` as template arguments to __result_of__has_key__, will cause
+__result_of__has_key__ to evaluate to __mpl_true__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__get_keys__header__>
+``
+[endsect]
+
+[endsect] [/ get_keys]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_get_properties.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_get_properties.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,44 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:get_properties `get_properties()`]
+
+[section Function Synopsis]
+[reference__get_properties]
+[endsect]
+
+[section Function Description]
+This function returns a heterogeneous list of key types--each of which, when
+passed as a template argument to __has_key__ while the __Tree_Node__ object is
+passed by reference, will evaluate to `true`--each paired with the value
+returned through key-value access of the specified node.
+[endsect]
+
+[section:result_of Return Type Metafunction Synopsis]
+[reference__result_of__get_properties]
+[endsect]
+
+[section Return Type Metafunction Description]
+Let `Node` be a (possibly `const`-qualified) __Tree_Node__ model.
+
+``
+ typedef result_of::get_properties<Node>::type r;
+``
+
+[*Return type:] A __Fusion_Sequence__ of __half_runtime_pairs__ of key types
+and their matching value types as defined by the specified node type.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__get_properties__header__>
+``
+[endsect]
+
+[endsect] [/ get_properties]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_has_key.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_has_key.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,44 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:has_key `has_key()`]
+
+[section Function Synopsis]
+[reference__tree_node__has_key]
+[endsect]
+
+[section Function Description]
+This function returns `true` if the matching value exists in the specified
+node--that is, if `get(node, Key())` and `get<Key>(node)` are well-formed
+expressions--`false` otherwise.
+[endsect]
+
+[section:result_of Return Type Metafunction Synopsis]
+[reference__tree_node__result_of__has_key]
+[endsect]
+
+[section Return Type Metafunction Description]
+Let `Node` be a (possibly `const`-qualified) __Tree_Node__ model.
+
+``
+ typedef result_of::has_key<Node> r;
+``
+
+[*Return type:] __mpl_true__ if, in any `Node node`, the matching value
+exists--that is, if `get(node, Key())` and `get<Key>(node)` are well-formed
+expressions--__mpl_false__ otherwise.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__has_key__header__>
+``
+[endsect]
+
+[endsect] [/ has_key]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_height_key.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_height_key.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,34 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:height_key `height_key`]
+
+[section Synopsis]
+[reference__height_key]
+[endsect]
+
+[section Description]
+Use this type to access the [*height] of a __Tree_Node__ object, or the
+magnitude of the difference in ply between it and its deepest descendant. The
+__Tree_Node__ type must ultimately inherit from __tree_node_with_height_base__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__height_key__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__height_key__typeof_header__>
+``
+[endsect]
+
+[endsect] [/ height_key]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_in_order_iterator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_in_order_iterator.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,279 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:in_order_iterator `in_order_iterator<Node,IsReverse>`]
+
+[section Synopsis]
+[reference__in_order_iterator]
+[endsect]
+
+[section Description]
+This iterator traverses the specified root node and all its descendants in
+in-order fashion, e.g. given the following tree representation:
+
+``
+ A
+ |
+ C---+---B
+ | |
++-+-+ +-+-+
+| | | |
+D E F G
+``
+
+The tree nodes will be traversed forward in the following order:
+
+``
+D C E A F B G
+``
+
+This iterator can also be used to traverse the tree nodes in reverse:
+
+``
+G B F A E C D
+``
+
+[important
+ This iterator works only on __Binary_Tree_Node__ models.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__in_order_iterator__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__in_order_iterator__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Node`]
+ [The type of a tree node.]
+ [
+ It must model the __Tree_Node__ concept, but it can be
+ `const`-qualified.
+ ]
+ []
+ ]
+ [
+ [`IsReverse`]
+ [
+ Configures the `in_order_iterator` to traverse tree nodes in
+ reverse in-order fashion if equivalent to __mpl_true__; otherwise,
+ the nodes will be traversed in in-order fashion.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ [__mpl_false__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Full_Tree_Node_Iterator__
+ * __Indexable_Iterator__ if the value associated with __count_key__ exists
+ for `Node`; __Bidirectional_Iterator__ otherwise
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Value type]
+ [``
+ typedef ... value_type;
+ ``]
+ [__Full_Tree_Node_Iterator__]
+ ]
+ [
+ [Reference type]
+ [``
+ typedef ... reference;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [``
+ typedef ... pointer;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Distance type]
+ [``
+ typedef ... difference_type;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [``
+ typedef ... iterator_category;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [``
+ in_order_iterator();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from node]
+ [``
+ in_order_iterator(Node&);
+ ``]
+ [__Full_Tree_Node_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename N>
+ in_order_iterator(in_order_iterator<N> const&);
+ ``]
+ [`in_order_iterator`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ in_order_iterator(in_order_iterator const&);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [``
+ in_order_iterator& operator=(in_order_iterator const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Dereference operator]
+ [``
+ reference operator*() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Indirection operator]
+ [``
+ pointer operator->() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pre-increment operator]
+ [``
+ in_order_iterator& operator++();
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Post-increment operator]
+ [``
+ in_order_iterator operator++(int);
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pre-decrement operator]
+ [``
+ in_order_iterator& operator--();
+ ``]
+ [__Reverse_Iterator__]
+ ]
+ [
+ [Post-decrement operator]
+ [``
+ in_order_iterator operator--(int);
+ ``]
+ [__Reverse_Iterator__]
+ ]
+ [
+ [Addition assignment operator]
+ [``
+ in_order_iterator& operator+=(difference_type n);
+ ``]
+ [__Indexable_Iterator__]
+ ]
+ [
+ [Subtraction assignment operator]
+ [``
+ in_order_iterator& operator-=(difference_type n);
+ ``]
+ [__Indexable_Iterator__]
+ ]
+ [
+ [Traversal state conversion operator]
+ [``
+ operator _traversal_state_() const;
+ ``]
+ [__Tree_Node_Iterator__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-members]
+[table
+ [[Name][Expression][Description]]
+ [
+ [Forward iterator creation]
+ [[reference__make_in_order_iterator]]
+ [
+ Constructs and returns a `in_order_iterator` that will iterate
+ forward through the specified node and its descendants.
+ ]
+ ]
+ [
+ [Forward iterator end creation]
+ [[reference__make_in_order_iterator_end]]
+ [
+ Constructs and returns a `in_order_iterator` that points
+ past-the-end of a forward iteration through the specified node and
+ its descendants.
+ ]
+ ]
+ [
+ [Reverse iterator creation]
+ [[reference__make_in_order_reverse_iterator]]
+ [
+ Constructs and returns a `in_order_iterator` that will iterate
+ in reverse through the specified node and its descendants.
+ ]
+ ]
+ [
+ [Reverse iterator end creation]
+ [[reference__make_in_order_reverse_iterator_end]]
+ [
+ Constructs and returns a `in_order_iterator` that points
+ past-the-end of a reverse iteration through the specified node and
+ its descendants.
+ ]
+ ]
+]
+[endsect] [/ Non-members]
+
+[endsect] [/ in_order_iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_nary_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_nary_node.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,271 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:nary_node `nary_node<T,Selector>`]
+
+[section Description]
+This class template is suitable for classes or algorithms that require a tree
+node data structure that can handle an arbitrary number of children. Objects
+of this type can be stored by value.
+
+If the user data type models the __Fusion_Associative_Sequence__ concept, then
+each of the elements within can be also be obtained through key-value access
+and set through key-value modification as defined by the __Tree_Node__ concept;
+more specifically, for some object `node` of type `Node` such that `Node` is a
+template instantiation of `nary_node`, then for any type `Key` such that
+[^_fusion_has_key_<Key>(get<_data_key_>(node))] returns `true`, so does
+[^_has_key_<Key>(node)].
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__nary_node__header__>
+``
+
+Forward-declared:
+
+``
+#include <__nary_node__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__nary_node__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`T`]
+ [The type of the user data to be stored in an `nary_node`.]
+ []
+ []
+ ]
+ [
+ [`Selector`]
+ [The type that determines the child container type.]
+ [[^_is_recursive_selector_<Selector>] must return __mpl_true__.]
+ [__ptr_dequeS__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __N_ary_Tree_Node__
+ * __Reversible_Tree_Node__ if [^_container_gen_<Selector,nary_node>::type]
+ returns a __Reversible_Container__ model
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+ * __Copy_Constructible__ if `T` is __Copy_Constructible__
+ * __Assignable__ if `T` is __Copy_Constructible__ and __Movable__
+ * __Movable__ if `T` is __Movable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__nary_node__bases]
+[endsect]
+
+[section:members Public Members]
+Given:
+[reference__nary_node_base__children]
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Super type]
+ [[reference__nary_node__super_t]]
+ [__Tree_Node__]
+ ]
+ [
+ [Data type, allocator type, allocator reference type]
+ [[reference__nary_node__traits]]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [[reference__nary_node__pointer]]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [[reference__nary_node__const_pointer]]
+ [__Tree_Node__]
+ ]
+ [
+ [Iterator type]
+ [[reference__nary_node__iterator]]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Immutable iterator type]
+ [[reference__nary_node__const_iterator]]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Reverse iterator type]
+ [[reference__nary_node__reverse_iterator]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Immutable reverse iterator type]
+ [[reference__nary_node__const_reverse_iterator]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Emplacement constructor]
+ [[reference__nary_node__emplacement_ctor]]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__nary_node__emplacement_ctor_w_allocator]]
+ [`nary_node`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ nary_node(nary_node const& copy);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [``
+ nary_node(
+ nary_node const& copy
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`nary_node`]
+ ]
+ [
+ [Move constructor]
+ [``
+ nary_node(nary_node&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ nary_node(
+ nary_node&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`nary_node`]
+ ]
+ [
+ [Copy assignment operator]
+ [``
+ nary_node& operator=(nary_node const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ nary_node& operator=(nary_node&&);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Parent access]
+ [[reference__nary_node_base__get_parent_ptr__const]]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [[reference__nary_node_base__get_parent_ptr]]
+ [__Tree_Node__]
+ ]
+ [
+ [Child creation]
+ [[reference__nary_node_base__emplace]]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Child copy creation]
+ [[reference__nary_node_base__insert]]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [[reference__nary_node_base__cbegin]]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [[reference__nary_node_base__begin]]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [[reference__nary_node_base__cend]]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [[reference__nary_node_base__end]]
+ [__Tree_Node__]
+ ]
+ [
+ [Children reverse range begin access]
+ [[reference__nary_node_base__crbegin]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range begin access]
+ [[reference__nary_node_base__rbegin]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [[reference__nary_node_base__crend]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [[reference__nary_node_base__rend]]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children range size query]
+ [[reference__nary_node_base__size]]
+ [__Tree_Node__]
+ ]
+ [
+ [Leaf node query]
+ [[reference__nary_node_base__empty]]
+ [__Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [[reference__nary_node_base__clear]]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-Members]
+Same as those defined in __nary_node_base__.
+[endsect]
+
+[section Example]
+<__example_nary_node_cpp__>
+[endsect]
+
+[section Test]
+<__test_nary_node_cpp__>
+[endsect]
+
+[endsect] [/ nary_node]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_nary_node_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_nary_node_base.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,354 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:nary_node_base `nary_node_base<Derived,T,Selector>`]
+
+[section Description]
+The __nary_node__ class template inherits its functionality from this class
+template. They differ only with regard to template parameters: the
+__nary_node__ class template is meant to be used directly as a data structure,
+while `nary_node_base` is more suitable as a base class template from which
+__Tree_Node__ adaptor class templates can derive via the __nary_node_base_gen__
+__Base_Type_Generator__.
+
+If the user data type models the __Fusion_Associative_Sequence__ concept, then
+each of the elements within can be also be obtained through key-value access
+and set through key-value modification as defined by the __Tree_Node__ concept;
+more specifically, for some object `node` of type `Node` such that `Node`
+inherits from `nary_node_base`, then for any type `Key` such that
+[^_fusion_has_key_<Key>(get<_data_key_>(node))] returns `true`, so does
+[^_has_key_<Key>(node)].
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__nary_node__header__>
+``
+
+Forward-declared:
+
+``
+#include <__nary_node__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__nary_node__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ []
+ ]
+ [
+ [`T`]
+ [The user data type.]
+ []
+ ]
+ [
+ [`Selector`]
+ [The type that determines the child container type.]
+ [[^_is_recursive_selector_<Selector>] must return __mpl_true__.]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __N_ary_Tree_Node__
+ * __Reversible_Tree_Node__ if [^_container_gen_<Selector,Derived>::type]
+ returns a __Reversible_Container__ model
+ * __Base_Tree_Node__
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__nary_node_base__bases]
+[endsect]
+
+[section:members Members]
+Given:
+[reference__nary_node_base__children]
+[table
+ [[Name][Definition][Scope][Where defined]]
+ [
+ [Super type]
+ [[reference__nary_node_base__super_t]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Data type, allocator type, allocator reference type]
+ [[reference__nary_node_base__traits]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [[reference__nary_node_base__pointer]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [[reference__nary_node_base__const_pointer]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Iterator type]
+ [[reference__nary_node_base__iterator]]
+ [`public`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Immutable iterator type]
+ [[reference__nary_node_base__const_iterator]]
+ [`public`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Reverse iterator type]
+ [[reference__nary_node_base__reverse_iterator]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Immutable reverse iterator type]
+ [[reference__nary_node_base__const_reverse_iterator]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Emplacement constructor]
+ [[reference__nary_node_base__emplacement_ctor]]
+ [`protected`]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__nary_node_base__emplacement_ctor_w_allocator]]
+ [`protected`]
+ [`nary_node_base`]
+ ]
+ [
+ [Derived copy constructor]
+ [[reference__nary_node_base__derived_copy_ctor]]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived copy constructor with allocator]
+ [[reference__nary_node_base__derived_copy_ctor_w_allocator]]
+ [`nary_node_base`]
+ ]
+ [
+ [Derived move constructor]
+ [``
+ nary_node_base(Derived&& source);
+ ``]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived move constructor with allocator]
+ [``
+ nary_node_base(
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`protected`]
+ [`nary_node_base`]
+ ]
+ [
+ [Copy or move notification]
+ [[reference__nary_node_base__on_post_copy_or_move]]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived copy assignment]
+ [[reference__nary_node_base__copy_assign]]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived move assignment]
+ [``
+ Derived& operator=(Derived&&);
+ ``]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [User data member read-only access]
+ [[reference__nary_node_base__key_value_operator__const]]
+ [`public`]
+ [`nary_node_base`]
+ ]
+ [
+ [User data member access]
+ [[reference__nary_node_base__key_value_operator]]
+ [`public`]
+ [`nary_node_base`]
+ ]
+ [
+ [Parent access]
+ [[reference__nary_node_base__get_parent_ptr__const]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [[reference__nary_node_base__get_parent_ptr]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child creation]
+ [[reference__nary_node_base__emplace]]
+ [`public`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Child copy creation]
+ [[reference__nary_node_base__insert]]
+ [`public`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [[reference__nary_node_base__cbegin]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [[reference__nary_node_base__begin]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [[reference__nary_node_base__cend]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [[reference__nary_node_base__end]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children reverse range begin access]
+ [[reference__nary_node_base__crbegin]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range begin access]
+ [[reference__nary_node_base__rbegin]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [[reference__nary_node_base__crend]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children reverse range past-the-end access]
+ [[reference__nary_node_base__rend]]
+ [`public`]
+ [__Reversible_Tree_Node__]
+ ]
+ [
+ [Children range size query]
+ [[reference__nary_node_base__size]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Leaf node query]
+ [[reference__nary_node_base__empty]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [[reference__nary_node_base__clear]]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Derived access]
+ [``
+ const_pointer get_derived() const;
+ ``]
+ [`public`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Derived access]
+ [``
+ pointer get_derived();
+ ``]
+ [`public`]
+ [__Base_Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-Members]
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [User data read-only access]
+ [[reference__nary_node_base__at_data_key__const]]
+ [__Tree_Node__]
+ ]
+ [
+ [user data access]
+ [[reference__nary_node_base__at_data_key]]
+ [__Tree_Node__]
+ ]
+ [
+ [User data modification]
+ [[reference__nary_node_base__put_data]]
+ [__Tree_Node__]
+ ]
+ [
+ [Key-value read-only access]
+ [[reference__nary_node_base__key_value_operator__const]]
+ [__Tree_Node__]
+ ]
+ [
+ [Key-value access]
+ [[reference__nary_node_base__key_value_operator]]
+ [__Tree_Node__]
+ ]
+ [
+ [Key-value modification]
+ [[reference__nary_node_base__put]]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Non-Members]
+
+[endsect] [/ nary_node_base]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_nary_node_base_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_nary_node_base_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,62 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:nary_node_base_gen `nary_node_base_gen<Selector>`]
+
+[section Synopsis]
+[reference__nary_node_base_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__nary_node__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Base_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Selector`]
+ [
+ The type that determines the child container type of
+ __nary_node_base__.
+ ]
+ [[^_is_recursive_selector_<Selector>] must return __mpl_true__.]
+ [__ptr_dequeS__]
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from __nary_node_base__.
+Let `T` be the user data type.
+Let `Selector` be a valid `nary_node_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap2_<nary_node_base_gen<Selector>,Derived,T>::type r;
+``
+
+[*Return type:] [^_nary_node_base_<Derived,T,Selector>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ nary_node_base_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_nary_node_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_nary_node_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,58 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:nary_node_gen `nary_node_gen<Selector>`]
+
+[section Synopsis]
+[reference__nary_node_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__nary_node__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Node_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Selector`]
+ [The type that determines the child container type of __nary_node__.]
+ [[^_is_recursive_selector_<Selector>] must return __mpl_true__.]
+ [__ptr_dequeS__]
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `T` be the user data type.
+Let `Selector` be a valid `nary_node_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap1_<nary_node_gen<Selector>,T>::type r;
+``
+
+[*Return type:] [^_nary_node_<T,Selector>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ nary_node_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_position_key.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_position_key.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,34 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:position_key `position_key`]
+
+[section Synopsis]
+[reference__position_key]
+[endsect]
+
+[section Description]
+Use this type to access the iterator that points to a __Tree_Node__ object in
+its parent's collection of children. The __Tree_Node__ type must ultimately
+inherit from __tree_node_with_position_base__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__position_key__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__position_key__typeof_header__>
+``
+[endsect]
+
+[endsect] [/ position_key]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_post_order_desc_iter.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_post_order_desc_iter.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,229 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:post_order_desc_iter `post_order_descendant_iterator<Node,IsReverse>`]
+
+[section Synopsis]
+[reference__post_order_descendant_iterator]
+[endsect]
+
+[section Description]
+This iterator traverses the descendants of the specified root node in
+either post-order or reverse pre-order fashion, e.g. given the following tree
+representation:
+
+``
+ A
+ |
+ C---+---B
+ | |
++-+-+ +-+-+
+| | | |
+D E F G
+``
+
+This iterator will traverse the tree nodes in the following order:
+
+``
+D E C F G B
+``
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__post_order_descendant_iterator__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__post_order_descendant_iterator__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Node`]
+ [The type of a tree node.]
+ [
+ It must model the __Tree_Node__ concept, but it can be
+ `const`-qualified.
+ ]
+ []
+ ]
+ [
+ [`IsReverse`]
+ [
+ Configures the `post_order_descendant_iterator` to traverse tree
+ nodes in reverse pre-order fashion if equivalent to __mpl_true__;
+ otherwise, the nodes will be traversed in post-order fashion.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ [__mpl_false__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Tree_Node_Descendant_Iterator__
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Value type]
+ [``
+ typedef ... value_type;
+ ``]
+ [__Tree_Node_Descendant_Iterator__]
+ ]
+ [
+ [Reference type]
+ [``
+ typedef ... reference;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [``
+ typedef ... pointer;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Distance type]
+ [``
+ typedef ... difference_type;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [``
+ typedef ... iterator_category;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [``
+ post_order_descendant_iterator();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from node]
+ [``
+ post_order_descendant_iterator(Node&);
+ ``]
+ [__Tree_Node_Descendant_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename N>
+ post_order_descendant_iterator(
+ post_order_descendant_iterator<N> const&
+ );
+ ``]
+ [`post_order_iterator`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ post_order_descendant_iterator(
+ post_order_descendant_iterator const&
+ );
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [``
+ post_order_descendant_iterator&
+ operator=(post_order_descendant_iterator const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Dereference operator]
+ [``
+ reference operator*() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Indirection operator]
+ [``
+ pointer operator->() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pre-increment operator]
+ [``
+ post_order_descendant_iterator& operator++();
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Post-increment operator]
+ [``
+ post_order_descendant_iterator operator++(int);
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Traversal state conversion operator]
+ [``
+ operator _traversal_state_() const;
+ ``]
+ [__Tree_Node_Iterator__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-members]
+[table
+ [[Name][Definition][Description]]
+ [
+ [Iterator creation]
+ [[reference__make_post_order_descendant_iterator]]
+ [
+ Constructs and returns a `post_order_descendant_iterator` that will
+ iterate through the descendants of the specified node in post-order
+ fashion.
+ ]
+ ]
+ [
+ [Iteration]
+ [[reference__make_pre_order_descendant_reverse_iterator]]
+ [
+ Constructs and returns a `post_order_descendant_iterator` that will
+ iterate through the descendants of the specified node in reverse
+ pre-order fashion.
+ ]
+ ]
+]
+[endsect]
+
+[endsect] [/ post_order_descendant_iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_post_order_iterator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_post_order_iterator.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,224 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:post_order_iterator `post_order_iterator<Node,IsReverse>`]
+
+[section Synopsis]
+[reference__post_order_iterator]
+[endsect]
+
+[section Description]
+This iterator traverses the specified root node and all its descendants in
+either post-order or reverse pre-order fashion, e.g. given the following tree
+representation:
+
+``
+ A
+ |
+ C---+---B
+ | |
++-+-+ +-+-+
+| | | |
+D E F G
+``
+
+This iterator will traverse the tree nodes in the following order:
+
+``
+D E C F G B A
+``
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__post_order_iterator__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__post_order_iterator__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Node`]
+ [The type of a tree node.]
+ [
+ It must model the __Tree_Node__ concept, but it can be
+ `const`-qualified.
+ ]
+ []
+ ]
+ [
+ [`IsReverse`]
+ [
+ Configures the `post_order_iterator` to traverse tree nodes in
+ reverse pre-order fashion if equivalent to __mpl_true__; otherwise,
+ the nodes will be traversed in post-order fashion.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ [__mpl_false__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Full_Tree_Node_Iterator__
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Value type]
+ [``
+ typedef ... value_type;
+ ``]
+ [__Full_Tree_Node_Iterator__]
+ ]
+ [
+ [Reference type]
+ [``
+ typedef ... reference;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [``
+ typedef ... pointer;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Distance type]
+ [``
+ typedef ... difference_type;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [``
+ typedef ... iterator_category;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [``
+ post_order_iterator();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from node]
+ [``
+ explicit post_order_iterator(Node&);
+ ``]
+ [__Full_Tree_Node_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename N>
+ post_order_iterator(post_order_iterator<N> const&);
+ ``]
+ [`post_order_iterator`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ post_order_iterator(post_order_iterator const&);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [``
+ post_order_iterator& operator=(post_order_iterator const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Dereference operator]
+ [``
+ reference operator*() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Indirection operator]
+ [``
+ pointer operator->() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pre-increment operator]
+ [``
+ post_order_iterator& operator++();
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Post-increment operator]
+ [``
+ post_order_iterator operator++(int);
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Traversal state conversion operator]
+ [``
+ operator _traversal_state_() const;
+ ``]
+ [__Tree_Node_Iterator__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-members]
+[table
+ [[Name][Definition][Description]]
+ [
+ [Iterator creation]
+ [[reference__make_post_order_iterator]]
+ [
+ Constructs and returns a `post_order_iterator` that will iterate
+ through the specified node and its descendants in post-order
+ fashion.
+ ]
+ ]
+ [
+ [Iteration]
+ [[reference__make_pre_order_reverse_iterator]]
+ [
+ Constructs and returns a `post_order_iterator` that will iterate
+ through the specified node and its descendants in reverse pre-order
+ fashion.
+ ]
+ ]
+]
+[endsect]
+
+[endsect] [/ post_order_iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_pre_order_desc_iter.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_pre_order_desc_iter.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,229 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:pre_order_desc_iter `pre_order_descendant_iterator<Node,IsReverse>`]
+
+[section Synopsis]
+[reference__pre_order_descendant_iterator]
+[endsect]
+
+[section Description]
+This iterator traverses the descendants of the specified root node in
+either pre-order or reverse post-order fashion, e.g. given the following tree
+representation:
+
+``
+ A
+ |
+ C---+---B
+ | |
++-+-+ +-+-+
+| | | |
+D E F G
+``
+
+This iterator will traverse the tree nodes in the following order:
+
+``
+C D E B F G
+``
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__pre_order_descendant_iterator__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__pre_order_descendant_iterator__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Node`]
+ [The type of a tree node.]
+ [
+ It must model the __Tree_Node__ concept, but it can be
+ `const`-qualified.
+ ]
+ []
+ ]
+ [
+ [`IsReverse`]
+ [
+ Configures the `pre_order_descendant_iterator` to traverse tree
+ nodes in reverse post-order fashion if equivalent to __mpl_true__;
+ otherwise, the nodes will be traversed in pre-order fashion.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ [__mpl_false__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Tree_Node_Descendant_Iterator__
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Value type]
+ [``
+ typedef ... value_type;
+ ``]
+ [__Tree_Node_Descendant_Iterator__]
+ ]
+ [
+ [Reference type]
+ [``
+ typedef ... reference;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [``
+ typedef ... pointer;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Distance type]
+ [``
+ typedef ... difference_type;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [``
+ typedef ... iterator_category;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [``
+ pre_order_descendant_iterator();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from node]
+ [``
+ explicit pre_order_descendant_iterator(Node&);
+ ``]
+ [__Tree_Node_Descendant_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename N>
+ pre_order_descendant_iterator(
+ pre_order_descendant_iterator<N> const&
+ );
+ ``]
+ [`pre_order_descendant_iterator`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ pre_order_descendant_iterator(
+ pre_order_descendant_iterator const&
+ );
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [``
+ pre_order_descendant_iterator&
+ operator=(pre_order_descendant_iterator const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Dereference operator]
+ [``
+ reference operator*() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Indirection operator]
+ [``
+ pointer operator->() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pre-increment operator]
+ [``
+ pre_order_descendant_iterator& operator++();
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Post-increment operator]
+ [``
+ pre_order_descendant_iterator operator++(int);
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Traversal state conversion operator]
+ [``
+ operator _traversal_state_() const;
+ ``]
+ [__Tree_Node_Iterator__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-members]
+[table
+ [[Name][Definition][Description]]
+ [
+ [Iterator creation]
+ [[reference__make_pre_order_descendant_iterator]]
+ [
+ Constructs and returns a `pre_order_descendant_iterator` that will
+ iterate through the descendants of the specified node in pre-order
+ fashion.
+ ]
+ ]
+ [
+ [Iteration]
+ [[reference__make_post_order_descendant_reverse_iterator]]
+ [
+ Constructs and returns a `pre_order_descendant_iterator` that will
+ iterate through the descendants of the specified node in reverse
+ post-order fashion.
+ ]
+ ]
+]
+[endsect]
+
+[endsect] [/ pre_order_descendant_iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_pre_order_iterator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_pre_order_iterator.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,224 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:pre_order_iterator `pre_order_iterator<Node,IsReverse>`]
+
+[section Synopsis]
+[reference__pre_order_iterator]
+[endsect]
+
+[section Description]
+This iterator traverses the specified root node and all its descendants in
+either pre-order or reverse post-order fashion, e.g. given the following tree
+representation:
+
+``
+ A
+ |
+ C---+---B
+ | |
++-+-+ +-+-+
+| | | |
+D E F G
+``
+
+This iterator will traverse the tree nodes in the following order:
+
+``
+A C D E B F G
+``
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__pre_order_iterator__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__pre_order_iterator__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Node`]
+ [The type of a tree node.]
+ [
+ It must model the __Tree_Node__ concept, but it can be
+ `const`-qualified.
+ ]
+ []
+ ]
+ [
+ [`IsReverse`]
+ [
+ Configures the `pre_order_iterator` to traverse tree nodes in
+ reverse post-order fashion if equivalent to __mpl_true__;
+ otherwise, the nodes will be traversed in pre-order fashion.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ [__mpl_false__]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Full_Tree_Node_Iterator__
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Value type]
+ [``
+ typedef ... value_type;
+ ``]
+ [__Full_Tree_Node_Iterator__]
+ ]
+ [
+ [Reference type]
+ [``
+ typedef ... reference;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [``
+ typedef ... pointer;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Distance type]
+ [``
+ typedef ... difference_type;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [``
+ typedef ... iterator_category;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [``
+ pre_order_iterator();
+ ``]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from node]
+ [``
+ explicit pre_order_iterator(Node&);
+ ``]
+ [__Full_Tree_Node_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename N>
+ pre_order_iterator(pre_order_iterator<N> const&);
+ ``]
+ [`pre_order_iterator`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ pre_order_iterator(pre_order_iterator const&);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [``
+ pre_order_iterator& operator=(pre_order_iterator const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Dereference operator]
+ [``
+ reference operator*() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Indirection operator]
+ [``
+ pointer operator->() const;
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pre-increment operator]
+ [``
+ pre_order_iterator& operator++();
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Post-increment operator]
+ [``
+ pre_order_iterator operator++(int);
+ ``]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Traversal state conversion operator]
+ [``
+ operator _traversal_state_() const;
+ ``]
+ [__Tree_Node_Iterator__]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-members]
+[table
+ [[Name][Definition][Description]]
+ [
+ [Iterator creation]
+ [[reference__make_pre_order_iterator]]
+ [
+ Constructs and returns a `pre_order_iterator` that will iterate
+ through the specified node and its descendants in pre-order
+ fashion.
+ ]
+ ]
+ [
+ [Reverse iterator creation]
+ [[reference__make_post_order_reverse_iterator]]
+ [
+ Constructs and returns a `pre_order_iterator` that will iterate
+ through the specified node and its descendants in reverse
+ post-order fashion.
+ ]
+ ]
+]
+[endsect]
+
+[endsect] [/ pre_order_iterator]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_red_black_balancer.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_red_black_balancer.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,26 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:red_black_balancer `red_black_balancer`]
+
+[section Synopsis]
+[reference__red_black_balancer]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__red_black_balancer__header__>
+``
+[endsect]
+
+[endsect] [/ red_black_balancer]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_red_black_flag_key.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_red_black_flag_key.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,33 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:red_black_flag_key `red_flag_key` and `black_flag_key`]
+
+[section Synopsis]
+[reference__red_black_flag_key]
+[endsect]
+
+[section Description]
+Use these types to query the red-or-black flag stored in __Tree_Node__ objects
+of types ultimately inheriting from __tree_node_with_red_black_flag_base__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__red_black_flag_key__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__red_black_flag_key__typeof_header__>
+``
+[endsect]
+
+[endsect] [/ red_black_flag_key]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_traversal_state.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_traversal_state.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,40 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:traversal_state `traversal_state`]
+
+[section Synopsis]
+[reference__traversal_state]
+[endsect]
+
+[section Description]
+This enumeration type is the return type of the dereferenceability expression
+defined by each iterator type that this library provides. The `no_traversal`
+value corresponds to `false` in a boolean context, enabling the iterator types
+to fulfill their runtime requirements for dereferenceability. The
+`pre_order_traversal` and `post_order_traversal` values are significant because
+the __depth_first_iterator__ traverses each node twice, so algorithms must be
+able to distinguish which state the iterator is in when it traverses a tree
+node. The `breadth_first_traversal` and `in_order_traversal` values are
+defined for completeness.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__traversal_state__header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__traversal_state__typeof_header__>
+``
+[endsect]
+
+[endsect] [/ traversal_state]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_tree_node_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_tree_node_base.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,252 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:tree_node_base `tree_node_base<Derived>`]
+
+[section Description]
+All models of the __Base_Tree_Node__ concept that this library provides either
+inherit from this type or declare it as a `friend struct` if they override any
+of its implementation methods.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__base__header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ []
+ []
+ ]
+]
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Definition][Scope][Description]]
+ [
+ [Pointer type]
+ [``
+ typedef Derived* pointer;
+ ``]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Pointer-to-const type]
+ [``
+ typedef Derived const* const_pointer;
+ ``]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Derived access]
+ [``
+ const_pointer get_derived() const;
+ ``]
+ [`public`]
+ [Returns `this` as the derived type.]
+ ]
+ [
+ [Derived access]
+ [``
+ pointer get_derived();
+ ``]
+ [`public`]
+ [Returns `this` as the derived type.]
+ ]
+ [
+ [Emplacement construction notification implementation]
+ [[reference__tree_node_base__on_post_emplacement_construct]]
+ [`protected`]
+ [TODO.]
+ ]
+ [
+ [Data modified notification implementation]
+ [[reference__tree_node_base__on_post_modify_value_impl]]
+ [`protected`]
+ [
+ Subclass types should override this method if they keep track of
+ modifications to the value that the invoking node associates with
+ the specified key. Does nothing by default.
+ ]
+ ]
+ [
+ [Data modified notification]
+ [[reference__tree_node_base__on_post_modify_value]]
+ [`protected`]
+ [
+ Subclass types should invoke this method after modifying the value
+ that the invoking node associates with the specified key. Calls
+ the corresponding implementation method.
+ ]
+ ]
+ [
+ [Data propagated notification implementation]
+ [[reference__tree_node_base__on_post_propagate_value_impl]]
+ [`protected`]
+ [
+ Subclass types should override this method if they keep track of
+ modifications to values that each node in the chain of ancestors
+ associates with the specified key. Does nothing by default.
+ ]
+ ]
+ [
+ [Data propagated notification]
+ [[reference__tree_node_base__on_post_propagate_value]]
+ [`protected`]
+ [
+ Subclass types should invoke this method after propagating the
+ value that the invoking node associates with the specified key up
+ the chain of ancestors. Calls the corresponding implementation
+ method.
+ ]
+ ]
+ [
+ [Data propagated once notification implementation]
+ [[reference__tree_node_base__on_post_propagate_value_once_impl]]
+ [`protected`]
+ [
+ Subclass types should override this method if they keep track of
+ modifications to the values that the invoking node and its parent
+ associate with the specified key. Does nothing by default.
+ ]
+ ]
+ [
+ [Data propagated once notification]
+ [[reference__tree_node_base__on_post_propagate_value_once]]
+ [`protected`]
+ [
+ Subclass types should invoke this method after modifying the values
+ that the invoking node and its parent associate with the specified
+ key. Calls the corresponding implementation method.
+ ]
+ ]
+ [
+ [Insertion notification implementation]
+ [[reference__tree_node_base__on_post_inserted_impl__true]]
+ [`protected`]
+ [
+ Subclass types should override this method if they store iterators
+ that will remain valid even if any of the siblings of the pointees
+ are removed. The overriding implementation should simply store the
+ specified position. Does nothing by default.
+ ]
+ ]
+ [
+ [Insertion notification implementation]
+ [[reference__tree_node_base__on_post_inserted_impl__false]]
+ [`protected`]
+ [
+ Subclass types should override this method if they store iterators
+ that may become invalidated if any of the siblings of the pointees
+ are removed. The overriding implementation should validate the
+ positions of the siblings as well as its own. Does nothing by
+ default.
+ ]
+ ]
+ [
+ [Insertion notification]
+ [[reference__tree_node_base__on_post_inserted]]
+ [`protected`]
+ [
+ Subclass types should invoke this method on their child nodes after
+ they are stored, or on the siblings of those child nodes after they
+ are removed. Calls the corresponding implementation method.
+ ]
+ ]
+ [
+ [Erasure notification implementation]
+ [[reference__tree_node_base__on_post_erase_impl]]
+ [`protected`]
+ [
+ Subclass types should override this method after one or more of
+ the tree node's children are removed. Does nothing by default.
+ ]
+ ]
+ [
+ [Erasure notification]
+ [[reference__tree_node_base__on_post_erase]]
+ [`protected`]
+ [
+ Subclass types should invoke this method after one or more of
+ the tree node's children are removed. Calls the corresponding
+ implementation method.
+ ]
+ ]
+ [
+ [Clear notification implementation]
+ [[reference__tree_node_base__on_post_clear_impl]]
+ [`protected`]
+ [
+ Subclass types should override this method after all of the
+ tree node's children are removed. Does nothing by default.
+ ]
+ ]
+ [
+ [Clear notification]
+ [[reference__tree_node_base__on_post_clear]]
+ [`protected`]
+ [
+ Subclass types should invoke this method after all of the
+ tree node's children are removed. Calls the corresponding
+ implementation method.
+ ]
+ ]
+ [
+ [Left rotation notification implementation]
+ [[reference__tree_node_base__on_post_rotate_left_impl]]
+ [`protected`]
+ [
+ Subclass types should override this method after the tree node is
+ rotate left. Does nothing by default.
+ ]
+ ]
+ [
+ [Left rotation notification]
+ [[reference__tree_node_base__on_post_rotate_left]]
+ [`protected`]
+ [
+ Subclass types should invoke this method after the tree node is
+ rotated left. Calls the corresponding implementation method.
+ ]
+ ]
+ [
+ [Right rotation notification implementation]
+ [[reference__tree_node_base__on_post_rotate_right_impl]]
+ [`protected`]
+ [
+ Subclass types should override this method after the tree node is
+ rotate right. Does nothing by default.
+ ]
+ ]
+ [
+ [Right rotation notification]
+ [[reference__tree_node_base__on_post_rotate_right]]
+ [`protected`]
+ [
+ Subclass types should invoke this method after the tree node is
+ rotated right. Calls the corresponding implementation method.
+ ]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ tree_node_base]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_value_at_key.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_value_at_key.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,35 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:value_at_key `result_of::value_at_key<Node,Key>`]
+
+[section Synopsis]
+[reference__tree_node__result_of__value_at_key]
+[endsect]
+
+[section Description]
+Let `Node` be a (possibly `const`-qualified) __Tree_Node__ model.
+Let `Key` be a type for which [^_result_of__has_key_<Node,Key>] evaluates to
+__mpl_true__.
+
+``
+ typedef result_of::value_at_key<Node,Key>::type r;
+``
+
+[*Return type:] The actual element type associated with key type `Key` in
+`Node`.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__value_at_key__header__>
+``
+[endsect]
+
+[endsect] [/ value_at_key]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_accum_base_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_accum_base_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,83 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:with_accumulation_base_gen
+ `with_accumulation_base_gen<BaseGenerator>`
+]
+
+[section Synopsis]
+[reference__with_accumulation_base_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_accumulation_base_gen__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Base_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ __tree_node_with_accumulation_base__ will inherit.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from
+__tree_node_with_accumulation_base__.
+Let `Key` be the key type.
+Let `Data` be the user data type.
+Let `BaseGenerator` be a valid `with_accumulation_base_gen` template
+argument.
+
+``
+ typedef _mpl_apply_wrap3_<
+ with_accumulation_base_gen<BaseGenerator>
+ , Derived
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^__tree_node_with_accumulation_base__<Derived,BaseGenerator,Key,Data>]
+
+``
+ typedef _mpl_apply_wrap2_<
+ with_accumulation_base_gen<BaseGenerator>
+ , Derived
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^__tree_node_with_accumulation_base__<Derived,BaseGenerator,Data,void>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ with_accumulation_base_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_accumulation.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_accumulation.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,157 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:with_accumulation
+ `with_accumulation<BaseGenerator,T1,T2,AccumulationKey>`
+]
+
+[section Description]
+In addition to the other operations it inherits from the return type of
+`BaseGenerator`, this __Tree_Node__ adaptor performs statistical computations
+on user data when the node's structure and/or contents are modified, then
+stores the result.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_accumulation__header__>
+``
+
+Forward-declared:
+
+``
+#include <__with_accumulation__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__with_accumulation__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ model from whose return type
+ `with_accumulation` will ultimately inherit.
+ []
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is specified; the user data type otherwise.]
+ []
+ ]
+ [
+ [`T2`]
+ [The user data type if specified; ignored otherwise.]
+ [`void`]
+ ]
+ [
+ [`AccumulationKey`]
+ [A template instantiation of __accumulation_key__.]
+ [`tree_node::default_accumulation_key`]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__ if `T2` is specified;
+ __Non_Associative_Tree_Node__ otherwise
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__with_accumulation__bases]
+[endsect]
+
+[section:members Public Members]
+In addition to those inherited from __tree_node_with_accumulation_base__ as
+well as from the return type of `BaseGenerator`, the following members are
+defined:
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Super type]
+ [[reference__with_accumulator__super_t]]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor]
+ [[reference__with_accumulation__emplacement_ctor]]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__with_accumulation__emplacement_ctor_w_allocator]]
+ [`with_accumulation`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ with_accumulation(with_accumulation const& copy);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [``
+ with_accumulation(
+ with_accumulation const& copy
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`with_accumulation`]
+ ]
+ [
+ [Move constructor]
+ [``
+ with_accumulation(with_accumulation&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ with_accumulation(
+ with_accumulation&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`with_accumulation`]
+ ]
+ [
+ [Copy assignment operator]
+ [``
+ with_accumulation& operator=(with_accumulation const& copy);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ with_accumulation& operator=(with_accumulation&& source);
+ ``]
+ [__Movable__]
+ ]
+]
+[endsect]
+
+[section:non_members Non-members]
+Same as those inherited from __tree_node_with_accumulation_base__ and from the
+return type of `BaseGenerator`.
+[endsect]
+
+[endsect] [/ with_accumulation]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_accumulation_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_accumulation_base.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,228 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:with_accumulation_base
+ `with_accumulation_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ , Key
+ , Tag
+ , IncludesAllDescendants
+ , IncludesRoot
+ , Value
+ >`
+]
+
+[section Description]
+The __tree_node_with_accumulation__ class template inherits its functionality
+from this class template. They differ only with regard to template parameters:
+the __tree_node_with_accumulation__ class template is meant to be used directly
+as a data structure, while `with_accumulation_base` is more suitable as a base
+class template from which other __Tree_Node__ adaptor class templates can
+derive via the __tree_node_with_accumulation_base_gen__
+__Base_Type_Generator__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_accumulation__header__>
+``
+
+Forward-declared:
+
+``
+#include <__with_accumulation__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__with_accumulation__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ []
+ ]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ `with_accumulation_base` will inherit.
+ ]
+ []
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is not `void`; the user data type otherwise.]
+ []
+ ]
+ [
+ [`T2`]
+ [The user data type if not `void`; ignored otherwise.]
+ []
+ ]
+ [
+ [`Key`]
+ [
+ The key type associated with the value on which this __Tree_Node__
+ adaptor will perform statistical computations.
+ ]
+ [
+ [^_has_key_<Key>(base)] must return `true` for some object `base`
+ of the return type of `BaseGenerator`.
+ ]
+ ]
+ [
+ [`Tag`]
+ [
+ The type that determines what this __Tree_Node__ adaptor will
+ compute.
+ ]
+ [It must be a valid __Boost_Accumulators__ feature.]
+ ]
+ [
+ [`IncludesAllDescendants`]
+ [
+ A __Boolean_Integral_Constant__ that determines whether this
+ __Tree_Node__ adaptor will involve all descendants (if set to
+ __mpl_true__) or just the immediate children (if set to
+ __mpl_false__) in its computations.
+ ]
+ []
+ ]
+ [
+ [`IncludesRoot`]
+ [
+ A __Boolean_Integral_Constant__ that determines whether or not this
+ __Tree_Node__ adaptor will include the value of the root node in
+ its computations.
+ ]
+ []
+ ]
+ [
+ [`Value`]
+ [
+ The type of the result of the computation performed by this
+ __Tree_Node__ adaptor if specified; ignored if `void`.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__ if `T2` is specified;
+ __Non_Associative_Tree_Node__ otherwise
+ * __Base_Tree_Node__
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__with_accumulation_base__bases]
+[endsect]
+
+[section:members Members]
+In addition to those inherited from the return type of `BaseGenerator`, the
+following members are defined:
+
+[table
+ [[Name][Definition][Scope][Description]]
+ [
+ [Emplacement constructor]
+ [[reference__with_accumulation_base__emplacement_ctor]]
+ [`protected`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__with_accumulation_base__emplacement_ctor_w_allocator]]
+ [`protected`]
+ [
+ Constructs a `with_accumulator` object, initializing its user data
+ with the trailing arguments. Child nodes will be subsequently
+ created using the specified allocator (or a copy if `const`).
+ ]
+ ]
+ [
+ [Derived copy constructor]
+ [[reference__with_accumulation_base__derived_copy_ctor]]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Derived copy constructor with allocator]
+ [[reference__with_accumulation_base__derived_copy_ctor_w_allocator]]
+ [`protected`]
+ [
+ Constructs a `with_accumulator` object as a copy of the specified
+ one. Child nodes will be subsequently created using the specified
+ allocator (or a copy if `const`).
+ ]
+ ]
+ [
+ [Derived move constructor]
+ [``
+ with_accumulation_base(Derived&&);
+ ``]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Derived move constructor with allocator]
+ [``
+ with_accumulation_base(
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`protected`]
+ [
+ Constructs a `with_accumulator` object and moves the contents
+ of the specified node to the new one. Child nodes will be
+ subsequently created using the specified allocator (or a copy
+ if `const`).
+ ]
+ ]
+ [
+ [Accumulation member read-only access]
+ [[reference__with_accumulation_base__key_value_operator]]
+ [`public`]
+ [
+ Returns the accumulated value of the statistical computations
+ performed by this __Tree_Node__ adaptor.
+ ]
+ ]
+]
+[endsect]
+
+[section:non_members Non-members]
+In addition to those inherited from the return type of `BaseGenerator`, the
+following non-members are defined.
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Accumulation key-value read-only access]
+ [[reference__with_accumulation_base__at_key]]
+ [__Tree_Node__]
+ ]
+]
+[endsect]
+
+[endsect] [/ with_accumulation_base]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_accumulation_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_accumulation_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,76 @@
+[/=============================================================================
+ Copyright (C) 2013 Cromwell D. Enage
+
+ 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:with_accumulation_gen `with_accumulation_gen<BaseGenerator>`]
+
+[section Synopsis]
+[reference__with_accumulation_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_accumulation__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Node_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ __tree_node_with_accumulation__ will ultimately inherit.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Key` be the key type.
+Let `Data` be the user data type.
+Let `BaseGenerator` be a valid `with_accumulation_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap2_<
+ with_accumulator_gen<BaseGenerator>
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_accumulation_<BaseGenerator,Key,Data>]
+
+``
+ typedef _mpl_apply_wrap1_<
+ with_accumulation_gen<BaseGenerator>
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_accumulation_<BaseGenerator,Data,void>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ with_accumulation_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_count.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_count.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,151 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ 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:with_count `with_count<BaseGenerator,T1,T2,Count>`]
+
+[section Description]
+The [*count] of a tree node can be defined as the number of itself plus its
+descendants. In addition to the operations it inherits from the return type
+of `BaseGenerator`, this __Tree_Node__ adaptor provides constant-time access
+to the count of the node by updating this information after structural
+modifications have been performed.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_count__header__>
+``
+
+Forward-declared:
+
+``
+#include <__with_count__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__with_count__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type `with_count`
+ will ultimately inherit.
+ ]
+ []
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is not `void`; the user data type otherwise.]
+ []
+ ]
+ [
+ [`T2`]
+ [The user data type if not `void`; ignored otherwise.]
+ [`void`]
+ ]
+ [
+ [`Count`]
+ [The count type.]
+ [`std::size_t`]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__ if `T2` is not `void`;
+ __Non_Associative_Tree_Node__ otherwise
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__with_count__bases]
+[endsect]
+
+[section:members Public Members]
+In addition to those inherited from __tree_node_with_count_base__ and from the
+return type of `BaseGenerator`, the following members are defined:
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Emplacement constructor]
+ [[reference__with_count__emplacement_ctor]]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__with_count__emplacement_ctor_w_allocator]]
+ [`with_count`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ with_count(with_count const& copy);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [``
+ with_count(
+ with_count const& copy
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`with_count`]
+ ]
+ [
+ [Move constructor]
+ [``
+ with_count(with_count&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ with_count(
+ with_count&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`with_count`]
+ ]
+ [
+ [Copy assignment operator]
+ [``
+ with_count& operator=(with_count const&);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ with_count& operator=(with_count&&);
+ ``]
+ [__Movable__]
+ ]
+]
+[endsect]
+
+[section:non_members Non-members]
+Same as those inherited from __tree_node_with_count_base__ and from the return
+type of `BaseGenerator`.
+[endsect]
+
+[endsect] [/ with_count]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_count_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_count_base.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,166 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ 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:with_count_base `with_count_base<Derived,BaseGenerator,T1,T2,Count>`]
+
+[section Description]
+The __tree_node_with_count__ class template inherits its functionality from
+this class template. They differ only with regard to template parameters: the
+__tree_node_with_count__ class template is meant to be used directly as a data
+structure, while `with_count_base` is more suitable as a base class template
+from which other __Tree_Node__ adaptor class templates can derive via the
+__tree_node_with_count_base_gen__ __Base_Type_Generator__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_count__header__>
+``
+
+Forward-declared:
+
+``
+#include <__with_count__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__with_count__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ ]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ `with_count_base` will inherit.
+ ]
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is not `void`; the user data type otherwise.]
+ ]
+ [
+ [`T2`]
+ [The user data type if not `void`; ignored otherwise.]
+ ]
+ [
+ [`Count`]
+ [The count type.]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__ if `T2` is not `void`;
+ __Non_Associative_Tree_Node__ otherwise
+ * __Base_Tree_Node__
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__with_count_base__bases]
+[endsect]
+
+[section:members Members]
+In addition to those inherited from the return type of `BaseGenerator`, the
+following members are defined:
+
+[table
+ [[Name][Definition][Scope][Description]]
+ [
+ [Emplacement constructor]
+ [[reference__with_count_base__emplacement_ctor]]
+ [`protected`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__with_count_base__emplacement_ctor_w_allocator]]
+ [`protected`]
+ [
+ Constructs a `with_count_base` object, initializing its user data
+ with the trailing arguments. Child nodes will be subsequently
+ created using the specified allocator (or a copy if `const`).
+ ]
+ ]
+ [
+ [Derived copy constructor]
+ [[reference__with_count_base__derived_copy_ctor]]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Derived copy constructor with allocator]
+ [[reference__with_count_base__derived_copy_ctor_w_allocator]]
+ [`protected`]
+ [
+ Constructs a `with_count_base` object as a copy of the specified
+ one. Child nodes will be subsequently created using the specified
+ allocator (or a copy if `const`).
+ ]
+ ]
+ [
+ [Derived move constructor]
+ [``
+ with_count_base(Derived&&);
+ ``]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Derived move constructor with allocator]
+ [``
+ with_count_base(
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`protected`]
+ [
+ Constructs a `with_count_base` object and moves the contents
+ of the specified node to the new one. Child nodes will be
+ subsequently created using the specified allocator (or a copy
+ if `const`).
+ ]
+ ]
+ [
+ [Count member read-only access]
+ [[reference__with_count_base__key_value_operator]]
+ [`public`]
+ [Returns the height of this tree node.]
+ ]
+]
+[endsect]
+
+[section:non_members Non-members]
+In addition to those inherited from the return type of `BaseGenerator`, the
+following non-members are defined.
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Count read-only access]
+ [[reference__with_count_base__at_key]]
+ [__Tree_Node__]
+ ]
+]
+[endsect]
+
+[endsect] [/ with_count_base]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_count_base_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_count_base_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,87 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ 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:with_count_base_gen `with_count_base_gen<BaseGenerator>`]
+
+[section Synopsis]
+[reference__with_count_base_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_count__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Base_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ __tree_node_with_count_base__ will inherit.
+ ]
+ []
+ ]
+ [
+ [`Count`]
+ [The count type.]
+ [`std::size_t`]
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from
+__tree_node_with_count_base__.
+Let `Key` be the key type.
+Let `Data` be the user data type.
+Let `BaseGenerator` be a valid first template argument for
+`with_count_base_gen`.
+Let `Count` be the count type.
+
+``
+ typedef _mpl_apply_wrap3_<
+ with_count_base_gen<BaseGenerator,Count>
+ , Derived
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_count_base_<Derived,BaseGenerator,Key,Data,Count>]
+
+``
+ typedef _mpl_apply_wrap2_<
+ with_count_base_gen<BaseGenerator,Count>
+ , Derived
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_count_base_<Derived,BaseGenerator,Data,void,Count>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ with_count_base_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_count_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_count_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,82 @@
+[/=============================================================================
+ Copyright (C) 2012-2013 Cromwell D. Enage
+
+ 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:with_count_gen `with_count_gen<BaseGenerator>`]
+
+[section Synopsis]
+[reference__with_count_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_count__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Node_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ __tree_node_with_count__ will ultimately inherit.
+ ]
+ []
+ ]
+ [
+ [`Count`]
+ [The count type.]
+ [`std::size_t`]
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Key` be the key type.
+Let `Data` be the user data type.
+Let `BaseGenerator` be a valid first template argument for `with_count_gen`.
+Let `Count` be the count type.
+
+``
+ typedef _mpl_apply_wrap2_<
+ with_count_gen<BaseGenerator,Count>
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_count_<BaseGenerator,Key,Data,Count>]
+
+``
+ typedef _mpl_apply_wrap1_<
+ with_count_gen<BaseGenerator,Count>
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_count_<BaseGenerator,Data,void,Count>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ with_count_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_height.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_height.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,152 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:with_height `with_height<BaseGenerator,T1,T2,Height>`]
+
+[section Description]
+The [*height] of a tree node can be defined as the magnitude of the difference
+between its ply and that of its deepest descendant. In addition to the
+operations it inherits from the return type of `BaseGenerator`, this
+__Tree_Node__ adaptor provides constant-time access to the height of the node
+by updating this information after structural modifications have been
+performed.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_height__header__>
+``
+
+Forward-declared:
+
+``
+#include <__with_height__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__with_height__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type `with_height`
+ will ultimately inherit.
+ ]
+ []
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is not `void`; the user data type otherwise.]
+ []
+ ]
+ [
+ [`T2`]
+ [The user data type if not `void`; ignored otherwise.]
+ [`void`]
+ ]
+ [
+ [`Height`]
+ [The height type.]
+ [`std::size_t`]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__ if `T2` is not `void`;
+ __Non_Associative_Tree_Node__ otherwise
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__with_height__bases]
+[endsect]
+
+[section:members Public Members]
+In addition to those inherited from __tree_node_with_height_base__ and from the
+return type of `BaseGenerator`, the following members are defined:
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Emplacement constructor]
+ [[reference__with_height__emplacement_ctor]]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__with_height__emplacement_ctor_w_allocator]]
+ [`with_height`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ with_height(with_height const& copy);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [``
+ with_height(
+ with_height const& copy
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`with_height`]
+ ]
+ [
+ [Move constructor]
+ [``
+ with_height(with_height&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ with_height(
+ with_height&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`with_height`]
+ ]
+ [
+ [Copy assignment operator]
+ [``
+ with_height& operator=(with_height const& copy);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ with_height& operator=(with_height&& source);
+ ``]
+ [__Movable__]
+ ]
+]
+[endsect]
+
+[section:non_members Non-members]
+Same as those inherited from __tree_node_with_height_base__ and from the return
+type of `BaseGenerator`.
+[endsect]
+
+[endsect] [/ with_height]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_height_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_height_base.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,168 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:with_height_base
+ `with_height_base<Derived,BaseGenerator,T1,T2,Height>`
+]
+
+[section Description]
+The __tree_node_with_height__ class template inherits its functionality from
+this class template. They differ only with regard to template parameters: the
+__tree_node_with_height__ class template is meant to be used directly as a data
+structure, while `with_height_base` is more suitable as a base class template
+from which other __Tree_Node__ adaptor class templates can derive via the
+__tree_node_with_height_base_gen__ __Base_Type_Generator__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_height__header__>
+``
+
+Forward-declared:
+
+``
+#include <__with_height__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__with_height__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ ]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ `with_height_base` will inherit.
+ ]
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is not `void`; the user data type otherwise.]
+ ]
+ [
+ [`T2`]
+ [The user data type if not `void`; ignored otherwise.]
+ ]
+ [
+ [`Height`]
+ [The height type.]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__ if `T2` is not `void`;
+ __Non_Associative_Tree_Node__ otherwise
+ * __Base_Tree_Node__
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__with_height_base__bases]
+[endsect]
+
+[section:members Members]
+In addition to those inherited from the return type of `BaseGenerator`, the
+following members are defined:
+
+[table
+ [[Name][Definition][Scope][Description]]
+ [
+ [Emplacement constructor]
+ [[reference__with_height_base__emplacement_ctor]]
+ [`protected`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__with_height_base__emplacement_ctor_w_allocator]]
+ [`protected`]
+ [
+ Constructs a `with_height_base` object, initializing its user data
+ with the trailing arguments. Child nodes will be subsequently
+ created using the specified allocator (or a copy if `const`).
+ ]
+ ]
+ [
+ [Derived copy constructor]
+ [[reference__with_height_base__derived_copy_ctor]]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Derived copy constructor with allocator]
+ [[reference__with_height_base__derived_copy_ctor_w_allocator]]
+ [`protected`]
+ [
+ Constructs a `with_height_base` object as a copy of the specified
+ one. Child nodes will be subsequently created using the specified
+ allocator (or a copy if `const`).
+ ]
+ ]
+ [
+ [Derived move constructor]
+ [``
+ with_height_base(Derived&& source);
+ ``]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Derived move constructor with allocator]
+ [``
+ with_height_base(
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`protected`]
+ [
+ Constructs a `with_height_base` object and moves the contents
+ of the specified node to the new one. Child nodes will be
+ subsequently created using the specified allocator (or a copy
+ if `const`).
+ ]
+ ]
+ [
+ [Height member read-only access]
+ [[reference__with_height_base__key_value_operator]]
+ [`public`]
+ [Returns the height of this tree node.]
+ ]
+]
+[endsect]
+
+[section:non_members Non-members]
+In addition to those inherited from the return type of `BaseGenerator`, the
+following non-members are defined.
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Height read-only access]
+ [[reference__with_height_base__at_key]]
+ [__Tree_Node__]
+ ]
+]
+[endsect]
+
+[endsect] [/ with_height_base]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_height_base_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_height_base_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,87 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:with_height_base_gen `with_height_base_gen<BaseGenerator>`]
+
+[section Synopsis]
+[reference__with_height_base_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_height__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Base_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ __tree_node_with_height_base__ will inherit.
+ ]
+ []
+ ]
+ [
+ [`Height`]
+ [The height type.]
+ [`std::size_t`]
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from
+__tree_node_with_height_base__.
+Let `Key` be the key type.
+Let `Data` be the user data type.
+Let `BaseGenerator` be a valid first template argument for
+`with_height_base_gen`.
+Let `Height` be the height type.
+
+``
+ typedef _mpl_apply_wrap3_<
+ with_height_base_gen<BaseGenerator,Height>
+ , Derived
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_height_base_<Derived,BaseGenerator,Key,Data,Height>]
+
+``
+ typedef _mpl_apply_wrap2_<
+ with_height_base_gen<BaseGenerator,Height>
+ , Derived
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_height_base_<Derived,BaseGenerator,Data,void,Height>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ with_height_base_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_height_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_height_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,82 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:with_height_gen `with_height_gen<BaseGenerator>`]
+
+[section Synopsis]
+[reference__with_height_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_height__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Node_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ __tree_node_with_height__ will ultimately inherit.
+ ]
+ []
+ ]
+ [
+ [`Height`]
+ [The height type.]
+ [`std::size_t`]
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Key` be the key type.
+Let `Data` be the user data type.
+Let `BaseGenerator` be a valid first template argument for `with_height_gen`.
+Let `Height` be the height type.
+
+``
+ typedef _mpl_apply_wrap2_<
+ with_height_gen<BaseGenerator,Height>
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_height_<BaseGenerator,Key,Data,Height>]
+
+``
+ typedef _mpl_apply_wrap1_<
+ with_height_gen<BaseGenerator,Height>
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_height_<BaseGenerator,Data,void,Height>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ with_height_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_position.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_position.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,144 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:with_position `with_position<BaseGenerator,T1,T2>`]
+
+[section Description]
+This __Tree_Node__ adaptor provides access to its position in its parent's
+range of children as well as the other operations it inherits from the return
+type of `BaseGenerator`.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_position__header__>
+``
+
+Forward-declared:
+
+``
+#include <__with_position__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__with_position__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type `with_position`
+ will ultimately inherit.
+ ]
+ []
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is specified; the user data type otherwise.]
+ []
+ ]
+ [
+ [`T2`]
+ [The user data type if specified; ignored otherwise.]
+ [`void`]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__ if `T2` is specified;
+ __Non_Associative_Tree_Node__ otherwise
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__with_position__bases]
+[endsect]
+
+[section:members Public Members]
+In addition to those inherited from __tree_node_with_position_base__ and from
+the return type of `BaseGenerator`, the following members are defined:
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Emplacement constructor]
+ [[reference__with_position__emplacement_ctor]]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__with_position__emplacement_ctor_w_allocator]]
+ [`with_position`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ with_position(with_position const& copy);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [``
+ with_position(
+ with_position const& copy
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`with_position`]
+ ]
+ [
+ [Move constructor]
+ [``
+ with_position(with_position&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ with_position(
+ with_position&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`with_position`]
+ ]
+ [
+ [Copy assignment operator]
+ [``
+ with_position& operator=(with_position const& copy);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ with_position& operator=(with_position&& source);
+ ``]
+ [__Movable__]
+ ]
+]
+[endsect]
+
+[section:non_members Non-members]
+Same as those inherited from __tree_node_with_position_base__ and from the
+return type of `BaseGenerator`.
+[endsect]
+
+[endsect] [/ with_position]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_position_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_position_base.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,173 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:with_position_base `with_position_base<Derived,BaseGenerator,T1,T2>`]
+
+[section Description]
+The __tree_node_with_position__ class template inherits its functionality from
+this class template. They differ only with regard to template parameters: the
+__tree_node_with_position__ class template is meant to be used directly as a
+data structure, while `with_position_base` is more suitable as a base class
+template from which other __Tree_Node__ adaptor class templates can derive via
+the __tree_node_with_position_base_gen__ __Base_Type_Generator__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_position__header__>
+``
+
+Forward-declared:
+
+``
+#include <__with_position__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__with_position__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ ]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ `with_position_base` will inherit.
+ ]
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is not `void`; the user data type otherwise.]
+ ]
+ [
+ [`T2`]
+ [The user data type if not `void`; ignored otherwise.]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__ if `T2` is not `void`;
+ __Non_Associative_Tree_Node__ otherwise
+ * __Base_Tree_Node__
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__with_position_base__bases]
+[endsect]
+
+[section:members Members]
+In addition to those inherited from the return type of `BaseGenerator`, the
+following members are defined:
+
+[table
+ [[Name][Definition][Scope][Description]]
+ [
+ [Emplacement constructor]
+ [[reference__with_position_base__emplacement_ctor]]
+ [`protected`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__with_position_base__emplacement_ctor_w_allocator]]
+ [`protected`]
+ [
+ Constructs a `with_position_base` object, initializing its user
+ data with the trailing arguments. Child nodes will be subsequently
+ created using the specified allocator (or a copy if `const`).
+ ]
+ ]
+ [
+ [Derived copy constructor]
+ [[reference__with_position_base__derived_copy_ctor]]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Derived copy constructor with allocator]
+ [[reference__with_position_base__derived_copy_ctor_w_allocator]]
+ [`protected`]
+ [
+ Constructs a `with_position_base` object as a copy of the specified
+ one. Child nodes will be subsequently created using the specified
+ allocator (or a copy if `const`).
+ ]
+ ]
+ [
+ [Derived move constructor]
+ [``
+ with_position_base(Derived&& source);
+ ``]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Derived move constructor with allocator]
+ [``
+ with_position_base(
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`protected`]
+ [
+ Constructs a `with_position_base` object and moves the contents
+ of the specified node to the new one. Child nodes will be
+ subsequently created using the specified allocator (or a copy
+ if `const`).
+ ]
+ ]
+ [
+ [Position member read-only access]
+ [[reference__with_position_base__key_value_operator__const]]
+ [`public`]
+ [Returns the immutable iterator that points to this tree node.]
+ ]
+ [
+ [Position member access]
+ [[reference__with_position_base__key_value_operator]]
+ [`public`]
+ [Returns the iterator that points to this tree node.]
+ ]
+]
+[endsect]
+
+[section:non_members Non-members]
+In addition to those inherited from the return type of `BaseGenerator`, the
+following non-members are defined.
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Position read-only access]
+ [[reference__with_position_base__at_key__const]]
+ [__Tree_Node__]
+ ]
+ [
+ [Position access]
+ [[reference__with_position_base__at_key]]
+ [__Tree_Node__]
+ ]
+]
+[endsect]
+
+[endsect] [/ with_position_base]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_position_base_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_position_base_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,76 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:with_position_base_gen `with_position_base_gen<BaseGenerator>`]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_position__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Base_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ __tree_node_with_position_base__ will inherit.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from
+__tree_node_with_position_base__.
+Let `Key` be the key type.
+Let `Data` be the user data type.
+Let `BaseGenerator` be a valid `with_position_base_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap3_<
+ with_position_base_gen<BaseGenerator>
+ , Derived
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_position_base_<Derived,BaseGenerator,Key,Data>]
+
+``
+ typedef _mpl_apply_wrap2_<
+ with_position_base_gen<BaseGenerator>
+ , Derived
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_position_base_<Derived,BaseGenerator,Data,void>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ with_position_base_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_position_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_position_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,72 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:with_position_gen `with_position_gen<BaseGenerator>`]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_position__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Node_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ __tree_node_with_position__ will ultimately inherit.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Key` be the key type.
+Let `Data` be the user data type.
+Let `BaseGenerator` be a valid `with_position_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap2_<
+ with_position_gen<BaseGenerator>
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_position_<BaseGenerator,Key,Data>]
+
+``
+ typedef _mpl_apply_wrap1_<
+ with_position_gen<BaseGenerator>
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_position_<BaseGenerator,Data,void>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ with_position_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_rb_flag.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_rb_flag.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,143 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:with_rb_flag `with_red_black_flag<BaseGenerator,T1,T2>`]
+
+[section Description]
+In addition to the other operations it inherits from the return type of
+`BaseGenerator`, this __Tree_Node__ adaptor provides access to a flag that
+indicates whether the node is red or black.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_red_black_flag__header__>
+``
+
+Forward-declared:
+
+``
+#include <__with_red_black_flag__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__with_red_black_flag__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ model from whose return type
+ `with_red_black_flag` will ultimately inherit.
+ []
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is specified; the user data type otherwise.]
+ []
+ ]
+ [
+ [`T2`]
+ [The user data type if specified; ignored otherwise.]
+ [`void`]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__ if `T2` is specified;
+ __Non_Associative_Tree_Node__ otherwise
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__with_red_black_flag__bases]
+[endsect]
+
+[section:members Public Members]
+In addition to those inherited from __tree_node_with_red_black_flag_base__ and
+from the return type of `BaseGenerator`, the following members are defined:
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Emplacement constructor]
+ [[reference__with_red_black_flag__emplacement_ctor]]
+ [__Tree_Node__]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__with_red_black_flag__emplacement_ctor_w_allocator]]
+ [`with_red_black_flag`]
+ ]
+ [
+ [Copy constructor]
+ [``
+ with_red_black_flag(with_red_black_flag const& copy);
+ ``]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Copy constructor with allocator]
+ [``
+ with_red_black_flag(
+ with_red_black_flag const& copy
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`with_red_black_flag`]
+ ]
+ [
+ [Move constructor]
+ [``
+ with_red_black_flag(with_red_black_flag&& source);
+ ``]
+ [__Movable__]
+ ]
+ [
+ [Move constructor with allocator]
+ [``
+ with_red_black_flag(
+ with_red_black_flag&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`with_red_black_flag`]
+ ]
+ [
+ [Copy assignment operator]
+ [``
+ with_red_black_flag& operator=(with_red_black_flag const& copy);
+ ``]
+ [__Assignable__]
+ ]
+ [
+ [Move assignment operator]
+ [``
+ with_red_black_flag& operator=(with_red_black_flag&& source);
+ ``]
+ [__Movable__]
+ ]
+]
+[endsect]
+
+[section:non_members Non-members]
+Same as those inherited from __tree_node_with_red_black_flag_base__ and from
+the return type of `BaseGenerator`.
+[endsect]
+
+[endsect] [/ with_red_black_flag]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_rb_flag_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_rb_flag_base.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,211 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:with_rb_flag_base
+ `with_red_black_flag_base<Derived,BaseGenerator,T1,T2>`
+]
+
+[section Description]
+The __tree_node_with_red_black_flag__ class template inherits its functionality
+from this class template. They differ only with regard to template parameters:
+the __tree_node_with_red_black_flag__ class template is meant to be used
+directly as a data structure, while `with_red_black_flag_base` is more suitable
+as a base class template from which other __Tree_Node__ adaptor class templates
+can derive via the __tree_node_with_red_black_flag_base_gen__
+__Base_Type_Generator__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_red_black_flag__header__>
+``
+
+Forward-declared:
+
+``
+#include <__with_red_black_flag__forward_header__>
+``
+
+To register under __Boost_Typeof__:
+
+``
+#include <__with_red_black_flag__typeof_header__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ ]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ `with_red_black_flag_base` will inherit.
+ ]
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is not `void`; the user data type otherwise.]
+ ]
+ [
+ [`T2`]
+ [The user data type if not `void`; ignored otherwise.]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__ if `T2` is not `void`;
+ __Non_Associative_Tree_Node__ otherwise
+ * __Base_Tree_Node__
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[reference__with_red_black_flag_base__bases]
+[endsect]
+
+[section:members Members]
+In addition to those inherited from the return type of `BaseGenerator`, the
+following members are defined:
+
+[table
+ [[Name][Definition][Scope][Description]]
+ [
+ [Emplacement constructor]
+ [[reference__with_red_black_flag_base__emplacement_ctor]]
+ [`protected`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Emplacement constructor with allocator]
+ [[reference__with_red_black_flag_base__emplacement_ctor_w_allocator]]
+ [`protected`]
+ [
+ Constructs a `with_red_black_flag_base` object, initializing its
+ user data with the trailing arguments. Child nodes will be
+ subsequently created using the specified allocator (or a copy if
+ `const`).
+ ]
+ ]
+ [
+ [Derived copy constructor]
+ [[reference__with_red_black_flag_base__derived_copy_ctor]]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Derived copy constructor with allocator]
+ [[reference__with_red_black_flag_base__derived_copy_ctor_w_allocator]]
+ [`protected`]
+ [
+ Constructs a `with_red_black_flag_base` object as a copy of the
+ specified one. Child nodes will be subsequently created using the
+ specified allocator (or a copy if `const`).
+ ]
+ ]
+ [
+ [Derived move constructor]
+ [``
+ with_red_black_flag_base(Derived&& source);
+ ``]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Derived move constructor with allocator]
+ [``
+ with_red_black_flag_base(
+ Derived&& source
+ , typename traits::allocator_reference allocator
+ );
+ ``]
+ [`protected`]
+ [
+ Constructs a `with_red_black_flag_base` object and moves the
+ contents of the specified node to the new one. Child nodes
+ will be subsequently created using the specified allocator
+ (or a copy if `const`).
+ ]
+ ]
+ [
+ [Red flag query]
+ [[reference__with_red_black_flag_base__key_value_operator__red]]
+ [`public`]
+ [
+ Returns `true` if the flag is set to red, `false` if it is set to
+ black.
+ ]
+ ]
+ [
+ [Black flag query]
+ [[reference__with_red_black_flag_base__key_value_operator__black]]
+ [`public`]
+ [
+ Returns `true` if the flag is set to black, `false` if it is set to
+ red.
+ ]
+ ]
+ [
+ [Red flag setting]
+ [[reference__with_red_black_flag_base__set_red_flag]]
+ [`public`]
+ [
+ Sets the flag to red if the argument evaluates to `true`; sets the
+ flag to black if the argument evaluates to `false`.
+ ]
+ ]
+ [
+ [Black flag setting]
+ [[reference__with_red_black_flag_base__set_black_flag]]
+ [`public`]
+ [
+ Sets the flag to black if the argument evaluates to `true`; sets
+ the flag to red if the argument evaluates to `false`.
+ ]
+ ]
+]
+[endsect]
+
+[section:non_members Non-members]
+In addition to those inherited from the return type of `BaseGenerator`, the
+following non-members are defined.
+
+[table
+ [[Name][Definition][Where defined]]
+ [
+ [Red flag key-value read-only access]
+ [[reference__with_red_black_flag_base__at_red_flag_key]]
+ [__Tree_Node__]
+ ]
+ [
+ [Black flag key-value read-only access]
+ [[reference__with_red_black_flag_base__at_black_flag_key]]
+ [__Tree_Node__]
+ ]
+ [
+ [Red flag key-value modification]
+ [[reference__with_red_black_flag_base__put__red]]
+ [__Tree_Node__]
+ ]
+ [
+ [Black flag key-value modification]
+ [[reference__with_red_black_flag_base__put__black]]
+ [__Tree_Node__]
+ ]
+]
+[endsect]
+
+[endsect] [/ with_red_black_flag_base]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_rb_flag_base_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_rb_flag_base_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,81 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:with_rb_flag_base_gen `with_red_black_flag_gen<BaseGenerator>`]
+
+[section Synopsis]
+[reference__with_red_black_flag_base_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_red_black_flag__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Base_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ __tree_node_with_red_black_flag_base__ will inherit.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from
+__tree_node_with_red_black_flag_base__.
+Let `Key` be the key type.
+Let `Data` be the user data type.
+Let `BaseGenerator` be a valid `with_red_black_flag_base_gen` template
+argument.
+
+``
+ typedef _mpl_apply_wrap3_<
+ with_red_black_flag_base_gen<BaseGenerator>
+ , Derived
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_red_black_flag_base_<Derived,BaseGenerator,Key,Data>]
+
+``
+ typedef _mpl_apply_wrap2_<
+ with_red_black_flag_base_gen<BaseGenerator>
+ , Derived
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_red_black_flag_base_<Derived,BaseGenerator,Data,void>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ with_red_black_flag_base_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/ref_with_rb_flag_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_rb_flag_gen.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,76 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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:with_rb_flag_gen `with_red_black_flag_gen<BaseGenerator>`]
+
+[section Synopsis]
+[reference__with_red_black_flag_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__with_red_black_flag__header__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Node_Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Base_Type_Generator__ from whose return type
+ __tree_node_with_red_black_flag__ will ultimately inherit.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Key` be the key type.
+Let `Data` be the user data type.
+Let `BaseGenerator` be a valid `with_red_black_flag_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap2_<
+ with_red_black_flag_gen<BaseGenerator>
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_red_black_flag_<BaseGenerator,Key,Data>]
+
+``
+ typedef _mpl_apply_wrap1_<
+ with_red_black_flag_gen<BaseGenerator>
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_red_black_flag_<BaseGenerator,Data,void>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ with_red_black_flag_gen]
+
Added: sandbox/tree_node/libs/tree_node/doc/reference.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/reference.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,210 @@
+[/=============================================================================
+ Copyright (C) 2011-2013 Cromwell D. Enage
+
+ 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 Reference]
+
+[include ref_binode_container.qbk]
+[include ref_binode_assoc_container.qbk]
+[include ref_binode_set.qbk]
+[include ref_binode_multiset.qbk]
+[include ref_binode_map.qbk]
+[include ref_binode_multimap.qbk]
+[include ref_red_black_balancer.qbk]
+[include ref_avl_balancer.qbk]
+[include ref_binary_node.qbk]
+[include ref_binary_node_gen.qbk]
+[include ref_binary_node_base.qbk]
+[include ref_binary_node_base_gen.qbk]
+[include ref_nary_node.qbk]
+[include ref_nary_node_gen.qbk]
+[include ref_nary_node_base.qbk]
+[include ref_nary_node_base_gen.qbk]
+[include ref_associative_node.qbk]
+[include ref_associative_node_gen.qbk]
+[include ref_associative_node_base.qbk]
+[include ref_assoc_node_base_gen.qbk]
+[include ref_with_accumulation.qbk]
+[include ref_with_accumulation_gen.qbk]
+[include ref_with_accumulation_base.qbk]
+[include ref_with_accum_base_gen.qbk]
+[include ref_with_count.qbk]
+[include ref_with_count_gen.qbk]
+[include ref_with_count_base.qbk]
+[include ref_with_count_base_gen.qbk]
+[include ref_with_height.qbk]
+[include ref_with_height_gen.qbk]
+[include ref_with_height_base.qbk]
+[include ref_with_height_base_gen.qbk]
+[include ref_with_position.qbk]
+[include ref_with_position_gen.qbk]
+[include ref_with_position_base.qbk]
+[include ref_with_position_base_gen.qbk]
+[include ref_with_rb_flag.qbk]
+[include ref_with_rb_flag_gen.qbk]
+[include ref_with_rb_flag_base.qbk]
+[include ref_with_rb_flag_base_gen.qbk]
+[include ref_tree_node_base.qbk]
+[include ref_breadth_first_iterator.qbk]
+[include ref_breadth_first_desc_iter.qbk]
+[include ref_pre_order_iterator.qbk]
+[include ref_pre_order_desc_iter.qbk]
+[include ref_post_order_iterator.qbk]
+[include ref_post_order_desc_iter.qbk]
+[include ref_in_order_iterator.qbk]
+[include ref_depth_first_iterator.qbk]
+[include ref_depth_first_desc_iter.qbk]
+[include ref_traversal_state.qbk]
+[include ref_data_key.qbk]
+[include ref_accumulation_key.qbk]
+[include ref_count_key.qbk]
+[include ref_height_key.qbk]
+[include ref_position_key.qbk]
+[include ref_red_black_flag_key.qbk]
+[include ref_advance_binary.qbk]
+[include ref_binary_index_of.qbk]
+[include ref_binary_descendant.qbk]
+[include ref_bin_descendant_at_index.qbk]
+[include ref_binary_lower_bound.qbk]
+[include ref_binary_upper_bound.qbk]
+[include ref_dereference_iterator.qbk]
+[include ref_get_properties.qbk]
+[include ref_has_key.qbk]
+[include ref_get_keys.qbk]
+[include ref_at_key.qbk]
+[include ref_value_at_key.qbk]
+[include ref_copyable_and_movable.qbk]
+[include ref_container_derived_body.qbk]
+[include ref_assoc_cont_derived_body.qbk]
+[include ref_emplace_ctor_fwd_decl.qbk]
+[include ref_emplace_ctor_inline_hdr.qbk]
+[include ref_emplace_ctor_inline_def.qbk]
+[include ref_empl_ctor_w_allc_f_decl.qbk]
+[include ref_empl_ctor_w_allc_il_hdr.qbk]
+[include ref_empl_ctor_w_allc_il_def.qbk]
+[include ref_can_use_fusion.qbk]
+[include ref_can_use_fusion_w_typeof.qbk]
+
+[heading Container Types]
+
+ * __binode_container__
+ * __binode_associative_container__
+
+[heading Balancer Types]
+
+ * __red_black_balancer__
+ * __avl_balancer__
+
+[heading Node Types]
+
+ * __binary_node__
+ * __nary_node__
+ * __associative_node__
+
+[heading Adaptor Types]
+
+ * __tree_node_with_accumulation__
+ * __tree_node_with_count__
+ * __tree_node_with_height__
+ * __tree_node_with_position__
+ * __tree_node_with_red_black_flag__
+
+[heading Base Types]
+
+ * __tree_node_base__
+ * __binary_node_base__
+ * __nary_node_base__
+ * __associative_node_base__
+ * __tree_node_with_accumulation_base__
+ * __tree_node_with_count_base__
+ * __tree_node_with_height_base__
+ * __tree_node_with_position_base__
+ * __tree_node_with_red_black_flag_base__
+
+[heading Type Generators]
+
+ * __binary_node_gen__
+ * __nary_node_gen__
+ * __associative_node_gen__
+ * __tree_node_with_accumulation_gen__
+ * __tree_node_with_count_gen__
+ * __tree_node_with_height_gen__
+ * __tree_node_with_position_gen__
+ * __tree_node_with_red_black_flag_gen__
+
+[heading Iterator Types]
+
+ * __breadth_first_iterator__
+ * __breadth_first_descendant_iterator__
+ * __pre_order_iterator__
+ * __pre_order_descendant_iterator__
+ * __post_order_iterator__
+ * __post_order_descendant_iterator__
+ * __in_order_iterator__
+ * __depth_first_iterator__
+ * __depth_first_descendant_iterator__
+
+[heading Enum Types]
+
+ * __traversal_state__
+
+[heading Key Types]
+
+ * __data_key__
+ * __accumulation_key__
+ * __count_key__
+ * __height_key__
+ * __position_key__
+ * __red_flag_key__
+ * __black_flag_key__
+
+[heading Algorithms]
+
+ * __advance_binary__
+ * __binary_index_of__
+ * __binary_descendant__
+ * __binary_descendant_at_index__
+ * __binary_lower_bound__
+ * __binary_upper_bound__
+
+[heading Intrinsic Functions]
+
+ * __dereference_iterator__
+ * __get_properties__
+ * __has_key__
+
+[heading Metafunctions]
+
+ * __result_of__dereference_iterator__
+ * __result_of__get_properties__
+ * __result_of__has_key__
+ * __result_of__get_keys__
+ * __result_of__at_key__
+ * __result_of__value_at_key__
+
+[heading Boilerplate Macros]
+
+ * __TREE_NODE_COPYABLE_AND_MOVABLE__
+ * __TREE_NODE_CONTAINER_DERIVED_BODY__
+ * __TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY__
+
+[heading Workaround Macros]
+
+ * __TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL__
+ * __TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER__
+ * __TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF__
+ * __TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL__
+ * __TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER__
+ * __TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF__
+
+[heading Feature Querying Macros]
+
+ * __TREE_NODE_CAN_USE_FUSION__
+ * __TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF__
+
+[endsect] [/ Reference]
+
Added: sandbox/tree_node/libs/tree_node/doc/tree_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/tree_node.qbk 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,442 @@
+[library tree_node
+ [quickbook 1.5]
+ [version 0.4]
+ [authors [Enage, Cromwell D.]]
+ [copyright 2011-2013 Cromwell D. Enage]
+ [purpose Low-level tree node framework]
+ [license
+ 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])
+ ]
+]
+
+[/ General links.]
+[def __Runtime_Complexity__ [@http://en.wikipedia.org/wiki/Amortized_analysis Runtime Complexity]]
+
+[/ General concept links.]
+[def __Default_Constructible__ [@http://www.sgi.com/tech/stl/DefaultConstructible.html [*Default Constructible]]]
+[def __Trivial_Iterator__ [@http://www.sgi.com/tech/stl/trivial.html [*Trivial Iterator]]]
+[def __Input_Iterator__ [@http://www.sgi.com/tech/stl/InputIterator.html [*Input Iterator]]]
+[def __Forward_Iterator__ [@http://www.sgi.com/tech/stl/ForwardIterator.html [*Forward Iterator]]]
+[def __Reverse_Iterator__ [@http://www.sgi.com/tech/stl/ReverseIterator.html [*Reverse Iterator]]]
+[def __Bidirectional_Iterator__ [@http://www.sgi.com/tech/stl/BidirectionalIterator.html [*Bidirectional Iterator]]]
+[def __Random_Access_Iterator__ [@http://www.sgi.com/tech/stl/RandomAccessIterator.html [*Random Access Iterator]]]
+[def __Strict_Weak_Ordering__ [@http://www.sgi.com/tech/stl/StrictWeakOrdering.html [*Strict Weak Ordering]]]
+[def __Container__ [@http://www.sgi.com/tech/stl/Container.html [*Container]]]
+[def __Reversible_Container__ [@http://www.sgi.com/tech/stl/ReversibleContainer.html [*Reversible Container]]]
+[def __Associative_Container__ [@http://www.sgi.com/tech/stl/AssociativeContainer.html [*Associative Container]]]
+[def __Sorted_Associative_Container__ [@http://www.sgi.com/tech/stl/SortedAssociativeContainer.html [*Sorted Associative Container]]]
+[def __Simple_Associative_Container__ [@http://www.sgi.com/tech/stl/SimpleAssociativeContainer.html [*Simple Associative Container]]]
+[def __Pair_Associative_Container__ [@http://www.sgi.com/tech/stl/PairAssociativeContainer.html [*Pair Associative Container]]]
+[def __Unique_Sorted_Associative_Container__ [@http://www.sgi.com/tech/stl/UniqueSortedAssociativeContainer.html [*Unique Sorted Associative Container]]]
+[def __Multiple_Sorted_Associative_Container__ [@http://www.sgi.com/tech/stl/MultipleSortedAssociativeContainer.html [*Multiple Sorted Associative Container]]]
+[def __Sequence__ [@http://www.sgi.com/tech/stl/Sequence.html [*Sequence]]]
+[def __Front_Insertion_Sequence__ [@http://www.sgi.com/tech/stl/FrontInsertionSequence.html [*Front Insertion Sequence]]]
+[def __Back_Insertion_Sequence__ [@http://www.sgi.com/tech/stl/BackInsertionSequence.html [*Back Insertion Sequence]]]
+[def __Unary_Function__ [@http://www.sgi.com/tech/stl/UnaryFunction.html [*Unary Function]]]
+[def __Equality_Comparable__ [@http://www.sgi.com/tech/stl/EqualityComparable.html [*Equality Comparable]]]
+[def __Less_Than_Comparable__ [@http://www.sgi.com/tech/stl/LessThanComparable.html [*Less-Than Comparable]]]
+
+[/ Boost library and installation links.]
+[def __Boost_PP__ [@boost:libs/preprocessor/doc/index.html [*Boost.PP]]]
+[def __Boost_Preprocessor__ [@boost:libs/preprocessor/doc/index.html [*Boost.Preprocessor]]]
+[def __Boost_Typeof__ [@boost:doc/html/typeof.html [*Boost.Typeof]]]
+[def __Boost_Range__ [@boost:libs/range/doc/html/index.html [*Boost.Range]]]
+[def __Boost_Pointer_Container__ [@boost:libs/ptr_container/doc/index.html [*Boost.PointerContainer]]]
+[def __Boost_Fusion__ [@boost:libs/fusion/doc/html/index.html [*Boost.Fusion]]]
+[def __Boost_Accumulators__ [@boost:doc/html/accumulators.html [*Boost.Accumulators]]]
+[def __SVN_Trac__ [@http://svn.boost.org/ SVN Trac]]
+[def __Boost_ContainerGen__ [@http://svn.boost.org/svn/boost/sandbox/container_gen/libs/container_gen/doc/html/index.html [*Boost.ContainerGen]]]
+
+[/ Boost concept links.]
+[def __Copy_Constructible__ [@boost:libs/utility/CopyConstructible.html [*Copy Constructible]]]
+[def __Assignable__ [@boost:libs/utility/Assignable.html [*Assignable]]]
+[def __Movable__ [@boost:doc/html/move.html [*Movable]]]
+[def __Boolean_Integral_Constant__ [@boost:libs/mpl/doc/refmanual/integral-constant.html [*Boolean Integral Constant]]]
+[def __Metafunction_Class__ [@boost:libs/mpl/doc/refmanual/metafunction-class.html [*Metafunction Class]]]
+[def __Unary_Metafunction_Class__ [@boost:libs/mpl/doc/refmanual/metafunction-class.html [*Unary Metafunction Class]]]
+[def __Binary_Metafunction_Class__ [@boost:libs/mpl/doc/refmanual/metafunction-class.html [*Binary Metafunction Class]]]
+[def __Trinary_Metafunction_Class__ [@boost:libs/mpl/doc/refmanual/metafunction-class.html [*Trinary Metafunction Class]]]
+[def __Fusion_Sequence__ [@boost:libs/fusion/doc/html/fusion/sequence/concepts/sequence.html [*Fusion Sequence]]]
+[def __Fusion_Associative_Sequence__ [@boost:libs/fusion/doc/html/fusion/sequence/concepts/associative_sequence.html [*Fusion Associative Sequence]]]
+
+[/ Boost reference links.]
+[def __PP_REPEAT__ [@boost:libs/preprocessor/doc/ref/repeat.html `BOOST_PP_REPEAT`]]
+[def _PP_REPEAT_ [@boost:libs/preprocessor/doc/ref/repeat.html BOOST_PP_REPEAT]]
+[def __TYPEOF_EMULATION__ [@boost:doc/html/typeof/refe.html#typeof.compl `BOOST_TYPEOF_EMULATION`]]
+[def __mpl_true__ [@boost:libs/mpl/doc/refmanual/bool.html `boost::mpl::true_`]]
+[def _mpl_true_ [@boost:libs/mpl/doc/refmanual/bool.html boost::mpl::true_]]
+[def __mpl_false__ [@boost:libs/mpl/doc/refmanual/bool.html `boost::mpl::false_`]]
+[def _mpl_false_ [@boost:libs/mpl/doc/refmanual/bool.html boost::mpl::false_]]
+[def _mpl_apply_wrap1_ [@boost:libs/mpl/doc/refmanual/apply-wrap.html boost::mpl::apply_wrap1]]
+[def _mpl_apply_wrap2_ [@boost:libs/mpl/doc/refmanual/apply-wrap.html boost::mpl::apply_wrap2]]
+[def _mpl_apply_wrap3_ [@boost:libs/mpl/doc/refmanual/apply-wrap.html boost::mpl::apply_wrap3]]
+[def _mpl_equal_to_ [@boost:libs/mpl/doc/refmanual/equal_to.html boost::mpl::equal_to]]
+[def __enable_if__ [@boost:libs/utility/enable_if.html `enable_if`]]
+[def _enable_if_ [@boost:libs/utility/enable_if.html enable_if]]
+[def _fusion_has_key_ [@boost:libs/fusion/doc/html/fusion/sequence/intrinsic/functions/has_key.html fusion::has_key]]
+[def __half_runtime_pairs__ [@boost:libs/fusion/doc/html/fusion/support/pair.html half-runtime pairs]]
+[def __accumulators_tag_sum__ [@boost:doc/html/boost/accumulators/tag/sum.html `accumulators::tag::sum`]]
+[def _container_gen_ [@http://svn.boost.org/svn/boost/sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/container_gen.html container_gen]]
+[def _is_recursive_selector_ [@http://svn.boost.org/svn/boost/sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_recursive_selector.html is_recursive_selector]]
+[def _is_associative_selector_ [@http://svn.boost.org/svn/boost/sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/is_associative_selector.html is_associative_selector]]
+[def __default_ordering_selector__ [@http://svn.boost.org/svn/boost/sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/selectors.html `default_ordering_selector`]]
+[def __std_allocator_selector__ [@http://svn.boost.org/svn/boost/sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/selectors.html `std_allocator_selector`]]
+[def __ptr_dequeS__ [@http://svn.boost.org/svn/boost/sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/selectors.html `ptr_dequeS`]]
+[def __ptr_mapS__ [@http://svn.boost.org/svn/boost/sandbox/container_gen/libs/container_gen/doc/html/container_gen/reference/selectors.html `ptr_mapS`]]
+
+[/ Boost.TreeNode header and source file links.]
+[def __data_key__header__ [@../../../../boost/tree_node/key/data.hpp boost/tree_node/key/data.hpp]]
+[def __accumulation_key__header__ [@../../../../boost/tree_node/key/accumulation.hpp boost/tree_node/key/accumulation.hpp]]
+[def __count_key__header__ [@../../../../boost/tree_node/key/count.hpp boost/tree_node/key/count.hpp]]
+[def __height_key__header__ [@../../../../boost/tree_node/key/height.hpp boost/tree_node/key/height.hpp]]
+[def __position_key__header__ [@../../../../boost/tree_node/key/position.hpp boost/tree_node/key/position.hpp]]
+[def __red_black_flag_key__header__ [@../../../../boost/tree_node/key/red_black_flag.hpp boost/tree_node/key/red_black_flag.hpp]]
+[def __get_properties__header__ [@../../../../boost/tree_node/intrinsic/get_properties.hpp boost/tree_node/intrinsic/get_properties.hpp]]
+[def __has_key__header__ [@../../../../boost/tree_node/intrinsic/has_key.hpp boost/tree_node/intrinsic/has_key.hpp]]
+[def __get_keys__header__ [@../../../../boost/tree_node/intrinsic/get_keys.hpp boost/tree_node/intrinsic/get_keys.hpp]]
+[def __at_key__header__ [@../../../../boost/tree_node/intrinsic/at_key.hpp boost/tree_node/intrinsic/at_key.hpp]]
+[def __value_at_key__header__ [@../../../../boost/tree_node/intrinsic/value_at_key.hpp boost/tree_node/intrinsic/value_at_key.hpp]]
+[def __advance_binary__header__ [@../../../../boost/tree_node/algorithm/advance_binary.hpp boost/tree_node/algorithm/advance_binary.hpp]]
+[def __binary_index_of__header__ [@../../../../boost/tree_node/algorithm/binary_index_of.hpp boost/tree_node/algorithm/binary_index_of.hpp]]
+[def __binary_descendant__header__ [@../../../../boost/tree_node/algorithm/binary_descendant.hpp boost/tree_node/algorithm/binary_descendant.hpp]]
+[def __binary_descendant_at_index__header__ [@../../../../boost/tree_node/algorithm/binary_descendant_at_index.hpp boost/tree_node/algorithm/binary_descendant_at_index.hpp]]
+[def __binary_lower_bound__header__ [@../../../../boost/tree_node/algorithm/binary_lower_bound.hpp boost/tree_node/algorithm/binary_lower_bound.hpp]]
+[def __binary_upper_bound__header__ [@../../../../boost/tree_node/algorithm/binary_upper_bound.hpp boost/tree_node/algorithm/binary_upper_bound.hpp]]
+[def __traversal_state__header__ [@../../../../boost/tree_node/traversal_state.hpp boost/tree_node/traversal_state.hpp]]
+[def __dereference_iterator__header__ [@../../../../boost/tree_node/iterator/dereference.hpp boost/tree_node/iterator/dereference.hpp]]
+[def __breadth_first_iterator__header__ [@../../../../boost/tree_node/iterator/breadth_first.hpp boost/tree_node/iterator/breadth_first.hpp]]
+[def __breadth_first_descendant_iterator__header__ [@../../../../boost/tree_node/iterator/breadth_first_descendant.hpp boost/tree_node/iterator/breadth_first_descendant.hpp]]
+[def __pre_order_iterator__header__ [@../../../../boost/tree_node/iterator/pre_order.hpp boost/tree_node/iterator/pre_order.hpp]]
+[def __pre_order_descendant_iterator__header__ [@../../../../boost/tree_node/iterator/pre_order_descendant.hpp boost/tree_node/iterator/pre_order_descendant.hpp]]
+[def __post_order_iterator__header__ [@../../../../boost/tree_node/iterator/post_order.hpp boost/tree_node/iterator/post_order.hpp]]
+[def __post_order_descendant_iterator__header__ [@../../../../boost/tree_node/iterator/post_order_descendant.hpp boost/tree_node/iterator/post_order_descendant.hpp]]
+[def __in_order_iterator__header__ [@../../../../boost/tree_node/iterator/in_order.hpp boost/tree_node/iterator/in_order.hpp]]
+[def __depth_first_iterator__header__ [@../../../../boost/tree_node/iterator/depth_first.hpp boost/tree_node/iterator/depth_first.hpp]]
+[def __depth_first_descendant_iterator__header__ [@../../../../boost/tree_node/iterator/depth_first_descendant.hpp boost/tree_node/iterator/depth_first_descendant.hpp]]
+[def __base__header__ [@../../../../boost/tree_node/base.hpp boost/tree_node/base.hpp]]
+[def __preprocessor__header__ [@../../../../boost/tree_node/preprocessor.hpp boost/tree_node/preprocessor.hpp]]
+[def __binary_node__forward_header__ [@../../../../boost/tree_node/binary_node_fwd.hpp boost/tree_node/binary_node_fwd.hpp]]
+[def __binary_node__header__ [@../../../../boost/tree_node/binary_node.hpp boost/tree_node/binary_node.hpp]]
+[def __nary_node__forward_header__ [@../../../../boost/tree_node/nary_node_fwd.hpp boost/tree_node/nary_node_fwd.hpp]]
+[def __nary_node__header__ [@../../../../boost/tree_node/nary_node.hpp boost/tree_node/nary_node.hpp]]
+[def __associative_node__forward_header__ [@../../../../boost/tree_node/associative_node_fwd.hpp boost/tree_node/associative_node_fwd.hpp]]
+[def __associative_node__header__ [@../../../../boost/tree_node/associative_node.hpp boost/tree_node/associative_node.hpp]]
+[def __with_accumulation__forward_header__ [@../../../../boost/tree_node/with_accumulation_fwd.hpp boost/tree_node/with_accumulation_fwd.hpp]]
+[def __with_accumulation__header__ [@../../../../boost/tree_node/with_accumulation.hpp boost/tree_node/with_accumulation.hpp]]
+[def __with_count__forward_header__ [@../../../../boost/tree_node/with_count_fwd.hpp boost/tree_node/with_count_fwd.hpp]]
+[def __with_count__header__ [@../../../../boost/tree_node/with_count.hpp boost/tree_node/with_count.hpp]]
+[def __with_height__forward_header__ [@../../../../boost/tree_node/with_height_fwd.hpp boost/tree_node/with_height_fwd.hpp]]
+[def __with_height__header__ [@../../../../boost/tree_node/with_height.hpp boost/tree_node/with_height.hpp]]
+[def __with_position__forward_header__ [@../../../../boost/tree_node/with_position_fwd.hpp boost/tree_node/with_position_fwd.hpp]]
+[def __with_position__header__ [@../../../../boost/tree_node/with_position.hpp boost/tree_node/with_position.hpp]]
+[def __with_red_black_flag__forward_header__ [@../../../../boost/tree_node/with_red_black_flag_fwd.hpp boost/tree_node/with_red_black_flag_fwd.hpp]]
+[def __with_red_black_flag__header__ [@../../../../boost/tree_node/with_red_black_flag.hpp boost/tree_node/with_red_black_flag.hpp]]
+[def __red_black_balancer__header__ [@../../../../boost/tree_node/balancer/red_black.hpp boost/tree_node/balancer/red_black.hpp]]
+[def __avl_balancer__header__ [@../../../../boost/tree_node/balancer/adelson_velskii_landis.hpp boost/tree_node/balancer/adelson_velskii_landis.hpp]]
+[def __binode_container__forward_header__ [@../../../../boost/tree_node/container/binode_fwd.hpp boost/tree_node/container/binode_fwd.hpp]]
+[def __binode_container__header__ [@../../../../boost/tree_node/container/binode.hpp boost/tree_node/container/binode.hpp]]
+[def __binode_associative_container__forward_header__ [@../../../../boost/tree_node/container/binode_associative_fwd.hpp boost/tree_node/container/binode_associative_fwd.hpp]]
+[def __binode_associative_container__header__ [@../../../../boost/tree_node/container/binode_associative.hpp boost/tree_node/container/binode_associative.hpp]]
+[def __data_key__typeof_header__ [@../../../../boost/typeof/boost/tree_node/key/data.hpp boost/typeof/boost/tree_node/key/data.hpp]]
+[def __accumulation_key__typeof_header__ [@../../../../boost/typeof/boost/tree_node/key/accumulation.hpp boost/typeof/boost/tree_node/key/accumulation.hpp]]
+[def __count_key__typeof_header__ [@../../../../boost/typeof/boost/tree_node/key/count.hpp boost/typeof/boost/tree_node/key/count.hpp]]
+[def __height_key__typeof_header__ [@../../../../boost/typeof/boost/tree_node/key/height.hpp boost/typeof/boost/tree_node/key/height.hpp]]
+[def __position_key__typeof_header__ [@../../../../boost/typeof/boost/tree_node/key/position.hpp boost/typeof/boost/tree_node/key/position.hpp]]
+[def __red_black_flag_key__typeof_header__ [@../../../../boost/typeof/boost/tree_node/key/red_black_flag.hpp boost/typeof/boost/tree_node/key/red_black_flag.hpp]]
+[def __traversal_state__typeof_header__ [@../../../../boost/typeof/boost/tree_node/traversal_state.hpp boost/typeof/boost/tree_node/traversal_state.hpp]]
+[def __breadth_first_iterator__typeof_header__ [@../../../../boost/typeof/boost/tree_node/iterator/breadth_first.hpp boost/typeof/boost/tree_node/iterator/breadth_first.hpp]]
+[def __breadth_first_descendant_iterator__typeof_header__ [@../../../../boost/typeof/boost/tree_node/iterator/breadth_first_descendant.hpp boost/typeof/boost/tree_node/iterator/breadth_first_descendant.hpp]]
+[def __pre_order_iterator__typeof_header__ [@../../../../boost/typeof/boost/tree_node/iterator/pre_order.hpp boost/typeof/boost/tree_node/iterator/pre_order.hpp]]
+[def __pre_order_descendant_iterator__typeof_header__ [@../../../../boost/typeof/boost/tree_node/iterator/pre_order_descendant.hpp boost/typeof/boost/tree_node/iterator/pre_order_descendant.hpp]]
+[def __post_order_iterator__typeof_header__ [@../../../../boost/typeof/boost/tree_node/iterator/post_order.hpp boost/typeof/boost/tree_node/iterator/post_order.hpp]]
+[def __post_order_descendant_iterator__typeof_header__ [@../../../../boost/typeof/boost/tree_node/iterator/post_order_descendant.hpp boost/typeof/boost/tree_node/iterator/post_order_descendant.hpp]]
+[def __in_order_iterator__typeof_header__ [@../../../../boost/typeof/boost/tree_node/iterator/in_order.hpp boost/typeof/boost/tree_node/iterator/in_order.hpp]]
+[def __depth_first_iterator__typeof_header__ [@../../../../boost/typeof/boost/tree_node/iterator/depth_first.hpp boost/typeof/boost/tree_node/iterator/depth_first.hpp]]
+[def __depth_first_descendant_iterator__typeof_header__ [@../../../../boost/typeof/boost/tree_node/iterator/depth_first_descendant.hpp boost/typeof/boost/tree_node/iterator/depth_first_descendant.hpp]]
+[def __binary_node__typeof_header__ [@../../../../boost/typeof/boost/tree_node/binary_node.hpp boost/typeof/boost/tree_node/binary_node.hpp]]
+[def __nary_node__typeof_header__ [@../../../../boost/typeof/boost/tree_node/nary_node.hpp boost/typeof/boost/tree_node/nary_node.hpp]]
+[def __associative_node__typeof_header__ [@../../../../boost/typeof/boost/tree_node/associative_node.hpp boost/typeof/boost/tree_node/associative_node.hpp]]
+[def __with_accumulation__typeof_header__ [@../../../../boost/typeof/boost/tree_node/with_accumulation.hpp boost/typeof/boost/tree_node/with_accumulation.hpp]]
+[def __with_count__typeof_header__ [@../../../../boost/typeof/boost/tree_node/with_count.hpp boost/typeof/boost/tree_node/with_count.hpp]]
+[def __with_height__typeof_header__ [@../../../../boost/typeof/boost/tree_node/with_height.hpp boost/typeof/boost/tree_node/with_height.hpp]]
+[def __with_position__typeof_header__ [@../../../../boost/typeof/boost/tree_node/with_position.hpp boost/typeof/boost/tree_node/with_position.hpp]]
+[def __with_red_black_flag__typeof_header__ [@../../../../boost/typeof/boost/tree_node/with_red_black_flag.hpp boost/typeof/boost/tree_node/with_red_black_flag.hpp]]
+[def __red_black_balancer__typeof_header__ [@../../../../boost/typeof/boost/tree_node/balancer/red_black.hpp boost/typeof/boost/tree_node/balancer/red_black.hpp]]
+[def __avl_balancer__typeof_header__ [@../../../../boost/typeof/boost/tree_node/balancer/adelson_velskii_landis.hpp boost/typeof/boost/tree_node/balancer/adelson_velskii_landis.hpp]]
+[def __binode_container__typeof_header__ [@../../../../boost/typeof/boost/tree_node/container/binode.hpp boost/typeof/boost/tree_node/container/binode.hpp]]
+[def __binode_associative_container__typeof_header__ [@../../../../boost/typeof/boost/tree_node/container/binode_associative.hpp boost/typeof/boost/tree_node/container/binode_associative.hpp]]
+[def __example_type_definitions_hpp__ [@../../example/type_definitions.hpp example/type_definitions.hpp]]
+[def __example_output_tabs_hpp__ [@../../example/output_tabs.hpp example/output_tabs.hpp]]
+[def __example_output_tabs_cpp__ [@../../example/output_tabs.cpp example/output_tabs.cpp]]
+[def __example_output_preamble_hpp__ [@../../example/output_preamble.hpp example/output_preamble.hpp]]
+[def __example_output_preamble_cpp__ [@../../example/output_preamble.cpp example/output_preamble.cpp]]
+[def __example_output_functions_hpp__ [@../../example/output_functions.hpp example/output_functions.hpp]]
+[def __example_iterator_functions_hpp__ [@../../example/iterator_functions.hpp example/iterator_functions.hpp]]
+[def __example_assoc_iterator_functions_hpp__ [@../../example/assoc_iterator_functions.hpp example/assoc_iterator_functions.hpp]]
+[def __example_match_predicate_hpp__ [@../../example/match_predicate.hpp example/match_predicate.hpp]]
+[def __example_binary_node_cpp__ [@../../example/binary_node.cpp example/binary_node.cpp]]
+[def __example_nary_node_cpp__ [@../../example/nary_node.cpp example/nary_node.cpp]]
+[def __example_associative_node_cpp__ [@../../example/associative_node.cpp example/associative_node.cpp]]
+[def __test_iterator_functions_hpp__ [@../../test/iterator_functions.hpp test/iterator_functions.hpp]]
+[def __test_binary_node_cpp__ [@../../test/binary_node.cpp test/binary_node.cpp]]
+[def __test_nary_node_cpp__ [@../../test/nary_node.cpp test/nary_node.cpp]]
+[def __test_associative_node_cpp__ [@../../test/associative_node.cpp test/associative_node.cpp]]
+[def __test_containers_cpp__ [@../../test/containers.cpp test/containers.cpp]]
+
+[/ Boost.TreeNode concept links.]
+[def __Indexable_Container__ [link tree_node.concepts.indexable_container [*Indexable Container]]]
+[def __Tree_Node__ [link tree_node.concepts.tree_node [*Tree Node]]]
+[def __Base_Tree_Node__ [link tree_node.concepts.base_tree_node [*Base Tree Node]]]
+[def __Reversible_Tree_Node__ [link tree_node.concepts.reversible_tree_node [*Reversible Tree Node]]]
+[def __Associative_Tree_Node__ [link tree_node.concepts.associative_tree_node [*Associative Tree Node]]]
+[def __Non_Associative_Tree_Node__ [link tree_node.concepts.non_assoc_tree_node [*Non-Associative Tree Node]]]
+[def __Binary_Tree_Node__ [link tree_node.concepts.binary_tree_node [*Binary Tree Node]]]
+[def __N_ary_Tree_Node__ [link tree_node.concepts.nary_tree_node [*N-ary Tree Node]]]
+[def __Node_Type_Generator__ [link tree_node.concepts.node_type_generator [*Node Type Generator]]]
+[def __Base_Type_Generator__ [link tree_node.concepts.base_type_generator [*Base Type Generator]]]
+[def __Indexable_Iterator__ [link tree_node.concepts.indexable_iterator [*Indexable Iterator]]]
+[def __Tree_Node_Iterator__ [link tree_node.concepts.tree_node_iterator [*Tree Node Iterator]]]
+[def __Full_Tree_Node_Iterator__ [link tree_node.concepts.full_tree_node_iterator [*Full Tree Node Iterator]]]
+[def __Tree_Node_Descendant_Iterator__ [link tree_node.concepts.tree_node_desc_iterator [*Tree Node Descendant Iterator]]]
+
+[/ Boost.TreeNode reference links.]
+[def __data_key__ [link tree_node.reference.data_key `tree_node::data_key`]]
+[def _data_key_ [link tree_node.reference.data_key tree_node::data_key]]
+[def __accumulation_key__ [link tree_node.reference.accumulation_key `tree_node::accumulation_key`]]
+[def _accumulation_key_ [link tree_node.reference.accumulation_key tree_node::accumulation_key]]
+[def __count_key__ [link tree_node.reference.count_key `tree_node::count_key`]]
+[def _count_key_ [link tree_node.reference.count_key tree_node::count_key]]
+[def __height_key__ [link tree_node.reference.height_key `tree_node::height_key`]]
+[def _height_key_ [link tree_node.reference.height_key tree_node::height_key]]
+[def __position_key__ [link tree_node.reference.position_key `tree_node::position_key`]]
+[def _position_key_ [link tree_node.reference.position_key tree_node::position_key]]
+[def __red_flag_key__ [link tree_node.reference.red_black_flag_key `tree_node::red_flag_key`]]
+[def _red_flag_key_ [link tree_node.reference.red_black_flag_key tree_node::red_flag_key]]
+[def __black_flag_key__ [link tree_node.reference.red_black_flag_key `tree_node::black_flag_key`]]
+[def _black_flag_key_ [link tree_node.reference.red_black_flag_key tree_node::black_flag_key]]
+[def __get_properties__ [link tree_node.reference.get_properties `tree_node::get_properties()`]]
+[def _get_properties_ [link tree_node.reference.get_properties tree_node::get_properties]]
+[def __result_of__get_properties__ [link tree_node.reference.get_properties.result_of `tree_node::result_of::get_properties`]]
+[def _result_of__get_properties_ [link tree_node.reference.get_properties.result_of tree_node::result_of::get_properties]]
+[def __has_key__ [link tree_node.reference.has_key `tree_node::has_key()`]]
+[def _has_key_ [link tree_node.reference.has_key tree_node::has_key]]
+[def __result_of__has_key__ [link tree_node.reference.has_key.result_of `tree_node::result_of::has_key`]]
+[def _result_of__has_key_ [link tree_node.reference.has_key.result_of tree_node::result_of::has_key]]
+[def __result_of__get_keys__ [link tree_node.reference.get_keys `tree_node::result_of::get_keys`]]
+[def _result_of__get_keys_ [link tree_node.reference.get_keys tree_node::result_of::get_keys]]
+[def __result_of__at_key__ [link tree_node.reference.at_key `tree_node::result_of::at_key`]]
+[def _result_of__at_key_ [link tree_node.reference.at_key tree_node::result_of::at_key]]
+[def __result_of__value_at_key__ [link tree_node.reference.value_at_key `tree_node::result_of::value_at_key`]]
+[def _result_of__value_at_key_ [link tree_node.reference.value_at_key tree_node::value_at_key]]
+[def __advance_binary__ [link tree_node.reference.advance_binary `tree_node::advance_binary()`]]
+[def _advance_binary_ [link tree_node.reference.advance_binary tree_node::advance_binary]]
+[def __binary_index_of__ [link tree_node.reference.binary_index_of `tree_node::binary_index_of()`]]
+[def _binary_index_of_ [link tree_node.reference.binary_index_of tree_node::binary_index_of]]
+[def __binary_descendant__ [link tree_node.reference.binary_descendant `tree_node::binary_descendant()`]]
+[def _binary_descendant_ [link tree_node.reference.binary_descendant tree_node::binary_descendant]]
+[def __binary_descendant_at_index__ [link tree_node.reference.binary_descendant_at_index `tree_node::binary_descendant_at_index()`]]
+[def _binary_descendant_at_index_ [link tree_node.reference.binary_descendant_at_index tree_node::binary_descendant_at_index]]
+[def __binary_lower_bound__ [link tree_node.reference.binary_lower_bound `tree_node::binary_lower_bound()`]]
+[def _binary_lower_bound_ [link tree_node.reference.binary_lower_bound tree_node::binary_lower_bound]]
+[def __binary_upper_bound__ [link tree_node.reference.binary_upper_bound `tree_node::binary_upper_bound()`]]
+[def _binary_upper_bound_ [link tree_node.reference.binary_upper_bound tree_node::binary_upper_bound]]
+[def __traversal_state__ [link tree_node.reference.traversal_state `tree_node::traversal_state`]]
+[def _traversal_state_ [link tree_node.reference.traversal_state tree_node::traversal_state]]
+[def __dereference_iterator__ [link tree_node.reference.dereference_iterator `tree_node::dereference_iterator()`]]
+[def _dereference_iterator_ [link tree_node.reference.dereference_iterator tree_node::dereference_iterator]]
+[def __result_of__dereference_iterator__ [link tree_node.reference.dereference_iterator.result_of `tree_node::result_of::dereference_iterator`]]
+[def _result_of__dereference_iterator_ [link tree_node.reference.dereference_iterator.result_of tree_node::result_of::dereference_iterator]]
+[def __breadth_first_iterator__ [link tree_node.reference.breadth_first_iterator `tree_node::breadth_first_iterator`]]
+[def _breadth_first_iterator_ [link tree_node.reference.breadth_first_iterator tree_node::breadth_first_iterator]]
+[def __breadth_first_descendant_iterator__ [link tree_node.reference.breadth_first_desc_iter `tree_node::breadth_first_descendant_iterator`]]
+[def _breadth_first_descendant_iterator_ [link tree_node.reference.breadth_first_desc_iter tree_node::breadth_first_descendant_iterator]]
+[def __pre_order_iterator__ [link tree_node.reference.pre_order_iterator `tree_node::pre_order_iterator`]]
+[def _pre_order_iterator_ [link tree_node.reference.pre_order_iterator tree_node::pre_order_iterator]]
+[def __pre_order_descendant_iterator__ [link tree_node.reference.pre_order_desc_iter `tree_node::pre_order_descendant_iterator`]]
+[def _pre_order_descendant_iterator_ [link tree_node.reference.pre_order_desc_iter tree_node::pre_order_descendant_iterator]]
+[def __post_order_iterator__ [link tree_node.reference.post_order_iterator `tree_node::post_order_iterator`]]
+[def _post_order_iterator_ [link tree_node.reference.post_order_iterator tree_node::post_order_iterator]]
+[def __post_order_descendant_iterator__ [link tree_node.reference.post_order_desc_iter `tree_node::post_order_descendant_iterator`]]
+[def _post_order_descendant_iterator_ [link tree_node.reference.post_order_desc_iter tree_node::post_order_descendant_iterator]]
+[def __in_order_iterator__ [link tree_node.reference.in_order_iterator `tree_node::in_order_iterator`]]
+[def _in_order_iterator_ [link tree_node.reference.in_order_iterator tree_node::in_order_iterator]]
+[def __depth_first_iterator__ [link tree_node.reference.depth_first_iterator `tree_node::depth_first_iterator`]]
+[def _depth_first_iterator_ [link tree_node.reference.depth_first_iterator tree_node::depth_first_iterator]]
+[def __depth_first_descendant_iterator__ [link tree_node.reference.depth_first_desc_iter `tree_node::depth_first_descendant_iterator`]]
+[def _depth_first_descendant_iterator_ [link tree_node.reference.depth_first_desc_iter tree_node::depth_first_descendant_iterator]]
+[def __tree_node_base__ [link tree_node.reference.tree_node_base `tree_node::tree_node_base`]]
+[def _tree_node_base_ [link tree_node.reference.tree_node_base tree_node::tree_node_base]]
+[def __binary_node_base__ [link tree_node.reference.binary_node_base `tree_node::binary_node_base`]]
+[def _binary_node_base_ [link tree_node.reference.binary_node_base tree_node::binary_node_base]]
+[def __binary_node_base_gen__ [link tree_node.reference.binary_node_base_gen `tree_node::binary_node_base_gen`]]
+[def _binary_node_base_gen_ [link tree_node.reference.binary_node_base_gen tree_node::binary_node_base_gen]]
+[def __binary_node__ [link tree_node.reference.binary_node `tree_node::binary_node`]]
+[def _binary_node_ [link tree_node.reference.binary_node tree_node::binary_node]]
+[def __binary_node_gen__ [link tree_node.reference.binary_node_gen `tree_node::binary_node_gen`]]
+[def _binary_node_gen_ [link tree_node.reference.binary_node_gen tree_node::binary_node_gen]]
+[def __nary_node_base__ [link tree_node.reference.nary_node_base `tree_node::nary_node_base`]]
+[def _nary_node_base_ [link tree_node.reference.nary_node_base tree_node::nary_node_base]]
+[def __nary_node_base_gen__ [link tree_node.reference.nary_node_base_gen `tree_node::nary_node_base_gen`]]
+[def _nary_node_base_gen_ [link tree_node.reference.nary_node_base_gen tree_node::nary_node_base_gen]]
+[def __nary_node__ [link tree_node.reference.nary_node `tree_node::nary_node`]]
+[def _nary_node_ [link tree_node.reference.nary_node tree_node::nary_node]]
+[def __nary_node_gen__ [link tree_node.reference.nary_node_gen `tree_node::nary_node_gen`]]
+[def _nary_node_gen_ [link tree_node.reference.nary_node_gen tree_node::nary_node_gen]]
+[def __associative_node_base__ [link tree_node.reference.associative_node_base `tree_node::associative_node_base`]]
+[def _associative_node_base_ [link tree_node.reference.associative_node_base tree_node::associative_node_base]]
+[def __associative_node_base_gen__ [link tree_node.reference.assoc_node_base_gen `tree_node::associative_node_base_gen`]]
+[def _associative_node_base_gen_ [link tree_node.reference.assoc_node_base_gen tree_node::associative_node_base_gen]]
+[def __associative_node__ [link tree_node.reference.associative_node `tree_node::associative_node`]]
+[def _associative_node_ [link tree_node.reference.associative_node tree_node::associative_node]]
+[def __associative_node_gen__ [link tree_node.reference.associative_node_gen `tree_node::associative_node_gen`]]
+[def _associative_node_gen_ [link tree_node.reference.associative_node_gen tree_node::associative_node_gen]]
+[def __tree_node_with_accumulation_base__ [link tree_node.reference.with_accumulation_base `tree_node::with_accumulation_base`]]
+[def _tree_node_with_accumulation_base_ [link tree_node.reference.with_accumulation_base tree_node::with_accumulation_base]]
+[def __tree_node_with_accumulation_base_gen__ [link tree_node.reference.with_accumulation_base_gen `tree_node::with_accumulation_base_gen`]]
+[def _tree_node_with_accumulation_base_gen_ [link tree_node.reference.with_accumulation_base_gen tree_node::with_accumulation_base_gen]]
+[def __tree_node_with_accumulation__ [link tree_node.reference.with_accumulation `tree_node::with_accumulation`]]
+[def _tree_node_with_accumulation_ [link tree_node.reference.with_accumulation tree_node::with_accumulation]]
+[def __tree_node_with_accumulation_gen__ [link tree_node.reference.with_accumulation_gen `tree_node::with_accumulation_gen`]]
+[def _tree_node_with_accumulation_gen_ [link tree_node.reference.with_accumulation_gen tree_node::with_accumulation_gen]]
+[def __tree_node_with_count_base__ [link tree_node.reference.with_count_base `tree_node::with_count_base`]]
+[def _tree_node_with_count_base_ [link tree_node.reference.with_count_base tree_node::with_count_base]]
+[def __tree_node_with_count_base_gen__ [link tree_node.reference.with_count_base_gen `tree_node::with_count_base_gen`]]
+[def _tree_node_with_count_base_gen_ [link tree_node.reference.with_count_base_gen tree_node::with_count_base_gen]]
+[def __tree_node_with_count__ [link tree_node.reference.with_count `tree_node::with_count`]]
+[def _tree_node_with_count_ [link tree_node.reference.with_count tree_node::with_count]]
+[def __tree_node_with_count_gen__ [link tree_node.reference.with_count_gen `tree_node::with_count_gen`]]
+[def _tree_node_with_count_gen_ [link tree_node.reference.with_count_gen tree_node::with_count_gen]]
+[def __tree_node_with_height_base__ [link tree_node.reference.with_height_base `tree_node::with_height_base`]]
+[def _tree_node_with_height_base_ [link tree_node.reference.with_height_base tree_node::with_height_base]]
+[def __tree_node_with_height_base_gen__ [link tree_node.reference.with_height_base_gen `tree_node::with_height_base_gen`]]
+[def _tree_node_with_height_base_gen_ [link tree_node.reference.with_height_base_gen tree_node::with_height_base_gen]]
+[def __tree_node_with_height__ [link tree_node.reference.with_height `tree_node::with_height`]]
+[def _tree_node_with_height_ [link tree_node.reference.with_height tree_node::with_height]]
+[def __tree_node_with_height_gen__ [link tree_node.reference.with_height_gen `tree_node::with_height_gen`]]
+[def _tree_node_with_height_gen_ [link tree_node.reference.with_height_gen tree_node::with_height_gen]]
+[def __tree_node_with_position_base__ [link tree_node.reference.with_position_base `tree_node::with_position_base`]]
+[def _tree_node_with_position_base_ [link tree_node.reference.with_position_base tree_node::with_position_base]]
+[def __tree_node_with_position_base_gen__ [link tree_node.reference.with_position_base_gen `tree_node::with_position_base_gen`]]
+[def _tree_node_with_position_base_gen_ [link tree_node.reference.with_position_base_gen tree_node::with_position_base_gen]]
+[def __tree_node_with_position__ [link tree_node.reference.with_position `tree_node::with_position`]]
+[def _tree_node_with_position_ [link tree_node.reference.with_position tree_node::with_position]]
+[def __tree_node_with_position_gen__ [link tree_node.reference.with_position_gen `tree_node::with_position_gen`]]
+[def _tree_node_with_position_gen_ [link tree_node.reference.with_position_gen tree_node::with_position_gen]]
+[def __tree_node_with_red_black_flag_base__ [link tree_node.reference.with_rb_flag_base `tree_node::with_red_black_flag_base`]]
+[def _tree_node_with_red_black_flag_base_ [link tree_node.reference.with_rb_flag_base tree_node::with_red_black_flag_base]]
+[def __tree_node_with_red_black_flag_base_gen__ [link tree_node.reference.with_rb_flag_base_gen `tree_node::with_red_black_flag_base_gen`]]
+[def _tree_node_with_red_black_flag_base_gen_ [link tree_node.reference.with_rb_flag_base_gen tree_node::with_red_black_flag_base_gen]]
+[def __tree_node_with_red_black_flag__ [link tree_node.reference.with_rb_flag `tree_node::with_red_black_flag`]]
+[def _tree_node_with_red_black_flag_ [link tree_node.reference.with_rb_flag tree_node::with_red_black_flag]]
+[def __tree_node_with_red_black_flag_gen__ [link tree_node.reference.with_rb_flag_gen `tree_node::with_red_black_flag_gen`]]
+[def _tree_node_with_red_black_flag_gen_ [link tree_node.reference.with_rb_flag_gen tree_node::with_red_black_flag_gen]]
+[def __red_black_balancer__ [link tree_node.reference.red_black_balancer `tree_node::red_black_balancer`]]
+[def _red_black_balancer_ [link tree_node.reference.red_black_balancer tree_node::red_black_balancer]]
+[def __avl_balancer__ [link tree_node.reference.avl_balancer `tree_node::adelson_velskii_landis_balancer`]]
+[def _avl_balancer_ [link tree_node.reference.avl_balancer tree_node::adelson_velskii_landis_balancer]]
+[def __binode_container__ [link tree_node.reference.binode_container `tree_node::binode_container`]]
+[def _binode_container_ [link tree_node.reference.binode_container tree_node::binode_container]]
+[def __binode_associative_container__ [link tree_node.reference.binode_assoc_container `tree_node::binode_associative_container`]]
+[def _binode_associative_container_ [link tree_node.reference.binode_assoc_container tree_node::binode_associative_container]]
+[def __binode_set__ [link tree_node.reference.binode_set `tree_node::binode_set`]]
+[def _binode_set_ [link tree_node.reference.binode_set tree_node::binode_set]]
+[def __binode_map__ [link tree_node.reference.binode_map `tree_node::binode_map`]]
+[def _binode_map_ [link tree_node.reference.binode_map tree_node::binode_map]]
+[def __binode_multiset__ [link tree_node.reference.binode_multiset `tree_node::binode_multiset`]]
+[def _binode_multiset_ [link tree_node.reference.binode_multiset tree_node::binode_multiset]]
+[def __binode_multimap__ [link tree_node.reference.binode_multimap `tree_node::binode_multimap`]]
+[def _binode_multimap_ [link tree_node.reference.binode_multimap tree_node::binode_multimap]]
+[def __TREE_NODE_CAN_USE_FUSION__ [link tree_node.reference.can_use_fusion `BOOST_TREE_NODE_CAN_USE_FUSION`]]
+[def __TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF__ [link tree_node.reference.can_use_fusion_with_typeof `BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF`]]
+[def __TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL__ [link tree_node.reference.emplace_ctor_fwd_decl `BOOST_TREE_NODE_EMPLACEMENT_CTOR_FWD_DECL`]]
+[def __TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER__ [link tree_node.reference.emplace_ctor_inline_hdr `BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_HEADER`]]
+[def __TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF__ [link tree_node.reference.emplace_ctor_inline_def `BOOST_TREE_NODE_EMPLACEMENT_CTOR_INLINE_DEF`]]
+[def __TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL__ [link tree_node.reference.emplace_ctor_w_alloc_f_dcl `BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_FWD_DECL`]]
+[def __TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER__ [link tree_node.reference.emplace_ctor_w_alloc_i_hdr `BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_HEADER`]]
+[def __TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF__ [link tree_node.reference.emplace_ctor_w_alloc_i_def `BOOST_TREE_NODE_EMPLACEMENT_CTOR_W_ALLOC_INLINE_DEF`]]
+[def __TREE_NODE_COPYABLE_AND_MOVABLE__ [link tree_node.reference.copyable_and_movable `BOOST_TREE_NODE_COPYABLE_AND_MOVABLE`]]
+[def __TREE_NODE_CONTAINER_DERIVED_BODY__ [link tree_node.reference.container_derived_body `BOOST_TREE_NODE_CONTAINER_DERIVED_BODY`]]
+[def __TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY__ [link tree_node.reference.assoc_cont_derived_body `BOOST_TREE_NODE_ASSOCIATIVE_CONTAINER_DERIVED_BODY`]]
+
+[/ Autogenerate concept and reference documentation directly from code.]
+[/ Bypass Doxygen.]
+[import ../../../boost/tree_node/key/data.hpp]
+[import ../../../boost/tree_node/key/accumulation.hpp]
+[import ../../../boost/tree_node/key/count.hpp]
+[import ../../../boost/tree_node/key/height.hpp]
+[import ../../../boost/tree_node/key/position.hpp]
+[import ../../../boost/tree_node/key/red_black_flag.hpp]
+[import ../../../boost/tree_node/intrinsic/get_properties.hpp]
+[import ../../../boost/tree_node/intrinsic/has_key.hpp]
+[import ../../../boost/tree_node/intrinsic/get_keys.hpp]
+[import ../../../boost/tree_node/intrinsic/at_key.hpp]
+[import ../../../boost/tree_node/intrinsic/value_at_key.hpp]
+[import ../../../boost/tree_node/algorithm/advance_binary.hpp]
+[import ../../../boost/tree_node/algorithm/binary_index_of.hpp]
+[import ../../../boost/tree_node/algorithm/binary_descendant.hpp]
+[import ../../../boost/tree_node/algorithm/binary_descendant_at_index.hpp]
+[import ../../../boost/tree_node/algorithm/binary_lower_bound.hpp]
+[import ../../../boost/tree_node/algorithm/binary_upper_bound.hpp]
+[import ../../../boost/tree_node/traversal_state.hpp]
+[import ../../../boost/tree_node/iterator/dereference.hpp]
+[import ../../../boost/tree_node/iterator/breadth_first.hpp]
+[import ../../../boost/tree_node/iterator/breadth_first_descendant.hpp]
+[import ../../../boost/tree_node/iterator/pre_order.hpp]
+[import ../../../boost/tree_node/iterator/pre_order_descendant.hpp]
+[import ../../../boost/tree_node/iterator/post_order.hpp]
+[import ../../../boost/tree_node/iterator/post_order_descendant.hpp]
+[import ../../../boost/tree_node/iterator/in_order.hpp]
+[import ../../../boost/tree_node/iterator/depth_first.hpp]
+[import ../../../boost/tree_node/iterator/depth_first_descendant.hpp]
+[import ../../../boost/tree_node/base.hpp]
+[import ../../../boost/tree_node/preprocessor.hpp]
+[import ../../../boost/tree_node/binary_node_fwd.hpp]
+[import ../../../boost/tree_node/binary_node.hpp]
+[import ../../../boost/tree_node/nary_node_fwd.hpp]
+[import ../../../boost/tree_node/nary_node.hpp]
+[import ../../../boost/tree_node/associative_node_fwd.hpp]
+[import ../../../boost/tree_node/associative_node.hpp]
+[import ../../../boost/tree_node/with_accumulation_fwd.hpp]
+[import ../../../boost/tree_node/with_accumulation.hpp]
+[import ../../../boost/tree_node/with_count_fwd.hpp]
+[import ../../../boost/tree_node/with_count.hpp]
+[import ../../../boost/tree_node/with_height_fwd.hpp]
+[import ../../../boost/tree_node/with_height.hpp]
+[import ../../../boost/tree_node/with_position_fwd.hpp]
+[import ../../../boost/tree_node/with_position.hpp]
+[import ../../../boost/tree_node/with_red_black_flag_fwd.hpp]
+[import ../../../boost/tree_node/with_red_black_flag.hpp]
+[import ../../../boost/tree_node/balancer/red_black.hpp]
+[import ../../../boost/tree_node/balancer/adelson_velskii_landis.hpp]
+[import ../../../boost/tree_node/container/binode_fwd.hpp]
+[import ../../../boost/tree_node/container/binode.hpp]
+[import ../../../boost/tree_node/container/binode_associative_fwd.hpp]
+[import ../../../boost/tree_node/container/binode_associative.hpp]
+
+[/ index.html Start]
+
+[heading Rationale]
+Over the course of reimplementing a decision tree learning algorithm to use
+modern C++ techniques, the need for a generic tree library became evident. The
+in-house data structures in use at the time were undergoing modification as
+well. It was found that the core operations occurred at the node level rather
+than at the tree level, which stored only high-level algorithms. Efforts went
+underway to retrofit these algorithms to use iterators and to further factor
+out generic data structures from the decision tree components and other
+application-specific utilities. This library represents the Boostified
+culmination of these efforts.
+
+[important
+ This library depends on __Boost_ContainerGen__, which is not yet a part
+ of Boost. For now, you must perform a Subversion checkout from the
+ __SVN_Trac__.
+]
+
+[/ index.html End]
+
+[include concepts.qbk]
+[include reference.qbk]
+[include changelog.qbk]
+
Added: sandbox/tree_node/libs/tree_node/example/assoc_iterator_functions.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/assoc_iterator_functions.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,83 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef LIBS_TREE_NODE_EXAMPLE_ASSOC_ITERATOR_FUNCTIONS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_ASSOC_ITERATOR_FUNCTIONS_HPP_INCLUDED
+
+#include <iostream>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/iterator/breadth_first_descendant.hpp>
+#include <boost/tree_node/iterator/pre_order_descendant.hpp>
+#include <boost/tree_node/iterator/post_order_descendant.hpp>
+#include <boost/tree_node/iterator/depth_first_descendant.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+
+template <typename NodeIterator, typename Function>
+void associative_iterator_out(NodeIterator itr, Function f, unsigned int n)
+{
+ for (unsigned int i = 0; itr; ++itr)
+ {
+ if (!i)
+ {
+ std::cout << std::endl << " ";
+ }
+
+ f(itr->first, boost::tree_node::dereference_iterator(itr));
+
+ if (++i == n)
+ {
+ i = 0;
+ }
+ }
+}
+
+template <typename NodeIterator, typename Function>
+void associative_iterator_out(NodeIterator itr, Function f, char const* text)
+{
+ for (std::cout << ';' << std::endl << text; itr; ++itr)
+ {
+ f(
+ itr->first
+ , boost::tree_node::dereference_iterator(itr)
+ , boost::tree_node::traversal_state(itr)
+ );
+ }
+}
+
+template <typename Node, typename Function>
+void associative_out_bf_pre_post(Node const& node, Function f, unsigned int n)
+{
+ std::cout << ';' << std::endl << " emplacer[bf_d_vals]";
+ associative_iterator_out(
+ boost::tree_node::make_breadth_first_descendant_iterator(node)
+ , f
+ , n
+ );
+ std::cout << ';' << std::endl << " emplacer[pre_d_vals]";
+ associative_iterator_out(
+ boost::tree_node::make_pre_order_descendant_iterator(node)
+ , f
+ , n
+ );
+ std::cout << ';' << std::endl << " emplacer[post_d_vals]";
+ associative_iterator_out(
+ boost::tree_node::make_post_order_descendant_iterator(node)
+ , f
+ , n
+ );
+}
+
+template <typename Node, typename Function>
+void associative_out_df(Node const& node, Function f)
+{
+ associative_iterator_out(
+ boost::tree_node::make_depth_first_descendant_iterator(node)
+ , f
+ , " emplacer[df_d_vals]"
+ );
+}
+
+#endif // LIBS_TREE_NODE_EXAMPLE_ASSOC_ITERATOR_FUNCTIONS_HPP_INCLUDED
+
Added: sandbox/tree_node/libs/tree_node/example/associative_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/associative_node.cpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,920 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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 <iostream>
+#include <boost/config.hpp>
+#include <boost/range/begin.hpp>
+#include <boost/container_gen/is_unique_assoc_selector.hpp>
+#include <boost/typeof/boost/rational.hpp>
+#include <boost/typeof/boost/tree_node/associative_node.hpp>
+#include <boost/typeof/boost/tree_node/with_count.hpp>
+#include <boost/typeof/boost/tree_node/with_height.hpp>
+#include <boost/typeof/boost/tree_node/with_position.hpp>
+#include <boost/tree_node/iterator/breadth_first.hpp>
+#include <boost/tree_node/iterator/breadth_first_descendant.hpp>
+#include <boost/tree_node/iterator/pre_order.hpp>
+#include <boost/tree_node/iterator/post_order.hpp>
+#include <boost/tree_node/iterator/depth_first.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/typeof/boost/tree_node/with_accumulation.hpp>
+#endif
+
+#include "type_definitions.hpp"
+#include "output_preamble.hpp"
+#include "output_functions.hpp"
+#include "iterator_functions.hpp"
+#include "assoc_iterator_functions.hpp"
+
+char const* names[] = {"able", "baker", "chuck", "dog", "easy", "fox"};
+
+template <typename Node>
+void initialize(Node& root)
+{
+ for (boost::tree_node::breadth_first_iterator<Node> itr(root); itr; ++itr)
+ {
+ typename Node::traits::data_type const& data = get(
+ *itr
+ , boost::tree_node::data_key()
+ );
+
+ if (1 < data)
+ {
+ for (std::size_t i = 0; i < data; ++i)
+ {
+ for (std::size_t j = 0; j + i < data; ++j)
+ {
+ itr->emplace(names[j], i);
+ }
+ }
+ }
+ }
+}
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+template <typename DNode, typename ANode>
+void out_with_them(DNode const& d_node, ANode const& a_node)
+{
+ std::cout << std::endl << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION";
+ iterator_out_bf_pre_post(a_node, output_node<boost::mpl::true_>(), 1);
+ associative_out_bf_pre_post(a_node, output_node<boost::mpl::true_>(), 1);
+ associative_out_df(a_node, output_tree<boost::mpl::true_>(4, 9, false));
+ iterator_out_df(a_node, output_tree<boost::mpl::true_>(4, 9, false));
+ std::cout << "#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION";
+ iterator_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 6);
+ associative_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 3);
+ associative_out_df(d_node, output_tree<boost::mpl::false_>(2, 5, true));
+ iterator_out_df(d_node, output_tree<boost::mpl::false_>(2, 7, true));
+ std::cout << "#endif // BOOST_NO_SFINAE" << std::endl;
+}
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+template <typename DNode>
+void out_with_it(DNode const& d_node)
+{
+ iterator_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 6);
+ associative_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 3);
+ associative_out_df(d_node, output_tree<boost::mpl::false_>(2, 5, true));
+ iterator_out_df(d_node, output_tree<boost::mpl::false_>(2, 7, true));
+}
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF
+template <typename FNode>
+void out_with_all(FNode const& f_node)
+{
+ iterator_out_bf_pre_post(f_node, output_uint_char_node(), 5);
+ associative_out_bf_pre_post(f_node, output_uint_char_node(), 3);
+ associative_out_df(f_node, output_uint_char_tree(4, 9, false));
+ iterator_out_df(f_node, output_uint_char_tree(4, 9, false));
+}
+#endif
+
+template <typename Selector>
+void output_driver()
+{
+ typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::associative_node_base_gen<Selector>
+ >
+ >
+ , char const*
+ , boost::rational<long>
+ >
+ DNode;
+
+ DNode d_root(5);
+
+ initialize(d_root);
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::associative_node_base_gen<Selector>
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , char const*
+ , boost::rational<long>
+ , AccuHeightKey
+ >
+ ANode;
+
+ ANode a_root(5);
+
+ initialize(a_root);
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ std::cout << std::endl << "template <typename Selector>";
+ std::cout << std::endl << (
+ boost::is_unique_associative_selector<Selector>::value
+ ? "void test_unique_associative()"
+ : "void test_multiple_associative()"
+ ) << std::endl << '{' << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ std::cout << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl << (
+ " typedef boost::tree_node::with_accumulation<"
+ ) << std::endl << " boost::tree_node::with_height_base_gen<";
+ std::cout << std::endl << (
+ " boost::tree_node::with_accumulation_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_position_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_accumulation_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_count_base_gen<"
+ ) << std::endl << " boost";
+ std::cout << "::tree_node::with_accumulation_base_gen<" << std::endl << (
+ " boost::tree_node::associative_node_base_gen"
+ ) << "<Selector>" << std::endl << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , AccuAccuKey" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , AccuCountKey" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , char const*" << std::endl;
+ std::cout << " , boost::rational<long>" << std::endl;
+ std::cout << " , AccuHeightKey" << std::endl << " >";
+ std::cout << std::endl << " ANode;" << std::endl << (
+ "#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION"
+ ) << std::endl;
+#endif // BOOST_NO_SFINAE
+ std::cout << " typedef boost::tree_node::with_height<" << std::endl << (
+ " boost::tree_node::with_position_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_count_base_gen<"
+ ) << std::endl << " ";
+ std::cout << "boost::tree_node::associative_node_base_gen<Selector>";
+ std::cout << std::endl << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , char const*" << std::endl;
+ std::cout << " , boost::rational<long>" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " ANode;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+#endif
+ output_container_type_preamble();
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " typename ANode::traits::key_type";
+ std::cout << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::data_key";
+ std::cout << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::height_key";
+ std::cout << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::count_key";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl << (
+ " , boost::tree_node::accumulation_key<>"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , AccuHeightKey" << std::endl;
+ std::cout << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , AccuCountKey" << std::endl;
+ std::cout << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , AccuAccuKey" << std::endl;
+ std::cout << " >::type" << std::endl;
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " KeyValues;" << std::endl;
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << (
+ " , typename ANode::traits::key_type"
+ ) << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::data_key";
+ std::cout << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::height_key";
+ std::cout << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::count_key";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl << (
+ " , boost::tree_node::accumulation_key<>"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , AccuHeightKey" << std::endl;
+ std::cout << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , AccuCountKey" << std::endl;
+ std::cout << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , AccuAccuKey" << std::endl;
+ std::cout << " >::type" << std::endl;
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " DFKeyValues;" << std::endl;
+ std::cout << std::endl << " ANode a_root(5);" << std::endl;
+ std::cout << std::endl << " BOOST_CHECK(" << std::endl;
+ std::cout << " !a_root.get_parent_ptr()" << std::endl;
+ std::cout << "// , \"Parent member uninitialized.\"" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+ std::cout << " initialize<Selector>(a_root);" << std::endl << std::endl;
+ std::cout << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals;" << std::endl;
+ std::cout << " KeyValues bf_d_vals, pre_d_vals, post_d_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFKeyValues df_d_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_associative_node<a_node_case>(" << std::endl;
+ std::cout << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " , df_d_vals" << std::endl;
+ std::cout << " );" << std::endl << " }" << std::endl;
+
+ {
+ typename DNode::iterator d_child_itr(
+ boost::tree_node::dereference_iterator(
+ d_root.find(names[2])
+ ).insert(names[5], d_root)
+ );
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typename ANode::iterator a_child_itr(
+ boost::tree_node::dereference_iterator(
+ a_root.find(names[2])
+ ).insert(names[5], a_root)
+ );
+#endif
+
+ std::cout << " {" << std::endl << " ANode a_copy(a_root);";
+ std::cout << std::endl << (
+ " boost::tree_node::breadth_first_iterator<ANode const>"
+ ) << std::endl << (
+ " bf_root_itr(a_root), bf_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::breadth_first";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::pre_order_iterator<ANode const>"
+ ) << std::endl << (
+ " pre_root_itr(a_root), pre_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::pre_order";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::post_order_iterator<ANode const>"
+ ) << std::endl << (
+ " post_root_itr(a_root), post_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::post_order";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " post_d_root_itr(a_root), post_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::depth_first_iterator<ANode const>"
+ ) << std::endl << (
+ " df_root_itr(a_root), df_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::depth_first";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " df_d_root_itr(a_root), df_d_copy_itr(a_copy);"
+ ) << std::endl << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(bf_root_itr, bf_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << std::endl << " " << (
+ " test_associative_node_copies(bf_d_root_itr, bf_d_copy_itr)"
+ ) << std::endl << " );" << std::endl << " " << (
+ "BOOST_CHECK(test_node_copies(pre_root_itr, pre_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << std::endl << " " << (
+ " test_associative_node_copies(pre_d_root_itr, pre_d_copy_itr)"
+ ) << std::endl << " );" << std::endl << " " << (
+ "BOOST_CHECK(test_node_copies(post_root_itr, post_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << std::endl << " " << (
+ " test_associative_node_copies(post_d_root_itr, post_d_copy_it"
+ ) << "r)" << std::endl << " );" << std::endl << " " << (
+ "BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << std::endl << " " << (
+ " test_associative_node_copies(df_d_root_itr, df_d_copy_itr)"
+ ) << std::endl << " );" << std::endl << " }" << std::endl;
+ std::cout << std::endl << " {" << std::endl << (
+ " typename ANode::iterator a_child_itr("
+ ) << std::endl << " boost::tree_node::dereference_iterator(";
+ std::cout << std::endl << " a_root.find(names[2])";
+ std::cout << std::endl << " ).insert(names[5], a_root)";
+ std::cout << std::endl << " );" << std::endl << (
+ " Values bf_vals, pre_vals, post_vals;"
+ ) << std::endl;
+ std::cout << " KeyValues bf_d_vals, pre_d_vals, post_d_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " DFKeyValues df_d_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_associative_node<a_node_case>(";
+ std::cout << std::endl << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " , df_d_vals" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+
+ d_root = boost::tree_node::dereference_iterator(d_child_itr);
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ a_root = boost::tree_node::dereference_iterator(a_child_itr);
+#endif
+ std::cout << " a_root = boost::tree_node::";
+ std::cout << "dereference_iterator(a_child_itr);" << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " bf_d_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " pre_d_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " post_d_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+ std::cout << " df_d_vals.clear();" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_associative_node<a_node_case>(";
+ std::cout << std::endl << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " , df_d_vals" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+
+ if (boost::is_unique_associative_selector<Selector>::value)
+ {
+ boost::tree_node::dereference_iterator(
+ d_child_itr = d_root.find(names[2])
+ ) = d_root;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ boost::tree_node::dereference_iterator(
+ a_child_itr = a_root.find(names[2])
+ ) = a_root;
+#endif
+ std::cout << " a_child_itr = a_root.find(names[2]);";
+ std::cout << std::endl;
+ }
+ else
+ {
+ d_child_itr = boost::begin(d_root.equal_range(names[2]));
+
+ while (boost::tree_node::dereference_iterator(d_child_itr).empty())
+ {
+ ++d_child_itr;
+ }
+
+ d_child_itr = boost::begin(
+ boost::tree_node::dereference_iterator(
+ d_child_itr
+ ).equal_range(names[1])
+ );
+ boost::tree_node::dereference_iterator(d_child_itr) = d_root;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ a_child_itr = boost::begin(a_root.equal_range(names[2]));
+
+ while (boost::tree_node::dereference_iterator(a_child_itr).empty())
+ {
+ ++a_child_itr;
+ }
+
+ a_child_itr = boost::begin(
+ boost::tree_node::dereference_iterator(
+ a_child_itr
+ ).equal_range(names[1])
+ );
+ boost::tree_node::dereference_iterator(a_child_itr) = a_root;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ std::cout << " a_child_itr = boost::begin(a_root.equal";
+ std::cout << "_range(names[2]));" << std::endl << std::endl << (
+ " while (boost::tree_node::dereference_iterator(a_"
+ ) << "child_itr).empty())" << std::endl << " {";
+ std::cout << std::endl << " ++a_child_itr;";
+ std::cout << std::endl << " }" << std::endl;
+ std::cout << std::endl << (
+ " a_child_itr = boost::begin("
+ ) << std::endl << (
+ " boost::tree_node::dereference_iterator("
+ ) << std::endl << " a_child_itr" << std::endl;
+ std::cout << " ).equal_range(names[1])";
+ std::cout << std::endl << " );" << std::endl;
+ }
+
+ std::cout << " boost::tree_node::dereference_iterator";
+ std::cout << "(a_child_itr) = a_root;" << std::endl;
+ std::cout << " test_associative_node<a_node_case>(";
+ std::cout << std::endl << (
+ " boost::tree_node::dereference_iterator(a_child_itr)"
+ ) << std::endl << " , bf_vals" << std::endl;
+ std::cout << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " , df_d_vals" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " bf_d_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " pre_d_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " post_d_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+ std::cout << " df_d_vals.clear();" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_associative_node<a_node_case>(";
+ std::cout << std::endl << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " , df_d_vals" << std::endl << " );";
+ std::cout << std::endl << " BOOST_CHECK(" << std::endl << (
+ " boost::tree_node::dereference_iterator("
+ ) << std::endl << " a_child_itr" << std::endl;
+ std::cout << " ).erase(names[1]) == ";
+ std::cout << boost::tree_node::dereference_iterator(
+ d_child_itr
+ ).erase(names[1]) << std::endl << " );" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ boost::tree_node::dereference_iterator(a_child_itr).erase(names[1]);
+#endif
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " bf_d_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " pre_d_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " post_d_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+ std::cout << " df_d_vals.clear();" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_associative_node<a_node_case>(";
+ std::cout << std::endl << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " , df_d_vals" << std::endl << " );";
+ }
+
+ std::cout << std::endl << " }";
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::associative_node_base_gen<Selector>
+ , char const*
+ , DataMap
+ , AccuYourUintKey
+ >
+ FNode;
+
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type data = boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::tree_node::dereference_iterator(itr));
+
+ if (1 < data)
+ {
+ for (unsigned int i = 0; i < data; ++i)
+ {
+ for (std::size_t j = 0; j + i < data; ++j)
+ {
+ itr->emplace(
+ names[j]
+ , boost::fusion::make_pair<example_keys::your_uint>(i)
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + i
+ )
+ );
+ }
+ }
+ }
+ }
+
+ std::cout << std::endl << std::endl << (
+ "#if defined BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF"
+ ) << std::endl << " typedef boost::tree_node::with_accumulation<";
+ std::cout << std::endl << (
+ " boost::tree_node::associative_node_base_gen<Selector>"
+ ) << std::endl << " , char const*" << std::endl;
+ std::cout << " , DataMap" << std::endl;
+ std::cout << " , AccuYourUintKey" << std::endl;
+ std::cout << " >" << std::endl << " FNode;";
+ output_container_fused_type_preamble();
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl << (
+ " typename FNode::traits::key_type"
+ ) << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " FNode const";
+ std::cout << std::endl << (
+ " , example_keys::your_uint"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " FNode const";
+ std::cout << std::endl << (
+ " , example_keys::your_char"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " FNode const";
+ std::cout << std::endl << (
+ " , AccuYourUintKey"
+ ) << std::endl << " >::type" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " MoreKeyValues;" << std::endl;
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << (
+ " , typename FNode::traits::key_type"
+ ) << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " FNode const";
+ std::cout << std::endl << (
+ " , example_keys::your_uint"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " FNode const";
+ std::cout << std::endl << (
+ " , example_keys::your_char"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " FNode const";
+ std::cout << std::endl << (
+ " , AccuYourUintKey"
+ ) << std::endl << " >::type" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " DFMoreKeyValues;" << std::endl;
+ std::cout << std::endl << " FNode f_root(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::your_uint>(5)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::your_char>(\'5\')"
+ ) << std::endl << " );" << std::endl << std::endl;
+ std::cout << " for (" << std::endl << (
+ " boost::tree_node::breadth_first_iterator<FNode> itr(f_root);"
+ ) << std::endl << " itr;" << std::endl << " ++itr";
+ std::cout << std::endl << " )" << std::endl << " {" << std::endl;
+ std::cout << " typename boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " FNode const" << std::endl;
+ std::cout << " , example_keys::your_uint" << std::endl;
+ std::cout << " >::type data = boost::tree_node::get<" << std::endl;
+ std::cout << " example_keys::your_uint" << std::endl << (
+ " >(boost::tree_node::dereference_iterator(itr));"
+ ) << std::endl << std::endl << " if (1 < data)" << std::endl;
+ std::cout << " {" << std::endl;
+ std::cout << " for (unsigned int i = 0; i < data; ++i)";
+ std::cout << std::endl << " {" << std::endl << (
+ " for (std::size_t j = 0; j + i < data; ++j)"
+ ) << std::endl << " {" << std::endl;
+ std::cout << " itr->emplace(" << std::endl;
+ std::cout << " names[j]" << std::endl << (
+ " , boost::fusion::make_pair<example_keys::your_"
+ ) << "uint>(i)" << std::endl << " " << (
+ ", boost::fusion::make_pair<example_keys::your_char>("
+ ) << std::endl << " '0' + i" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " );" << std::endl << " }";
+ std::cout << std::endl << " }" << std::endl << " }";
+ std::cout << std::endl << " }" << std::endl;
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " MoreValues bf_vals, pre_vals, post_vals;";
+ std::cout << std::endl << (
+ " MoreKeyValues bf_d_vals, pre_d_vals, post_d_vals;"
+ ) << std::endl << " DFMoreKeyValues df_d_vals;" << std::endl;
+ std::cout << " DFMoreValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+ out_with_all(f_root);
+ std::cout << " test_associative_node<f_node_case>(" << std::endl;
+ std::cout << " f_root" << std::endl << " , bf_vals";
+ std::cout << std::endl << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl << " , df_d_vals";
+ std::cout << std::endl << " );" << std::endl << std::endl;
+
+ put(
+ boost::tree_node::dereference_iterator(f_root.find(names[2]))
+ , example_keys::your_uint()
+ , 7
+ );
+ std::cout << " put(" << std::endl << " boost::tree_node";
+ std::cout << "::dereference_iterator(f_root.find(names[2]))" << std::endl;
+ std::cout << " , example_keys::your_uint()" << std::endl;
+ std::cout << " , 7" << std::endl << " );" << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " bf_d_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " pre_d_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " post_d_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+ std::cout << " df_d_vals.clear();" << std::endl;
+ out_with_all(f_root);
+ std::cout << " test_associative_node<f_node_case>(" << std::endl;
+ std::cout << " f_root" << std::endl << " , bf_vals";
+ std::cout << std::endl << " , bf_d_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , pre_d_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , post_d_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl << " , df_d_vals";
+ std::cout << std::endl << " );" << std::endl << " }";
+ std::cout << std::endl << (
+ "#endif // BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF"
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF
+
+ std::cout << std::endl << '}' << std::endl;
+}
+
+#if defined BOOST_TYPEOF_EMULATION
+#include <boost/container_gen/selectors_typeof.hpp>
+#include <boost/container_gen/c_str_cmp_selectors_typeof.hpp>
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/ptr_container/ptr_map.hpp>
+#elif defined LIBS_TREE_NODE_EXAMPLE_ASSOCIATIVE_NODE_USE_FLAT_MAP
+#include <boost/typeof/boost/container/flat_map.hpp>
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/typeof/boost/container/map.hpp>
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#else // !defined BOOST_TYPEOF_EMULATION
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/c_str_cmp_selectors.hpp>
+#endif // BOOST_TYPEOF_EMULATION
+
+int main()
+{
+ output_copyright_and_config_preamble();
+ output_header_and_type_preamble();
+ std::cout << (
+ "#include <boost/typeof/boost/tree_node/associative_node.hpp>"
+ ) << std::endl << (
+ "#include <boost/container_gen/is_unique_assoc_selector.hpp>"
+ ) << std::endl << std::endl << "char const* names[] = {\"able\"," << (
+ " \"baker\", \"chuck\", \"dog\", \"easy\", \"fox\"};"
+ ) << std::endl << std::endl << "template <typename Select, typename Node>";
+ std::cout << std::endl << "void initialize(Node& root)" << std::endl;
+ std::cout << '{' << std::endl << (
+ " for (boost::tree_node::breadth_first_iterator<Node> itr(root);"
+ ) << " itr; ++itr)" << std::endl << " {" << std::endl << (
+ " typename Node::traits::data_type const& data = get("
+ ) << std::endl << " *itr" << std::endl;
+ std::cout << " , boost::tree_node::data_key()" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+ std::cout << " if (1 < data)" << std::endl;
+ std::cout << " {" << std::endl;
+ std::cout << " for (std::size_t i = 0; i < data; ++i)";
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " for (std::size_t j = 0; j + i < data; ++j)";
+ std::cout << std::endl << " {" << std::endl << " " << (
+ " typename Node::iterator find_itr(itr->find(names[j]));"
+ ) << std::endl << (
+ " bool not_found = find_itr == itr->end();"
+ ) << std::endl << (
+ " typename Node::iterator child_itr("
+ ) << std::endl << (
+ " itr->emplace(names[j], i)"
+ ) << std::endl << " );" << std::endl;
+ std::cout << " Node& child(" << std::endl << (
+ " boost::tree_node::dereference_iterator"
+ ) << "(child_itr)" << std::endl << " );" << std::endl;
+ std::cout << " Node const& const_child(child);";
+ std::cout << std::endl << std::endl << (
+ " if (not_found)"
+ ) << std::endl << " {" << std::endl;
+ std::cout << " typename Node::pointer child_ptr(";
+ std::cout << std::endl << (
+ " child.get_parent_ptr()"
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl;
+ std::cout << " child_ptr == &*itr" << std::endl;
+ std::cout << "// , \"Ctor not linking child to";
+ std::cout << " parent.\"" << std::endl << " );";
+ std::cout << std::endl << " BOOST_CHECK(";
+ std::cout << std::endl << (
+ " child_ptr == const_child.get_parent_ptr()"
+ ) << std::endl << (
+ "// , \"Why are these pointers different?\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " }" << std::endl;
+ std::cout << " else if (" << std::endl;
+ std::cout << " boost::";
+ std::cout << "is_unique_associative_selector<Select>::value" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " {" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl << (
+ " find_itr->first == child_itr->first"
+ ) << std::endl;
+ std::cout << "// , \"Keys do not match.\"";
+ std::cout << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl;
+ std::cout << " get(" << std::endl << " " << (
+ " boost::tree_node::dereference_iterator("
+ ) << std::endl;
+ std::cout << " find_itr" << std::endl;
+ std::cout << " )" << std::endl << (
+ " , boost::tree_node::data_key()"
+ ) << std::endl << " ) == get(" << std::endl;
+ std::cout << " const_child";
+ std::cout << std::endl << (
+ " , boost::tree_node::data_key()"
+ ) << std::endl << " )" << std::endl << (
+ "// , \"Ctor not linking parent to child.\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " }" << std::endl << " }";
+ std::cout << std::endl << " }" << std::endl << " }";
+ std::cout << std::endl << " }" << std::endl << '}' << std::endl;
+
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ output_driver<
+ boost::ptr_map_selector<boost::c_str_ordering_selector>
+ >();
+ output_driver<
+ boost::ptr_multimap_selector<boost::c_str_ordering_selector>
+ >();
+#elif defined LIBS_TREE_NODE_EXAMPLE_ASSOCIATIVE_NODE_USE_FLAT_MAP
+ output_driver<
+ boost::flat_map_selector<boost::c_str_ordering_selector>
+ >();
+ output_driver<
+ boost::flat_multimap_selector<boost::c_str_ordering_selector>
+ >();
+#else
+ output_driver<boost::map_selector<boost::mpl::true_> >();
+ output_driver<boost::multimap_selector<boost::mpl::true_> >();
+#endif
+
+ std::cout << std::endl << "#if defined BOOST_MSVC" << std::endl;
+ std::cout << " #pragma warning (pop)" << std::endl;
+ std::cout << "#endif" << std::endl << std::endl;
+ std::cout << "#if defined BOOST_TYPEOF_EMULATION" << std::endl << (
+ "#include <boost/typeof/boost/container_gen/selectors.hpp>"
+ ) << std::endl << (
+ "#include <boost/typeof/boost/container_gen/c_str_cmp_selectors.hpp>"
+ ) << std::endl << (
+ "#include <boost/typeof/boost/ptr_container/ptr_map.hpp>"
+ ) << std::endl << (
+ "#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION"
+ ) << std::endl;
+ std::cout << "#include <boost/typeof/boost/mpl/bool.hpp>" << std::endl << (
+ "#include <boost/typeof/boost/container/map.hpp>"
+ ) << std::endl;
+ std::cout << "#include <boost/typeof/boost/container/flat_map.hpp>";
+ std::cout << std::endl << "#endif" << std::endl;
+ std::cout << "#else // !defined BOOST_TYPEOF_EMULATION" << std::endl;
+ std::cout << "#include <boost/container_gen/selectors.hpp>" << std::endl;
+ std::cout << "#include <boost/container_gen/c_str_cmp_selectors.hpp>";
+ std::cout << std::endl << "#endif // BOOST_TYPEOF_EMULATION" << std::endl;
+ std::cout << std::endl << "int test_main(int argc, char** argv)";
+ std::cout << std::endl << '{' << std::endl << (
+ " test_unique_associative<"
+ ) << std::endl << (
+ " boost::ptr_map_selector<boost::c_str_ordering_selector>"
+ ) << std::endl << " >();" << std::endl << (
+ " test_multiple_associative<"
+ ) << std::endl << (
+ " boost::ptr_multimap_selector<boost::c_str_ordering_selector>"
+ ) << std::endl << " >();" << std::endl;
+ std::cout << "#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION";
+ std::cout << std::endl << " test_unique_associative<" << std::endl;
+ std::cout << " boost::map_selector<boost::mpl::true_,";
+ std::cout << "boost::c_str_ordering_selector>" << std::endl << " >();";
+ std::cout << std::endl << " test_multiple_associative<" << std::endl;
+ std::cout << " boost::multimap_selector<" << std::endl;
+ std::cout << " boost::mpl::true_" << std::endl;
+ std::cout << " , boost::c_str_ordering_selector" << std::endl;
+ std::cout << " >" << std::endl << " >();" << std::endl;
+ std::cout << " test_unique_associative<" << std::endl << (
+ " boost::flat_map_selector<boost::c_str_ordering_selector>"
+ ) << std::endl << " >();" << std::endl << (
+ " test_multiple_associative<"
+ ) << std::endl << (
+ " boost::flat_multimap_selector<boost::c_str_ordering_selector>"
+ ) << std::endl << " >();" << std::endl << "#endif" << std::endl;
+ std::cout << std::endl << " return 0;" << std::endl;
+ std::cout << '}' << std::endl << std::endl;
+
+ return 0;
+}
+
Added: sandbox/tree_node/libs/tree_node/example/binary_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/binary_node.cpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,987 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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 <iostream>
+#include <boost/config.hpp>
+#include <boost/typeof/boost/rational.hpp>
+#include <boost/typeof/boost/tree_node/binary_node.hpp>
+#include <boost/typeof/boost/tree_node/with_count.hpp>
+#include <boost/typeof/boost/tree_node/with_height.hpp>
+#include <boost/typeof/boost/tree_node/with_position.hpp>
+#include <boost/tree_node/iterator/breadth_first.hpp>
+#include <boost/tree_node/iterator/pre_order_descendant.hpp>
+#include <boost/tree_node/iterator/post_order.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/typeof/boost/tree_node/with_accumulation.hpp>
+#endif
+
+#include "type_definitions.hpp"
+#include "output_preamble.hpp"
+#include "output_functions.hpp"
+#include "iterator_functions.hpp"
+
+typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::binary_node_base_gen<>
+ >
+ >
+ , boost::rational<long>
+ >
+ DNode;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::binary_node_base_gen<>
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , boost::rational<long>
+ , void
+ , AccuHeightKey
+ >
+ ANode;
+typedef boost::tree_node::with_accumulation<
+ boost::tree_node::binary_node_base_gen<>
+ , DataMap
+ , void
+ , AccuYourUintKey
+ >
+ FNode;
+typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::binary_node_base_gen<>
+ , HeightSumKey
+ >
+ , GUITable
+ , void
+ , MinPriorityKey
+ >
+ GUINode;
+
+void out_with_it(FNode const& f_node)
+{
+ iterator_out_bf_pre_post(f_node, output_uint_char_node(), 5);
+ iterator_out_in_order(f_node, output_uint_char_node(), 5);
+ iterator_out_df(f_node, output_uint_char_tree(2, 7, true));
+}
+
+void out_with_it(GUINode const& gui_node)
+{
+ iterator_out_bf_pre_post(gui_node, output_gui_node(), 3);
+ iterator_out_in_order(gui_node, output_gui_node(), 3);
+ iterator_out_df(gui_node, output_gui_tree(2, 7, true));
+}
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+template <typename Node>
+void initialize(Node& root)
+{
+ for (boost::tree_node::breadth_first_iterator<Node> itr(root); itr; ++itr)
+ {
+ typename Node::traits::data_type const& data = get(
+ *itr
+ , boost::tree_node::data_key()
+ );
+
+ if (1 < data)
+ {
+ itr->emplace_left(data - 2);
+ itr->emplace_right(data - 1);
+ }
+ }
+}
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+void out_with_them(DNode const& d_node, ANode const& a_node)
+{
+ std::cout << std::endl << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION";
+ iterator_out_bf_pre_post(a_node, output_node<boost::mpl::true_>(), 1);
+ iterator_out_in_order(a_node, output_node<boost::mpl::true_>(), 1);
+ iterator_out_df(a_node, output_tree<boost::mpl::true_>(2, 7, true));
+ std::cout << "#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION";
+ iterator_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 7);
+ iterator_out_in_order(d_node, output_node<boost::mpl::false_>(), 7);
+ iterator_out_df(d_node, output_tree<boost::mpl::false_>(2, 7, true));
+ std::cout << "#endif // BOOST_NO_SFINAE" << std::endl;
+}
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+void out_with_it(DNode const& d_node)
+{
+ iterator_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 7);
+ iterator_out_in_order(d_node, output_node<boost::mpl::false_>(), 7);
+ iterator_out_df(d_node, output_tree<boost::mpl::false_>(2, 7, true));
+}
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+int main()
+{
+ DNode d_root(5);
+
+ initialize(d_root);
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ ANode a_root(5);
+
+ initialize(a_root);
+#endif
+
+ output_copyright_and_config_preamble();
+ output_header_and_type_preamble();
+ std::cout << "#include <boost/typeof/boost/tree_node/binary_node.hpp>";
+ std::cout << std::endl << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ std::cout << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+ std::cout << "typedef boost::tree_node::with_accumulation<" << std::endl;
+ std::cout << " boost::tree_node::with_height_base_gen<";
+ std::cout << std::endl << (
+ " boost::tree_node::with_accumulation_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_position_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_accumulation_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_count_base_gen<"
+ ) << std::endl << " boost::tree_node::";
+ std::cout << "with_accumulation_base_gen<" << std::endl << " " << (
+ " boost::tree_node::binary_node_base_gen<>"
+ ) << std::endl << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , AccuAccuKey" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , AccuCountKey" << std::endl;
+ std::cout << " >" << std::endl << " >";
+ std::cout << std::endl << " , boost::rational<long>" << std::endl;
+ std::cout << " , void" << std::endl;
+ std::cout << " , AccuHeightKey" << std::endl << " >";
+ std::cout << std::endl << " ANode;" << std::endl << (
+ "#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION"
+ ) << std::endl;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ std::cout << "typedef boost::tree_node::with_height<" << std::endl << (
+ " boost::tree_node::with_position_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_count_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::binary_node_base_gen<>"
+ ) << std::endl << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , boost::rational<long>" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " ANode;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+#endif
+ std::cout << std::endl << "typedef boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::data_key" << std::endl;
+ std::cout << " >::type" << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::height_key";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::count_key";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::accumulation_key<>";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , AccuHeightKey" << std::endl;
+ std::cout << " >::type" << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , AccuCountKey" << std::endl;
+ std::cout << " >::type" << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , AccuAccuKey" << std::endl;
+ std::cout << " >::type" << std::endl;
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " Values;" << std::endl;
+ std::cout << "typedef boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl << (
+ " boost::tree_node::traversal_state"
+ ) << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::data_key" << std::endl;
+ std::cout << " >::type" << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::height_key";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::count_key";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::accumulation_key<>";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , AccuHeightKey" << std::endl;
+ std::cout << " >::type" << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , AccuCountKey" << std::endl;
+ std::cout << " >::type" << std::endl;
+ std::cout << " , boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " ANode const" << std::endl;
+ std::cout << " , AccuAccuKey" << std::endl;
+ std::cout << " >::type" << std::endl;
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " DFValues;" << std::endl;
+ std::cout << std::endl << "int test_main(int argc, char** argv)";
+ std::cout << std::endl << '{' << std::endl << " ANode a_root(5);";
+ std::cout << std::endl << std::endl << " BOOST_CHECK(" << std::endl;
+ std::cout << " !a_root.get_parent_ptr()" << std::endl;
+ std::cout << "// , \"Parent member uninitialized.\"" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+ std::cout << " for (" << std::endl << (
+ " boost::tree_node::breadth_first_iterator<ANode> itr(a_root);"
+ ) << std::endl << " itr;" << std::endl << " ++itr";
+ std::cout << std::endl << " )" << std::endl << " {" << std::endl << (
+ " ANode::traits::data_type const& data = get("
+ ) << std::endl << " *itr" << std::endl;
+ std::cout << " , boost::tree_node::data_key()" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+ std::cout << " if (1 < data)" << std::endl << " {";
+ std::cout << std::endl << (
+ " ANode::iterator child_itr(itr->emplace_left(data - 2));"
+ ) << std::endl;
+ std::cout << " ANode::const_pointer const_child(&*child_itr);";
+ std::cout << std::endl << std::endl << " BOOST_CHECK(";
+ std::cout << std::endl << (
+ " child_itr->get_parent_ptr() == &*itr"
+ ) << std::endl << (
+ "// , \"Ctor not linking child to parent.\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl << (
+ " itr->get_left_child_ptr() == &*child_itr"
+ ) << std::endl << (
+ "// , \"Ctor not linking parent to child.\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl << " ";
+ std::cout << (
+ "child_itr->get_parent_ptr() == const_child->get_parent_ptr()"
+ ) << std::endl << (
+ "// , \"Why are these pointers different?\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl;
+ std::cout << " get(" << std::endl;
+ std::cout << " *child_itr" << std::endl;
+ std::cout << " , boost::tree_node::position_key()";
+ std::cout << std::endl << " ) == child_itr" << std::endl;
+ std::cout << "// , \"Position iterator incorrect.\"";
+ std::cout << std::endl << " );" << std::endl << std::endl;
+ std::cout << " child_itr = itr->emplace_right(data - 1);";
+ std::cout << std::endl << " const_child = &*child_itr;";
+ std::cout << std::endl << std::endl << " BOOST_CHECK(";
+ std::cout << std::endl << (
+ " child_itr->get_parent_ptr() == &*itr"
+ ) << std::endl;
+ std::cout << "// , \"Ctor not linking child to parent.\"";
+ std::cout << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl << (
+ " itr->get_right_child_ptr() == &*child_itr"
+ ) << std::endl << (
+ "// , \"Ctor not linking parent to child.\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl << " ";
+ std::cout << (
+ "child_itr->get_parent_ptr() == const_child->get_parent_ptr()"
+ ) << std::endl << (
+ "// , \"Why are these pointers different?\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl;
+ std::cout << " get(" << std::endl;
+ std::cout << " *child_itr" << std::endl;
+ std::cout << " , boost::tree_node::position_key()";
+ std::cout << std::endl << " ) == child_itr" << std::endl;
+ std::cout << "// , \"Position iterator incorrect.\"";
+ std::cout << std::endl << " );" << std::endl << " }";
+ std::cout << std::endl << " }" << std::endl << std::endl;
+ std::cout << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(" << std::endl;
+ std::cout << " a_root" << std::endl << " , bf_vals";
+ std::cout << std::endl << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl << " , in_vals";
+ std::cout << std::endl << " , df_vals" << std::endl;
+ std::cout << " );" << std::endl << " }" << std::endl;
+
+ {
+ DNode::pointer d_p(
+ d_root.get_left_child_ptr()->get_right_child_ptr()
+ );
+ DNode::iterator d_child_itr = d_p->insert_left(d_root);
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ ANode::pointer a_p(
+ a_root.get_left_child_ptr()->get_right_child_ptr()
+ );
+ ANode::iterator a_child_itr = a_p->insert_left(a_root);
+#endif
+
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " ANode a_copy(a_root);" << std::endl << (
+ " boost::tree_node::breadth_first_iterator<ANode const>"
+ ) << std::endl << (
+ " bf_root_itr(a_root), bf_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::breadth_first";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::pre_order_iterator<ANode const>"
+ ) << std::endl << (
+ " pre_root_itr(a_root), pre_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::pre_order";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::post_order_iterator<ANode const>"
+ ) << std::endl << (
+ " post_root_itr(a_root), post_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::post_order";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " post_d_root_itr(a_root), post_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::in_order_iterator<ANode const>"
+ ) << std::endl << (
+ " in_root_itr(a_root), in_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::depth_first_iterator<ANode const>"
+ ) << std::endl << (
+ " df_root_itr(a_root), df_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::depth_first";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " df_d_root_itr(a_root), df_d_copy_itr(a_copy);"
+ ) << std::endl << std::endl << (
+ " BOOST_CHECK(test_node_copies(bf_root_itr, bf_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(bf_d_root_itr, bf_d_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(pre_root_itr, pre_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(pre_d_root_itr, pre_d_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(post_root_itr, post_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(post_d_root_itr, post_d_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(in_root_itr, in_copy_itr));"
+ ) << std::endl << (
+ " BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(df_d_root_itr, df_d_copy_itr));"
+ ) << std::endl << " }" << std::endl << std::endl << " {";
+ std::cout << std::endl << " ANode::pointer p(" << std::endl << (
+ " a_root.get_left_child_ptr()->get_right_child_ptr()"
+ ) << std::endl << " );" << std::endl << (
+ " ANode::iterator a_child_itr = p->insert_left(a_root);"
+ ) << std::endl << (
+ " Values bf_vals, pre_vals, post_vals, in_vals;"
+ ) << std::endl << " DFValues df_vals;" << std::endl << (
+ " Emplacer emplacer;"
+ ) << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(" << std::endl;
+ std::cout << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , in_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+
+ d_root = *d_child_itr;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ a_root = *a_child_itr;
+#endif
+ std::cout << " a_root = *a_child_itr;" << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " in_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(" << std::endl;
+ std::cout << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , in_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+
+ *(d_p = d_root.get_right_child_ptr()) = d_root;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ *(a_p = a_root.get_right_child_ptr()) = a_root;
+#endif
+ std::cout << " *(p = a_root.get_right_child_ptr()) = a_root;";
+ std::cout << std::endl << " test_node<a_node_case>(";
+ std::cout << std::endl << " *p" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , in_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " in_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(" << std::endl;
+ std::cout << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , in_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl << " );";
+ std::cout << std::endl << " }" << std::endl << std::endl;
+ }
+
+ d_root.get_right_child_ptr()->rotate_left();
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ a_root.get_right_child_ptr()->rotate_left();
+#endif
+ std::cout << " a_root.get_right_child_ptr()->rotate_left();";
+ std::cout << std::endl << std::endl << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(" << std::endl;
+ std::cout << " a_root" << std::endl << " , bf_vals";
+ std::cout << std::endl << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl << " , in_vals";
+ std::cout << std::endl << " , df_vals" << std::endl;
+ std::cout << " );" << std::endl << " }" << std::endl;
+
+ {
+ DNode::pointer d_p(d_root.get_right_child_ptr()->get_right_child_ptr());
+ DNode::iterator d_child_itr(d_p->emplace_right());
+
+ put(*d_child_itr, boost::tree_node::data_key(), 7);
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ ANode::pointer a_p(a_root.get_right_child_ptr()->get_right_child_ptr());
+ ANode::iterator a_child_itr(a_p->emplace_right());
+
+ put(*a_child_itr, boost::tree_node::data_key(), 7);
+#endif
+ std::cout << std::endl << " {" << std::endl << " ANode" << (
+ "::pointer p(a_root.get_right_child_ptr()->get_right_child_ptr());"
+ ) << std::endl << (
+ " ANode::iterator p_child_itr(p->emplace_right());"
+ ) << std::endl << (
+ " Values bf_vals, pre_vals, post_vals, in_vals;"
+ ) << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl << std::endl;
+ std::cout << (
+ " put(*p_child_itr, boost::tree_node::data_key(), 7);"
+ );
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(" << std::endl;
+ std::cout << " a_root" << std::endl;
+ std::cout << " , bf_vals" << std::endl;
+ std::cout << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl;
+ std::cout << " , in_vals" << std::endl;
+ std::cout << " , df_vals" << std::endl << " );";
+ std::cout << std::endl << " }" << std::endl << std::endl;
+ }
+
+ d_root.get_left_child_ptr()->rotate_right();
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ a_root.get_left_child_ptr()->rotate_right();
+#endif
+ std::cout << " a_root.get_left_child_ptr()->rotate_right();";
+ std::cout << std::endl << std::endl << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(" << std::endl;
+ std::cout << " a_root" << std::endl << " , bf_vals";
+ std::cout << std::endl << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl << " , in_vals";
+ std::cout << std::endl << " , df_vals" << std::endl;
+ std::cout << " );" << std::endl;
+ std::cout << " }" << std::endl << std::endl;
+
+ d_root.get_left_child_ptr()->rotate_left();
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ a_root.get_left_child_ptr()->rotate_left();
+#endif
+ std::cout << " a_root.get_left_child_ptr()->rotate_left();";
+ std::cout << std::endl << std::endl << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(" << std::endl;
+ std::cout << " a_root" << std::endl << " , bf_vals";
+ std::cout << std::endl << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl << " , in_vals";
+ std::cout << std::endl << " , df_vals" << std::endl;
+ std::cout << " );" << std::endl << " }" << std::endl;
+
+ d_root.begin()->clear();
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ a_root.begin()->clear();
+#endif
+ std::cout << std::endl << " a_root.begin()->clear();" << std::endl;
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(" << std::endl;
+ std::cout << " a_root" << std::endl << " , bf_vals";
+ std::cout << std::endl << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl << " , in_vals";
+ std::cout << std::endl << " , df_vals" << std::endl;
+ std::cout << " );" << std::endl << " }" << std::endl;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type data = boost::tree_node::get<example_keys::your_uint>(*itr);
+
+ if (1 < data)
+ {
+ --data;
+ itr->emplace_right(
+ boost::fusion::make_pair<example_keys::your_uint>(data)
+ , boost::fusion::make_pair<example_keys::your_char>('0' + data)
+ );
+ --data;
+ itr->emplace_left(
+ boost::fusion::make_pair<example_keys::your_uint>(data)
+ , boost::fusion::make_pair<example_keys::your_char>('0' + data)
+ );
+ }
+ }
+
+ std::cout << std::endl << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION";
+ std::cout << std::endl << (
+ " typedef boost::tree_node::with_accumulation<"
+ ) << std::endl << (
+ " boost::tree_node::binary_node_base_gen<>"
+ ) << std::endl << " , DataMap" << std::endl;
+ std::cout << " , void" << std::endl;
+ std::cout << " , AccuYourUintKey" << std::endl;
+ std::cout << " >" << std::endl << " FNode;";
+ std::cout << std::endl << " typedef boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl << (
+ " boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " FNode const" << std::endl << (
+ " , example_keys::your_uint"
+ ) << std::endl << " >::type" << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " FNode const" << std::endl << (
+ " , example_keys::your_char"
+ ) << std::endl << " >::type" << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " FNode const" << std::endl << (
+ " , AccuYourUintKey"
+ ) << std::endl << " >::type" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " MoreValues;" << std::endl;
+ std::cout << " typedef boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " FNode const" << std::endl << (
+ " , example_keys::your_uint"
+ ) << std::endl << " >::type" << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " FNode const" << std::endl << (
+ " , example_keys::your_char"
+ ) << std::endl << " >::type" << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " FNode const" << std::endl << (
+ " , AccuYourUintKey"
+ ) << std::endl << " >::type" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " DFMoreValues;" << std::endl;
+ std::cout << std::endl << " FNode f_root(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::your_uint>(5)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::your_char>(\'5\')"
+ ) << std::endl << " );" << std::endl << std::endl;
+ std::cout << " for (" << std::endl << (
+ " boost::tree_node::breadth_first_iterator<FNode> itr(f_root);"
+ ) << std::endl << " itr;" << std::endl << " ++itr";
+ std::cout << std::endl << " )" << std::endl << " {" << std::endl;
+ std::cout << " boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " FNode const" << std::endl;
+ std::cout << " , example_keys::your_uint" << std::endl << (
+ " >::type data = boost::tree_node::get<example_keys::your_uint>"
+ ) << "(*itr);" << std::endl << std::endl << " if (1 < data)";
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " --data;" << std::endl;
+ std::cout << " itr->emplace_right(" << std::endl << " " << (
+ " boost::fusion::make_pair<example_keys::your_uint>(data)"
+ ) << std::endl << " , boost::fusion::make_pair<example_keys";
+ std::cout << "::your_char>(\'0\' + data)" << std::endl << " );";
+ std::cout << std::endl << " --data;" << std::endl;
+ std::cout << " itr->emplace_left(" << std::endl << " " << (
+ " boost::fusion::make_pair<example_keys::your_uint>(data)"
+ ) << std::endl << " , boost::fusion::make_pair<example_keys";
+ std::cout << "::your_char>(\'0\' + data)" << std::endl << " );";
+ std::cout << std::endl << " }" << std::endl << " }" << std::endl;
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " MoreValues bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFMoreValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+ out_with_it(f_root);
+ std::cout << " test_node<f_node_case>(" << std::endl;
+ std::cout << " f_root" << std::endl << " , bf_vals";
+ std::cout << std::endl << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl << " , in_vals";
+ std::cout << std::endl << " , df_vals" << std::endl;
+ std::cout << " );" << std::endl << " }" << std::endl;
+
+ put(
+ *f_root.get_right_child_ptr()->get_left_child_ptr()
+ , example_keys::your_uint()
+ , 7
+ );
+ std::cout << std::endl << " put(" << std::endl << (
+ " *f_root.get_right_child_ptr()->get_left_child_ptr()"
+ ) << std::endl << " , example_keys::your_uint()" << std::endl;
+ std::cout << " , 7" << std::endl << " );" << std::endl;
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " MoreValues bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFMoreValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+ out_with_it(f_root);
+ std::cout << " test_node<f_node_case>(" << std::endl;
+ std::cout << " f_root" << std::endl << " , bf_vals";
+ std::cout << std::endl << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl << " , in_vals";
+ std::cout << std::endl << " , df_vals" << std::endl;
+ std::cout << " );" << std::endl << " }" << std::endl;
+ std::cout << std::endl << " //[example__gui__binary_node__types";
+ std::cout << std::endl << (
+ " typedef boost::tree_node::with_accumulation<"
+ ) << std::endl << (
+ " boost::tree_node::with_accumulation_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::binary_node_base_gen<>"
+ ) << std::endl << " , HeightSumKey" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , GUITable" << std::endl;
+ std::cout << " , void" << std::endl;
+ std::cout << " , MinPriorityKey" << std::endl;
+ std::cout << " >" << std::endl << " GUINode;";
+ std::cout << std::endl << " typedef boost::container_gen<";
+ std::cout << std::endl << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl << (
+ " boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , example_keys::row_location"
+ ) << std::endl << " >::type" << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , example_keys::row_height"
+ ) << std::endl << " >::type" << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , example_keys::row_priority"
+ ) << std::endl << " >::type" << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , HeightSumKey"
+ ) << std::endl << " >::type" << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , MinPriorityKey"
+ ) << std::endl << " >::type" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " GUIValues;" << std::endl;
+ std::cout << " typedef boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , example_keys::row_location"
+ ) << std::endl << " >::type" << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , example_keys::row_height"
+ ) << std::endl << " >::type" << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , example_keys::row_priority"
+ ) << std::endl << " >::type" << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , HeightSumKey"
+ ) << std::endl << " >::type" << std::endl << (
+ " , boost::tree_node::result_of::value_at_key<"
+ ) << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , MinPriorityKey"
+ ) << std::endl << " >::type" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " DFGUIValues;" << std::endl;
+ std::cout << " //]" << std::endl;
+
+ GUINode gui_root(
+ boost::fusion::make_pair<example_keys::row_location>(20)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(64)
+ );
+
+ gui_root.emplace_left(
+ boost::fusion::make_pair<example_keys::row_location>(0)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(20)
+ );
+ gui_root.emplace_left(
+ boost::fusion::make_pair<example_keys::row_location>(3)
+ , boost::fusion::make_pair<example_keys::row_height>(4)
+ , boost::fusion::make_pair<example_keys::row_priority>(88)
+ )->emplace_right(
+ boost::fusion::make_pair<example_keys::row_location>(4)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(79)
+ );
+ gui_root.emplace_left(
+ boost::fusion::make_pair<example_keys::row_location>(5)
+ , boost::fusion::make_pair<example_keys::row_height>(4)
+ , boost::fusion::make_pair<example_keys::row_priority>(36)
+ )->emplace_right(
+ boost::fusion::make_pair<example_keys::row_location>(10)
+ , boost::fusion::make_pair<example_keys::row_height>(4)
+ , boost::fusion::make_pair<example_keys::row_priority>(5)
+ )->emplace_right(
+ boost::fusion::make_pair<example_keys::row_location>(12)
+ , boost::fusion::make_pair<example_keys::row_height>(4)
+ , boost::fusion::make_pair<example_keys::row_priority>(19)
+ );
+ gui_root.emplace_right(
+ boost::fusion::make_pair<example_keys::row_location>(59)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(25)
+ );
+ gui_root.emplace_right(
+ boost::fusion::make_pair<example_keys::row_location>(55)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(91)
+ )->emplace_left(
+ boost::fusion::make_pair<example_keys::row_location>(51)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(7)
+ );
+ gui_root.emplace_right(
+ boost::fusion::make_pair<example_keys::row_location>(42)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(19)
+ )->emplace_left(
+ boost::fusion::make_pair<example_keys::row_location>(22)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(54)
+ );
+ std::cout << std::endl << " //[example__gui__binary_node__build";
+ std::cout << std::endl << " GUINode gui_root("<< std::endl << (
+ " boost::fusion::make_pair<example_keys::row_location>(20)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_height>(12)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_priority>(64)"
+ ) << std::endl << " );" << std::endl;
+ std::cout << " gui_root.emplace_left(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::row_location>(0)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_height>(12)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_priority>(20)"
+ ) << std::endl << " );" << std::endl;
+ std::cout << " gui_root.emplace_left(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::row_location>(3)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_height>(4)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_priority>(88)"
+ ) << std::endl << " )->emplace_right(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::row_location>(4)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_height>(12)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_priority>(79)"
+ ) << std::endl << " );" << std::endl;
+ std::cout << " gui_root.emplace_left(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::row_location>(5)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_height>(4)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_priority>(36)"
+ ) << std::endl << " )->emplace_right(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::row_location>(10)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_height>(4)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_priority>(5)"
+ ) << std::endl << " )->emplace_right(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::row_location>(12)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_height>(4)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_priority>(19)"
+ ) << std::endl << " );" << std::endl;
+ std::cout << " gui_root.emplace_right(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::row_location>(59)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_height>(12)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_priority>(25)"
+ ) << std::endl << " );" << std::endl;
+ std::cout << " gui_root.emplace_right(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::row_location>(55)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_height>(12)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_priority>(91)"
+ ) << std::endl << " )->emplace_left(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::row_location>(51)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_height>(12)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_priority>(7)"
+ ) << std::endl << " );" << std::endl;
+ std::cout << " gui_root.emplace_right(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::row_location>(42)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_height>(12)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_priority>(19)"
+ ) << std::endl << " )->emplace_left(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::row_location>(22)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_height>(12)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::row_priority>(54)"
+ ) << std::endl << " );" << std::endl << " //]" << std::endl;
+ std::cout << std::endl << " //[example__gui__binary_node__test";
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " GUIValues bf_vals, pre_vals, post_vals, in_vals;";
+ std::cout << std::endl << " DFGUIValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+ out_with_it(gui_root);
+ std::cout << " test_node<gui_node_case>(" << std::endl;
+ std::cout << " gui_root" << std::endl << " , bf_vals";
+ std::cout << std::endl << " , pre_vals" << std::endl;
+ std::cout << " , post_vals" << std::endl << " , in_vals";
+ std::cout << std::endl << " , df_vals" << std::endl;
+ std::cout << " );" << std::endl << " }" << std::endl;
+ std::cout << " //]" << std::endl;
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ std::cout << std::endl << " return 0;" << std::endl << '}' << std::endl;
+ std::cout << std::endl << "#if defined BOOST_MSVC" << std::endl;
+ std::cout << " #pragma warning (pop)" << std::endl;
+ std::cout << "#endif" << std::endl << std::endl;
+
+ return 0;
+}
+
Added: sandbox/tree_node/libs/tree_node/example/iterator_functions.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/iterator_functions.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,83 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef LIBS_TREE_NODE_EXAMPLE_ITERATOR_FUNCTIONS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_ITERATOR_FUNCTIONS_HPP_INCLUDED
+
+#include <iostream>
+#include <boost/tree_node/iterator/breadth_first.hpp>
+#include <boost/tree_node/iterator/breadth_first_descendant.hpp>
+#include <boost/tree_node/iterator/pre_order.hpp>
+#include <boost/tree_node/iterator/pre_order_descendant.hpp>
+#include <boost/tree_node/iterator/post_order.hpp>
+#include <boost/tree_node/iterator/post_order_descendant.hpp>
+#include <boost/tree_node/iterator/depth_first.hpp>
+#include <boost/tree_node/iterator/depth_first_descendant.hpp>
+#include <boost/tree_node/iterator/in_order.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+
+template <typename NodeIterator, typename Function>
+void iterator_out(NodeIterator itr, Function f, unsigned int n)
+{
+ for (unsigned int i = 0; itr; ++itr)
+ {
+ if (!i)
+ {
+ std::cout << std::endl << " ";
+ }
+
+ f(*itr);
+
+ if (++i == n)
+ {
+ i = 0;
+ }
+ }
+}
+
+template <typename NodeIterator, typename Function>
+void iterator_out(NodeIterator itr, Function f, char const* text)
+{
+ for (std::cout << ';' << std::endl << text; itr; ++itr)
+ {
+ f(
+ boost::tree_node::dereference_iterator(itr)
+ , boost::tree_node::traversal_state(itr)
+ );
+ }
+
+ std::cout << ';' << std::endl;
+}
+
+template <typename Node, typename Function>
+void iterator_out_bf_pre_post(Node const& node, Function f, unsigned int n)
+{
+ std::cout << std::endl << " emplacer[bf_vals]";
+ iterator_out(boost::tree_node::make_breadth_first_iterator(node), f, n);
+ std::cout << ';' << std::endl << " emplacer[pre_vals]";
+ iterator_out(boost::tree_node::make_pre_order_iterator(node), f, n);
+ std::cout << ';' << std::endl << " emplacer[post_vals]";
+ iterator_out(boost::tree_node::make_post_order_iterator(node), f, n);
+}
+
+template <typename Node, typename Function>
+void iterator_out_in_order(Node const& node, Function f, unsigned int n)
+{
+ std::cout << ';' << std::endl << " emplacer[in_vals]";
+ iterator_out(boost::tree_node::make_in_order_iterator(node), f, n);
+}
+
+template <typename Node, typename Function>
+void iterator_out_df(Node const& node, Function f)
+{
+ iterator_out(
+ boost::tree_node::make_depth_first_iterator(node)
+ , f
+ , " emplacer[df_vals]"
+ );
+}
+
+#endif // LIBS_TREE_NODE_EXAMPLE_ITERATOR_FUNCTIONS_HPP_INCLUDED
+
Added: sandbox/tree_node/libs/tree_node/example/match_predicate.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/match_predicate.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,95 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef LIBS_TREE_NODE_EXAMPLE_MATCH_PREDICATE_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_MATCH_PREDICATE_HPP_INCLUDED
+
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/utility/get_iterator_second.hpp>
+#include <boost/utility/get_iterator_value_second.hpp>
+#include <boost/container_gen/is_ptr_selector.hpp>
+
+template <typename Node, typename Selector>
+class example_match_predicate
+{
+ typename Node::iterator _itr;
+
+ public:
+ explicit example_match_predicate(typename Node::iterator itr);
+
+ template <typename P>
+ bool operator()(P const& p) const;
+
+ private:
+ template <typename P>
+ bool _evaluate(P const& p, boost::mpl::true_) const;
+
+ template <typename P>
+ bool _evaluate(P const& p, boost::mpl::false_) const;
+};
+
+template <typename Node, typename Selector>
+example_match_predicate<Node,Selector>::example_match_predicate(
+ typename Node::iterator itr
+) : _itr(itr)
+{
+}
+
+template <typename Node, typename Selector>
+template <typename P>
+inline bool
+ example_match_predicate<Node,Selector>::operator()(P const& p) const
+{
+ return _evaluate(p, boost::is_ptr_selector<Selector>());
+}
+
+template <typename Node, typename Selector>
+template <typename P>
+inline bool
+ example_match_predicate<Node,Selector>::_evaluate(
+ P const& p
+ , boost::mpl::true_
+ ) const
+{
+#if defined BOOST_NO_SFINAE
+ return get(
+ boost::get_iterator_value_second(p)
+ , boost::tree_node::data_key()
+ ) == get(
+ boost::get_iterator_second(_itr)
+ , boost::tree_node::data_key()
+ );
+#else
+ return boost::tree_node::get<boost::tree_node::data_key>(
+ boost::get_iterator_value_second(p)
+ ) == boost::tree_node::get<boost::tree_node::data_key>(
+ boost::get_iterator_second(_itr)
+ );
+#endif
+}
+
+template <typename Node, typename Selector>
+template <typename P>
+inline bool
+ example_match_predicate<Node,Selector>::_evaluate(
+ P const& p
+ , boost::mpl::false_
+ ) const
+{
+#if defined BOOST_NO_SFINAE
+ return get(p.second, boost::tree_node::data_key()) == get(
+ _itr->second
+ , boost::tree_node::data_key()
+ );
+#else
+ return boost::tree_node::get<boost::tree_node::data_key>(
+ p.second
+ ) == boost::tree_node::get<boost::tree_node::data_key>(_itr->second);
+#endif
+}
+
+#endif // LIBS_TREE_NODE_EXAMPLE_MATCH_PREDICATE_HPP_INCLUDED
+
Added: sandbox/tree_node/libs/tree_node/example/nary_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/nary_node.cpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,588 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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 <iterator>
+#include <iostream>
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/typeof/boost/container_gen/selectors.hpp>
+#include <boost/typeof/boost/rational.hpp>
+#include <boost/typeof/boost/tree_node/nary_node.hpp>
+#include <boost/typeof/boost/tree_node/with_count.hpp>
+#include <boost/typeof/boost/tree_node/with_height.hpp>
+#include <boost/typeof/boost/tree_node/with_position.hpp>
+#include <boost/tree_node/iterator/breadth_first.hpp>
+#include <boost/tree_node/iterator/pre_order_descendant.hpp>
+#include <boost/tree_node/iterator/post_order.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/typeof/boost/tree_node/with_accumulation.hpp>
+#endif
+
+#include "type_definitions.hpp"
+#include "output_preamble.hpp"
+#include "output_functions.hpp"
+#include "iterator_functions.hpp"
+
+template <typename Selector, typename Node>
+void initialize(Node& root)
+{
+ for (boost::tree_node::breadth_first_iterator<Node> itr(root); itr; ++itr)
+ {
+ typename Node::traits::data_type const& data = get(
+ *itr
+ , boost::tree_node::data_key()
+ );
+
+ if (1 < data)
+ {
+ for (std::size_t i = 0; i < data; ++i)
+ {
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ if (std::tr1::is_same<Selector,boost::slistS>::value)
+ (*itr).emplace(data - 1 - i);
+ else
+#endif
+ (*itr).emplace(i);
+ }
+ }
+ }
+}
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+template <typename DNode, typename ANode>
+void out_with_them(DNode const& d_node, ANode const& a_node)
+{
+ std::cout << std::endl << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION";
+ iterator_out_bf_pre_post(a_node, output_node<boost::mpl::true_>(), 1);
+ iterator_out_df(a_node, output_tree<boost::mpl::true_>(2, 7, true));
+ std::cout << "#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION";
+ iterator_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 7);
+ iterator_out_df(d_node, output_tree<boost::mpl::false_>(2, 7, true));
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+}
+
+template <typename FNode>
+void out_with_all(FNode const& f_node)
+{
+ iterator_out_bf_pre_post(f_node, output_uint_char_node(), 5);
+ iterator_out_df(f_node, output_uint_char_tree(2, 7, true));
+}
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+template <typename DNode>
+void out_with_it(DNode const& d_node)
+{
+ iterator_out_bf_pre_post(d_node, output_node<boost::mpl::false_>(), 7);
+ iterator_out_df(d_node, output_tree<boost::mpl::false_>(2, 7, true));
+}
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+template <typename Selector>
+void example()
+{
+ typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::nary_node_base_gen<Selector>
+ >
+ >
+ , boost::rational<long>
+ >
+ DNode;
+
+ DNode d_root(5);
+
+ initialize<Selector>(d_root);
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::nary_node_base_gen<Selector>
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , boost::rational<long>
+ , void
+ , AccuHeightKey
+ >
+ ANode;
+
+ ANode a_root(5);
+
+ initialize<Selector>(a_root);
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ output_copyright_and_config_preamble();
+ std::cout << std::endl << "#include <iterator>";
+ output_header_and_type_preamble();
+ std::cout << "#include <boost/typeof/boost/tree_node/nary_node.hpp>";
+ std::cout << std::endl << std::endl << "template <typename Selector>";
+ std::cout << std::endl << "void test()" << std::endl << '{' << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ std::cout << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl << (
+ " typedef boost::tree_node::with_accumulation<"
+ ) << std::endl << " boost::tree_node::with_height_base_gen<";
+ std::cout << std::endl << (
+ " boost::tree_node::with_accumulation_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_position_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_accumulation_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_count_base_gen<"
+ ) << std::endl << " boost";
+ std::cout << "::tree_node::with_accumulation_base_gen<" << std::endl << (
+ " boost::tree_node::nary_node_base_gen"
+ ) << "<Selector>" << std::endl << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , AccuAccuKey" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , AccuCountKey" << std::endl;
+ std::cout << " >" << std::endl << " >";
+ std::cout << std::endl << " , boost::rational<long>";
+ std::cout << std::endl << " , void" << std::endl;
+ std::cout << " , AccuHeightKey" << std::endl << " >";
+ std::cout << std::endl << " ANode;" << std::endl << (
+ "#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION"
+ ) << std::endl;
+#endif // BOOST_NO_SFINAE
+ std::cout << " typedef boost::tree_node::with_height<" << std::endl << (
+ " boost::tree_node::with_position_base_gen<"
+ ) << std::endl << (
+ " boost::tree_node::with_count_base_gen<"
+ ) << std::endl << " " << (
+ "boost::tree_node::nary_node_base_gen<Selector>"
+ ) << std::endl << " >" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " , boost::rational<long>" << std::endl;
+ std::cout << " >" << std::endl;
+ std::cout << " ANode;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+#endif
+ output_container_type_preamble();
+ std::cout << std::endl << " ANode a_root(5);" << std::endl;
+ std::cout << std::endl << " BOOST_CHECK(" << std::endl;
+ std::cout << " !a_root.get_parent_ptr()" << std::endl;
+ std::cout << "// , \"Parent member uninitialized.\"" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+ std::cout << " for (" << std::endl << (
+ " boost::tree_node::breadth_first_iterator<ANode> itr(a_root);"
+ ) << std::endl << " itr;" << std::endl << " ++itr";
+ std::cout << std::endl << " )" << std::endl << " {" << std::endl << (
+ " typename ANode::traits::data_type const& data = get("
+ ) << std::endl << " *itr" << std::endl;
+ std::cout << " , boost::tree_node::data_key()" << std::endl;
+ std::cout << " );" << std::endl << std::endl;
+ std::cout << " if (1 < data)";
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " for (std::size_t i = 0; i < data; ++i)";
+ std::cout << std::endl << " {" << std::endl << (
+ " typename ANode::iterator child_itr("
+ ) << std::endl << (
+ "#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION"
+ ) << std::endl << (
+ " (std::tr1::is_same<Selector,boost::slistS>::value"
+ ) << ") ? (" << std::endl;
+ std::cout << " (*itr).emplace(data - 1 - i)";
+ std::cout << std::endl << " ) :" << std::endl;
+ std::cout << "#endif" << std::endl;
+ std::cout << " (*itr).emplace(i)";
+ std::cout << std::endl << " );" << std::endl << (
+ " typename ANode::const_pointer const_child(&*child_itr"
+ ) << ");" << std::endl << " BOOST_CHECK(" << std::endl;
+ std::cout << " (*child_itr).get_parent_ptr() == &*itr";
+ std::cout << std::endl << (
+ "// , \"Ctor not linking child to parent.\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl;
+ std::cout << " (" << std::endl << (
+ " (*child_itr).get_parent_ptr()"
+ ) << std::endl << (
+ " ) == (*const_child).get_parent_ptr()"
+ ) << std::endl;
+ std::cout << "// , \"Why are these pointers different?\"";
+ std::cout << std::endl << " );" << std::endl << std::endl;
+ std::cout << " {" << std::endl << (
+ " typename ANode::iterator c_itr = (*itr).begin();"
+ ) << std::endl << std::endl << (
+ "#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION"
+ ) << std::endl << " " << (
+ "if (!std::tr1::is_same<Selector,boost::slistS>::value)"
+ ) << std::endl << "#endif" << std::endl;
+ std::cout << " std::advance(c_itr, i);" << std::endl;
+ std::cout << " BOOST_CHECK(" << std::endl;
+ std::cout << " &*child_itr == &*c_itr" << std::endl;
+ std::cout << "// " << (
+ ", \"Ctor not linking parent to child.\""
+ ) << std::endl << " );" << std::endl;
+ std::cout << " }" << std::endl << " }";
+ std::cout << std::endl << " }" << std::endl << " }";
+ std::cout << std::endl << std::endl << " {" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(a_root, bf_vals, pre_vals,";
+ std::cout << " post_vals, df_vals);" << std::endl;
+ std::cout << " }" << std::endl << std::endl;
+
+ {
+ typename DNode::iterator d_child_itr(
+ (*(++d_root.begin())).insert(d_root)
+ );
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typename ANode::iterator a_child_itr(
+ (*(++a_root.begin())).insert(a_root)
+ );
+#endif
+
+ std::cout << " {" << std::endl << " ANode a_copy(a_root);";
+ std::cout << std::endl << (
+ " boost::tree_node::breadth_first_iterator<ANode const>"
+ ) << std::endl << (
+ " bf_root_itr(a_root), bf_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::breadth_first";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::pre_order_iterator<ANode const>"
+ ) << std::endl << (
+ " pre_root_itr(a_root), pre_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::pre_order";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::post_order_iterator<ANode const>"
+ ) << std::endl << (
+ " post_root_itr(a_root), post_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::post_order";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " post_d_root_itr(a_root), post_d_copy_itr(a_copy);"
+ ) << std::endl << (
+ " boost::tree_node::depth_first_iterator<ANode const>"
+ ) << std::endl << (
+ " df_root_itr(a_root), df_copy_itr(a_copy);"
+ ) << std::endl << " boost::tree_node::depth_first";
+ std::cout << "_descendant_iterator<ANode const>" << std::endl << (
+ " df_d_root_itr(a_root), df_d_copy_itr(a_copy);"
+ ) << std::endl << std::endl << (
+ " BOOST_CHECK(test_node_copies(bf_root_itr, bf_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(bf_d_root_itr, bf_d_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(pre_root_itr, pre_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(pre_d_root_itr, pre_d_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(post_root_itr, post_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(post_d_root_itr, post_d_copy_itr));"
+ ) << std::endl << (
+ " BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));"
+ ) << std::endl << " BOOST_CHECK(" << (
+ "test_node_copies(df_d_root_itr, df_d_copy_itr));"
+ ) << std::endl << " }" << std::endl << std::endl << " {";
+ std::cout << std::endl << (
+ " typename ANode::iterator a_child_itr("
+ ) << std::endl << " (*(++a_root.begin())).insert(a_root)";
+ std::cout << std::endl << " );" << std::endl;
+ std::cout << " Values bf_vals, pre_vals, post_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(a_root, bf_vals, pre_";
+ std::cout << "vals, post_vals, df_vals);" << std::endl << std::endl;
+
+ d_root = *d_child_itr;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ a_root = *a_child_itr;
+#endif
+ std::cout << " a_root = *a_child_itr;" << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(a_root, bf_vals, pre_";
+ std::cout << "vals, post_vals, df_vals);" << std::endl << std::endl;
+
+ d_child_itr = d_root.begin();
+ std::advance(d_child_itr, 4);
+ *(*d_child_itr).begin() = d_root;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ a_child_itr = a_root.begin();
+ std::advance(a_child_itr, 4);
+ *(*a_child_itr).begin() = a_root;
+#endif
+ }
+
+ std::cout << " a_child_itr = a_root.begin();" << std::endl;
+ std::cout << " std::advance(a_child_itr, 4);" << std::endl;
+ std::cout << " a_child_itr = (*a_child_itr).begin();" << std::endl;
+ std::cout << " *a_child_itr = a_root;" << std::endl;
+ std::cout << " test_node<a_node_case>(*a_child_itr, bf_vals,";
+ std::cout << " pre_vals, post_vals, df_vals);" << std::endl << std::endl;
+ std::cout << " bf_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(a_root, bf_vals, pre_vals,";
+ std::cout << " post_vals, df_vals);" << std::endl;
+ std::cout << " }" << std::endl << std::endl;
+
+ {
+ typename DNode::iterator d_child_itr(d_root.begin());
+
+ std::advance(d_child_itr, 3);
+ (*d_child_itr).clear();
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ {
+ typename ANode::iterator a_child_itr(a_root.begin());
+
+ std::advance(a_child_itr, 3);
+ (*a_child_itr).clear();
+ }
+#endif
+
+ std::cout << " {" << std::endl << (
+ " typename ANode::iterator a_child_itr(a_root.begin());"
+ ) << std::endl << std::endl << " std::advance(a_child_itr, 3);";
+ std::cout << std::endl << " (*a_child_itr).clear();" << std::endl;
+ std::cout << std::endl << " Values bf_vals, pre_vals, post_vals;";
+ std::cout << std::endl << " DFValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ out_with_them(d_root, a_root);
+#else
+ out_with_it(d_root);
+#endif
+ std::cout << " test_node<a_node_case>(a_root, bf_vals, pre_vals,";
+ std::cout << " post_vals, df_vals);" << std::endl << " }" << std::endl;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::nary_node_base_gen<Selector>
+ , DataMap
+ , void
+ , AccuYourUintKey
+ >
+ FNode;
+
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type data = boost::tree_node::get<example_keys::your_uint>(*itr);
+
+ if (1 < data)
+ {
+ for (unsigned int i = 0; i < data; ++i)
+ {
+ if (std::tr1::is_same<Selector,boost::slistS>::value)
+ {
+ (*itr).emplace(
+ boost::fusion::make_pair<example_keys::your_uint>(
+ data - 1 - i
+ )
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + data - 1 - i
+ )
+ );
+ }
+ else
+ {
+ (*itr).emplace(
+ boost::fusion::make_pair<example_keys::your_uint>(i)
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + i
+ )
+ );
+ }
+ }
+ }
+ }
+
+ std::cout << std::endl << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION";
+ std::cout << std::endl << (
+ " typedef boost::tree_node::with_accumulation<"
+ ) << std::endl << (
+ " boost::tree_node::nary_node_base_gen<Selector>"
+ ) << std::endl << " , DataMap" << std::endl;
+ std::cout << " , void" << std::endl;
+ std::cout << " , AccuYourUintKey" << std::endl;
+ std::cout << " >" << std::endl << " FNode;";
+ output_container_fused_type_preamble();
+ std::cout << std::endl << " FNode f_root(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::your_uint>(5)"
+ ) << std::endl << (
+ " , boost::fusion::make_pair<example_keys::your_char>(\'5\')"
+ ) << std::endl << " );" << std::endl << std::endl;
+ std::cout << " for (" << std::endl << (
+ " boost::tree_node::breadth_first_iterator<FNode> itr(f_root);"
+ ) << std::endl << " itr;" << std::endl << " ++itr";
+ std::cout << std::endl << " )" << std::endl << " {" << std::endl;
+ std::cout << " typename boost::tree_node::result_of::value_at_key<";
+ std::cout << std::endl << " FNode const" << std::endl;
+ std::cout << " , example_keys::your_uint" << std::endl << (
+ " >::type data = boost::tree_node::get<example_keys::your_uint>"
+ ) << "(*itr);" << std::endl << std::endl;
+ std::cout << " if (1 < data)" << std::endl << " {";
+ std::cout << std::endl << (
+ " for (unsigned int i = 0; i < data; ++i)"
+ ) << std::endl << " {" << std::endl << (
+ " if (std::tr1::is_same<Selector,boost::slistS>::value)"
+ ) << std::endl << " {" << std::endl;
+ std::cout << " (*itr).emplace(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::your_"
+ ) << "uint>(" << std::endl << " data - 1 - i";
+ std::cout << std::endl << " )" << std::endl << (
+ " , boost::fusion::make_pair<example_keys::your_"
+ ) << "char>(" << std::endl << (
+ " \'0\' + data - 1 - i"
+ ) << std::endl << " )" << std::endl;
+ std::cout << " );" << std::endl << " }";
+ std::cout << std::endl << " else" << std::endl;
+ std::cout << " {" << std::endl;
+ std::cout << " (*itr).emplace(" << std::endl << (
+ " boost::fusion::make_pair<example_keys::your_"
+ ) << "uint>(i)" << std::endl << " , boost::" << (
+ "fusion::make_pair<example_keys::your_char>("
+ ) << std::endl << " \'0\' + i" << std::endl;
+ std::cout << " )" << std::endl;
+ std::cout << " );" << std::endl;
+ std::cout << " }" << std::endl;
+ std::cout << " }" << std::endl;
+ std::cout << std::endl << " }" << std::endl << " }" << std::endl;
+ std::cout << std::endl << " {" << std::endl;
+ std::cout << " MoreValues bf_vals, pre_vals, post_vals;";
+ std::cout << std::endl << " DFMoreValues df_vals;" << std::endl;
+ std::cout << " Emplacer emplacer;" << std::endl;
+ out_with_all(f_root);
+ std::cout << " test_node<f_node_case>(f_root, bf_vals, pre_vals,";
+ std::cout << " post_vals, df_vals);" << std::endl << std::endl << (
+ " typename FNode::iterator f_child_itr(f_root.begin());"
+ ) << std::endl << std::endl << " std::advance(f_child_itr, 3);";
+ std::cout << std::endl << " f_child_itr = (*f_child_itr).begin();";
+ std::cout << std::endl << " std::advance(f_child_itr, 2);";
+ std::cout << std::endl << " " << (
+ "boost::tree_node::put(*f_child_itr, example_keys::your_uint(), 7);"
+ ) << std::endl << " bf_vals.clear();" << std::endl;
+ std::cout << " pre_vals.clear();" << std::endl;
+ std::cout << " post_vals.clear();" << std::endl;
+ std::cout << " df_vals.clear();" << std::endl;
+
+ {
+ typename FNode::iterator f_child_itr(f_root.begin());
+
+ std::advance(f_child_itr, 3);
+ f_child_itr = (*f_child_itr).begin();
+ std::advance(f_child_itr, 2);
+ put(*f_child_itr, example_keys::your_uint(), 7);
+ }
+
+ out_with_all(f_root);
+ std::cout << " test_node<f_node_case>(f_root, bf_vals, pre_vals,";
+ std::cout << " post_vals, df_vals);" << std::endl << " }" << std::endl;
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ std::cout << '}' << std::endl << std::endl << "#if defined BOOST_MSVC";
+ std::cout << std::endl << " #pragma warning (pop)" << std::endl;
+ std::cout << "#endif" << std::endl << std::endl;
+ std::cout << "#if defined BOOST_TYPEOF_EMULATION" << std::endl << (
+ "#include <boost/typeof/boost/ptr_container/ptr_vector.hpp>"
+ ) << std::endl << (
+ "#include <boost/typeof/boost/ptr_container/ptr_deque.hpp>"
+ ) << std::endl << (
+ "#include <boost/typeof/boost/ptr_container/ptr_list.hpp>"
+ ) << std::endl << "#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION";
+ std::cout << std::endl << (
+ "#include <boost/typeof/boost/container/vector.hpp>"
+ ) << std::endl << (
+ "#include <boost/typeof/boost/container/stable_vector.hpp>"
+ ) << std::endl << "#include <boost/typeof/boost/container/deque.hpp>";
+ std::cout << std::endl << (
+ "#include <boost/typeof/boost/container/list.hpp>"
+ ) << std::endl << "#include <boost/typeof/boost/container/slist.hpp>";
+ std::cout << std::endl << (
+ "#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION"
+ ) << std::endl << "#endif // BOOST_TYPEOF_EMULATION" << std::endl;
+ std::cout << std::endl << "int test_main(int argc, char** argv)";
+ std::cout << std::endl << '{' << std::endl;
+ std::cout << " test<boost::ptr_vecS>();" << std::endl;
+ std::cout << " test<boost::ptr_dequeS>();" << std::endl;
+ std::cout << " test<boost::ptr_listS>();" << std::endl << (
+ "#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION"
+ ) << std::endl << (
+ " test<boost::vector_selector<boost::mpl::true_> >();"
+ ) << std::endl << " test<boost::stable_vecS>();" << std::endl;
+ std::cout << " test<boost::deque_selector<boost::mpl::true_> >();";
+ std::cout << std::endl << (
+ " test<boost::list_selector<boost::mpl::true_> >();"
+ ) << std::endl << " test<boost::slistS>();" << std::endl;
+ std::cout << "#endif" << std::endl << std::endl;
+ std::cout << " return 0;" << std::endl << '}' << std::endl << std::endl;
+}
+
+#if defined BOOST_TYPEOF_EMULATION
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/ptr_container/ptr_vector.hpp>
+#else // !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/container/slist.hpp>
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // BOOST_TYPEOF_EMULATION
+
+int main()
+{
+#if defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ example<boost::ptr_vecS>();
+#else
+ example<boost::slistS>();
+#endif
+ return 0;
+}
+
Added: sandbox/tree_node/libs/tree_node/example/output_functions.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/output_functions.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,367 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef LIBS_TREE_NODE_EXAMPLE_OUTPUT_FUNCTIONS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_OUTPUT_FUNCTIONS_HPP_INCLUDED
+
+#include <iostream>
+#include <boost/mpl/bool.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/key/data.hpp>
+#include <boost/tree_node/key/count.hpp>
+#include <boost/tree_node/key/height.hpp>
+#include <boost/tree_node/key/position.hpp>
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/tree_node/key/accumulation.hpp>
+#endif
+
+#include "type_definitions.hpp"
+#include "output_tabs.hpp"
+#include <boost/assert.hpp>
+
+template <typename Node>
+void output_data_height_and_count(Node const& node, bool b)
+{
+ std::cout << get(node, boost::tree_node::data_key()).numerator();
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << get(node, boost::tree_node::height_key());
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << get(node, boost::tree_node::count_key());
+}
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+template <typename Node>
+void output_accumulations(Node const& node, bool b)
+{
+ std::cout << boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ node
+ ).numerator();
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << get(node, AccuHeightKey());
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << get(node, AccuCountKey()) << (
+ b ? ", boost::rational<long>(" : ",boost::rational<long>("
+ ) << get(node, AccuAccuKey()).numerator();
+ if (b) std::cout << ", "; else std::cout << ',';
+ std::cout << get(node, AccuAccuKey()).denominator() << ')';
+}
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+template <typename Node>
+void output_node_contents(Node const& node, bool b, boost::mpl::false_)
+{
+ output_data_height_and_count(node, b);
+}
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+template <typename Node>
+void output_node_contents(Node const& node, bool b, boost::mpl::true_)
+{
+ output_data_height_and_count(node, b);
+ if (b) std::cout << ", "; else std::cout << ',';
+ output_accumulations(node, b);
+}
+#endif
+
+template <typename IncludeAccumulations>
+struct output_node
+{
+ template <typename Node>
+ void operator()(Node const& node) const
+ {
+ std::cout << '(';
+ output_node_contents(node, true, IncludeAccumulations());
+ std::cout << ')';
+ }
+
+ template <typename Key, typename Node>
+ void operator()(Key const& key, Node const& node) const
+ {
+ std::cout << "(\"" << key << "\", ";
+ output_node_contents(node, true, IncludeAccumulations());
+ std::cout << ')';
+ }
+};
+
+template <typename IncludeAccumulations>
+class output_tree
+{
+ unsigned int _ply_limit;
+ unsigned int _tab_limit;
+ bool _b;
+
+ public:
+ output_tree(unsigned int ply_limit, unsigned int tab_limit, bool b)
+ : _ply_limit(ply_limit), _tab_limit(tab_limit), _b(b)
+ {
+ }
+
+ template <typename Node>
+ void
+ operator()(
+ Node const& node
+ , boost::tree_node::traversal_state state
+ )
+ {
+ std::cout << std::endl;
+
+ switch (state)
+ {
+ case boost::tree_node::pre_order_traversal:
+ {
+ output_tabs(++_ply_limit, _tab_limit, _b);
+ std::cout << "(boost::tree_node::pre_order_traversal,";
+ if (_b) std::cout << ' ';
+ this->_output_contents(node, IncludeAccumulations());
+ break;
+ }
+
+ case boost::tree_node::post_order_traversal:
+ {
+ output_tabs(_ply_limit, _tab_limit, _b);
+ std::cout << "(boost::tree_node::post_order_traversal,";
+ if (_b) std::cout << ' ';
+ this->_output_contents(node, IncludeAccumulations());
+ --_ply_limit;
+ break;
+ }
+
+ default:
+ {
+ BOOST_ASSERT(false);
+ }
+ }
+
+ std::cout << ')';
+ }
+
+ template <typename Key, typename Node>
+ void
+ operator()(
+ Key const& key
+ , Node const& node
+ , boost::tree_node::traversal_state state
+ )
+ {
+ std::cout << std::endl;
+
+ switch (state)
+ {
+ case boost::tree_node::pre_order_traversal:
+ {
+ output_tabs(++_ply_limit, _tab_limit, _b);
+ std::cout << "(boost::tree_node::pre_order_traversal,";
+ if (_b) std::cout << ' ';
+ std::cout << '\"' << key << (_b ? "\", " : "\",");
+ this->_output_contents(node, IncludeAccumulations());
+ break;
+ }
+
+ case boost::tree_node::post_order_traversal:
+ {
+ output_tabs(_ply_limit, _tab_limit, _b);
+ std::cout << "(boost::tree_node::post_order_traversal,";
+ if (_b) std::cout << ' ';
+ std::cout << '\"' << key << (_b ? "\", " : "\",");
+ this->_output_contents(node, IncludeAccumulations());
+ --_ply_limit;
+ break;
+ }
+
+ default:
+ {
+ BOOST_ASSERT(false);
+ }
+ }
+
+ std::cout << ')';
+ }
+
+ private:
+ template <typename Node>
+ void _output_contents(Node const& node, boost::mpl::false_)
+ {
+ output_data_height_and_count(node, _b);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ template <typename Node>
+ void _output_contents(Node const& node, boost::mpl::true_)
+ {
+ output_data_height_and_count(node, _b);
+ std::cout << ',' << std::endl;
+ output_tabs(_ply_limit, _tab_limit, _b);
+ output_accumulations(node, _b);
+ }
+#endif
+};
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+template <typename Node>
+void output_uint_and_char(Node const& node, bool b)
+{
+ std::cout << get(node, example_keys::your_uint());
+ std::cout << (b ? ", \'" : ",\'");
+ std::cout << static_cast<char>(get(node, example_keys::your_char()));
+ std::cout << (b ? "\', " : "\',");
+ std::cout << get(node, AccuYourUintKey());
+}
+
+struct output_uint_char_node
+{
+ template <typename Node>
+ void operator()(Node const& node) const
+ {
+ std::cout << '(';
+ output_uint_and_char(node, true);
+ std::cout << ')';
+ }
+
+ template <typename Key, typename Node>
+ void operator()(Key const& key, Node const& node) const
+ {
+ std::cout << "(\"" << key << "\", ";
+ output_uint_and_char(node, true);
+ std::cout << ')';
+ }
+};
+
+class output_uint_char_tree
+{
+ unsigned int _ply_limit;
+ unsigned int _tab_limit;
+ bool _b;
+
+ public:
+ output_uint_char_tree(unsigned int p, unsigned int t, bool b)
+ : _ply_limit(p), _tab_limit(t), _b(b)
+ {
+ }
+
+ template <typename Node>
+ void
+ operator()(
+ Node const& node
+ , boost::tree_node::traversal_state state
+ )
+ {
+ std::cout << std::endl;
+ output_tabs_and_state(state, _ply_limit, _tab_limit, _b);
+ output_uint_and_char(node, _b);
+ std::cout << ')';
+ }
+
+ template <typename Key, typename Node>
+ void
+ operator()(
+ Key const& key
+ , Node const& node
+ , boost::tree_node::traversal_state state
+ )
+ {
+ std::cout << std::endl;
+ output_tabs_and_state(state, _ply_limit, _tab_limit, _b);
+ std::cout << '\"' << key << "\",";
+ if (_b) std::cout << ' ';
+ output_uint_and_char(node, _b);
+ std::cout << ')';
+ }
+};
+
+template <typename Node>
+void output_gui(Node const& node, bool b)
+{
+ std::cout << get(node, example_keys::row_location());
+ std::cout << (b ? ", " : ",");
+ std::cout << get(node, example_keys::row_height());
+ std::cout << (b ? ", " : ",");
+ std::cout << get(node, example_keys::row_priority());
+ std::cout << (b ? ", " : ",");
+ std::cout << get(node, HeightSumKey());
+ std::cout << (b ? ", " : ",");
+ std::cout << get(node, MinPriorityKey());
+}
+
+struct output_gui_node
+{
+ template <typename Node>
+ void operator()(Node const& node) const
+ {
+ std::cout << '(';
+ output_gui(node, true);
+ std::cout << ')';
+ }
+
+ template <typename Key, typename Node>
+ void operator()(Key const& key, Node const& node) const
+ {
+ std::cout << "(\"" << key << "\", ";
+ output_gui(node, true);
+ std::cout << ')';
+ }
+};
+
+class output_gui_tree
+{
+ unsigned int _ply_limit;
+ unsigned int _tab_limit;
+ bool _b;
+
+ public:
+ output_gui_tree(unsigned int p, unsigned int t, bool b)
+ : _ply_limit(p), _tab_limit(t), _b(b)
+ {
+ }
+
+ template <typename Node>
+ void
+ operator()(
+ Node const& node
+ , boost::tree_node::traversal_state state
+ )
+ {
+ std::cout << std::endl;
+ output_tabs_and_state(state, _ply_limit, _tab_limit, _b);
+ output_gui(node, _b);
+ std::cout << ')';
+ }
+
+ template <typename Key, typename Node>
+ void
+ operator()(
+ Key const& key
+ , Node const& node
+ , boost::tree_node::traversal_state state
+ )
+ {
+ std::cout << std::endl;
+ output_tabs_and_state(state, _ply_limit, _tab_limit, _b);
+ std::cout << '\"' << key << "\",";
+ if (_b) std::cout << ' ';
+ output_gui(node, _b);
+ std::cout << ')';
+ }
+};
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+#if defined BOOST_TYPEOF_COMPLIANT
+
+#include <boost/typeof/typeof.hpp>
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TEMPLATE(output_node, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(output_tree, 1)
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF
+BOOST_TYPEOF_REGISTER_TYPE(output_uint_char_node)
+BOOST_TYPEOF_REGISTER_TYPE(output_uint_char_tree)
+BOOST_TYPEOF_REGISTER_TYPE(output_gui_node)
+BOOST_TYPEOF_REGISTER_TYPE(output_gui_tree)
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF
+
+#endif // BOOST_TYPEOF_COMPLIANT
+
+#endif // LIBS_TREE_NODE_EXAMPLE_OUTPUT_FUNCTIONS_HPP_INCLUDED
+
Added: sandbox/tree_node/libs/tree_node/example/output_preamble.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/output_preamble.cpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,257 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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 <iostream>
+#include <boost/tree_node/preprocessor.hpp>
+#include "output_preamble.hpp"
+
+void output_copyright_and_config_preamble()
+{
+ std::cout << "// Copyright (C) 2012-2013 Cromwell D. Enage" << std::endl;
+ std::cout << (
+ "// Distributed under the Boost Software License, Version 1.0."
+ ) << std::endl << "// (See accompanying file LICENSE_1_0.txt or copy at";
+ std::cout << std::endl << "// http://www.boost.org/LICENSE_1_0.txt)";
+ std::cout << std::endl << std::endl << "#include <boost/config.hpp>";
+ std::cout << std::endl << std::endl << "#if defined BOOST_MSVC";
+ std::cout << std::endl << " #pragma warning (push)" << std::endl;
+ std::cout << " #pragma warning (disable : 4996) // fn called w/params";
+ std::cout << " that may be unsafe" << std::endl << "#endif" << std::endl;
+}
+
+void output_header_and_type_preamble()
+{
+ std::cout << std::endl << "#include <boost/tuple/tuple.hpp>" << std::endl;
+ std::cout << "#include <boost/typeof/boost/rational.hpp>" << std::endl;
+ std::cout << "#include <boost/typeof/boost/container_gen/selectors.hpp>";
+ std::cout << std::endl << (
+ "#include <boost/container_gen/container_gen.hpp>"
+ ) << std::endl << (
+ "#include <boost/container_gen/emplace_function_gen.hpp>"
+ ) << std::endl << (
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ "#include <boost/tree_node/preprocessor.hpp>"
+ ) << std::endl << (
+#endif
+ "#include <boost/tree_node/intrinsic/value_at_key.hpp>"
+ ) << std::endl << (
+ "#include <boost/typeof/boost/tree_node/with_count.hpp>"
+ ) << std::endl << (
+ "#include <boost/typeof/boost/tree_node/with_height.hpp>"
+ ) << std::endl << (
+ "#include <boost/typeof/boost/tree_node/with_position.hpp>"
+ ) << std::endl << std::endl;
+ std::cout << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl << (
+ "#include <boost/typeof/boost/tree_node/with_accumulation.hpp>"
+ ) << std::endl << "#endif" << std::endl << std::endl;
+ std::cout << "#include \"../example/type_definitions.hpp\"" << std::endl;
+ std::cout << "#include \"iterator_functions.hpp\"" << std::endl;
+ std::cout << std::endl << (
+ "typedef boost::emplace_function_gen<boost::dequeS>::type"
+ ) << std::endl << " Emplacer;" << std::endl << std::endl;
+}
+
+void output_container_type_preamble()
+{
+ std::cout << std::endl << " typedef typename boost::container_gen<";
+ std::cout << std::endl << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl << (
+ " typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::data_key";
+ std::cout << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::height_key";
+ std::cout << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::count_key";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl << (
+ " , boost::tree_node::accumulation_key<>"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , AccuHeightKey" << std::endl;
+ std::cout << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , AccuCountKey" << std::endl;
+ std::cout << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , AccuAccuKey" << std::endl;
+ std::cout << " >::type" << std::endl;
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " Values;" << std::endl;
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::data_key";
+ std::cout << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::height_key";
+ std::cout << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , boost::tree_node::count_key";
+ std::cout << std::endl << " >::type" << std::endl;
+ std::cout << "#if defined BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl << (
+ " , boost::tree_node::accumulation_key<>"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , AccuHeightKey" << std::endl;
+ std::cout << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , AccuCountKey" << std::endl;
+ std::cout << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl;
+ std::cout << " ANode const" << std::endl;
+ std::cout << " , AccuAccuKey" << std::endl;
+ std::cout << " >::type" << std::endl;
+ std::cout << "#endif // BOOST_TREE_NODE_CAN_USE_FUSION" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " DFValues;" << std::endl;
+}
+
+void output_container_fused_type_preamble()
+{
+ std::cout << std::endl << " typedef typename boost::container_gen<";
+ std::cout << std::endl << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl << (
+ " typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " FNode const";
+ std::cout << std::endl << (
+ " , example_keys::your_uint"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " FNode const";
+ std::cout << std::endl << (
+ " , example_keys::your_char"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " FNode const";
+ std::cout << std::endl << (
+ " , AccuYourUintKey"
+ ) << std::endl << " >::type" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " MoreValues;" << std::endl;
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " FNode const";
+ std::cout << std::endl << (
+ " , example_keys::your_uint"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " FNode const";
+ std::cout << std::endl << (
+ " , example_keys::your_char"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " FNode const";
+ std::cout << std::endl << (
+ " , AccuYourUintKey"
+ ) << std::endl << " >::type" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " DFMoreValues;" << std::endl;
+}
+
+void output_container_gui_type_preamble()
+{
+ std::cout << std::endl << " typedef typename boost::container_gen<";
+ std::cout << std::endl << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl << (
+ " typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , example_keys::row_location"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , example_keys::row_height"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , example_keys::row_priority"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , HeightSumKey"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , MinPriorityKey"
+ ) << std::endl << " >::type" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " GUIValues;" << std::endl;
+ std::cout << " typedef typename boost::container_gen<" << std::endl;
+ std::cout << " boost::dequeS" << std::endl;
+ std::cout << " , boost::tuples::tuple<" << std::endl;
+ std::cout << " boost::tree_node::traversal_state";
+ std::cout << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , example_keys::row_location"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , example_keys::row_height"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , example_keys::row_priority"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , HeightSumKey"
+ ) << std::endl << " >::type" << std::endl << (
+ " , typename boost::tree_node::result_of::value_at_"
+ ) << "key<" << std::endl << " GUINode const";
+ std::cout << std::endl << (
+ " , MinPriorityKey"
+ ) << std::endl << " >::type" << std::endl;
+ std::cout << " >" << std::endl << " >::type";
+ std::cout << std::endl << " DFGUIValues;" << std::endl;
+}
+
Added: sandbox/tree_node/libs/tree_node/example/output_preamble.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/output_preamble.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,15 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef LIBS_TREE_NODE_EXAMPLE_OUTPUT_PREAMBLE_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_OUTPUT_PREAMBLE_HPP_INCLUDED
+
+void output_copyright_and_config_preamble();
+void output_header_and_type_preamble();
+void output_container_type_preamble();
+void output_container_fused_type_preamble();
+
+#endif // LIBS_TREE_NODE_EXAMPLE_OUTPUT_PREAMBLE_HPP_INCLUDED
+
Added: sandbox/tree_node/libs/tree_node/example/output_tabs.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/output_tabs.cpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,52 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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 <iostream>
+#include <algorithm>
+#include <boost/assert.hpp>
+#include "output_tabs.hpp"
+
+void output_tabs(unsigned int ply_limit, unsigned int tab_limit, bool b)
+{
+ for (unsigned int ply = 0; ply < (std::min)(ply_limit, tab_limit); ++ply)
+ {
+ std::cout << (b ? " " : " ");
+ }
+}
+
+void
+ output_tabs_and_state(
+ boost::tree_node::traversal_state state
+ , unsigned int& ply_limit
+ , unsigned int tab_limit
+ , bool b
+ )
+{
+ switch (state)
+ {
+ case boost::tree_node::pre_order_traversal:
+ {
+ output_tabs(++ply_limit, tab_limit, b);
+ std::cout << "(boost::tree_node::pre_order_traversal,";
+ if (b) std::cout << ' ';
+ break;
+ }
+
+ case boost::tree_node::post_order_traversal:
+ {
+ output_tabs(ply_limit, tab_limit, b);
+ std::cout << "(boost::tree_node::post_order_traversal,";
+ if (b) std::cout << ' ';
+ --ply_limit;
+ break;
+ }
+
+ default:
+ {
+ BOOST_ASSERT(false);
+ }
+ }
+}
+
Added: sandbox/tree_node/libs/tree_node/example/output_tabs.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/output_tabs.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,22 @@
+// Copyright (C) 2011-2013 Cromwell D. Enage
+// 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)
+
+#ifndef LIBS_TREE_NODE_EXAMPLE_OUTPUT_TABS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_OUTPUT_TABS_HPP_INCLUDED
+
+#include <boost/tree_node/traversal_state.hpp>
+
+void output_tabs(unsigned int ply_limit, unsigned int tab_limit, bool b);
+
+void
+ output_tabs_and_state(
+ boost::tree_node::traversal_state state
+ , unsigned int& ply_limit
+ , unsigned int tab_limit
+ , bool b
+ );
+
+#endif // LIBS_TREE_NODE_EXAMPLE_OUTPUT_TABS_HPP_INCLUDED
+
Added: sandbox/tree_node/libs/tree_node/example/type_definitions.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/type_definitions.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,106 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef LIBS_TREE_NODE_EXAMPLE_TYPE_DEFINITIONS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_TYPE_DEFINITIONS_HPP_INCLUDED
+
+#include <boost/tree_node/preprocessor.hpp>
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/typeof/boost/accumulators/statistics/sum_kahan.hpp>
+#include <boost/typeof/boost/accumulators/statistics/max.hpp>
+#include <boost/typeof/boost/accumulators/statistics/mean.hpp>
+#include <boost/typeof/boost/accumulators/statistics/min.hpp>
+#include <boost/typeof/boost/tree_node/key/count.hpp>
+#include <boost/typeof/boost/tree_node/key/height.hpp>
+#include <boost/typeof/boost/tree_node/key/accumulation.hpp>
+#include <boost/fusion/container/map.hpp>
+
+typedef boost::tree_node::accumulation_key<
+ boost::tree_node::count_key
+ , boost::accumulators::tag::sum_kahan
+ >
+ AccuCountKey;
+typedef boost::tree_node::accumulation_key<
+ boost::tree_node::height_key
+ , boost::accumulators::tag::max
+ , boost::mpl::false_
+ , boost::mpl::false_
+ >
+ AccuHeightKey;
+typedef boost::tree_node::accumulation_key<
+ boost::tree_node::accumulation_key<>
+ , boost::accumulators::tag::mean
+ >
+ AccuAccuKey;
+
+namespace example_keys {
+
+ struct your_uint
+ {
+ };
+
+ struct your_char
+ {
+ };
+}
+
+typedef boost::tree_node::accumulation_key<example_keys::your_uint>
+ AccuYourUintKey;
+typedef boost::fusion::map<
+ boost::fusion::pair<example_keys::your_uint,unsigned int>
+ , boost::fusion::pair<example_keys::your_char,char>
+ >
+ DataMap;
+
+//[example__gui__types
+namespace example_keys {
+
+ struct row_location
+ {
+ };
+
+ struct row_height
+ {
+ };
+
+ struct row_priority
+ {
+ };
+}
+
+typedef boost::tree_node::accumulation_key<
+ example_keys::row_height
+ , boost::accumulators::tag::sum
+ >
+ HeightSumKey;
+typedef boost::tree_node::accumulation_key<
+ example_keys::row_priority
+ , boost::accumulators::tag::min
+ >
+ MinPriorityKey;
+typedef boost::fusion::map<
+ boost::fusion::pair<example_keys::row_location,unsigned int>
+ , boost::fusion::pair<example_keys::row_height,unsigned int>
+ , boost::fusion::pair<example_keys::row_priority,unsigned int>
+ >
+ GUITable;
+//]
+
+#if defined BOOST_TYPEOF_COMPLIANT
+#include <boost/typeof/typeof.hpp>
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(example_keys::your_uint)
+BOOST_TYPEOF_REGISTER_TYPE(example_keys::your_char)
+BOOST_TYPEOF_REGISTER_TYPE(example_keys::row_location)
+BOOST_TYPEOF_REGISTER_TYPE(example_keys::row_height)
+BOOST_TYPEOF_REGISTER_TYPE(example_keys::row_priority)
+#endif
+
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+#endif // LIBS_TREE_NODE_EXAMPLE_TYPE_DEFINITIONS_HPP_INCLUDED
+
Added: sandbox/tree_node/libs/tree_node/test/associative_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/test/associative_node.cpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,13326 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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.hpp>
+
+#if defined BOOST_MSVC
+ #pragma warning (push)
+ #pragma warning (disable : 4996) // fn called w/params that may be unsafe
+#endif
+
+#include <boost/tuple/tuple.hpp>
+#include <boost/typeof/boost/rational.hpp>
+#include <boost/typeof/boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/emplace_function_gen.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/intrinsic/value_at_key.hpp>
+#include <boost/typeof/boost/tree_node/with_count.hpp>
+#include <boost/typeof/boost/tree_node/with_height.hpp>
+#include <boost/typeof/boost/tree_node/with_position.hpp>
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/typeof/boost/tree_node/with_accumulation.hpp>
+#endif
+
+#include "../example/type_definitions.hpp"
+#include "iterator_functions.hpp"
+
+typedef boost::emplace_function_gen<boost::dequeS>::type
+ Emplacer;
+
+#include <boost/typeof/boost/tree_node/associative_node.hpp>
+#include <boost/container_gen/is_unique_assoc_selector.hpp>
+
+char const* names[] = {"able", "baker", "chuck", "dog", "easy", "fox"};
+
+template <typename Select, typename Node>
+void initialize(Node& root)
+{
+ for (boost::tree_node::breadth_first_iterator<Node> itr(root); itr; ++itr)
+ {
+ typename Node::traits::data_type const& data = get(
+ *itr
+ , boost::tree_node::data_key()
+ );
+
+ if (1 < data)
+ {
+ for (std::size_t i = 0; i < data; ++i)
+ {
+ for (std::size_t j = 0; j + i < data; ++j)
+ {
+ typename Node::iterator find_itr(itr->find(names[j]));
+ bool not_found = find_itr == itr->end();
+ typename Node::iterator child_itr(
+ itr->emplace(names[j], i)
+ );
+ Node& child(
+ boost::tree_node::dereference_iterator(child_itr)
+ );
+ Node const& const_child(child);
+
+ if (not_found)
+ {
+ typename Node::pointer child_ptr(
+ child.get_parent_ptr()
+ );
+ BOOST_CHECK(
+ child_ptr == &*itr
+// , "Ctor not linking child to parent."
+ );
+ BOOST_CHECK(
+ child_ptr == const_child.get_parent_ptr()
+// , "Why are these pointers different?"
+ );
+ }
+ else if (
+ boost::is_unique_associative_selector<Select>::value
+ )
+ {
+ BOOST_CHECK(
+ find_itr->first == child_itr->first
+// , "Keys do not match."
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(
+ find_itr
+ )
+ , boost::tree_node::data_key()
+ ) == get(
+ const_child
+ , boost::tree_node::data_key()
+ )
+// , "Ctor not linking parent to child."
+ );
+ }
+ }
+ }
+ }
+ }
+}
+
+template <typename Selector>
+void test_unique_associative()
+{
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::associative_node_base_gen<Selector>
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , char const*
+ , boost::rational<long>
+ , AccuHeightKey
+ >
+ ANode;
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::associative_node_base_gen<Selector>
+ >
+ >
+ , char const*
+ , boost::rational<long>
+ >
+ ANode;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::data_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::height_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::count_key
+ >::type
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::accumulation_key<>
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuHeightKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuCountKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuAccuKey
+ >::type
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ >
+ >::type
+ Values;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::data_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::height_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::count_key
+ >::type
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::accumulation_key<>
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuHeightKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuCountKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuAccuKey
+ >::type
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ >
+ >::type
+ DFValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename ANode::traits::key_type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::data_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::height_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::count_key
+ >::type
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::accumulation_key<>
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuHeightKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuCountKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuAccuKey
+ >::type
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ >
+ >::type
+ KeyValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename ANode::traits::key_type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::data_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::height_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::count_key
+ >::type
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::accumulation_key<>
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuHeightKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuCountKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuAccuKey
+ >::type
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ >
+ >::type
+ DFKeyValues;
+
+ ANode a_root(5);
+
+ BOOST_CHECK(
+ !a_root.get_parent_ptr()
+// , "Parent member uninitialized."
+ );
+
+ initialize<Selector>(a_root);
+
+ {
+ Values bf_vals, pre_vals, post_vals;
+ KeyValues bf_d_vals, pre_d_vals, post_d_vals;
+ DFValues df_vals;
+ DFKeyValues df_d_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_vals]
+ (5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6));
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,1,6,
+ 5,0,11,boost::rational<long>(5,6))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,1,6,
+ 5,0,11,boost::rational<long>(5,6));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 1, 6)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 1, 6)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(5, 1, 6);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 1, 6);
+#endif // BOOST_NO_SFINAE
+ test_associative_node<a_node_case>(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ }
+ {
+ ANode a_copy(a_root);
+ boost::tree_node::breadth_first_iterator<ANode const>
+ bf_root_itr(a_root), bf_copy_itr(a_copy);
+ boost::tree_node::breadth_first_descendant_iterator<ANode const>
+ bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);
+ boost::tree_node::pre_order_iterator<ANode const>
+ pre_root_itr(a_root), pre_copy_itr(a_copy);
+ boost::tree_node::pre_order_descendant_iterator<ANode const>
+ pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);
+ boost::tree_node::post_order_iterator<ANode const>
+ post_root_itr(a_root), post_copy_itr(a_copy);
+ boost::tree_node::post_order_descendant_iterator<ANode const>
+ post_d_root_itr(a_root), post_d_copy_itr(a_copy);
+ boost::tree_node::depth_first_iterator<ANode const>
+ df_root_itr(a_root), df_copy_itr(a_copy);
+ boost::tree_node::depth_first_descendant_iterator<ANode const>
+ df_d_root_itr(a_root), df_d_copy_itr(a_copy);
+
+ BOOST_CHECK(test_node_copies(bf_root_itr, bf_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(bf_d_root_itr, bf_d_copy_itr)
+ );
+ BOOST_CHECK(test_node_copies(pre_root_itr, pre_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(pre_d_root_itr, pre_d_copy_itr)
+ );
+ BOOST_CHECK(test_node_copies(post_root_itr, post_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(post_d_root_itr, post_d_copy_itr)
+ );
+ BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(df_d_root_itr, df_d_copy_itr)
+ );
+ }
+
+ {
+ typename ANode::iterator a_child_itr(
+ boost::tree_node::dereference_iterator(
+ a_root.find(names[2])
+ ).insert(names[5], a_root)
+ );
+ Values bf_vals, pre_vals, post_vals;
+ KeyValues bf_d_vals, pre_d_vals, post_d_vals;
+ DFValues df_vals;
+ DFKeyValues df_d_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 3, 12, 10, 2, 34, boost::rational<long>(5, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 2, 7, 5, 1, 18, boost::rational<long>(10, 7))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_vals]
+ (5, 3, 12, 10, 2, 34, boost::rational<long>(5, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 2, 7, 5, 1, 18, boost::rational<long>(10, 7))
+ (5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ (0, 2, 7, 5, 1, 18, boost::rational<long>(10, 7))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 3, 12, 10, 2, 34, boost::rational<long>(5, 3));
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 2, 7, 5, 1, 18, boost::rational<long>(10, 7))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("fox", 5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 2, 7, 5, 1, 18, boost::rational<long>(10, 7))
+ ("fox", 5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("fox", 5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ ("chuck", 0, 2, 7, 5, 1, 18, boost::rational<long>(10, 7))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,2,7,
+ 5,1,18,boost::rational<long>(10,7))
+ (boost::tree_node::pre_order_traversal,"fox",5,1,6,
+ 5,0,11,boost::rational<long>(5,6))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"fox",5,1,6,
+ 5,0,11,boost::rational<long>(5,6))
+ (boost::tree_node::post_order_traversal,"chuck",0,2,7,
+ 5,1,18,boost::rational<long>(10,7))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,3,12,
+ 10,2,34,boost::rational<long>(5,3))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,2,7,
+ 5,1,18,boost::rational<long>(10,7))
+ (boost::tree_node::pre_order_traversal,5,1,6,
+ 5,0,11,boost::rational<long>(5,6))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,1,6,
+ 5,0,11,boost::rational<long>(5,6))
+ (boost::tree_node::post_order_traversal,0,2,7,
+ 5,1,18,boost::rational<long>(10,7))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,3,12,
+ 10,2,34,boost::rational<long>(5,3));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 3, 12)(0, 0, 1)(0, 0, 1)(0, 2, 7)(0, 0, 1)(0, 0, 1)
+ (5, 1, 6)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 3, 12)(0, 0, 1)(0, 0, 1)(0, 2, 7)(5, 1, 6)(0, 0, 1)
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)
+ (0, 0, 1)(5, 1, 6)(0, 2, 7)(0, 0, 1)(0, 0, 1)(5, 3, 12);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 2, 7)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1)("fox", 5, 1, 6)
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 2, 7)
+ ("fox", 5, 1, 6)("able", 0, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("dog", 0, 0, 1)("easy", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 0, 0, 1)("dog", 0, 0, 1)
+ ("easy", 0, 0, 1)("fox", 5, 1, 6)("chuck", 0, 2, 7)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 2, 7)
+ (boost::tree_node::pre_order_traversal, "fox", 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "fox", 5, 1, 6)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 2, 7)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 2, 7)
+ (boost::tree_node::pre_order_traversal, 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 1, 6)
+ (boost::tree_node::post_order_traversal, 0, 2, 7)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 3, 12);
+#endif // BOOST_NO_SFINAE
+ test_associative_node<a_node_case>(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ a_root = boost::tree_node::dereference_iterator(a_child_itr);
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_vals]
+ (5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6));
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,1,6,
+ 5,0,11,boost::rational<long>(5,6))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,1,6,
+ 5,0,11,boost::rational<long>(5,6));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 1, 6)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 1, 6)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(5, 1, 6);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 1, 6);
+#endif // BOOST_NO_SFINAE
+ test_associative_node<a_node_case>(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ a_child_itr = a_root.find(names[2]);
+ boost::tree_node::dereference_iterator(a_child_itr) = a_root;
+ test_associative_node<a_node_case>(
+ boost::tree_node::dereference_iterator(a_child_itr)
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 2, 11, 10, 1, 26, boost::rational<long>(15, 11))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_vals]
+ (5, 2, 11, 10, 1, 26, boost::rational<long>(15, 11))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 2, 11, 10, 1, 26, boost::rational<long>(15, 11));
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 5, 1, 6, 5, 0, 11, boost::rational<long>(5, 6))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",5,1,6,
+ 5,0,11,boost::rational<long>(5,6))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",5,1,6,
+ 5,0,11,boost::rational<long>(5,6))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,2,11,
+ 10,1,26,boost::rational<long>(15,11))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,5,1,6,
+ 5,0,11,boost::rational<long>(5,6))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,1,6,
+ 5,0,11,boost::rational<long>(5,6))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,2,11,
+ 10,1,26,boost::rational<long>(15,11));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 2, 11)(0, 0, 1)(0, 0, 1)(5, 1, 6)(0, 0, 1)(0, 0, 1)
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 2, 11)(0, 0, 1)(0, 0, 1)(5, 1, 6)(0, 0, 1)(0, 0, 1)
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)
+ (0, 0, 1)(5, 1, 6)(0, 0, 1)(0, 0, 1)(5, 2, 11);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 5, 1, 6)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1)("able", 0, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 0, 0, 1)("dog", 0, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 5, 1, 6)
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 0, 0, 1)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1)("dog", 0, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 0, 0, 1)("dog", 0, 0, 1)
+ ("easy", 0, 0, 1)("chuck", 5, 1, 6)("dog", 0, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 2, 11)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 1, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 2, 11);
+#endif // BOOST_NO_SFINAE
+ test_associative_node<a_node_case>(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ BOOST_CHECK(
+ boost::tree_node::dereference_iterator(
+ a_child_itr
+ ).erase(names[1]) == 1
+ );
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 2, 10, 10, 1, 23, boost::rational<long>(3, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 1, 5, 5, 0, 9, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_vals]
+ (5, 2, 10, 10, 1, 23, boost::rational<long>(3, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 1, 5, 5, 0, 9, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 1, 5, 5, 0, 9, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 2, 10, 10, 1, 23, boost::rational<long>(3, 2));
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 5, 1, 5, 5, 0, 9, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 5, 1, 5, 5, 0, 9, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 5, 1, 5, 5, 0, 9, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",5,1,5,
+ 5,0,9,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",5,1,5,
+ 5,0,9,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,2,10,
+ 10,1,23,boost::rational<long>(3,2))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,5,1,5,
+ 5,0,9,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,1,5,
+ 5,0,9,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,2,10,
+ 10,1,23,boost::rational<long>(3,2));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 2, 10)(0, 0, 1)(0, 0, 1)(5, 1, 5)(0, 0, 1)(0, 0, 1)
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 2, 10)(0, 0, 1)(0, 0, 1)(5, 1, 5)(0, 0, 1)(0, 0, 1)
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)(0, 0, 1)
+ (5, 1, 5)(0, 0, 1)(0, 0, 1)(5, 2, 10);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 5, 1, 5)
+ ("dog", 0, 0, 1)("easy", 0, 0, 1)("able", 0, 0, 1)
+ ("chuck", 0, 0, 1)("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("chuck", 5, 1, 5)
+ ("able", 0, 0, 1)("chuck", 0, 0, 1)("dog", 0, 0, 1)
+ ("easy", 0, 0, 1)("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("chuck", 0, 0, 1)("dog", 0, 0, 1)("easy", 0, 0, 1)
+ ("chuck", 5, 1, 5)("dog", 0, 0, 1)("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 5, 1, 5)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 5, 1, 5)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 5, 1, 5)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 1, 5)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 2, 10);
+#endif // BOOST_NO_SFINAE
+ test_associative_node<a_node_case>(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::associative_node_base_gen<Selector>
+ , char const*
+ , DataMap
+ , AccuYourUintKey
+ >
+ FNode;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_char
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , AccuYourUintKey
+ >::type
+ >
+ >::type
+ MoreValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_char
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , AccuYourUintKey
+ >::type
+ >
+ >::type
+ DFMoreValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename FNode::traits::key_type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_char
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , AccuYourUintKey
+ >::type
+ >
+ >::type
+ MoreKeyValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename FNode::traits::key_type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_char
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , AccuYourUintKey
+ >::type
+ >
+ >::type
+ DFMoreKeyValues;
+
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type data = boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::tree_node::dereference_iterator(itr));
+
+ if (1 < data)
+ {
+ for (unsigned int i = 0; i < data; ++i)
+ {
+ for (std::size_t j = 0; j + i < data; ++j)
+ {
+ itr->emplace(
+ names[j]
+ , boost::fusion::make_pair<example_keys::your_uint>(i)
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + i
+ )
+ );
+ }
+ }
+ }
+ }
+
+ {
+ MoreValues bf_vals, pre_vals, post_vals;
+ MoreKeyValues bf_d_vals, pre_d_vals, post_d_vals;
+ DFMoreKeyValues df_d_vals;
+ DFMoreValues df_vals;
+ Emplacer emplacer;
+
+ emplacer[bf_vals]
+ (5, '5', 5)(0, '0', 0)(0, '0', 0)(0, '0', 0)(0, '0', 0)
+ (0, '0', 0);
+ emplacer[pre_vals]
+ (5, '5', 5)(0, '0', 0)(0, '0', 0)(0, '0', 0)(0, '0', 0)
+ (0, '0', 0);
+ emplacer[post_vals]
+ (0, '0', 0)(0, '0', 0)(0, '0', 0)(0, '0', 0)(0, '0', 0)
+ (5, '5', 5);
+ emplacer[bf_d_vals]
+ ("able", 0, '0', 0)("baker", 0, '0', 0)("chuck", 0, '0', 0)
+ ("dog", 0, '0', 0)("easy", 0, '0', 0);
+ emplacer[pre_d_vals]
+ ("able", 0, '0', 0)("baker", 0, '0', 0)("chuck", 0, '0', 0)
+ ("dog", 0, '0', 0)("easy", 0, '0', 0);
+ emplacer[post_d_vals]
+ ("able", 0, '0', 0)("baker", 0, '0', 0)("chuck", 0, '0', 0)
+ ("dog", 0, '0', 0)("easy", 0, '0', 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"dog",0,'0',0)
+ (boost::tree_node::post_order_traversal,"dog",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"easy",0,'0',0)
+ (boost::tree_node::post_order_traversal,"easy",0,'0',0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,'5',5)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,5,'5',5);
+ test_associative_node<f_node_case>(
+ f_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ put(
+ boost::tree_node::dereference_iterator(f_root.find(names[2]))
+ , example_keys::your_uint()
+ , 7
+ );
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+ emplacer[bf_vals]
+ (5, '5', 12)(0, '0', 0)(0, '0', 0)(7, '0', 7)(0, '0', 0)
+ (0, '0', 0);
+ emplacer[pre_vals]
+ (5, '5', 12)(0, '0', 0)(0, '0', 0)(7, '0', 7)(0, '0', 0)
+ (0, '0', 0);
+ emplacer[post_vals]
+ (0, '0', 0)(0, '0', 0)(7, '0', 7)(0, '0', 0)(0, '0', 0)
+ (5, '5', 12);
+ emplacer[bf_d_vals]
+ ("able", 0, '0', 0)("baker", 0, '0', 0)("chuck", 7, '0', 7)
+ ("dog", 0, '0', 0)("easy", 0, '0', 0);
+ emplacer[pre_d_vals]
+ ("able", 0, '0', 0)("baker", 0, '0', 0)("chuck", 7, '0', 7)
+ ("dog", 0, '0', 0)("easy", 0, '0', 0);
+ emplacer[post_d_vals]
+ ("able", 0, '0', 0)("baker", 0, '0', 0)("chuck", 7, '0', 7)
+ ("dog", 0, '0', 0)("easy", 0, '0', 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"chuck",7,'0',7)
+ (boost::tree_node::post_order_traversal,"chuck",7,'0',7)
+ (boost::tree_node::pre_order_traversal,"dog",0,'0',0)
+ (boost::tree_node::post_order_traversal,"dog",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"easy",0,'0',0)
+ (boost::tree_node::post_order_traversal,"easy",0,'0',0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,'5',12)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,7,'0',7)
+ (boost::tree_node::post_order_traversal,7,'0',7)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,5,'5',12);
+ test_associative_node<f_node_case>(
+ f_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF
+}
+
+template <typename Selector>
+void test_multiple_associative()
+{
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::associative_node_base_gen<Selector>
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , char const*
+ , boost::rational<long>
+ , AccuHeightKey
+ >
+ ANode;
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::associative_node_base_gen<Selector>
+ >
+ >
+ , char const*
+ , boost::rational<long>
+ >
+ ANode;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::data_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::height_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::count_key
+ >::type
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::accumulation_key<>
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuHeightKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuCountKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuAccuKey
+ >::type
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ >
+ >::type
+ Values;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::data_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::height_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::count_key
+ >::type
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::accumulation_key<>
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuHeightKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuCountKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuAccuKey
+ >::type
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ >
+ >::type
+ DFValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename ANode::traits::key_type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::data_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::height_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::count_key
+ >::type
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::accumulation_key<>
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuHeightKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuCountKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuAccuKey
+ >::type
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ >
+ >::type
+ KeyValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename ANode::traits::key_type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::data_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::height_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::count_key
+ >::type
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::accumulation_key<>
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuHeightKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuCountKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuAccuKey
+ >::type
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ >
+ >::type
+ DFKeyValues;
+
+ ANode a_root(5);
+
+ BOOST_CHECK(
+ !a_root.get_parent_ptr()
+// , "Parent member uninitialized."
+ );
+
+ initialize<Selector>(a_root);
+
+ {
+ Values bf_vals, pre_vals, post_vals;
+ KeyValues bf_d_vals, pre_d_vals, post_d_vals;
+ DFValues df_vals;
+ DFKeyValues df_d_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_vals]
+ (5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68));
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,4,68,
+ 55,3,211,boost::rational<long>(145,68))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,4,68,
+ 55,3,211,boost::rational<long>(145,68));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 4, 68)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 4, 68)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(5, 4, 68);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("able", 4, 3, 26)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("baker", 2, 1, 4)("baker", 3, 2, 10)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("chuck", 2, 1, 4)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 4, 3, 26)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 3, 2, 10)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 2, 1, 4)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("dog", 0, 0, 1)("able", 4, 3, 26)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 3, 2, 10)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 2, 1, 4)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 68)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 4, 68);
+#endif // BOOST_NO_SFINAE
+ test_associative_node<a_node_case>(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ }
+ {
+ ANode a_copy(a_root);
+ boost::tree_node::breadth_first_iterator<ANode const>
+ bf_root_itr(a_root), bf_copy_itr(a_copy);
+ boost::tree_node::breadth_first_descendant_iterator<ANode const>
+ bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);
+ boost::tree_node::pre_order_iterator<ANode const>
+ pre_root_itr(a_root), pre_copy_itr(a_copy);
+ boost::tree_node::pre_order_descendant_iterator<ANode const>
+ pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);
+ boost::tree_node::post_order_iterator<ANode const>
+ post_root_itr(a_root), post_copy_itr(a_copy);
+ boost::tree_node::post_order_descendant_iterator<ANode const>
+ post_d_root_itr(a_root), post_d_copy_itr(a_copy);
+ boost::tree_node::depth_first_iterator<ANode const>
+ df_root_itr(a_root), df_copy_itr(a_copy);
+ boost::tree_node::depth_first_descendant_iterator<ANode const>
+ df_d_root_itr(a_root), df_d_copy_itr(a_copy);
+
+ BOOST_CHECK(test_node_copies(bf_root_itr, bf_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(bf_d_root_itr, bf_d_copy_itr)
+ );
+ BOOST_CHECK(test_node_copies(pre_root_itr, pre_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(pre_d_root_itr, pre_d_copy_itr)
+ );
+ BOOST_CHECK(test_node_copies(post_root_itr, post_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(post_d_root_itr, post_d_copy_itr)
+ );
+ BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));
+ BOOST_CHECK(
+ test_associative_node_copies(df_d_root_itr, df_d_copy_itr)
+ );
+ }
+
+ {
+ typename ANode::iterator a_child_itr(
+ boost::tree_node::dereference_iterator(
+ a_root.find(names[2])
+ ).insert(names[5], a_root)
+ );
+ Values bf_vals, pre_vals, post_vals;
+ KeyValues bf_d_vals, pre_d_vals, post_d_vals;
+ DFValues df_vals;
+ DFKeyValues df_d_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 6, 136, 110, 5, 558, boost::rational<long>(50, 17))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 5, 69, 55, 4, 280, boost::rational<long>(200, 69))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_vals]
+ (5, 6, 136, 110, 5, 558, boost::rational<long>(50, 17))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 5, 69, 55, 4, 280, boost::rational<long>(200, 69))
+ (5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ (0, 5, 69, 55, 4, 280, boost::rational<long>(200, 69))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 6, 136, 110, 5, 558, boost::rational<long>(50, 17));
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 5, 69, 55, 4, 280, boost::rational<long>(200, 69))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("fox", 5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 5, 69, 55, 4, 280, boost::rational<long>(200, 69))
+ ("fox", 5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("fox", 5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ ("chuck", 0, 5, 69, 55, 4, 280, boost::rational<long>(200, 69))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"chuck",0,5,69,
+ 55,4,280,boost::rational<long>(200,69))
+ (boost::tree_node::pre_order_traversal,"fox",5,4,68,
+ 55,3,211,boost::rational<long>(145,68))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"fox",5,4,68,
+ 55,3,211,boost::rational<long>(145,68))
+ (boost::tree_node::post_order_traversal,"chuck",0,5,69,
+ 55,4,280,boost::rational<long>(200,69))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,6,136,
+ 110,5,558,boost::rational<long>(50,17))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,5,69,
+ 55,4,280,boost::rational<long>(200,69))
+ (boost::tree_node::pre_order_traversal,5,4,68,
+ 55,3,211,boost::rational<long>(145,68))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,4,68,
+ 55,3,211,boost::rational<long>(145,68))
+ (boost::tree_node::post_order_traversal,0,5,69,
+ 55,4,280,boost::rational<long>(200,69))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,6,136,
+ 110,5,558,boost::rational<long>(50,17));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 6, 136)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 5, 69)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(5, 4, 68)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 6, 136)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 5, 69)
+ (5, 4, 68)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(5, 4, 68)
+ (0, 5, 69)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(5, 6, 136);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("able", 4, 3, 26)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("baker", 2, 1, 4)("baker", 3, 2, 10)
+ ("chuck", 0, 5, 69)("chuck", 1, 0, 1)("chuck", 2, 1, 4)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("fox", 5, 4, 68)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 3, 2, 10)
+ ("able", 4, 3, 26)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("baker", 3, 2, 10)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("chuck", 2, 1, 4)("dog", 0, 0, 1)
+ ("dog", 1, 0, 1)("easy", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 3, 2, 10)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 4, 3, 26)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 0, 5, 69)("fox", 5, 4, 68)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 4, 3, 26)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1)("chuck", 1, 0, 1)("chuck", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 3, 2, 10)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 2, 1, 4)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("dog", 0, 0, 1)("able", 4, 3, 26)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 3, 2, 10)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 3, 2, 10)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 2, 1, 4)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("able", 4, 3, 26)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("baker", 3, 2, 10)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 2, 1, 4)("dog", 0, 0, 1)
+ ("dog", 1, 0, 1)("easy", 0, 0, 1)("fox", 5, 4, 68)
+ ("chuck", 0, 5, 69)("chuck", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("chuck", 2, 1, 4)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 5, 69)
+ (boost::tree_node::pre_order_traversal, "fox", 5, 4, 68)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "fox", 5, 4, 68)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 5, 69)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 136)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 5, 69)
+ (boost::tree_node::pre_order_traversal, 5, 4, 68)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 4, 68)
+ (boost::tree_node::post_order_traversal, 0, 5, 69)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 6, 136);
+#endif // BOOST_NO_SFINAE
+ test_associative_node<a_node_case>(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ a_root = boost::tree_node::dereference_iterator(a_child_itr);
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_vals]
+ (5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68));
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,4,68,
+ 55,3,211,boost::rational<long>(145,68))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,4,68,
+ 55,3,211,boost::rational<long>(145,68));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 4, 68)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 4, 68)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(5, 4, 68);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("able", 4, 3, 26)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("baker", 2, 1, 4)("baker", 3, 2, 10)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("chuck", 2, 1, 4)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 4, 3, 26)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 3, 2, 10)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 2, 1, 4)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("dog", 0, 0, 1)("able", 4, 3, 26)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 3, 2, 10)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 2, 1, 4)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 68)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 4, 68);
+#endif // BOOST_NO_SFINAE
+ test_associative_node<a_node_case>(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ a_child_itr = boost::begin(a_root.equal_range(names[2]));
+
+ while (boost::tree_node::dereference_iterator(a_child_itr).empty())
+ {
+ ++a_child_itr;
+ }
+
+ a_child_itr = boost::begin(
+ boost::tree_node::dereference_iterator(
+ a_child_itr
+ ).equal_range(names[1])
+ );
+ boost::tree_node::dereference_iterator(a_child_itr) = a_root;
+ test_associative_node<a_node_case>(
+ boost::tree_node::dereference_iterator(a_child_itr)
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 6, 135, 110, 5, 555, boost::rational<long>(80, 27))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 5, 71, 58, 4, 284, boost::rational<long>(204, 71))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_vals]
+ (5, 6, 135, 110, 5, 555, boost::rational<long>(80, 27))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 5, 71, 58, 4, 284, boost::rational<long>(204, 71))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ (2, 5, 71, 58, 4, 284, boost::rational<long>(204, 71))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 6, 135, 110, 5, 555, boost::rational<long>(80, 27));
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 5, 71, 58, 4, 284, boost::rational<long>(204, 71))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 5, 71, 58, 4, 284, boost::rational<long>(204, 71))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 5, 4, 68, 55, 3, 211, boost::rational<long>(145, 68))
+ ("chuck", 2, 5, 71, 58, 4, 284, boost::rational<long>(204, 71))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",2,5,71,
+ 58,4,284,boost::rational<long>(204,71))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",5,4,68,
+ 55,3,211,boost::rational<long>(145,68))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",5,4,68,
+ 55,3,211,boost::rational<long>(145,68))
+ (boost::tree_node::post_order_traversal,"chuck",2,5,71,
+ 58,4,284,boost::rational<long>(204,71))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,6,135,
+ 110,5,555,boost::rational<long>(80,27))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,5,71,
+ 58,4,284,boost::rational<long>(204,71))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,5,4,68,
+ 55,3,211,boost::rational<long>(145,68))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,4,68,
+ 55,3,211,boost::rational<long>(145,68))
+ (boost::tree_node::post_order_traversal,2,5,71,
+ 58,4,284,boost::rational<long>(204,71))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,6,135,
+ 110,5,555,boost::rational<long>(80,27));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 6, 135)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (2, 5, 71)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(5, 4, 68)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 6, 135)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 5, 71)(0, 0, 1)(1, 0, 1)(5, 4, 68)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(4, 3, 26)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(5, 4, 68)(2, 5, 71)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(5, 6, 135);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("able", 4, 3, 26)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("baker", 2, 1, 4)("baker", 3, 2, 10)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("chuck", 2, 5, 71)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 5, 4, 68)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 3, 2, 10)("able", 4, 3, 26)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("baker", 3, 2, 10)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 1, 4)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 3, 2, 10)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("baker", 2, 1, 4)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("dog", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 4, 3, 26)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 5, 71)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 5, 4, 68)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 3, 2, 10)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 4, 3, 26)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 3, 2, 10)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("chuck", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("dog", 0, 0, 1)
+ ("dog", 1, 0, 1)("easy", 0, 0, 1)("dog", 0, 0, 1)
+ ("dog", 1, 0, 1)("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 3, 2, 10)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 2, 1, 4)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("dog", 0, 0, 1)("able", 4, 3, 26)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 3, 2, 10)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 4, 3, 26)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("baker", 3, 2, 10)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("chuck", 2, 1, 4)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("baker", 5, 4, 68)("chuck", 2, 5, 71)("dog", 0, 0, 1)
+ ("dog", 1, 0, 1)("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 5, 71)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 5, 4, 68)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 5, 4, 68)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 5, 71)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 135)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 5, 71)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 5, 4, 68)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 4, 68)
+ (boost::tree_node::post_order_traversal, 2, 5, 71)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 6, 135);
+#endif // BOOST_NO_SFINAE
+ test_associative_node<a_node_case>(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ BOOST_CHECK(
+ boost::tree_node::dereference_iterator(
+ a_child_itr
+ ).erase(names[1]) == 4
+ );
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 6, 119, 98, 5, 476, boost::rational<long>(345, 119))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 5, 55, 46, 4, 221, boost::rational<long>(161, 55))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 4, 52, 43, 3, 164, boost::rational<long>(57, 26))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_vals]
+ (5, 6, 119, 98, 5, 476, boost::rational<long>(345, 119))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 5, 55, 46, 4, 221, boost::rational<long>(161, 55))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 4, 52, 43, 3, 164, boost::rational<long>(57, 26))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 4, 52, 43, 3, 164, boost::rational<long>(57, 26))
+ (2, 5, 55, 46, 4, 221, boost::rational<long>(161, 55))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (5, 6, 119, 98, 5, 476, boost::rational<long>(345, 119));
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 5, 55, 46, 4, 221, boost::rational<long>(161, 55))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 5, 4, 52, 43, 3, 164, boost::rational<long>(57, 26))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 5, 55, 46, 4, 221, boost::rational<long>(161, 55))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 5, 4, 52, 43, 3, 164, boost::rational<long>(57, 26))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 3, 2, 10, 8, 1, 22, boost::rational<long>(7, 5))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 4, 3, 26, 21, 2, 69, boost::rational<long>(23, 13))
+ ("chuck", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("able", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("able", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("baker", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("chuck", 2, 1, 4, 3, 0, 7, boost::rational<long>(1, 1))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("baker", 5, 4, 52, 43, 3, 164, boost::rational<long>(57, 26))
+ ("chuck", 2, 5, 55, 46, 4, 221, boost::rational<long>(161, 55))
+ ("dog", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ ("dog", 1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ ("easy", 0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1));
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",2,5,55,
+ 46,4,221,boost::rational<long>(161,55))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",5,4,52,
+ 43,3,164,boost::rational<long>(57,26))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"baker",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"chuck",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"chuck",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"able",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"able",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"chuck",2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"baker",5,4,52,
+ 43,3,164,boost::rational<long>(57,26))
+ (boost::tree_node::post_order_traversal,"chuck",2,5,55,
+ 46,4,221,boost::rational<long>(161,55))
+ (boost::tree_node::pre_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"dog",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,"dog",1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,"easy",0,0,1,
+ 0,0,1,boost::rational<long>(0,1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,6,119,
+ 98,5,476,boost::rational<long>(345,119))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,5,55,
+ 46,4,221,boost::rational<long>(161,55))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,5,4,52,
+ 43,3,164,boost::rational<long>(57,26))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,3,2,10,
+ 8,1,22,boost::rational<long>(7,5))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,4,3,26,
+ 21,2,69,boost::rational<long>(23,13))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,2,1,4,
+ 3,0,7,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,4,52,
+ 43,3,164,boost::rational<long>(57,26))
+ (boost::tree_node::post_order_traversal,2,5,55,
+ 46,4,221,boost::rational<long>(161,55))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::pre_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::post_order_traversal,1,0,1,
+ 1,0,1,boost::rational<long>(1,1))
+ (boost::tree_node::pre_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,0,0,1,
+ 0,0,1,boost::rational<long>(0,1))
+ (boost::tree_node::post_order_traversal,5,6,119,
+ 98,5,476,boost::rational<long>(345,119));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 6, 119)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (2, 5, 55)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(5, 4, 52)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(3, 2, 10)(4, 3, 26)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1);
+ emplacer[pre_vals]
+ (5, 6, 119)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 5, 55)(0, 0, 1)(1, 0, 1)(5, 4, 52)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)(0, 0, 1)(1, 0, 1)
+ (2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 4)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(4, 3, 26)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(3, 2, 10)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(4, 3, 26)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(2, 1, 4)(0, 0, 1)(1, 0, 1)(0, 0, 1)(5, 4, 52)
+ (2, 5, 55)(0, 0, 1)(1, 0, 1)(0, 0, 1)(5, 6, 119);
+ emplacer[bf_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("able", 4, 3, 26)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("baker", 2, 1, 4)("baker", 3, 2, 10)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("chuck", 2, 5, 55)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 5, 4, 52)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 3, 2, 10)("able", 4, 3, 26)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("chuck", 2, 1, 4)
+ ("dog", 0, 0, 1)("dog", 1, 0, 1)("easy", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1);
+ emplacer[pre_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 4, 3, 26)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 1, 0, 1)("dog", 0, 0, 1)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 5, 55)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 5, 4, 52)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 3, 2, 10)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 4, 3, 26)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("baker", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("chuck", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[post_d_vals]
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("able", 2, 1, 4)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("chuck", 0, 0, 1)("able", 3, 2, 10)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("baker", 2, 1, 4)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("dog", 0, 0, 1)("able", 4, 3, 26)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("baker", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("baker", 3, 2, 10)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("able", 2, 1, 4)("baker", 0, 0, 1)
+ ("baker", 1, 0, 1)("chuck", 0, 0, 1)("able", 3, 2, 10)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("able", 0, 0, 1)
+ ("able", 1, 0, 1)("baker", 0, 0, 1)("able", 2, 1, 4)
+ ("baker", 0, 0, 1)("baker", 1, 0, 1)("chuck", 0, 0, 1)
+ ("able", 3, 2, 10)("baker", 0, 0, 1)("baker", 1, 0, 1)
+ ("able", 0, 0, 1)("able", 1, 0, 1)("baker", 0, 0, 1)
+ ("baker", 2, 1, 4)("chuck", 0, 0, 1)("chuck", 1, 0, 1)
+ ("dog", 0, 0, 1)("able", 4, 3, 26)("chuck", 0, 0, 1)
+ ("chuck", 1, 0, 1)("able", 0, 0, 1)("able", 1, 0, 1)
+ ("baker", 0, 0, 1)("chuck", 2, 1, 4)("dog", 0, 0, 1)
+ ("dog", 1, 0, 1)("easy", 0, 0, 1)("baker", 5, 4, 52)
+ ("chuck", 2, 5, 55)("dog", 0, 0, 1)("dog", 1, 0, 1)
+ ("easy", 0, 0, 1);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 5, 55)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 5, 4, 52)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "able", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "baker", 5, 4, 52)
+ (boost::tree_node::post_order_traversal, "chuck", 2, 5, 55)
+ (boost::tree_node::pre_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::post_order_traversal, "dog", 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, "easy", 0, 0, 1)
+ (boost::tree_node::post_order_traversal, "easy", 0, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 119)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 5, 55)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 5, 4, 52)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 2, 10)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 4, 3, 26)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 4)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 4, 52)
+ (boost::tree_node::post_order_traversal, 2, 5, 55)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 5, 6, 119);
+#endif // BOOST_NO_SFINAE
+ test_associative_node<a_node_case>(
+ a_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::associative_node_base_gen<Selector>
+ , char const*
+ , DataMap
+ , AccuYourUintKey
+ >
+ FNode;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_char
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , AccuYourUintKey
+ >::type
+ >
+ >::type
+ MoreValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_char
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , AccuYourUintKey
+ >::type
+ >
+ >::type
+ DFMoreValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename FNode::traits::key_type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_char
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , AccuYourUintKey
+ >::type
+ >
+ >::type
+ MoreKeyValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename FNode::traits::key_type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_char
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , AccuYourUintKey
+ >::type
+ >
+ >::type
+ DFMoreKeyValues;
+
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type data = boost::tree_node::get<
+ example_keys::your_uint
+ >(boost::tree_node::dereference_iterator(itr));
+
+ if (1 < data)
+ {
+ for (unsigned int i = 0; i < data; ++i)
+ {
+ for (std::size_t j = 0; j + i < data; ++j)
+ {
+ itr->emplace(
+ names[j]
+ , boost::fusion::make_pair<example_keys::your_uint>(i)
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + i
+ )
+ );
+ }
+ }
+ }
+ }
+
+ {
+ MoreValues bf_vals, pre_vals, post_vals;
+ MoreKeyValues bf_d_vals, pre_d_vals, post_d_vals;
+ DFMoreKeyValues df_d_vals;
+ DFMoreValues df_vals;
+ Emplacer emplacer;
+
+ emplacer[bf_vals]
+ (5, '5', 55)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 8)
+ (4, '4', 21)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 8)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 8)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0);
+ emplacer[pre_vals]
+ (5, '5', 55)(0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(3, '3', 8)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(4, '4', 21)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(3, '3', 8)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(3, '3', 8)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0);
+ emplacer[post_vals]
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (3, '3', 8)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(3, '3', 8)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(4, '4', 21)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(3, '3', 8)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(5, '5', 55);
+ emplacer[bf_d_vals]
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 3, '3', 8)("able", 4, '4', 21)("baker", 0, '0', 0)
+ ("baker", 1, '1', 1)("baker", 2, '2', 3)("baker", 3, '3', 8)
+ ("chuck", 0, '0', 0)("chuck", 1, '1', 1)("chuck", 2, '2', 3)
+ ("dog", 0, '0', 0)("dog", 1, '1', 1)("easy", 0, '0', 0)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 3, '3', 8)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("baker", 2, '2', 3)("chuck", 0, '0', 0)("chuck", 1, '1', 1)
+ ("dog", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0);
+ emplacer[pre_d_vals]
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 3, '3', 8)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 4, '4', 21)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("able", 2, '2', 3)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 3, '3', 8)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("baker", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("chuck", 0, '0', 0)("chuck", 1, '1', 1)("dog", 0, '0', 0)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("baker", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("baker", 3, '3', 8)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("chuck", 0, '0', 0)("chuck", 1, '1', 1)
+ ("chuck", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("dog", 0, '0', 0)("dog", 1, '1', 1)
+ ("easy", 0, '0', 0);
+ emplacer[post_d_vals]
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 2, '2', 3)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("able", 3, '3', 8)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 2, '2', 3)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 3, '3', 8)("baker", 0, '0', 0)
+ ("baker", 1, '1', 1)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("baker", 2, '2', 3)("chuck", 0, '0', 0)
+ ("chuck", 1, '1', 1)("dog", 0, '0', 0)("able", 4, '4', 21)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("baker", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 2, '2', 3)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("baker", 3, '3', 8)("chuck", 0, '0', 0)("chuck", 1, '1', 1)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("chuck", 2, '2', 3)("dog", 0, '0', 0)("dog", 1, '1', 1)
+ ("easy", 0, '0', 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",3,'3',8)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::post_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",3,'3',8)
+ (boost::tree_node::pre_order_traversal,"able",4,'4',21)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",3,'3',8)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::post_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",3,'3',8)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::post_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"chuck",1,'1',1)
+ (boost::tree_node::post_order_traversal,"chuck",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"dog",0,'0',0)
+ (boost::tree_node::post_order_traversal,"dog",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",4,'4',21)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::post_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"baker",3,'3',8)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::post_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",3,'3',8)
+ (boost::tree_node::pre_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"chuck",1,'1',1)
+ (boost::tree_node::post_order_traversal,"chuck",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"chuck",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"chuck",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"dog",0,'0',0)
+ (boost::tree_node::post_order_traversal,"dog",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"dog",1,'1',1)
+ (boost::tree_node::post_order_traversal,"dog",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"easy",0,'0',0)
+ (boost::tree_node::post_order_traversal,"easy",0,'0',0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,'5',55)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,3,'3',8)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,3,'3',8)
+ (boost::tree_node::pre_order_traversal,4,'4',21)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,3,'3',8)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,3,'3',8)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,4,'4',21)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,3,'3',8)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,3,'3',8)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,5,'5',55);
+ test_associative_node<f_node_case>(
+ f_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+
+ put(
+ boost::tree_node::dereference_iterator(f_root.find(names[2]))
+ , example_keys::your_uint()
+ , 7
+ );
+ bf_vals.clear();
+ bf_d_vals.clear();
+ pre_vals.clear();
+ pre_d_vals.clear();
+ post_vals.clear();
+ post_d_vals.clear();
+ df_vals.clear();
+ df_d_vals.clear();
+
+ emplacer[bf_vals]
+ (5, '5', 62)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 8)
+ (4, '4', 21)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 8)
+ (7, '0', 7)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 8)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0);
+ emplacer[pre_vals]
+ (5, '5', 62)(0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(3, '3', 8)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(4, '4', 21)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(3, '3', 8)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(3, '3', 8)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(0, '0', 0)(1, '1', 1)(0, '0', 0)(7, '0', 7)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0);
+ emplacer[post_vals]
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (3, '3', 8)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(3, '3', 8)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(4, '4', 21)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(3, '3', 8)(7, '0', 7)(1, '1', 1)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(0, '0', 0)(5, '5', 62);
+ emplacer[bf_d_vals]
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 3, '3', 8)("able", 4, '4', 21)("baker", 0, '0', 0)
+ ("baker", 1, '1', 1)("baker", 2, '2', 3)("baker", 3, '3', 8)
+ ("chuck", 7, '0', 7)("chuck", 1, '1', 1)("chuck", 2, '2', 3)
+ ("dog", 0, '0', 0)("dog", 1, '1', 1)("easy", 0, '0', 0)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 3, '3', 8)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("baker", 2, '2', 3)("chuck", 0, '0', 0)("chuck", 1, '1', 1)
+ ("dog", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0);
+ emplacer[pre_d_vals]
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 3, '3', 8)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 4, '4', 21)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("able", 2, '2', 3)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 3, '3', 8)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("baker", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("chuck", 0, '0', 0)("chuck", 1, '1', 1)("dog", 0, '0', 0)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("baker", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("baker", 3, '3', 8)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("chuck", 7, '0', 7)("chuck", 1, '1', 1)
+ ("chuck", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("dog", 0, '0', 0)("dog", 1, '1', 1)
+ ("easy", 0, '0', 0);
+ emplacer[post_d_vals]
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 2, '2', 3)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("able", 3, '3', 8)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 2, '2', 3)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("able", 2, '2', 3)("baker", 0, '0', 0)("baker", 1, '1', 1)
+ ("chuck", 0, '0', 0)("able", 3, '3', 8)("baker", 0, '0', 0)
+ ("baker", 1, '1', 1)("able", 0, '0', 0)("able", 1, '1', 1)
+ ("baker", 0, '0', 0)("baker", 2, '2', 3)("chuck", 0, '0', 0)
+ ("chuck", 1, '1', 1)("dog", 0, '0', 0)("able", 4, '4', 21)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("baker", 2, '2', 3)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("able", 0, '0', 0)
+ ("able", 1, '1', 1)("baker", 0, '0', 0)("able", 2, '2', 3)
+ ("baker", 0, '0', 0)("baker", 1, '1', 1)("chuck", 0, '0', 0)
+ ("baker", 3, '3', 8)("chuck", 7, '0', 7)("chuck", 1, '1', 1)
+ ("able", 0, '0', 0)("able", 1, '1', 1)("baker", 0, '0', 0)
+ ("chuck", 2, '2', 3)("dog", 0, '0', 0)("dog", 1, '1', 1)
+ ("easy", 0, '0', 0);
+ emplacer[df_d_vals]
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",3,'3',8)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::post_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",3,'3',8)
+ (boost::tree_node::pre_order_traversal,"able",4,'4',21)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",3,'3',8)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::post_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",3,'3',8)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::post_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"chuck",1,'1',1)
+ (boost::tree_node::post_order_traversal,"chuck",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"dog",0,'0',0)
+ (boost::tree_node::post_order_traversal,"dog",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",4,'4',21)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::post_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"baker",3,'3',8)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::post_order_traversal,"baker",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"chuck",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",3,'3',8)
+ (boost::tree_node::pre_order_traversal,"chuck",7,'0',7)
+ (boost::tree_node::post_order_traversal,"chuck",7,'0',7)
+ (boost::tree_node::pre_order_traversal,"chuck",1,'1',1)
+ (boost::tree_node::post_order_traversal,"chuck",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"chuck",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"able",0,'0',0)
+ (boost::tree_node::post_order_traversal,"able",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"able",1,'1',1)
+ (boost::tree_node::post_order_traversal,"able",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"baker",0,'0',0)
+ (boost::tree_node::post_order_traversal,"chuck",2,'2',3)
+ (boost::tree_node::pre_order_traversal,"dog",0,'0',0)
+ (boost::tree_node::post_order_traversal,"dog",0,'0',0)
+ (boost::tree_node::pre_order_traversal,"dog",1,'1',1)
+ (boost::tree_node::post_order_traversal,"dog",1,'1',1)
+ (boost::tree_node::pre_order_traversal,"easy",0,'0',0)
+ (boost::tree_node::post_order_traversal,"easy",0,'0',0);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal,5,'5',62)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,3,'3',8)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,3,'3',8)
+ (boost::tree_node::pre_order_traversal,4,'4',21)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,3,'3',8)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,3,'3',8)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,4,'4',21)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,3,'3',8)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,3,'3',8)
+ (boost::tree_node::pre_order_traversal,7,'0',7)
+ (boost::tree_node::post_order_traversal,7,'0',7)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,2,'2',3)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::pre_order_traversal,1,'1',1)
+ (boost::tree_node::post_order_traversal,1,'1',1)
+ (boost::tree_node::pre_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,0,'0',0)
+ (boost::tree_node::post_order_traversal,5,'5',62);
+ test_associative_node<f_node_case>(
+ f_root
+ , bf_vals
+ , bf_d_vals
+ , pre_vals
+ , pre_d_vals
+ , post_vals
+ , post_d_vals
+ , df_vals
+ , df_d_vals
+ );
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION_WITH_TYPEOF
+}
+
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+
+#if defined BOOST_TYPEOF_EMULATION
+#include <boost/typeof/boost/container_gen/selectors.hpp>
+#include <boost/typeof/boost/container_gen/c_str_cmp_selectors.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_map.hpp>
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/mpl/bool.hpp>
+#include <boost/typeof/boost/container/map.hpp>
+#include <boost/typeof/boost/container/flat_map.hpp>
+#endif
+#else // !defined BOOST_TYPEOF_EMULATION
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/c_str_cmp_selectors.hpp>
+#endif // BOOST_TYPEOF_EMULATION
+
+int test_main(int argc, char** argv)
+{
+ test_unique_associative<
+ boost::ptr_map_selector<boost::c_str_ordering_selector>
+ >();
+ test_multiple_associative<
+ boost::ptr_multimap_selector<boost::c_str_ordering_selector>
+ >();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test_unique_associative<
+ boost::map_selector<boost::mpl::true_,boost::c_str_ordering_selector>
+ >();
+ test_multiple_associative<
+ boost::multimap_selector<
+ boost::mpl::true_
+ , boost::c_str_ordering_selector
+ >
+ >();
+ test_unique_associative<
+ boost::flat_map_selector<boost::c_str_ordering_selector>
+ >();
+ test_multiple_associative<
+ boost::flat_multimap_selector<boost::c_str_ordering_selector>
+ >();
+#endif
+
+ return 0;
+}
+
Added: sandbox/tree_node/libs/tree_node/test/binary_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/test/binary_node.cpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,3040 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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.hpp>
+
+#if defined BOOST_MSVC
+ #pragma warning (push)
+ #pragma warning (disable : 4996) // fn called w/params that may be unsafe
+#endif
+
+#include <boost/tuple/tuple.hpp>
+#include <boost/typeof/boost/rational.hpp>
+#include <boost/typeof/boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/emplace_function_gen.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/intrinsic/value_at_key.hpp>
+#include <boost/typeof/boost/tree_node/with_count.hpp>
+#include <boost/typeof/boost/tree_node/with_height.hpp>
+#include <boost/typeof/boost/tree_node/with_position.hpp>
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/typeof/boost/tree_node/with_accumulation.hpp>
+#endif
+
+#include "../example/type_definitions.hpp"
+#include "iterator_functions.hpp"
+
+typedef boost::emplace_function_gen<boost::dequeS>::type
+ Emplacer;
+
+#include <boost/typeof/boost/tree_node/binary_node.hpp>
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::binary_node_base_gen<>
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , boost::rational<long>
+ , void
+ , AccuHeightKey
+ >
+ ANode;
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::binary_node_base_gen<>
+ >
+ >
+ , boost::rational<long>
+ >
+ ANode;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+typedef boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::data_key
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::height_key
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::count_key
+ >::type
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::accumulation_key<>
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuHeightKey
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuCountKey
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuAccuKey
+ >::type
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ >
+ >::type
+ Values;
+typedef boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::data_key
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::height_key
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::count_key
+ >::type
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::accumulation_key<>
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuHeightKey
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuCountKey
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuAccuKey
+ >::type
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ >
+ >::type
+ DFValues;
+
+int test_main(int argc, char** argv)
+{
+ ANode a_root(5);
+
+ BOOST_CHECK(
+ !a_root.get_parent_ptr()
+// , "Parent member uninitialized."
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<ANode> itr(a_root);
+ itr;
+ ++itr
+ )
+ {
+ ANode::traits::data_type const& data = get(
+ *itr
+ , boost::tree_node::data_key()
+ );
+
+ if (1 < data)
+ {
+ ANode::iterator child_itr(itr->emplace_left(data - 2));
+ ANode::const_pointer const_child(&*child_itr);
+
+ BOOST_CHECK(
+ child_itr->get_parent_ptr() == &*itr
+// , "Ctor not linking child to parent."
+ );
+ BOOST_CHECK(
+ itr->get_left_child_ptr() == &*child_itr
+// , "Ctor not linking parent to child."
+ );
+ BOOST_CHECK(
+ child_itr->get_parent_ptr() == const_child->get_parent_ptr()
+// , "Why are these pointers different?"
+ );
+ BOOST_CHECK(
+ get(
+ *child_itr
+ , boost::tree_node::position_key()
+ ) == child_itr
+// , "Position iterator incorrect."
+ );
+
+ child_itr = itr->emplace_right(data - 1);
+ const_child = &*child_itr;
+
+ BOOST_CHECK(
+ child_itr->get_parent_ptr() == &*itr
+// , "Ctor not linking child to parent."
+ );
+ BOOST_CHECK(
+ itr->get_right_child_ptr() == &*child_itr
+// , "Ctor not linking parent to child."
+ );
+ BOOST_CHECK(
+ child_itr->get_parent_ptr() == const_child->get_parent_ptr()
+// , "Why are these pointers different?"
+ );
+ BOOST_CHECK(
+ get(
+ *child_itr
+ , boost::tree_node::position_key()
+ ) == child_itr
+// , "Position iterator incorrect."
+ );
+ }
+ }
+
+ {
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 4, 15, 26, 3, 51, boost::rational<long>(68, 15))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 4, 15, 26, 3, 51, boost::rational<long>(68, 15))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (5, 4, 15, 26, 3, 51, boost::rational<long>(68, 15));
+ emplacer[in_vals]
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 4, 15, 26, 3, 51, boost::rational<long>(68, 15))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 15,
+ 26, 3, 51, boost::rational<long>(68, 15))
+ (boost::tree_node::pre_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::pre_order_traversal, 4, 3, 9,
+ 14, 2, 25, boost::rational<long>(10, 3))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::post_order_traversal, 4, 3, 9,
+ 14, 2, 25, boost::rational<long>(10, 3))
+ (boost::tree_node::post_order_traversal, 5, 4, 15,
+ 26, 3, 51, boost::rational<long>(68, 15));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 4, 15)(3, 2, 5)(4, 3, 9)(1, 0, 1)(2, 1, 3)(2, 1, 3)(3, 2, 5)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1);
+ emplacer[pre_vals]
+ (5, 4, 15)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 9)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1);
+ emplacer[post_vals]
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(4, 3, 9)
+ (5, 4, 15);
+ emplacer[in_vals]
+ (1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 4, 15)(0, 0, 1)
+ (2, 1, 3)(1, 0, 1)(4, 3, 9)(1, 0, 1)(3, 2, 5)(0, 0, 1)(2, 1, 3)
+ (1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 15)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 3, 9)
+ (boost::tree_node::post_order_traversal, 5, 4, 15);
+#endif // BOOST_NO_SFINAE
+ test_node<a_node_case>(
+ a_root
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+ }
+
+ {
+ ANode a_copy(a_root);
+ boost::tree_node::breadth_first_iterator<ANode const>
+ bf_root_itr(a_root), bf_copy_itr(a_copy);
+ boost::tree_node::breadth_first_descendant_iterator<ANode const>
+ bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);
+ boost::tree_node::pre_order_iterator<ANode const>
+ pre_root_itr(a_root), pre_copy_itr(a_copy);
+ boost::tree_node::pre_order_descendant_iterator<ANode const>
+ pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);
+ boost::tree_node::post_order_iterator<ANode const>
+ post_root_itr(a_root), post_copy_itr(a_copy);
+ boost::tree_node::post_order_descendant_iterator<ANode const>
+ post_d_root_itr(a_root), post_d_copy_itr(a_copy);
+ boost::tree_node::in_order_iterator<ANode const>
+ in_root_itr(a_root), in_copy_itr(a_copy);
+ boost::tree_node::depth_first_iterator<ANode const>
+ df_root_itr(a_root), df_copy_itr(a_copy);
+ boost::tree_node::depth_first_descendant_iterator<ANode const>
+ df_d_root_itr(a_root), df_d_copy_itr(a_copy);
+
+ BOOST_CHECK(test_node_copies(bf_root_itr, bf_copy_itr));
+ BOOST_CHECK(test_node_copies(bf_d_root_itr, bf_d_copy_itr));
+ BOOST_CHECK(test_node_copies(pre_root_itr, pre_copy_itr));
+ BOOST_CHECK(test_node_copies(pre_d_root_itr, pre_d_copy_itr));
+ BOOST_CHECK(test_node_copies(post_root_itr, post_copy_itr));
+ BOOST_CHECK(test_node_copies(post_d_root_itr, post_d_copy_itr));
+ BOOST_CHECK(test_node_copies(in_root_itr, in_copy_itr));
+ BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));
+ BOOST_CHECK(test_node_copies(df_d_root_itr, df_d_copy_itr));
+ }
+
+ {
+ ANode::pointer p(
+ a_root.get_left_child_ptr()->get_right_child_ptr()
+ );
+ ANode::iterator a_child_itr = p->insert_left(a_root);
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 7, 30, 52, 6, 150, boost::rational<long>(107, 15))
+ (3, 6, 20, 33, 5, 95, boost::rational<long>(33, 5))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 5, 18, 29, 4, 74, boost::rational<long>(49, 9))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (5, 4, 16, 26, 3, 55, boost::rational<long>(17, 4))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 7, 30, 52, 6, 150, boost::rational<long>(107, 15))
+ (3, 6, 20, 33, 5, 95, boost::rational<long>(33, 5))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 5, 18, 29, 4, 74, boost::rational<long>(49, 9))
+ (5, 4, 16, 26, 3, 55, boost::rational<long>(17, 4))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (5, 4, 16, 26, 3, 55, boost::rational<long>(17, 4))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 5, 18, 29, 4, 74, boost::rational<long>(49, 9))
+ (3, 6, 20, 33, 5, 95, boost::rational<long>(33, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (5, 7, 30, 52, 6, 150, boost::rational<long>(107, 15));
+ emplacer[in_vals]
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 6, 20, 33, 5, 95, boost::rational<long>(33, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 4, 16, 26, 3, 55, boost::rational<long>(17, 4))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 5, 18, 29, 4, 74, boost::rational<long>(49, 9))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 7, 30, 52, 6, 150, boost::rational<long>(107, 15))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 7, 30,
+ 52, 6, 150, boost::rational<long>(107, 15))
+ (boost::tree_node::pre_order_traversal, 3, 6, 20,
+ 33, 5, 95, boost::rational<long>(33, 5))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 5, 18,
+ 29, 4, 74, boost::rational<long>(49, 9))
+ (boost::tree_node::pre_order_traversal, 5, 4, 16,
+ 26, 3, 55, boost::rational<long>(17, 4))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 3, 9,
+ 14, 2, 25, boost::rational<long>(10, 3))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::post_order_traversal, 4, 3, 9,
+ 14, 2, 25, boost::rational<long>(10, 3))
+ (boost::tree_node::post_order_traversal, 5, 4, 16,
+ 26, 3, 55, boost::rational<long>(17, 4))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 5, 18,
+ 29, 4, 74, boost::rational<long>(49, 9))
+ (boost::tree_node::post_order_traversal, 3, 6, 20,
+ 33, 5, 95, boost::rational<long>(33, 5))
+ (boost::tree_node::pre_order_traversal, 4, 3, 9,
+ 14, 2, 25, boost::rational<long>(10, 3))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::post_order_traversal, 4, 3, 9,
+ 14, 2, 25, boost::rational<long>(10, 3))
+ (boost::tree_node::post_order_traversal, 5, 7, 30,
+ 52, 6, 150, boost::rational<long>(107, 15));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 7, 30)(3, 6, 20)(4, 3, 9)(1, 0, 1)(2, 5, 18)(2, 1, 3)(3, 2, 5)
+ (5, 4, 16)(1, 0, 1)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)
+ (4, 3, 9)(0, 0, 1)(1, 0, 1)(1, 1, 2)(2, 1, 3)(2, 1, 3)(3, 2, 5)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 7, 30)(3, 6, 20)(1, 0, 1)(2, 5, 18)(5, 4, 16)(3, 2, 6)(1, 1, 2)
+ (0, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 9)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(3, 2, 5)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(1, 0, 1)
+ (4, 3, 9)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (1, 0, 1)(0, 0, 1)(1, 1, 2)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 5)(4, 3, 9)(5, 4, 16)(1, 0, 1)(2, 5, 18)(3, 6, 20)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)
+ (4, 3, 9)(5, 7, 30);
+ emplacer[in_vals]
+ (1, 0, 1)(3, 6, 20)(0, 0, 1)(1, 1, 2)(3, 2, 6)(0, 0, 1)(2, 1, 3)
+ (1, 0, 1)(5, 4, 16)(0, 0, 1)(2, 1, 3)(1, 0, 1)(4, 3, 9)(1, 0, 1)
+ (3, 2, 5)(0, 0, 1)(2, 1, 3)(1, 0, 1)(2, 5, 18)(1, 0, 1)(5, 7, 30)
+ (0, 0, 1)(2, 1, 3)(1, 0, 1)(4, 3, 9)(1, 0, 1)(3, 2, 5)(0, 0, 1)
+ (2, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 7, 30)
+ (boost::tree_node::pre_order_traversal, 3, 6, 20)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 5, 18)
+ (boost::tree_node::pre_order_traversal, 5, 4, 16)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 3, 9)
+ (boost::tree_node::post_order_traversal, 5, 4, 16)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 5, 18)
+ (boost::tree_node::post_order_traversal, 3, 6, 20)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 3, 9)
+ (boost::tree_node::post_order_traversal, 5, 7, 30);
+#endif // BOOST_NO_SFINAE
+ test_node<a_node_case>(
+ a_root
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+
+ a_root = *a_child_itr;
+ bf_vals.clear();
+ pre_vals.clear();
+ post_vals.clear();
+ in_vals.clear();
+ df_vals.clear();
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 4, 16, 26, 3, 55, boost::rational<long>(17, 4))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 4, 16, 26, 3, 55, boost::rational<long>(17, 4))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (5, 4, 16, 26, 3, 55, boost::rational<long>(17, 4));
+ emplacer[in_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 4, 16, 26, 3, 55, boost::rational<long>(17, 4))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 16,
+ 26, 3, 55, boost::rational<long>(17, 4))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 3, 9,
+ 14, 2, 25, boost::rational<long>(10, 3))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::post_order_traversal, 4, 3, 9,
+ 14, 2, 25, boost::rational<long>(10, 3))
+ (boost::tree_node::post_order_traversal, 5, 4, 16,
+ 26, 3, 55, boost::rational<long>(17, 4));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 4, 16)(3, 2, 6)(4, 3, 9)(1, 1, 2)(2, 1, 3)(2, 1, 3)(3, 2, 5)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 4, 16)(3, 2, 6)(1, 1, 2)(0, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (4, 3, 9)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 1, 2)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)
+ (4, 3, 9)(5, 4, 16);
+ emplacer[in_vals]
+ (0, 0, 1)(1, 1, 2)(3, 2, 6)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 4, 16)
+ (0, 0, 1)(2, 1, 3)(1, 0, 1)(4, 3, 9)(1, 0, 1)(3, 2, 5)(0, 0, 1)
+ (2, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 16)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 3, 9)
+ (boost::tree_node::post_order_traversal, 5, 4, 16);
+#endif // BOOST_NO_SFINAE
+ test_node<a_node_case>(
+ a_root
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+
+ *(p = a_root.get_right_child_ptr()) = a_root;
+ test_node<a_node_case>(
+ *p
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+
+ bf_vals.clear();
+ pre_vals.clear();
+ post_vals.clear();
+ in_vals.clear();
+ df_vals.clear();
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 5, 23, 38, 4, 92, boost::rational<long>(118, 23))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (5, 4, 16, 26, 3, 55, boost::rational<long>(17, 4))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 5, 23, 38, 4, 92, boost::rational<long>(118, 23))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 4, 16, 26, 3, 55, boost::rational<long>(17, 4))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (5, 4, 16, 26, 3, 55, boost::rational<long>(17, 4))
+ (5, 5, 23, 38, 4, 92, boost::rational<long>(118, 23));
+ emplacer[in_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 5, 23, 38, 4, 92, boost::rational<long>(118, 23))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 4, 16, 26, 3, 55, boost::rational<long>(17, 4))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 9, 14, 2, 25, boost::rational<long>(10, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 23,
+ 38, 4, 92, boost::rational<long>(118, 23))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 5, 4, 16,
+ 26, 3, 55, boost::rational<long>(17, 4))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 3, 9,
+ 14, 2, 25, boost::rational<long>(10, 3))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::post_order_traversal, 4, 3, 9,
+ 14, 2, 25, boost::rational<long>(10, 3))
+ (boost::tree_node::post_order_traversal, 5, 4, 16,
+ 26, 3, 55, boost::rational<long>(17, 4))
+ (boost::tree_node::post_order_traversal, 5, 5, 23,
+ 38, 4, 92, boost::rational<long>(118, 23));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 5, 23)(3, 2, 6)(5, 4, 16)(1, 1, 2)(2, 1, 3)(3, 2, 6)(4, 3, 9)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(1, 1, 2)(2, 1, 3)(2, 1, 3)(3, 2, 5)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 5, 23)(3, 2, 6)(1, 1, 2)(0, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (5, 4, 16)(3, 2, 6)(1, 1, 2)(0, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (4, 3, 9)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 1, 2)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)
+ (1, 1, 2)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)(4, 3, 9)
+ (5, 4, 16)(5, 5, 23);
+ emplacer[in_vals]
+ (0, 0, 1)(1, 1, 2)(3, 2, 6)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 5, 23)
+ (0, 0, 1)(1, 1, 2)(3, 2, 6)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 4, 16)
+ (0, 0, 1)(2, 1, 3)(1, 0, 1)(4, 3, 9)(1, 0, 1)(3, 2, 5)(0, 0, 1)
+ (2, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 23)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 5, 4, 16)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 9)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 3, 9)
+ (boost::tree_node::post_order_traversal, 5, 4, 16)
+ (boost::tree_node::post_order_traversal, 5, 5, 23);
+#endif // BOOST_NO_SFINAE
+ test_node<a_node_case>(
+ a_root
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+ }
+
+ a_root.get_right_child_ptr()->rotate_left();
+
+ {
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 5, 23, 38, 4, 93, boost::rational<long>(119, 23))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (4, 4, 16, 26, 3, 56, boost::rational<long>(69, 16))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 5, 23, 38, 4, 93, boost::rational<long>(119, 23))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 4, 16, 26, 3, 56, boost::rational<long>(69, 16))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (4, 4, 16, 26, 3, 56, boost::rational<long>(69, 16))
+ (5, 5, 23, 38, 4, 93, boost::rational<long>(119, 23));
+ emplacer[in_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 5, 23, 38, 4, 93, boost::rational<long>(119, 23))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 4, 16, 26, 3, 56, boost::rational<long>(69, 16))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 5, 7, 1, 11, boost::rational<long>(12, 5))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 23,
+ 38, 4, 93, boost::rational<long>(119, 23))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 4, 16,
+ 26, 3, 56, boost::rational<long>(69, 16))
+ (boost::tree_node::pre_order_traversal, 5, 3, 10,
+ 15, 2, 29, boost::rational<long>(31, 10))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 5, 3, 10,
+ 15, 2, 29, boost::rational<long>(31, 10))
+ (boost::tree_node::pre_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 5,
+ 7, 1, 11, boost::rational<long>(12, 5))
+ (boost::tree_node::post_order_traversal, 4, 4, 16,
+ 26, 3, 56, boost::rational<long>(69, 16))
+ (boost::tree_node::post_order_traversal, 5, 5, 23,
+ 38, 4, 93, boost::rational<long>(119, 23));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 5, 23)(3, 2, 6)(4, 4, 16)(1, 1, 2)(2, 1, 3)(5, 3, 10)(3, 2, 5)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(3, 2, 6)(2, 1, 3)(1, 0, 1)(2, 1, 3)
+ (1, 1, 2)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 5, 23)(3, 2, 6)(1, 1, 2)(0, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (4, 4, 16)(5, 3, 10)(3, 2, 6)(1, 1, 2)(0, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 5)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 1, 2)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)
+ (1, 1, 2)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(5, 3, 10)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 5)
+ (4, 4, 16)(5, 5, 23);
+ emplacer[in_vals]
+ (0, 0, 1)(1, 1, 2)(3, 2, 6)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 5, 23)
+ (0, 0, 1)(1, 1, 2)(3, 2, 6)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 3, 10)
+ (0, 0, 1)(2, 1, 3)(1, 0, 1)(4, 4, 16)(1, 0, 1)(3, 2, 5)(0, 0, 1)
+ (2, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 23)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 4, 16)
+ (boost::tree_node::pre_order_traversal, 5, 3, 10)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 5, 3, 10)
+ (boost::tree_node::pre_order_traversal, 3, 2, 5)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 5)
+ (boost::tree_node::post_order_traversal, 4, 4, 16)
+ (boost::tree_node::post_order_traversal, 5, 5, 23);
+#endif // BOOST_NO_SFINAE
+ test_node<a_node_case>(
+ a_root
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+ }
+
+ {
+ ANode::pointer p(a_root.get_right_child_ptr()->get_right_child_ptr());
+ ANode::iterator p_child_itr(p->emplace_right());
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ Emplacer emplacer;
+
+ put(*p_child_itr, boost::tree_node::data_key(), 7);
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 5, 24, 45, 4, 100, boost::rational<long>(25, 4))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 5, 24, 45, 4, 100, boost::rational<long>(25, 4))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (5, 5, 24, 45, 4, 100, boost::rational<long>(25, 4));
+ emplacer[in_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 5, 24, 45, 4, 100, boost::rational<long>(25, 4))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 24,
+ 45, 4, 100, boost::rational<long>(25, 4))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 4, 17,
+ 33, 3, 62, boost::rational<long>(93, 17))
+ (boost::tree_node::pre_order_traversal, 5, 3, 10,
+ 15, 2, 29, boost::rational<long>(31, 10))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 5, 3, 10,
+ 15, 2, 29, boost::rational<long>(31, 10))
+ (boost::tree_node::pre_order_traversal, 3, 3, 6,
+ 14, 2, 16, boost::rational<long>(29, 6))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 7, 2, 4,
+ 10, 1, 9, boost::rational<long>(7, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 7, 2, 4,
+ 10, 1, 9, boost::rational<long>(7, 2))
+ (boost::tree_node::post_order_traversal, 3, 3, 6,
+ 14, 2, 16, boost::rational<long>(29, 6))
+ (boost::tree_node::post_order_traversal, 4, 4, 17,
+ 33, 3, 62, boost::rational<long>(93, 17))
+ (boost::tree_node::post_order_traversal, 5, 5, 24,
+ 45, 4, 100, boost::rational<long>(25, 4));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 5, 24)(3, 2, 6)(4, 4, 17)(1, 1, 2)(2, 1, 3)(5, 3, 10)(3, 3, 6)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(3, 2, 6)(2, 1, 3)(1, 0, 1)(7, 2, 4)
+ (1, 1, 2)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 5, 24)(3, 2, 6)(1, 1, 2)(0, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (4, 4, 17)(5, 3, 10)(3, 2, 6)(1, 1, 2)(0, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 3, 6)(1, 0, 1)(7, 2, 4)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 1, 2)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)
+ (1, 1, 2)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(5, 3, 10)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(7, 2, 4)
+ (3, 3, 6)(4, 4, 17)(5, 5, 24);
+ emplacer[in_vals]
+ (0, 0, 1)(1, 1, 2)(3, 2, 6)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 5, 24)
+ (0, 0, 1)(1, 1, 2)(3, 2, 6)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 3, 10)
+ (0, 0, 1)(2, 1, 3)(1, 0, 1)(4, 4, 17)(1, 0, 1)(3, 3, 6)(7, 2, 4)
+ (0, 0, 1)(2, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 24)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 4, 17)
+ (boost::tree_node::pre_order_traversal, 5, 3, 10)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 5, 3, 10)
+ (boost::tree_node::pre_order_traversal, 3, 3, 6)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 7, 2, 4)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 7, 2, 4)
+ (boost::tree_node::post_order_traversal, 3, 3, 6)
+ (boost::tree_node::post_order_traversal, 4, 4, 17)
+ (boost::tree_node::post_order_traversal, 5, 5, 24);
+#endif // BOOST_NO_SFINAE
+ test_node<a_node_case>(
+ a_root
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+ }
+
+ a_root.get_left_child_ptr()->rotate_right();
+
+ {
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 5, 24, 45, 4, 102, boost::rational<long>(155, 24))
+ (1, 1, 6, 7, 2, 16, boost::rational<long>(17, 6))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 4, 6, 1, 9, boost::rational<long>(5, 2))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 5, 24, 45, 4, 102, boost::rational<long>(155, 24))
+ (1, 1, 6, 7, 2, 16, boost::rational<long>(17, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (3, 2, 4, 6, 1, 9, boost::rational<long>(5, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 4, 6, 1, 9, boost::rational<long>(5, 2))
+ (1, 1, 6, 7, 2, 16, boost::rational<long>(17, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (5, 5, 24, 45, 4, 102, boost::rational<long>(155, 24));
+ emplacer[in_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 6, 7, 2, 16, boost::rational<long>(17, 6))
+ (3, 2, 4, 6, 1, 9, boost::rational<long>(5, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 5, 24, 45, 4, 102, boost::rational<long>(155, 24))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 24,
+ 45, 4, 102, boost::rational<long>(155, 24))
+ (boost::tree_node::pre_order_traversal, 1, 1, 6,
+ 7, 2, 16, boost::rational<long>(17, 6))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 3, 2, 4,
+ 6, 1, 9, boost::rational<long>(5, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 4,
+ 6, 1, 9, boost::rational<long>(5, 2))
+ (boost::tree_node::post_order_traversal, 1, 1, 6,
+ 7, 2, 16, boost::rational<long>(17, 6))
+ (boost::tree_node::pre_order_traversal, 4, 4, 17,
+ 33, 3, 62, boost::rational<long>(93, 17))
+ (boost::tree_node::pre_order_traversal, 5, 3, 10,
+ 15, 2, 29, boost::rational<long>(31, 10))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 5, 3, 10,
+ 15, 2, 29, boost::rational<long>(31, 10))
+ (boost::tree_node::pre_order_traversal, 3, 3, 6,
+ 14, 2, 16, boost::rational<long>(29, 6))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 7, 2, 4,
+ 10, 1, 9, boost::rational<long>(7, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 7, 2, 4,
+ 10, 1, 9, boost::rational<long>(7, 2))
+ (boost::tree_node::post_order_traversal, 3, 3, 6,
+ 14, 2, 16, boost::rational<long>(29, 6))
+ (boost::tree_node::post_order_traversal, 4, 4, 17,
+ 33, 3, 62, boost::rational<long>(93, 17))
+ (boost::tree_node::post_order_traversal, 5, 5, 24,
+ 45, 4, 102, boost::rational<long>(155, 24));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 5, 24)(1, 1, 6)(4, 4, 17)(0, 0, 1)(3, 2, 4)(5, 3, 10)(3, 3, 6)
+ (2, 1, 3)(3, 2, 6)(2, 1, 3)(1, 0, 1)(7, 2, 4)(0, 0, 1)(1, 0, 1)
+ (1, 1, 2)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 5, 24)(1, 1, 6)(0, 0, 1)(3, 2, 4)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (4, 4, 17)(5, 3, 10)(3, 2, 6)(1, 1, 2)(0, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 3, 6)(1, 0, 1)(7, 2, 4)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 4)(1, 1, 6)(0, 0, 1)
+ (1, 1, 2)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(5, 3, 10)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(7, 2, 4)
+ (3, 3, 6)(4, 4, 17)(5, 5, 24);
+ emplacer[in_vals]
+ (0, 0, 1)(1, 1, 6)(3, 2, 4)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 5, 24)
+ (0, 0, 1)(1, 1, 2)(3, 2, 6)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 3, 10)
+ (0, 0, 1)(2, 1, 3)(1, 0, 1)(4, 4, 17)(1, 0, 1)(3, 3, 6)(7, 2, 4)
+ (0, 0, 1)(2, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 24)
+ (boost::tree_node::pre_order_traversal, 1, 1, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 3, 2, 4)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 4)
+ (boost::tree_node::post_order_traversal, 1, 1, 6)
+ (boost::tree_node::pre_order_traversal, 4, 4, 17)
+ (boost::tree_node::pre_order_traversal, 5, 3, 10)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 5, 3, 10)
+ (boost::tree_node::pre_order_traversal, 3, 3, 6)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 7, 2, 4)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 7, 2, 4)
+ (boost::tree_node::post_order_traversal, 3, 3, 6)
+ (boost::tree_node::post_order_traversal, 4, 4, 17)
+ (boost::tree_node::post_order_traversal, 5, 5, 24);
+#endif // BOOST_NO_SFINAE
+ test_node<a_node_case>(
+ a_root
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+ }
+
+ a_root.get_left_child_ptr()->rotate_left();
+
+ {
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 5, 24, 45, 4, 100, boost::rational<long>(25, 4))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 5, 24, 45, 4, 100, boost::rational<long>(25, 4))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (5, 5, 24, 45, 4, 100, boost::rational<long>(25, 4));
+ emplacer[in_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 5, 24, 45, 4, 100, boost::rational<long>(25, 4))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 24,
+ 45, 4, 100, boost::rational<long>(25, 4))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 4, 17,
+ 33, 3, 62, boost::rational<long>(93, 17))
+ (boost::tree_node::pre_order_traversal, 5, 3, 10,
+ 15, 2, 29, boost::rational<long>(31, 10))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 5, 3, 10,
+ 15, 2, 29, boost::rational<long>(31, 10))
+ (boost::tree_node::pre_order_traversal, 3, 3, 6,
+ 14, 2, 16, boost::rational<long>(29, 6))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 7, 2, 4,
+ 10, 1, 9, boost::rational<long>(7, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 7, 2, 4,
+ 10, 1, 9, boost::rational<long>(7, 2))
+ (boost::tree_node::post_order_traversal, 3, 3, 6,
+ 14, 2, 16, boost::rational<long>(29, 6))
+ (boost::tree_node::post_order_traversal, 4, 4, 17,
+ 33, 3, 62, boost::rational<long>(93, 17))
+ (boost::tree_node::post_order_traversal, 5, 5, 24,
+ 45, 4, 100, boost::rational<long>(25, 4));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 5, 24)(3, 2, 6)(4, 4, 17)(1, 1, 2)(2, 1, 3)(5, 3, 10)(3, 3, 6)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(3, 2, 6)(2, 1, 3)(1, 0, 1)(7, 2, 4)
+ (1, 1, 2)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 5, 24)(3, 2, 6)(1, 1, 2)(0, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (4, 4, 17)(5, 3, 10)(3, 2, 6)(1, 1, 2)(0, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 3, 6)(1, 0, 1)(7, 2, 4)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 1, 2)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)
+ (1, 1, 2)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(5, 3, 10)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(7, 2, 4)
+ (3, 3, 6)(4, 4, 17)(5, 5, 24);
+ emplacer[in_vals]
+ (0, 0, 1)(1, 1, 2)(3, 2, 6)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 5, 24)
+ (0, 0, 1)(1, 1, 2)(3, 2, 6)(0, 0, 1)(2, 1, 3)(1, 0, 1)(5, 3, 10)
+ (0, 0, 1)(2, 1, 3)(1, 0, 1)(4, 4, 17)(1, 0, 1)(3, 3, 6)(7, 2, 4)
+ (0, 0, 1)(2, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 24)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 4, 17)
+ (boost::tree_node::pre_order_traversal, 5, 3, 10)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 5, 3, 10)
+ (boost::tree_node::pre_order_traversal, 3, 3, 6)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 7, 2, 4)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 7, 2, 4)
+ (boost::tree_node::post_order_traversal, 3, 3, 6)
+ (boost::tree_node::post_order_traversal, 4, 4, 17)
+ (boost::tree_node::post_order_traversal, 5, 5, 24);
+#endif // BOOST_NO_SFINAE
+ test_node<a_node_case>(
+ a_root
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+ }
+
+ a_root.begin()->clear();
+
+ {
+ Values bf_vals, pre_vals, post_vals, in_vals;
+ DFValues df_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 5, 19, 41, 4, 82, boost::rational<long>(137, 19))
+ (3, 0, 1, 3, 0, 1, boost::rational<long>(3, 1))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 5, 19, 41, 4, 82, boost::rational<long>(137, 19))
+ (3, 0, 1, 3, 0, 1, boost::rational<long>(3, 1))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (3, 0, 1, 3, 0, 1, boost::rational<long>(3, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (5, 5, 19, 41, 4, 82, boost::rational<long>(137, 19));
+ emplacer[in_vals]
+ (3, 0, 1, 3, 0, 1, boost::rational<long>(3, 1))
+ (5, 5, 19, 41, 4, 82, boost::rational<long>(137, 19))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 1, 2, 1, 0, 3, boost::rational<long>(1, 2))
+ (3, 2, 6, 7, 1, 14, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 3, 10, 15, 2, 29, boost::rational<long>(31, 10))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 4, 17, 33, 3, 62, boost::rational<long>(93, 17))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 3, 6, 14, 2, 16, boost::rational<long>(29, 6))
+ (7, 2, 4, 10, 1, 9, boost::rational<long>(7, 2))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 19,
+ 41, 4, 82, boost::rational<long>(137, 19))
+ (boost::tree_node::pre_order_traversal, 3, 0, 1,
+ 3, 0, 1, boost::rational<long>(3, 1))
+ (boost::tree_node::post_order_traversal, 3, 0, 1,
+ 3, 0, 1, boost::rational<long>(3, 1))
+ (boost::tree_node::pre_order_traversal, 4, 4, 17,
+ 33, 3, 62, boost::rational<long>(93, 17))
+ (boost::tree_node::pre_order_traversal, 5, 3, 10,
+ 15, 2, 29, boost::rational<long>(31, 10))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 1, 1, 2,
+ 1, 0, 3, boost::rational<long>(1, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 14, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 5, 3, 10,
+ 15, 2, 29, boost::rational<long>(31, 10))
+ (boost::tree_node::pre_order_traversal, 3, 3, 6,
+ 14, 2, 16, boost::rational<long>(29, 6))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 7, 2, 4,
+ 10, 1, 9, boost::rational<long>(7, 2))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 7, 2, 4,
+ 10, 1, 9, boost::rational<long>(7, 2))
+ (boost::tree_node::post_order_traversal, 3, 3, 6,
+ 14, 2, 16, boost::rational<long>(29, 6))
+ (boost::tree_node::post_order_traversal, 4, 4, 17,
+ 33, 3, 62, boost::rational<long>(93, 17))
+ (boost::tree_node::post_order_traversal, 5, 5, 19,
+ 41, 4, 82, boost::rational<long>(137, 19));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 5, 19)(3, 0, 1)(4, 4, 17)(5, 3, 10)(3, 3, 6)(3, 2, 6)(2, 1, 3)
+ (1, 0, 1)(7, 2, 4)(1, 1, 2)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 5, 19)(3, 0, 1)(4, 4, 17)(5, 3, 10)(3, 2, 6)(1, 1, 2)(0, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 3, 6)
+ (1, 0, 1)(7, 2, 4)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (3, 0, 1)(0, 0, 1)(1, 1, 2)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(5, 3, 10)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(7, 2, 4)(3, 3, 6)(4, 4, 17)(5, 5, 19);
+ emplacer[in_vals]
+ (3, 0, 1)(5, 5, 19)(0, 0, 1)(1, 1, 2)(3, 2, 6)(0, 0, 1)(2, 1, 3)
+ (1, 0, 1)(5, 3, 10)(0, 0, 1)(2, 1, 3)(1, 0, 1)(4, 4, 17)(1, 0, 1)
+ (3, 3, 6)(7, 2, 4)(0, 0, 1)(2, 1, 3)(1, 0, 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 5, 19)
+ (boost::tree_node::pre_order_traversal, 3, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 0, 1)
+ (boost::tree_node::pre_order_traversal, 4, 4, 17)
+ (boost::tree_node::pre_order_traversal, 5, 3, 10)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 1, 2)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 5, 3, 10)
+ (boost::tree_node::pre_order_traversal, 3, 3, 6)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 7, 2, 4)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 7, 2, 4)
+ (boost::tree_node::post_order_traversal, 3, 3, 6)
+ (boost::tree_node::post_order_traversal, 4, 4, 17)
+ (boost::tree_node::post_order_traversal, 5, 5, 19);
+#endif // BOOST_NO_SFINAE
+ test_node<a_node_case>(
+ a_root
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::binary_node_base_gen<>
+ , DataMap
+ , void
+ , AccuYourUintKey
+ >
+ FNode;
+ typedef boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_char
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ FNode const
+ , AccuYourUintKey
+ >::type
+ >
+ >::type
+ MoreValues;
+ typedef boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_char
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ FNode const
+ , AccuYourUintKey
+ >::type
+ >
+ >::type
+ DFMoreValues;
+
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type data = boost::tree_node::get<example_keys::your_uint>(*itr);
+
+ if (1 < data)
+ {
+ --data;
+ itr->emplace_right(
+ boost::fusion::make_pair<example_keys::your_uint>(data)
+ , boost::fusion::make_pair<example_keys::your_char>('0' + data)
+ );
+ --data;
+ itr->emplace_left(
+ boost::fusion::make_pair<example_keys::your_uint>(data)
+ , boost::fusion::make_pair<example_keys::your_char>('0' + data)
+ );
+ }
+ }
+
+ {
+ MoreValues bf_vals, pre_vals, post_vals, in_vals;
+ DFMoreValues df_vals;
+ Emplacer emplacer;
+
+ emplacer[bf_vals]
+ (5, '5', 26)(3, '3', 7)(4, '4', 14)(1, '1', 1)(2, '2', 3)
+ (2, '2', 3)(3, '3', 7)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[pre_vals]
+ (5, '5', 26)(3, '3', 7)(1, '1', 1)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(4, '4', 14)(2, '2', 3)(0, '0', 0)(1, '1', 1)
+ (3, '3', 7)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[post_vals]
+ (1, '1', 1)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 7)
+ (0, '0', 0)(1, '1', 1)(2, '2', 3)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(3, '3', 7)(4, '4', 14)(5, '5', 26);
+ emplacer[in_vals]
+ (1, '1', 1)(3, '3', 7)(0, '0', 0)(2, '2', 3)(1, '1', 1)
+ (5, '5', 26)(0, '0', 0)(2, '2', 3)(1, '1', 1)(4, '4', 14)
+ (1, '1', 1)(3, '3', 7)(0, '0', 0)(2, '2', 3)(1, '1', 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, '5', 26)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 4, '4', 14)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::post_order_traversal, 4, '4', 14)
+ (boost::tree_node::post_order_traversal, 5, '5', 26);
+ test_node<f_node_case>(
+ f_root
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+ }
+
+ put(
+ *f_root.get_right_child_ptr()->get_left_child_ptr()
+ , example_keys::your_uint()
+ , 7
+ );
+
+ {
+ MoreValues bf_vals, pre_vals, post_vals, in_vals;
+ DFMoreValues df_vals;
+ Emplacer emplacer;
+
+ emplacer[bf_vals]
+ (5, '5', 31)(3, '3', 7)(4, '4', 19)(1, '1', 1)(2, '2', 3)
+ (7, '2', 8)(3, '3', 7)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[pre_vals]
+ (5, '5', 31)(3, '3', 7)(1, '1', 1)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(4, '4', 19)(7, '2', 8)(0, '0', 0)(1, '1', 1)
+ (3, '3', 7)(1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[post_vals]
+ (1, '1', 1)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 7)
+ (0, '0', 0)(1, '1', 1)(7, '2', 8)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(3, '3', 7)(4, '4', 19)(5, '5', 31);
+ emplacer[in_vals]
+ (1, '1', 1)(3, '3', 7)(0, '0', 0)(2, '2', 3)(1, '1', 1)
+ (5, '5', 31)(0, '0', 0)(7, '2', 8)(1, '1', 1)(4, '4', 19)
+ (1, '1', 1)(3, '3', 7)(0, '0', 0)(2, '2', 3)(1, '1', 1);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, '5', 31)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 4, '4', 19)
+ (boost::tree_node::pre_order_traversal, 7, '2', 8)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 7, '2', 8)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::post_order_traversal, 4, '4', 19)
+ (boost::tree_node::post_order_traversal, 5, '5', 31);
+ test_node<f_node_case>(
+ f_root
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+ }
+
+ //[example__gui__binary_node__types
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::binary_node_base_gen<>
+ , HeightSumKey
+ >
+ , GUITable
+ , void
+ , MinPriorityKey
+ >
+ GUINode;
+ typedef boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::result_of::value_at_key<
+ GUINode const
+ , example_keys::row_location
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ GUINode const
+ , example_keys::row_height
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ GUINode const
+ , example_keys::row_priority
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ GUINode const
+ , HeightSumKey
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ GUINode const
+ , MinPriorityKey
+ >::type
+ >
+ >::type
+ GUIValues;
+ typedef boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , boost::tree_node::result_of::value_at_key<
+ GUINode const
+ , example_keys::row_location
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ GUINode const
+ , example_keys::row_height
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ GUINode const
+ , example_keys::row_priority
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ GUINode const
+ , HeightSumKey
+ >::type
+ , boost::tree_node::result_of::value_at_key<
+ GUINode const
+ , MinPriorityKey
+ >::type
+ >
+ >::type
+ DFGUIValues;
+ //]
+
+ //[example__gui__binary_node__build
+ GUINode gui_root(
+ boost::fusion::make_pair<example_keys::row_location>(20)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(64)
+ );
+ gui_root.emplace_left(
+ boost::fusion::make_pair<example_keys::row_location>(0)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(20)
+ );
+ gui_root.emplace_left(
+ boost::fusion::make_pair<example_keys::row_location>(3)
+ , boost::fusion::make_pair<example_keys::row_height>(4)
+ , boost::fusion::make_pair<example_keys::row_priority>(88)
+ )->emplace_right(
+ boost::fusion::make_pair<example_keys::row_location>(4)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(79)
+ );
+ gui_root.emplace_left(
+ boost::fusion::make_pair<example_keys::row_location>(5)
+ , boost::fusion::make_pair<example_keys::row_height>(4)
+ , boost::fusion::make_pair<example_keys::row_priority>(36)
+ )->emplace_right(
+ boost::fusion::make_pair<example_keys::row_location>(10)
+ , boost::fusion::make_pair<example_keys::row_height>(4)
+ , boost::fusion::make_pair<example_keys::row_priority>(5)
+ )->emplace_right(
+ boost::fusion::make_pair<example_keys::row_location>(12)
+ , boost::fusion::make_pair<example_keys::row_height>(4)
+ , boost::fusion::make_pair<example_keys::row_priority>(19)
+ );
+ gui_root.emplace_right(
+ boost::fusion::make_pair<example_keys::row_location>(59)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(25)
+ );
+ gui_root.emplace_right(
+ boost::fusion::make_pair<example_keys::row_location>(55)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(91)
+ )->emplace_left(
+ boost::fusion::make_pair<example_keys::row_location>(51)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(7)
+ );
+ gui_root.emplace_right(
+ boost::fusion::make_pair<example_keys::row_location>(42)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(19)
+ )->emplace_left(
+ boost::fusion::make_pair<example_keys::row_location>(22)
+ , boost::fusion::make_pair<example_keys::row_height>(12)
+ , boost::fusion::make_pair<example_keys::row_priority>(54)
+ );
+ //]
+
+ //[example__gui__binary_node__test
+ {
+ GUIValues bf_vals, pre_vals, post_vals, in_vals;
+ DFGUIValues df_vals;
+ Emplacer emplacer;
+
+ emplacer[bf_vals]
+ (20, 12, 64, 112, 5)(5, 4, 36, 40, 5)(42, 12, 19, 60, 7)
+ (3, 4, 88, 28, 20)(10, 4, 5, 8, 5)(22, 12, 54, 12, 54)
+ (55, 12, 91, 36, 7)(0, 12, 20, 12, 20)(4, 12, 79, 12, 79)
+ (12, 4, 19, 4, 19)(51, 12, 7, 12, 7)(59, 12, 25, 12, 25);
+ emplacer[pre_vals]
+ (20, 12, 64, 112, 5)(5, 4, 36, 40, 5)(3, 4, 88, 28, 20)
+ (0, 12, 20, 12, 20)(4, 12, 79, 12, 79)(10, 4, 5, 8, 5)
+ (12, 4, 19, 4, 19)(42, 12, 19, 60, 7)(22, 12, 54, 12, 54)
+ (55, 12, 91, 36, 7)(51, 12, 7, 12, 7)(59, 12, 25, 12, 25);
+ emplacer[post_vals]
+ (0, 12, 20, 12, 20)(4, 12, 79, 12, 79)(3, 4, 88, 28, 20)
+ (12, 4, 19, 4, 19)(10, 4, 5, 8, 5)(5, 4, 36, 40, 5)
+ (22, 12, 54, 12, 54)(51, 12, 7, 12, 7)(59, 12, 25, 12, 25)
+ (55, 12, 91, 36, 7)(42, 12, 19, 60, 7)(20, 12, 64, 112, 5);
+ emplacer[in_vals]
+ (0, 12, 20, 12, 20)(3, 4, 88, 28, 20)(4, 12, 79, 12, 79)
+ (5, 4, 36, 40, 5)(10, 4, 5, 8, 5)(12, 4, 19, 4, 19)
+ (20, 12, 64, 112, 5)(22, 12, 54, 12, 54)(42, 12, 19, 60, 7)
+ (51, 12, 7, 12, 7)(55, 12, 91, 36, 7)(59, 12, 25, 12, 25);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 20, 12, 64, 112, 5)
+ (boost::tree_node::pre_order_traversal, 5, 4, 36, 40, 5)
+ (boost::tree_node::pre_order_traversal, 3, 4, 88, 28, 20)
+ (boost::tree_node::pre_order_traversal, 0, 12, 20, 12, 20)
+ (boost::tree_node::post_order_traversal, 0, 12, 20, 12, 20)
+ (boost::tree_node::pre_order_traversal, 4, 12, 79, 12, 79)
+ (boost::tree_node::post_order_traversal, 4, 12, 79, 12, 79)
+ (boost::tree_node::post_order_traversal, 3, 4, 88, 28, 20)
+ (boost::tree_node::pre_order_traversal, 10, 4, 5, 8, 5)
+ (boost::tree_node::pre_order_traversal, 12, 4, 19, 4, 19)
+ (boost::tree_node::post_order_traversal, 12, 4, 19, 4, 19)
+ (boost::tree_node::post_order_traversal, 10, 4, 5, 8, 5)
+ (boost::tree_node::post_order_traversal, 5, 4, 36, 40, 5)
+ (boost::tree_node::pre_order_traversal, 42, 12, 19, 60, 7)
+ (boost::tree_node::pre_order_traversal, 22, 12, 54, 12, 54)
+ (boost::tree_node::post_order_traversal, 22, 12, 54, 12, 54)
+ (boost::tree_node::pre_order_traversal, 55, 12, 91, 36, 7)
+ (boost::tree_node::pre_order_traversal, 51, 12, 7, 12, 7)
+ (boost::tree_node::post_order_traversal, 51, 12, 7, 12, 7)
+ (boost::tree_node::pre_order_traversal, 59, 12, 25, 12, 25)
+ (boost::tree_node::post_order_traversal, 59, 12, 25, 12, 25)
+ (boost::tree_node::post_order_traversal, 55, 12, 91, 36, 7)
+ (boost::tree_node::post_order_traversal, 42, 12, 19, 60, 7)
+ (boost::tree_node::post_order_traversal, 20, 12, 64, 112, 5);
+ test_node<gui_node_case>(
+ gui_root
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , in_vals
+ , df_vals
+ );
+ }
+ //]
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ return 0;
+}
+
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+
Added: sandbox/tree_node/libs/tree_node/test/containers.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/test/containers.cpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,1291 @@
+// Copyright (C) 2013 Cromwell D. Enage
+// 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.hpp>
+
+#if defined BOOST_MSVC
+ #pragma warning (push)
+ #pragma warning (disable : 4996) // fn called w/params that may be unsafe
+#endif
+
+#include <set>
+#include <boost/cstdint.hpp>
+#include <boost/tuple/tuple.hpp>
+#include <boost/range/adaptors.hpp>
+#include <boost/range/algorithm/equal.hpp>
+#include <boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/emplace_function_gen.hpp>
+#include <boost/typeof/boost/tree_node/with_count.hpp>
+#include <boost/typeof/boost/tree_node/with_height.hpp>
+#include <boost/typeof/boost/tree_node/with_position.hpp>
+#include <boost/typeof/boost/tree_node/with_red_black_flag.hpp>
+#include <boost/typeof/boost/tree_node/binary_node.hpp>
+#include <boost/tree_node/iterator/breadth_first.hpp>
+#include <boost/tree_node/iterator/breadth_first_descendant.hpp>
+#include <boost/tree_node/iterator/depth_first.hpp>
+#include <boost/tree_node/balancer/adelson_velskii_landis.hpp>
+#include <boost/tree_node/container/binode.hpp>
+#include <boost/tree_node/container/binode_associative.hpp>
+#include <boost/test/minimal.hpp>
+
+template <typename T1, typename T2>
+void test_output_data(::std::pair<T1,T2> const& p)
+{
+ std::cout << '<' << p.first << ", " << p.second << '>';
+}
+
+template <typename T>
+void test_output_data(T const& t)
+{
+ std::cout << t;
+}
+
+template <typename Node>
+void test_red_black_node(Node const& root)
+{
+ typename Node::size_type black_depth = boost::initialized_value;
+ std::cout << std::endl;
+
+ for (
+ boost::tree_node::depth_first_iterator<Node const> itr(root);
+ itr;
+ ++itr
+ )
+ {
+ switch (boost::tree_node::traversal_state(itr))
+ {
+ case boost::tree_node::pre_order_traversal:
+ {
+ ++black_depth;
+
+ for (
+ typename Node::size_type depth = 0;
+ depth < black_depth;
+ ++depth
+ )
+ {
+ std::cout << " ";
+ }
+
+ if (Node const* p = itr->get_parent_ptr())
+ {
+ std::cout << (
+ (&*itr == p->get_left_child_ptr()) ? "left" : "right"
+ );
+ }
+
+ std::cout << '(' << (
+ get(*itr, boost::tree_node::red_flag_key())
+ ? "red,"
+ : "black,"
+ );
+ test_output_data(get(*itr, boost::tree_node::data_key()));
+ std::cout << std::endl;
+ break;
+ }
+
+ case boost::tree_node::post_order_traversal:
+ {
+ for (
+ typename Node::size_type depth = 0;
+ depth < black_depth;
+ ++depth
+ )
+ {
+ std::cout << " ";
+ }
+
+ --black_depth;
+ std::cout << (
+ get(*itr, boost::tree_node::red_flag_key())
+ ? "red,"
+ : "black,"
+ );
+ test_output_data(get(*itr, boost::tree_node::data_key()));
+ std::cout << ')' << std::endl;
+ break;
+ }
+
+ default:
+ {
+ BOOST_CHECK(false);
+ }
+ }
+ }
+
+ BOOST_CHECK(get(root, boost::tree_node::black_flag_key()));
+
+ if (root.empty())
+ {
+ return;
+ }
+
+ for (
+ boost::tree_node::breadth_first_descendant_iterator<Node const> itr(
+ root
+ );
+ itr;
+ ++itr
+ )
+ {
+ if (get(*itr, boost::tree_node::red_flag_key()))
+ {
+ BOOST_CHECK(
+ !itr->get_left_child_ptr() || get(
+ *itr->get_left_child_ptr()
+ , boost::tree_node::black_flag_key()
+ )
+ );
+ BOOST_CHECK(
+ !itr->get_right_child_ptr() || get(
+ *itr->get_right_child_ptr()
+ , boost::tree_node::black_flag_key()
+ )
+ );
+ }
+
+ if (!itr->get_left_child_ptr() || !itr->get_right_child_ptr())
+ {
+ typename Node::size_type depth = boost::initialized_value;
+
+ for (Node const* p = &*itr; p; p = p->get_parent_ptr())
+ {
+ if (get(*p, boost::tree_node::black_flag_key()))
+ {
+ ++depth;
+ }
+ }
+
+ if (black_depth)
+ {
+ BOOST_CHECK(black_depth == depth);
+ }
+ else
+ {
+ black_depth = depth;
+ }
+ }
+ }
+}
+
+template <typename Node>
+void test_avl_node(Node const& root)
+{
+ typename Node::size_type max_depth = boost::initialized_value;
+ std::cout << std::endl;
+
+ for (
+ boost::tree_node::depth_first_iterator<Node const> itr(root);
+ itr;
+ ++itr
+ )
+ {
+ switch (boost::tree_node::traversal_state(itr))
+ {
+ case boost::tree_node::pre_order_traversal:
+ {
+ ++max_depth;
+
+ for (
+ typename Node::size_type depth = 0;
+ depth < max_depth;
+ ++depth
+ )
+ {
+ std::cout << " ";
+ }
+
+ if (Node const* p = itr->get_parent_ptr())
+ {
+ std::cout << (
+ (&*itr == p->get_left_child_ptr()) ? "left" : "right"
+ );
+ }
+
+ std::cout << '(' << get(
+ *itr
+ , boost::tree_node::height_key()
+ ) << ", ";
+ test_output_data(get(*itr, boost::tree_node::data_key()));
+ std::cout << std::endl;
+ break;
+ }
+
+ case boost::tree_node::post_order_traversal:
+ {
+ for (
+ typename Node::size_type depth = 0;
+ depth < max_depth;
+ ++depth
+ )
+ {
+ std::cout << " ";
+ }
+
+ --max_depth;
+ std::cout << get(
+ *itr
+ , boost::tree_node::height_key()
+ ) << ", ";
+ test_output_data(get(*itr, boost::tree_node::data_key()));
+ std::cout << ')' << std::endl;
+ break;
+ }
+
+ default:
+ {
+ BOOST_CHECK(false);
+ }
+ }
+ }
+
+ for (
+ boost::tree_node::breadth_first_iterator<Node const> itr(root);
+ itr;
+ ++itr
+ )
+ {
+ if (itr->get_left_child_ptr())
+ {
+ if (itr->get_right_child_ptr())
+ {
+ BOOST_CHECK(
+ (
+ get(
+ *itr->get_left_child_ptr()
+ , boost::tree_node::height_key()
+ ) == get(
+ *itr->get_right_child_ptr()
+ , boost::tree_node::height_key()
+ )
+ ) || (
+ 1 + get(
+ *itr->get_left_child_ptr()
+ , boost::tree_node::height_key()
+ ) == get(
+ *itr->get_right_child_ptr()
+ , boost::tree_node::height_key()
+ )
+ ) || (
+ get(
+ *itr->get_left_child_ptr()
+ , boost::tree_node::height_key()
+ ) == 1 + get(
+ *itr->get_right_child_ptr()
+ , boost::tree_node::height_key()
+ )
+ )
+ );
+ }
+ else
+ {
+ BOOST_CHECK(
+ !get(
+ *itr->get_left_child_ptr()
+ , boost::tree_node::height_key()
+ )
+ );
+ }
+ }
+ else if (itr->get_right_child_ptr())
+ {
+ BOOST_CHECK(
+ !get(
+ *itr->get_right_child_ptr()
+ , boost::tree_node::height_key()
+ )
+ );
+ }
+ }
+}
+
+template <typename K1, typename V1, typename K2, typename V2>
+bool test_tree_values(std::pair<K1,V1> const& p1, std::pair<K2,V2> const& p2)
+{
+ return (p1.first == p2.first) && (p1.second == p2.second);
+}
+
+template <typename T1, typename T2>
+bool test_tree_values(T1 const& t1, T2 const& t2)
+{
+ return t1 == t2;
+}
+
+struct test_equal_trees_predicate
+{
+ template <typename T1, typename T2>
+ bool operator()(T1 const& t1, T2 const& t2) const
+ {
+ return test_tree_values(t1, t2);
+ }
+};
+
+template <typename Tree, typename Values>
+void test_tree_container(Tree const& tree, Values const& values)
+{
+ BOOST_CHECK(tree.empty() == values.empty());
+ BOOST_CHECK(tree.size() == values.size());
+ BOOST_CHECK(
+ boost::range::equal(tree, values, test_equal_trees_predicate())
+ );
+
+ typename Tree::const_reverse_iterator t_rend = tree.crend();
+ typename Values::const_reverse_iterator v_ritr = values.rbegin();
+ typename Values::const_reverse_iterator v_rend = values.rend();
+
+ for (
+ typename Tree::const_reverse_iterator t_ritr = tree.crbegin();
+ t_ritr != t_rend;
+ ++t_ritr
+ )
+ {
+ if (v_ritr == v_rend)
+ {
+ BOOST_CHECK(false);
+ break;
+ }
+
+ BOOST_CHECK(test_tree_values(*t_ritr, *v_ritr));
+ ++v_ritr;
+ }
+
+ BOOST_CHECK(v_ritr == v_rend);
+
+ typename Tree::size_type index = 0;
+ typename Tree::const_iterator t_end = tree.cend();
+
+ for (
+ typename Tree::const_iterator t_itr = tree.cbegin();
+ t_itr != t_end;
+ ++t_itr
+ )
+ {
+ BOOST_CHECK(test_tree_values(tree[index], *t_itr));
+ ++index;
+ }
+}
+
+template <typename Tree, typename Values>
+void test_clear(Tree& tree, Values& values)
+{
+ tree.clear();
+ values.clear();
+ test_tree_container(tree, values);
+}
+
+typedef std::deque<boost::int32_t>
+ ValueSequence;
+typedef boost::tree_node::with_red_black_flag_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::binary_node_base_gen<>
+ >
+ >
+ RedBlackNodeGen;
+typedef boost::tree_node::binode_container<RedBlackNodeGen,boost::int32_t>
+ RedBlackTreeSequence;
+
+void
+ test_push_front(
+ RedBlackTreeSequence& red_black_tree
+ , ValueSequence& values
+ , RedBlackTreeSequence::value_type t
+ )
+{
+ red_black_tree.push_front(t);
+ std::cout << std::endl << "After red_black_tree.push_front(" << t << "):";
+ test_red_black_node(*red_black_tree.data());
+ values.push_front(t);
+ test_tree_container(red_black_tree, values);
+}
+
+void
+ test_push_back(
+ RedBlackTreeSequence& red_black_tree
+ , ValueSequence& values
+ , RedBlackTreeSequence::value_type t
+ )
+{
+ red_black_tree.push_back(t);
+ std::cout << std::endl << "After red_black_tree.push_back(" << t << "):";
+ test_red_black_node(*red_black_tree.data());
+ values.push_back(t);
+ test_tree_container(red_black_tree, values);
+}
+
+void
+ test_pop_front(
+ RedBlackTreeSequence& red_black_tree
+ , ValueSequence& values
+ )
+{
+ red_black_tree.pop_front();
+ std::cout << std::endl << "After red_black_tree.pop_front():";
+ test_red_black_node(*red_black_tree.data());
+ values.pop_front();
+ test_tree_container(red_black_tree, values);
+}
+
+void
+ test_pop_back(
+ RedBlackTreeSequence& red_black_tree
+ , ValueSequence& values
+ )
+{
+ red_black_tree.pop_back();
+ std::cout << std::endl << "After red_black_tree.pop_back():";
+ test_red_black_node(*red_black_tree.data());
+ values.pop_back();
+ test_tree_container(red_black_tree, values);
+}
+
+void
+ test_insert(
+ RedBlackTreeSequence& red_black_tree
+ , ValueSequence& values
+ , RedBlackTreeSequence::size_type index
+ , RedBlackTreeSequence::value_type t
+ )
+{
+ red_black_tree.insert(red_black_tree.begin() + index, t);
+ std::cout << std::endl << "After red_black_tree.insert[" << index << "](";
+ std::cout << t << "):";
+ test_red_black_node(*red_black_tree.data());
+ values.insert(values.begin() + index, t);
+ test_tree_container(red_black_tree, values);
+}
+
+void
+ test_erase(
+ RedBlackTreeSequence& red_black_tree
+ , ValueSequence& values
+ , RedBlackTreeSequence::size_type index
+ )
+{
+ RedBlackTreeSequence::iterator tree_itr = red_black_tree.erase(
+ red_black_tree.begin() + index
+ );
+
+ if (index == red_black_tree.size())
+ {
+ BOOST_CHECK(tree_itr == red_black_tree.end());
+ }
+ else
+ {
+ BOOST_CHECK(test_tree_values(*tree_itr, red_black_tree[index]));
+ }
+
+ std::cout << std::endl << "After red_black_tree.erase[" << index << "]:";
+ test_red_black_node(*red_black_tree.data());
+ values.erase(values.begin() + index);
+ test_tree_container(red_black_tree, values);
+}
+
+typedef boost::tree_node::with_height_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::binary_node_base_gen<>
+ >
+ >
+ AVLNodeGen;
+typedef boost::tree_node::binode_container<
+ AVLNodeGen
+ , boost::int32_t
+ , boost::tree_node::adelson_velskii_landis_balancer
+ >
+ AVLTreeSequence;
+
+void
+ test_push_front(
+ AVLTreeSequence& avl_tree
+ , ValueSequence& values
+ , AVLTreeSequence::value_type t
+ )
+{
+ avl_tree.push_front(t);
+ std::cout << std::endl << "After avl_tree.push_front(" << t << "):";
+ test_avl_node(*avl_tree.data());
+ values.push_front(t);
+ test_tree_container(avl_tree, values);
+}
+
+void
+ test_push_back(
+ AVLTreeSequence& avl_tree
+ , ValueSequence& values
+ , AVLTreeSequence::value_type t
+ )
+{
+ avl_tree.push_back(t);
+ std::cout << std::endl << "After avl_tree.push_back(" << t << "):";
+ test_avl_node(*avl_tree.data());
+ values.push_back(t);
+ test_tree_container(avl_tree, values);
+}
+
+void test_pop_front(AVLTreeSequence& avl_tree, ValueSequence& values)
+{
+ avl_tree.pop_front();
+ std::cout << std::endl << "After avl_tree.pop_front():";
+ test_avl_node(*avl_tree.data());
+ values.pop_front();
+ test_tree_container(avl_tree, values);
+}
+
+void test_pop_back(AVLTreeSequence& avl_tree, ValueSequence& values)
+{
+ avl_tree.pop_back();
+ std::cout << std::endl << "After avl_tree.pop_back():";
+ test_avl_node(*avl_tree.data());
+ values.pop_back();
+ test_tree_container(avl_tree, values);
+}
+
+void
+ test_insert(
+ AVLTreeSequence& avl_tree
+ , ValueSequence& values
+ , AVLTreeSequence::size_type index
+ , AVLTreeSequence::value_type t
+ )
+{
+ avl_tree.insert(avl_tree.begin() + index, t);
+ std::cout << std::endl << "After avl_tree.insert[" << index << "](";
+ std::cout << t << "):";
+ test_avl_node(*avl_tree.data());
+ values.insert(values.begin() + index, t);
+ test_tree_container(avl_tree, values);
+}
+
+void
+ test_erase(
+ AVLTreeSequence& avl_tree
+ , ValueSequence& values
+ , AVLTreeSequence::size_type index
+ )
+{
+ AVLTreeSequence::iterator tree_itr = avl_tree.erase(
+ avl_tree.begin() + index
+ );
+
+ if (index == avl_tree.size())
+ {
+ BOOST_CHECK(tree_itr == avl_tree.end());
+ }
+ else
+ {
+ BOOST_CHECK(test_tree_values(*tree_itr, avl_tree[index]));
+ }
+
+ std::cout << std::endl << "After avl_tree.erase[" << index << "]:";
+ test_avl_node(*avl_tree.data());
+ values.erase(values.begin() + index);
+ test_tree_container(avl_tree, values);
+}
+
+template <typename TreeSequence>
+void test_sequence(TreeSequence& tree_sequence, ValueSequence& values)
+{
+ BOOST_CHECK(tree_sequence.empty());
+ BOOST_CHECK(0 == tree_sequence.size());
+
+ for (boost::int32_t i = -5; -15 < i; --i)
+ {
+ test_push_back(tree_sequence, values, i);
+ }
+
+ for (boost::int32_t i = 5; i < 15; ++i)
+ {
+ test_push_front(tree_sequence, values, i);
+ }
+
+ test_pop_back(tree_sequence, values);
+ test_pop_front(tree_sequence, values);
+ typename TreeSequence::size_type index = 0;
+
+ for (boost::int32_t i = -4; i < 5; ++i)
+ {
+ test_insert(tree_sequence, values, index += 2, i);
+ }
+}
+
+void test_red_black_sequence()
+{
+ RedBlackTreeSequence red_black_tree;
+ ValueSequence values;
+
+ test_sequence(red_black_tree, values);
+
+ RedBlackTreeSequence red_black_copy;
+ ValueSequence value_copies;
+
+ for (
+ RedBlackTreeSequence::size_type index = 0;
+ index + 1 < red_black_tree.size();
+ ++index
+ )
+ {
+ red_black_copy = red_black_tree;
+ value_copies = values;
+
+ if (!index)
+ {
+ test_tree_container(red_black_copy, value_copies);
+ }
+
+ test_erase(red_black_copy, value_copies, index);
+
+ switch (index)
+ {
+ case 2:
+ {
+ test_erase(red_black_copy, value_copies, 1);
+ break;
+ }
+
+ case 4:
+ {
+ test_erase(red_black_copy, value_copies, 4);
+ break;
+ }
+
+ default:
+ {
+ break;
+ }
+ }
+ }
+}
+
+void test_avl_sequence()
+{
+ AVLTreeSequence avl_tree;
+ ValueSequence values;
+
+ test_sequence(avl_tree, values);
+
+ AVLTreeSequence avl_copy;
+ ValueSequence value_copies;
+
+ for (
+ AVLTreeSequence::size_type index = 0;
+ index + 1 < avl_tree.size();
+ ++index
+ )
+ {
+ avl_copy = avl_tree;
+ value_copies = values;
+
+ if (!index)
+ {
+ test_tree_container(avl_copy, value_copies);
+ }
+
+ test_erase(avl_copy, value_copies, index);
+
+ switch (index)
+ {
+ case 0:
+ {
+ test_erase(avl_copy, value_copies, 0);
+ break;
+ }
+
+ case 1:
+ {
+ test_erase(avl_copy, value_copies, 1);
+ break;
+ }
+
+ case 3:
+ {
+ test_erase(avl_copy, value_copies, 5);
+ break;
+ }
+
+ case 4:
+ {
+ test_erase(avl_copy, value_copies, 4);
+ break;
+ }
+
+ default:
+ {
+ break;
+ }
+ }
+ }
+}
+
+typedef std::set<boost::int32_t>
+ ValueSet;
+typedef std::map<boost::int32_t,boost::int32_t>
+ ValueMap;
+
+void test_value_insert(ValueSet& values, ValueSet::key_type const& key)
+{
+ values.insert(key);
+}
+
+void test_value_insert(ValueMap& values, ValueMap::key_type const& key)
+{
+ values.insert(ValueMap::value_type(key, key));
+}
+
+typedef boost::tree_node::binode_set<RedBlackNodeGen,boost::int32_t>
+ RedBlackTreeSet;
+
+void
+ test_insert(
+ RedBlackTreeSet& red_black_tree
+ , ValueSet& values
+ , RedBlackTreeSet::key_type const& key
+ )
+{
+ std::pair<RedBlackTreeSet::iterator,bool> p = red_black_tree.insert(key);
+
+ if (values.insert(key).second)
+ {
+ BOOST_CHECK(p.second);
+ std::cout << std::endl << "After inserting " << key << ':';
+ test_red_black_node(*red_black_tree.data());
+ BOOST_CHECK(*p.first == key);
+ BOOST_CHECK(p.first == red_black_tree.find(key));
+ BOOST_CHECK(!red_black_tree.empty());
+ test_tree_container(red_black_tree, values);
+ }
+ else
+ {
+ BOOST_CHECK(!p.second);
+ }
+}
+
+void
+ test_erase(
+ RedBlackTreeSet& red_black_tree
+ , ValueSet& values
+ , RedBlackTreeSet::key_type const& key
+ )
+{
+ BOOST_CHECK(red_black_tree.erase(key) == values.erase(key));
+ std::cout << std::endl << "After erasing " << key;
+
+ if (red_black_tree.empty())
+ {
+ std::cout << ", red_black_tree is empty." << std::endl;
+ }
+ {
+ std::cout << ':';
+ test_red_black_node(*red_black_tree.data());
+ }
+
+ test_tree_container(red_black_tree, values);
+}
+
+typedef boost::tree_node::binode_map<
+ RedBlackNodeGen
+ , boost::int32_t
+ , boost::int32_t
+ >
+ RedBlackTreeMap;
+
+void
+ test_insert(
+ RedBlackTreeMap& red_black_tree
+ , ValueMap& values
+ , RedBlackTreeMap::key_type const& key
+ )
+{
+ std::pair<RedBlackTreeMap::iterator,bool> p = red_black_tree.emplace(
+ key
+ , key
+ );
+
+ if (values.insert(ValueMap::value_type(key, key)).second)
+ {
+ BOOST_CHECK(p.second);
+ std::cout << std::endl << "After emplacing " << key << ':';
+ test_red_black_node(*red_black_tree.data());
+ BOOST_CHECK(p.first->first == key);
+ BOOST_CHECK(p.first->second == key);
+ BOOST_CHECK(p.first == red_black_tree.find(key));
+ BOOST_CHECK(!red_black_tree.empty());
+ test_tree_container(red_black_tree, values);
+ }
+ else
+ {
+ BOOST_CHECK(!p.second);
+ }
+}
+
+void
+ test_erase(
+ RedBlackTreeMap& red_black_tree
+ , ValueMap& values
+ , RedBlackTreeMap::key_type const& key
+ )
+{
+ BOOST_CHECK(red_black_tree.erase(key) == values.erase(key));
+ std::cout << std::endl << "After erasing " << key;
+
+ if (red_black_tree.empty())
+ {
+ std::cout << ", red_black_tree is empty." << std::endl;
+ }
+ {
+ std::cout << ':';
+ test_red_black_node(*red_black_tree.data());
+ }
+
+ test_tree_container(red_black_tree, values);
+}
+
+template <typename Tree, typename Values>
+void test_red_black_tree()
+{
+ Tree red_black_tree;
+ Values values;
+
+ BOOST_CHECK(red_black_tree.empty());
+ BOOST_CHECK(0 == red_black_tree.size());
+ test_insert(red_black_tree, values, 1);
+ test_insert(red_black_tree, values, 2);
+ test_insert(red_black_tree, values, 4);
+ test_insert(red_black_tree, values, 3);
+ test_erase(red_black_tree, values, 1);
+ test_clear(red_black_tree, values);
+ test_insert(red_black_tree, values, -1);
+ test_insert(red_black_tree, values, -2);
+ test_insert(red_black_tree, values, -4);
+ test_insert(red_black_tree, values, -3);
+ test_erase(red_black_tree, values, -1);
+ test_clear(red_black_tree, values);
+
+ for (int i = 5; i < 10; ++i)
+ {
+ test_insert(red_black_tree, values, i);
+ }
+
+ for (int i = 15; 9 < i; --i)
+ {
+ test_insert(red_black_tree, values, i);
+ }
+
+ test_erase(red_black_tree, values, 5);
+ test_clear(red_black_tree, values);
+
+ for (int i = 5; i < 10; ++i)
+ {
+ test_insert(red_black_tree, values, -i);
+ }
+
+ for (int i = 15; 9 < i; --i)
+ {
+ test_insert(red_black_tree, values, -i);
+ }
+
+ test_erase(red_black_tree, values, -5);
+ test_clear(red_black_tree, values);
+ test_insert(red_black_tree, values, 13);
+ test_insert(red_black_tree, values, 8);
+ test_insert(red_black_tree, values, 1);
+ test_insert(red_black_tree, values, 6);
+ test_insert(red_black_tree, values, 11);
+ test_insert(red_black_tree, values, 17);
+ test_insert(red_black_tree, values, 15);
+ test_insert(red_black_tree, values, 22);
+ test_insert(red_black_tree, values, 25);
+ test_insert(red_black_tree, values, 28);
+
+ Tree red_black_copy(red_black_tree);
+
+ test_tree_container(red_black_copy, values);
+ test_insert(red_black_copy, values, 26);
+ test_insert(red_black_copy, values, 27);
+ test_erase(red_black_copy, values, 15);
+ test_value_insert(values, 15);
+ values.erase(27);
+ values.erase(26);
+ test_insert(red_black_tree, values, 20);
+ test_insert(red_black_tree, values, 21);
+ red_black_copy = red_black_tree;
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, 11);
+ red_black_copy = red_black_tree;
+ test_value_insert(values, 11);
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, 15);
+ test_clear(red_black_tree, values);
+ test_insert(red_black_tree, values, -13);
+ test_insert(red_black_tree, values, -8);
+ test_insert(red_black_tree, values, -1);
+ test_insert(red_black_tree, values, -6);
+ test_insert(red_black_tree, values, -11);
+ test_insert(red_black_tree, values, -17);
+ test_insert(red_black_tree, values, -15);
+ test_insert(red_black_tree, values, -22);
+ test_insert(red_black_tree, values, -25);
+ test_insert(red_black_tree, values, -28);
+ red_black_copy = red_black_tree;
+ test_tree_container(red_black_copy, values);
+ test_insert(red_black_copy, values, -26);
+ test_insert(red_black_copy, values, -27);
+ test_erase(red_black_copy, values, -15);
+ test_value_insert(values, -15);
+ values.erase(-27);
+ values.erase(-26);
+ test_insert(red_black_tree, values, -20);
+ test_insert(red_black_tree, values, -21);
+ red_black_copy = red_black_tree;
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, -11);
+ red_black_copy = red_black_tree;
+ test_value_insert(values, -11);
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, -15);
+ test_clear(red_black_tree, values);
+ test_insert(red_black_tree, values, 8);
+ test_insert(red_black_tree, values, 4);
+ test_insert(red_black_tree, values, 9);
+ test_insert(red_black_tree, values, 2);
+ test_insert(red_black_tree, values, 6);
+ test_insert(red_black_tree, values, 1);
+ test_insert(red_black_tree, values, 3);
+ test_insert(red_black_tree, values, 5);
+ test_insert(red_black_tree, values, 7);
+ red_black_copy = red_black_tree;
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, 9);
+ test_erase(red_black_copy, values, 2);
+ test_erase(red_black_copy, values, 3);
+ test_erase(red_black_copy, values, 1);
+ test_clear(red_black_tree, values);
+ test_insert(red_black_tree, values, -8);
+ test_insert(red_black_tree, values, -4);
+ test_insert(red_black_tree, values, -9);
+ test_insert(red_black_tree, values, -2);
+ test_insert(red_black_tree, values, -6);
+ test_insert(red_black_tree, values, -1);
+ test_insert(red_black_tree, values, -3);
+ test_insert(red_black_tree, values, -5);
+ test_insert(red_black_tree, values, -7);
+ red_black_copy = red_black_tree;
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, -9);
+ test_erase(red_black_copy, values, -2);
+ test_erase(red_black_copy, values, -3);
+ test_erase(red_black_copy, values, -1);
+ test_clear(red_black_tree, values);
+
+ for (int i = 1; i < 10; ++i)
+ {
+ test_insert(red_black_tree, values, i);
+ }
+
+ for (int i = 15; 9 < i; --i)
+ {
+ test_insert(red_black_tree, values, i);
+ }
+
+ red_black_copy = red_black_tree;
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, 1);
+ red_black_copy = red_black_tree;
+ test_value_insert(values, 1);
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, 3);
+ red_black_copy = red_black_tree;
+ test_value_insert(values, 3);
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, 5);
+ red_black_copy = red_black_tree;
+ test_value_insert(values, 5);
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, 7);
+ test_erase(red_black_copy, values, 6);
+ test_erase(red_black_copy, values, 5);
+ test_erase(red_black_copy, values, 8);
+ test_erase(red_black_copy, values, 9);
+ red_black_copy = red_black_tree;
+ test_value_insert(values, 9);
+ test_value_insert(values, 8);
+ test_value_insert(values, 5);
+ test_value_insert(values, 6);
+ test_value_insert(values, 7);
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, 15);
+ test_clear(red_black_tree, values);
+
+ for (int i = 1; i < 10; ++i)
+ {
+ test_insert(red_black_tree, values, -i);
+ }
+
+ for (int i = 15; 9 < i; --i)
+ {
+ test_insert(red_black_tree, values, -i);
+ }
+
+ red_black_copy = red_black_tree;
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, -1);
+ red_black_copy = red_black_tree;
+ test_value_insert(values, -1);
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, -3);
+ red_black_copy = red_black_tree;
+ test_value_insert(values, -3);
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, -5);
+ red_black_copy = red_black_tree;
+ test_value_insert(values, -5);
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, -7);
+ test_erase(red_black_copy, values, -6);
+ test_erase(red_black_copy, values, -5);
+ test_erase(red_black_copy, values, -8);
+ test_erase(red_black_copy, values, -9);
+ red_black_copy = red_black_tree;
+ test_value_insert(values, -9);
+ test_value_insert(values, -8);
+ test_value_insert(values, -5);
+ test_value_insert(values, -6);
+ test_value_insert(values, -7);
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, -15);
+ test_clear(red_black_tree, values);
+
+ for (int i = 1; i < 16; ++i)
+ {
+ test_insert(red_black_tree, values, i);
+ }
+
+ test_erase(red_black_tree, values, 5);
+ test_clear(red_black_tree, values);
+
+ for (int i = 1; i < 16; ++i)
+ {
+ test_insert(red_black_tree, values, -i);
+ }
+
+ test_erase(red_black_tree, values, -5);
+ test_clear(red_black_tree, values);
+ test_insert(red_black_tree, values, 0);
+ test_insert(red_black_tree, values, -8);
+ test_insert(red_black_tree, values, 8);
+ test_insert(red_black_tree, values, -16);
+ test_insert(red_black_tree, values, -4);
+ test_insert(red_black_tree, values, 4);
+ test_insert(red_black_tree, values, 16);
+ test_insert(red_black_tree, values, -18);
+ test_insert(red_black_tree, values, -12);
+ test_insert(red_black_tree, values, -6);
+ test_insert(red_black_tree, values, -2);
+ test_insert(red_black_tree, values, 2);
+ test_insert(red_black_tree, values, 6);
+ test_insert(red_black_tree, values, 12);
+ test_insert(red_black_tree, values, 18);
+ test_insert(red_black_tree, values, -19);
+ test_insert(red_black_tree, values, -17);
+ test_insert(red_black_tree, values, -14);
+ test_insert(red_black_tree, values, -10);
+ test_insert(red_black_tree, values, -7);
+ test_insert(red_black_tree, values, -5);
+ test_insert(red_black_tree, values, -3);
+ test_insert(red_black_tree, values, -1);
+ test_insert(red_black_tree, values, 1);
+ test_insert(red_black_tree, values, 3);
+ test_insert(red_black_tree, values, 5);
+ test_insert(red_black_tree, values, 7);
+ test_insert(red_black_tree, values, 10);
+ test_insert(red_black_tree, values, 14);
+ test_insert(red_black_tree, values, 17);
+ test_insert(red_black_tree, values, 19);
+ test_insert(red_black_tree, values, -15);
+ test_insert(red_black_tree, values, -13);
+ test_insert(red_black_tree, values, -11);
+ test_insert(red_black_tree, values, -9);
+ test_insert(red_black_tree, values, 9);
+ test_insert(red_black_tree, values, 11);
+ test_insert(red_black_tree, values, 13);
+ test_insert(red_black_tree, values, 15);
+ test_erase(red_black_tree, values, -19);
+ test_erase(red_black_tree, values, -17);
+ test_erase(red_black_tree, values, -7);
+ test_erase(red_black_tree, values, -5);
+ test_erase(red_black_tree, values, -3);
+ test_erase(red_black_tree, values, -1);
+ test_erase(red_black_tree, values, 1);
+ test_erase(red_black_tree, values, 3);
+ test_erase(red_black_tree, values, 5);
+ test_erase(red_black_tree, values, 7);
+ test_erase(red_black_tree, values, 17);
+ test_erase(red_black_tree, values, 19);
+ red_black_copy = red_black_tree;
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, 0);
+ test_erase(red_black_copy, values, 2);
+ test_value_insert(values, 2);
+ test_value_insert(values, 0);
+ red_black_copy = red_black_tree;
+ test_tree_container(red_black_copy, values);
+ test_erase(red_black_copy, values, -2);
+ test_erase(red_black_copy, values, 0);
+}
+
+typedef boost::tree_node::binode_set<
+ AVLNodeGen
+ , boost::int32_t
+ , boost::default_ordering_selector
+ , boost::tree_node::adelson_velskii_landis_balancer
+ >
+ AVLTreeSet;
+
+void
+ test_insert(
+ AVLTreeSet& avl_tree
+ , ValueSet& values
+ , AVLTreeSet::key_type const& key
+ )
+{
+ std::pair<AVLTreeSet::iterator,bool> p = avl_tree.insert(key);
+
+ if (values.insert(key).second)
+ {
+ BOOST_CHECK(p.second);
+ std::cout << std::endl << "After inserting " << key << ':';
+ test_avl_node(*avl_tree.data());
+ BOOST_CHECK(*p.first == key);
+ BOOST_CHECK(p.first == avl_tree.find(key));
+ BOOST_CHECK(!avl_tree.empty());
+ test_tree_container(avl_tree, values);
+ }
+ else
+ {
+ BOOST_CHECK(!p.second);
+ }
+}
+
+void
+ test_erase(
+ AVLTreeSet& avl_tree
+ , ValueSet& values
+ , AVLTreeSet::key_type const& key
+ )
+{
+ BOOST_CHECK(avl_tree.erase(key) == values.erase(key));
+ std::cout << std::endl << "After erasing " << key;
+
+ if (avl_tree.empty())
+ {
+ std::cout << ", avl_tree is empty." << std::endl;
+ }
+ else
+ {
+ std::cout << ':';
+ test_avl_node(*avl_tree.data());
+ }
+
+ test_tree_container(avl_tree, values);
+}
+
+typedef boost::tree_node::binode_map<
+ AVLNodeGen
+ , boost::int32_t
+ , boost::int32_t
+ , boost::default_ordering_selector
+ , boost::tree_node::adelson_velskii_landis_balancer
+ >
+ AVLTreeMap;
+
+void
+ test_insert(
+ AVLTreeMap& avl_tree
+ , ValueMap& values
+ , AVLTreeMap::key_type const& key
+ )
+{
+ std::pair<AVLTreeMap::iterator,bool> p = avl_tree.emplace(key, key);
+
+ if (values.insert(ValueMap::value_type(key, key)).second)
+ {
+ BOOST_CHECK(p.second);
+ std::cout << std::endl << "After emplacing " << key << ':';
+ test_avl_node(*avl_tree.data());
+ BOOST_CHECK(p.first->first == key);
+ BOOST_CHECK(p.first->second == key);
+ BOOST_CHECK(p.first == avl_tree.find(key));
+ BOOST_CHECK(!avl_tree.empty());
+ test_tree_container(avl_tree, values);
+ }
+ else
+ {
+ BOOST_CHECK(!p.second);
+ }
+}
+
+void
+ test_erase(
+ AVLTreeMap& avl_tree
+ , ValueMap& values
+ , AVLTreeMap::key_type const& key
+ )
+{
+ BOOST_CHECK(avl_tree.erase(key) == values.erase(key));
+ std::cout << std::endl << "After erasing " << key;
+
+ if (avl_tree.empty())
+ {
+ std::cout << ", avl_tree is empty." << std::endl;
+ }
+ else
+ {
+ std::cout << ':';
+ test_avl_node(*avl_tree.data());
+ }
+
+ test_tree_container(avl_tree, values);
+}
+
+template <typename Tree, typename Values>
+void test_avl_tree()
+{
+ Tree avl_tree;
+ Values values;
+
+ BOOST_CHECK(avl_tree.empty());
+ BOOST_CHECK(0 == avl_tree.size());
+
+ test_insert(avl_tree, values, 13);
+ test_insert(avl_tree, values, 8);
+ test_insert(avl_tree, values, 1);
+ test_insert(avl_tree, values, 6);
+ test_insert(avl_tree, values, 11);
+ test_insert(avl_tree, values, 17);
+ test_insert(avl_tree, values, 15);
+ test_insert(avl_tree, values, 22);
+ test_insert(avl_tree, values, 25);
+ test_insert(avl_tree, values, 27);
+ test_insert(avl_tree, values, 20);
+ test_insert(avl_tree, values, 21);
+ test_erase(avl_tree, values, 1);
+ test_erase(avl_tree, values, 11);
+ test_erase(avl_tree, values, 15);
+}
+
+int test_main(int argc, char** argv)
+{
+ test_red_black_sequence();
+ test_avl_sequence();
+ test_red_black_tree<RedBlackTreeSet,ValueSet>();
+ test_red_black_tree<RedBlackTreeMap,ValueMap>();
+ test_avl_tree<AVLTreeSet,ValueSet>();
+ test_avl_tree<AVLTreeMap,ValueMap>();
+ return 0;
+}
+
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+
Added: sandbox/tree_node/libs/tree_node/test/iterator_functions.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/test/iterator_functions.hpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,1471 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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)
+
+#ifndef LIBS_TREE_NODE_TEST_ITERATOR_FUNCTIONS_HPP_INCLUDED
+#define LIBS_TREE_NODE_TEST_ITERATOR_FUNCTIONS_HPP_INCLUDED
+
+#include <iterator>
+#include <algorithm>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/tree_node/key/data.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/iterator/breadth_first.hpp>
+#include <boost/tree_node/iterator/breadth_first_descendant.hpp>
+#include <boost/tree_node/iterator/pre_order.hpp>
+#include <boost/tree_node/iterator/pre_order_descendant.hpp>
+#include <boost/tree_node/iterator/post_order.hpp>
+#include <boost/tree_node/iterator/post_order_descendant.hpp>
+#include <boost/tree_node/iterator/depth_first.hpp>
+#include <boost/tree_node/iterator/depth_first_descendant.hpp>
+#include <boost/tree_node/iterator/in_order.hpp>
+#include <boost/tree_node/iterator/dereference.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include "../example/type_definitions.hpp"
+#include <boost/test/minimal.hpp>
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/mpl/not.hpp>
+#include <boost/fusion/container/map/convert.hpp>
+#include <boost/fusion/sequence/comparison.hpp>
+#include <boost/fusion/view/filter_view.hpp>
+#include <boost/tree_node/intrinsic/get_properties.hpp>
+
+struct test_no_position_predicate
+{
+ template <typename T>
+ struct apply
+ : boost::mpl::not_<
+ std::tr1::is_same<
+ typename boost::fusion::result_of::first<T>::type
+ , boost::tree_node::position_key
+ >
+ >
+ {
+ };
+};
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+//[test__node__children
+template <typename Node>
+void test_children(Node const& node)
+{
+ typename Node::const_iterator iend = node.end();
+
+ for (typename Node::const_iterator itr = node.begin(); itr != iend; ++itr)
+ {
+ // dereference_iterator() calls must be fully qualified here.
+ BOOST_CHECK(
+ boost::tree_node::dereference_iterator(
+ itr
+ ).get_parent_ptr() == &node
+ );
+//<-
+#if defined BOOST_TYPEOF_NATIVE
+//->
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr)
+ , boost::tree_node::position_key()
+ ) == itr
+ );
+//<-
+#endif
+//->
+ }
+}
+//]
+
+//[test__node__case_and_tag_types
+enum test_case
+{
+ a_node_case
+ , f_node_case
+ , gui_node_case
+};
+
+template <test_case c>
+struct test_tag
+{
+};
+
+template <test_case c>
+struct test_df_tag
+{
+};
+
+template <test_case c>
+struct test_associative_tag
+{
+};
+
+template <test_case c>
+struct test_df_associative_tag
+{
+};
+//]
+
+template <typename TreeItr, typename Itr>
+void test_contents(TreeItr tree_itr, Itr itr, test_tag<a_node_case>)
+{
+ BOOST_CHECK(
+ get(
+ dereference_iterator(tree_itr)
+ , boost::tree_node::data_key()
+ ) == boost::get<0>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ dereference_iterator(tree_itr)
+ , boost::tree_node::height_key()
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ dereference_iterator(tree_itr)
+ , boost::tree_node::count_key()
+ ) == boost::get<2>(*itr)
+ );
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ BOOST_CHECK(
+ boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ dereference_iterator(tree_itr)
+ ) == boost::get<3>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuHeightKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<4>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuCountKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<5>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuAccuKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<6>(*itr)
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ test_children(dereference_iterator(tree_itr));
+}
+
+template <typename TreeItr, typename Itr>
+void test_contents(TreeItr tree_itr, Itr itr, test_df_tag<a_node_case>)
+{
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(tree_itr) == boost::get<0>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ dereference_iterator(tree_itr)
+ , boost::tree_node::data_key()
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ dereference_iterator(tree_itr)
+ , boost::tree_node::height_key()
+ ) == boost::get<2>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ dereference_iterator(tree_itr)
+ , boost::tree_node::count_key()
+ ) == boost::get<3>(*itr)
+ );
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ BOOST_CHECK(
+ boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ dereference_iterator(tree_itr)
+ ) == boost::get<4>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuHeightKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<5>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuCountKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<6>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuAccuKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<7>(*itr)
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ test_children(dereference_iterator(tree_itr));
+}
+
+template <typename TreeItr, typename Itr>
+void
+ test_contents(TreeItr tree_itr, Itr itr, test_associative_tag<a_node_case>)
+{
+ BOOST_CHECK(tree_itr->first == boost::get<0>(*itr));
+ BOOST_CHECK(
+ get(
+ dereference_iterator(tree_itr)
+ , boost::tree_node::data_key()
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ dereference_iterator(tree_itr)
+ , boost::tree_node::height_key()
+ ) == boost::get<2>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ dereference_iterator(tree_itr)
+ , boost::tree_node::count_key()
+ ) == boost::get<3>(*itr)
+ );
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ BOOST_CHECK(
+ boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ dereference_iterator(tree_itr)
+ ) == boost::get<4>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuHeightKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<5>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuCountKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<6>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuAccuKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<7>(*itr)
+ );
+#endif // BOOST_NO_SFINAE
+ test_children(dereference_iterator(tree_itr));
+}
+
+template <typename TreeItr, typename Itr>
+void
+ test_contents(
+ TreeItr tree_itr
+ , Itr itr
+ , test_df_associative_tag<a_node_case>
+ )
+{
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(tree_itr) == boost::get<0>(*itr)
+ );
+ BOOST_CHECK(tree_itr->first == boost::get<1>(*itr));
+ BOOST_CHECK(
+ get(
+ dereference_iterator(tree_itr)
+ , boost::tree_node::data_key()
+ ) == boost::get<2>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ dereference_iterator(tree_itr)
+ , boost::tree_node::height_key()
+ ) == boost::get<3>(*itr)
+ );
+ BOOST_CHECK(
+ get(
+ dereference_iterator(tree_itr)
+ , boost::tree_node::count_key()
+ ) == boost::get<4>(*itr)
+ );
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ BOOST_CHECK(
+ boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ dereference_iterator(tree_itr)
+ ) == boost::get<5>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuHeightKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<6>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuCountKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<7>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuAccuKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<8>(*itr)
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ test_children(dereference_iterator(tree_itr));
+}
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+template <typename TreeItr, typename Itr>
+void test_contents(TreeItr tree_itr, Itr itr, test_tag<f_node_case>)
+{
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_uint>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<0>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_char>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuYourUintKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<2>(*itr)
+ );
+}
+
+template <typename TreeItr, typename Itr>
+void test_contents(TreeItr tree_itr, Itr itr, test_df_tag<f_node_case>)
+{
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(tree_itr) == boost::get<0>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_uint>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_char>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<2>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuYourUintKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<3>(*itr)
+ );
+}
+
+template <typename TreeItr, typename Itr>
+void
+ test_contents(TreeItr tree_itr, Itr itr, test_associative_tag<f_node_case>)
+{
+ BOOST_CHECK(tree_itr->first == boost::get<0>(*itr));
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_uint>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_char>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<2>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuYourUintKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<3>(*itr)
+ );
+}
+
+template <typename TreeItr, typename Itr>
+void
+ test_contents(
+ TreeItr tree_itr
+ , Itr itr
+ , test_df_associative_tag<f_node_case>
+ )
+{
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(tree_itr) == boost::get<0>(*itr)
+ );
+ BOOST_CHECK(tree_itr->first == boost::get<1>(*itr));
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_uint>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<2>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::your_char>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<3>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuYourUintKey>(
+ boost::tree_node::dereference_iterator(tree_itr)
+ ) == boost::get<4>(*itr)
+ );
+}
+
+//[test__node__iterator_contents__gui_case
+template <typename TreeItr, typename Itr>
+void test_contents(TreeItr tree_itr, Itr itr, test_tag<gui_node_case>)
+{
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::row_location>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<0>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::row_height>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::row_priority>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<2>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<HeightSumKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<3>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<MinPriorityKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<4>(*itr)
+ );
+}
+//]
+
+template <typename TreeItr, typename Itr>
+void test_contents(TreeItr tree_itr, Itr itr, test_df_tag<gui_node_case>)
+{
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(tree_itr) == boost::get<0>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::row_location>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::row_height>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<2>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::row_priority>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<3>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<HeightSumKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<4>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<MinPriorityKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<5>(*itr)
+ );
+}
+
+template <typename TreeItr, typename Itr>
+void
+ test_contents(
+ TreeItr tree_itr
+ , Itr itr
+ , test_associative_tag<gui_node_case>
+ )
+{
+ BOOST_CHECK(tree_itr->first == boost::get<0>(*itr));
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::row_location>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<1>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::row_height>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<2>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::row_priority>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<3>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<HeightSumKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<4>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<MinPriorityKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<5>(*itr)
+ );
+}
+
+template <typename TreeItr, typename Itr>
+void
+ test_contents(
+ TreeItr tree_itr
+ , Itr itr
+ , test_df_associative_tag<gui_node_case>
+ )
+{
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(tree_itr) == boost::get<0>(*itr)
+ );
+ BOOST_CHECK(tree_itr->first == boost::get<1>(*itr));
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::row_location>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<2>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::row_height>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<3>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<example_keys::row_priority>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<4>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<HeightSumKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<5>(*itr)
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<MinPriorityKey>(
+ dereference_iterator(tree_itr)
+ ) == boost::get<6>(*itr)
+ );
+}
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+//[test__node__iterator__is_forward
+template <typename TreeItr, typename Itr, typename Tag>
+bool
+ test_iterator_more(
+ TreeItr tree_itr
+ , Itr itr
+ , Itr itr_end
+ , Tag tag
+ , std::tr1::false_type
+ )
+{
+ while (tree_itr)
+ {
+ if (itr == itr_end)
+ {
+ return false;
+ }
+
+ test_contents(tree_itr, itr, tag);
+ ++tree_itr;
+ ++itr;
+ }
+
+ BOOST_CHECK(itr == itr_end);
+ return true;
+}
+//]
+
+//[test__node__iterator__is_also_reversible
+template <typename TreeItr, typename Itr, typename Tag>
+bool
+ test_iterator_more(
+ TreeItr tree_itr
+ , Itr itr
+ , Itr itr_end
+ , Tag tag
+ , std::tr1::true_type
+ )
+{
+ Itr copy_itr(itr);
+
+ while (copy_itr != itr_end)
+ {
+ if (!tree_itr)
+ {
+ return false;
+ }
+
+ test_contents(tree_itr, copy_itr, tag);
+ ++tree_itr;
+ ++copy_itr;
+ }
+
+ while (itr != copy_itr)
+ {
+ test_contents(--tree_itr, --copy_itr, tag);
+ }
+
+ return test_iterator_more(
+ tree_itr
+ , itr
+ , itr_end
+ , tag
+ , std::tr1::false_type()
+ );
+}
+//]
+
+//[test__node__iterator__is_bidirectional
+template <typename TreeItr, typename Itr, typename Tag>
+bool
+ test_iterator(
+ TreeItr tree_itr
+ , Itr itr
+ , Itr itr_end
+ , Tag tag
+ , std::tr1::false_type
+ )
+{
+ return test_iterator_more(
+ tree_itr
+ , itr
+ , itr_end
+ , tag
+ , std::tr1::is_base_of<
+ std::bidirectional_iterator_tag
+ , typename boost::BOOST_ITERATOR_CATEGORY<TreeItr>::type
+ >()
+ );
+}
+//]
+
+//[test__node__iterator__is_indexable
+template <typename TreeItr, typename Itr, typename Tag>
+bool
+ test_iterator(
+ TreeItr tree_itr
+ , Itr itr
+ , Itr itr_end
+ , Tag tag
+ , std::tr1::true_type
+ )
+{
+ typename boost::iterator_difference<
+ Itr
+ >::type n = std::distance(itr, itr_end), d;
+ TreeItr tree_end(tree_itr), tree_itr1, tree_itr2;
+
+ tree_end += n;
+
+ for (
+ typename boost::iterator_difference<
+ Itr
+ >::type i = boost::initialized_value;
+ i < n;
+ ++i
+ )
+ {
+ tree_itr1 = tree_itr;
+ tree_itr1 += i;
+ tree_itr2 = tree_itr;
+
+ for (d = boost::initialized_value; d < i; ++d)
+ {
+ ++tree_itr2;
+ }
+
+ BOOST_CHECK(tree_itr1 == tree_itr2);
+ BOOST_CHECK(tree_itr == tree_itr1 - i);
+ BOOST_CHECK(i == tree_itr1 - tree_itr);
+ BOOST_CHECK(-i == tree_itr - tree_itr1);
+ test_contents(tree_itr1, itr + i, tag);
+
+ for (d = boost::initialized_value; d < n; ++d)
+ {
+ tree_itr2 = tree_itr;
+ tree_itr2 += d;
+ BOOST_CHECK(i - d == tree_itr1 - tree_itr2);
+ BOOST_CHECK(d - i == tree_itr2 - tree_itr1);
+ BOOST_CHECK((i < d) == (tree_itr1 < tree_itr2));
+ BOOST_CHECK((d < i) == (tree_itr2 < tree_itr1));
+
+ if (d + i < n)
+ {
+ BOOST_CHECK(tree_itr1 + d == tree_itr2 + i);
+ BOOST_CHECK(tree_itr1 == tree_itr2 + i - d);
+ BOOST_CHECK(tree_itr2 == tree_itr1 + d - i);
+ }
+ }
+
+ if (i)
+ {
+ tree_itr1 = tree_end;
+ tree_itr1 -= i;
+ tree_itr2 = tree_end;
+
+ for (d = boost::initialized_value; d < i; ++d)
+ {
+ --tree_itr2;
+ }
+
+ BOOST_CHECK(tree_itr1 == tree_itr2);
+ BOOST_CHECK(tree_end == tree_itr1 + i);
+ BOOST_CHECK(i == tree_end - tree_itr1);
+ BOOST_CHECK(-i == tree_itr1 - tree_end);
+ test_contents(tree_itr1, itr_end - i, tag);
+ }
+ }
+
+ return test_iterator(
+ tree_itr
+ , itr
+ , itr_end
+ , tag
+ , std::tr1::false_type()
+ );
+}
+//]
+
+//[test__node__iterator__driver
+template <typename TreeItr, typename Itr, typename Tag>
+bool
+ test_iterator(
+ TreeItr tree_itr
+ , Itr itr
+ , Itr itr_end
+ , Tag tag
+ )
+{
+ return test_iterator(
+ tree_itr
+ , itr
+ , itr_end
+ , tag
+ // TODO: Replace with check for indexable iterator type.
+ , std::tr1::is_base_of<
+ std::random_access_iterator_tag
+ , typename boost::BOOST_ITERATOR_CATEGORY<TreeItr>::type
+ >()
+ );
+}
+//]
+
+//[test__node__iterators__are_forward
+template <
+ test_case c
+ , typename Node
+ , typename Values
+ , typename DFValues
+>
+void
+ test_iterators(
+ Node const& node
+ , Values const& bf_vals
+ , Values const& pre_vals
+ , Values const& post_vals
+ , DFValues const& df_vals
+ , std::tr1::true_type
+ )
+{
+ BOOST_CHECK(
+ test_iterator(
+ make_breadth_first_iterator(node)
+ , bf_vals.begin()
+ , bf_vals.end()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_breadth_first_descendant_iterator(node)
+ , ++bf_vals.begin()
+ , bf_vals.end()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_pre_order_iterator(node)
+ , pre_vals.begin()
+ , pre_vals.end()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_pre_order_descendant_iterator(node)
+ , ++pre_vals.begin()
+ , pre_vals.end()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_post_order_iterator(node)
+ , post_vals.begin()
+ , post_vals.end()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_post_order_descendant_iterator(node)
+ , post_vals.begin()
+ , post_vals.begin() + post_vals.size() - 1
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_depth_first_iterator(node)
+ , df_vals.begin()
+ , df_vals.end()
+ , test_df_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_depth_first_descendant_iterator(node)
+ , ++df_vals.begin()
+ , df_vals.begin() + df_vals.size() - 1
+ , test_df_tag<c>()
+ )
+ );
+}
+//]
+
+//[test__node__iterators__are_also_reversible
+template <
+ test_case c
+ , typename Node
+ , typename Values
+ , typename DFValues
+>
+void
+ test_iterators(
+ Node const& node
+ , Values const& bf_vals
+ , Values const& pre_vals
+ , Values const& post_vals
+ , DFValues const& df_vals
+ , std::tr1::false_type
+ )
+{
+ test_iterators<c>(
+ node
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , df_vals
+ , std::tr1::true_type()
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_pre_order_reverse_iterator(node)
+ , pre_vals.rbegin()
+ , pre_vals.rend()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_pre_order_descendant_reverse_iterator(node)
+ , pre_vals.rbegin()
+ , pre_vals.rbegin() + pre_vals.size() - 1
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_post_order_reverse_iterator(node)
+ , post_vals.rbegin()
+ , post_vals.rend()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_post_order_descendant_reverse_iterator(node)
+ , ++post_vals.rbegin()
+ , post_vals.rend()
+ , test_tag<c>()
+ )
+ );
+
+ DFValues df_d_v(df_vals);
+
+ for (typename DFValues::size_type i = 0; i < df_d_v.size(); ++i)
+ {
+ boost::get<0>(df_d_v[i]) = (
+ (boost::tree_node::pre_order_traversal == boost::get<0>(df_d_v[i]))
+ ? boost::tree_node::post_order_traversal
+ : boost::tree_node::pre_order_traversal
+ );
+ }
+
+ BOOST_CHECK(
+ test_iterator(
+ make_depth_first_reverse_iterator(node)
+ , df_d_v.rbegin()
+ , df_d_v.rend()
+ , test_df_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_depth_first_descendant_reverse_iterator(node)
+ , ++df_d_v.rbegin()
+ , df_d_v.rbegin() + df_d_v.size() - 1
+ , test_df_tag<c>()
+ )
+ );
+}
+//]
+
+//[test__node__iterators
+template <
+ test_case c
+ , typename Node
+ , typename Values
+ , typename DFValues
+>
+void
+ test_node(
+ Node const& node
+ , Values const& bf_vals
+ , Values const& pre_vals
+ , Values const& post_vals
+ , DFValues const& df_vals
+ )
+{
+ test_iterators<c>(
+ node
+ , bf_vals
+ , pre_vals
+ , post_vals
+ , df_vals
+ , std::tr1::is_void<typename Node::reverse_iterator>()
+ );
+}
+
+template <
+ test_case c
+ , typename Node
+ , typename Values
+ , typename DFValues
+>
+void
+ test_node(
+ Node const& node
+ , Values const& bf_vals
+ , Values const& pre_vals
+ , Values const& post_vals
+ , Values const& in_vals
+ , DFValues const& df_vals
+ )
+{
+ test_node<c>(node, bf_vals, pre_vals, post_vals, df_vals);
+ BOOST_CHECK(
+ test_iterator(
+ make_in_order_iterator(node)
+ , in_vals.begin()
+ , in_vals.end()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_in_order_reverse_iterator(node)
+ , in_vals.rbegin()
+ , in_vals.rend()
+ , test_tag<c>()
+ )
+ );
+}
+//]
+
+template <
+ test_case c
+ , typename Node
+ , typename Values
+ , typename KeyValues
+ , typename DFValues
+ , typename DFKeyValues
+>
+void
+ test_associative_iterators(
+ Node const& node
+ , Values const& bf_vals
+ , KeyValues const& bf_kvs
+ , Values const& pre_vals
+ , KeyValues const& pre_kvs
+ , Values const& post_vals
+ , KeyValues const& post_kvs
+ , DFValues const& df_vals
+ , DFKeyValues const& df_kvs
+ , std::tr1::true_type
+ )
+{
+ BOOST_CHECK(
+ test_iterator(
+ make_breadth_first_iterator(node)
+ , bf_vals.begin()
+ , bf_vals.end()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_breadth_first_descendant_iterator(node)
+ , bf_kvs.begin()
+ , bf_kvs.end()
+ , test_associative_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_pre_order_iterator(node)
+ , pre_vals.begin()
+ , pre_vals.end()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_pre_order_descendant_iterator(node)
+ , pre_kvs.begin()
+ , pre_kvs.end()
+ , test_associative_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_post_order_iterator(node)
+ , post_vals.begin()
+ , post_vals.end()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_post_order_descendant_iterator(node)
+ , post_kvs.begin()
+ , post_kvs.end()
+ , test_associative_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_depth_first_iterator(node)
+ , df_vals.begin()
+ , df_vals.end()
+ , test_df_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_depth_first_descendant_iterator(node)
+ , df_kvs.begin()
+ , df_kvs.end()
+ , test_df_associative_tag<c>()
+ )
+ );
+}
+
+template <
+ test_case c
+ , typename Node
+ , typename Values
+ , typename KeyValues
+ , typename DFValues
+ , typename DFKeyValues
+>
+void
+ test_associative_iterators(
+ Node const& node
+ , Values const& bf_vals
+ , KeyValues const& bf_kvs
+ , Values const& pre_vals
+ , KeyValues const& pre_kvs
+ , Values const& post_vals
+ , KeyValues const& post_kvs
+ , DFValues const& df_vals
+ , DFKeyValues const& df_kvs
+ , std::tr1::false_type
+ )
+{
+ test_associative_iterators<c>(
+ node
+ , bf_vals
+ , bf_kvs
+ , pre_vals
+ , pre_kvs
+ , post_vals
+ , post_kvs
+ , df_vals
+ , df_kvs
+ , std::tr1::true_type()
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_pre_order_reverse_iterator(node)
+ , pre_vals.rbegin()
+ , pre_vals.rend()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_pre_order_descendant_reverse_iterator(node)
+ , pre_kvs.rbegin()
+ , pre_kvs.rend()
+ , test_associative_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_post_order_reverse_iterator(node)
+ , post_vals.rbegin()
+ , post_vals.rend()
+ , test_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_post_order_descendant_reverse_iterator(node)
+ , post_kvs.rbegin()
+ , post_kvs.rend()
+ , test_associative_tag<c>()
+ )
+ );
+
+ DFValues df_d_v(df_vals);
+ DFKeyValues df_d_kvs(df_kvs);
+
+ for (typename DFValues::size_type i = 0; i < df_d_v.size(); ++i)
+ {
+ boost::get<0>(df_d_v[i]) = (
+ (boost::tree_node::pre_order_traversal == boost::get<0>(df_d_v[i]))
+ ? boost::tree_node::post_order_traversal
+ : boost::tree_node::pre_order_traversal
+ );
+ }
+
+ for (typename DFKeyValues::size_type i = 0; i < df_d_kvs.size(); ++i)
+ {
+ boost::get<0>(df_d_kvs[i]) = (
+ (
+ boost::tree_node::pre_order_traversal == boost::get<0>(
+ df_d_kvs[i]
+ )
+ )
+ ? boost::tree_node::post_order_traversal
+ : boost::tree_node::pre_order_traversal
+ );
+ }
+
+ BOOST_CHECK(
+ test_iterator(
+ make_depth_first_reverse_iterator(node)
+ , df_d_v.rbegin()
+ , df_d_v.rend()
+ , test_df_tag<c>()
+ )
+ );
+ BOOST_CHECK(
+ test_iterator(
+ make_depth_first_descendant_reverse_iterator(node)
+ , df_d_kvs.rbegin()
+ , df_d_kvs.rend()
+ , test_df_associative_tag<c>()
+ )
+ );
+}
+
+template <
+ test_case c
+ , typename Node
+ , typename Values
+ , typename KeyValues
+ , typename DFValues
+ , typename DFKeyValues
+>
+void
+ test_associative_node(
+ Node const& node
+ , Values const& bf_vals
+ , KeyValues const& bf_kvs
+ , Values const& pre_vals
+ , KeyValues const& pre_kvs
+ , Values const& post_vals
+ , KeyValues const& post_kvs
+ , DFValues const& df_vals
+ , DFKeyValues const& df_kvs
+ )
+{
+ test_associative_iterators<c>(
+ node
+ , bf_vals
+ , bf_kvs
+ , pre_vals
+ , pre_kvs
+ , post_vals
+ , post_kvs
+ , df_vals
+ , df_kvs
+ , std::tr1::is_void<typename Node::reverse_iterator>()
+ );
+}
+
+template <typename Itr1, typename Itr2>
+bool test_node_copies(Itr1 itr1, Itr2 itr2)
+{
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef typename boost::tree_node::result_of::get_properties<
+ typename ::std::tr1::remove_reference<
+ typename boost::tree_node::result_of::dereference_iterator<
+ Itr1
+ >::type
+ >::type
+ >::type
+ KVPairs1;
+ typedef typename boost::tree_node::result_of::get_properties<
+ typename ::std::tr1::remove_reference<
+ typename boost::tree_node::result_of::dereference_iterator<
+ Itr2
+ >::type
+ >::type
+ >::type
+ KVPairs2;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ while (itr1)
+ {
+ if (
+ boost::tree_node::traversal_state(
+ itr2
+ ) == boost::tree_node::no_traversal
+ )
+ {
+ return false;
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ KVPairs1 p1(
+ boost::tree_node::get_properties(
+ boost::tree_node::dereference_iterator(itr1)
+ )
+ );
+ boost::fusion::filter_view<KVPairs1,test_no_position_predicate> view1(
+ p1
+ );
+ KVPairs2 p2(
+ boost::tree_node::get_properties(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ boost::fusion::filter_view<KVPairs2,test_no_position_predicate> view2(
+ p2
+ );
+
+ BOOST_CHECK(
+ boost::fusion::equal_to(
+ boost::fusion::as_map(view1)
+ , boost::fusion::as_map(view2)
+ )
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr1)
+ , boost::tree_node::data_key()
+ ) == get(
+ boost::tree_node::dereference_iterator(itr2)
+ , boost::tree_node::data_key()
+ )
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr1)
+ , boost::tree_node::height_key()
+ ) == get(
+ boost::tree_node::dereference_iterator(itr2)
+ , boost::tree_node::height_key()
+ )
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr1)
+ , boost::tree_node::count_key()
+ ) == get(
+ boost::tree_node::dereference_iterator(itr2)
+ , boost::tree_node::count_key()
+ )
+ );
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ BOOST_CHECK(
+ boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<AccuHeightKey>(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuCountKey>(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<AccuCountKey>(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<AccuAccuKey>(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ ++itr1;
+ ++itr2;
+ }
+
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(
+ itr2
+ ) == boost::tree_node::no_traversal
+ );
+ return true;
+}
+
+template <typename Itr1, typename Itr2>
+bool test_associative_node_copies(Itr1 itr1, Itr2 itr2)
+{
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef typename boost::tree_node::result_of::get_properties<
+ typename ::std::tr1::remove_reference<
+ typename boost::tree_node::result_of::dereference_iterator<
+ Itr1
+ >::type
+ >::type
+ >::type
+ KVPairs1;
+ typedef typename boost::tree_node::result_of::get_properties<
+ typename ::std::tr1::remove_reference<
+ typename boost::tree_node::result_of::dereference_iterator<
+ Itr2
+ >::type
+ >::type
+ >::type
+ KVPairs2;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ while (itr1)
+ {
+ if (
+ boost::tree_node::traversal_state(
+ itr2
+ ) == boost::tree_node::no_traversal
+ )
+ {
+ return false;
+ }
+
+ BOOST_CHECK(itr1->first == itr2->first);
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ KVPairs1 p1(
+ boost::tree_node::get_properties(
+ boost::tree_node::dereference_iterator(itr1)
+ )
+ );
+ boost::fusion::filter_view<KVPairs1,test_no_position_predicate> view1(
+ p1
+ );
+ KVPairs2 p2(
+ boost::tree_node::get_properties(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ boost::fusion::filter_view<KVPairs2,test_no_position_predicate> view2(
+ p2
+ );
+
+ BOOST_CHECK(
+ boost::fusion::equal_to(
+ boost::fusion::as_map(view1)
+ , boost::fusion::as_map(view2)
+ )
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr1)
+ , boost::tree_node::data_key()
+ ) == get(
+ boost::tree_node::dereference_iterator(itr2)
+ , boost::tree_node::data_key()
+ )
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr1)
+ , boost::tree_node::height_key()
+ ) == get(
+ boost::tree_node::dereference_iterator(itr2)
+ , boost::tree_node::height_key()
+ )
+ );
+ BOOST_CHECK(
+ get(
+ boost::tree_node::dereference_iterator(itr1)
+ , boost::tree_node::count_key()
+ ) == get(
+ boost::tree_node::dereference_iterator(itr2)
+ , boost::tree_node::count_key()
+ )
+ );
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ BOOST_CHECK(
+ boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<boost::tree_node::accumulation_key<> >(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuHeightKey>(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<AccuHeightKey>(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuCountKey>(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<AccuCountKey>(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+ BOOST_CHECK(
+ boost::tree_node::get<AccuAccuKey>(
+ boost::tree_node::dereference_iterator(itr1)
+ ) == boost::tree_node::get<AccuAccuKey>(
+ boost::tree_node::dereference_iterator(itr2)
+ )
+ );
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ ++itr1;
+ ++itr2;
+ }
+
+ BOOST_CHECK(
+ boost::tree_node::traversal_state(
+ itr2
+ ) == boost::tree_node::no_traversal
+ );
+ return true;
+}
+
+#endif // LIBS_TREE_NODE_TEST_ITERATOR_FUNCTIONS_HPP_INCLUDED
+
Added: sandbox/tree_node/libs/tree_node/test/nary_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/test/nary_node.cpp 2013-03-01 22:03:43 EST (Fri, 01 Mar 2013)
@@ -0,0 +1,2372 @@
+// Copyright (C) 2012-2013 Cromwell D. Enage
+// 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.hpp>
+
+#if defined BOOST_MSVC
+ #pragma warning (push)
+ #pragma warning (disable : 4996) // fn called w/params that may be unsafe
+#endif
+
+#include <iterator>
+#include <boost/tuple/tuple.hpp>
+#include <boost/typeof/boost/rational.hpp>
+#include <boost/typeof/boost/container_gen/selectors.hpp>
+#include <boost/container_gen/container_gen.hpp>
+#include <boost/container_gen/emplace_function_gen.hpp>
+#include <boost/tree_node/preprocessor.hpp>
+#include <boost/tree_node/intrinsic/value_at_key.hpp>
+#include <boost/typeof/boost/tree_node/with_count.hpp>
+#include <boost/typeof/boost/tree_node/with_height.hpp>
+#include <boost/typeof/boost/tree_node/with_position.hpp>
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+#include <boost/typeof/boost/tree_node/with_accumulation.hpp>
+#endif
+
+#include "../example/type_definitions.hpp"
+#include "iterator_functions.hpp"
+
+typedef boost::emplace_function_gen<boost::dequeS>::type
+ Emplacer;
+
+#include <boost/typeof/boost/tree_node/nary_node.hpp>
+
+template <typename Selector>
+void test()
+{
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::with_height_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::with_accumulation_base_gen<
+ boost::tree_node::nary_node_base_gen<Selector>
+ >
+ >
+ , AccuAccuKey
+ >
+ >
+ , AccuCountKey
+ >
+ >
+ , boost::rational<long>
+ , void
+ , AccuHeightKey
+ >
+ ANode;
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_height<
+ boost::tree_node::with_position_base_gen<
+ boost::tree_node::with_count_base_gen<
+ boost::tree_node::nary_node_base_gen<Selector>
+ >
+ >
+ , boost::rational<long>
+ >
+ ANode;
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::data_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::height_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::count_key
+ >::type
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::accumulation_key<>
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuHeightKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuCountKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuAccuKey
+ >::type
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ >
+ >::type
+ Values;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::data_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::height_key
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::count_key
+ >::type
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , boost::tree_node::accumulation_key<>
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuHeightKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuCountKey
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ ANode const
+ , AccuAccuKey
+ >::type
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ >
+ >::type
+ DFValues;
+
+ ANode a_root(5);
+
+ BOOST_CHECK(
+ !a_root.get_parent_ptr()
+// , "Parent member uninitialized."
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<ANode> itr(a_root);
+ itr;
+ ++itr
+ )
+ {
+ typename ANode::traits::data_type const& data = get(
+ *itr
+ , boost::tree_node::data_key()
+ );
+
+ if (1 < data)
+ {
+ for (std::size_t i = 0; i < data; ++i)
+ {
+ typename ANode::iterator child_itr(
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ (std::tr1::is_same<Selector,boost::slistS>::value) ? (
+ (*itr).emplace(data - 1 - i)
+ ) :
+#endif
+ (*itr).emplace(i)
+ );
+ typename ANode::const_pointer const_child(&*child_itr);
+ BOOST_CHECK(
+ (*child_itr).get_parent_ptr() == &*itr
+// , "Ctor not linking child to parent."
+ );
+ BOOST_CHECK(
+ (
+ (*child_itr).get_parent_ptr()
+ ) == (*const_child).get_parent_ptr()
+// , "Why are these pointers different?"
+ );
+
+ {
+ typename ANode::iterator c_itr = (*itr).begin();
+
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ if (!std::tr1::is_same<Selector,boost::slistS>::value)
+#endif
+ std::advance(c_itr, i);
+ BOOST_CHECK(
+ &*child_itr == &*c_itr
+// , "Ctor not linking parent to child."
+ );
+ }
+ }
+ }
+ }
+
+ {
+ Values bf_vals, pre_vals, post_vals;
+ DFValues df_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 24,
+ 31, 3, 76, boost::rational<long>(10, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 3, 12,
+ 15, 2, 32, boost::rational<long>(8, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::post_order_traversal, 4, 3, 12,
+ 15, 2, 32, boost::rational<long>(8, 3))
+ (boost::tree_node::post_order_traversal, 5, 4, 24,
+ 31, 3, 76, boost::rational<long>(10, 3));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 4, 24)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 3, 12)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 4, 24)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 12)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(4, 3, 12)(5, 4, 24);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 3, 12)
+ (boost::tree_node::post_order_traversal, 5, 4, 24);
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ test_node<a_node_case>(a_root, bf_vals, pre_vals, post_vals, df_vals);
+ }
+
+ {
+ ANode a_copy(a_root);
+ boost::tree_node::breadth_first_iterator<ANode const>
+ bf_root_itr(a_root), bf_copy_itr(a_copy);
+ boost::tree_node::breadth_first_descendant_iterator<ANode const>
+ bf_d_root_itr(a_root), bf_d_copy_itr(a_copy);
+ boost::tree_node::pre_order_iterator<ANode const>
+ pre_root_itr(a_root), pre_copy_itr(a_copy);
+ boost::tree_node::pre_order_descendant_iterator<ANode const>
+ pre_d_root_itr(a_root), pre_d_copy_itr(a_copy);
+ boost::tree_node::post_order_iterator<ANode const>
+ post_root_itr(a_root), post_copy_itr(a_copy);
+ boost::tree_node::post_order_descendant_iterator<ANode const>
+ post_d_root_itr(a_root), post_d_copy_itr(a_copy);
+ boost::tree_node::depth_first_iterator<ANode const>
+ df_root_itr(a_root), df_copy_itr(a_copy);
+ boost::tree_node::depth_first_descendant_iterator<ANode const>
+ df_d_root_itr(a_root), df_d_copy_itr(a_copy);
+
+ BOOST_CHECK(test_node_copies(bf_root_itr, bf_copy_itr));
+ BOOST_CHECK(test_node_copies(bf_d_root_itr, bf_d_copy_itr));
+ BOOST_CHECK(test_node_copies(pre_root_itr, pre_copy_itr));
+ BOOST_CHECK(test_node_copies(pre_d_root_itr, pre_d_copy_itr));
+ BOOST_CHECK(test_node_copies(post_root_itr, post_copy_itr));
+ BOOST_CHECK(test_node_copies(post_d_root_itr, post_d_copy_itr));
+ BOOST_CHECK(test_node_copies(df_root_itr, df_copy_itr));
+ BOOST_CHECK(test_node_copies(df_d_root_itr, df_d_copy_itr));
+ }
+
+ {
+ typename ANode::iterator a_child_itr(
+ (*(++a_root.begin())).insert(a_root)
+ );
+ Values bf_vals, pre_vals, post_vals;
+ DFValues df_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 6, 48, 62, 5, 200, boost::rational<long>(37, 8))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 5, 25, 32, 4, 101, boost::rational<long>(112, 25))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 6, 48, 62, 5, 200, boost::rational<long>(37, 8))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 5, 25, 32, 4, 101, boost::rational<long>(112, 25))
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (1, 5, 25, 32, 4, 101, boost::rational<long>(112, 25))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (5, 6, 48, 62, 5, 200, boost::rational<long>(37, 8));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 48,
+ 62, 5, 200, boost::rational<long>(37, 8))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 5, 25,
+ 32, 4, 101, boost::rational<long>(112, 25))
+ (boost::tree_node::pre_order_traversal, 5, 4, 24,
+ 31, 3, 76, boost::rational<long>(10, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 3, 12,
+ 15, 2, 32, boost::rational<long>(8, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::post_order_traversal, 4, 3, 12,
+ 15, 2, 32, boost::rational<long>(8, 3))
+ (boost::tree_node::post_order_traversal, 5, 4, 24,
+ 31, 3, 76, boost::rational<long>(10, 3))
+ (boost::tree_node::post_order_traversal, 1, 5, 25,
+ 32, 4, 101, boost::rational<long>(112, 25))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 3, 12,
+ 15, 2, 32, boost::rational<long>(8, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::post_order_traversal, 4, 3, 12,
+ 15, 2, 32, boost::rational<long>(8, 3))
+ (boost::tree_node::post_order_traversal, 5, 6, 48,
+ 62, 5, 200, boost::rational<long>(37, 8));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 6, 48)(0, 0, 1)(1, 5, 25)(2, 1, 3)(3, 2, 6)(4, 3, 12)(5, 4, 24)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 3, 12)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 6, 48)(0, 0, 1)(1, 5, 25)(5, 4, 24)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(4, 3, 12)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(4, 3, 12)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(3, 2, 6)(4, 3, 12)(5, 4, 24)(1, 5, 25)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 3, 12)(5, 6, 48);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 48)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 5, 25)
+ (boost::tree_node::pre_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 3, 12)
+ (boost::tree_node::post_order_traversal, 5, 4, 24)
+ (boost::tree_node::post_order_traversal, 1, 5, 25)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 3, 12)
+ (boost::tree_node::post_order_traversal, 5, 6, 48);
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ test_node<a_node_case>(a_root, bf_vals, pre_vals, post_vals, df_vals);
+
+ a_root = *a_child_itr;
+ bf_vals.clear();
+ pre_vals.clear();
+ post_vals.clear();
+ df_vals.clear();
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 24,
+ 31, 3, 76, boost::rational<long>(10, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 3, 12,
+ 15, 2, 32, boost::rational<long>(8, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::post_order_traversal, 4, 3, 12,
+ 15, 2, 32, boost::rational<long>(8, 3))
+ (boost::tree_node::post_order_traversal, 5, 4, 24,
+ 31, 3, 76, boost::rational<long>(10, 3));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 4, 24)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 3, 12)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 4, 24)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 12)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(4, 3, 12)(5, 4, 24);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 3, 12)
+ (boost::tree_node::post_order_traversal, 5, 4, 24);
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ test_node<a_node_case>(a_root, bf_vals, pre_vals, post_vals, df_vals);
+
+ a_child_itr = a_root.begin();
+ std::advance(a_child_itr, 4);
+ a_child_itr = (*a_child_itr).begin();
+ *a_child_itr = a_root;
+ test_node<a_node_case>(*a_child_itr, bf_vals, pre_vals, post_vals, df_vals);
+
+ bf_vals.clear();
+ pre_vals.clear();
+ post_vals.clear();
+ df_vals.clear();
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 6, 47, 62, 5, 197, boost::rational<long>(222, 47))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 5, 35, 46, 4, 130, boost::rational<long>(143, 35))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 6, 47, 62, 5, 197, boost::rational<long>(222, 47))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 5, 35, 46, 4, 130, boost::rational<long>(143, 35))
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 5, 35, 46, 4, 130, boost::rational<long>(143, 35))
+ (5, 6, 47, 62, 5, 197, boost::rational<long>(222, 47));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 47,
+ 62, 5, 197, boost::rational<long>(222, 47))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 5, 35,
+ 46, 4, 130, boost::rational<long>(143, 35))
+ (boost::tree_node::pre_order_traversal, 5, 4, 24,
+ 31, 3, 76, boost::rational<long>(10, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 3, 12,
+ 15, 2, 32, boost::rational<long>(8, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::post_order_traversal, 4, 3, 12,
+ 15, 2, 32, boost::rational<long>(8, 3))
+ (boost::tree_node::post_order_traversal, 5, 4, 24,
+ 31, 3, 76, boost::rational<long>(10, 3))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::post_order_traversal, 4, 5, 35,
+ 46, 4, 130, boost::rational<long>(143, 35))
+ (boost::tree_node::post_order_traversal, 5, 6, 47,
+ 62, 5, 197, boost::rational<long>(222, 47));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 6, 47)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 5, 35)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(5, 4, 24)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)
+ (4, 3, 12)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 6, 47)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 5, 35)(5, 4, 24)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 12)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 3, 12)(5, 4, 24)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 5, 35)(5, 6, 47);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 47)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 5, 35)
+ (boost::tree_node::pre_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 3, 12)
+ (boost::tree_node::post_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 5, 35)
+ (boost::tree_node::post_order_traversal, 5, 6, 47);
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ test_node<a_node_case>(a_root, bf_vals, pre_vals, post_vals, df_vals);
+ }
+
+ {
+ typename ANode::iterator a_child_itr(a_root.begin());
+
+ std::advance(a_child_itr, 3);
+ (*a_child_itr).clear();
+
+ Values bf_vals, pre_vals, post_vals;
+ DFValues df_vals;
+ Emplacer emplacer;
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 6, 42, 58, 5, 180, boost::rational<long>(209, 42))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 0, 1, 3, 0, 1, boost::rational<long>(3, 1))
+ (4, 5, 35, 46, 4, 130, boost::rational<long>(143, 35))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[pre_vals]
+ (5, 6, 42, 58, 5, 180, boost::rational<long>(209, 42))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 0, 1, 3, 0, 1, boost::rational<long>(3, 1))
+ (4, 5, 35, 46, 4, 130, boost::rational<long>(143, 35))
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1));
+ emplacer[post_vals]
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 0, 1, 3, 0, 1, boost::rational<long>(3, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 3, 12, 15, 2, 32, boost::rational<long>(8, 3))
+ (5, 4, 24, 31, 3, 76, boost::rational<long>(10, 3))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (0, 0, 1, 0, 0, 1, boost::rational<long>(0, 1))
+ (1, 0, 1, 1, 0, 1, boost::rational<long>(1, 1))
+ (2, 1, 3, 3, 0, 5, boost::rational<long>(4, 3))
+ (3, 2, 6, 7, 1, 13, boost::rational<long>(2, 1))
+ (4, 5, 35, 46, 4, 130, boost::rational<long>(143, 35))
+ (5, 6, 42, 58, 5, 180, boost::rational<long>(209, 42));
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 42,
+ 58, 5, 180, boost::rational<long>(209, 42))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 0, 1,
+ 3, 0, 1, boost::rational<long>(3, 1))
+ (boost::tree_node::post_order_traversal, 3, 0, 1,
+ 3, 0, 1, boost::rational<long>(3, 1))
+ (boost::tree_node::pre_order_traversal, 4, 5, 35,
+ 46, 4, 130, boost::rational<long>(143, 35))
+ (boost::tree_node::pre_order_traversal, 5, 4, 24,
+ 31, 3, 76, boost::rational<long>(10, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 4, 3, 12,
+ 15, 2, 32, boost::rational<long>(8, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::post_order_traversal, 4, 3, 12,
+ 15, 2, 32, boost::rational<long>(8, 3))
+ (boost::tree_node::post_order_traversal, 5, 4, 24,
+ 31, 3, 76, boost::rational<long>(10, 3))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::pre_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::pre_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::post_order_traversal, 0, 0, 1,
+ 0, 0, 1, boost::rational<long>(0, 1))
+ (boost::tree_node::pre_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 1, 0, 1,
+ 1, 0, 1, boost::rational<long>(1, 1))
+ (boost::tree_node::post_order_traversal, 2, 1, 3,
+ 3, 0, 5, boost::rational<long>(4, 3))
+ (boost::tree_node::post_order_traversal, 3, 2, 6,
+ 7, 1, 13, boost::rational<long>(2, 1))
+ (boost::tree_node::post_order_traversal, 4, 5, 35,
+ 46, 4, 130, boost::rational<long>(143, 35))
+ (boost::tree_node::post_order_traversal, 5, 6, 42,
+ 58, 5, 180, boost::rational<long>(209, 42));
+#else // !defined BOOST_TREE_NODE_CAN_USE_FUSION
+ emplacer[bf_vals]
+ (5, 6, 42)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 0, 1)(4, 5, 35)(0, 0, 1)
+ (1, 0, 1)(5, 4, 24)(1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(3, 2, 6)(4, 3, 12)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[pre_vals]
+ (5, 6, 42)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 0, 1)
+ (4, 5, 35)(5, 4, 24)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)
+ (3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(4, 3, 12)
+ (0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(3, 2, 6)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(3, 2, 6)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1);
+ emplacer[post_vals]
+ (0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 0, 1)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)
+ (1, 0, 1)(2, 1, 3)(3, 2, 6)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)
+ (2, 1, 3)(0, 0, 1)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)
+ (4, 3, 12)(5, 4, 24)(1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(0, 0, 1)
+ (1, 0, 1)(0, 0, 1)(1, 0, 1)(2, 1, 3)(3, 2, 6)(4, 5, 35)(5, 6, 42);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, 6, 42)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 0, 1)
+ (boost::tree_node::post_order_traversal, 3, 0, 1)
+ (boost::tree_node::pre_order_traversal, 4, 5, 35)
+ (boost::tree_node::pre_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 4, 3, 12)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 3, 12)
+ (boost::tree_node::post_order_traversal, 5, 4, 24)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 3, 2, 6)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::pre_order_traversal, 2, 1, 3)
+ (boost::tree_node::pre_order_traversal, 0, 0, 1)
+ (boost::tree_node::post_order_traversal, 0, 0, 1)
+ (boost::tree_node::pre_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 1, 0, 1)
+ (boost::tree_node::post_order_traversal, 2, 1, 3)
+ (boost::tree_node::post_order_traversal, 3, 2, 6)
+ (boost::tree_node::post_order_traversal, 4, 5, 35)
+ (boost::tree_node::post_order_traversal, 5, 6, 42);
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+ test_node<a_node_case>(a_root, bf_vals, pre_vals, post_vals, df_vals);
+ }
+
+#if defined BOOST_TREE_NODE_CAN_USE_FUSION
+ typedef boost::tree_node::with_accumulation<
+ boost::tree_node::nary_node_base_gen<Selector>
+ , DataMap
+ , void
+ , AccuYourUintKey
+ >
+ FNode;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_char
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , AccuYourUintKey
+ >::type
+ >
+ >::type
+ MoreValues;
+ typedef typename boost::container_gen<
+ boost::dequeS
+ , boost::tuples::tuple<
+ boost::tree_node::traversal_state
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_char
+ >::type
+ , typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , AccuYourUintKey
+ >::type
+ >
+ >::type
+ DFMoreValues;
+
+ FNode f_root(
+ boost::fusion::make_pair<example_keys::your_uint>(5)
+ , boost::fusion::make_pair<example_keys::your_char>('5')
+ );
+
+ for (
+ boost::tree_node::breadth_first_iterator<FNode> itr(f_root);
+ itr;
+ ++itr
+ )
+ {
+ typename boost::tree_node::result_of::value_at_key<
+ FNode const
+ , example_keys::your_uint
+ >::type data = boost::tree_node::get<example_keys::your_uint>(*itr);
+
+ if (1 < data)
+ {
+ for (unsigned int i = 0; i < data; ++i)
+ {
+ if (std::tr1::is_same<Selector,boost::slistS>::value)
+ {
+ (*itr).emplace(
+ boost::fusion::make_pair<example_keys::your_uint>(
+ data - 1 - i
+ )
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + data - 1 - i
+ )
+ );
+ }
+ else
+ {
+ (*itr).emplace(
+ boost::fusion::make_pair<example_keys::your_uint>(i)
+ , boost::fusion::make_pair<example_keys::your_char>(
+ '0' + i
+ )
+ );
+ }
+ }
+
+ }
+ }
+
+ {
+ MoreValues bf_vals, pre_vals, post_vals;
+ DFMoreValues df_vals;
+ Emplacer emplacer;
+
+ emplacer[bf_vals]
+ (5, '5', 31)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 7)
+ (4, '4', 15)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 7)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[pre_vals]
+ (5, '5', 31)(0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(3, '3', 7)(0, '0', 0)(1, '1', 1)(2, '2', 3)
+ (0, '0', 0)(1, '1', 1)(4, '4', 15)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(3, '3', 7)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[post_vals]
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(2, '2', 3)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(2, '2', 3)
+ (3, '3', 7)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(3, '3', 7)(4, '4', 15)(5, '5', 31);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, '5', 31)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 4, '4', 15)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::post_order_traversal, 4, '4', 15)
+ (boost::tree_node::post_order_traversal, 5, '5', 31);
+ test_node<f_node_case>(f_root, bf_vals, pre_vals, post_vals, df_vals);
+
+ typename FNode::iterator f_child_itr(f_root.begin());
+
+ std::advance(f_child_itr, 3);
+ f_child_itr = (*f_child_itr).begin();
+ std::advance(f_child_itr, 2);
+ boost::tree_node::put(*f_child_itr, example_keys::your_uint(), 7);
+ bf_vals.clear();
+ pre_vals.clear();
+ post_vals.clear();
+ df_vals.clear();
+
+ emplacer[bf_vals]
+ (5, '5', 36)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 12)
+ (4, '4', 15)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (7, '2', 8)(0, '0', 0)(1, '1', 1)(2, '2', 3)(3, '3', 7)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[pre_vals]
+ (5, '5', 36)(0, '0', 0)(1, '1', 1)(2, '2', 3)(0, '0', 0)
+ (1, '1', 1)(3, '3', 12)(0, '0', 0)(1, '1', 1)(7, '2', 8)
+ (0, '0', 0)(1, '1', 1)(4, '4', 15)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(3, '3', 7)(0, '0', 0)
+ (1, '1', 1)(2, '2', 3)(0, '0', 0)(1, '1', 1);
+ emplacer[post_vals]
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(2, '2', 3)
+ (0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)(7, '2', 8)
+ (3, '3', 12)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(0, '0', 0)(1, '1', 1)(0, '0', 0)(1, '1', 1)
+ (2, '2', 3)(3, '3', 7)(4, '4', 15)(5, '5', 36);
+ emplacer[df_vals]
+ (boost::tree_node::pre_order_traversal, 5, '5', 36)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 3, '3', 12)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 7, '2', 8)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 7, '2', 8)
+ (boost::tree_node::post_order_traversal, 3, '3', 12)
+ (boost::tree_node::pre_order_traversal, 4, '4', 15)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 3, '3', 7)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::pre_order_traversal, 2, '2', 3)
+ (boost::tree_node::pre_order_traversal, 0, '0', 0)
+ (boost::tree_node::post_order_traversal, 0, '0', 0)
+ (boost::tree_node::pre_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 1, '1', 1)
+ (boost::tree_node::post_order_traversal, 2, '2', 3)
+ (boost::tree_node::post_order_traversal, 3, '3', 7)
+ (boost::tree_node::post_order_traversal, 4, '4', 15)
+ (boost::tree_node::post_order_traversal, 5, '5', 36);
+ test_node<f_node_case>(f_root, bf_vals, pre_vals, post_vals, df_vals);
+ }
+#endif // BOOST_TREE_NODE_CAN_USE_FUSION
+}
+
+#if defined BOOST_MSVC
+ #pragma warning (pop)
+#endif
+
+#if defined BOOST_TYPEOF_EMULATION
+#include <boost/typeof/boost/ptr_container/ptr_vector.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_deque.hpp>
+#include <boost/typeof/boost/ptr_container/ptr_list.hpp>
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include <boost/typeof/boost/container/vector.hpp>
+#include <boost/typeof/boost/container/stable_vector.hpp>
+#include <boost/typeof/boost/container/deque.hpp>
+#include <boost/typeof/boost/container/list.hpp>
+#include <boost/typeof/boost/container/slist.hpp>
+#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#endif // BOOST_TYPEOF_EMULATION
+
+int test_main(int argc, char** argv)
+{
+ test<boost::ptr_vecS>();
+ test<boost::ptr_dequeS>();
+ test<boost::ptr_listS>();
+#if !defined BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+ test<boost::vector_selector<boost::mpl::true_> >();
+ test<boost::stable_vecS>();
+ test<boost::deque_selector<boost::mpl::true_> >();
+ test<boost::list_selector<boost::mpl::true_> >();
+ test<boost::slistS>();
+#endif
+
+ return 0;
+}
+
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