Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r75207 - in sandbox/tree_node: boost boost/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
From: sponage_at_[hidden]
Date: 2011-11-01 05:31:36


Author: expaler
Date: 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
New Revision: 75207
URL: http://svn.boost.org/trac/boost/changeset/75207

Log:
Boost.TreeNode candidate library: version 0.2 released
Added:
   sandbox/tree_node/boost/tree_node.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/base.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/breadth_first_iterator.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/depth_first_iterator.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/dereference_iterator.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/factory.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/in_order_iterator.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/post_order_iterator.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/pre_order_iterator.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/raw_associative_node.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/raw_binary_node.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/raw_node.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/shared_base.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/simple_associative_node.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/simple_node.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/traversal_state.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/typeof.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/with_child_range_access.hpp (contents, props changed)
   sandbox/tree_node/boost/tree_node/with_depth.hpp (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_binary_tree_node.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/concept_cloneable_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_factory_construct.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_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_non_assoc_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/concept_type_generator.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/concepts.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/index.html (contents, props changed)
   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/binary_tree_node.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/cloneable_tree_node.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/factory_constructible.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/nary_tree_node.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/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/concepts/type_generator.html (contents, props changed)
   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/breadth_first_iterator.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/factory.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/post_order_iterator.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/raw_associative_node.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_associative_node_base.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_associative_node_gen.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_binary_node.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_binary_node_base.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_binary_node_gen.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_node.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_node_base.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_node_gen.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/shared_tree_node_base.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_assoc_node_base.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_assoc_node_gen.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_associative_node.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_node.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_node_base.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_node_gen.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/with_child_range_acc_base.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_child_range_acc_gen.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_child_range_access.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_depth.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_depth_base.html (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_depth_gen.html (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_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_factory.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_post_order_iterator.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_raw_assoc_node_base.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_raw_assoc_node_gen.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_raw_associative_node.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_raw_binary_node.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_raw_binary_node_base.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_raw_binary_node_gen.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_raw_node.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_raw_node_base.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_raw_node_gen.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_shared_tree_node_base.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_simple_assoc_node_base.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_simple_assoc_node_gen.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_simple_associative_node.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_simple_node.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_simple_node_base.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_simple_node_gen.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_with_child_range.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_with_child_range_base.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_with_child_range_gen.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_with_depth.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_with_depth_base.qbk (contents, props changed)
   sandbox/tree_node/libs/tree_node/doc/ref_with_depth_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/default_unconstructible_type.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/default_unconstructible_type.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/raw_associative_node.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/raw_binary_node.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/raw_node.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/show_functions.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/show_functions.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/showcase_descendant_iterators.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/showcase_iterators.hpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/simple_associative_node.cpp (contents, props changed)
   sandbox/tree_node/libs/tree_node/example/simple_node.cpp (contents, props changed)

Added: sandbox/tree_node/boost/tree_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,27 @@
+// Copyright (C) 2011 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/tree_node/traversal_state.hpp>
+#include <boost/tree_node/breadth_first_iterator.hpp>
+#include <boost/tree_node/pre_order_iterator.hpp>
+#include <boost/tree_node/post_order_iterator.hpp>
+#include <boost/tree_node/depth_first_iterator.hpp>
+#include <boost/tree_node/in_order_iterator.hpp>
+#include <boost/tree_node/factory.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/shared_base.hpp>
+#include <boost/tree_node/raw_binary_node.hpp>
+#include <boost/tree_node/raw_node.hpp>
+#include <boost/tree_node/simple_node.hpp>
+#include <boost/tree_node/raw_associative_node.hpp>
+#include <boost/tree_node/simple_associative_node.hpp>
+#include <boost/tree_node/with_child_range_access.hpp>
+#include <boost/tree_node/with_depth.hpp>
+
+#endif // BOOST_TREE_NODE_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/base.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/base.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,72 @@
+// Copyright (C) 2011 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/detail/base_pointee_unshared.hpp>
+
+//[reference__tree_node_base
+namespace boost { namespace tree_node {
+
+ template <typename Derived>
+ struct tree_node_base
+ //<-
+ : public ::boost::detail::base_pointee_unshared<Derived>
+ //->
+ {
+ typedef // implementation_defined
+ //<-
+ typename ::boost::detail::base_pointee_unshared<
+ Derived
+ >::pointer
+ //->
+ pointer;
+ typedef // implementation_defined
+ //<-
+ typename ::boost::detail::base_pointee_unshared<
+ Derived
+ >::const_pointer
+ //->
+ const_pointer;
+
+ protected:
+ void shallow_update_impl();
+
+ void deep_update_impl();
+
+ void shallow_update_derived();
+
+ void deep_update_derived();
+ };
+
+ //<-
+ template <typename Derived>
+ inline void tree_node_base<Derived>::shallow_update_impl()
+ {
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::deep_update_impl()
+ {
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::shallow_update_derived()
+ {
+ this->get_derived()->shallow_update_impl();
+ }
+
+ template <typename Derived>
+ inline void tree_node_base<Derived>::deep_update_derived()
+ {
+ this->get_derived()->deep_update_impl();
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_BASE_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/breadth_first_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/breadth_first_iterator.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,543 @@
+// Copyright (C) 2011 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_BREADTH_FIRST_ITERATOR_HPP_INCLUDED
+#define BOOST_TREE_BREADTH_FIRST_ITERATOR_HPP_INCLUDED
+
+#include <deque>
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/if.hpp>
+#ifndef BOOST_NO_SFINAE
+#include <boost/mpl/equal_to.hpp>
+#include <boost/utility/enable_if.hpp>
+#endif
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/dereference_iterator.hpp>
+#include <boost/detail/metafunction/element_type.hpp>
+
+//[reference__breadth_first_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename MimicsChildIterator>
+ class breadth_first_iterator
+ {
+ //<-
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_pointer<NodePointer>
+ , ::std::tr1::remove_pointer<NodePointer>
+ , ::boost::detail::element_type<NodePointer>
+ >::type
+ element_type;
+ typedef typename ::std::tr1::remove_const<element_type>::type
+ node_type;
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_const<element_type>
+ , typename node_type::const_child_iterator
+ , typename node_type::child_iterator
+ >::type
+ child_iterator;
+ typedef typename ::boost::iterator_value<child_iterator>::type
+ child_value;
+ typedef typename ::boost::mpl::if_<
+ MimicsChildIterator
+ , child_iterator
+ , NodePointer
+ >::type
+ queue_element;
+ //->
+
+ public:
+ typedef // implementation_defined
+ //<-
+ typename ::boost::mpl::if_<
+ MimicsChildIterator
+ , child_value
+ , NodePointer
+ >::type
+ //->
+ value_type;
+ typedef value_type const&
+ reference;
+ typedef // implementation_defined
+ //<-
+ typename ::boost::mpl::if_<
+ MimicsChildIterator
+ , child_iterator
+ , value_type const*
+ >::type
+ //->
+ pointer;
+ typedef ::std::ptrdiff_t
+ difference_type;
+ typedef ::std::forward_iterator_tag
+ iterator_category;
+
+ //<-
+ private:
+#ifndef BOOST_NO_SFINAE
+ struct enabler
+ {
+ };
+#endif
+
+ ::std::deque<queue_element> _queue;
+ queue_element _current;
+ traversal_state _state;
+
+ public:
+ //->
+ breadth_first_iterator();
+
+ explicit breadth_first_iterator(NodePointer const& node);
+
+ template <typename NP, typename MCI>
+ breadth_first_iterator(
+ breadth_first_iterator<NP,MCI> const& other
+//<-
+#ifndef BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<NP,NodePointer>
+ , ::boost::mpl::equal_to<MCI,MimicsChildIterator>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type = enabler()
+#endif
+//->
+ );
+
+ reference operator*() const;
+
+ pointer operator->() const;
+
+ breadth_first_iterator& operator++();
+
+ breadth_first_iterator operator++(int);
+
+ operator traversal_state() const;
+
+ //<-
+ private:
+ reference _deref(::boost::mpl::true_) const;
+
+ reference _deref(::boost::mpl::false_) const;
+
+ pointer _indirect(::boost::mpl::true_) const;
+
+ pointer _indirect(::boost::mpl::false_) const;
+
+ NodePointer _current_node(::boost::mpl::true_) const;
+
+ NodePointer const& _current_node(::boost::mpl::false_) const;
+
+ void _initialize(NodePointer const&, ::boost::mpl::true_);
+
+ void _initialize(NodePointer const&, ::boost::mpl::false_);
+
+ void _push_children(NodePointer const&, ::boost::mpl::true_);
+
+ void _push_children(NodePointer const&, ::boost::mpl::false_);
+
+ void _pop();
+
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+#ifdef BOOST_NO_SFINAE
+ friend bool
+#else
+ friend typename ::boost::enable_if<
+ ::boost::mpl::equal_to<MCI1,MCI2>
+ , bool
+ >::type
+#endif
+ operator==(
+ breadth_first_iterator<NP1,MCI1> const& lhs
+ , breadth_first_iterator<NP2,MCI2> const& rhs
+ );
+ //->
+ };
+
+ //<-
+ template <typename NP, typename MCI>
+ breadth_first_iterator<NP,MCI>::breadth_first_iterator()
+ : _queue(), _current(), _state(no_traversal)
+ {
+ }
+
+ template <typename NP, typename MCI>
+ breadth_first_iterator<NP,MCI>::breadth_first_iterator(NP const& node)
+ : _queue()
+ , _current()
+ , _state(node ? breadth_first_traversal : no_traversal)
+ {
+ _initialize(node, MCI());
+ }
+
+ template <typename NP1, typename MCI1>
+ template <typename NP2, typename MCI2>
+ breadth_first_iterator<NP1,MCI1>::breadth_first_iterator(
+ breadth_first_iterator<NP2,MCI2> const& other
+#ifndef BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<NP2,NP1>
+ , ::boost::mpl::equal_to<MCI2,MCI1>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type
+#endif
+ ) : _queue(other._queue.begin(), other._queue.end())
+ , _current(other._current)
+ , _state(other._state)
+ {
+ }
+
+ template <typename NP, typename MCI>
+ inline void
+ breadth_first_iterator<NP,MCI>::_initialize(
+ NP const& node
+ , ::boost::mpl::true_
+ )
+ {
+ if (node)
+ {
+ _push_children(node, MCI());
+ _pop();
+ }
+ }
+
+ template <typename NP, typename MCI>
+ inline void
+ breadth_first_iterator<NP,MCI>::_initialize(
+ NP const& node
+ , ::boost::mpl::false_
+ )
+ {
+ _current = node;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename breadth_first_iterator<NP,MCI>::reference
+ breadth_first_iterator<NP,MCI>::_deref(::boost::mpl::true_) const
+ {
+ return *_current;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename breadth_first_iterator<NP,MCI>::reference
+ breadth_first_iterator<NP,MCI>::_deref(::boost::mpl::false_) const
+ {
+ return _current;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename breadth_first_iterator<NP,MCI>::reference
+ breadth_first_iterator<NP,MCI>::operator*() const
+ {
+ return _deref(MCI());
+ }
+
+ template <typename NP, typename MCI>
+ inline typename breadth_first_iterator<NP,MCI>::pointer
+ breadth_first_iterator<NP,MCI>::_indirect(::boost::mpl::true_) const
+ {
+ return _current;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename breadth_first_iterator<NP,MCI>::pointer
+ breadth_first_iterator<NP,MCI>::_indirect(::boost::mpl::false_) const
+ {
+ return &_current;
+ }
+
+ template <typename NP, typename MCI>
+ inline NP
+ breadth_first_iterator<NP,MCI>::_current_node(
+ ::boost::mpl::true_
+ ) const
+ {
+ return dereference_iterator(_current);
+ }
+
+ template <typename NP, typename MCI>
+ inline NP const&
+ breadth_first_iterator<NP,MCI>::_current_node(
+ ::boost::mpl::false_
+ ) const
+ {
+ return _current;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename breadth_first_iterator<NP,MCI>::pointer
+ breadth_first_iterator<NP,MCI>::operator->() const
+ {
+ return _indirect(MCI());
+ }
+
+ template <typename NP, typename MCI>
+ void
+ breadth_first_iterator<NP,MCI>::_push_children(
+ NP const& node
+ , ::boost::mpl::true_
+ )
+ {
+ child_iterator itr_end = node->get_child_end();
+
+ for (
+ child_iterator itr = node->get_child_begin();
+ itr != itr_end;
+ ++itr
+ )
+ {
+ _queue.push_back(itr);
+ }
+ }
+
+ template <typename NP, typename MCI>
+ void
+ breadth_first_iterator<NP,MCI>::_push_children(
+ NP const& node
+ , ::boost::mpl::false_
+ )
+ {
+ child_iterator itr_end = node->get_child_end();
+
+ for (
+ child_iterator itr = node->get_child_begin();
+ itr != itr_end;
+ ++itr
+ )
+ {
+ _queue.push_back(dereference_iterator(itr));
+ }
+ }
+
+ template <typename NP, typename MCI>
+ inline void breadth_first_iterator<NP,MCI>::_pop()
+ {
+ if (_queue.empty())
+ {
+ _state = no_traversal;
+ }
+ else
+ {
+ _current = _queue.front();
+ _queue.pop_front();
+ }
+ }
+
+ template <typename NP, typename MCI>
+ inline breadth_first_iterator<NP,MCI>&
+ breadth_first_iterator<NP,MCI>::operator++()
+ {
+ MCI mci;
+ _push_children(_current_node(mci), mci);
+ _pop();
+ return *this;
+ }
+
+ template <typename NP, typename MCI>
+ inline breadth_first_iterator<NP,MCI>
+ breadth_first_iterator<NP,MCI>::operator++(int)
+ {
+ breadth_first_iterator<NP,MCI> itr(*this);
+ ++(*this);
+ return itr;
+ }
+
+ template <typename NP, typename MCI>
+ inline breadth_first_iterator<NP,MCI>::operator traversal_state() const
+ {
+ return _state;
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__breadth_first_iterator__operator_equals
+namespace boost { namespace tree_node {
+
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+//<-
+#ifdef BOOST_NO_SFINAE
+ bool
+#else
+//->
+ typename ::boost::enable_if< ::boost::mpl::equal_to<MCI1,MCI2>,bool>::type
+//<-
+#endif
+//->
+ operator==(
+ breadth_first_iterator<NP1,MCI1> const& lhs
+ , breadth_first_iterator<NP2,MCI2> const& rhs
+ );
+
+ //<-
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+#ifdef BOOST_NO_SFINAE
+ inline bool
+#else
+ inline typename ::boost::enable_if<
+ ::boost::mpl::equal_to<MCI1,MCI2>
+ , bool
+ >::type
+#endif
+ operator==(
+ breadth_first_iterator<NP1,MCI1> const& lhs
+ , breadth_first_iterator<NP2,MCI2> const& rhs
+ )
+ {
+ if (lhs._state == rhs._state)
+ {
+ return lhs._state ? (lhs._current == rhs._current) : !rhs._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__breadth_first_iterator__operator_not_equal
+namespace boost { namespace tree_node {
+
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+//<-
+#ifdef BOOST_NO_SFINAE
+ bool
+#else
+//->
+ typename ::boost::enable_if< ::boost::mpl::equal_to<MCI1,MCI2>,bool>::type
+//<-
+#endif
+//->
+ operator!=(
+ breadth_first_iterator<NP1,MCI1> const& lhs
+ , breadth_first_iterator<NP2,MCI2> const& rhs
+ );
+
+ //<-
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+#ifdef BOOST_NO_SFINAE
+ inline bool
+#else
+ inline typename ::boost::enable_if<
+ ::boost::mpl::equal_to<MCI1,MCI2>
+ , bool
+ >::type
+#endif
+ operator!=(
+ breadth_first_iterator<NP1,MCI1> const& lhs
+ , breadth_first_iterator<NP2,MCI2> const& rhs
+ )
+ {
+ return !(lhs == rhs);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_breadth_first_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer>
+ breadth_first_iterator<NodePointer,::boost::mpl::false_>
+ make_breadth_first_iterator(NodePointer const& node);
+
+ //<-
+ template <typename NodePointer>
+ inline breadth_first_iterator<NodePointer,::boost::mpl::false_>
+ make_breadth_first_iterator(NodePointer const& node)
+ {
+ return breadth_first_iterator<NodePointer,::boost::mpl::false_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_breadth_first_descendant_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer>
+ breadth_first_iterator<NodePointer,::boost::mpl::true_>
+ make_breadth_first_descendant_iterator(NodePointer const& node);
+
+ //<-
+ template <typename NodePointer>
+ inline breadth_first_iterator<NodePointer,::boost::mpl::true_>
+ make_breadth_first_descendant_iterator(NodePointer const& node)
+ {
+ return breadth_first_iterator<NodePointer,::boost::mpl::true_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__breadth_first_iterate
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ breadth_first_iterate(NodePointer const& node, UnaryFunction function);
+
+ //<-
+ template <typename NodePointer, typename UnaryFunction>
+ void breadth_first_iterate(NodePointer const& node, UnaryFunction function)
+ {
+ for (
+ breadth_first_iterator<NodePointer,::boost::mpl::false_> itr(node);
+ itr;
+ ++itr
+ )
+ {
+ function(*itr);
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__breadth_first_iterate_descendants
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ breadth_first_iterate_descendants(
+ NodePointer const& node
+ , UnaryFunction function
+ );
+
+ //<-
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ breadth_first_iterate_descendants(
+ NodePointer const& node
+ , UnaryFunction function
+ )
+ {
+ for (
+ breadth_first_iterator<NodePointer,::boost::mpl::true_> itr(node);
+ itr;
+ ++itr
+ )
+ {
+ function(*itr);
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_BREADTH_FIRST_ITERATOR_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/depth_first_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/depth_first_iterator.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,513 @@
+// Copyright (C) 2011 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_DEPTH_FIRST_ITERATOR_HPP_INCLUDED
+#define BOOST_TREE_NODE_DEPTH_FIRST_ITERATOR_HPP_INCLUDED
+
+#include <deque>
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/if.hpp>
+#ifndef BOOST_NO_SFINAE
+#include <boost/mpl/equal_to.hpp>
+#include <boost/utility/enable_if.hpp>
+#endif
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/dereference_iterator.hpp>
+#include <boost/detail/metafunction/element_type.hpp>
+
+//[reference__depth_first_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename MimicsChildIterator>
+ class depth_first_iterator
+ {
+ //<-
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_pointer<NodePointer>
+ , ::std::tr1::remove_pointer<NodePointer>
+ , ::boost::detail::element_type<NodePointer>
+ >::type
+ element_type;
+ typedef typename ::std::tr1::remove_const<element_type>::type
+ node_type;
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_const<element_type>
+ , typename node_type::const_child_iterator
+ , typename node_type::child_iterator
+ >::type
+ child_iterator;
+ typedef typename ::boost::iterator_value<child_iterator>::type
+ child_value;
+ //->
+
+ public:
+ typedef // implementation_defined
+ //<-
+ typename ::boost::mpl::if_<
+ MimicsChildIterator
+ , child_value
+ , NodePointer
+ >::type
+ //->
+ value_type;
+ typedef value_type const&
+ reference;
+ typedef // implementation_defined
+ //<-
+ typename ::boost::mpl::if_<
+ MimicsChildIterator
+ , child_iterator
+ , value_type const*
+ >::type
+ //->
+ pointer;
+ typedef ::std::ptrdiff_t
+ difference_type;
+ typedef ::std::forward_iterator_tag
+ iterator_category;
+
+ //<-
+ private:
+#ifndef BOOST_NO_SFINAE
+ struct enabler
+ {
+ };
+#endif
+
+ ::std::deque<NodePointer> _node_stack;
+ ::std::deque<child_iterator> _itr_stack;
+ NodePointer _current_node;
+ child_iterator _current_itr;
+ traversal_state _state;
+
+ public:
+ //->
+ depth_first_iterator();
+
+ explicit depth_first_iterator(NodePointer const& node);
+
+ template <typename NP, typename MCI>
+ depth_first_iterator(
+ depth_first_iterator<NP,MCI> const& other
+//<-
+#ifndef BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<NP,NodePointer>
+ , ::boost::mpl::equal_to<MCI,MimicsChildIterator>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type = enabler()
+#endif
+//->
+ );
+
+ reference operator*() const;
+
+ pointer operator->() const;
+
+ depth_first_iterator& operator++();
+
+ depth_first_iterator operator++(int);
+
+ operator traversal_state() const;
+
+ //<-
+ private:
+ reference _deref(::boost::mpl::true_) const;
+
+ reference _deref(::boost::mpl::false_) const;
+
+ pointer _indirect(::boost::mpl::true_) const;
+
+ pointer _indirect(::boost::mpl::false_) const;
+
+ void _initialize(::boost::mpl::true_);
+
+ void _initialize(::boost::mpl::false_);
+
+ void _set_state(::boost::mpl::true_);
+
+ void _set_state(::boost::mpl::false_);
+
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+#ifdef BOOST_NO_SFINAE
+ friend bool
+#else
+ friend typename ::boost::enable_if<
+ ::boost::mpl::equal_to<MCI1,MCI2>
+ , bool
+ >::type
+#endif
+ operator==(
+ depth_first_iterator<NP1,MCI1> const& lhs
+ , depth_first_iterator<NP2,MCI2> const& rhs
+ );
+ //->
+ };
+
+ //<-
+ template <typename NP, typename MCI>
+ depth_first_iterator<NP,MCI>::depth_first_iterator()
+ : _node_stack()
+ , _itr_stack()
+ , _current_node()
+ , _current_itr()
+ , _state(no_traversal)
+ {
+ }
+
+ template <typename NP, typename MCI>
+ depth_first_iterator<NP,MCI>::depth_first_iterator(NP const& node)
+ : _node_stack()
+ , _itr_stack()
+ , _current_node(node)
+ , _current_itr()
+ , _state(node ? pre_order_traversal : no_traversal)
+ {
+ if (node)
+ {
+ _itr_stack.push_back(node->get_child_begin());
+ _initialize(MCI());
+ }
+ }
+
+ template <typename NP1, typename MCI1>
+ template <typename NP2, typename MCI2>
+ depth_first_iterator<NP1,MCI1>::depth_first_iterator(
+ depth_first_iterator<NP2,MCI2> const& other
+#ifndef BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<NP2,NP1>
+ , ::boost::mpl::equal_to<MCI2,MCI1>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type
+#endif
+ ) : _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)
+ , _current_itr(other._current_itr)
+ , _state(other._state)
+ {
+ }
+
+ template <typename NP, typename MCI>
+ inline void
+ depth_first_iterator<NP,MCI>::_initialize(::boost::mpl::true_)
+ {
+ ++(*this);
+ }
+
+ template <typename NP, typename MCI>
+ inline void
+ depth_first_iterator<NP,MCI>::_initialize(::boost::mpl::false_)
+ {
+ }
+
+ template <typename NP, typename MCI>
+ inline typename depth_first_iterator<NP,MCI>::reference
+ depth_first_iterator<NP,MCI>::_deref(::boost::mpl::true_) const
+ {
+ return *_current_itr;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename depth_first_iterator<NP,MCI>::reference
+ depth_first_iterator<NP,MCI>::_deref(::boost::mpl::false_) const
+ {
+ return _current_node;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename depth_first_iterator<NP,MCI>::reference
+ depth_first_iterator<NP,MCI>::operator*() const
+ {
+ return _deref(MCI());
+ }
+
+ template <typename NP, typename MCI>
+ inline typename depth_first_iterator<NP,MCI>::pointer
+ depth_first_iterator<NP,MCI>::_indirect(::boost::mpl::true_) const
+ {
+ return _current_itr;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename depth_first_iterator<NP,MCI>::pointer
+ depth_first_iterator<NP,MCI>::_indirect(::boost::mpl::false_) const
+ {
+ return &_current_node;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename depth_first_iterator<NP,MCI>::pointer
+ depth_first_iterator<NP,MCI>::operator->() const
+ {
+ return _indirect(MCI());
+ }
+
+ template <typename NP, typename MCI>
+ inline void depth_first_iterator<NP,MCI>::_set_state(::boost::mpl::true_)
+ {
+ _state = _node_stack.empty() ? no_traversal : post_order_traversal;
+ }
+
+ template <typename NP, typename MCI>
+ inline void depth_first_iterator<NP,MCI>::_set_state(::boost::mpl::false_)
+ {
+ _state = post_order_traversal;
+ }
+
+ template <typename NP, typename MCI>
+ depth_first_iterator<NP,MCI>&
+ depth_first_iterator<NP,MCI>::operator++()
+ {
+ if (_state == post_order_traversal)
+ {
+ _itr_stack.pop_back();
+
+ if (_node_stack.empty())
+ {
+ _state = no_traversal;
+
+ while (!_itr_stack.empty())
+ {
+ _itr_stack.pop_back();
+ }
+ }
+ else
+ {
+ _current_node = _node_stack.back();
+ _node_stack.pop_back();
+
+ if (++_current_itr == _current_node->get_child_end())
+ {
+ _set_state(MCI());
+
+ if (_state)
+ {
+ child_iterator itr = _itr_stack.back();
+
+ _itr_stack.pop_back();
+
+ if (!_itr_stack.empty())
+ {
+ _current_itr = _itr_stack.back();
+ }
+
+ _itr_stack.push_back(itr);
+ }
+ else
+ {
+ while (!_itr_stack.empty())
+ {
+ _itr_stack.pop_back();
+ }
+ }
+ }
+ else
+ {
+ _itr_stack.pop_back();
+ _node_stack.push_back(_current_node);
+ _itr_stack.push_back(_current_itr);
+ _current_node = dereference_iterator(_current_itr);
+ _state = pre_order_traversal;
+ _itr_stack.push_back(_current_node->get_child_begin());
+ }
+ }
+ }
+ else
+ {
+ child_iterator& itr = _itr_stack.back();
+
+ if (itr == _current_node->get_child_end())
+ {
+ _set_state(MCI());
+ }
+ else
+ {
+ _node_stack.push_back(_current_node);
+ _current_node = dereference_iterator(_current_itr = itr);
+ _state = pre_order_traversal;
+ _itr_stack.push_back(_current_node->get_child_begin());
+ }
+ }
+
+ return *this;
+ }
+
+ template <typename NP, typename MCI>
+ inline depth_first_iterator<NP,MCI>
+ depth_first_iterator<NP,MCI>::operator++(int)
+ {
+ depth_first_iterator<NP,MCI> itr(*this);
+ ++(*this);
+ return itr;
+ }
+
+ template <typename NP, typename MCI>
+ inline depth_first_iterator<NP,MCI>::operator traversal_state() const
+ {
+ return _state;
+ }
+ //->
+
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+//<-
+#ifdef BOOST_NO_SFINAE
+ bool
+#else
+//->
+ typename ::boost::enable_if< ::boost::mpl::equal_to<MCI1,MCI2>,bool>::type
+//<-
+#endif
+//->
+ operator==(
+ depth_first_iterator<NP1,MCI1> const& lhs
+ , depth_first_iterator<NP2,MCI2> const& rhs
+ );
+
+ //<-
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+#ifdef BOOST_NO_SFINAE
+ inline bool
+#else
+ inline typename ::boost::enable_if<
+ ::boost::mpl::equal_to<MCI1,MCI2>
+ , bool
+ >::type
+#endif
+ operator==(
+ depth_first_iterator<NP1,MCI1> const& lhs
+ , depth_first_iterator<NP2,MCI2> const& rhs
+ )
+ {
+ if (lhs._state == rhs._state)
+ {
+ return lhs._state ? (*lhs == *rhs) : !rhs._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ //->
+
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+//<-
+#ifdef BOOST_NO_SFINAE
+ bool
+#else
+//->
+ typename ::boost::enable_if< ::boost::mpl::equal_to<MCI1,MCI2>,bool>::type
+//<-
+#endif
+//->
+ operator!=(
+ depth_first_iterator<NP1,MCI1> const& lhs
+ , depth_first_iterator<NP2,MCI2> const& rhs
+ );
+
+ //<-
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+#ifdef BOOST_NO_SFINAE
+ inline bool
+#else
+ inline typename ::boost::enable_if<
+ ::boost::mpl::equal_to<MCI1,MCI2>
+ , bool
+ >::type
+#endif
+ operator!=(
+ depth_first_iterator<NP1,MCI1> const& lhs
+ , depth_first_iterator<NP2,MCI2> const& rhs
+ )
+ {
+ return !(lhs == rhs);
+ }
+ //->
+
+ template <typename NodePointer>
+ depth_first_iterator<NodePointer,::boost::mpl::false_>
+ make_depth_first_iterator(NodePointer const& node);
+
+ //<-
+ template <typename NodePointer>
+ inline depth_first_iterator<NodePointer,::boost::mpl::false_>
+ make_depth_first_iterator(NodePointer const& node)
+ {
+ return depth_first_iterator<NodePointer,::boost::mpl::false_>(node);
+ }
+ //->
+
+ template <typename NodePointer>
+ depth_first_iterator<NodePointer,::boost::mpl::true_>
+ make_depth_first_descendant_iterator(NodePointer const& node);
+
+ //<-
+ template <typename NodePointer>
+ inline depth_first_iterator<NodePointer,::boost::mpl::true_>
+ make_depth_first_descendant_iterator(NodePointer const& node)
+ {
+ return depth_first_iterator<NodePointer,::boost::mpl::true_>(node);
+ }
+ //->
+
+ template <typename NodePointer, typename BinaryFunction>
+ void depth_first_iterate(NodePointer const& node, BinaryFunction function);
+
+ //<-
+ template <typename NodePointer, typename BinaryFunction>
+ void depth_first_iterate(NodePointer const& node, BinaryFunction function)
+ {
+ for (
+ depth_first_iterator<NodePointer,::boost::mpl::false_> itr(node);
+ itr;
+ ++itr
+ )
+ {
+ function(*itr, traversal_state(itr));
+ }
+ }
+ //->
+
+ template <typename NodePointer, typename BinaryFunction>
+ void
+ depth_first_iterate_descendants(
+ NodePointer const& node
+ , BinaryFunction function
+ );
+
+ //<-
+ template <typename NodePointer, typename BinaryFunction>
+ void
+ depth_first_iterate_descendants(
+ NodePointer const& node
+ , BinaryFunction function
+ )
+ {
+ for (
+ depth_first_iterator<NodePointer,::boost::mpl::true_> itr(node);
+ itr;
+ ++itr
+ )
+ {
+ function(*itr, traversal_state(itr));
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_DEPTH_FIRST_ITERATOR_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/dereference_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/dereference_iterator.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,110 @@
+// Copyright (C) 2011 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_DEREFERENCE_ITERATOR_HPP_INCLUDED
+#define BOOST_TREE_NODE_DEREFERENCE_ITERATOR_HPP_INCLUDED
+
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/fusion/adapted/std_pair.hpp>
+#include <boost/fusion/support/is_sequence.hpp>
+#include <boost/iterator/iterator_traits.hpp>
+
+//[reference__dereference_iterator
+namespace boost { namespace tree_node {
+ //<-
+ namespace _detail {
+
+ template <typename Iterator>
+ class dereference_iterator_helper
+ {
+ typedef typename ::boost::iterator_value<Iterator>::type
+ _value_type;
+ typedef typename ::boost::fusion::traits::is_sequence<
+ _value_type
+ >::type
+ _is_associative;
+
+ struct _associative_result
+ {
+ typedef typename _value_type::second_type type;
+ };
+
+ struct _non_associative_result
+ {
+ typedef _value_type type;
+ };
+
+ public:
+ typedef Iterator
+ argument_type;
+ typedef typename ::boost::mpl::eval_if<
+ _is_associative
+ , _associative_result
+ , _non_associative_result
+ >::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 dereference_iterator_helper<Iterator>::result_type
+ dereference_iterator_helper<Iterator>::operator()(
+ argument_type itr
+ ) const
+ {
+ return _evaluate(itr, _is_associative());
+ }
+
+ template <typename Iterator>
+ inline typename dereference_iterator_helper<Iterator>::result_type
+ dereference_iterator_helper<Iterator>::_evaluate(
+ Iterator itr
+ , ::boost::mpl::true_
+ )
+ {
+ return itr->second;
+ }
+
+ template <typename Iterator>
+ inline typename dereference_iterator_helper<Iterator>::result_type
+ dereference_iterator_helper<Iterator>::_evaluate(
+ Iterator itr
+ , ::boost::mpl::false_
+ )
+ {
+ return *itr;
+ }
+ } // namespace _detail
+ //->
+
+//<-
+#if 0
+//->
+ template <typename Iterator>
+ implementation_defined dereference_iterator(Iterator itr);
+//<-
+#endif
+//->
+
+ //<-
+ template <typename Iterator>
+ inline typename _detail::dereference_iterator_helper<Iterator>::result_type
+ dereference_iterator(Iterator itr)
+ {
+ return _detail::dereference_iterator_helper<Iterator>()(itr);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_DEREFERENCE_ITERATOR_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/factory.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/factory.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,39 @@
+// Copyright (C) 2011 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_FACTORY_HPP_INCLUDED
+#define BOOST_TREE_NODE_FACTORY_HPP_INCLUDED
+
+//[reference__factory
+namespace boost { namespace tree_node {
+
+ template <typename Node>
+ struct factory
+ {
+ static typename Node::pointer create();
+
+ static typename Node::pointer
+ create(typename Node::traits::data_type const& data);
+ };
+
+ //<-
+ template <typename Node>
+ typename Node::pointer factory<Node>::create()
+ {
+ return typename Node::pointer(new Node());
+ }
+
+ template <typename Node>
+ typename Node::pointer
+ factory<Node>::create(typename Node::traits::data_type const& data)
+ {
+ return typename Node::pointer(new Node(data));
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_FACTORY_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/in_order_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/in_order_iterator.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,395 @@
+// Copyright (C) 2011 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_IN_ORDER_ITERATOR_HPP_INCLUDED
+#define BOOST_TREE_IN_ORDER_ITERATOR_HPP_INCLUDED
+
+#include <iterator>
+#include <boost/config.hpp>
+#ifndef BOOST_NO_SFINAE
+#include <boost/tr1/type_traits.hpp>
+#include <boost/utility/enable_if.hpp>
+#endif
+#include <boost/tree_node/traversal_state.hpp>
+
+//[reference__in_order_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer>
+ class in_order_iterator
+ {
+ public:
+ typedef NodePointer value_type;
+ typedef value_type const& reference;
+ typedef value_type const* pointer;
+ typedef ::std::ptrdiff_t difference_type;
+ typedef ::std::bidirectional_iterator_tag iterator_category;
+
+ //<-
+ private:
+#ifndef BOOST_NO_SFINAE
+ struct enabler
+ {
+ };
+#endif
+
+ value_type _current;
+ value_type _root_parent;
+ traversal_state _state;
+
+ public:
+ //->
+ in_order_iterator();
+
+ in_order_iterator(NodePointer const& node, bool start_left = true);
+
+ template <typename NP>
+ in_order_iterator(
+ in_order_iterator<NP> const& other
+//<-
+#ifndef BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ ::std::tr1::is_convertible<NP,NodePointer>
+ , enabler
+ >::type = enabler()
+#endif
+//->
+ );
+
+ reference operator*() const;
+
+ pointer operator->() const;
+
+ in_order_iterator& operator++();
+
+ in_order_iterator operator++(int);
+
+ in_order_iterator& operator--();
+
+ in_order_iterator operator--(int);
+
+ operator traversal_state() const;
+
+ //<-
+ private:
+ template <typename NP1, typename NP2>
+ friend bool
+ operator==(
+ in_order_iterator<NP1> const& lhs
+ , in_order_iterator<NP2> const& rhs
+ );
+ //->
+ };
+
+ //<-
+ template <typename NP>
+ in_order_iterator<NP>::in_order_iterator()
+ : _current(), _root_parent(), _state(no_traversal)
+ {
+ }
+
+ template <typename NP>
+ in_order_iterator<NP>::in_order_iterator(NP const& node, bool start_left)
+ : _current(node)
+ , _root_parent(node ? node->get_parent() : 0)
+ , _state(node ? in_order_traversal : no_traversal)
+ {
+ if (node)
+ {
+ if (start_left)
+ {
+ while (_current->get_left_child())
+ {
+ _current = _current->get_left_child();
+ }
+ }
+ else
+ {
+ while (_current->get_right_child())
+ {
+ _current = _current->get_right_child();
+ }
+ }
+ }
+ }
+
+ template <typename NP1>
+ template <typename NP2>
+ in_order_iterator<NP1>::in_order_iterator(
+ in_order_iterator<NP2> const& other
+#ifndef BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ ::std::tr1::is_convertible<NP2,NP1>
+ , enabler
+ >::type
+#endif
+ ) : _current(other._current)
+ , _root_parent(other._root_parent)
+ , _state(other._state)
+ {
+ }
+
+ template <typename NP>
+ inline typename in_order_iterator<NP>::reference
+ in_order_iterator<NP>::operator*() const
+ {
+ return _current;
+ }
+
+ template <typename NP>
+ inline typename in_order_iterator<NP>::pointer
+ in_order_iterator<NP>::operator->() const
+ {
+ return &_current;
+ }
+
+ template <typename NP>
+ in_order_iterator<NP>& in_order_iterator<NP>::operator++()
+ {
+ value_type node = _current->get_right_child();
+
+ if (node)
+ {
+ while (node->get_left_child())
+ {
+ node = node->get_left_child();
+ }
+
+ _current = node;
+ return *this;
+ }
+
+ node = _current;
+
+ for (
+ value_type next = node->get_parent();
+ next != _root_parent;
+ next = next->get_parent()
+ )
+ {
+ if (node == next->get_left_child())
+ {
+ _current = next;
+ return *this;
+ }
+
+ node = next;
+ }
+
+ _current = _root_parent = 0;
+ _state = no_traversal;
+ return *this;
+ }
+
+ template <typename NP>
+ inline in_order_iterator<NP> in_order_iterator<NP>::operator++(int)
+ {
+ in_order_iterator<NP> itr(*this);
+ ++(*this);
+ return itr;
+ }
+
+ template <typename NP>
+ inline in_order_iterator<NP>& in_order_iterator<NP>::operator--()
+ {
+ value_type node = _current->get_left_child();
+
+ if (node)
+ {
+ while (node->get_right_child())
+ {
+ node = node->get_right_child();
+ }
+
+ _current = node;
+ return *this;
+ }
+
+ node = _current;
+
+ for (
+ value_type next = node->get_parent();
+ next != _root_parent;
+ next = next->get_parent()
+ )
+ {
+ if (node == next->get_right_child())
+ {
+ _current = next;
+ return *this;
+ }
+
+ node = next;
+ }
+
+ _current = _root_parent = 0;
+ _state = no_traversal;
+ return *this;
+ }
+
+ template <typename NP>
+ inline in_order_iterator<NP> in_order_iterator<NP>::operator--(int)
+ {
+ in_order_iterator<NP> itr(*this);
+ --(*this);
+ return itr;
+ }
+
+ template <typename NP>
+ inline in_order_iterator<NP>::operator traversal_state() const
+ {
+ return _state;
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__in_order_iterator__operator_equals
+namespace boost { namespace tree_node {
+
+ template <typename NP1, typename NP2>
+ bool
+ operator==(
+ in_order_iterator<NP1> const& lhs
+ , in_order_iterator<NP2> const& rhs
+ );
+
+ //<-
+ template <typename NP1, typename NP2>
+ inline bool
+ operator==(
+ in_order_iterator<NP1> const& lhs
+ , in_order_iterator<NP2> const& rhs
+ )
+ {
+ if (lhs._state == rhs._state)
+ {
+ return lhs._state ? (lhs._current == rhs._current) : !rhs._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__in_order_iterator__operator_not_equal
+namespace boost { namespace tree_node {
+
+ template <typename NP1, typename NP2>
+ bool
+ operator!=(
+ in_order_iterator<NP1> const& lhs
+ , in_order_iterator<NP2> const& rhs
+ );
+
+ //<-
+ template <typename NP1, typename NP2>
+ inline bool
+ operator!=(
+ in_order_iterator<NP1> const& lhs
+ , in_order_iterator<NP2> const& rhs
+ )
+ {
+ return !(lhs == rhs);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_in_order_forward_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer>
+ in_order_iterator<NodePointer>
+ make_in_order_forward_iterator(NodePointer const& node);
+
+ //<-
+ template <typename NodePointer>
+ inline in_order_iterator<NodePointer>
+ make_in_order_forward_iterator(NodePointer const& node)
+ {
+ return in_order_iterator<NodePointer>(node, true);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_in_order_reverse_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer>
+ in_order_iterator<NodePointer>
+ make_in_order_reverse_iterator(NodePointer const& node);
+
+ //<-
+ template <typename NodePointer>
+ inline in_order_iterator<NodePointer>
+ make_in_order_reverse_iterator(NodePointer const& node)
+ {
+ return in_order_iterator<NodePointer>(node, false);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__in_order_iterate_forward
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ in_order_iterate_forward(
+ NodePointer const& node
+ , UnaryFunction function
+ );
+
+ //<-
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ in_order_iterate_forward(
+ NodePointer const& node
+ , UnaryFunction function
+ )
+ {
+ for (in_order_iterator<NodePointer> itr(node, true); itr; ++itr)
+ {
+ function(*itr);
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__in_order_iterate_reverse
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ in_order_iterate_reverse(
+ NodePointer const& node
+ , UnaryFunction function
+ );
+
+ //<-
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ in_order_iterate_reverse(
+ NodePointer const& node
+ , UnaryFunction function
+ )
+ {
+ for (in_order_iterator<NodePointer> itr(node, false); itr; --itr)
+ {
+ function(*itr);
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_IN_ORDER_ITERATOR_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/post_order_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/post_order_iterator.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,561 @@
+// Copyright (C) 2011 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_POST_ORDER_ITERATOR_HPP_INCLUDED
+#define BOOST_TREE_NODE_POST_ORDER_ITERATOR_HPP_INCLUDED
+
+#include <deque>
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/if.hpp>
+#ifndef BOOST_NO_SFINAE
+#include <boost/mpl/equal_to.hpp>
+#include <boost/utility/enable_if.hpp>
+#endif
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/dereference_iterator.hpp>
+#include <boost/detail/metafunction/element_type.hpp>
+
+//[reference__post_order_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename MimicsChildIterator>
+ class post_order_iterator
+ {
+ //<-
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_pointer<NodePointer>
+ , ::std::tr1::remove_pointer<NodePointer>
+ , ::boost::detail::element_type<NodePointer>
+ >::type
+ element_type;
+ typedef typename ::std::tr1::remove_const<element_type>::type
+ node_type;
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_const<element_type>
+ , typename node_type::const_child_iterator
+ , typename node_type::child_iterator
+ >::type
+ child_iterator;
+ typedef typename ::boost::iterator_value<child_iterator>::type
+ child_value;
+ typedef typename ::boost::mpl::if_<
+ MimicsChildIterator
+ , child_iterator
+ , NodePointer
+ >::type
+ stack_element;
+ //->
+
+ public:
+ typedef // implementation_defined
+ //<-
+ typename ::boost::mpl::if_<
+ MimicsChildIterator
+ , child_value
+ , NodePointer
+ >::type
+ //->
+ value_type;
+ typedef value_type const&
+ reference;
+ typedef // implementation_defined
+ //<-
+ typename ::boost::mpl::if_<
+ MimicsChildIterator
+ , child_iterator
+ , value_type const*
+ >::type
+ //->
+ pointer;
+ typedef ::std::ptrdiff_t
+ difference_type;
+ typedef ::std::forward_iterator_tag
+ iterator_category;
+
+ //<-
+ private:
+ struct enabler
+ {
+ };
+
+ std::deque<stack_element> _stack;
+ stack_element _current;
+ traversal_state _state;
+
+ public:
+ //->
+ post_order_iterator();
+
+ explicit post_order_iterator(NodePointer const& node);
+
+ template <typename NP, typename MCI>
+ post_order_iterator(
+ post_order_iterator<NP,MCI> const& other
+//<-
+#ifndef BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<NP,NodePointer>
+ , ::boost::mpl::equal_to<MCI,MimicsChildIterator>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type = enabler()
+#endif
+//->
+ );
+
+ reference operator*() const;
+
+ pointer operator->() const;
+
+ post_order_iterator& operator++();
+
+ post_order_iterator operator++(int);
+
+ operator traversal_state() const;
+
+ //<-
+ private:
+ reference _deref(::boost::mpl::true_) const;
+
+ reference _deref(::boost::mpl::false_) const;
+
+ pointer _indirect(::boost::mpl::true_) const;
+
+ pointer _indirect(::boost::mpl::false_) const;
+
+ NodePointer _current_node(::boost::mpl::true_) const;
+
+ NodePointer const& _current_node(::boost::mpl::false_) const;
+
+ void _push_child_itr(child_iterator const&, ::boost::mpl::true_);
+
+ void _push_child_itr(child_iterator const&, ::boost::mpl::false_);
+
+ void _start(NodePointer const&);
+
+ void _initialize(NodePointer const&, ::boost::mpl::true_);
+
+ void _initialize(NodePointer const&, ::boost::mpl::false_);
+
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+#ifdef BOOST_NO_SFINAE
+ friend bool
+#else
+ friend typename ::boost::enable_if<
+ ::boost::mpl::equal_to<MCI1,MCI2>
+ , bool
+ >::type
+#endif
+ operator==(
+ post_order_iterator<NP1,MCI1> const& lhs
+ , post_order_iterator<NP2,MCI2> const& rhs
+ );
+ //->
+ };
+
+ //<-
+ template <typename NP, typename MCI>
+ post_order_iterator<NP,MCI>::post_order_iterator()
+ : _stack(), _current(), _state(no_traversal)
+ {
+ }
+
+ template <typename NP, typename MCI>
+ post_order_iterator<NP,MCI>::post_order_iterator(NP const& node)
+ : _stack()
+ , _current()
+ , _state(node ? post_order_traversal : no_traversal)
+ {
+ if (node)
+ {
+ _initialize(node, MCI());
+ }
+ }
+
+ template <typename NP1, typename MCI1>
+ template <typename NP2, typename MCI2>
+ post_order_iterator<NP1,MCI1>::post_order_iterator(
+ post_order_iterator<NP2,MCI2> const& other
+#ifndef BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<NP2,NP1>
+ , ::boost::mpl::equal_to<MCI2,MCI1>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type
+#endif
+ ) : _stack(other._stack.begin(), other._stack.end())
+ , _current(other._current)
+ , _state(other._state)
+ {
+ }
+
+ template <typename NP, typename MCI>
+ inline typename post_order_iterator<NP,MCI>::reference
+ post_order_iterator<NP,MCI>::_deref(::boost::mpl::true_) const
+ {
+ return *_current;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename post_order_iterator<NP,MCI>::reference
+ post_order_iterator<NP,MCI>::_deref(::boost::mpl::false_) const
+ {
+ return _current;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename post_order_iterator<NP,MCI>::reference
+ post_order_iterator<NP,MCI>::operator*() const
+ {
+ return _deref(MCI());
+ }
+
+ template <typename NP, typename MCI>
+ inline typename post_order_iterator<NP,MCI>::pointer
+ post_order_iterator<NP,MCI>::_indirect(::boost::mpl::true_) const
+ {
+ return _current;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename post_order_iterator<NP,MCI>::pointer
+ post_order_iterator<NP,MCI>::_indirect(::boost::mpl::false_) const
+ {
+ return &_current;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename post_order_iterator<NP,MCI>::pointer
+ post_order_iterator<NP,MCI>::operator->() const
+ {
+ return _indirect(MCI());
+ }
+
+ template <typename NP, typename MCI>
+ inline NP
+ post_order_iterator<NP,MCI>::_current_node(::boost::mpl::true_) const
+ {
+ return dereference_iterator(_current);
+ }
+
+ template <typename NP, typename MCI>
+ inline NP const&
+ post_order_iterator<NP,MCI>::_current_node(::boost::mpl::false_) const
+ {
+ return _current;
+ }
+
+ template <typename NP, typename MCI>
+ inline void
+ post_order_iterator<NP,MCI>::_push_child_itr(
+ child_iterator const& itr
+ , ::boost::mpl::true_
+ )
+ {
+ _stack.push_back(itr);
+ }
+
+ template <typename NP, typename MCI>
+ inline void
+ post_order_iterator<NP,MCI>::_push_child_itr(
+ child_iterator const& itr
+ , boost::mpl::false_
+ )
+ {
+ _stack.push_back(dereference_iterator(itr));
+ }
+
+ template <typename NP, typename MCI>
+ void post_order_iterator<NP,MCI>::_start(NP const& n)
+ {
+ child_iterator itr = n->get_child_begin();
+ child_iterator itr_end = n->get_child_end();
+
+ if (itr != itr_end)
+ {
+ NP node(n);
+ ::std::deque<child_iterator> pre_order_stack;
+
+ for (;;)
+ {
+ while (itr != itr_end)
+ {
+ pre_order_stack.push_back(itr);
+ ++itr;
+ }
+
+ _push_child_itr(pre_order_stack.back(), MCI());
+ node = dereference_iterator(pre_order_stack.back());
+ pre_order_stack.pop_back();
+
+ if (pre_order_stack.empty())
+ {
+ _current = _stack.back();
+ node = _current_node(MCI());
+ itr = node->get_child_begin();
+ itr_end = node->get_child_end();
+
+ if (itr == itr_end)
+ {
+ _stack.pop_back();
+ break;
+ }
+ }
+ else
+ {
+ itr = node->get_child_begin();
+ itr_end = node->get_child_end();
+ }
+ }
+ }
+ }
+
+ template <typename NP, typename MCI>
+ inline void
+ post_order_iterator<NP,MCI>::_initialize(
+ NP const& node
+ , ::boost::mpl::true_
+ )
+ {
+ _start(node);
+
+ if (_stack.empty())
+ {
+ _state = no_traversal;
+ }
+ }
+
+ template <typename NP, typename MCI>
+ inline void
+ post_order_iterator<NP,MCI>::_initialize(
+ NP const& node
+ , ::boost::mpl::false_
+ )
+ {
+ _stack.push_back(_current = node);
+ _start(node);
+ }
+
+ template <typename NP, typename MCI>
+ inline post_order_iterator<NP,MCI>&
+ post_order_iterator<NP,MCI>::operator++()
+ {
+ if (_stack.empty())
+ {
+ _state = no_traversal;
+ }
+ else
+ {
+ _current = _stack.back();
+ _stack.pop_back();
+ }
+
+ return *this;
+ }
+
+ template <typename NP, typename MCI>
+ inline post_order_iterator<NP,MCI>
+ post_order_iterator<NP,MCI>::operator++(int)
+ {
+ post_order_iterator<NP,MCI> itr(*this);
+ ++(*this);
+ return itr;
+ }
+
+ template <typename NP, typename MCI>
+ inline post_order_iterator<NP,MCI>::operator traversal_state() const
+ {
+ return _state;
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__post_order_iterator__operator_equals
+namespace boost { namespace tree_node {
+
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+//<-
+#ifdef BOOST_NO_SFINAE
+ bool
+#else
+//->
+ typename ::boost::enable_if< ::boost::mpl::equal_to<MCI1,MCI2>,bool>::type
+//<-
+#endif
+//->
+ operator==(
+ post_order_iterator<NP1,MCI1> const& lhs
+ , post_order_iterator<NP2,MCI2> const& rhs
+ );
+
+ //<-
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+#ifdef BOOST_NO_SFINAE
+ inline bool
+#else
+ inline typename ::boost::enable_if<
+ ::boost::mpl::equal_to<MCI1,MCI2>
+ , bool
+ >::type
+#endif
+ operator==(
+ post_order_iterator<NP1,MCI1> const& lhs
+ , post_order_iterator<NP2,MCI2> const& rhs
+ )
+ {
+ if (lhs._state == rhs._state)
+ {
+ return lhs._state ? (lhs._current == rhs._current) : !rhs._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__post_order_iterator__operator_not_equal
+namespace boost { namespace tree_node {
+
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+//<-
+#ifdef BOOST_NO_SFINAE
+ bool
+#else
+//->
+ typename ::boost::enable_if< ::boost::mpl::equal_to<MCI1,MCI2>,bool>::type
+//<-
+#endif
+//->
+ operator!=(
+ post_order_iterator<NP1,MCI1> const& lhs
+ , post_order_iterator<NP2,MCI2> const& rhs
+ );
+
+ //<-
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+#ifdef BOOST_NO_SFINAE
+ inline bool
+#else
+ inline typename ::boost::enable_if<
+ ::boost::mpl::equal_to<MCI1,MCI2>
+ , bool
+ >::type
+#endif
+ operator!=(
+ post_order_iterator<NP1,MCI1> const& lhs
+ , post_order_iterator<NP2,MCI2> const& rhs
+ )
+ {
+ return !(lhs == rhs);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_post_order_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer>
+ post_order_iterator<NodePointer,::boost::mpl::false_>
+ make_post_order_iterator(NodePointer const& node);
+
+ //<-
+ template <typename NodePointer>
+ inline post_order_iterator<NodePointer,::boost::mpl::false_>
+ make_post_order_iterator(NodePointer const& node)
+ {
+ return post_order_iterator<NodePointer,::boost::mpl::false_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_post_order_descendant_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer>
+ post_order_iterator<NodePointer,::boost::mpl::true_>
+ make_post_order_descendant_iterator(NodePointer const& node);
+
+ //<-
+ template <typename NodePointer>
+ inline post_order_iterator<NodePointer,::boost::mpl::true_>
+ make_post_order_descendant_iterator(NodePointer const& node)
+ {
+ return post_order_iterator<NodePointer,::boost::mpl::true_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__post_order_iterate
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename UnaryFunction>
+ void post_order_iterate(NodePointer const& node, UnaryFunction function);
+
+ //<-
+ template <typename NodePointer, typename UnaryFunction>
+ void post_order_iterate(NodePointer const& node, UnaryFunction function)
+ {
+ for (
+ post_order_iterator<NodePointer,::boost::mpl::false_> itr(node);
+ itr;
+ ++itr
+ )
+ {
+ function(*itr);
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__post_order_iterate_descendants
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ post_order_iterate_descendants(
+ NodePointer const& node
+ , UnaryFunction function
+ );
+
+ //<-
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ post_order_iterate_descendants(
+ NodePointer const& node
+ , UnaryFunction function
+ )
+ {
+ for (
+ post_order_iterator<NodePointer,::boost::mpl::true_> itr(node);
+ itr;
+ ++itr
+ )
+ {
+ function(*itr);
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_POST_ORDER_ITERATOR_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/pre_order_iterator.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/pre_order_iterator.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,517 @@
+// Copyright (C) 2011 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_PRE_ORDER_ITERATOR_HPP_INCLUDED
+#define BOOST_TREE_NODE_PRE_ORDER_ITERATOR_HPP_INCLUDED
+
+#include <deque>
+#include <boost/config.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/mpl/if.hpp>
+#ifndef BOOST_NO_SFINAE
+#include <boost/mpl/equal_to.hpp>
+#include <boost/utility/enable_if.hpp>
+#endif
+#include <boost/iterator/iterator_traits.hpp>
+#include <boost/tree_node/traversal_state.hpp>
+#include <boost/tree_node/dereference_iterator.hpp>
+#include <boost/detail/metafunction/element_type.hpp>
+
+//[reference__pre_order_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename MimicsChildIterator>
+ class pre_order_iterator
+ {
+ //<-
+ typedef typename ::boost::mpl::eval_if<
+ ::std::tr1::is_pointer<NodePointer>
+ , ::std::tr1::remove_pointer<NodePointer>
+ , ::boost::detail::element_type<NodePointer>
+ >::type
+ element_type;
+ typedef typename ::std::tr1::remove_const<element_type>::type
+ node_type;
+ typedef typename ::boost::mpl::if_<
+ ::std::tr1::is_const<element_type>
+ , typename node_type::const_child_iterator
+ , typename node_type::child_iterator
+ >::type
+ child_iterator;
+ typedef typename ::boost::iterator_value<child_iterator>::type
+ child_value;
+ //->
+
+ public:
+ typedef // implementation_defined
+ //<-
+ typename ::boost::mpl::if_<
+ MimicsChildIterator
+ , child_value
+ , NodePointer
+ >::type
+ //->
+ value_type;
+ typedef value_type const&
+ reference;
+ typedef // implementation_defined
+ //<-
+ typename ::boost::mpl::if_<
+ MimicsChildIterator
+ , child_iterator
+ , value_type const*
+ >::type
+ //->
+ pointer;
+ typedef ::std::ptrdiff_t
+ difference_type;
+ typedef ::std::forward_iterator_tag
+ iterator_category;
+
+ //<-
+ private:
+#ifndef BOOST_NO_SFINAE
+ struct enabler
+ {
+ };
+#endif
+
+ ::std::deque<NodePointer> _node_stack;
+ ::std::deque<child_iterator> _itr_stack;
+ NodePointer _current_node;
+ child_iterator _current_itr;
+ traversal_state _state;
+
+ public:
+ //->
+ pre_order_iterator();
+
+ explicit pre_order_iterator(NodePointer const& node);
+
+ template <typename NP, typename MCI>
+ pre_order_iterator(
+ pre_order_iterator<NP,MCI> const& other
+//<-
+#ifndef BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<NP,NodePointer>
+ , ::boost::mpl::equal_to<MCI,MimicsChildIterator>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type = enabler()
+#endif
+//->
+ );
+
+ reference operator*() const;
+
+ pointer operator->() const;
+
+ pre_order_iterator& operator++();
+
+ pre_order_iterator operator++(int);
+
+ operator traversal_state() const;
+
+ //<-
+ private:
+ reference _deref(::boost::mpl::true_) const;
+
+ reference _deref(::boost::mpl::false_) const;
+
+ pointer _indirect(::boost::mpl::true_) const;
+
+ pointer _indirect(::boost::mpl::false_) const;
+
+ void _initialize(::boost::mpl::true_);
+
+ void _initialize(::boost::mpl::false_);
+
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+#ifdef BOOST_NO_SFINAE
+ friend bool
+#else
+ friend typename ::boost::enable_if<
+ ::boost::mpl::equal_to<MCI1,MCI2>
+ , bool
+ >::type
+#endif
+ operator==(
+ pre_order_iterator<NP1,MCI1> const& lhs
+ , pre_order_iterator<NP2,MCI2> const& rhs
+ );
+ //->
+ };
+
+ //<-
+ template <typename NP, typename MCI>
+ pre_order_iterator<NP,MCI>::pre_order_iterator()
+ : _node_stack()
+ , _itr_stack()
+ , _current_node()
+ , _current_itr()
+ , _state(no_traversal)
+ {
+ }
+
+ template <typename NP, typename MCI>
+ pre_order_iterator<NP,MCI>::pre_order_iterator(NP const& node)
+ : _node_stack()
+ , _itr_stack()
+ , _current_node(node)
+ , _current_itr()
+ , _state(node ? pre_order_traversal : no_traversal)
+ {
+ if (node)
+ {
+ _itr_stack.push_back(node->get_child_begin());
+ _initialize(MCI());
+ }
+ }
+
+ template <typename NP1, typename MCI1>
+ template <typename NP2, typename MCI2>
+ pre_order_iterator<NP1,MCI1>::pre_order_iterator(
+ pre_order_iterator<NP2,MCI2> const& other
+//<-
+#ifndef BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ typename ::boost::mpl::if_<
+ ::std::tr1::is_convertible<NP2,NP1>
+ , ::boost::mpl::equal_to<MCI2,MCI1>
+ , ::boost::mpl::false_
+ >::type
+ , enabler
+ >::type
+#endif
+//->
+ ) : _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)
+ , _current_itr(other._current_itr)
+ , _state(other._state)
+ {
+ }
+
+ template <typename NP, typename MCI>
+ inline void
+ pre_order_iterator<NP,MCI>::_initialize(::boost::mpl::true_)
+ {
+ ++(*this);
+ }
+
+ template <typename NP, typename MCI>
+ inline void
+ pre_order_iterator<NP,MCI>::_initialize(::boost::mpl::false_)
+ {
+ }
+
+ template <typename NP, typename MCI>
+ inline typename pre_order_iterator<NP,MCI>::reference
+ pre_order_iterator<NP,MCI>::_deref(::boost::mpl::true_) const
+ {
+ return *_current_itr;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename pre_order_iterator<NP,MCI>::reference
+ pre_order_iterator<NP,MCI>::_deref(::boost::mpl::false_) const
+ {
+ return _current_node;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename pre_order_iterator<NP,MCI>::reference
+ pre_order_iterator<NP,MCI>::operator*() const
+ {
+ return _deref(MCI());
+ }
+
+ template <typename NP, typename MCI>
+ inline typename pre_order_iterator<NP,MCI>::pointer
+ pre_order_iterator<NP,MCI>::_indirect(::boost::mpl::true_) const
+ {
+ return _current_itr;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename pre_order_iterator<NP,MCI>::pointer
+ pre_order_iterator<NP,MCI>::_indirect(::boost::mpl::false_) const
+ {
+ return &_current_node;
+ }
+
+ template <typename NP, typename MCI>
+ inline typename pre_order_iterator<NP,MCI>::pointer
+ pre_order_iterator<NP,MCI>::operator->() const
+ {
+ return _indirect(MCI());
+ }
+
+ template <typename NP, typename MCI>
+ inline pre_order_iterator<NP,MCI>& pre_order_iterator<NP,MCI>::operator++()
+ {
+ if (_itr_stack.back() == _current_node->get_child_end())
+ {
+ bool is_post_order = true;
+
+ while (is_post_order)
+ {
+ _itr_stack.pop_back();
+
+ if (_node_stack.empty())
+ {
+ _state = no_traversal;
+
+ while (!_itr_stack.empty())
+ {
+ _itr_stack.pop_back();
+ }
+
+ is_post_order = false;
+ }
+ else
+ {
+ _current_node = _node_stack.back();
+ _node_stack.pop_back();
+
+ if (++_current_itr == _current_node->get_child_end())
+ {
+ child_iterator itr = _itr_stack.back();
+
+ _itr_stack.pop_back();
+
+ if (!_itr_stack.empty())
+ {
+ _current_itr = _itr_stack.back();
+ }
+
+ _itr_stack.push_back(itr);
+ }
+ else
+ {
+ _itr_stack.pop_back();
+ _node_stack.push_back(_current_node);
+ _itr_stack.push_back(_current_itr);
+ _current_node = dereference_iterator(_current_itr);
+ _itr_stack.push_back(
+ _current_node->get_child_begin()
+ );
+ is_post_order = false;
+ }
+ }
+ }
+ }
+ else
+ {
+ _node_stack.push_back(_current_node);
+ _current_node = dereference_iterator(
+ _current_itr = _itr_stack.back()
+ );
+ _itr_stack.push_back(_current_node->get_child_begin());
+ }
+
+ return *this;
+ }
+
+ template <typename NP, typename MCI>
+ inline pre_order_iterator<NP,MCI>
+ pre_order_iterator<NP,MCI>::operator++(int)
+ {
+ pre_order_iterator<NP,MCI> itr(*this);
+ ++(*this);
+ return itr;
+ }
+
+ template <typename NP, typename MCI>
+ inline pre_order_iterator<NP,MCI>::operator traversal_state() const
+ {
+ return _state;
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__pre_order_iterator__operator_equals
+namespace boost { namespace tree_node {
+
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+//<-
+#ifdef BOOST_NO_SFINAE
+ bool
+#else
+//->
+ typename ::boost::enable_if< ::boost::mpl::equal_to<MCI1,MCI2>,bool>::type
+//<-
+#endif
+//->
+ operator==(
+ pre_order_iterator<NP1,MCI1> const& lhs
+ , pre_order_iterator<NP2,MCI2> const& rhs
+ );
+
+ //<-
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+#ifdef BOOST_NO_SFINAE
+ inline bool
+#else
+ inline typename ::boost::enable_if<
+ ::boost::mpl::equal_to<MCI1,MCI2>
+ , bool
+ >::type
+#endif
+ operator==(
+ pre_order_iterator<NP1,MCI1> const& lhs
+ , pre_order_iterator<NP2,MCI2> const& rhs
+ )
+ {
+ if (lhs._state == rhs._state)
+ {
+ return lhs._state ? (*lhs == *rhs) : !rhs._state;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__pre_order_iterator__operator_not_equal
+namespace boost { namespace tree_node {
+
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+//<-
+#ifdef BOOST_NO_SFINAE
+ bool
+#else
+//->
+ typename ::boost::enable_if< ::boost::mpl::equal_to<MCI1,MCI2>,bool>::type
+//<-
+#endif
+//->
+ operator!=(
+ pre_order_iterator<NP1,MCI1> const& lhs
+ , pre_order_iterator<NP2,MCI2> const& rhs
+ );
+
+ //<-
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+#ifdef BOOST_NO_SFINAE
+ inline bool
+#else
+ inline typename ::boost::enable_if<
+ ::boost::mpl::equal_to<MCI1,MCI2>
+ , bool
+ >::type
+#endif
+ operator!=(
+ pre_order_iterator<NP1,MCI1> const& lhs
+ , pre_order_iterator<NP2,MCI2> const& rhs
+ )
+ {
+ return !(lhs == rhs);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_pre_order_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer>
+ pre_order_iterator<NodePointer,::boost::mpl::false_>
+ make_pre_order_iterator(NodePointer const& node);
+
+ //<-
+ template <typename NodePointer>
+ inline pre_order_iterator<NodePointer,::boost::mpl::false_>
+ make_pre_order_iterator(NodePointer const& node)
+ {
+ return pre_order_iterator<NodePointer,::boost::mpl::false_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__make_pre_order_descendant_iterator
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer>
+ pre_order_iterator<NodePointer,::boost::mpl::true_>
+ make_pre_order_descendant_iterator(NodePointer const& node);
+
+ //<-
+ template <typename NodePointer>
+ inline pre_order_iterator<NodePointer,::boost::mpl::true_>
+ make_pre_order_descendant_iterator(NodePointer const& node)
+ {
+ return pre_order_iterator<NodePointer,::boost::mpl::true_>(node);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__pre_order_iterate
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename UnaryFunction>
+ void pre_order_iterate(NodePointer const& node, UnaryFunction function);
+
+ //<-
+ template <typename NodePointer, typename UnaryFunction>
+ void pre_order_iterate(NodePointer const& node, UnaryFunction function)
+ {
+ for (
+ pre_order_iterator<NodePointer,::boost::mpl::false_> itr(node);
+ itr;
+ ++itr
+ )
+ {
+ function(*itr);
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__pre_order_iterate_descendants
+namespace boost { namespace tree_node {
+
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ pre_order_iterate_descendants(
+ NodePointer const& node
+ , UnaryFunction function
+ );
+
+ //<-
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ pre_order_iterate_descendants(
+ NodePointer const& node
+ , UnaryFunction function
+ )
+ {
+ for (
+ pre_order_iterator<NodePointer,::boost::mpl::true_> itr(node);
+ itr;
+ ++itr
+ )
+ {
+ function(*itr);
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_PRE_ORDER_ITERATOR_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/raw_associative_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/raw_associative_node.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,598 @@
+// Copyright (C) 2011 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_RAW_ASSOCIATIVE_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_RAW_ASSOCIATIVE_NODE_HPP_INCLUDED
+
+#include <utility>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/tr1/tuple.hpp>
+#include <boost/iterator/transform_iterator.hpp>
+#include <boost/utility/associative_container_gen.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/depth_first_iterator.hpp>
+#include <boost/tree_node/factory.hpp>
+#include <boost/detail/function/add_const_to_2nd_pointee.hpp>
+
+//[reference__raw_associative_node_base
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename AssociativeContainerSelector
+ >
+ class raw_associative_node_base : public tree_node_base<Derived>
+ {
+ public:
+ struct traits
+ {
+ typedef Key key_type;
+ typedef Data data_type;
+ };
+
+ typedef typename tree_node_base<Derived>::pointer
+ pointer;
+ typedef typename tree_node_base<Derived>::const_pointer
+ const_pointer;
+
+ //<-
+ private:
+ typedef typename ::boost::mpl::apply_wrap2<
+ associative_container_gen<
+ AssociativeContainerSelector
+ >
+ , typename traits::key_type
+ , pointer
+ >::type
+ children;
+
+ public:
+ //->
+ typedef // implementation_defined
+ //<-
+ typename children::iterator
+ //->
+ child_iterator;
+ typedef // implementation_defined
+ //<-
+#if 0
+ ::boost::transform_iterator<
+ ::boost::detail::add_const_to_2nd_pointee<
+ Key
+ , Derived
+ >
+ , typename children::const_iterator
+ >
+#else
+ typename children::const_iterator
+#endif
+ //->
+ const_child_iterator;
+
+ //<-
+ private:
+ children _children;
+ pointer _parent;
+ typename traits::data_type _data;
+
+ public:
+ //->
+ raw_associative_node_base();
+
+ explicit raw_associative_node_base(
+ typename traits::data_type const& data
+ );
+
+ raw_associative_node_base(raw_associative_node_base const& copy);
+
+ raw_associative_node_base&
+ operator=(raw_associative_node_base const& copy);
+
+ virtual ~raw_associative_node_base();
+
+ pointer clone() const;
+
+ typename traits::data_type const& get_data() const;
+
+ typename traits::data_type& get_data();
+
+ const_pointer get_parent() const;
+
+ pointer get_parent();
+
+ pointer
+ add_child(
+ typename traits::key_type const& key
+ , typename traits::data_type const& data
+ );
+
+ pointer add_child(typename traits::key_type const& key);
+
+ pointer
+ add_child_copy(
+ typename traits::key_type const& key
+ , const_pointer const& copy
+ );
+
+ const_child_iterator get_child_begin() const;
+
+ child_iterator get_child_begin();
+
+ const_child_iterator get_child_end() const;
+
+ child_iterator get_child_end();
+
+ const_child_iterator
+ find_child(typename traits::key_type const& key) const;
+
+ child_iterator find_child(typename traits::key_type const& key);
+
+ ::std::pair<const_child_iterator,const_child_iterator>
+ find_children(typename traits::key_type const& key) const;
+
+ ::std::pair<child_iterator,child_iterator>
+ find_children(typename traits::key_type const& key);
+
+ ::std::size_t remove_children(typename traits::key_type const& key);
+
+ void remove_all_children();
+
+ //<-
+ private:
+ void _remove_all_children();
+
+ void
+ _add_child(
+ typename traits::key_type const& key
+ , pointer const& child
+ );
+ //->
+ };
+
+ //<-
+ template <typename Derived, typename K, typename D, typename A>
+ raw_associative_node_base<Derived,K,D,A>::raw_associative_node_base()
+ : _children(), _parent(), _data()
+ {
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ raw_associative_node_base<Derived,K,D,A>::raw_associative_node_base(
+ typename traits::data_type const& data
+ ) : _children(), _parent(), _data(data)
+ {
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ raw_associative_node_base<Derived,K,D,A>::raw_associative_node_base(
+ raw_associative_node_base const& copy
+ ) : _children(), _parent(), _data(copy._data)
+ {
+ pointer p = this->get_derived();
+
+ for (
+ depth_first_iterator<const_pointer,::boost::mpl::true_> copy_itr(
+ copy.get_derived()
+ );
+ copy_itr;
+ ++copy_itr
+ )
+ {
+ switch (traversal_state(copy_itr))
+ {
+ case pre_order_traversal:
+ {
+ pointer child(
+ ::boost::tree_node::factory<Derived>::create(
+ copy_itr->second->get_data()
+ )
+ );
+
+ p->_add_child(copy_itr->first, child);
+ p = child;
+ break;
+ }
+
+ case post_order_traversal:
+ {
+ p = p->_parent;
+ break;
+ }
+ }
+ }
+
+ this->deep_update_derived();
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ raw_associative_node_base<Derived,K,D,A>&
+ raw_associative_node_base<Derived,K,D,A>::operator=(
+ raw_associative_node_base const& copy
+ )
+ {
+ if (this != &copy)
+ {
+ raw_associative_node_base temp_copy(copy);
+
+ _remove_all_children();
+ _children = temp_copy._children;
+ _data = temp_copy._data;
+ temp_copy._children.clear();
+
+ child_iterator itr_end = get_child_end();
+
+ for (child_iterator itr = get_child_begin(); itr != itr_end; ++itr)
+ {
+ itr->second->_parent = this->get_derived();
+ }
+
+ this->shallow_update_derived();
+ }
+
+ return *this;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ raw_associative_node_base<Derived,K,D,A>::~raw_associative_node_base()
+ {
+ _remove_all_children();
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ typename raw_associative_node_base<Derived,K,D,A>::pointer
+ raw_associative_node_base<Derived,K,D,A>::clone() const
+ {
+ pointer result = ::boost::tree_node::factory<Derived>::create(_data);
+ pointer p = result;
+
+ for (
+ depth_first_iterator<const_pointer,::boost::mpl::true_> copy_itr(
+ this->get_derived()
+ );
+ copy_itr;
+ ++copy_itr
+ )
+ {
+ switch (traversal_state(copy_itr))
+ {
+ case pre_order_traversal:
+ {
+ pointer child(
+ ::boost::tree_node::factory<Derived>::create(
+ copy_itr->second->get_data()
+ )
+ );
+
+ p->_add_child(copy_itr->first, child);
+ p = child;
+ break;
+ }
+
+ case post_order_traversal:
+ {
+ p = p->_parent;
+ break;
+ }
+ }
+ }
+
+ result->deep_update_derived();
+ return result;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename raw_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::traits::data_type const&
+ raw_associative_node_base<Derived,K,D,A>::get_data() const
+ {
+ return _data;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename raw_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::traits::data_type&
+ raw_associative_node_base<Derived,K,D,A>::get_data()
+ {
+ return _data;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename raw_associative_node_base<Derived,K,D,A>::const_pointer
+ raw_associative_node_base<Derived,K,D,A>::get_parent() const
+ {
+ return _parent;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename raw_associative_node_base<Derived,K,D,A>::pointer
+ raw_associative_node_base<Derived,K,D,A>::get_parent()
+ {
+ return _parent;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ typename raw_associative_node_base<Derived,K,D,A>::pointer
+ raw_associative_node_base<Derived,K,D,A>::add_child(
+ typename traits::key_type const& key
+ , typename traits::data_type const& data
+ )
+ {
+ pointer child(::boost::tree_node::factory<Derived>::create(data));
+
+ _add_child(key, child);
+ this->shallow_update_derived();
+ return child;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ typename raw_associative_node_base<Derived,K,D,A>::pointer
+ raw_associative_node_base<Derived,K,D,A>::add_child(
+ typename traits::key_type const& key
+ )
+ {
+ pointer child(::boost::tree_node::factory<Derived>::create());
+
+ _add_child(key, child);
+ this->shallow_update_derived();
+ return child;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ typename raw_associative_node_base<Derived,K,D,A>::pointer
+ raw_associative_node_base<Derived,K,D,A>::add_child_copy(
+ typename traits::key_type const& key
+ , const_pointer const& copy
+ )
+ {
+ pointer child(copy->clone());
+
+ _add_child(key, child);
+ this->shallow_update_derived();
+ return child;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename raw_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::const_child_iterator
+ raw_associative_node_base<Derived,K,D,A>::get_child_begin() const
+ {
+ return const_child_iterator(_children.begin());
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename raw_associative_node_base<Derived,K,D,A>::child_iterator
+ raw_associative_node_base<Derived,K,D,A>::get_child_begin()
+ {
+ return _children.begin();
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename raw_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::const_child_iterator
+ raw_associative_node_base<Derived,K,D,A>::get_child_end() const
+ {
+ return const_child_iterator(_children.end());
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename raw_associative_node_base<Derived,K,D,A>::child_iterator
+ raw_associative_node_base<Derived,K,D,A>::get_child_end()
+ {
+ return _children.end();
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename raw_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::const_child_iterator
+ raw_associative_node_base<Derived,K,D,A>::find_child(
+ typename traits::key_type const& key
+ ) const
+ {
+ return const_child_iterator(_children.find(key));
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename raw_associative_node_base<Derived,K,D,A>::child_iterator
+ raw_associative_node_base<Derived,K,D,A>::find_child(
+ typename traits::key_type const& key
+ )
+ {
+ return _children.find(key);
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline ::std::pair<
+ typename raw_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::const_child_iterator
+ , typename raw_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::const_child_iterator
+ >
+ raw_associative_node_base<Derived,K,D,A>::find_children(
+ typename traits::key_type const& key
+ ) const
+ {
+ ::std::pair<
+ typename children::const_iterator
+ , typename children::const_iterator
+ > p(_children.equal_range(key));
+
+ return ::std::pair<const_child_iterator,const_child_iterator>(
+ const_child_iterator(p.first)
+ , const_child_iterator(p.second)
+ );
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline ::std::pair<
+ typename raw_associative_node_base<Derived,K,D,A>::child_iterator
+ , typename raw_associative_node_base<Derived,K,D,A>::child_iterator
+ >
+ raw_associative_node_base<Derived,K,D,A>::find_children(
+ typename traits::key_type const& key
+ )
+ {
+ return _children.equal_range(key);
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ ::std::size_t
+ raw_associative_node_base<Derived,K,D,A>::remove_children(
+ typename traits::key_type const& key
+ )
+ {
+ child_iterator itr, itr_end;
+
+ for (
+ ::std::tr1::tie(itr, itr_end) = _children.equal_range(key);
+ itr != itr_end;
+ ++itr
+ )
+ {
+ delete itr->second;
+ }
+
+ this->shallow_update_derived();
+ return _children.erase(key);
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline void raw_associative_node_base<Derived,K,D,A>::remove_all_children()
+ {
+ _remove_all_children();
+ this->shallow_update_derived();
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ void raw_associative_node_base<Derived,K,D,A>::_remove_all_children()
+ {
+ child_iterator itr_end = get_child_end();
+
+ for (child_iterator itr = get_child_begin(); itr != itr_end; ++itr)
+ {
+ delete itr->second;
+ }
+
+ _children.clear();
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ void
+ raw_associative_node_base<Derived,K,D,A>::_add_child(
+ typename traits::key_type const& key
+ , pointer const& child
+ )
+ {
+ child->_parent = this->get_derived();
+ _children.insert(typename children::value_type(key, child));
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__raw_associative_node
+namespace boost { namespace tree_node {
+
+ template <
+ typename Key
+ , typename Data
+ , typename AssociativeContainerSelector = ::boost::mapS
+ >
+ class raw_associative_node
+ : public raw_associative_node_base<
+ raw_associative_node<Key,Data,AssociativeContainerSelector>
+ , Key
+ , Data
+ , AssociativeContainerSelector
+ >
+ {
+ typedef raw_associative_node_base<
+ raw_associative_node
+ , Key
+ , Data
+ , AssociativeContainerSelector
+ >
+ super_t;
+
+ public:
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::child_iterator
+ child_iterator;
+ typedef typename super_t::const_child_iterator
+ const_child_iterator;
+
+ raw_associative_node();
+
+ explicit raw_associative_node(typename traits::data_type const& data);
+ };
+
+ //<-
+ template <typename K, typename D, typename A>
+ raw_associative_node<K,D,A>::raw_associative_node() : super_t()
+ {
+ }
+
+ template <typename K, typename D, typename A>
+ raw_associative_node<K,D,A>::raw_associative_node(
+ typename traits::data_type const& data
+ ) : super_t(data)
+ {
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__raw_associative_node_gen
+namespace boost { namespace tree_node {
+
+ template <typename Selector = ::boost::mapS>
+ struct raw_associative_node_gen
+ {
+ template <typename Derived, typename Key, typename Data>
+ struct apply
+ {
+ typedef raw_associative_node_base<Derived,Key,Data,Selector> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_RAW_ASSOCIATIVE_NODE_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/raw_binary_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/raw_binary_node.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,684 @@
+// Copyright (C) 2011 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_RAW_BINARY_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_RAW_BINARY_NODE_HPP_INCLUDED
+
+#include <iterator>
+#include <utility>
+#include <boost/config.hpp>
+#include <boost/mpl/bool.hpp>
+#ifndef BOOST_NO_SFINAE
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/if.hpp>
+#include <boost/utility/enable_if.hpp>
+#endif
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/depth_first_iterator.hpp>
+#include <boost/tree_node/factory.hpp>
+
+//[reference__raw_binary_node_base
+namespace boost { namespace tree_node {
+ //<-
+ namespace _detail {
+
+ template <typename NodePointer>
+ class raw_binary_child_iterator
+ {
+#ifndef BOOST_NO_SFINAE
+ struct enabler
+ {
+ };
+#endif
+
+ NodePointer _child;
+
+ public:
+ typedef NodePointer value_type;
+ typedef value_type const& reference;
+ typedef value_type const* pointer;
+ typedef ::std::ptrdiff_t difference_type;
+ typedef ::std::forward_iterator_tag iterator_category;
+
+ explicit raw_binary_child_iterator(NodePointer const& p);
+
+ raw_binary_child_iterator();
+
+ template <typename NP>
+ raw_binary_child_iterator(
+ raw_binary_child_iterator<NP> const& other
+#ifndef BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ ::std::tr1::is_convertible<NP,NodePointer>
+ , enabler
+ >::type = enabler()
+#endif
+ );
+
+ reference operator*() const;
+
+ pointer operator->() const;
+
+ raw_binary_child_iterator& operator++();
+
+ raw_binary_child_iterator operator++(int);
+
+ template <typename NP1, typename NP2>
+ friend bool
+ operator==(
+ raw_binary_child_iterator<NP1> const& lhs
+ , raw_binary_child_iterator<NP2> const& rhs
+ );
+ };
+
+ template <typename NodePointer>
+ raw_binary_child_iterator<NodePointer>::raw_binary_child_iterator(
+ NodePointer const& p
+ ) : _child(
+ p->get_left_child() ? p->get_left_child() : p->get_right_child()
+ )
+ {
+ }
+
+ template <typename NodePointer>
+ raw_binary_child_iterator<NodePointer>::raw_binary_child_iterator()
+ : _child(0)
+ {
+ }
+
+ template <typename NodePointer>
+ template <typename NP>
+ raw_binary_child_iterator<NodePointer>::raw_binary_child_iterator(
+ raw_binary_child_iterator<NP> const& other
+#ifndef BOOST_NO_SFINAE
+ , typename ::boost::enable_if<
+ ::std::tr1::is_convertible<NP,NodePointer>
+ , enabler
+ >::type
+#endif
+ ) : _child(*other)
+ {
+ }
+
+ template <typename NodePointer>
+ inline typename raw_binary_child_iterator<NodePointer>::reference
+ raw_binary_child_iterator<NodePointer>::operator*() const
+ {
+ return _child;
+ }
+
+ template <typename NodePointer>
+ inline typename raw_binary_child_iterator<NodePointer>::pointer
+ raw_binary_child_iterator<NodePointer>::operator->() const
+ {
+ return &_child;
+ }
+
+ template <typename NodePointer>
+ inline raw_binary_child_iterator<NodePointer>&
+ raw_binary_child_iterator<NodePointer>::operator++()
+ {
+ NodePointer sibling = _child->get_parent()->get_right_child();
+ _child = (_child == sibling) ? 0 : sibling;
+ return *this;
+ }
+
+ template <typename NodePointer>
+ raw_binary_child_iterator<NodePointer>
+ raw_binary_child_iterator<NodePointer>::operator++(int)
+ {
+ raw_binary_child_iterator<NodePointer> itr(*this);
+ ++(*this);
+ return itr;
+ }
+
+ template <typename NP1, typename NP2>
+ inline bool
+ operator==(
+ raw_binary_child_iterator<NP1> const& lhs
+ , raw_binary_child_iterator<NP2> const& rhs
+ )
+ {
+ return lhs._child == rhs._child;
+ }
+
+ template <typename NP1, typename NP2>
+ inline bool
+ operator!=(
+ raw_binary_child_iterator<NP1> const& lhs
+ , raw_binary_child_iterator<NP2> const& rhs
+ )
+ {
+ return !(lhs == rhs);
+ }
+ } // namespace _detail
+ //->
+
+ template <typename Derived, typename T>
+ class raw_binary_node_base : public tree_node_base<Derived>
+ {
+ public:
+ struct traits
+ {
+ typedef T data_type;
+ };
+
+ typedef typename tree_node_base<Derived>::pointer
+ pointer;
+ typedef typename tree_node_base<Derived>::const_pointer
+ const_pointer;
+ typedef // implementation_defined
+ //<-
+ _detail::raw_binary_child_iterator<pointer>
+ //->
+ child_iterator;
+ typedef // implementation_defined
+ //<-
+ _detail::raw_binary_child_iterator<const_pointer>
+ //->
+ const_child_iterator;
+
+ //<-
+ private:
+ pointer _left_child;
+ pointer _right_child;
+ pointer _parent;
+ typename traits::data_type _data;
+
+ public:
+ //->
+ raw_binary_node_base();
+
+ explicit raw_binary_node_base(typename traits::data_type const& data);
+
+ raw_binary_node_base(raw_binary_node_base const& copy);
+
+ raw_binary_node_base& operator=(raw_binary_node_base const& copy);
+
+ virtual ~raw_binary_node_base();
+
+ pointer clone() const;
+
+ typename traits::data_type const& get_data() const;
+
+ typename traits::data_type& get_data();
+
+ const_pointer get_parent() const;
+
+ pointer get_parent();
+
+ pointer add_left_child(typename traits::data_type const& data);
+
+ pointer add_left_child();
+
+ pointer add_left_child_copy(const_pointer const& copy);
+
+ pointer add_right_child(typename traits::data_type const& data);
+
+ pointer add_right_child();
+
+ pointer add_right_child_copy(const_pointer const& copy);
+
+ const_pointer get_left_child() const;
+
+ pointer get_left_child();
+
+ const_pointer get_right_child() const;
+
+ pointer get_right_child();
+
+ const_child_iterator get_child_begin() const;
+
+ child_iterator get_child_begin();
+
+ const_child_iterator get_child_end() const;
+
+ child_iterator get_child_end();
+
+ pointer rotate_left();
+
+ pointer rotate_right();
+
+ void remove_left_child();
+
+ void remove_right_child();
+
+ void remove_all_children();
+ };
+
+ //<-
+ template <typename Derived, typename T>
+ raw_binary_node_base<Derived,T>::raw_binary_node_base()
+ : _left_child(), _right_child(), _parent(), _data()
+ {
+ }
+
+ template <typename Derived, typename T>
+ raw_binary_node_base<Derived,T>::raw_binary_node_base(
+ typename traits::data_type const& data
+ ) : _left_child(), _right_child(), _parent(), _data(data)
+ {
+ }
+
+ template <typename Derived, typename T>
+ raw_binary_node_base<Derived,T>::raw_binary_node_base(
+ raw_binary_node_base const& copy
+ ) : _left_child(), _right_child(), _parent(), _data(copy._data)
+ {
+ pointer p = this->get_derived();
+
+ for (
+ depth_first_iterator<const_pointer,::boost::mpl::true_> copy_itr(
+ copy.get_derived()
+ );
+ copy_itr;
+ ++copy_itr
+ )
+ {
+ switch (traversal_state(copy_itr))
+ {
+ case pre_order_traversal:
+ {
+ const_pointer c_p = *copy_itr;
+
+ if (c_p->_parent->_left_child == c_p)
+ {
+ p->_left_child = ::boost::tree_node::factory<
+ Derived
+ >::create(c_p->get_data());
+ p->_left_child->_parent = p;
+ p = p->_left_child;
+ }
+ else // if (c_p->_parent->_right_child == c_p)
+ {
+ p->_right_child = ::boost::tree_node::factory<
+ Derived
+ >::create(c_p->get_data());
+ p->_right_child->_parent = p;
+ p = p->_right_child;
+ }
+
+ break;
+ }
+
+ case post_order_traversal:
+ {
+ p = p->_parent;
+ break;
+ }
+ }
+ }
+
+ this->deep_update_derived();
+ }
+
+ template <typename Derived, typename T>
+ raw_binary_node_base<Derived,T>&
+ raw_binary_node_base<Derived,T>::operator=(
+ raw_binary_node_base const& copy
+ )
+ {
+ if (this != &copy)
+ {
+ raw_binary_node_base temp_copy(copy);
+
+ delete _left_child;
+ delete _right_child;
+ _left_child = temp_copy._left_child;
+ _right_child = temp_copy._right_child;
+ _data = temp_copy._data;
+ temp_copy._left_child = temp_copy._right_child = 0;
+ _left_child->_parent = _right_child->_parent = this->get_derived();
+ this->shallow_update_derived();
+ }
+
+ return *this;
+ }
+
+ template <typename Derived, typename T>
+ raw_binary_node_base<Derived,T>::~raw_binary_node_base()
+ {
+ delete _left_child;
+ delete _right_child;
+ }
+
+ template <typename Derived, typename T>
+ typename raw_binary_node_base<Derived,T>::pointer
+ raw_binary_node_base<Derived,T>::clone() const
+ {
+ pointer result = ::boost::tree_node::factory<Derived>::create(_data);
+ pointer p = result;
+
+ for (
+ depth_first_iterator<const_pointer,::boost::mpl::true_> copy_itr(
+ this->get_derived()
+ );
+ copy_itr;
+ ++copy_itr
+ )
+ {
+ switch (traversal_state(copy_itr))
+ {
+ case pre_order_traversal:
+ {
+ const_pointer c_p = *copy_itr;
+
+ if (c_p->_parent->_left_child == c_p)
+ {
+ p->_left_child = ::boost::tree_node::factory<
+ Derived
+ >::create(c_p->get_data());
+ p->_left_child->_parent = p;
+ p = p->_left_child;
+ }
+ else // if (c_p->_parent->_right_child == c_p)
+ {
+ p->_right_child = ::boost::tree_node::factory<
+ Derived
+ >::create(c_p->get_data());
+ p->_right_child->_parent = p;
+ p = p->_right_child;
+ }
+
+ break;
+ }
+
+ case post_order_traversal:
+ {
+ p = p->_parent;
+ break;
+ }
+ }
+ }
+
+ result->deep_update_derived();
+ return result;
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::traits::data_type const&
+ raw_binary_node_base<Derived,T>::get_data() const
+ {
+ return _data;
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::traits::data_type&
+ raw_binary_node_base<Derived,T>::get_data()
+ {
+ return _data;
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::const_pointer
+ raw_binary_node_base<Derived,T>::get_parent() const
+ {
+ return _parent;
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::pointer
+ raw_binary_node_base<Derived,T>::get_parent()
+ {
+ return _parent;
+ }
+
+ template <typename Derived, typename T>
+ typename raw_binary_node_base<Derived,T>::pointer
+ raw_binary_node_base<Derived,T>::add_left_child(
+ typename traits::data_type const& data
+ )
+ {
+ _left_child = ::boost::tree_node::factory<Derived>::create(data);
+ _left_child->_parent = this->get_derived();
+ this->shallow_update_derived();
+ return _left_child;
+ }
+
+ template <typename Derived, typename T>
+ typename raw_binary_node_base<Derived,T>::pointer
+ raw_binary_node_base<Derived,T>::add_left_child()
+ {
+ _left_child = ::boost::tree_node::factory<Derived>::create();
+ _left_child->_parent = this->get_derived();
+ this->shallow_update_derived();
+ return _left_child;
+ }
+
+ template <typename Derived, typename T>
+ typename raw_binary_node_base<Derived,T>::pointer
+ raw_binary_node_base<Derived,T>::add_left_child_copy(
+ const_pointer const& copy
+ )
+ {
+ _left_child = copy->clone();
+ _left_child->_parent = this->get_derived();
+ this->shallow_update_derived();
+ return _left_child;
+ }
+
+ template <typename Derived, typename T>
+ typename raw_binary_node_base<Derived,T>::pointer
+ raw_binary_node_base<Derived,T>::add_right_child(
+ typename traits::data_type const& data
+ )
+ {
+ _right_child = ::boost::tree_node::factory<Derived>::create(data);
+ _right_child->_parent = this->get_derived();
+ this->shallow_update_derived();
+ return _right_child;
+ }
+
+ template <typename Derived, typename T>
+ typename raw_binary_node_base<Derived,T>::pointer
+ raw_binary_node_base<Derived,T>::add_right_child()
+ {
+ _right_child = ::boost::tree_node::factory<Derived>::create();
+ _right_child->_parent = this->get_derived();
+ this->shallow_update_derived();
+ return _right_child;
+ }
+
+ template <typename Derived, typename T>
+ typename raw_binary_node_base<Derived,T>::pointer
+ raw_binary_node_base<Derived,T>::add_right_child_copy(
+ const_pointer const& copy
+ )
+ {
+ _right_child = copy->clone();
+ _right_child->_parent = this->get_derived();
+ this->shallow_update_derived();
+ return _right_child;
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::const_pointer
+ raw_binary_node_base<Derived,T>::get_left_child() const
+ {
+ return _left_child;
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::pointer
+ raw_binary_node_base<Derived,T>::get_left_child()
+ {
+ return _left_child;
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::const_pointer
+ raw_binary_node_base<Derived,T>::get_right_child() const
+ {
+ return _right_child;
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::pointer
+ raw_binary_node_base<Derived,T>::get_right_child()
+ {
+ return _right_child;
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::const_child_iterator
+ raw_binary_node_base<Derived,T>::get_child_begin() const
+ {
+ return const_child_iterator(this->get_derived());
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::child_iterator
+ raw_binary_node_base<Derived,T>::get_child_begin()
+ {
+ return child_iterator(this->get_derived());
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::const_child_iterator
+ raw_binary_node_base<Derived,T>::get_child_end() const
+ {
+ return const_child_iterator();
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::child_iterator
+ raw_binary_node_base<Derived,T>::get_child_end()
+ {
+ return child_iterator();
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::pointer
+ raw_binary_node_base<Derived,T>::rotate_left()
+ {
+ pointer pivot = _right_child;
+
+ pivot->_parent = _parent;
+ _right_child = pivot->_left_child;
+ _right_child->_parent = pivot->_left_child = this->get_derived();
+
+ if (_parent)
+ {
+ if (_parent->_left_child == this->get_derived())
+ {
+ _parent->_left_child = pivot;
+ }
+ else // if (_parent->_right_child == this->get_derived())
+ {
+ _parent->_right_child = pivot;
+ }
+ }
+
+ _parent = pivot;
+ this->shallow_update_derived();
+ return pivot;
+ }
+
+ template <typename Derived, typename T>
+ inline typename raw_binary_node_base<Derived,T>::pointer
+ raw_binary_node_base<Derived,T>::rotate_right()
+ {
+ pointer pivot = _left_child;
+
+ pivot->_parent = _parent;
+ _left_child = pivot->_right_child;
+ _left_child->_parent = pivot->_right_child = this->get_derived();
+
+ if (_parent)
+ {
+ if (_parent->_right_child == this->get_derived())
+ {
+ _parent->_right_child = pivot;
+ }
+ else // if (_parent->_left_child == this->get_derived())
+ {
+ _parent->_left_child = pivot;
+ }
+ }
+
+ _parent = pivot;
+ this->shallow_update_derived();
+ return pivot;
+ }
+
+ template <typename Derived, typename T>
+ void raw_binary_node_base<Derived,T>::remove_left_child()
+ {
+ delete _left_child;
+ _left_child = 0;
+ this->shallow_update_derived();
+ }
+
+ template <typename Derived, typename T>
+ void raw_binary_node_base<Derived,T>::remove_right_child()
+ {
+ delete _right_child;
+ _right_child = 0;
+ this->shallow_update_derived();
+ }
+
+ template <typename Derived, typename T>
+ void raw_binary_node_base<Derived,T>::remove_all_children()
+ {
+ delete _left_child;
+ delete _right_child;
+ _left_child = _right_child = 0;
+ this->shallow_update_derived();
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__raw_binary_node
+namespace boost { namespace tree_node {
+
+ template <typename T>
+ class raw_binary_node : public raw_binary_node_base<raw_binary_node<T>,T>
+ {
+ typedef raw_binary_node_base<raw_binary_node<T>,T> super_t;
+
+ public:
+ typedef typename super_t::traits traits;
+ typedef typename super_t::pointer pointer;
+ typedef typename super_t::const_pointer const_pointer;
+ typedef typename super_t::child_iterator child_iterator;
+ typedef typename super_t::const_child_iterator const_child_iterator;
+
+ raw_binary_node();
+
+ explicit raw_binary_node(typename traits::data_type const& data);
+ };
+
+ //<-
+ template <typename T>
+ raw_binary_node<T>::raw_binary_node() : super_t()
+ {
+ }
+
+ template <typename T>
+ raw_binary_node<T>::raw_binary_node(typename traits::data_type const& data)
+ : super_t(data)
+ {
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__raw_binary_node_gen
+namespace boost { namespace tree_node {
+
+ struct raw_binary_node_gen
+ {
+ template <typename Derived, typename T>
+ struct apply
+ {
+ typedef raw_binary_node_base<Derived,T> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_RAW_BINARY_NODE_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/raw_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/raw_node.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,414 @@
+// Copyright (C) 2011 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_RAW_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_RAW_NODE_HPP_INCLUDED
+
+#include <utility>
+#include <boost/mpl/bool.hpp>
+#include <boost/iterator/transform_iterator.hpp>
+#include <boost/utility/container_gen.hpp>
+#include <boost/tree_node/base.hpp>
+#include <boost/tree_node/depth_first_iterator.hpp>
+#include <boost/tree_node/factory.hpp>
+#include <boost/detail/function/add_const_to_pointee.hpp>
+
+//[reference__raw_node_base
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Selector>
+ class raw_node_base : public tree_node_base<Derived>
+ {
+ public:
+ struct traits
+ {
+ typedef T data_type;
+ };
+
+ typedef typename tree_node_base<Derived>::pointer
+ pointer;
+ typedef typename tree_node_base<Derived>::const_pointer
+ const_pointer;
+
+ //<-
+ private:
+ typedef typename ::boost::container_gen<Selector,pointer>::type
+ children;
+
+ public:
+ //->
+ typedef // implementation_defined
+ //<-
+ typename children::iterator
+ //->
+ child_iterator;
+ typedef // implementation_defined
+ //<-
+#if 0
+// TODO:
+// Fix crash that occurs on depth-first iteration
+// when this code is used.
+ ::boost::transform_iterator<
+ ::boost::detail::add_const_to_pointee<Derived>
+ , typename children::const_iterator
+ >
+#else
+ typename children::const_iterator
+#endif
+ //->
+ const_child_iterator;
+
+ //<-
+ private:
+ children _children;
+ pointer _parent;
+ typename traits::data_type _data;
+
+ public:
+ //->
+ raw_node_base();
+
+ explicit raw_node_base(typename traits::data_type const& data);
+
+ raw_node_base(raw_node_base const& copy);
+
+ raw_node_base& operator=(raw_node_base const& copy);
+
+ virtual ~raw_node_base();
+
+ pointer clone() const;
+
+ typename traits::data_type const& get_data() const;
+
+ typename traits::data_type& get_data();
+
+ const_pointer get_parent() const;
+
+ pointer get_parent();
+
+ pointer add_child(typename traits::data_type const& data);
+
+ pointer add_child();
+
+ pointer add_child_copy(const_pointer const& copy);
+
+ const_child_iterator get_child_begin() const;
+
+ child_iterator get_child_begin();
+
+ const_child_iterator get_child_end() const;
+
+ child_iterator get_child_end();
+
+ void remove_all_children();
+
+ //<-
+ private:
+ void _remove_all_children();
+
+ void _add_child(pointer const& child);
+ //->
+ };
+
+ //<-
+ template <typename Derived, typename T, typename Selector>
+ raw_node_base<Derived,T,Selector>::raw_node_base()
+ : _children(), _parent(), _data()
+ {
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ raw_node_base<Derived,T,Selector>::raw_node_base(
+ typename traits::data_type const& data
+ ) : _children(), _parent(), _data(data)
+ {
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ raw_node_base<Derived,T,Selector>::raw_node_base(raw_node_base const& copy)
+ : _children(), _parent(), _data(copy._data)
+ {
+ pointer p = this->get_derived();
+
+ for (
+ depth_first_iterator<const_pointer,::boost::mpl::true_> copy_itr(
+ copy.get_derived()
+ );
+ copy_itr;
+ ++copy_itr
+ )
+ {
+ switch (traversal_state(copy_itr))
+ {
+ case pre_order_traversal:
+ {
+ pointer child = ::boost::tree_node::factory<
+ Derived
+ >::create((*copy_itr)->get_data());
+
+ p->_add_child(child);
+ p = child;
+ break;
+ }
+
+ case post_order_traversal:
+ {
+ p = p->_parent;
+ break;
+ }
+ }
+ }
+
+ this->deep_update_derived();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ raw_node_base<Derived,T,Selector>&
+ raw_node_base<Derived,T,Selector>::operator=(raw_node_base const& copy)
+ {
+ if (this != &copy)
+ {
+ raw_node_base temp_copy(copy);
+
+ _remove_all_children();
+ _children = temp_copy._children;
+ _data = temp_copy._data;
+ temp_copy._children.clear();
+
+ child_iterator itr_end = get_child_end();
+
+ for (child_iterator itr = get_child_begin(); itr != itr_end; ++itr)
+ {
+ (*itr)->_parent = this->get_derived();
+ }
+
+ this->shallow_update_derived();
+ }
+
+ return *this;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ raw_node_base<Derived,T,Selector>::~raw_node_base()
+ {
+ _remove_all_children();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ typename raw_node_base<Derived,T,Selector>::pointer
+ raw_node_base<Derived,T,Selector>::clone() const
+ {
+ pointer result = ::boost::tree_node::factory<Derived>::create(_data);
+ pointer p = result;
+
+ for (
+ depth_first_iterator<const_pointer,::boost::mpl::true_> copy_itr(
+ this->get_derived()
+ );
+ copy_itr;
+ ++copy_itr
+ )
+ {
+ switch (traversal_state(copy_itr))
+ {
+ case pre_order_traversal:
+ {
+ pointer child = ::boost::tree_node::factory<
+ Derived
+ >::create((*copy_itr)->get_data());
+
+ p->_add_child(child);
+ p = child;
+ break;
+ }
+
+ case post_order_traversal:
+ {
+ p = p->_parent;
+ break;
+ }
+ }
+ }
+
+ result->deep_update_derived();
+ return result;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename raw_node_base<Derived,T,Selector>::traits::data_type const&
+ raw_node_base<Derived,T,Selector>::get_data() const
+ {
+ return _data;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename raw_node_base<Derived,T,Selector>::traits::data_type&
+ raw_node_base<Derived,T,Selector>::get_data()
+ {
+ return _data;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename raw_node_base<Derived,T,Selector>::const_pointer
+ raw_node_base<Derived,T,Selector>::get_parent() const
+ {
+ return _parent;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename raw_node_base<Derived,T,Selector>::pointer
+ raw_node_base<Derived,T,Selector>::get_parent()
+ {
+ return _parent;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename raw_node_base<Derived,T,Selector>::pointer
+ raw_node_base<Derived,T,Selector>::add_child(
+ typename traits::data_type const& data
+ )
+ {
+ pointer child = ::boost::tree_node::factory<Derived>::create(data);
+
+ _add_child(child);
+ this->shallow_update_derived();
+ return child;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename raw_node_base<Derived,T,Selector>::pointer
+ raw_node_base<Derived,T,Selector>::add_child()
+ {
+ pointer child = ::boost::tree_node::factory<Derived>::create();
+
+ _add_child(child);
+ this->shallow_update_derived();
+ return child;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename raw_node_base<Derived,T,Selector>::pointer
+ raw_node_base<Derived,T,Selector>::add_child_copy(
+ const_pointer const& copy
+ )
+ {
+ pointer child = copy->clone();
+
+ _add_child(child);
+ this->shallow_update_derived();
+ return child;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename raw_node_base<Derived,T,Selector>::const_child_iterator
+ raw_node_base<Derived,T,Selector>::get_child_begin() const
+ {
+ return const_child_iterator(_children.begin());
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename raw_node_base<Derived,T,Selector>::child_iterator
+ raw_node_base<Derived,T,Selector>::get_child_begin()
+ {
+ return _children.begin();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename raw_node_base<Derived,T,Selector>::const_child_iterator
+ raw_node_base<Derived,T,Selector>::get_child_end() const
+ {
+ return const_child_iterator(_children.end());
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename raw_node_base<Derived,T,Selector>::child_iterator
+ raw_node_base<Derived,T,Selector>::get_child_end()
+ {
+ return _children.end();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline void raw_node_base<Derived,T,Selector>::remove_all_children()
+ {
+ _remove_all_children();
+ this->shallow_update_derived();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ void raw_node_base<Derived,T,Selector>::_remove_all_children()
+ {
+ child_iterator itr_end = get_child_end();
+
+ for (child_iterator itr = get_child_begin(); itr != itr_end; ++itr)
+ {
+ delete *itr;
+ }
+
+ _children.clear();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline void
+ raw_node_base<Derived,T,Selector>::_add_child(pointer const& child)
+ {
+ child->_parent = this->get_derived();
+ _children.insert(_children.end(), child);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__raw_node
+namespace boost { namespace tree_node {
+
+ template <typename T, typename Selector = ::boost::dequeS>
+ class raw_node : public raw_node_base<raw_node<T,Selector>,T,Selector>
+ {
+ typedef raw_node_base<raw_node,T,Selector> super_t;
+
+ public:
+ typedef typename super_t::traits traits;
+ typedef typename super_t::pointer pointer;
+ typedef typename super_t::const_pointer const_pointer;
+ typedef typename super_t::child_iterator child_iterator;
+ typedef typename super_t::const_child_iterator const_child_iterator;
+
+ raw_node();
+
+ explicit raw_node(typename traits::data_type const& data);
+ };
+
+ //<-
+ template <typename T, typename Selector>
+ raw_node<T,Selector>::raw_node() : super_t()
+ {
+ }
+
+ template <typename T, typename Selector>
+ raw_node<T,Selector>::raw_node(typename traits::data_type const& data)
+ : super_t(data)
+ {
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__raw_node_gen
+namespace boost { namespace tree_node {
+
+ template <typename Selector = ::boost::dequeS>
+ struct raw_node_gen
+ {
+ template <typename Derived, typename T>
+ struct apply
+ {
+ typedef raw_node_base<Derived,T,Selector> type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_RAW_NODE_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/shared_base.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/shared_base.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,72 @@
+// Copyright (C) 2011 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_SHARED_BASE_HPP_INCLUDED
+#define BOOST_TREE_NODE_SHARED_BASE_HPP_INCLUDED
+
+#include <boost/detail/base_pointee_shared.hpp>
+
+//[reference__shared_tree_node_base
+namespace boost { namespace tree_node {
+
+ template <typename Derived>
+ struct shared_tree_node_base
+ //<-
+ : public ::boost::detail::base_pointee_shared<Derived>
+ //->
+ {
+ typedef // implementation_defined
+ //<-
+ typename ::boost::detail::base_pointee_shared<
+ Derived
+ >::pointer
+ //->
+ pointer;
+ typedef // implementation_defined
+ //<-
+ typename ::boost::detail::base_pointee_shared<
+ Derived
+ >::const_pointer
+ //->
+ const_pointer;
+
+ protected:
+ void shallow_update_impl();
+
+ void deep_update_impl();
+
+ void shallow_update_derived();
+
+ void deep_update_derived();
+ };
+
+ //<-
+ template <typename Derived>
+ inline void shared_tree_node_base<Derived>::shallow_update_impl()
+ {
+ }
+
+ template <typename Derived>
+ inline void shared_tree_node_base<Derived>::deep_update_impl()
+ {
+ }
+
+ template <typename Derived>
+ inline void shared_tree_node_base<Derived>::shallow_update_derived()
+ {
+ this->get_derived()->shallow_update_impl();
+ }
+
+ template <typename Derived>
+ inline void shared_tree_node_base<Derived>::deep_update_derived()
+ {
+ this->get_derived()->deep_update_impl();
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_SHARED_BASE_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/simple_associative_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/simple_associative_node.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,546 @@
+// Copyright (C) 2011 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_SIMPLE_ASSOCIATIVE_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_SIMPLE_ASSOCIATIVE_NODE_HPP_INCLUDED
+
+#include <utility>
+#include <boost/mpl/bool.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/tr1/memory.hpp>
+#include <boost/tr1/tuple.hpp>
+#include <boost/iterator/transform_iterator.hpp>
+#include <boost/utility/associative_container_gen.hpp>
+#include <boost/tree_node/shared_base.hpp>
+#include <boost/tree_node/depth_first_iterator.hpp>
+#include <boost/tree_node/factory.hpp>
+#include <boost/detail/function/add_const_to_2nd_sh_ptee.hpp>
+
+//[reference__simple_associative_node_base
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename Key
+ , typename Data
+ , typename AssociativeContainerSelector
+ >
+ class simple_associative_node_base
+ : public shared_tree_node_base<Derived>
+ , private noncopyable
+ {
+ public:
+ struct traits
+ {
+ typedef Key key_type;
+ typedef Data data_type;
+ };
+
+ typedef typename shared_tree_node_base<Derived>::pointer
+ pointer;
+ typedef typename shared_tree_node_base<Derived>::const_pointer
+ const_pointer;
+
+ //<-
+ private:
+ typedef typename ::boost::mpl::apply_wrap2<
+ associative_container_gen<
+ AssociativeContainerSelector
+ >
+ , typename traits::key_type
+ , pointer
+ >::type
+ children;
+
+ public:
+ //->
+ typedef // implementation_defined
+ //<-
+ typename children::iterator
+ //->
+ child_iterator;
+ typedef // implementation_defined
+ //<-
+#if 0
+ ::boost::transform_iterator<
+ ::boost::detail::add_const_to_2nd_shared_pointee<
+ Key
+ , Derived
+ >
+ , typename children::const_iterator
+ >
+#else
+ typename children::const_iterator
+#endif
+ //->
+ const_child_iterator;
+
+ //<-
+ private:
+ children _children;
+ ::std::tr1::weak_ptr<Derived> _parent;
+ typename traits::data_type _data;
+ //->
+
+ protected:
+ simple_associative_node_base();
+
+ explicit simple_associative_node_base(
+ typename traits::data_type const& data
+ );
+
+ public:
+ ~simple_associative_node_base();
+
+ pointer clone() const;
+
+ typename traits::data_type const& get_data() const;
+
+ typename traits::data_type& get_data();
+
+ const_pointer get_parent() const;
+
+ pointer get_parent();
+
+ pointer
+ add_child(
+ typename traits::key_type const& key
+ , typename traits::data_type const& data
+ );
+
+ pointer add_child(typename traits::key_type const& key);
+
+ pointer
+ add_child_copy(
+ typename traits::key_type const& key
+ , const_pointer const& copy
+ );
+
+ const_child_iterator get_child_begin() const;
+
+ child_iterator get_child_begin();
+
+ const_child_iterator get_child_end() const;
+
+ child_iterator get_child_end();
+
+ const_child_iterator
+ find_child(typename traits::key_type const& key) const;
+
+ child_iterator find_child(typename traits::key_type const& key);
+
+ ::std::pair<const_child_iterator,const_child_iterator>
+ find_children(typename traits::key_type const& key) const;
+
+ ::std::pair<child_iterator,child_iterator>
+ find_children(typename traits::key_type const& key);
+
+ ::std::size_t remove_children(typename traits::key_type const& key);
+
+ void remove_all_children();
+
+ //<-
+ private:
+ void _remove_all_children();
+
+ void
+ _add_child(
+ typename traits::key_type const& key
+ , pointer const& child
+ );
+ //->
+ };
+
+ //<-
+ template <typename Derived, typename K, typename D, typename A>
+ simple_associative_node_base<Derived,K,D,A>::simple_associative_node_base()
+ : _children(), _parent(), _data()
+ {
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ simple_associative_node_base<Derived,K,D,A>::simple_associative_node_base(
+ typename traits::data_type const& d
+ ) : _children(), _parent(), _data(d)
+ {
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ simple_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::~simple_associative_node_base()
+ {
+ _remove_all_children();
+ _parent.reset();
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ typename simple_associative_node_base<Derived,K,D,A>::pointer
+ simple_associative_node_base<Derived,K,D,A>::clone() const
+ {
+ pointer result(::boost::tree_node::factory<Derived>::create(_data));
+ pointer p(result);
+
+ for (
+ depth_first_iterator<const_pointer,::boost::mpl::true_> copy_itr(
+ this->get_derived()
+ );
+ copy_itr;
+ ++copy_itr
+ )
+ {
+ switch (traversal_state(copy_itr))
+ {
+ case pre_order_traversal:
+ {
+ pointer child(
+ ::boost::tree_node::factory<Derived>::create(
+ copy_itr->second->get_data()
+ )
+ );
+
+ p->_add_child(copy_itr->first, child);
+ p = child;
+ break;
+ }
+
+ case post_order_traversal:
+ {
+ p = p->get_parent();
+ break;
+ }
+ }
+ }
+
+ result->deep_update_derived();
+ return result;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename simple_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::traits::data_type const&
+ simple_associative_node_base<Derived,K,D,A>::get_data() const
+ {
+ return _data;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename simple_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::traits::data_type&
+ simple_associative_node_base<Derived,K,D,A>::get_data()
+ {
+ return _data;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename simple_associative_node_base<Derived,K,D,A>::const_pointer
+ simple_associative_node_base<Derived,K,D,A>::get_parent() const
+ {
+ return const_pointer(_parent.lock());
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename simple_associative_node_base<Derived,K,D,A>::pointer
+ simple_associative_node_base<Derived,K,D,A>::get_parent()
+ {
+ return pointer(_parent.lock());
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ typename simple_associative_node_base<Derived,K,D,A>::pointer
+ simple_associative_node_base<Derived,K,D,A>::add_child(
+ typename traits::key_type const& key
+ , typename traits::data_type const& data
+ )
+ {
+ pointer child(::boost::tree_node::factory<Derived>::create(data));
+
+ _add_child(key, child);
+ this->shallow_update_derived();
+ return child;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ typename simple_associative_node_base<Derived,K,D,A>::pointer
+ simple_associative_node_base<Derived,K,D,A>::add_child(
+ typename traits::key_type const& key
+ )
+ {
+ pointer child(::boost::tree_node::factory<Derived>::create());
+
+ _add_child(key, child);
+ this->shallow_update_derived();
+ return child;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ typename simple_associative_node_base<Derived,K,D,A>::pointer
+ simple_associative_node_base<Derived,K,D,A>::add_child_copy(
+ typename traits::key_type const& key
+ , const_pointer const& copy
+ )
+ {
+ pointer child(copy->clone());
+
+ _add_child(key, child);
+ this->shallow_update_derived();
+ return child;
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename simple_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::const_child_iterator
+ simple_associative_node_base<Derived,K,D,A>::get_child_begin() const
+ {
+ return const_child_iterator(_children.begin());
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename simple_associative_node_base<Derived,K,D,A>::child_iterator
+ simple_associative_node_base<Derived,K,D,A>::get_child_begin()
+ {
+ return _children.begin();
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename simple_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::const_child_iterator
+ simple_associative_node_base<Derived,K,D,A>::get_child_end() const
+ {
+ return const_child_iterator(_children.end());
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename simple_associative_node_base<Derived,K,D,A>::child_iterator
+ simple_associative_node_base<Derived,K,D,A>::get_child_end()
+ {
+ return _children.end();
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename simple_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::const_child_iterator
+ simple_associative_node_base<Derived,K,D,A>::find_child(
+ typename traits::key_type const& key
+ ) const
+ {
+ return const_child_iterator(_children.find(key));
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline typename simple_associative_node_base<Derived,K,D,A>::child_iterator
+ simple_associative_node_base<Derived,K,D,A>::find_child(
+ typename traits::key_type const& key
+ )
+ {
+ return _children.find(key);
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline ::std::pair<
+ typename simple_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::const_child_iterator
+ , typename simple_associative_node_base<
+ Derived
+ , K
+ , D
+ , A
+ >::const_child_iterator
+ >
+ simple_associative_node_base<Derived,K,D,A>::find_children(
+ typename traits::key_type const& key
+ ) const
+ {
+ ::std::pair<
+ typename children::const_iterator
+ , typename children::const_iterator
+ > p(_children.equal_range(key));
+
+ return ::std::pair<const_child_iterator,const_child_iterator>(
+ const_child_iterator(p.first)
+ , const_child_iterator(p.second)
+ );
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline ::std::pair<
+ typename simple_associative_node_base<Derived,K,D,A>::child_iterator
+ , typename simple_associative_node_base<Derived,K,D,A>::child_iterator
+ >
+ simple_associative_node_base<Derived,K,D,A>::find_children(
+ typename traits::key_type const& key
+ )
+ {
+ return _children.equal_range(key);
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ ::std::size_t
+ simple_associative_node_base<Derived,K,D,A>::remove_children(
+ typename traits::key_type const& key
+ )
+ {
+ child_iterator itr, itr_end;
+
+ for (
+ ::std::tr1::tie(itr, itr_end) = _children.equal_range(key);
+ itr != itr_end;
+ ++itr
+ )
+ {
+ itr->second->remove_all_children();
+ itr->second->_parent.reset();
+ }
+
+ this->shallow_update_derived();
+ return _children.erase(key);
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ inline void
+ simple_associative_node_base<Derived,K,D,A>::remove_all_children()
+ {
+ _remove_all_children();
+ this->shallow_update_derived();
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ void simple_associative_node_base<Derived,K,D,A>::_remove_all_children()
+ {
+ child_iterator itr_end = get_child_end();
+
+ for (child_iterator itr = get_child_begin(); itr != itr_end; ++itr)
+ {
+ itr->second->remove_all_children();
+ itr->second->_parent.reset();
+ }
+
+ _children.clear();
+ }
+
+ template <typename Derived, typename K, typename D, typename A>
+ void
+ simple_associative_node_base<Derived,K,D,A>::_add_child(
+ typename traits::key_type const& key
+ , pointer const& child
+ )
+ {
+ child->_parent = this->get_derived();
+ _children.insert(typename children::value_type(key, child));
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__simple_associative_node
+namespace boost { namespace tree_node {
+
+ template <
+ typename Key
+ , typename Data
+ , typename AssociativeContainerSelector = ::boost::mapS
+ >
+ class simple_associative_node
+ : public simple_associative_node_base<
+ simple_associative_node<Key,Data,AssociativeContainerSelector>
+ , Key
+ , Data
+ , AssociativeContainerSelector
+ >
+ {
+ typedef simple_associative_node_base<
+ simple_associative_node
+ , Key
+ , Data
+ , AssociativeContainerSelector
+ >
+ super_t;
+
+ public:
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::child_iterator
+ child_iterator;
+ typedef typename super_t::const_child_iterator
+ const_child_iterator;
+
+ //<-
+ private:
+ simple_associative_node();
+
+ explicit simple_associative_node(
+ typename traits::data_type const& data
+ );
+
+ friend struct ::boost::tree_node::factory<simple_associative_node>;
+ //->
+ };
+
+ //<-
+ template <typename K, typename D, typename A>
+ simple_associative_node<K,D,A>::simple_associative_node() : super_t()
+ {
+ }
+
+ template <typename K, typename D, typename A>
+ simple_associative_node<K,D,A>::simple_associative_node(
+ typename traits::data_type const& data
+ ) : super_t(data)
+ {
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__simple_associative_node_gen
+namespace boost { namespace tree_node {
+
+ template <typename Selector = ::boost::mapS>
+ struct simple_associative_node_gen
+ {
+ template <typename Derived, typename Key, typename Data>
+ struct apply
+ {
+ typedef simple_associative_node_base<Derived,Key,Data,Selector>
+ type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_SIMPLE_ASSOCIATIVE_NODE_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/simple_node.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/simple_node.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,367 @@
+// Copyright (C) 2011 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_SIMPLE_NODE_HPP_INCLUDED
+#define BOOST_TREE_NODE_SIMPLE_NODE_HPP_INCLUDED
+
+#include <utility>
+#include <boost/mpl/bool.hpp>
+#include <boost/noncopyable.hpp>
+#include <boost/tr1/memory.hpp>
+#include <boost/iterator/transform_iterator.hpp>
+#include <boost/utility/container_gen.hpp>
+#include <boost/tree_node/shared_base.hpp>
+#include <boost/tree_node/depth_first_iterator.hpp>
+#include <boost/tree_node/factory.hpp>
+#include <boost/detail/function/add_const_to_sh_ptee.hpp>
+
+//[reference__simple_node_base
+namespace boost { namespace tree_node {
+
+ template <typename Derived, typename T, typename Selector>
+ class simple_node_base
+ : public shared_tree_node_base<Derived>
+ , private noncopyable
+ {
+ public:
+ struct traits
+ {
+ typedef T data_type;
+ };
+
+ typedef typename shared_tree_node_base<Derived>::pointer
+ pointer;
+ typedef typename shared_tree_node_base<Derived>::const_pointer
+ const_pointer;
+
+ //<-
+ private:
+ typedef typename ::boost::container_gen<Selector,pointer>::type
+ children;
+
+ public:
+ //->
+ typedef // implementation_defined
+ //<-
+ typename children::iterator
+ //->
+ child_iterator;
+ typedef // implementation_defined
+ //<-
+#if 0
+// TODO:
+// Fix compiler error that occurs when this code is used
+// by the with_depth adaptor.
+ ::boost::transform_iterator<
+ ::boost::detail::add_const_to_shared_pointee<Derived>
+ , typename children::const_iterator
+ >
+#else
+ typename children::const_iterator
+#endif
+ //->
+ const_child_iterator;
+
+ //<-
+ private:
+ children _children;
+ ::std::tr1::weak_ptr<Derived> _parent;
+ typename traits::data_type _data;
+ //->
+
+ protected:
+ simple_node_base();
+
+ explicit simple_node_base(typename traits::data_type const& data);
+
+ public:
+ ~simple_node_base();
+
+ pointer clone() const;
+
+ typename traits::data_type const& get_data() const;
+
+ typename traits::data_type& get_data();
+
+ const_pointer get_parent() const;
+
+ pointer get_parent();
+
+ pointer add_child(typename traits::data_type const& data);
+
+ pointer add_child();
+
+ pointer add_child_copy(const_pointer const& copy);
+
+ const_child_iterator get_child_begin() const;
+
+ child_iterator get_child_begin();
+
+ const_child_iterator get_child_end() const;
+
+ child_iterator get_child_end();
+
+ void remove_all_children();
+
+ //<-
+ private:
+ void _remove_all_children();
+
+ void _add_child(pointer const& child);
+ //->
+ };
+
+ //<-
+ template <typename Derived, typename T, typename Selector>
+ simple_node_base<Derived,T,Selector>::simple_node_base()
+ : _children(), _parent(), _data()
+ {
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ simple_node_base<Derived,T,Selector>::simple_node_base(
+ typename traits::data_type const& data
+ ) : _children(), _parent(), _data(data)
+ {
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ simple_node_base<Derived,T,Selector>::~simple_node_base()
+ {
+ _remove_all_children();
+ _parent.reset();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ typename simple_node_base<Derived,T,Selector>::pointer
+ simple_node_base<Derived,T,Selector>::clone() const
+ {
+ pointer result(::boost::tree_node::factory<Derived>::create(_data));
+ pointer p(result);
+
+ for (
+ depth_first_iterator<const_pointer,::boost::mpl::true_> copy_itr(
+ this->get_derived()
+ );
+ copy_itr;
+ ++copy_itr
+ )
+ {
+ switch (traversal_state(copy_itr))
+ {
+ case pre_order_traversal:
+ {
+ pointer child(
+ ::boost::tree_node::factory<Derived>::create(
+ (*copy_itr)->get_data()
+ )
+ );
+
+ p->_add_child(child);
+ p = child;
+ break;
+ }
+
+ case post_order_traversal:
+ {
+ p = p->get_parent();
+ break;
+ }
+ }
+ }
+
+ result->deep_update_derived();
+ return result;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename simple_node_base<
+ Derived
+ , T
+ , Selector
+ >::traits::data_type const&
+ simple_node_base<Derived,T,Selector>::get_data() const
+ {
+ return _data;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename simple_node_base<Derived,T,Selector>::traits::data_type&
+ simple_node_base<Derived,T,Selector>::get_data()
+ {
+ return _data;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename simple_node_base<Derived,T,Selector>::const_pointer
+ simple_node_base<Derived,T,Selector>::get_parent() const
+ {
+ return const_pointer(_parent.lock());
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename simple_node_base<Derived,T,Selector>::pointer
+ simple_node_base<Derived,T,Selector>::get_parent()
+ {
+ return pointer(_parent.lock());
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename simple_node_base<Derived,T,Selector>::pointer
+ simple_node_base<Derived,T,Selector>::add_child(
+ typename traits::data_type const& data
+ )
+ {
+ pointer child(::boost::tree_node::factory<Derived>::create(data));
+
+ _add_child(child);
+ this->shallow_update_derived();
+ return child;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename simple_node_base<Derived,T,Selector>::pointer
+ simple_node_base<Derived,T,Selector>::add_child()
+ {
+ pointer child(::boost::tree_node::factory<Derived>::create());
+
+ _add_child(child);
+ this->shallow_update_derived();
+ return child;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename simple_node_base<Derived,T,Selector>::pointer
+ simple_node_base<Derived,T,Selector>::add_child_copy(
+ const_pointer const& copy
+ )
+ {
+ pointer child(copy->clone());
+
+ _add_child(child);
+ this->shallow_update_derived();
+ return child;
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename simple_node_base<Derived,T,Selector>::const_child_iterator
+ simple_node_base<Derived,T,Selector>::get_child_begin() const
+ {
+ return const_child_iterator(_children.begin());
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename simple_node_base<Derived,T,Selector>::child_iterator
+ simple_node_base<Derived,T,Selector>::get_child_begin()
+ {
+ return _children.begin();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename simple_node_base<Derived,T,Selector>::const_child_iterator
+ simple_node_base<Derived,T,Selector>::get_child_end() const
+ {
+ return const_child_iterator(_children.end());
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline typename simple_node_base<Derived,T,Selector>::child_iterator
+ simple_node_base<Derived,T,Selector>::get_child_end()
+ {
+ return _children.end();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline void simple_node_base<Derived,T,Selector>::remove_all_children()
+ {
+ _remove_all_children();
+ this->shallow_update_derived();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ void simple_node_base<Derived,T,Selector>::_remove_all_children()
+ {
+ child_iterator itr_end = get_child_end();
+
+ for (child_iterator itr = get_child_begin(); itr != itr_end; ++itr)
+ {
+ (*itr)->remove_all_children();
+ (*itr)->_parent.reset();
+ }
+
+ _children.clear();
+ }
+
+ template <typename Derived, typename T, typename Selector>
+ inline void
+ simple_node_base<Derived,T,Selector>::_add_child(pointer const& child)
+ {
+ child->_parent = this->get_derived();
+ _children.insert(_children.end(), child);
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__simple_node
+namespace boost { namespace tree_node {
+
+ template <typename T, typename Selector = ::boost::dequeS>
+ class simple_node
+ : public simple_node_base<simple_node<T>,T,Selector>
+ {
+ typedef simple_node_base<simple_node,T,Selector> super_t;
+
+ public:
+ typedef typename super_t::traits traits;
+ typedef typename super_t::pointer pointer;
+ typedef typename super_t::const_pointer const_pointer;
+ typedef typename super_t::child_iterator child_iterator;
+ typedef typename super_t::const_child_iterator const_child_iterator;
+
+ //<-
+ private:
+ simple_node();
+
+ explicit simple_node(typename traits::data_type const& data);
+
+ friend struct ::boost::tree_node::factory<simple_node>;
+ //->
+ };
+
+ //<-
+ template <typename T, typename Selector>
+ simple_node<T,Selector>::simple_node() : super_t()
+ {
+ }
+
+ template <typename T, typename Selector>
+ simple_node<T,Selector>::simple_node(
+ typename traits::data_type const& data
+ ) : super_t(data)
+ {
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__simple_node_gen
+namespace boost { namespace tree_node {
+
+ template <typename Selector = ::boost::dequeS>
+ struct simple_node_gen
+ {
+ template <typename Derived, typename T>
+ struct apply
+ {
+ typedef simple_node_base<Derived,T,Selector> type;
+ };
+ };
+//]
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_SIMPLE_NODE_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/traversal_state.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/traversal_state.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,24 @@
+// Copyright (C) 2011 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_INCLUDED
+#define BOOST_TREE_NODE_TRAVERSAL_STATE_HPP_INCLUDED
+
+//[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_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/typeof.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/typeof.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,57 @@
+// Copyright (C) 2011 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_TYPEOF_HPP_INCLUDED
+#define BOOST_TREE_NODE_TYPEOF_HPP_INCLUDED
+
+#include <boost/typeof/typeof.hpp>
+#include <boost/tree_node.hpp>
+
+#include BOOST_TYPEOF_INCREMENT_REGISTRATION_GROUP()
+BOOST_TYPEOF_REGISTER_TYPE(boost::tree_node::traversal_state)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::breadth_first_iterator, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::pre_order_iterator, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::post_order_iterator, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::depth_first_iterator, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::in_order_iterator, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::factory, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::tree_node_base, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::shared_tree_node_base, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::raw_binary_node_base, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::raw_binary_node, 1)
+BOOST_TYPEOF_REGISTER_TYPE(boost::tree_node::raw_binary_node_gen)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::raw_node_base, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::raw_node, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::raw_node_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::simple_node_base, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::simple_node, 2)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::simple_node_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::raw_associative_node_base, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::raw_associative_node, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::raw_associative_node_gen, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ boost::tree_node::simple_associative_node_base
+ , 4
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::simple_associative_node, 1)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ boost::tree_node::simple_associative_node_gen
+ , 2
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ boost::tree_node::with_child_range_access_base
+ , 4
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::with_child_range_access, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(
+ boost::tree_node::with_child_range_access_gen
+ , 1
+)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::with_depth_base, 4)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::with_depth, 3)
+BOOST_TYPEOF_REGISTER_TEMPLATE(boost::tree_node::with_depth_gen, 1)
+
+#endif // BOOST_TREE_NODE_TYPEOF_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/with_child_range_access.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_child_range_access.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,239 @@
+// Copyright (C) 2011 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_CHILD_RANGE_ACCESS_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_CHILD_RANGE_ACCESS_HPP_INCLUDED
+
+#include <utility>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/tree_node/factory.hpp>
+
+//[reference__with_child_range_access_base
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ class with_child_range_access_base
+ : public ::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
+ {
+ 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;
+
+ public:
+ typedef typename super_t::traits traits;
+ typedef typename super_t::pointer pointer;
+ typedef typename super_t::const_pointer const_pointer;
+ typedef typename super_t::child_iterator child_iterator;
+ typedef typename super_t::const_child_iterator const_child_iterator;
+
+ protected:
+ with_child_range_access_base();
+
+ explicit with_child_range_access_base(
+ typename traits::data_type const& data
+ );
+
+ public:
+ std::pair<const_child_iterator,const_child_iterator>
+ get_children() const;
+
+ std::pair<child_iterator,child_iterator>
+ get_children();
+ };
+
+ //<-
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_child_range_access_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::with_child_range_access_base() : super_t()
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_child_range_access_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::with_child_range_access_base(typename traits::data_type const& data)
+ : super_t(data)
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline ::std::pair<
+ typename with_child_range_access_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::const_child_iterator
+ , typename with_child_range_access_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::const_child_iterator
+ >
+ with_child_range_access_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::get_children() const
+ {
+ return ::std::pair<const_child_iterator,const_child_iterator>(
+ this->get_child_begin()
+ , this->get_child_end()
+ );
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline ::std::pair<
+ typename with_child_range_access_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::child_iterator
+ , typename with_child_range_access_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::child_iterator
+ >
+ with_child_range_access_base<
+ Derived
+ , BaseGenerator
+ , T1
+ , T2
+ >::get_children()
+ {
+ return ::std::pair<child_iterator,child_iterator>(
+ this->get_child_begin()
+ , this->get_child_end()
+ );
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_child_range_access
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename T1, typename T2 = void>
+ class with_child_range_access
+ : public with_child_range_access_base<
+ with_child_range_access<BaseGenerator,T1,T2>
+ , BaseGenerator
+ , T1
+ , T2
+ >
+ {
+ typedef with_child_range_access_base<
+ with_child_range_access
+ , BaseGenerator
+ , T1
+ , T2
+ >
+ super_t;
+
+ public:
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::child_iterator
+ child_iterator;
+ typedef typename super_t::const_child_iterator
+ const_child_iterator;
+
+ //<-
+ private:
+ with_child_range_access();
+
+ explicit with_child_range_access(
+ typename traits::data_type const& data
+ );
+
+ friend struct ::boost::tree_node::factory<with_child_range_access>;
+ //->
+ };
+
+ //<-
+ template <typename BaseGenerator, typename T1, typename T2>
+ with_child_range_access<BaseGenerator,T1,T2>::with_child_range_access()
+ : super_t()
+ {
+ }
+
+ template <typename BaseGenerator, typename T1, typename T2>
+ with_child_range_access<BaseGenerator,T1,T2>::with_child_range_access(
+ typename traits::data_type const& data
+ ) : super_t(data)
+ {
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_child_range_access_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator>
+ struct with_child_range_access_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_child_range_access_base<Derived,BaseGenerator,T1,T2>
+ type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_WITH_CHILD_RANGE_ACCESS_HPP_INCLUDED
+

Added: sandbox/tree_node/boost/tree_node/with_depth.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/boost/tree_node/with_depth.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,337 @@
+// Copyright (C) 2011 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_DEPTH_HPP_INCLUDED
+#define BOOST_TREE_NODE_WITH_DEPTH_HPP_INCLUDED
+
+#include <boost/cstdint.hpp>
+#include <boost/tr1/type_traits.hpp>
+#include <boost/mpl/apply_wrap.hpp>
+#include <boost/mpl/eval_if.hpp>
+#include <boost/tree_node/post_order_iterator.hpp>
+#include <boost/tree_node/factory.hpp>
+#include <boost/tree_node/dereference_iterator.hpp>
+
+//[reference__with_depth_base
+namespace boost { namespace tree_node {
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ class with_depth_base
+ : public ::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
+ {
+ friend struct tree_node_base<Derived>;
+ friend struct shared_tree_node_base<Derived>;
+
+ 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;
+
+ public:
+ typedef typename super_t::traits
+ traits;
+ typedef typename super_t::pointer
+ pointer;
+ typedef typename super_t::const_pointer
+ const_pointer;
+ typedef typename super_t::child_iterator
+ child_iterator;
+ typedef typename super_t::const_child_iterator
+ const_child_iterator;
+
+ //<-
+ private:
+ ::std::size_t _depth;
+ //->
+
+ protected:
+ with_depth_base();
+
+ explicit with_depth_base(typename traits::data_type const& data);
+
+ //<-
+ void shallow_update_impl();
+
+ void deep_update_impl();
+ //->
+
+ public:
+ ::std::size_t get_depth() const;
+
+ //<-
+ private:
+ void _update_less_depth();
+
+ void _update_greater_depth();
+ //->
+ };
+
+ //<-
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_depth_base<Derived,BaseGenerator,T1,T2>::with_depth_base()
+ : super_t(), _depth(0)
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ with_depth_base<Derived,BaseGenerator,T1,T2>::with_depth_base(
+ typename traits::data_type const& data
+ ) : super_t(data), _depth(0)
+ {
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ inline ::std::size_t
+ with_depth_base<Derived,BaseGenerator,T1,T2>::get_depth() const
+ {
+ return _depth;
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ void with_depth_base<Derived,BaseGenerator,T1,T2>::shallow_update_impl()
+ {
+ super_t::shallow_update_impl();
+
+ ::std::size_t new_depth = 0;
+ const_child_iterator c_end(
+ this->get_derived()->get_child_end()
+ );
+
+ for (
+ const_child_iterator c_itr(
+ this->get_derived()->get_child_begin()
+ );
+ c_itr != c_end;
+ ++c_itr
+ )
+ {
+ if (new_depth < dereference_iterator(c_itr)->get_depth() + 1)
+ {
+ new_depth = dereference_iterator(c_itr)->get_depth() + 1;
+ }
+ }
+
+ if (new_depth < _depth)
+ {
+ _depth = new_depth;
+ _update_less_depth();
+ }
+ else if (_depth < new_depth)
+ {
+ _depth = new_depth;
+ _update_greater_depth();
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ void with_depth_base<Derived,BaseGenerator,T1,T2>::deep_update_impl()
+ {
+ super_t::deep_update_impl();
+
+ ::std::size_t const old_depth = _depth;
+
+ for (
+ post_order_iterator<pointer,::boost::mpl::false_> itr(
+ this->get_derived()
+ );
+ itr;
+ ++itr
+ )
+ {
+ ::std::size_t new_depth = 0;
+ const_child_iterator c_end(
+ (*itr)->get_derived()->get_child_end()
+ );
+
+ for (
+ const_child_iterator c_itr(
+ (*itr)->get_derived()->get_child_begin()
+ );
+ c_itr != c_end;
+ ++c_itr
+ )
+ {
+ if (new_depth < dereference_iterator(c_itr)->get_depth() + 1)
+ {
+ new_depth = dereference_iterator(c_itr)->get_depth() + 1;
+ }
+ }
+
+ (*itr)->_depth = new_depth;
+ }
+
+ if (_depth < old_depth)
+ {
+ _update_less_depth();
+ }
+ else if (old_depth < _depth)
+ {
+ _update_greater_depth();
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ void with_depth_base<Derived,BaseGenerator,T1,T2>::_update_less_depth()
+ {
+ pointer p = this->get_derived();
+ ::std::size_t new_depth;
+ const_child_iterator c_itr, c_end;
+
+ while (p = p->get_parent())
+ {
+ new_depth = 0;
+ c_end = p->get_derived()->get_child_end();
+
+ for (
+ c_itr = p->get_derived()->get_child_begin();
+ c_itr != c_end;
+ ++c_itr
+ )
+ {
+ if (new_depth < dereference_iterator(c_itr)->get_depth() + 1)
+ {
+ new_depth = dereference_iterator(c_itr)->get_depth() + 1;
+ }
+ }
+
+ if (p->get_depth() == new_depth)
+ {
+ return;
+ }
+ else
+ {
+ // This is no longer the deepest branch.
+ p->_depth = new_depth;
+ }
+ }
+ }
+
+ template <
+ typename Derived
+ , typename BaseGenerator
+ , typename T1
+ , typename T2
+ >
+ void with_depth_base<Derived,BaseGenerator,T1,T2>::_update_greater_depth()
+ {
+ ::std::size_t this_depth = _depth;
+ pointer p = this->get_derived();
+
+ while ((p = p->get_parent()) && (p->_depth < ++this_depth))
+ {
+ // This is the new deepest branch.
+ p->_depth = this_depth;
+ }
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_depth
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator, typename T1, typename T2 = void>
+ class with_depth
+ : public with_depth_base<
+ with_depth<BaseGenerator,T1,T2>
+ , BaseGenerator
+ , T1
+ , T2
+ >
+ {
+ typedef with_depth_base<with_depth,BaseGenerator,T1,T2> super_t;
+
+ public:
+ typedef typename super_t::traits traits;
+ typedef typename super_t::pointer pointer;
+ typedef typename super_t::const_pointer const_pointer;
+ typedef typename super_t::child_iterator child_iterator;
+ typedef typename super_t::const_child_iterator const_child_iterator;
+
+ //<-
+ private:
+ with_depth();
+
+ explicit with_depth(typename traits::data_type const& data);
+
+ friend struct ::boost::tree_node::factory<with_depth>;
+ //->
+ };
+
+ //<-
+ template <typename BaseGenerator, typename T1, typename T2>
+ with_depth<BaseGenerator,T1,T2>::with_depth() : super_t()
+ {
+ }
+
+ template <typename BaseGenerator, typename T1, typename T2>
+ with_depth<BaseGenerator,T1,T2>::with_depth(
+ typename traits::data_type const& data
+ ) : super_t(data)
+ {
+ }
+ //->
+}} // namespace boost::tree_node
+//]
+
+//[reference__with_depth_gen
+namespace boost { namespace tree_node {
+
+ template <typename BaseGenerator>
+ struct with_depth_gen
+ {
+ template <typename Derived, typename T1, typename T2 = void>
+ struct apply
+ {
+ typedef with_depth_base<Derived,BaseGenerator,T1,T2>
+ type;
+ };
+ };
+}} // namespace boost::tree_node
+//]
+
+#endif // BOOST_TREE_NODE_WITH_DEPTH_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/doc/changelog.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/changelog.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,26 @@
+[/=============================================================================
+ Copyright (C) 2011 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.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 __tree_node_with_child_range_access__ and __tree_node_with_depth__
+ adaptor class templates.
+ * All __Tree_Node__ models now use CRTP so that adaptor classes can inherit
+ from the base types.
+
+[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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,174 @@
+[/=============================================================================
+ Copyright (C) 2011 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&`.]]
+ [[`data`][An object of type `Node::traits::data_type const&`.]]
+]
+
+[section:types Associated Types]
+One new type is 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.]
+ []
+ ]
+]
+
+In addition, the requirements for the child iterator types are strengthened:
+
+ * The value type of `Node::child_iterator` must be
+ _std_pair_<Node::traits::key_type const&,Node::pointer>.
+ * The value type of `Node::const_child_iterator` must be
+ _std_pair_<Node::traits::key_type const&,Node::const_pointer>.
+
+[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 with data]
+ [`node->add_child(key, data);`]
+ []
+ [`Node::pointer`]
+ [
+ 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 store the specified data.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Child creation]
+ [`node->add_child(key)`]
+ [
+ `Node::traits::data_type` must model the __Default_Constructible__
+ concept.
+ ]
+ [`Node::pointer`]
+ [
+ Creates and returns a tree node to be associated with the specified
+ key in the range of children of the invoking node.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Child copy creation]
+ [`node->add_child_copy(key, const_node)`]
+ []
+ [`Node::pointer`]
+ [
+ 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_child(key)`]
+ []
+ [`Node::const_child_iterator`]
+ [
+ Returns an iterator pointing to a child node associated with the
+ specified key, or `const_node->get_child_end()` if no such child
+ exists.
+ ]
+ [Logarithmic]
+ ]
+ [
+ [Child search]
+ [`node->find_child(key)`]
+ []
+ [`Node::child_iterator`]
+ [
+ Returns an iterator pointing to a child node associated with the
+ specified key, or `node->get_child_end()` if no such child exists.
+ ]
+ [Logarithmic]
+ ]
+ [
+ [Child search range]
+ [`const_node->find_children(key)`]
+ []
+ [[^_std_pair_<Node::const_child_iterator,Node::const_child_iterator>]]
+ [
+ Returns a pair `p` such that `[p.first, p.second)` is a range
+ of all child nodes associated with the specified key. If no such
+ children exist, then the range will be empty.
+ ]
+ [Logarithmic]
+ ]
+ [
+ [Child search range]
+ [`node->find_children(key)`]
+ []
+ [[^_std_pair_<Node::child_iterator,Node::child_iterator>]]
+ [
+ Returns a pair `p` such that `[p.first, p.second)` is a range
+ of all child nodes associated with the specified key. If no such
+ children exist, then the range will be empty.
+ ]
+ [Logarithmic]
+ ]
+ [
+ [Remove children]
+ [`node->remove_children(key)`]
+ []
+ [`std::size_t`]
+ [
+ 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]
+
+ * __raw_associative_node__
+ * __raw_associative_node_base__
+ * __simple_associative_node__
+ * __simple_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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,127 @@
+[/=============================================================================
+ Copyright (C) 2011 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 both the __Factory_Constructible_Tree_Node__
+models and 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__, __shared_tree_node_base__, or
+ the return type of a __Type_Generator__.
+ * Take in the derived type and the data type as template parameters.
+ * Define the requisite constructors in `protected` or `public` scope.
+
+
+[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`.]]
+ [[`data`][An object of type `Node::traits::data_type const&`.]]
+]
+
+[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 from within any `Node` member
+function.
+
+[table
+ [[Name][Expression][Return Type][Semantics][__Runtime_Complexity__]]
+ [
+ [Default constructor]
+ [`Base()`]
+ []
+ [Default-constructs a `Base` object.]
+ [Constant]
+ ]
+ [
+ [Constructor with data]
+ [`Base(data)`]
+ []
+ [Constructs a `Base` object that stores the specified data.]
+ [Constant]
+ ]
+ [
+ [Shallow update]
+ [`base->shallow_update_derived()`]
+ [`void`]
+ [
+ Updates any `Node`-specific information invalidated by operations
+ that structurally modify only a few nodes, e.g. adding a single
+ child, removing children and their descendants, or simple
+ rotations.
+ ]
+ [
+ Linear with respect to the number of children plus the number of
+ ancestors.
+ ]
+ ]
+ [
+ [Deep update]
+ [`base->deep_update_derived()`]
+ [`void`]
+ [
+ Updates any `Node`-specific information invalidated by operations
+ that structurally modify all descendants, e.g. cloning.
+ ]
+ [
+ Linear with respect to the number of descendants plus the number of
+ ancestors.
+ ]
+ ]
+]
+[endsect] [/ Valid Expressions and Semantics]
+
+[section Models]
+
+ * __raw_binary_node_base__
+ * __raw_node_base__
+ * __simple_node_base__
+ * __raw_associative_node_base__
+ * __simple_associative_node_base__
+ * __tree_node_with_child_range_access_base__
+ * __tree_node_with_depth_base__
+
+[endsect]
+
+[endsect] [/ Base Tree Node]
+

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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,227 @@
+[/=============================================================================
+ Copyright (C) 2011 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__
+[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`.]
+ ]
+ [
+ [`data`]
+ [An object of type `Node::traits::data_type const&`.]
+ ]
+]
+
+[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__]
+ ]
+ [
+ [Left child creation with data]
+ [`node->add_left_child(data)`]
+ []
+ [`Node::pointer`]
+ [
+ Creates and returns a tree node to be stored as the left child of
+ the invoking node. The node returned will store the specified
+ data.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Left child creation]
+ [`node->add_left_child()`]
+ [
+ `Node::traits::data_type` must model the __Default_Constructible__
+ concept.
+ ]
+ [`Node::pointer`]
+ [
+ Creates and returns a tree node to be stored as the left child of
+ the invoking node.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Left child copy creation]
+ [`node->add_left_child_copy(const_node)`]
+ []
+ [`Node::pointer`]
+ [
+ Creates and returns a deep copy of `const_node` to be stored as the
+ left child of the invoking node.
+ ]
+ [Linear with respect to the number of descendants of `const_node`]
+ ]
+ [
+ [Right child creation with data]
+ [`node->add_right_child(data)`]
+ []
+ [`Node::pointer`]
+ [
+ Creates and returns a tree node to be stored as the right child of
+ the invoking node. The node returned will store the specified
+ data.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Right child creation]
+ [`node->add_right_child()`]
+ [
+ `Node::traits::data_type` must model the __Default_Constructible__
+ concept.
+ ]
+ [`Node::pointer`]
+ [
+ Creates and returns a tree node to be stored as the right child of
+ the invoking node.
+ ]
+ [Amortized constant]
+ ]
+ [
+ [Right child copy creation]
+ [`node->add_right_child_copy(const_node)`]
+ []
+ [`Node::pointer`]
+ [
+ Creates and returns a deep copy of `const_node` to be stored as the
+ right child of the invoking node.
+ ]
+ [Linear with respect to the number of descendants of `const_node`]
+ ]
+ [
+ [Left child access]
+ [`const_node->get_left_child()`]
+ []
+ [`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()`]
+ []
+ [`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()`]
+ []
+ [`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()`]
+ []
+ [`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->remove_left_child()`]
+ []
+ [`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->remove_right_child()`]
+ []
+ [`void`]
+ [Removes the right child from the tree node.]
+ [Linear with respect to the number of descendants of the right child]
+ ]
+]
+[endsect]
+
+[section Models]
+
+ * __raw_binary_node__
+ * __raw_binary_node_base__
+
+[endsect]
+
+[endsect] [/ Binary Tree Node]
+

Added: sandbox/tree_node/libs/tree_node/doc/concept_cloneable_tree_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_cloneable_tree_node.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,55 @@
+[/=============================================================================
+ Copyright (C) 2011 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:cloneable_tree_node Cloneable Tree Node]
+
+[section Description]
+Models of this concept provide a simple, uniform deep-copying interface.
+[endsect]
+
+[section Refinement of]
+__Tree_Node__
+[endsect]
+
+[variablelist Notation
+ [[`Node`][A type that models the [*Cloneable Tree Node] concept.]]
+ [[`const_node`][An object of type `Node::const_pointer`.]]
+]
+
+[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__]]
+ [
+ [Clone]
+ [`const_node->clone()`]
+ [`Node::pointer`]
+ [Constructs and returns a deep copy of the invoking node.]
+ [Linear with respect to the number of descendants]
+ ]
+]
+[endsect] [/ Valid Expressions and Semantics]
+
+[section Models]
+
+ * __raw_binary_node__
+ * __raw_node__
+ * __simple_node__
+ * __raw_associative_node__
+ * __simple_associative_node__
+
+[endsect]
+
+[endsect] [/ Cloneable 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,104 @@
+[/=============================================================================
+ Copyright (C) 2011 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::pointer`.]
+ ]
+ [
+ [`const_node`]
+ [An object of type `Node::const_pointer`.]
+ ]
+]
+
+[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: its value type,
+in turn, must model the __Forward_Iterator__ 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 mutable node]
+ [``
+ Iterator(node)
+ Iterator itr(node)
+ ``]
+ []
+ [
+ Constructs an iterator that will iterate through the descendants of
+ the specified node.
+ ]
+ ]
+ [
+ [Constructor from immutable node]
+ [``
+ Iterator(const_node)
+ Iterator itr(const_node)
+ ``]
+ [
+ The value type of `Iterator` must be the value type of
+ `Node::const_child_iterator`.
+ ]
+ [
+ Constructs an iterator that will iterate through the descendants of
+ the specified node.
+ ]
+ ]
+]
+[endsect]
+
+[section Models]
+
+ * The return type of __make_breadth_first_descendant_iterator__.
+ * The return type of __make_pre_order_descendant_iterator__.
+ * The return type of __make_post_order_descendant_iterator__.
+ * The return type of __make_depth_first_descendant_iterator__.
+
+[endsect]
+
+[endsect] [/ Tree Node Descendant Iterator]
+

Added: sandbox/tree_node/libs/tree_node/doc/concept_factory_construct.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_factory_construct.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,91 @@
+[/=============================================================================
+ Copyright (C) 2011 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:factory_constructible Factory-Constructible Tree Node]
+
+[section Description]
+Models of this concept allow the __tree_node_factory__ facade to create objects
+of their instantiated types. In practice, models of this concept must either
+declare their respective constructors in `public` scope or declare the
+__tree_node_factory__ to be a `friend struct`.
+[endsect]
+
+[section Refinement of]
+__Tree_Node__
+[endsect]
+
+[variablelist Notation
+ [
+ [`Node`]
+ [A type that models the [*Factory-Constructible Tree Node] concept.]
+ ]
+ [
+ [`node`]
+ [An object of type `Node*`.]
+ ]
+ [
+ [`data`]
+ [An object of type `Node::traits::data_type const&`.]
+ ]
+]
+
+[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__]]
+ [
+ [Heap-allocated default construction]
+ [`new Node()`]
+ [`Node*`]
+ [Default-constructs a `Node` object on the heap.]
+ [Constant]
+ ]
+ [
+ [Heap-allocated construction with data]
+ [`new Node(data)`]
+ [`Node*`]
+ [
+ Constructs a `Node` object on the heap that stores the specified
+ data.
+ ]
+ [Constant]
+ ]
+ [
+ [Pointer conversion]
+ [`Node::pointer(node)`]
+ [`Node::pointer`]
+ [
+ Converts the specified raw pointer. If `Node::pointer` is the same
+ as `Node*`, then the conversion is trivial; however, if the pointer
+ type is a __tr1_shared_ptr__, then the conversion is necessary.
+ ]
+ [Constant]
+ ]
+]
+[endsect] [/ Valid Expressions and Semantics]
+
+[section Models]
+
+ * __raw_binary_node__
+ * __raw_node__
+ * __simple_node__
+ * __raw_associative_node__
+ * __simple_associative_node__
+ * __tree_node_with_child_range_access__
+ * __tree_node_with_depth__
+
+[endsect]
+
+[endsect] [/ Factory-Constructible Tree Node]
+

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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,85 @@
+[/=============================================================================
+ Copyright (C) 2011 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`][A type that models the __Tree_Node__ concept.]]
+ [[`node`][An object of type `Node::pointer`.]]
+ [[`const_node`][An object of type `Node::const_pointer`.]]
+]
+
+[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: its unqualified
+value type, in turn, 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 mutable node]
+ [``
+ Iterator(node)
+ Iterator itr(node)
+ ``]
+ []
+ [
+ Constructs an iterator that will iterate through the specified node
+ and its descendants.
+ ]
+ ]
+ [
+ [Constructor from immutable node]
+ [``
+ Iterator(const_node)
+ Iterator itr(const_node)
+ ``]
+ [The value type of `Iterator::value_type` must be `const`-qualified.]
+ [
+ Constructs an iterator that will iterate through the specified node
+ and its descendants.
+ ]
+ ]
+]
+[endsect]
+
+[section Models]
+
+ * The return type of __make_breadth_first_iterator__.
+ * The return type of __make_pre_order_iterator__.
+ * The return type of __make_post_order_iterator__.
+ * The return type of __make_depth_first_iterator__.
+ * The return type of __make_in_order_forward_iterator__.
+ * The return type of __make_in_order_reverse_iterator__.
+
+[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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,106 @@
+[/=============================================================================
+ Copyright (C) 2011 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::pointer`.]]
+ [[`const_node`][An object of type `Node::const_pointer`.]]
+]
+
+[section:types Associated Types]
+No additional types beyond those defined in the __Forward_Iterator__ concept;
+however, the requirements for the value type are strengthened: it must model
+the __Trivial_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 mutable node]
+ [``
+ Iterator(node)
+ Iterator itr(node)
+ ``]
+ []
+ [Refinement-specific.]
+ [Amortized constant]
+ ]
+ [
+ [Constructor from immutable node]
+ [``
+ Iterator(const_node)
+ Iterator itr(const_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]
+ ]
+]
+
+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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,107 @@
+[/=============================================================================
+ Copyright (C) 2011 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`.]
+ ]
+ [
+ [`data`]
+ [An object of type `Node::traits::data_type const&`.]
+ ]
+]
+
+[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 with data]
+ [`node->add_child(data)`]
+ []
+ [`Node::pointer`]
+ [
+ Creates and returns a tree node to be stored in the range of
+ children of the invoking node. The node returned will store
+ the specified data.
+ ]
+ [Logarithmic]
+ ]
+ [
+ [Child creation]
+ [`node->add_child()`]
+ [
+ `Node::traits::data_type` must model the __Default_Constructible__
+ concept.
+ ]
+ [`Node::pointer`]
+ [
+ Creates and returns a tree node to be stored in the range of
+ children of the invoking node.
+ ]
+ [Logarithmic]
+ ]
+ [
+ [Child copy creation]
+ [`node->add_child_copy(const_node)`]
+ []
+ [`Node::pointer`]
+ [
+ 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]
+
+ * __raw_node__
+ * __raw_node_base__
+ * __simple_node__
+ * __simple_node_base__
+
+[endsect]
+
+[endsect] [/ N-ary Tree Node]
+

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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,46 @@
+[/=============================================================================
+ Copyright (C) 2011 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::child_iterator` must be `Node::pointer`.
+ * The value type of `Node::const_child_iterator` must be
+ `Node::const_pointer`.
+
+[endsect]
+
+[section:expressions Valid Expressions and Semantics]
+None beyond those defined in the __Tree_Node__ concept.
+[endsect]
+
+[section Models]
+
+ * __raw_binary_node__
+ * __raw_binary_node_base__
+ * __raw_node__
+ * __raw_node_base__
+ * __simple_node__
+ * __simple_node_base__
+
+[endsect]
+
+[endsect] [/ Non-Associative 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,214 @@
+[/=============================================================================
+ Copyright (C) 2011 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 three components: a __Base_Tree_Node__
+model that defines the functionality, a [*Tree Node] model that inherits from
+the base type and is better suited for external usage, and a __Type_Generator__
+that returns the __Base_Tree_Node__ model from which adaptor types can also
+inherit.
+[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`.]]
+]
+
+[section:types Associated Types]
+[table
+ [[Name][Expression][Description][Requirements]]
+ [
+ [Data type]
+ [`Node::traits::data_type`]
+ [The type of the object stored in a tree node.]
+ [
+ It must model the __Copy_Constructible__ concept, but need not
+ model the __Assignable__ concept.
+ ]
+ ]
+ [
+ [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.
+ ]
+ ]
+ [
+ [Child iterator type]
+ [`Node::child_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_child_iterator`.
+ ]
+ ]
+ [
+ [Immutable child iterator type]
+ [`Node::const_child_iterator`]
+ [
+ The type of iterator used to iterate through the children of a
+ `Node const` object.
+ ]
+ [
+ It must model the __Input_Iterator__ concept.
+ ]
+ ]
+]
+[endsect]
+
+[section:expressions Valid Expressions and Semantics]
+[table
+ [[Name][Expression][Return Type][Semantics][__Runtime_Complexity__]]
+ [
+ [Data access]
+ [`const_node->get_data()`]
+ [`Node::traits::data_type const&`]
+ [Returns the object stored in the tree node.]
+ [Constant]
+ ]
+ [
+ [Data access]
+ [`node->get_data()`]
+ [`Node::traits::data_type&`]
+ [Returns the object stored in the tree node.]
+ [Constant]
+ ]
+ [
+ [Parent access]
+ [`const_node->get_parent()`]
+ [`Node::const_pointer`]
+ [
+ Returns the parent of the tree node, or a null pointer if the node
+ is the root.
+ ]
+ [Constant]
+ ]
+ [
+ [Parent access]
+ [`node->get_parent()`]
+ [`Node::pointer`]
+ [
+ Returns the parent of the tree node, or a null pointer if the node
+ is the root.
+ ]
+ [Constant]
+ ]
+ [
+ [Children range begin access]
+ [`const_node->get_child_begin()`]
+ [`Node::const_child_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->get_child_begin()`]
+ [`Node::child_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->get_child_end()`]
+ [`Node::const_child_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->get_child_end()`]
+ [`Node::child_iterator`]
+ [
+ Returns an iterator pointing past the end of the range of children
+ of the tree node.
+ ]
+ [Constant]
+ ]
+ [
+ [Children range]
+ [`const_node->get_children()`]
+ [[^_std_pair_<Node::const_child_iterator,Node::const_child_iterator>]]
+ [
+ Returns a pair `p` such that `[p.first, p.second)` is the range of
+ children of the tree node.
+ ]
+ [Constant]
+ ]
+ [
+ [Children range]
+ [`node->get_children()`]
+ [[^_std_pair_<Node::child_iterator,Node::child_iterator>]]
+ [
+ Returns a pair `p` such that `[p.first, p.second)` is the range of
+ children of the tree node.
+ ]
+ [Constant]
+ ]
+ [
+ [Remove all children]
+ [`node->remove_all_children()`]
+ [`void`]
+ [Removes all children from the tree node.]
+ [Linear with respect to the number of children and its descendants]
+ ]
+]
+[endsect] [/ Valid Expressions and Semantics]
+
+[section Models]
+
+ * __raw_binary_node__
+ * __raw_binary_node_base__
+ * __raw_node__
+ * __raw_node_base__
+ * __simple_node__
+ * __simple_node_base__
+ * __raw_associative_node__
+ * __raw_associative_node_base__
+ * __simple_associative_node__
+ * __simple_associative_node_base__
+ * __tree_node_with_child_range_access__
+ * __tree_node_with_child_range_access_base__
+ * __tree_node_with_depth__
+ * __tree_node_with_depth_base__
+
+[endsect]
+
+[endsect] [/ Tree Node]
+

Added: sandbox/tree_node/libs/tree_node/doc/concept_type_generator.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concept_type_generator.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,74 @@
+[/=============================================================================
+ Copyright (C) 2011 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:type_generator Type Generator]
+
+[section Description]
+A [*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 [*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]
+
+ * __raw_binary_node_gen__
+ * __raw_node_gen__
+ * __simple_node_gen__
+ * __raw_associative_node_gen__
+ * __simple_associative_node_gen__
+ * __tree_node_with_child_range_access_gen__
+ * __tree_node_with_depth_gen__
+
+[endsect]
+
+[endsect] [/ Type Generator]
+

Added: sandbox/tree_node/libs/tree_node/doc/concepts.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/concepts.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,40 @@
+[/=============================================================================
+ Copyright (C) 2007-2011 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_factory_construct.qbk]
+[include concept_cloneable_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_type_generator.qbk]
+[include concept_iterator.qbk]
+[include concept_full_iterator.qbk]
+[include concept_descendant_iterator.qbk]
+
+[heading Core Concepts]
+
+ * __Tree_Node__
+ * __Base_Tree_Node__
+ * __Factory_Constructible_Tree_Node__
+ * __Cloneable_Tree_Node__
+ * __Associative_Tree_Node__
+ * __Non_Associative_Tree_Node__
+ * __Binary_Tree_Node__
+ * __N_ary_Tree_Node__
+ * __Type_Generator__
+ * __Tree_Node_Iterator__
+ * __Full_Tree_Node_Iterator__
+ * __Tree_Node_Descendant_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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,59 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Chapter&#160;1.&#160;tree_node 0.2</title>
+<link rel="stylesheet" href="boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<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="images/next.png" alt="Next"></a></div>
+<div class="chapter">
+<div class="titlepage"><div>
+<div><h2 class="title">
+<a name="tree_node"></a>Chapter&#160;1.&#160;tree_node 0.2</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 &#169; 2011 Cromwell D. Enage</p></div>
+<div><div class="legalnotice">
+<a name="idp13403232"></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>
+<a name="tree_node.rationale"></a><h3>
+<a name="idp13405408"></a>
+ <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>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: November 01, 2011 at 09:09:17 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="images/next.png" alt="Next"></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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,53 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Concepts</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="prev" href="../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<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="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="concepts/tree_node.html"><img 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>
+<a name="tree_node.concepts.core_concepts"></a><h4>
+<a name="idp14778800"></a>
+ <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/factory_constructible.html" title="Factory-Constructible Tree Node"><span class="bold"><strong>Factory-Constructible Tree Node</strong></span></a>
+ <span class="special">*</span> <a class="link" href="concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable 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/type_generator.html" title="Type Generator"><span class="bold"><strong>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>
+</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 &#169; 2011 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="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="concepts/tree_node.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,467 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Associative Tree Node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="cloneable_tree_node.html" title="Cloneable 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="cloneable_tree_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="non_assoc_tree_node.html"><img 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>
+<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">&amp;</span></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">data</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">data_type</span>
+ <span class="keyword">const</span><span class="special">&amp;</span></code>.
+ </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>
+ One new type is 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></tbody>
+</table></div>
+<p>
+ In addition, 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">child_iterator</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">be</span>
+ std::pair<span class="special">&lt;</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">&amp;,</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span><span class="special">&gt;.</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_child_iterator</span><span class="error">`</span> <span class="identifier">must</span> <span class="identifier">be</span>
+ std::pair<span class="special">&lt;</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">&amp;,</span><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_pointer</span><span class="special">&gt;.</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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-&gt;</span><span class="identifier">add_child</span><span class="special">(</span><span class="identifier">key</span><span class="special">,</span>
+ <span class="identifier">data</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>
+ 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 store the specified data.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-&gt;</span><span class="identifier">add_child</span><span class="special">(</span><span class="identifier">key</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">traits</span><span class="special">::</span><span class="identifier">data_type</span></code> must model the Default Constructible concept.
+ </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>
+ Creates and returns a tree node to be associated with the specified
+ key in the range of children of the invoking node.
+ </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">-&gt;</span><span class="identifier">add_child_copy</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>
+ </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>
+ 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">-&gt;</span><span class="identifier">find_child</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_child_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">-&gt;</span><span class="identifier">get_child_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">-&gt;</span><span class="identifier">find_child</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">child_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">-&gt;</span><span class="identifier">get_child_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">-&gt;</span><span class="identifier">find_children</span><span class="special">(</span><span class="identifier">key</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="literal">std::pair&lt;Node::const_child_iterator,Node::const_child_iterator&gt;</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a pair <code class="computeroutput"><span class="identifier">p</span></code>
+ such that <code class="computeroutput"><span class="special">[</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">second</span><span class="special">)</span></code> is a range of all child nodes
+ associated with the specified key. 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">-&gt;</span><span class="identifier">find_children</span><span class="special">(</span><span class="identifier">key</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ <code class="literal">std::pair&lt;Node::child_iterator,Node::child_iterator&gt;</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a pair <code class="computeroutput"><span class="identifier">p</span></code>
+ such that <code class="computeroutput"><span class="special">[</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">second</span><span class="special">)</span></code> is a range of all child nodes
+ associated with the specified key. 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">-&gt;</span><span class="identifier">remove_children</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">std</span><span class="special">::</span><span class="identifier">size_t</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/raw_associative_node.html" title="raw_associative_node"><code class="computeroutput"><span class="identifier">raw_associative_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_associative_node_base.html" title="raw_associative_node_base"><code class="computeroutput"><span class="identifier">raw_associative_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_associative_node.html" title="simple_associative_node"><code class="computeroutput"><span class="identifier">simple_associative_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_assoc_node_base.html" title="simple_associative_node_base"><code class="computeroutput"><span class="identifier">simple_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 &#169; 2011 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="cloneable_tree_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="non_assoc_tree_node.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,374 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Base Tree Node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="tree_node.html" title="Tree Node">
+<link rel="next" href="factory_constructible.html" title="Factory-Constructible 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="factory_constructible.html"><img 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 both the <a class="link" href="factory_constructible.html" title="Factory-Constructible Tree Node"><span class="bold"><strong>Factory-Constructible Tree Node</strong></span></a> models and
+ 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"><code class="computeroutput"><span class="identifier">tree_node_base</span></code></a><span class="special">,</span> <a class="link" href="../reference/shared_tree_node_base.html" title="shared_tree_node_base"><code class="computeroutput"><span class="identifier">shared_tree_node_base</span></code></a><span class="special">,</span> <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="type_generator.html" title="Type Generator"><span class="bold"><strong>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">Define</span> <span class="identifier">the</span> <span class="identifier">requisite</span> <span class="identifier">constructors</span> <span class="identifier">in</span> <span class="error">`</span><span class="keyword">protected</span><span class="error">`</span> <span class="keyword">or</span> <span class="error">`</span><span class="keyword">public</span><span class="error">`</span> <span class="identifier">scope</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>
+<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">data</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">data_type</span>
+ <span class="keyword">const</span><span class="special">&amp;</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">-&gt;</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">-&gt;</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 from within any <code class="computeroutput"><span class="identifier">Node</span></code> member function.
+ </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>
+ <code class="computeroutput"><span class="identifier">Base</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Default-constructs a <code class="computeroutput"><span class="identifier">Base</span></code>
+ object.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Base</span><span class="special">(</span><span class="identifier">data</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">Base</span></code>
+ object that stores the specified data.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Shallow update
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-&gt;</span><span class="identifier">shallow_update_derived</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 structurally modify
+ only a few nodes, e.g. adding a single child, removing children
+ and their descendants, or simple rotations.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of children plus the number
+ of ancestors.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Deep update
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">base</span><span class="special">-&gt;</span><span class="identifier">deep_update_derived</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 structurally modify
+ all descendants, e.g. cloning.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of descendants plus 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/raw_binary_node_base.html" title="raw_binary_node_base"><code class="computeroutput"><span class="identifier">raw_binary_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_node_base.html" title="raw_node_base"><code class="computeroutput"><span class="identifier">raw_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_node_base.html" title="simple_node_base"><code class="computeroutput"><span class="identifier">simple_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_associative_node_base.html" title="raw_associative_node_base"><code class="computeroutput"><span class="identifier">raw_associative_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_assoc_node_base.html" title="simple_associative_node_base"><code class="computeroutput"><span class="identifier">simple_associative_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_child_range_acc_base.html" title="with_child_range_access_base"><code class="computeroutput"><span class="identifier">with_child_range_access_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_depth_base.html" title="with_depth_base"><code class="computeroutput"><span class="identifier">with_depth_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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="factory_constructible.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,583 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Binary Tree Node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="nary_tree_node.html"><img 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>
+<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>
+<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">data</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">data_type</span>
+ <span class="keyword">const</span><span class="special">&amp;</span></code>.
+ </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> concept.
+ </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> 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>
+ Left child creation with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-&gt;</span><span class="identifier">add_left_child</span><span class="special">(</span><span class="identifier">data</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>
+ Creates and returns a tree node to be stored as the left child
+ of the invoking node. The node returned will store the specified
+ data.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Left child creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-&gt;</span><span class="identifier">add_left_child</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">traits</span><span class="special">::</span><span class="identifier">data_type</span></code> must model the Default Constructible concept.
+ </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>
+ Creates and returns a tree node to be stored as the left child
+ of the invoking 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">-&gt;</span><span class="identifier">add_left_child_copy</span><span class="special">(</span><span class="identifier">const_node</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>
+ 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>
+ </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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-&gt;</span><span class="identifier">add_right_child</span><span class="special">(</span><span class="identifier">data</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>
+ Creates and returns a tree node to be stored as the right child
+ of the invoking node. The node returned will store the specified
+ data.
+ </p>
+ </td>
+<td>
+ <p>
+ Amortized constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Right child creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-&gt;</span><span class="identifier">add_right_child</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">traits</span><span class="special">::</span><span class="identifier">data_type</span></code> must model the Default Constructible concept.
+ </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>
+ Creates and returns a tree node to be stored as the right child
+ of the invoking 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">-&gt;</span><span class="identifier">add_right_child_copy</span><span class="special">(</span><span class="identifier">const_node</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>
+ 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>
+ </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">-&gt;</span><span class="identifier">get_left_child</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">-&gt;</span><span class="identifier">get_left_child</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">-&gt;</span><span class="identifier">get_right_child</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">-&gt;</span><span class="identifier">get_right_child</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">-&gt;</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">-&gt;</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">-&gt;</span><span class="identifier">remove_left_child</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">-&gt;</span><span class="identifier">remove_right_child</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/raw_binary_node.html" title="raw_binary_node"><code class="computeroutput"><span class="identifier">raw_binary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_binary_node_base.html" title="raw_binary_node_base"><code class="computeroutput"><span class="identifier">raw_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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="nary_tree_node.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/cloneable_tree_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/cloneable_tree_node.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,163 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Cloneable Tree Node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="factory_constructible.html" title="Factory-Constructible 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="factory_constructible.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="associative_tree_node.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.cloneable_tree_node"></a><a class="link" href="cloneable_tree_node.html" title="Cloneable Tree Node">Cloneable Tree
+ Node</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.cloneable_tree_node.description"></a><a class="link" href="cloneable_tree_node.html#tree_node.concepts.cloneable_tree_node.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Models of this concept provide a simple, uniform deep-copying interface.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.cloneable_tree_node.refinement_of"></a><a class="link" href="cloneable_tree_node.html#tree_node.concepts.cloneable_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>
+<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>Cloneable Tree Node</strong></span>
+ concept.
+ </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.cloneable_tree_node.types"></a><a class="link" href="cloneable_tree_node.html#tree_node.concepts.cloneable_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.cloneable_tree_node.expressions"></a><a class="link" href="cloneable_tree_node.html#tree_node.concepts.cloneable_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>
+ Clone
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-&gt;</span><span class="identifier">clone</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>
+ Constructs and returns a deep copy of the invoking node.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of descendants
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.cloneable_tree_node.models"></a><a class="link" href="cloneable_tree_node.html#tree_node.concepts.cloneable_tree_node.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/raw_binary_node.html" title="raw_binary_node"><code class="computeroutput"><span class="identifier">raw_binary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_node.html" title="raw_node"><code class="computeroutput"><span class="identifier">raw_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_node.html" title="simple_node"><code class="computeroutput"><span class="identifier">simple_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_associative_node.html" title="raw_associative_node"><code class="computeroutput"><span class="identifier">raw_associative_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_associative_node.html" title="simple_associative_node"><code class="computeroutput"><span class="identifier">simple_associative_node</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 &#169; 2011 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="factory_constructible.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="associative_tree_node.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/factory_constructible.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/factory_constructible.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,234 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Factory-Constructible Tree Node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="base_tree_node.html" title="Base Tree Node">
+<link rel="next" href="cloneable_tree_node.html" title="Cloneable 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="cloneable_tree_node.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.factory_constructible"></a><a class="link" href="factory_constructible.html" title="Factory-Constructible Tree Node">Factory-Constructible
+ Tree Node</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.factory_constructible.description"></a><a class="link" href="factory_constructible.html#tree_node.concepts.factory_constructible.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ Models of this concept allow the <a class="link" href="../reference/factory.html" title="factory"><code class="computeroutput"><span class="identifier">factory</span></code></a> facade to create objects
+ of their instantiated types. In practice, models of this concept must either
+ declare their respective constructors in <code class="computeroutput"><span class="keyword">public</span></code>
+ scope or declare the <a class="link" href="../reference/factory.html" title="factory"><code class="computeroutput"><span class="identifier">factory</span></code></a> to be a <code class="computeroutput"><span class="keyword">friend</span> <span class="keyword">struct</span></code>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.factory_constructible.refinement_of"></a><a class="link" href="factory_constructible.html#tree_node.concepts.factory_constructible.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>
+<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>Factory-Constructible
+ 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></code>.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">data</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">data_type</span>
+ <span class="keyword">const</span><span class="special">&amp;</span></code>.
+ </p></dd>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.factory_constructible.types"></a><a class="link" href="factory_constructible.html#tree_node.concepts.factory_constructible.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.factory_constructible.expressions"></a><a class="link" href="factory_constructible.html#tree_node.concepts.factory_constructible.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>
+ Heap-allocated default construction
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">new</span> <span class="identifier">Node</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">*</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Default-constructs a <code class="computeroutput"><span class="identifier">Node</span></code>
+ object on the heap.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Heap-allocated construction with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">new</span> <span class="identifier">Node</span><span class="special">(</span><span class="identifier">data</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">*</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">Node</span></code>
+ object on the heap that stores the specified data.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer conversion
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span><span class="special">(</span><span class="identifier">node</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>
+ Converts the specified raw pointer. If <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span></code>
+ is the same as <code class="computeroutput"><span class="identifier">Node</span><span class="special">*</span></code>, then the conversion is trivial;
+ however, if the pointer type is a std::tr1::shared_ptr, then the
+ conversion is necessary.
+ </p>
+ </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.factory_constructible.models"></a><a class="link" href="factory_constructible.html#tree_node.concepts.factory_constructible.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/raw_binary_node.html" title="raw_binary_node"><code class="computeroutput"><span class="identifier">raw_binary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_node.html" title="raw_node"><code class="computeroutput"><span class="identifier">raw_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_node.html" title="simple_node"><code class="computeroutput"><span class="identifier">simple_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_associative_node.html" title="raw_associative_node"><code class="computeroutput"><span class="identifier">raw_associative_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_associative_node.html" title="simple_associative_node"><code class="computeroutput"><span class="identifier">simple_associative_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_child_range_access.html" title="with_child_range_access"><code class="computeroutput"><span class="identifier">with_child_range_access</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_depth.html" title="with_depth"><code class="computeroutput"><span class="identifier">with_depth</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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="cloneable_tree_node.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,202 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Full Tree Node Iterator</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="tree_node_desc_iterator.html"><img 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>
+<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>
+ 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><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.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: its unqualified value
+ type, in turn, 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 mutable 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>
+<tr>
+<td>
+ <p>
+ Constructor from immutable 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">const_node</span><span class="special">)</span>
+<span class="identifier">Iterator</span> <span class="identifier">itr</span><span class="special">(</span><span class="identifier">const_node</span><span class="special">)</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ The value type of <code class="computeroutput"><span class="identifier">Iterator</span><span class="special">::</span><span class="identifier">value_type</span></code>
+ must be <code class="computeroutput"><span class="keyword">const</span></code>-qualified.
+ </p>
+ </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> <span class="identifier">The</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <a class="link" href="../reference/breadth_first_iterator.html" title="breadth_first_iterator"><code class="computeroutput"><span class="identifier">make_breadth_first_iterator</span><span class="special">()</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <a class="link" href="../reference/pre_order_iterator.html" title="pre_order_iterator"><code class="computeroutput"><span class="identifier">make_pre_order_iterator</span><span class="special">()</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <a class="link" href="../reference/post_order_iterator.html" title="post_order_iterator"><code class="computeroutput"><span class="identifier">make_post_order_iterator</span><span class="special">()</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <a class="link" href="../reference/depth_first_iterator.html" title="depth_first_iterator"><code class="computeroutput"><span class="identifier">make_depth_first_iterator</span><span class="special">()</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <a class="link" href="../reference/in_order_iterator.html" title="in_order_iterator"><code class="computeroutput"><span class="identifier">make_in_order_forward_iterator</span><span class="special">()</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <a class="link" href="../reference/in_order_iterator.html" title="in_order_iterator"><code class="computeroutput"><span class="identifier">make_in_order_reverse_iterator</span><span class="special">()</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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="tree_node_desc_iterator.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,246 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>N-ary Tree Node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="binary_tree_node.html" title="Binary Tree Node">
+<link rel="next" href="type_generator.html" title="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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="type_generator.html"><img 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>
+<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">data</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">data_type</span>
+ <span class="keyword">const</span><span class="special">&amp;</span></code>.
+ </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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-&gt;</span><span class="identifier">add_child</span><span class="special">(</span><span class="identifier">data</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>
+ Creates and returns a tree node to be stored in the range of
+ children of the invoking node. The node returned will store the
+ specified data.
+ </p>
+ </td>
+<td>
+ <p>
+ Logarithmic
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-&gt;</span><span class="identifier">add_child</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">traits</span><span class="special">::</span><span class="identifier">data_type</span></code> must model the Default Constructible concept.
+ </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>
+ Creates and returns a tree node to be stored in the range of
+ children of the invoking node.
+ </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">-&gt;</span><span class="identifier">add_child_copy</span><span class="special">(</span><span class="identifier">const_node</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>
+ 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/raw_node.html" title="raw_node"><code class="computeroutput"><span class="identifier">raw_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_node_base.html" title="raw_node_base"><code class="computeroutput"><span class="identifier">raw_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_node.html" title="simple_node"><code class="computeroutput"><span class="identifier">simple_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_node_base.html" title="simple_node_base"><code class="computeroutput"><span class="identifier">simple_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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="type_generator.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,91 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Non-Associative Tree Node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="binary_tree_node.html"><img 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">child_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="identifier">pointer</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_child_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="identifier">const_pointer</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/raw_binary_node.html" title="raw_binary_node"><code class="computeroutput"><span class="identifier">raw_binary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_binary_node_base.html" title="raw_binary_node_base"><code class="computeroutput"><span class="identifier">raw_binary_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_node.html" title="raw_node"><code class="computeroutput"><span class="identifier">raw_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_node_base.html" title="raw_node_base"><code class="computeroutput"><span class="identifier">raw_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_node.html" title="simple_node"><code class="computeroutput"><span class="identifier">simple_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_node_base.html" title="simple_node_base"><code class="computeroutput"><span class="identifier">simple_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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="binary_tree_node.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,598 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tree Node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="base_tree_node.html"><img 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 three 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 <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="type_generator.html" title="Type Generator"><span class="bold"><strong>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.
+ </p>
+</div>
+<div class="variablelist">
+<p class="title"><b>Notation</b></p>
+<dl>
+<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>
+</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>
+ 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 the object stored in a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Copy Constructible concept, but
+ need not model the Assignable concept.
+ </p>
+ </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>
+ Child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">child_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_child_iterator</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Immutable child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_child_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.
+ </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.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>
+</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>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-&gt;</span><span class="identifier">get_data</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">traits</span><span class="special">::</span><span class="identifier">data_type</span> <span class="keyword">const</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the object stored in the tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-&gt;</span><span class="identifier">get_data</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">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the object stored in the tree node.
+ </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">-&gt;</span><span class="identifier">get_parent</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 the parent of the tree node, or a null pointer if the
+ node is the root.
+ </p>
+ </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">-&gt;</span><span class="identifier">get_parent</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 the parent of the tree node, or a null pointer if the
+ node is the root.
+ </p>
+ </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">-&gt;</span><span class="identifier">get_child_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_child_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>
+ <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">-&gt;</span><span class="identifier">get_child_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">child_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>
+ <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">-&gt;</span><span class="identifier">get_child_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_child_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>
+ <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">-&gt;</span><span class="identifier">get_child_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">child_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>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_node</span><span class="special">-&gt;</span><span class="identifier">get_children</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">std::pair&lt;Node::const_child_iterator,Node::const_child_iterator&gt;</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a pair <code class="computeroutput"><span class="identifier">p</span></code>
+ such that <code class="computeroutput"><span class="special">[</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">second</span><span class="special">)</span></code> is the range of children of
+ the tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Children range
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-&gt;</span><span class="identifier">get_children</span><span class="special">()</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">std::pair&lt;Node::child_iterator,Node::child_iterator&gt;</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a pair <code class="computeroutput"><span class="identifier">p</span></code>
+ such that <code class="computeroutput"><span class="special">[</span><span class="identifier">p</span><span class="special">.</span><span class="identifier">first</span><span class="special">,</span> <span class="identifier">p</span><span class="special">.</span><span class="identifier">second</span><span class="special">)</span></code> is the range of children of
+ the tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ Constant
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Remove all children
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">node</span><span class="special">-&gt;</span><span class="identifier">remove_all_children</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 from the tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ Linear with respect to the number of children 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.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/raw_binary_node.html" title="raw_binary_node"><code class="computeroutput"><span class="identifier">raw_binary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_binary_node_base.html" title="raw_binary_node_base"><code class="computeroutput"><span class="identifier">raw_binary_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_node.html" title="raw_node"><code class="computeroutput"><span class="identifier">raw_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_node_base.html" title="raw_node_base"><code class="computeroutput"><span class="identifier">raw_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_node.html" title="simple_node"><code class="computeroutput"><span class="identifier">simple_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_node_base.html" title="simple_node_base"><code class="computeroutput"><span class="identifier">simple_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_associative_node.html" title="raw_associative_node"><code class="computeroutput"><span class="identifier">raw_associative_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_associative_node_base.html" title="raw_associative_node_base"><code class="computeroutput"><span class="identifier">raw_associative_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_associative_node.html" title="simple_associative_node"><code class="computeroutput"><span class="identifier">simple_associative_node</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_assoc_node_base.html" title="simple_associative_node_base"><code class="computeroutput"><span class="identifier">simple_associative_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_child_range_access.html" title="with_child_range_access"><code class="computeroutput"><span class="identifier">with_child_range_access</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_child_range_acc_base.html" title="with_child_range_access_base"><code class="computeroutput"><span class="identifier">with_child_range_access_base</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_depth.html" title="with_depth"><code class="computeroutput"><span class="identifier">with_depth</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_depth_base.html" title="with_depth_base"><code class="computeroutput"><span class="identifier">with_depth_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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="base_tree_node.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,204 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tree Node Descendant Iterator</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<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="../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="full_tree_node_iterator.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img 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>
+<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><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.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: its value type, in turn,
+ must model the Forward Iterator concept.
+ </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 mutable 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>
+<tr>
+<td>
+ <p>
+ Constructor from immutable 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">const_node</span><span class="special">)</span>
+<span class="identifier">Iterator</span> <span class="identifier">itr</span><span class="special">(</span><span class="identifier">const_node</span><span class="special">)</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ The value type of <code class="computeroutput"><span class="identifier">Iterator</span></code>
+ must be the value type of <code class="computeroutput"><span class="identifier">Node</span><span class="special">::</span><span class="identifier">const_child_iterator</span></code>.
+ </p>
+ </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> <span class="identifier">The</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <a class="link" href="../reference/breadth_first_iterator.html" title="breadth_first_iterator"><code class="computeroutput"><span class="identifier">make_breadth_first_descendant_iterator</span><span class="special">()</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <a class="link" href="../reference/pre_order_iterator.html" title="pre_order_iterator"><code class="computeroutput"><span class="identifier">make_pre_order_descendant_iterator</span><span class="special">()</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <a class="link" href="../reference/post_order_iterator.html" title="post_order_iterator"><code class="computeroutput"><span class="identifier">make_post_order_descendant_iterator</span><span class="special">()</span></code></a><span class="special">.</span>
+<span class="special">*</span> <span class="identifier">The</span> <span class="keyword">return</span> <span class="identifier">type</span> <span class="identifier">of</span> <a class="link" href="../reference/depth_first_iterator.html" title="depth_first_iterator"><code class="computeroutput"><span class="identifier">make_depth_first_descendant_iterator</span><span class="special">()</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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../reference.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,274 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Tree Node Iterator</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../concepts.html" title="Concepts">
+<link rel="prev" href="type_generator.html" title="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="type_generator.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="full_tree_node_iterator.html"><img 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>
+<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><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.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; however, the requirements
+ for the value type are strengthened: it must model the Trivial 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 mutable 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>
+ Constructor from immutable 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">const_node</span><span class="special">)</span>
+<span class="identifier">Iterator</span> <span class="identifier">itr</span><span class="special">(</span><span class="identifier">const_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>
+</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 &#169; 2011 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="type_generator.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="full_tree_node_iterator.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/type_generator.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/concepts/type_generator.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,151 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Type Generator</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<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="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="nary_tree_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="tree_node_iterator.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.concepts.type_generator"></a><a class="link" href="type_generator.html" title="Type Generator">Type Generator</a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.concepts.type_generator.description"></a><a class="link" href="type_generator.html#tree_node.concepts.type_generator.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ A <span class="bold"><strong>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>
+<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>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.type_generator.expressions"></a><a class="link" href="type_generator.html#tree_node.concepts.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&lt;Generator,Derived,Data&gt;::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&lt;Generator,Derived,Key,Data&gt;::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.type_generator.models"></a><a class="link" href="type_generator.html#tree_node.concepts.type_generator.models" title="Models">Models</a>
+</h4></div></div></div>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="../reference/raw_binary_node_gen.html" title="raw_binary_node_gen"><code class="computeroutput"><span class="identifier">raw_binary_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_node_gen.html" title="raw_node_gen"><code class="computeroutput"><span class="identifier">raw_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_node.html" title="simple_node"><code class="computeroutput"><span class="identifier">simple_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/raw_associative_node_gen.html" title="raw_associative_node_gen"><code class="computeroutput"><span class="identifier">raw_associative_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/simple_assoc_node_gen.html" title="simple_associative_node_gen"><code class="computeroutput"><span class="identifier">simple_associative_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_child_range_acc_gen.html" title="with_child_range_access_gen"><code class="computeroutput"><span class="identifier">with_child_range_access_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="../reference/with_depth_gen.html" title="with_depth_gen"><code class="computeroutput"><span class="identifier">with_depth_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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../concepts.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="tree_node_iterator.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,107 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Reference</title>
+<link rel="stylesheet" href="../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="prev" href="concepts/tree_node_desc_iterator.html" title="Tree Node Descendant Iterator">
+<link rel="next" href="reference/raw_binary_node.html" title="raw_binary_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/tree_node_desc_iterator.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="reference/raw_binary_node.html"><img 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>
+<a name="tree_node.reference.data_structures"></a><h4>
+<a name="idp22772016"></a>
+ <a class="link" href="reference.html#tree_node.reference.data_structures">Data Structures</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/raw_binary_node.html" title="raw_binary_node"><code class="computeroutput"><span class="identifier">raw_binary_node</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/raw_node.html" title="raw_node"><code class="computeroutput"><span class="identifier">raw_node</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/simple_node.html" title="simple_node"><code class="computeroutput"><span class="identifier">simple_node</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/raw_associative_node.html" title="raw_associative_node"><code class="computeroutput"><span class="identifier">raw_associative_node</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/simple_associative_node.html" title="simple_associative_node"><code class="computeroutput"><span class="identifier">simple_associative_node</span></code></a>
+</pre>
+<a name="tree_node.reference.adaptor_types"></a><h4>
+<a name="idp22785584"></a>
+ <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_child_range_access.html" title="with_child_range_access"><code class="computeroutput"><span class="identifier">with_child_range_access</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_depth.html" title="with_depth"><code class="computeroutput"><span class="identifier">with_depth</span></code></a>
+</pre>
+<a name="tree_node.reference.base_types"></a><h4>
+<a name="idp22792640"></a>
+ <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/raw_binary_node_base.html" title="raw_binary_node_base"><code class="computeroutput"><span class="identifier">raw_binary_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/raw_node_base.html" title="raw_node_base"><code class="computeroutput"><span class="identifier">raw_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/simple_node_base.html" title="simple_node_base"><code class="computeroutput"><span class="identifier">simple_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/raw_associative_node_base.html" title="raw_associative_node_base"><code class="computeroutput"><span class="identifier">raw_associative_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/simple_assoc_node_base.html" title="simple_associative_node_base"><code class="computeroutput"><span class="identifier">simple_associative_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_child_range_acc_base.html" title="with_child_range_access_base"><code class="computeroutput"><span class="identifier">with_child_range_access_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_depth_base.html" title="with_depth_base"><code class="computeroutput"><span class="identifier">with_depth_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/tree_node_base.html" title="tree_node_base"><code class="computeroutput"><span class="identifier">tree_node_base</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/shared_tree_node_base.html" title="shared_tree_node_base"><code class="computeroutput"><span class="identifier">shared_tree_node_base</span></code></a>
+</pre>
+<a name="tree_node.reference.type_generators"></a><h4>
+<a name="idp22814992"></a>
+ <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/raw_binary_node_gen.html" title="raw_binary_node_gen"><code class="computeroutput"><span class="identifier">raw_binary_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/raw_node_gen.html" title="raw_node_gen"><code class="computeroutput"><span class="identifier">raw_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/simple_node.html" title="simple_node"><code class="computeroutput"><span class="identifier">simple_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/raw_associative_node_gen.html" title="raw_associative_node_gen"><code class="computeroutput"><span class="identifier">raw_associative_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/simple_assoc_node_gen.html" title="simple_associative_node_gen"><code class="computeroutput"><span class="identifier">simple_associative_node_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_child_range_acc_gen.html" title="with_child_range_access_gen"><code class="computeroutput"><span class="identifier">with_child_range_access_gen</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/with_depth_gen.html" title="with_depth_gen"><code class="computeroutput"><span class="identifier">with_depth_gen</span></code></a>
+</pre>
+<a name="tree_node.reference.iterator_types"></a><h4>
+<a name="idp22832928"></a>
+ <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"><code class="computeroutput"><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"><code class="computeroutput"><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"><code class="computeroutput"><span class="identifier">post_order_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/depth_first_iterator.html" title="depth_first_iterator"><code class="computeroutput"><span class="identifier">depth_first_iterator</span></code></a>
+<span class="special">*</span> <a class="link" href="reference/in_order_iterator.html" title="in_order_iterator"><code class="computeroutput"><span class="identifier">in_order_iterator</span></code></a>
+</pre>
+<a name="tree_node.reference.facades"></a><h4>
+<a name="idp22846496"></a>
+ <a class="link" href="reference.html#tree_node.reference.facades">Facades</a>
+ </h4>
+<pre class="programlisting"><span class="special">*</span> <a class="link" href="reference/factory.html" title="factory"><code class="computeroutput"><span class="identifier">factory</span></code></a>
+</pre>
+<a name="tree_node.reference.enum_types"></a><h4>
+<a name="idp22851344"></a>
+ <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">traversal_state</span></code></a>
+</pre>
+<a name="tree_node.reference.functions"></a><h4>
+<a name="idp22856272"></a>
+ <a class="link" href="reference.html#tree_node.reference.functions">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">dereference_iterator</span><span class="special">()</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 &#169; 2011 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/tree_node_desc_iterator.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="reference/raw_binary_node.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,747 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>breadth_first_iterator</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="shared_tree_node_base.html" title="shared_tree_node_base">
+<link rel="next" href="pre_order_iterator.html" title="pre_order_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="shared_tree_node_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="pre_order_iterator.html"><img 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"><code class="computeroutput"><span class="identifier">breadth_first_iterator</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MimicsChildIterator</span><span class="special">&gt;</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="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span>
+ <span class="identifier">reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span>
+ <span class="identifier">difference_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">forward_iterator_tag</span>
+ <span class="identifier">iterator_category</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">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="identifier">breadth_first_iterator</span><span class="special">(</span>
+ <span class="identifier">breadth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span>
+ <span class="special">);</span>
+
+ <span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">breadth_first_iterator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span>
+
+ <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>
+
+ <span class="keyword">operator</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>
+ If this iterator is a <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>, then it 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>
+<p>
+ If this iterator is a <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>, then it 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_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">&lt;</span>boost/tree_node/breadth_first_iterator.hpp<span class="special">&gt;</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">NodePointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a pointer to a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Trivial Iterator concept, and
+ its value type must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">MimicsChildIterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines whether this <code class="computeroutput"><span class="identifier">breadth_first_iterator</span></code>
+ will iterate only through the descendants of a node or will also
+ include the node in its traversal.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </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="keyword">if</span> <span class="error">`</span><span class="identifier">MimicsChildIterator</span><span class="special">::</span><span class="identifier">value</span><span class="error">`</span> <span class="identifier">is</span> <span class="error">`</span><span class="keyword">false</span><span class="error">`</span>
+<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="keyword">if</span> <span class="error">`</span><span class="identifier">MimicsChildIterator</span><span class="special">::</span><span class="identifier">value</span><span class="error">`</span> <span class="identifier">is</span> <span class="error">`</span><span class="keyword">true</span><span class="error">`</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.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>
+ <code class="computeroutput"><span class="identifier">value_type</span></code>
+ </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>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reference</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Difference type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">difference_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">iterator_category</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">breadth_first_iterator</span><span class="special">();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from im/mutable node
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">breadth_first_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </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>
+<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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+<span class="identifier">breadth_first_iterator</span><span class="special">(</span><span class="identifier">breadth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;);</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>
+ <code class="computeroutput"><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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">breadth_first_iterator</span><span class="special">&amp;</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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">breadth_first_iterator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </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>
+ 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</span>
+ <span class="identifier">breadth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NodePointer</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">&gt;</span>
+ <span class="identifier">make_breadth_first_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</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>
+<tr>
+<td>
+ <p>
+ Descendant 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</span>
+ <span class="identifier">breadth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NodePointer</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">&gt;</span>
+ <span class="identifier">make_breadth_first_descendant_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</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 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">UnaryFunction</span><span class="special">&gt;</span>
+ <span class="keyword">void</span>
+ <span class="identifier">breadth_first_iterate</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">,</span> <span class="identifier">UnaryFunction</span> <span class="identifier">function</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Iterates through the specified node and its descendants in breadth-first
+ fashion, passing each node pointer dereferenced to the specified
+ Unary Function object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Descendant 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">UnaryFunction</span><span class="special">&gt;</span>
+ <span class="keyword">void</span>
+ <span class="identifier">breadth_first_iterate_descendants</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">UnaryFunction</span> <span class="identifier">function</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Iterates through the descendants of the specified node in breadth-first
+ fashion, passing each element dereferenced to the specified
+ Unary Function object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Equality
+ </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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">NP2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI2</span><span class="special">&gt;</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">&lt;</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">&lt;</span><span class="identifier">MCI1</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;,</span><span class="keyword">bool</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">==(</span>
+ <span class="identifier">breadth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP1</span><span class="special">,</span><span class="identifier">MCI1</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">breadth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP2</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the Input Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Inequality
+ </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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">NP2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI2</span><span class="special">&gt;</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">&lt;</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">&lt;</span><span class="identifier">MCI1</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;,</span><span class="keyword">bool</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">!=(</span>
+ <span class="identifier">breadth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP1</span><span class="special">,</span><span class="identifier">MCI1</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">breadth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP2</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the Input Iterator concept.
+ </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 &#169; 2011 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="shared_tree_node_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="pre_order_iterator.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,804 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>depth_first_iterator</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="post_order_iterator.html" title="post_order_iterator">
+<link rel="next" href="in_order_iterator.html" title="in_order_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="post_order_iterator.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="in_order_iterator.html"><img 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"><code class="computeroutput"><span class="identifier">depth_first_iterator</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MimicsChildIterator</span><span class="special">&gt;</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="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span>
+ <span class="identifier">reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span>
+ <span class="identifier">difference_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">forward_iterator_tag</span>
+ <span class="identifier">iterator_category</span><span class="special">;</span>
+
+ <span class="identifier">depth_first_iterator</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">depth_first_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="identifier">depth_first_iterator</span><span class="special">(</span>
+ <span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span>
+ <span class="special">);</span>
+
+ <span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">depth_first_iterator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span>
+
+ <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>
+
+ <span class="keyword">operator</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="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">NP2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI2</span><span class="special">&gt;</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">&lt;</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">&lt;</span><span class="identifier">MCI1</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;,</span><span class="keyword">bool</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">==(</span>
+ <span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP1</span><span class="special">,</span><span class="identifier">MCI1</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP2</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">);</span>
+
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">NP2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI2</span><span class="special">&gt;</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">&lt;</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">&lt;</span><span class="identifier">MCI1</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;,</span><span class="keyword">bool</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">!=(</span>
+ <span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP1</span><span class="special">,</span><span class="identifier">MCI1</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP2</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">);</span>
+
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</span>
+ <span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NodePointer</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">&gt;</span>
+ <span class="identifier">make_depth_first_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">);</span>
+
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</span>
+ <span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NodePointer</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">&gt;</span>
+ <span class="identifier">make_depth_first_descendant_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">);</span>
+
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BinaryFunction</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">depth_first_iterate</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">,</span> <span class="identifier">BinaryFunction</span> <span class="identifier">function</span><span class="special">);</span>
+
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">BinaryFunction</span><span class="special">&gt;</span>
+ <span class="keyword">void</span>
+ <span class="identifier">depth_first_iterate_descendants</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">BinaryFunction</span> <span class="identifier">function</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>
+ If this iterator is a <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>, then it 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>
+ If this iterator is a <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>, then it 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 is ideal for algorithms that need to perform both preprocessing
+ and postprocessing of a tree node, e.g. the copy constructors of the <a class="link" href="raw_node.html" title="raw_node"><code class="computeroutput"><span class="identifier">raw_node</span></code></a>
+ and <a class="link" href="raw_associative_node.html" title="raw_associative_node"><code class="computeroutput"><span class="identifier">raw_associative_node</span></code></a> implementations.
+ </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">&lt;</span>boost/tree_node/depth_first_iterator.hpp<span class="special">&gt;</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">NodePointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a pointer to a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Trivial Iterator concept, and
+ its value type must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">MimicsChildIterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines whether this <code class="computeroutput"><span class="identifier">depth_first_iterator</span></code>
+ will iterate only through the descendants of a node or will also
+ include the node in its traversal.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </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.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="keyword">if</span> <span class="error">`</span><span class="identifier">MimicsChildIterator</span><span class="special">::</span><span class="identifier">value</span><span class="error">`</span> <span class="identifier">is</span> <span class="error">`</span><span class="keyword">false</span><span class="error">`</span>
+<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="keyword">if</span> <span class="error">`</span><span class="identifier">MimicsChildIterator</span><span class="special">::</span><span class="identifier">value</span><span class="error">`</span> <span class="identifier">is</span> <span class="error">`</span><span class="keyword">true</span><span class="error">`</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.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>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Value type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">value_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a> concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reference</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the Forward Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the Forward Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">difference_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the Forward Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">iterator_category</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the Forward Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">depth_first_iterator</span><span class="special">();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the Default Constructible concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from im/mutable node
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">depth_first_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the <a class="link" href="../concepts/tree_node_iterator.html" title="Tree Node Iterator"><span class="bold"><strong>Tree Node Iterator</strong></span></a> concept.
+ </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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+<span class="identifier">depth_first_iterator</span><span class="special">(</span><span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Constructs a <code class="computeroutput"><span class="identifier">depth_first_iterator</span></code>
+ object that will point to the same element that the specified
+ iterator points to.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the Copy Constructible concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">depth_first_iterator</span><span class="special">&amp;</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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the Assignable concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the Forward Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the Forward Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">depth_first_iterator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the Forward Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in the Forward Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns <code class="computeroutput"><span class="identifier">pre_order_traversal</span></code>
+ if this iterator has not yet examined the children of the current
+ node, <code class="computeroutput"><span class="identifier">post_order_traversal</span></code>
+ if this iterator has examined all of the children of the current
+ node, or <code class="computeroutput"><span class="identifier">no_traversal</span></code>
+ if this iterator is not dereferenceable.
+ </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">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</span>
+<span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NodePointer</span><span class="special">,</span>boost::mpl::false_<span class="special">&gt;</span>
+ <span class="identifier">make_depth_first_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">);</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>
+ Descendant 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">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</span>
+<span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NodePointer</span><span class="special">,</span>boost::mpl::true_<span class="special">&gt;</span>
+ <span class="identifier">make_depth_first_descendant_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">);</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 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">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">UnaryFunction</span><span class="special">&gt;</span>
+<span class="keyword">void</span>
+ <span class="identifier">depth_first_iterate</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">UnaryFunction</span> <span class="identifier">function</span>
+ <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Iterates through the specified node and its descendants in depth-first
+ fashion, passing each node pointer dereferenced to the specified
+ Unary Function object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Descendant 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">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">UnaryFunction</span><span class="special">&gt;</span>
+<span class="keyword">void</span>
+ <span class="identifier">depth_first_iterate_descendants</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">UnaryFunction</span> <span class="identifier">function</span>
+ <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Iterates through the descendants of the specified node in depth-first
+ fashion, passing each element dereferenced to the specified
+ Unary Function object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Equality
+ </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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">NP2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI2</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> enable_if<span class="special">&lt;</span>boost::mpl::equal_to<span class="special">&lt;</span><span class="identifier">MCI1</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;,</span><span class="keyword">bool</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">==(</span>
+ <span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP1</span><span class="special">,</span><span class="identifier">MCI1</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span>
+ <span class="special">,</span> <span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP2</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span>
+ <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the Input Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Inequality
+ </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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">NP2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI2</span><span class="special">&gt;</span>
+<span class="keyword">typename</span> enable_if<span class="special">&lt;</span>boost::mpl::equal_to<span class="special">&lt;</span><span class="identifier">MCI1</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;,</span><span class="keyword">bool</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">!=(</span>
+ <span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP1</span><span class="special">,</span><span class="identifier">MCI1</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span>
+ <span class="special">,</span> <span class="identifier">depth_first_iterator</span><span class="special">&lt;</span><span class="identifier">NP2</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span>
+ <span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the Input Iterator concept.
+ </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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="in_order_iterator.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,74 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>dereference_iterator()</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="traversal_state.html" title="traversal_state">
+<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="traversal_state.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../changelog.html"><img 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.synopsis"></a><a class="link" href="dereference_iterator.html#tree_node.reference.dereference_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">&lt;</span><span class="keyword">typename</span> <span class="identifier">Iterator</span><span class="special">&gt;</span>
+ <span class="identifier">implementation_defined</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.description"></a><a class="link" href="dereference_iterator.html#tree_node.reference.dereference_iterator.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.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">&lt;</span>boost/tree_node/dereference_iterator.hpp<span class="special">&gt;</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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="../changelog.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/factory.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/factory.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,207 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>factory</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="in_order_iterator.html" title="in_order_iterator">
+<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="in_order_iterator.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="traversal_state.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.factory"></a><a class="link" href="factory.html" title="factory"><code class="computeroutput"><span class="identifier">factory</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.factory.synopsis"></a><a class="link" href="factory.html#tree_node.reference.factory.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">&lt;</span><span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">factory</span>
+ <span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span> <span class="identifier">create</span><span class="special">();</span>
+
+ <span class="keyword">static</span> <span class="keyword">typename</span> <span class="identifier">Node</span><span class="special">::</span><span class="identifier">pointer</span>
+ <span class="identifier">create</span><span class="special">(</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">data_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">data</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.factory.description"></a><a class="link" href="factory.html#tree_node.reference.factory.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ This facade type provides a uniform interface for creating <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.factory.definition"></a><a class="link" href="factory.html#tree_node.reference.factory.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/tree_node/factory.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.factory.tpl_param"></a><a class="link" href="factory.html#tree_node.reference.factory.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 object that the <code class="computeroutput"><span class="identifier">factory</span></code>
+ methods will create.
+ </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.
+ </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.factory.members"></a><a class="link" href="factory.html#tree_node.reference.factory.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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Depth access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">static</span> <span class="keyword">typename</span>
+ <span class="identifier">T</span><span class="special">::</span><span class="identifier">pointer</span> <span class="identifier">create</span><span class="special">();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Default-constructs an instance of type <code class="computeroutput"><span class="identifier">T</span></code>
+ on the heap.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Depth 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">static</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">pointer</span>
+ <span class="identifier">create</span><span class="special">(</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span> <span class="identifier">data</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Heap-allocates an instance of type <code class="computeroutput"><span class="identifier">T</span></code>
+ that will store the specified data.
+ </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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="traversal_state.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,767 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>in_order_iterator</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="depth_first_iterator.html" title="depth_first_iterator">
+<link rel="next" href="factory.html" title="factory">
+</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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="factory.html"><img 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"><code class="computeroutput"><span class="identifier">in_order_iterator</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</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="keyword">typedef</span> <span class="identifier">NodePointer</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">*</span> <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span> <span class="identifier">difference_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">bidirectional_iterator_tag</span> <span class="identifier">iterator_category</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">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">,</span> <span class="keyword">bool</span> <span class="identifier">start_left</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">&gt;</span>
+ <span class="identifier">in_order_iterator</span><span class="special">(</span>
+ <span class="identifier">in_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span>
+ <span class="special">);</span>
+
+ <span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">in_order_iterator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span>
+
+ <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>
+
+ <span class="identifier">in_order_iterator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">--();</span>
+
+ <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>
+
+ <span class="keyword">operator</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 <span class="emphasis"><em>backwards</em></span>:
+ </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="../../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">&lt;</span>boost/tree_node/in_order_iterator.hpp<span class="special">&gt;</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">NodePointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a pointer to a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Trivial Iterator concept, and
+ its value type must model the <a class="link" href="../concepts/binary_tree_node.html" title="Binary Tree Node"><span class="bold"><strong>Binary Tree Node</strong></span></a> concept.
+ </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.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> 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.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>
+ <code class="computeroutput"><span class="identifier">value_type</span></code>
+ </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>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reference</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">difference_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">iterator_category</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">in_order_iterator</span><span class="special">();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from im/mutable node
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">in_order_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </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>
+<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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">&gt;</span>
+<span class="identifier">in_order_iterator</span><span class="special">(</span><span class="identifier">in_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;);</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>
+ <code class="computeroutput"><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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">in_order_iterator</span><span class="special">&amp;</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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">in_order_iterator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-decrement operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">in_order_iterator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">--();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Reverse Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-decrement operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Reverse Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</span>
+ <span class="identifier">in_order_iterator</span><span class="special">&lt;</span><span class="identifier">NodePointer</span><span class="special">&gt;</span>
+ <span class="identifier">make_in_order_forward_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</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>
+ 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</span>
+ <span class="identifier">in_order_iterator</span><span class="special">&lt;</span><span class="identifier">NodePointer</span><span class="special">&gt;</span>
+ <span class="identifier">make_in_order_reverse_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</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>
+ Forward 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">UnaryFunction</span><span class="special">&gt;</span>
+ <span class="keyword">void</span>
+ <span class="identifier">in_order_iterate_forward</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">UnaryFunction</span> <span class="identifier">function</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Iterates through the specified node and its descendants in forward
+ in-order fashion, passing each node pointer dereferenced to the
+ specified Unary Function object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Reverse 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">UnaryFunction</span><span class="special">&gt;</span>
+ <span class="keyword">void</span>
+ <span class="identifier">in_order_iterate_reverse</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">UnaryFunction</span> <span class="identifier">function</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Iterates through the specified node and its descendants in reverse
+ in-order fashion, passing each element dereferenced to the specified
+ Unary Function object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Equality
+ </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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">NP2</span><span class="special">&gt;</span>
+ <span class="keyword">bool</span>
+ <span class="keyword">operator</span><span class="special">==(</span>
+ <span class="identifier">in_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP1</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">in_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP2</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the Input Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Inequality
+ </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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">NP2</span><span class="special">&gt;</span>
+ <span class="keyword">bool</span>
+ <span class="keyword">operator</span><span class="special">!=(</span>
+ <span class="identifier">in_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP1</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">in_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP2</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the Input Iterator concept.
+ </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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="factory.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,746 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>post_order_iterator</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="pre_order_iterator.html" title="pre_order_iterator">
+<link rel="next" href="depth_first_iterator.html" title="depth_first_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="pre_order_iterator.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="depth_first_iterator.html"><img 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"><code class="computeroutput"><span class="identifier">post_order_iterator</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MimicsChildIterator</span><span class="special">&gt;</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="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span>
+ <span class="identifier">reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span>
+ <span class="identifier">difference_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">forward_iterator_tag</span>
+ <span class="identifier">iterator_category</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">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="identifier">post_order_iterator</span><span class="special">(</span>
+ <span class="identifier">post_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span>
+ <span class="special">);</span>
+
+ <span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">post_order_iterator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span>
+
+ <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>
+
+ <span class="keyword">operator</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 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>
+ If this iterator is a <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>, then it 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>
+<p>
+ If this iterator is a <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>, then it 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_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">&lt;</span>boost/tree_node/post_order_iterator.hpp<span class="special">&gt;</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">NodePointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a pointer to a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Trivial Iterator concept, and
+ its value type must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">MimicsChildIterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines whether this <code class="computeroutput"><span class="identifier">post_order_iterator</span></code>
+ will iterate only through the descendants of a node or will also
+ include the node in its traversal.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </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.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="keyword">if</span> <span class="error">`</span><span class="identifier">MimicsChildIterator</span><span class="special">::</span><span class="identifier">value</span><span class="error">`</span> <span class="identifier">is</span> <span class="error">`</span><span class="keyword">false</span><span class="error">`</span>
+<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="keyword">if</span> <span class="error">`</span><span class="identifier">MimicsChildIterator</span><span class="special">::</span><span class="identifier">value</span><span class="error">`</span> <span class="identifier">is</span> <span class="error">`</span><span class="keyword">true</span><span class="error">`</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.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>
+ <code class="computeroutput"><span class="identifier">value_type</span></code>
+ </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>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reference</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">difference_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">iterator_category</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">post_order_iterator</span><span class="special">();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from im/mutable node
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">post_order_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </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>
+<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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+<span class="identifier">post_order_iterator</span><span class="special">(</span><span class="identifier">post_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;);</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>
+ <code class="computeroutput"><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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">post_order_iterator</span><span class="special">&amp;</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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">post_order_iterator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </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>
+ 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</span>
+ <span class="identifier">post_order_iterator</span><span class="special">&lt;</span><span class="identifier">NodePointer</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">&gt;</span>
+ <span class="identifier">make_post_order_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</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.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Descendant 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</span>
+ <span class="identifier">post_order_iterator</span><span class="special">&lt;</span><span class="identifier">NodePointer</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">&gt;</span>
+ <span class="identifier">make_post_order_descendant_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</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 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">UnaryFunction</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">post_order_iterate</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">,</span> <span class="identifier">UnaryFunction</span> <span class="identifier">function</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Iterates through the specified node and its descendants in post-order
+ fashion, passing each node pointer dereferenced to the specified
+ Unary Function object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Descendant 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">UnaryFunction</span><span class="special">&gt;</span>
+ <span class="keyword">void</span>
+ <span class="identifier">post_order_iterate_descendants</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">UnaryFunction</span> <span class="identifier">function</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Iterates through the descendants of the specified node in post-order
+ fashion, passing each element dereferenced to the specified
+ Unary Function object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Equality
+ </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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">NP2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI2</span><span class="special">&gt;</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">&lt;</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">&lt;</span><span class="identifier">MCI1</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;,</span><span class="keyword">bool</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">==(</span>
+ <span class="identifier">post_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP1</span><span class="special">,</span><span class="identifier">MCI1</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">post_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP2</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the Input Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Inequality
+ </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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">NP2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI2</span><span class="special">&gt;</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">&lt;</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">&lt;</span><span class="identifier">MCI1</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;,</span><span class="keyword">bool</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">!=(</span>
+ <span class="identifier">post_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP1</span><span class="special">,</span><span class="identifier">MCI1</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">post_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP2</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the Input Iterator concept.
+ </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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="depth_first_iterator.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,890 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>pre_order_iterator</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="breadth_first_iterator.html" title="breadth_first_iterator">
+<link rel="next" href="post_order_iterator.html" title="post_order_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="breadth_first_iterator.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="post_order_iterator.html"><img 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"><code class="computeroutput"><span class="identifier">pre_order_iterator</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MimicsChildIterator</span><span class="special">&gt;</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="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">value_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="identifier">value_type</span> <span class="keyword">const</span><span class="special">&amp;</span>
+ <span class="identifier">reference</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">ptrdiff_t</span>
+ <span class="identifier">difference_type</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">forward_iterator_tag</span>
+ <span class="identifier">iterator_category</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">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">);</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">(</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">other</span>
+ <span class="special">);</span>
+
+ <span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pre_order_iterator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span>
+
+ <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>
+
+ <span class="keyword">operator</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="special">:</span> <span class="identifier">_node_stack</span><span class="special">(</span><span class="identifier">other</span><span class="special">.</span><span class="identifier">_node_stack</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">other</span><span class="special">.</span><span class="identifier">_node_stack</span><span class="special">.</span><span class="identifier">end</span><span class="special">())</span>
+ <span class="special">,</span> <span class="identifier">_itr_stack</span><span class="special">(</span><span class="identifier">other</span><span class="special">.</span><span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">begin</span><span class="special">(),</span> <span class="identifier">other</span><span class="special">.</span><span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">end</span><span class="special">())</span>
+ <span class="special">,</span> <span class="identifier">_current_node</span><span class="special">(</span><span class="identifier">other</span><span class="special">.</span><span class="identifier">_current_node</span><span class="special">)</span>
+ <span class="special">,</span> <span class="identifier">_current_itr</span><span class="special">(</span><span class="identifier">other</span><span class="special">.</span><span class="identifier">_current_itr</span><span class="special">)</span>
+ <span class="special">,</span> <span class="identifier">_state</span><span class="special">(</span><span class="identifier">other</span><span class="special">.</span><span class="identifier">_state</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="keyword">inline</span> <span class="keyword">void</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="identifier">_initialize</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="keyword">this</span><span class="special">);</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="keyword">inline</span> <span class="keyword">void</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="identifier">_initialize</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="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="keyword">inline</span> <span class="keyword">typename</span> <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="identifier">reference</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="identifier">_deref</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">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="special">*</span><span class="identifier">_current_itr</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="keyword">inline</span> <span class="keyword">typename</span> <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="identifier">reference</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="identifier">_deref</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">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">_current_node</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="keyword">inline</span> <span class="keyword">typename</span> <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="identifier">reference</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">_deref</span><span class="special">(</span><span class="identifier">MCI</span><span class="special">());</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="keyword">inline</span> <span class="keyword">typename</span> <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="identifier">pointer</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="identifier">_indirect</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">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">_current_itr</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="keyword">inline</span> <span class="keyword">typename</span> <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="identifier">pointer</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="identifier">_indirect</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">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="special">&amp;</span><span class="identifier">_current_node</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="keyword">inline</span> <span class="keyword">typename</span> <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="identifier">pointer</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">_indirect</span><span class="special">(</span><span class="identifier">MCI</span><span class="special">());</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="keyword">inline</span> <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;&amp;</span> <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="keyword">operator</span><span class="special">++()</span>
+ <span class="special">{</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">back</span><span class="special">()</span> <span class="special">==</span> <span class="identifier">_current_node</span><span class="special">-&gt;</span><span class="identifier">get_child_end</span><span class="special">())</span>
+ <span class="special">{</span>
+ <span class="keyword">bool</span> <span class="identifier">is_post_order</span> <span class="special">=</span> <span class="keyword">true</span><span class="special">;</span>
+
+ <span class="keyword">while</span> <span class="special">(</span><span class="identifier">is_post_order</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span>
+
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">_node_stack</span><span class="special">.</span><span class="identifier">empty</span><span class="special">())</span>
+ <span class="special">{</span>
+ <span class="identifier">_state</span> <span class="special">=</span> <span class="identifier">no_traversal</span><span class="special">;</span>
+
+ <span class="keyword">while</span> <span class="special">(!</span><span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">empty</span><span class="special">())</span>
+ <span class="special">{</span>
+ <span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">is_post_order</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span>
+ <span class="special">{</span>
+ <span class="identifier">_current_node</span> <span class="special">=</span> <span class="identifier">_node_stack</span><span class="special">.</span><span class="identifier">back</span><span class="special">();</span>
+ <span class="identifier">_node_stack</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span>
+
+ <span class="keyword">if</span> <span class="special">(++</span><span class="identifier">_current_itr</span> <span class="special">==</span> <span class="identifier">_current_node</span><span class="special">-&gt;</span><span class="identifier">get_child_end</span><span class="special">())</span>
+ <span class="special">{</span>
+ <span class="identifier">child_iterator</span> <span class="identifier">itr</span> <span class="special">=</span> <span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">back</span><span class="special">();</span>
+
+ <span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span>
+
+ <span class="keyword">if</span> <span class="special">(!</span><span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">empty</span><span class="special">())</span>
+ <span class="special">{</span>
+ <span class="identifier">_current_itr</span> <span class="special">=</span> <span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">back</span><span class="special">();</span>
+ <span class="special">}</span>
+
+ <span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">itr</span><span class="special">);</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span>
+ <span class="special">{</span>
+ <span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">pop_back</span><span class="special">();</span>
+ <span class="identifier">_node_stack</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">_current_node</span><span class="special">);</span>
+ <span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">_current_itr</span><span class="special">);</span>
+ <span class="identifier">_current_node</span> <span class="special">=</span> <span class="identifier">dereference_iterator</span><span class="special">(</span><span class="identifier">_current_itr</span><span class="special">);</span>
+ <span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span>
+ <span class="identifier">_current_node</span><span class="special">-&gt;</span><span class="identifier">get_child_begin</span><span class="special">()</span>
+ <span class="special">);</span>
+ <span class="identifier">is_post_order</span> <span class="special">=</span> <span class="keyword">false</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+ <span class="special">}</span>
+ <span class="keyword">else</span>
+ <span class="special">{</span>
+ <span class="identifier">_node_stack</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">_current_node</span><span class="special">);</span>
+ <span class="identifier">_current_node</span> <span class="special">=</span> <span class="identifier">dereference_iterator</span><span class="special">(</span>
+ <span class="identifier">_current_itr</span> <span class="special">=</span> <span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">back</span><span class="special">()</span>
+ <span class="special">);</span>
+ <span class="identifier">_itr_stack</span><span class="special">.</span><span class="identifier">push_back</span><span class="special">(</span><span class="identifier">_current_node</span><span class="special">-&gt;</span><span class="identifier">get_child_begin</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="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="keyword">inline</span> <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="keyword">operator</span><span class="special">++(</span><span class="keyword">int</span><span class="special">)</span>
+ <span class="special">{</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;</span> <span class="identifier">itr</span><span class="special">(*</span><span class="keyword">this</span><span class="special">);</span>
+ <span class="special">++(*</span><span class="keyword">this</span><span class="special">);</span>
+ <span class="keyword">return</span> <span class="identifier">itr</span><span class="special">;</span>
+ <span class="special">}</span>
+
+ <span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+ <span class="keyword">inline</span> <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;::</span><span class="keyword">operator</span> <span class="identifier">traversal_state</span><span class="special">()</span> <span class="keyword">const</span>
+ <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">_state</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="comment">//-&gt;
+</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 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>
+ If this iterator is a <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>, then it 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>
+<p>
+ If this iterator is a <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>, then it 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_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">&lt;</span>boost/tree_node/pre_order_iterator.hpp<span class="special">&gt;</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">NodePointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type of a pointer to a tree node.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Trivial Iterator concept, and
+ its value type must model the <a class="link" href="../concepts/tree_node.html" title="Tree Node"><span class="bold"><strong>Tree Node</strong></span></a> concept.
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">MimicsChildIterator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines whether this <code class="computeroutput"><span class="identifier">pre_order_iterator</span></code>
+ will iterate only through the descendants of a node or will also
+ include the node in its traversal.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the Boolean Integral Constant concept.
+ </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.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="keyword">if</span> <span class="error">`</span><span class="identifier">MimicsChildIterator</span><span class="special">::</span><span class="identifier">value</span><span class="error">`</span> <span class="identifier">is</span> <span class="error">`</span><span class="keyword">false</span><span class="error">`</span>
+<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="keyword">if</span> <span class="error">`</span><span class="identifier">MimicsChildIterator</span><span class="special">::</span><span class="identifier">value</span><span class="error">`</span> <span class="identifier">is</span> <span class="error">`</span><span class="keyword">true</span><span class="error">`</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.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>
+ <code class="computeroutput"><span class="identifier">value_type</span></code>
+ </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>
+<tr>
+<td>
+ <p>
+ Reference type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reference</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Distance type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">difference_type</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Iterator category
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">iterator_category</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pre_order_iterator</span><span class="special">();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor from im/mutable node
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pre_order_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </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>
+<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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI</span><span class="special">&gt;</span>
+<span class="identifier">pre_order_iterator</span><span class="special">(</span><span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP</span><span class="special">,</span><span class="identifier">MCI</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;);</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>
+ <code class="computeroutput"><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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pre_order_iterator</span><span class="special">&amp;</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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Dereference operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">reference</span> <span class="keyword">operator</span><span class="special">*()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Indirection operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="keyword">operator</span><span class="special">-&gt;()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pre-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pre_order_iterator</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">++();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Post-increment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forward Iterator
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Traversal state conversion operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">operator</span> <a class="link" href="traversal_state.html" title="traversal_state">traversal_state</a><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </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>
+ 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NodePointer</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">&gt;</span>
+ <span class="identifier">make_pre_order_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</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.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Descendant 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">&gt;</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NodePointer</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">&gt;</span>
+ <span class="identifier">make_pre_order_descendant_iterator</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</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 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">UnaryFunction</span><span class="special">&gt;</span>
+ <span class="keyword">void</span> <span class="identifier">pre_order_iterate</span><span class="special">(</span><span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span><span class="special">,</span> <span class="identifier">UnaryFunction</span> <span class="identifier">function</span><span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Iterates through the specified node and its descendants in pre-order
+ fashion, passing each node pointer dereferenced to the specified
+ Unary Function object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Descendant 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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NodePointer</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">UnaryFunction</span><span class="special">&gt;</span>
+ <span class="keyword">void</span>
+ <span class="identifier">pre_order_iterate_descendants</span><span class="special">(</span>
+ <span class="identifier">NodePointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">node</span>
+ <span class="special">,</span> <span class="identifier">UnaryFunction</span> <span class="identifier">function</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Iterates through the descendants of the specified node in pre-order
+ fashion, passing each element dereferenced to the specified
+ Unary Function object.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Equality
+ </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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">NP2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI2</span><span class="special">&gt;</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">&lt;</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">&lt;</span><span class="identifier">MCI1</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;,</span><span class="keyword">bool</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">==(</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP1</span><span class="special">,</span><span class="identifier">MCI1</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP2</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the Input Iterator concept.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Inequality
+ </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">&lt;</span><span class="keyword">typename</span> <span class="identifier">NP1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">NP2</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">MCI2</span><span class="special">&gt;</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">&lt;</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">&lt;</span><span class="identifier">MCI1</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;,</span><span class="keyword">bool</span><span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="keyword">operator</span><span class="special">!=(</span>
+ <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP1</span><span class="special">,</span><span class="identifier">MCI1</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">lhs</span>
+ <span class="special">,</span> <span class="identifier">pre_order_iterator</span><span class="special">&lt;</span><span class="identifier">NP2</span><span class="special">,</span><span class="identifier">MCI2</span><span class="special">&gt;</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">rhs</span>
+ <span class="special">);</span>
+
+<span class="special">}}</span> <span class="comment">// namespace boost::tree_node
+</span></pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined by the Input Iterator concept.
+ </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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="post_order_iterator.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_associative_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_associative_node.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,791 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>raw_associative_node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="simple_node_gen.html" title="simple_node_gen">
+<link rel="next" href="raw_associative_node_base.html" title="raw_associative_node_base">
+</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="simple_node_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_associative_node_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.raw_associative_node"></a><a class="link" href="raw_associative_node.html" title="raw_associative_node"><code class="computeroutput"><span class="identifier">raw_associative_node</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node.synopsis"></a><a class="link" href="raw_associative_node.html#tree_node.reference.raw_associative_node.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">&lt;</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">AssociativeContainerSelector</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">raw_associative_node</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">raw_associative_node_base</span><span class="special">&lt;</span>
+ <span class="identifier">raw_associative_node</span><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">AssociativeContainerSelector</span><span class="special">&gt;</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">AssociativeContainerSelector</span>
+ <span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">raw_associative_node_base</span><span class="special">&lt;</span>
+ <span class="identifier">raw_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">AssociativeContainerSelector</span>
+ <span class="special">&gt;</span>
+ <span class="identifier">super_t</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">super_t</span><span class="special">::</span><span class="identifier">traits</span>
+ <span class="identifier">traits</span><span class="special">;</span>
+ <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>
+ <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>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">child_iterator</span>
+ <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_child_iterator</span>
+ <span class="identifier">const_child_iterator</span><span class="special">;</span>
+
+ <span class="identifier">raw_associative_node</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">raw_associative_node</span><span class="special">(</span><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">&amp;</span> <span class="identifier">data</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.raw_associative_node.description"></a><a class="link" href="raw_associative_node.html#tree_node.reference.raw_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 that does not need
+ to be exposed to external code. Objects of this type can be stored by value,
+ and their children can be accessed by their associated keys for fast lookup.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This component depends on Boost.Utility.ContainerGen, which is not
+ yet a part of Boost. For now, you must perform a Subversion checkout
+ from the SVN Trac.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node.definition"></a><a class="link" href="raw_associative_node.html#tree_node.reference.raw_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">&lt;</span>boost/tree_node/raw_associative_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node.tpl_param"></a><a class="link" href="raw_associative_node.html#tree_node.reference.raw_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">raw_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 object to be stored in a <code class="computeroutput"><span class="identifier">raw_associative_node</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AssociativeContainerSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines the internal map types whose mapped
+ types are the same as the pointer type.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a type for which associative_container_gen
+ returns a valid container.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">mapS</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.raw_associative_node.model_of"></a><a class="link" href="raw_associative_node.html#tree_node.reference.raw_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/factory_constructible.html" title="Factory-Constructible Tree Node"><span class="bold"><strong>Factory-Constructible Tree Node</strong></span></a>
+<span class="special">*</span> <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable 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
+<span class="special">*</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> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node.public_bases"></a><a class="link" href="raw_associative_node.html#tree_node.reference.raw_associative_node.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="raw_associative_node_base.html" title="raw_associative_node_base"><code class="computeroutput"><span class="identifier">raw_associative_node_base</span></code></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node.members"></a><a class="link" href="raw_associative_node.html#tree_node.reference.raw_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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Key type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</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>
+ Data type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</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>
+ <code class="computeroutput"><span class="identifier">pointer</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</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 iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</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 child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</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>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_associative_node</span><span class="special">();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">explicit</span> <span class="identifier">raw_associative_node</span><span class="special">(</span><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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/factory_constructible.html" title="Factory-Constructible Tree Node"><span class="bold"><strong>Factory-Constructible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_associative_node</span><span class="special">(</span><span class="identifier">raw_associative_node</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_associative_node</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">raw_associative_node</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Clone
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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">&amp;</span>
+ <span class="identifier">get_data</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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 access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</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">&amp;,</span> <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">&amp;);</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 creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</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">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child_copy</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">&amp;,</span> <span class="identifier">const_pointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_begin</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_end</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">find_child</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">&amp;)</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">find_child</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">&amp;);</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>
+ <code class="literal">std::pair&lt;const_child_iterator,const_child_iterator&gt;
+ find_children(typename traits::key_type const&amp;) const;</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>
+ <code class="literal">std::pair&lt;child_iterator,child_iterator&gt;
+ find_children(typename traits::key_type const&amp;);</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>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">remove_children</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">&amp;);</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 all children
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_all_children</span><span class="special">();</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>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node.example"></a><a class="link" href="raw_associative_node.html#tree_node.reference.raw_associative_node.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ &lt;example/raw_associative_node.cpp&gt;
+ </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 &#169; 2011 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="simple_node_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_associative_node_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_associative_node_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_associative_node_base.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,851 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>raw_associative_node_base</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="raw_associative_node.html" title="raw_associative_node">
+<link rel="next" href="raw_associative_node_gen.html" title="raw_associative_node_gen">
+</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="raw_associative_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_associative_node_gen.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.raw_associative_node_base"></a><a class="link" href="raw_associative_node_base.html" title="raw_associative_node_base"><code class="computeroutput"><span class="identifier">raw_associative_node_base</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node_base.synopsis"></a><a class="link" href="raw_associative_node_base.html#tree_node.reference.raw_associative_node_base.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">&lt;</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">AssociativeContainerSelector</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">raw_associative_node_base</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <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="special">};</span>
+
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">pointer</span>
+ <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">const_pointer</span>
+ <span class="identifier">const_pointer</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">const_child_iterator</span><span class="special">;</span>
+
+ <span class="identifier">raw_associative_node_base</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">raw_associative_node_base</span><span class="special">(</span>
+ <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">&amp;</span> <span class="identifier">data</span>
+ <span class="special">);</span>
+
+ <span class="identifier">raw_associative_node_base</span><span class="special">(</span><span class="identifier">raw_associative_node_base</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">copy</span><span class="special">);</span>
+
+ <span class="identifier">raw_associative_node_base</span><span class="special">&amp;</span>
+ <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">raw_associative_node_base</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">copy</span><span class="special">);</span>
+
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">raw_associative_node_base</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <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">&amp;</span> <span class="identifier">get_data</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</span>
+
+ <span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span>
+ <span class="identifier">add_child</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">&amp;</span> <span class="identifier">key</span>
+ <span class="special">,</span> <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">&amp;</span> <span class="identifier">data</span>
+ <span class="special">);</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_child</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">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
+
+ <span class="identifier">pointer</span>
+ <span class="identifier">add_child_copy</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">&amp;</span> <span class="identifier">key</span>
+ <span class="special">,</span> <span class="identifier">const_pointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">copy</span>
+ <span class="special">);</span>
+
+ <span class="identifier">const_child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</span>
+
+ <span class="identifier">const_child_iterator</span> <span class="identifier">get_child_end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</span>
+
+ <span class="identifier">const_child_iterator</span>
+ <span class="identifier">find_child</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">&amp;</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">child_iterator</span> <span class="identifier">find_child</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">&amp;</span> <span class="identifier">key</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">&lt;</span><span class="identifier">const_child_iterator</span><span class="special">,</span><span class="identifier">const_child_iterator</span><span class="special">&gt;</span>
+ <span class="identifier">find_children</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">&amp;</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</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">&lt;</span><span class="identifier">child_iterator</span><span class="special">,</span><span class="identifier">child_iterator</span><span class="special">&gt;</span>
+ <span class="identifier">find_children</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">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
+
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">remove_children</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">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
+
+ <span class="keyword">void</span> <span class="identifier">remove_all_children</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.raw_associative_node_base.description"></a><a class="link" href="raw_associative_node_base.html#tree_node.reference.raw_associative_node_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="raw_associative_node.html" title="raw_associative_node"><code class="computeroutput"><span class="identifier">raw_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="raw_associative_node.html" title="raw_associative_node"><code class="computeroutput"><span class="identifier">raw_associative_node</span></code></a> class template
+ is meant to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">raw_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="raw_associative_node_gen.html" title="raw_associative_node_gen"><code class="computeroutput"><span class="identifier">raw_associative_node_gen</span></code></a> <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type
+ Generator</strong></span></a>.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This component depends on Boost.Utility.ContainerGen, which is not
+ yet a part of Boost. For now, you must perform a Subversion checkout
+ from the SVN Trac.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node_base.definition"></a><a class="link" href="raw_associative_node_base.html#tree_node.reference.raw_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">&lt;</span>boost/tree_node/raw_associative_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node_base.tpl_param"></a><a class="link" href="raw_associative_node_base.html#tree_node.reference.raw_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>
+<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>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Key</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Data</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AssociativeContainerSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines the internal map types whose mapped
+ types are the same as the pointer type.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a type for which associative_container_gen
+ returns a valid container.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">mapS</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.raw_associative_node_base.model_of"></a><a class="link" href="raw_associative_node_base.html#tree_node.reference.raw_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/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/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable 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
+<span class="special">*</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> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node_base.public_bases"></a><a class="link" href="raw_associative_node_base.html#tree_node.reference.raw_associative_node_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="tree_node_base.html" title="tree_node_base"><code class="computeroutput"><span class="identifier">tree_node_base</span></code></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node_base.members"></a><a class="link" href="raw_associative_node_base.html#tree_node.reference.raw_associative_node_base.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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Key type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</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>
+ Data type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</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>
+ <code class="computeroutput"><span class="identifier">pointer</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</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 iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</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 child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</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>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_associative_node_base</span><span class="special">();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">explicit</span> <span class="identifier">raw_associative_node_base</span><span class="special">(</span><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">&amp;);</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>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_associative_node_base</span><span class="special">(</span><span class="identifier">raw_associative_node_base</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_associative_node_base</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">raw_associative_node_base</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Clone
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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">&amp;</span>
+ <span class="identifier">get_data</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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 access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</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">&amp;,</span> <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">&amp;);</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 creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</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">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child_copy</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">&amp;,</span> <span class="identifier">const_pointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_begin</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_end</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">find_child</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">&amp;)</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">find_child</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">&amp;);</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>
+ <code class="literal">std::pair&lt;const_child_iterator,const_child_iterator&gt;
+ find_children(typename traits::key_type const&amp;) const;</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>
+ <code class="literal">std::pair&lt;child_iterator,child_iterator&gt;
+ find_children(typename traits::key_type const&amp;);</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>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">remove_children</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">&amp;);</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 all children
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_all_children</span><span class="special">();</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>
+</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 &#169; 2011 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="raw_associative_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_associative_node_gen.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_associative_node_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_associative_node_gen.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,198 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>raw_associative_node_gen</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="raw_associative_node_base.html" title="raw_associative_node_base">
+<link rel="next" href="simple_associative_node.html" title="simple_associative_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="raw_associative_node_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="simple_associative_node.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.raw_associative_node_gen"></a><a class="link" href="raw_associative_node_gen.html" title="raw_associative_node_gen"><code class="computeroutput"><span class="identifier">raw_associative_node_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node_gen.synopsis"></a><a class="link" href="raw_associative_node_gen.html#tree_node.reference.raw_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">&lt;</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">mapS</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">raw_associative_node_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">raw_associative_node_base</span><span class="special">&lt;</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">&gt;</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.raw_associative_node_gen.description"></a><a class="link" href="raw_associative_node_gen.html#tree_node.reference.raw_associative_node_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This component depends on Boost.Utility.ContainerGen, which is not
+ yet a part of Boost. For now, you must perform a Subversion checkout
+ from the SVN Trac.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node_gen.definition"></a><a class="link" href="raw_associative_node_gen.html#tree_node.reference.raw_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">&lt;</span>boost/tree_node/raw_associative_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node_gen.model_of"></a><a class="link" href="raw_associative_node_gen.html#tree_node.reference.raw_associative_node_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type
+ Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node_gen.tpl_param"></a><a class="link" href="raw_associative_node_gen.html#tree_node.reference.raw_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 internal container types of <a class="link" href="raw_associative_node_base.html" title="raw_associative_node_base"><code class="computeroutput"><span class="identifier">raw_associative_node_base</span></code></a>.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a type for which associative_container_gen
+ returns a valid container.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">mapS</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.raw_associative_node_gen.expressions"></a><a class="link" href="raw_associative_node_gen.html#tree_node.reference.raw_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="raw_associative_node_base.html" title="raw_associative_node_base"><code class="computeroutput"><span class="identifier">raw_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 data type.
+ Let <code class="computeroutput"><span class="identifier">Selector</span></code> be a valid
+ <code class="computeroutput"><span class="identifier">raw_associative_node_gen</span></code>
+ template argument.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap3<span class="special">&lt;</span>
+ <span class="identifier">raw_associative_node_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;</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">&gt;::</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="raw_associative_node_base.html" title="raw_associative_node_base">raw_associative_node_base</a>&lt;Derived,Key,Data,Selector&gt;</code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_associative_node_gen.complexity"></a><a class="link" href="raw_associative_node_gen.html#tree_node.reference.raw_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 &#169; 2011 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="raw_associative_node_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="simple_associative_node.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_binary_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_binary_node.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,794 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>raw_binary_node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="../reference.html" title="Reference">
+<link rel="next" href="raw_binary_node_base.html" title="raw_binary_node_base">
+</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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_binary_node_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.raw_binary_node"></a><a class="link" href="raw_binary_node.html" title="raw_binary_node"><code class="computeroutput"><span class="identifier">raw_binary_node</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node.synopsis"></a><a class="link" href="raw_binary_node.html#tree_node.reference.raw_binary_node.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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">raw_binary_node</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">raw_binary_node_base</span><span class="special">&lt;</span><span class="identifier">raw_binary_node</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;,</span><span class="identifier">T</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">raw_binary_node_base</span><span class="special">&lt;</span><span class="identifier">raw_binary_node</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;,</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">super_t</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">super_t</span><span class="special">::</span><span class="identifier">traits</span> <span class="identifier">traits</span><span class="special">;</span>
+ <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>
+ <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>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">child_iterator</span> <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_child_iterator</span> <span class="identifier">const_child_iterator</span><span class="special">;</span>
+
+ <span class="identifier">raw_binary_node</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">raw_binary_node</span><span class="special">(</span><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">&amp;</span> <span class="identifier">data</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.raw_binary_node.description"></a><a class="link" href="raw_binary_node.html#tree_node.reference.raw_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 but do not need to expose it to external
+ code. Objects of this type can be stored by value.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node.definition"></a><a class="link" href="raw_binary_node.html#tree_node.reference.raw_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">&lt;</span>boost/tree_node/raw_binary_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node.tpl_param"></a><a class="link" href="raw_binary_node.html#tree_node.reference.raw_binary_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 object to be stored in a <code class="computeroutput"><span class="identifier">raw_binary_node</span></code>.
+ </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.raw_binary_node.model_of"></a><a class="link" href="raw_binary_node.html#tree_node.reference.raw_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> <a class="link" href="../concepts/factory_constructible.html" title="Factory-Constructible Tree Node"><span class="bold"><strong>Factory-Constructible Tree Node</strong></span></a>
+<span class="special">*</span> <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable 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="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> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node.public_bases"></a><a class="link" href="raw_binary_node.html#tree_node.reference.raw_binary_node.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="raw_binary_node_base.html" title="raw_binary_node_base"><code class="computeroutput"><span class="identifier">raw_binary_node_base</span></code></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node.members"></a><a class="link" href="raw_binary_node.html#tree_node.reference.raw_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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Data type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</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>
+ <code class="computeroutput"><span class="identifier">pointer</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</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 iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</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 child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</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>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_binary_node</span><span class="special">();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">explicit</span> <span class="identifier">raw_binary_node</span><span class="special">(</span><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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/factory_constructible.html" title="Factory-Constructible Tree Node"><span class="bold"><strong>Factory-Constructible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_binary_node</span><span class="special">(</span><span class="identifier">raw_binary_node</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_binary_node</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">raw_binary_node</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Clone
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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">&amp;</span>
+ <span class="identifier">get_data</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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 access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_left_child</span><span class="special">(</span><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">&amp;);</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 creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_left_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_left_child_copy</span><span class="special">(</span><span class="identifier">const_pointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_right_child</span><span class="special">(</span><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">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_right_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_right_child_copy</span><span class="special">(</span><span class="identifier">const_pointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_left_child</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_left_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_right_child</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_right_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_begin</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_end</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">rotate_left</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">rotate_right</span><span class="special">();</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>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_left_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_right_child</span><span class="special">();</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 all children
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_all_children</span><span class="special">();</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>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node.example"></a><a class="link" href="raw_binary_node.html#tree_node.reference.raw_binary_node.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ &lt;example/raw_binary_node.cpp&gt;
+ </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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_binary_node_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_binary_node_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_binary_node_base.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,868 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>raw_binary_node_base</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="raw_binary_node.html" title="raw_binary_node">
+<link rel="next" href="raw_binary_node_gen.html" title="raw_binary_node_gen">
+</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="raw_binary_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_binary_node_gen.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.raw_binary_node_base"></a><a class="link" href="raw_binary_node_base.html" title="raw_binary_node_base"><code class="computeroutput"><span class="identifier">raw_binary_node_base</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node_base.synopsis"></a><a class="link" href="raw_binary_node_base.html#tree_node.reference.raw_binary_node_base.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">&lt;</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">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">raw_binary_node_base</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <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="special">};</span>
+
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">pointer</span>
+ <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">const_pointer</span>
+ <span class="identifier">const_pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">const_child_iterator</span><span class="special">;</span>
+
+ <span class="identifier">raw_binary_node_base</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">raw_binary_node_base</span><span class="special">(</span><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">&amp;</span> <span class="identifier">data</span><span class="special">);</span>
+
+ <span class="identifier">raw_binary_node_base</span><span class="special">(</span><span class="identifier">raw_binary_node_base</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">copy</span><span class="special">);</span>
+
+ <span class="identifier">raw_binary_node_base</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">raw_binary_node_base</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">copy</span><span class="special">);</span>
+
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">raw_binary_node_base</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <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">&amp;</span> <span class="identifier">get_data</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</span>
+
+ <span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_left_child</span><span class="special">(</span><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">&amp;</span> <span class="identifier">data</span><span class="special">);</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_left_child</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_left_child_copy</span><span class="special">(</span><span class="identifier">const_pointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">copy</span><span class="special">);</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_right_child</span><span class="special">(</span><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">&amp;</span> <span class="identifier">data</span><span class="special">);</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_right_child</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_right_child_copy</span><span class="special">(</span><span class="identifier">const_pointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">copy</span><span class="special">);</span>
+
+ <span class="identifier">const_pointer</span> <span class="identifier">get_left_child</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">get_left_child</span><span class="special">();</span>
+
+ <span class="identifier">const_pointer</span> <span class="identifier">get_right_child</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">get_right_child</span><span class="special">();</span>
+
+ <span class="identifier">const_child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</span>
+
+ <span class="identifier">const_child_iterator</span> <span class="identifier">get_child_end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">rotate_left</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">rotate_right</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">remove_left_child</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">remove_right_child</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">remove_all_children</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.raw_binary_node_base.description"></a><a class="link" href="raw_binary_node_base.html#tree_node.reference.raw_binary_node_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="raw_binary_node.html" title="raw_binary_node"><code class="computeroutput"><span class="identifier">raw_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="raw_binary_node.html" title="raw_binary_node"><code class="computeroutput"><span class="identifier">raw_binary_node</span></code></a> class template
+ is meant to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">raw_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="raw_binary_node_gen.html" title="raw_binary_node_gen"><code class="computeroutput"><span class="identifier">raw_binary_node_gen</span></code></a> <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type Generator</strong></span></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node_base.definition"></a><a class="link" href="raw_binary_node_base.html#tree_node.reference.raw_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">&lt;</span>boost/tree_node/raw_binary_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node_base.tpl_param"></a><a class="link" href="raw_binary_node_base.html#tree_node.reference.raw_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>
+<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>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type.
+ </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.raw_binary_node_base.model_of"></a><a class="link" href="raw_binary_node_base.html#tree_node.reference.raw_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> <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable 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="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> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node_base.public_bases"></a><a class="link" href="raw_binary_node_base.html#tree_node.reference.raw_binary_node_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="tree_node_base.html" title="tree_node_base"><code class="computeroutput"><span class="identifier">tree_node_base</span></code></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node_base.members"></a><a class="link" href="raw_binary_node_base.html#tree_node.reference.raw_binary_node_base.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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Data type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</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>
+ <code class="computeroutput"><span class="identifier">pointer</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</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 iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</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 child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</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>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_binary_node_base</span><span class="special">();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">explicit</span> <span class="identifier">raw_binary_node_base</span><span class="special">(</span><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">&amp;);</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>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_binary_node_base</span><span class="special">(</span><span class="identifier">raw_binary_node_base</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_binary_node_base</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">raw_binary_node_base</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Clone
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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">&amp;</span>
+ <span class="identifier">get_data</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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 access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_left_child</span><span class="special">(</span><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">&amp;);</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 creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_left_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_left_child_copy</span><span class="special">(</span><span class="identifier">const_pointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_right_child</span><span class="special">(</span><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">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_right_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_right_child_copy</span><span class="special">(</span><span class="identifier">const_pointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_left_child</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_left_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_right_child</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_right_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_begin</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_end</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">rotate_left</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">rotate_right</span><span class="special">();</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>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_left_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_right_child</span><span class="special">();</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 all children
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_all_children</span><span class="special">();</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>
+</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 &#169; 2011 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="raw_binary_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_binary_node_gen.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_binary_node_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_binary_node_gen.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,117 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>raw_binary_node_gen</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="raw_binary_node_base.html" title="raw_binary_node_base">
+<link rel="next" href="raw_node.html" title="raw_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="raw_binary_node_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_node.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.raw_binary_node_gen"></a><a class="link" href="raw_binary_node_gen.html" title="raw_binary_node_gen"><code class="computeroutput"><span class="identifier">raw_binary_node_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node_gen.synopsis"></a><a class="link" href="raw_binary_node_gen.html#tree_node.reference.raw_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">struct</span> <span class="identifier">raw_binary_node_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">raw_binary_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">&gt;</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.raw_binary_node_gen.description"></a><a class="link" href="raw_binary_node_gen.html#tree_node.reference.raw_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.raw_binary_node_gen.definition"></a><a class="link" href="raw_binary_node_gen.html#tree_node.reference.raw_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">&lt;</span>boost/tree_node/raw_binary_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node_gen.model_of"></a><a class="link" href="raw_binary_node_gen.html#tree_node.reference.raw_binary_node_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type
+ Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node_gen.expressions"></a><a class="link" href="raw_binary_node_gen.html#tree_node.reference.raw_binary_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="raw_binary_node_base.html" title="raw_binary_node_base"><code class="computeroutput"><span class="identifier">raw_binary_node_base</span></code></a>. Let <code class="computeroutput"><span class="identifier">T</span></code> be the data type.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special">&lt;</span><span class="identifier">raw_binary_node_gen</span><span class="special">,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">&gt;::</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="raw_binary_node_base.html" title="raw_binary_node_base">raw_binary_node_base</a>&lt;Derived,T&gt;</code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_binary_node_gen.complexity"></a><a class="link" href="raw_binary_node_gen.html#tree_node.reference.raw_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 &#169; 2011 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="raw_binary_node_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_node.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_node.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,639 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>raw_node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="raw_binary_node_gen.html" title="raw_binary_node_gen">
+<link rel="next" href="raw_node_base.html" title="raw_node_base">
+</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="raw_binary_node_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_node_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.raw_node"></a><a class="link" href="raw_node.html" title="raw_node"><code class="computeroutput"><span class="identifier">raw_node</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node.synopsis"></a><a class="link" href="raw_node.html#tree_node.reference.raw_node.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">&lt;</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="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">raw_node</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">raw_node_base</span><span class="special">&lt;</span><span class="identifier">raw_node</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">&gt;,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">raw_node_base</span><span class="special">&lt;</span><span class="identifier">raw_node</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">&gt;</span> <span class="identifier">super_t</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">super_t</span><span class="special">::</span><span class="identifier">traits</span> <span class="identifier">traits</span><span class="special">;</span>
+ <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>
+ <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>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">child_iterator</span> <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_child_iterator</span> <span class="identifier">const_child_iterator</span><span class="special">;</span>
+
+ <span class="identifier">raw_node</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">raw_node</span><span class="special">(</span><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">&amp;</span> <span class="identifier">data</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.raw_node.description"></a><a class="link" href="raw_node.html#tree_node.reference.raw_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
+ but does not need to be exposed to external code. Objects of this type
+ can be stored by value.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This component depends on Boost.Utility.ContainerGen, which is not
+ yet a part of Boost. For now, you must perform a Subversion checkout
+ from the SVN Trac.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node.definition"></a><a class="link" href="raw_node.html#tree_node.reference.raw_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">&lt;</span>boost/tree_node/raw_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node.tpl_param"></a><a class="link" href="raw_node.html#tree_node.reference.raw_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 object to be stored in a <code class="computeroutput"><span class="identifier">raw_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 internal container types whose value
+ types are the same as the pointer type.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a type for which container_gen returns
+ a valid container.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">dequeS</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.raw_node.model_of"></a><a class="link" href="raw_node.html#tree_node.reference.raw_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/factory_constructible.html" title="Factory-Constructible Tree Node"><span class="bold"><strong>Factory-Constructible Tree Node</strong></span></a>
+<span class="special">*</span> <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable 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="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> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node.public_bases"></a><a class="link" href="raw_node.html#tree_node.reference.raw_node.public_bases" title="Public Base Classes">Public Base
+ Classes</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="raw_node_base.html" title="raw_node_base"><code class="computeroutput"><span class="identifier">raw_node_base</span></code></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node.members"></a><a class="link" href="raw_node.html#tree_node.reference.raw_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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Data type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</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>
+ <code class="computeroutput"><span class="identifier">pointer</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</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 iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</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 child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</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>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_node</span><span class="special">();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">explicit</span> <span class="identifier">raw_node</span><span class="special">(</span><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">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/factory_constructible.html" title="Factory-Constructible Tree Node"><span class="bold"><strong>Factory-Constructible Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_node</span><span class="special">(</span><span class="identifier">raw_node</span> <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_node</span><span class="special">&amp;</span>
+ <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">raw_node</span> <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Clone
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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">&amp;</span>
+ <span class="identifier">get_data</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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 access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</span><span class="special">(</span><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">&amp;);</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 creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child_copy</span><span class="special">(</span><span class="identifier">const_pointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_begin</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_end</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</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>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_all_children</span><span class="special">();</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>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node.example"></a><a class="link" href="raw_node.html#tree_node.reference.raw_node.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ &lt;example/raw_node.cpp&gt;
+ </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 &#169; 2011 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="raw_binary_node_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_node_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_node_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_node_base.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,690 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>raw_node_base</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="raw_node.html" title="raw_node">
+<link rel="next" href="raw_node_gen.html" title="raw_node_gen">
+</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="raw_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_node_gen.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.raw_node_base"></a><a class="link" href="raw_node_base.html" title="raw_node_base"><code class="computeroutput"><span class="identifier">raw_node_base</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node_base.synopsis"></a><a class="link" href="raw_node_base.html#tree_node.reference.raw_node_base.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">&lt;</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">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">raw_node_base</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <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="special">};</span>
+
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">pointer</span>
+ <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">const_pointer</span>
+ <span class="identifier">const_pointer</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">const_child_iterator</span><span class="special">;</span>
+
+ <span class="identifier">raw_node_base</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">raw_node_base</span><span class="special">(</span><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">&amp;</span> <span class="identifier">data</span><span class="special">);</span>
+
+ <span class="identifier">raw_node_base</span><span class="special">(</span><span class="identifier">raw_node_base</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">copy</span><span class="special">);</span>
+
+ <span class="identifier">raw_node_base</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">raw_node_base</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">copy</span><span class="special">);</span>
+
+ <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">raw_node_base</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <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">&amp;</span> <span class="identifier">get_data</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</span>
+
+ <span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_child</span><span class="special">(</span><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">&amp;</span> <span class="identifier">data</span><span class="special">);</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_child</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_child_copy</span><span class="special">(</span><span class="identifier">const_pointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">copy</span><span class="special">);</span>
+
+ <span class="identifier">const_child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</span>
+
+ <span class="identifier">const_child_iterator</span> <span class="identifier">get_child_end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">remove_all_children</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.raw_node_base.description"></a><a class="link" href="raw_node_base.html#tree_node.reference.raw_node_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="raw_node.html" title="raw_node"><code class="computeroutput"><span class="identifier">raw_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="raw_node.html" title="raw_node"><code class="computeroutput"><span class="identifier">raw_node</span></code></a> class template is meant
+ to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">raw_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="raw_node_gen.html" title="raw_node_gen"><code class="computeroutput"><span class="identifier">raw_node_gen</span></code></a> <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type Generator</strong></span></a>.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This component depends on Boost.Utility.ContainerGen, which is not
+ yet a part of Boost. For now, you must perform a Subversion checkout
+ from the SVN Trac.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node_base.definition"></a><a class="link" href="raw_node_base.html#tree_node.reference.raw_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">&lt;</span>boost/tree_node/raw_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node_base.tpl_param"></a><a class="link" href="raw_node_base.html#tree_node.reference.raw_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>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type.
+ </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 internal container types whose value
+ types are the same as the pointer type.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a type for which container_gen returns
+ a valid container.
+ </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.raw_node_base.model_of"></a><a class="link" href="raw_node_base.html#tree_node.reference.raw_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/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/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable 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="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> Assignable
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node_base.public_bases"></a><a class="link" href="raw_node_base.html#tree_node.reference.raw_node_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="tree_node_base.html" title="tree_node_base"><code class="computeroutput"><span class="identifier">tree_node_base</span></code></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node_base.members"></a><a class="link" href="raw_node_base.html#tree_node.reference.raw_node_base.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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Data type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</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>
+ <code class="computeroutput"><span class="identifier">pointer</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</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 iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</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 child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</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>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_node_base</span><span class="special">();</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Default Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Constructor with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">explicit</span> <span class="identifier">raw_node_base</span><span class="special">(</span><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">&amp;);</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>
+ Copy constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_node_base</span><span class="special">(</span><span class="identifier">raw_node_base</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Copy Constructible
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Assignment operator
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">raw_node_base</span><span class="special">&amp;</span> <span class="keyword">operator</span><span class="special">=(</span><span class="identifier">raw_node_base</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Assignable
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Clone
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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">&amp;</span>
+ <span class="identifier">get_data</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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 access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</span><span class="special">(</span><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">&amp;);</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 creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child_copy</span><span class="special">(</span><span class="identifier">const_pointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_begin</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_end</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</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>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_all_children</span><span class="special">();</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>
+</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 &#169; 2011 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="raw_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_node_gen.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_node_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/raw_node_gen.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,188 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>raw_node_gen</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="raw_node_base.html" title="raw_node_base">
+<link rel="next" href="simple_node.html" title="simple_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="raw_node_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="simple_node.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.raw_node_gen"></a><a class="link" href="raw_node_gen.html" title="raw_node_gen"><code class="computeroutput"><span class="identifier">raw_node_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node_gen.synopsis"></a><a class="link" href="raw_node_gen.html#tree_node.reference.raw_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">&lt;</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">dequeS</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">raw_node_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">raw_node_base</span><span class="special">&lt;</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">&gt;</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.raw_node_gen.description"></a><a class="link" href="raw_node_gen.html#tree_node.reference.raw_node_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This component depends on Boost.Utility.ContainerGen, which is not
+ yet a part of Boost. For now, you must perform a Subversion checkout
+ from the SVN Trac.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node_gen.definition"></a><a class="link" href="raw_node_gen.html#tree_node.reference.raw_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">&lt;</span>boost/tree_node/raw_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node_gen.model_of"></a><a class="link" href="raw_node_gen.html#tree_node.reference.raw_node_gen.model_of" title="Model of">Model of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type
+ Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node_gen.tpl_param"></a><a class="link" href="raw_node_gen.html#tree_node.reference.raw_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 internal container types of <a class="link" href="raw_node_base.html" title="raw_node_base"><code class="computeroutput"><span class="identifier">raw_node_base</span></code></a>.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a type for which container_gen returns
+ a valid container.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">dequeS</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.raw_node_gen.expressions"></a><a class="link" href="raw_node_gen.html#tree_node.reference.raw_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="raw_node_base.html" title="raw_node_base"><code class="computeroutput"><span class="identifier">raw_node_base</span></code></a>. Let <code class="computeroutput"><span class="identifier">T</span></code> be the data type. Let <code class="computeroutput"><span class="identifier">Selector</span></code> be a valid <code class="computeroutput"><span class="identifier">raw_node_gen</span></code>
+ template argument.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special">&lt;</span><span class="identifier">raw_node_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">&gt;::</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="raw_node_base.html" title="raw_node_base">raw_node_base</a>&lt;Derived,T,Selector&gt;</code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.raw_node_gen.complexity"></a><a class="link" href="raw_node_gen.html#tree_node.reference.raw_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 &#169; 2011 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="raw_node_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="simple_node.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/shared_tree_node_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/shared_tree_node_base.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,328 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>shared_tree_node_base</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="tree_node_base.html" title="tree_node_base">
+<link rel="next" href="breadth_first_iterator.html" title="breadth_first_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_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="breadth_first_iterator.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.shared_tree_node_base"></a><a class="link" href="shared_tree_node_base.html" title="shared_tree_node_base"><code class="computeroutput"><span class="identifier">shared_tree_node_base</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.shared_tree_node_base.synopsis"></a><a class="link" href="shared_tree_node_base.html#tree_node.reference.shared_tree_node_base.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">&lt;</span><span class="keyword">typename</span> <span class="identifier">Derived</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">shared_tree_node_base</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">const_pointer</span><span class="special">;</span>
+
+ <span class="keyword">protected</span><span class="special">:</span>
+ <span class="keyword">void</span> <span class="identifier">shallow_update_impl</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">deep_update_impl</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">shallow_update_derived</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">deep_update_derived</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.shared_tree_node_base.description"></a><a class="link" href="shared_tree_node_base.html#tree_node.reference.shared_tree_node_base.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.shared_tree_node_base.definition"></a><a class="link" href="shared_tree_node_base.html#tree_node.reference.shared_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">&lt;</span>boost/tree_node/shared_base.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.shared_tree_node_base.tpl_param"></a><a class="link" href="shared_tree_node_base.html#tree_node.reference.shared_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.shared_tree_node_base.public_bases"></a><a class="link" href="shared_tree_node_base.html#tree_node.reference.shared_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.shared_tree_node_base.members"></a><a class="link" href="shared_tree_node_base.html#tree_node.reference.shared_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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span></code>
+ </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>
+ Shallow update implementation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">shallow_update_impl</span><span class="special">();</span></code>
+ </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 hold data
+ that will change if the tree node and its children are structurally
+ modified. Does nothing by default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Deep update implementation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">deep_update_impl</span><span class="special">();</span></code>
+ </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 hold data
+ that will change if the tree node and all its descendants (not
+ just its children) are structurally modified. Does nothing by
+ default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Shallow update
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">shallow_update_derived</span><span class="special">();</span></code>
+ </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
+ and its children are structurally modified. Calls the corresponding
+ implementation method.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Deep update
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">deep_update_derived</span><span class="special">();</span></code>
+ </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
+ and all its descendants (not just its children) are structurally
+ modified. 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 &#169; 2011 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="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="breadth_first_iterator.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_assoc_node_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_assoc_node_base.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,945 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>simple_associative_node_base</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="simple_associative_node.html" title="simple_associative_node">
+<link rel="next" href="simple_assoc_node_gen.html" title="simple_associative_node_gen">
+</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="simple_associative_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="simple_assoc_node_gen.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.simple_assoc_node_base"></a><a class="link" href="simple_assoc_node_base.html" title="simple_associative_node_base"><code class="computeroutput"><span class="identifier">simple_associative_node_base</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_assoc_node_base.synopsis"></a><a class="link" href="simple_assoc_node_base.html#tree_node.reference.simple_assoc_node_base.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">&lt;</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">AssociativeContainerSelector</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">simple_associative_node_base</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">shared_tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">private</span> <span class="identifier">noncopyable</span>
+ <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <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="special">};</span>
+
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">shared_tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">pointer</span>
+ <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">shared_tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">const_pointer</span>
+ <span class="identifier">const_pointer</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">const_child_iterator</span><span class="special">;</span>
+
+
+ <span class="keyword">protected</span><span class="special">:</span>
+ <span class="identifier">simple_associative_node_base</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">simple_associative_node_base</span><span class="special">(</span>
+ <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">&amp;</span> <span class="identifier">data</span>
+ <span class="special">);</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="special">~</span><span class="identifier">simple_associative_node_base</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <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">&amp;</span> <span class="identifier">get_data</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</span>
+
+ <span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span>
+ <span class="identifier">add_child</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">&amp;</span> <span class="identifier">key</span>
+ <span class="special">,</span> <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">&amp;</span> <span class="identifier">data</span>
+ <span class="special">);</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_child</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">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
+
+ <span class="identifier">pointer</span>
+ <span class="identifier">add_child_copy</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">&amp;</span> <span class="identifier">key</span>
+ <span class="special">,</span> <span class="identifier">const_pointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">copy</span>
+ <span class="special">);</span>
+
+ <span class="identifier">const_child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</span>
+
+ <span class="identifier">const_child_iterator</span> <span class="identifier">get_child_end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</span>
+
+ <span class="identifier">const_child_iterator</span>
+ <span class="identifier">find_child</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">&amp;</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">child_iterator</span> <span class="identifier">find_child</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">&amp;</span> <span class="identifier">key</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">&lt;</span><span class="identifier">const_child_iterator</span><span class="special">,</span><span class="identifier">const_child_iterator</span><span class="special">&gt;</span>
+ <span class="identifier">find_children</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">&amp;</span> <span class="identifier">key</span><span class="special">)</span> <span class="keyword">const</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">&lt;</span><span class="identifier">child_iterator</span><span class="special">,</span><span class="identifier">child_iterator</span><span class="special">&gt;</span>
+ <span class="identifier">find_children</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">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
+
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">remove_children</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">&amp;</span> <span class="identifier">key</span><span class="special">);</span>
+
+ <span class="keyword">void</span> <span class="identifier">remove_all_children</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.simple_assoc_node_base.description"></a><a class="link" href="simple_assoc_node_base.html#tree_node.reference.simple_assoc_node_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="simple_associative_node.html" title="simple_associative_node"><code class="computeroutput"><span class="identifier">simple_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="simple_associative_node.html" title="simple_associative_node"><code class="computeroutput"><span class="identifier">simple_associative_node</span></code></a> class
+ template is meant to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">simple_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="simple_assoc_node_gen.html" title="simple_associative_node_gen"><code class="computeroutput"><span class="identifier">simple_associative_node_gen</span></code></a> <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type
+ Generator</strong></span></a>.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This component depends on Boost.Utility.ContainerGen, which is not
+ yet a part of Boost. For now, you must perform a Subversion checkout
+ from the SVN Trac.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_assoc_node_base.definition"></a><a class="link" href="simple_assoc_node_base.html#tree_node.reference.simple_assoc_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">&lt;</span>boost/tree_node/simple_associative_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_assoc_node_base.tpl_param"></a><a class="link" href="simple_assoc_node_base.html#tree_node.reference.simple_assoc_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>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Key</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The key type.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">Data</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AssociativeContainerSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines the internal map types whose mapped
+ types are the same as the pointer type.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a type for which associative_container_gen
+ returns a valid container.
+ </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.simple_assoc_node_base.model_of"></a><a class="link" href="simple_assoc_node_base.html#tree_node.reference.simple_assoc_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/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/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_assoc_node_base.public_bases"></a><a class="link" href="simple_assoc_node_base.html#tree_node.reference.simple_assoc_node_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="shared_tree_node_base.html" title="shared_tree_node_base"><code class="computeroutput"><span class="identifier">shared_tree_node_base</span></code></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_assoc_node_base.members"></a><a class="link" href="simple_assoc_node_base.html#tree_node.reference.simple_assoc_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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Key type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</span></code>
+ </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>
+ Data type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">pointer</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span></code>
+ </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 iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</span></code>
+ </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 child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span></code>
+ </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>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">simple_associative_node_base</span><span class="special">();</span></code>
+ </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>
+ Constructor with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">explicit</span> <span class="identifier">simple_associative_node_base</span><span class="special">(</span><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">&amp;);</span></code>
+ </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>
+ Clone
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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">&amp;</span>
+ <span class="identifier">get_data</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</span></code>
+ </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 access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</span></code>
+ </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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</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">&amp;,</span> <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">&amp;);</span></code>
+ </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 creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</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">&amp;);</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child_copy</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">&amp;,</span> <span class="identifier">const_pointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_begin</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_end</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">find_child</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">&amp;)</span>
+ <span class="keyword">const</span><span class="special">;</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">find_child</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">&amp;);</span></code>
+ </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>
+ <code class="literal">std::pair&lt;const_child_iterator,const_child_iterator&gt;
+ find_children(typename traits::key_type const&amp;) const;</code>
+ </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>
+ <code class="literal">std::pair&lt;child_iterator,child_iterator&gt;
+ find_children(typename traits::key_type const&amp;);</code>
+ </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>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">remove_children</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">&amp;);</span></code>
+ </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 all children
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_all_children</span><span class="special">();</span></code>
+ </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>
+</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 &#169; 2011 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="simple_associative_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="simple_assoc_node_gen.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_assoc_node_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_assoc_node_gen.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,199 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>simple_associative_node_gen</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="simple_assoc_node_base.html" title="simple_associative_node_base">
+<link rel="next" href="with_child_range_access.html" title="with_child_range_access">
+</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="simple_assoc_node_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="with_child_range_access.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.simple_assoc_node_gen"></a><a class="link" href="simple_assoc_node_gen.html" title="simple_associative_node_gen"><code class="computeroutput"><span class="identifier">simple_associative_node_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_assoc_node_gen.synopsis"></a><a class="link" href="simple_assoc_node_gen.html#tree_node.reference.simple_assoc_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">&lt;</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">mapS</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">simple_associative_node_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">simple_associative_node_base</span><span class="special">&lt;</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">&gt;</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.simple_assoc_node_gen.description"></a><a class="link" href="simple_assoc_node_gen.html#tree_node.reference.simple_assoc_node_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This component depends on Boost.Utility.ContainerGen, which is not
+ yet a part of Boost. For now, you must perform a Subversion checkout
+ from the SVN Trac.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_assoc_node_gen.definition"></a><a class="link" href="simple_assoc_node_gen.html#tree_node.reference.simple_assoc_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">&lt;</span>boost/tree_node/simple_associative_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_assoc_node_gen.model_of"></a><a class="link" href="simple_assoc_node_gen.html#tree_node.reference.simple_assoc_node_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type
+ Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_assoc_node_gen.tpl_param"></a><a class="link" href="simple_assoc_node_gen.html#tree_node.reference.simple_assoc_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 internal container types of <a class="link" href="simple_assoc_node_base.html" title="simple_associative_node_base"><code class="computeroutput"><span class="identifier">simple_associative_node_base</span></code></a>.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a type for which associative_container_gen
+ returns a valid container.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">mapS</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.simple_assoc_node_gen.expressions"></a><a class="link" href="simple_assoc_node_gen.html#tree_node.reference.simple_assoc_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="simple_assoc_node_base.html" title="simple_associative_node_base"><code class="computeroutput"><span class="identifier">simple_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 data type.
+ Let <code class="computeroutput"><span class="identifier">Selector</span></code> be a valid
+ <code class="computeroutput"><span class="identifier">simple_associative_node_gen</span></code>
+ template argument.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap3<span class="special">&lt;</span>
+ <span class="identifier">simple_associative_node_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;</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">&gt;::</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="simple_assoc_node_base.html" title="simple_associative_node_base">simple_associative_node_base</a>&lt;Derived,Key,Data,Selector&gt;</code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_assoc_node_gen.complexity"></a><a class="link" href="simple_assoc_node_gen.html#tree_node.reference.simple_assoc_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 &#169; 2011 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="simple_assoc_node_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="with_child_range_access.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_associative_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_associative_node.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,717 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>simple_associative_node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="raw_associative_node_gen.html" title="raw_associative_node_gen">
+<link rel="next" href="simple_assoc_node_base.html" title="simple_associative_node_base">
+</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="raw_associative_node_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="simple_assoc_node_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.simple_associative_node"></a><a class="link" href="simple_associative_node.html" title="simple_associative_node"><code class="computeroutput"><span class="identifier">simple_associative_node</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_associative_node.synopsis"></a><a class="link" href="simple_associative_node.html#tree_node.reference.simple_associative_node.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">&lt;</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">AssociativeContainerSelector</span> <span class="special">=</span> <span class="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">mapS</span>
+ <span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">simple_associative_node</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">simple_associative_node_base</span><span class="special">&lt;</span>
+ <span class="identifier">simple_associative_node</span><span class="special">&lt;</span><span class="identifier">Key</span><span class="special">,</span><span class="identifier">Data</span><span class="special">,</span><span class="identifier">AssociativeContainerSelector</span><span class="special">&gt;</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">AssociativeContainerSelector</span>
+ <span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">simple_associative_node_base</span><span class="special">&lt;</span>
+ <span class="identifier">simple_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">AssociativeContainerSelector</span>
+ <span class="special">&gt;</span>
+ <span class="identifier">super_t</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">super_t</span><span class="special">::</span><span class="identifier">traits</span>
+ <span class="identifier">traits</span><span class="special">;</span>
+ <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>
+ <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>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">child_iterator</span>
+ <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_child_iterator</span>
+ <span class="identifier">const_child_iterator</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.simple_associative_node.description"></a><a class="link" href="simple_associative_node.html#tree_node.reference.simple_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 that must be exposed
+ to external code. Objects of this type must be stored by <code class="computeroutput"><span class="identifier">simple_associative_node</span><span class="special">::</span><span class="identifier">pointer</span></code> and can only be instantiated
+ through the <a class="link" href="factory.html" title="factory"><code class="computeroutput"><span class="identifier">factory</span></code></a>
+ facade or the <code class="computeroutput"><span class="identifier">clone</span><span class="special">()</span></code>
+ method. Their children can be accessed by their associated keys for fast
+ lookup.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This component depends on Boost.Utility.ContainerGen, which is not
+ yet a part of Boost. For now, you must perform a Subversion checkout
+ from the SVN Trac.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_associative_node.definition"></a><a class="link" href="simple_associative_node.html#tree_node.reference.simple_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">&lt;</span>boost/tree_node/simple_associative_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_associative_node.tpl_param"></a><a class="link" href="simple_associative_node.html#tree_node.reference.simple_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">simple_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 object to be stored in a <code class="computeroutput"><span class="identifier">simple_associative_node</span></code>.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">AssociativeContainerSelector</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The type that determines the internal map types whose mapped
+ types are the same as the pointer type.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a type for which associative_container_gen
+ returns a valid container.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">mapS</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.simple_associative_node.model_of"></a><a class="link" href="simple_associative_node.html#tree_node.reference.simple_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/factory_constructible.html" title="Factory-Constructible Tree Node"><span class="bold"><strong>Factory-Constructible Tree Node</strong></span></a>
+<span class="special">*</span> <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_associative_node.public_bases"></a><a class="link" href="simple_associative_node.html#tree_node.reference.simple_associative_node.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="simple_assoc_node_base.html" title="simple_associative_node_base"><code class="computeroutput"><span class="identifier">simple_associative_node_base</span></code></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_associative_node.members"></a><a class="link" href="simple_associative_node.html#tree_node.reference.simple_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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Key type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">key_type</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>
+ Data type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</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>
+ <code class="computeroutput"><span class="identifier">pointer</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</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 iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</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 child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</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>
+ Clone
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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">&amp;</span>
+ <span class="identifier">get_data</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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 access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</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">&amp;,</span> <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">&amp;);</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 creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</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">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child_copy</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">&amp;,</span> <span class="identifier">const_pointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_begin</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_end</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">find_child</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">&amp;)</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">find_child</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">&amp;);</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>
+ <code class="literal">std::pair&lt;const_child_iterator,const_child_iterator&gt;
+ find_children(typename traits::key_type const&amp;) const;</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>
+ <code class="literal">std::pair&lt;child_iterator,child_iterator&gt;
+ find_children(typename traits::key_type const&amp;);</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>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">remove_children</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">&amp;);</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 all children
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_all_children</span><span class="special">();</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>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_associative_node.example"></a><a class="link" href="simple_associative_node.html#tree_node.reference.simple_associative_node.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ &lt;example/simple_associative_node.cpp&gt;
+ </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 &#169; 2011 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="raw_associative_node_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="simple_assoc_node_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_node.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_node.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,568 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>simple_node</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="raw_node_gen.html" title="raw_node_gen">
+<link rel="next" href="simple_node_base.html" title="simple_node_base">
+</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="raw_node_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="simple_node_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.simple_node"></a><a class="link" href="simple_node.html" title="simple_node"><code class="computeroutput"><span class="identifier">simple_node</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node.synopsis"></a><a class="link" href="simple_node.html#tree_node.reference.simple_node.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">&lt;</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="special">::</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">dequeS</span><span class="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">simple_node</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">simple_node_base</span><span class="special">&lt;</span><span class="identifier">simple_node</span><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">simple_node_base</span><span class="special">&lt;</span><span class="identifier">simple_node</span><span class="special">,</span><span class="identifier">T</span><span class="special">,</span><span class="identifier">Selector</span><span class="special">&gt;</span> <span class="identifier">super_t</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">super_t</span><span class="special">::</span><span class="identifier">traits</span> <span class="identifier">traits</span><span class="special">;</span>
+ <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>
+ <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>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">child_iterator</span> <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_child_iterator</span> <span class="identifier">const_child_iterator</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.simple_node.description"></a><a class="link" href="simple_node.html#tree_node.reference.simple_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
+ and must be exposed to external code. Objects of this type must be stored
+ by <code class="computeroutput"><span class="identifier">simple_node</span><span class="special">::</span><span class="identifier">pointer</span></code> and can only be instantiated
+ through the <a class="link" href="factory.html" title="factory"><code class="computeroutput"><span class="identifier">factory</span></code></a>
+ facade or the <code class="computeroutput"><span class="identifier">clone</span><span class="special">()</span></code>
+ method.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This component depends on Boost.Utility.ContainerGen, which is not
+ yet a part of Boost. For now, you must perform a Subversion checkout
+ from the SVN Trac.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node.definition"></a><a class="link" href="simple_node.html#tree_node.reference.simple_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">&lt;</span>boost/tree_node/simple_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node.tpl_param"></a><a class="link" href="simple_node.html#tree_node.reference.simple_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 object to be stored in a <code class="computeroutput"><span class="identifier">simple_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 internal container types whose value
+ types are the same as the pointer type.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a type for which container_gen returns
+ a valid container.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">dequeS</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.simple_node.model_of"></a><a class="link" href="simple_node.html#tree_node.reference.simple_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/factory_constructible.html" title="Factory-Constructible Tree Node"><span class="bold"><strong>Factory-Constructible Tree Node</strong></span></a>
+<span class="special">*</span> <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node.public_bases"></a><a class="link" href="simple_node.html#tree_node.reference.simple_node.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="simple_node_base.html" title="simple_node_base"><code class="computeroutput"><span class="identifier">simple_node_base</span></code></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node.members"></a><a class="link" href="simple_node.html#tree_node.reference.simple_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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Data type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</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>
+ <code class="computeroutput"><span class="identifier">pointer</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</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 iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</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 child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</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>
+ Clone
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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">&amp;</span>
+ <span class="identifier">get_data</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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 access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</span><span class="special">(</span><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">&amp;);</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 creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child_copy</span><span class="special">(</span><span class="identifier">const_pointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_begin</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_end</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</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>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_all_children</span><span class="special">();</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>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node.example"></a><a class="link" href="simple_node.html#tree_node.reference.simple_node.example" title="Example">Example</a>
+</h4></div></div></div>
+<p>
+ &lt;example/simple_node.cpp&gt;
+ </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 &#169; 2011 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="raw_node_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="simple_node_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_node_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_node_base.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,751 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>simple_node_base</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="simple_node.html" title="simple_node">
+<link rel="next" href="simple_node_gen.html" title="simple_node_gen">
+</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="simple_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="simple_node_gen.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.simple_node_base"></a><a class="link" href="simple_node_base.html" title="simple_node_base"><code class="computeroutput"><span class="identifier">simple_node_base</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node_base.synopsis"></a><a class="link" href="simple_node_base.html#tree_node.reference.simple_node_base.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">&lt;</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">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">simple_node_base</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">shared_tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="keyword">private</span> <span class="identifier">noncopyable</span>
+ <span class="special">{</span>
+ <span class="keyword">public</span><span class="special">:</span>
+ <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="special">};</span>
+
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">shared_tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">pointer</span>
+ <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">shared_tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;::</span><span class="identifier">const_pointer</span>
+ <span class="identifier">const_pointer</span><span class="special">;</span>
+
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">const_child_iterator</span><span class="special">;</span>
+
+
+ <span class="keyword">protected</span><span class="special">:</span>
+ <span class="identifier">simple_node_base</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">simple_node_base</span><span class="special">(</span><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">&amp;</span> <span class="identifier">data</span><span class="special">);</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="special">~</span><span class="identifier">simple_node_base</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <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">&amp;</span> <span class="identifier">get_data</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</span>
+
+ <span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_child</span><span class="special">(</span><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">&amp;</span> <span class="identifier">data</span><span class="special">);</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_child</span><span class="special">();</span>
+
+ <span class="identifier">pointer</span> <span class="identifier">add_child_copy</span><span class="special">(</span><span class="identifier">const_pointer</span> <span class="keyword">const</span><span class="special">&amp;</span> <span class="identifier">copy</span><span class="special">);</span>
+
+ <span class="identifier">const_child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</span>
+
+ <span class="identifier">const_child_iterator</span> <span class="identifier">get_child_end</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">remove_all_children</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.simple_node_base.description"></a><a class="link" href="simple_node_base.html#tree_node.reference.simple_node_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="simple_node.html" title="simple_node"><code class="computeroutput"><span class="identifier">simple_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="simple_node.html" title="simple_node"><code class="computeroutput"><span class="identifier">simple_node</span></code></a> class template is
+ meant to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">simple_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="simple_node.html" title="simple_node"><code class="computeroutput"><span class="identifier">simple_node_gen</span></code></a>
+ <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type
+ Generator</strong></span></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node_base.definition"></a><a class="link" href="simple_node_base.html#tree_node.reference.simple_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">&lt;</span>boost/tree_node/simple_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node_base.tpl_param"></a><a class="link" href="simple_node_base.html#tree_node.reference.simple_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>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type.
+ </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 internal container types whose value
+ types are the same as the pointer type.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a type for which container_gen returns
+ a valid container.
+ </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.simple_node_base.model_of"></a><a class="link" href="simple_node_base.html#tree_node.reference.simple_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/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/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node_base.public_bases"></a><a class="link" href="simple_node_base.html#tree_node.reference.simple_node_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="shared_tree_node_base.html" title="shared_tree_node_base"><code class="computeroutput"><span class="identifier">shared_tree_node_base</span></code></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node_base.members"></a><a class="link" href="simple_node_base.html#tree_node.reference.simple_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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Where defined
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Data type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">pointer</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span></code>
+ </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 iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</span></code>
+ </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 child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span></code>
+ </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>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">simple_node_base</span><span class="special">();</span></code>
+ </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>
+ Constructor with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">explicit</span> <span class="identifier">simple_node_base</span><span class="special">(</span><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">&amp;);</span></code>
+ </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>
+ Clone
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">clone</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Data access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><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">&amp;</span>
+ <span class="identifier">get_data</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</span></code>
+ </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 access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">typename</span> <span class="identifier">traits</span><span class="special">::</span><span class="identifier">data_type</span><span class="special">&amp;</span> <span class="identifier">get_data</span><span class="special">();</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span> <span class="identifier">get_parent</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">get_parent</span><span class="special">();</span></code>
+ </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 with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</span><span class="special">(</span><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">&amp;);</span></code>
+ </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 creation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child</span><span class="special">();</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">pointer</span> <span class="identifier">add_child_copy</span><span class="special">(</span><span class="identifier">const_pointer</span>
+ <span class="keyword">const</span><span class="special">&amp;);</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_begin</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_begin</span><span class="special">();</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span>
+ <span class="identifier">get_child_end</span><span class="special">()</span>
+ <span class="keyword">const</span><span class="special">;</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">child_iterator</span> <span class="identifier">get_child_end</span><span class="special">();</span></code>
+ </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>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">remove_all_children</span><span class="special">();</span></code>
+ </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>
+</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 &#169; 2011 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="simple_node.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="simple_node_gen.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_node_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/simple_node_gen.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,188 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>simple_node_gen</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="simple_node_base.html" title="simple_node_base">
+<link rel="next" href="raw_associative_node.html" title="raw_associative_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="simple_node_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_associative_node.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="tree_node.reference.simple_node_gen"></a><a class="link" href="simple_node_gen.html" title="simple_node_gen"><code class="computeroutput"><span class="identifier">simple_node_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node_gen.synopsis"></a><a class="link" href="simple_node_gen.html#tree_node.reference.simple_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">&lt;</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">dequeS</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">simple_node_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">simple_node_base</span><span class="special">&lt;</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">&gt;</span> <span class="identifier">type</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.simple_node_gen.description"></a><a class="link" href="simple_node_gen.html#tree_node.reference.simple_node_gen.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ TODO.
+ </p>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This component depends on Boost.Utility.ContainerGen, which is not
+ yet a part of Boost. For now, you must perform a Subversion checkout
+ from the SVN Trac.
+ </p></td></tr>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node_gen.definition"></a><a class="link" href="simple_node_gen.html#tree_node.reference.simple_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">&lt;</span>boost/tree_node/simple_node.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node_gen.model_of"></a><a class="link" href="simple_node_gen.html#tree_node.reference.simple_node_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type
+ Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node_gen.tpl_param"></a><a class="link" href="simple_node_gen.html#tree_node.reference.simple_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 internal container types of <a class="link" href="simple_node_base.html" title="simple_node_base"><code class="computeroutput"><span class="identifier">simple_node_base</span></code></a>.
+ </p>
+ </td>
+<td>
+ <p>
+ It must be a type for which container_gen returns
+ a valid container.
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">dequeS</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.simple_node_gen.expressions"></a><a class="link" href="simple_node_gen.html#tree_node.reference.simple_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="simple_node_base.html" title="simple_node_base"><code class="computeroutput"><span class="identifier">simple_node_base</span></code></a>. Let <code class="computeroutput"><span class="identifier">T</span></code> be the data type. Let <code class="computeroutput"><span class="identifier">Selector</span></code> be a valid <code class="computeroutput"><span class="identifier">simple_node_gen</span></code>
+ template argument.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special">&lt;</span><span class="identifier">simple_node_gen</span><span class="special">&lt;</span><span class="identifier">Selector</span><span class="special">&gt;,</span><span class="identifier">Derived</span><span class="special">,</span><span class="identifier">T</span><span class="special">&gt;::</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="simple_node_base.html" title="simple_node_base">simple_node_base</a>&lt;Derived,T,Selector&gt;</code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.simple_node_gen.complexity"></a><a class="link" href="simple_node_gen.html#tree_node.reference.simple_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 &#169; 2011 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="simple_node_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="raw_associative_node.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,88 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>traversal_state</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="factory.html" title="factory">
+<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="factory.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="dereference_iterator.html"><img 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"><code class="computeroutput"><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">&lt;</span>boost/tree_node/traversal_state.hpp<span class="special">&gt;</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 &#169; 2011 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="factory.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="dereference_iterator.html"><img 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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,328 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>tree_node_base</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_depth_gen.html" title="with_depth_gen">
+<link rel="next" href="shared_tree_node_base.html" title="shared_tree_node_base">
+</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_depth_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="shared_tree_node_base.html"><img 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"><code class="computeroutput"><span class="identifier">tree_node_base</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.synopsis"></a><a class="link" href="tree_node_base.html#tree_node.reference.tree_node_base.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">&lt;</span><span class="keyword">typename</span> <span class="identifier">Derived</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">tree_node_base</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">pointer</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="comment">// implementation_defined
+</span> <span class="identifier">const_pointer</span><span class="special">;</span>
+
+ <span class="keyword">protected</span><span class="special">:</span>
+ <span class="keyword">void</span> <span class="identifier">shallow_update_impl</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">deep_update_impl</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">shallow_update_derived</span><span class="special">();</span>
+
+ <span class="keyword">void</span> <span class="identifier">deep_update_derived</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.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>
+ TODO.
+ </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">&lt;</span>boost/tree_node/base.hpp<span class="special">&gt;</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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span></code>
+ </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>
+ Shallow update implementation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">shallow_update_impl</span><span class="special">();</span></code>
+ </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 hold data
+ that will change if the tree node and its children are structurally
+ modified. Does nothing by default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Deep update implementation
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">deep_update_impl</span><span class="special">();</span></code>
+ </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 hold data
+ that will change if the tree node and all its descendants (not
+ just its children) are structurally modified. Does nothing by
+ default.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Shallow update
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">shallow_update_derived</span><span class="special">();</span></code>
+ </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
+ and its children are structurally modified. Calls the corresponding
+ implementation method.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Deep update
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">void</span> <span class="identifier">deep_update_derived</span><span class="special">();</span></code>
+ </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
+ and all its descendants (not just its children) are structurally
+ modified. 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 &#169; 2011 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_depth_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="shared_tree_node_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_child_range_acc_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_child_range_acc_base.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,492 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_child_range_access_base</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_child_range_access.html" title="with_child_range_access">
+<link rel="next" href="with_child_range_acc_gen.html" title="with_child_range_access_gen">
+</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_child_range_access.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="with_child_range_acc_gen.html"><img 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_child_range_acc_base"></a><a class="link" href="with_child_range_acc_base.html" title="with_child_range_access_base"><code class="computeroutput"><span class="identifier">with_child_range_access_base</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_child_range_acc_base.synopsis"></a><a class="link" href="with_child_range_acc_base.html#tree_node.reference.with_child_range_acc_base.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">&lt;</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">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">with_child_range_access_base</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">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special">&lt;</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">&lt;</span><span class="identifier">T2</span><span class="special">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</span>
+ <span class="special">&gt;::</span><span class="identifier">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">eval_if</span><span class="special">&lt;</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">&lt;</span><span class="identifier">T2</span><span class="special">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">super_t</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">super_t</span><span class="special">::</span><span class="identifier">traits</span> <span class="identifier">traits</span><span class="special">;</span>
+ <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>
+ <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>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">child_iterator</span> <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_child_iterator</span> <span class="identifier">const_child_iterator</span><span class="special">;</span>
+
+ <span class="keyword">protected</span><span class="special">:</span>
+ <span class="identifier">with_child_range_access_base</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">with_child_range_access_base</span><span class="special">(</span>
+ <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">&amp;</span> <span class="identifier">data</span>
+ <span class="special">);</span>
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">const_child_iterator</span><span class="special">,</span><span class="identifier">const_child_iterator</span><span class="special">&gt;</span>
+ <span class="identifier">get_children</span><span class="special">()</span> <span class="keyword">const</span><span class="special">;</span>
+
+ <span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span><span class="special">&lt;</span><span class="identifier">child_iterator</span><span class="special">,</span><span class="identifier">child_iterator</span><span class="special">&gt;</span>
+ <span class="identifier">get_children</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_child_range_acc_base.description"></a><a class="link" href="with_child_range_acc_base.html#tree_node.reference.with_child_range_acc_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="with_child_range_access.html" title="with_child_range_access"><code class="computeroutput"><span class="identifier">with_child_range_access</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_child_range_access.html" title="with_child_range_access"><code class="computeroutput"><span class="identifier">with_child_range_access</span></code></a> class
+ template is meant to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">with_child_range_access_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_child_range_acc_gen.html" title="with_child_range_access_gen"><code class="computeroutput"><span class="identifier">with_child_range_access_gen</span></code></a> <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type
+ Generator</strong></span></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_child_range_acc_base.definition"></a><a class="link" href="with_child_range_acc_base.html#tree_node.reference.with_child_range_acc_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">&lt;</span>boost/tree_node/with_child_range_access.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_child_range_acc_base.tpl_param"></a><a class="link" href="with_child_range_acc_base.html#tree_node.reference.with_child_range_acc_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>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Metafunction Class from whose
+ return type <code class="computeroutput"><span class="identifier">with_child_range_access_base</span></code>
+ will inherit.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type Generator</strong></span></a> concept.
+ </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 data type otherwise.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type if specified; ignored otherwise.
+ </p>
+ </td>
+<td>
+ </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_child_range_acc_base.model_of"></a><a class="link" href="with_child_range_acc_base.html#tree_node.reference.with_child_range_acc_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_child_range_acc_base.public_bases"></a><a class="link" href="with_child_range_acc_base.html#tree_node.reference.with_child_range_acc_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ <code class="literal">boost::mpl::apply_wrap3&lt;BaseGenerator,Derived,T1,T2&gt;::type</code>
+ if <code class="computeroutput"><span class="identifier">T2</span></code> is specified; otherwise
+ <code class="literal">boost::mpl::apply_wrap2&lt;BaseGenerator,Derived,T1&gt;::type</code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_child_range_acc_base.members"></a><a class="link" href="with_child_range_acc_base.html#tree_node.reference.with_child_range_acc_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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Traits type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">traits</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Same as the traits type of the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span></code>
+ </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>
+ Child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</span></code>
+ </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>
+ Immutable child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span></code>
+ </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>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_child_range_access_base</span><span class="special">();</span></code>
+ </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>
+ Constructor with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">explicit</span> <span class="identifier">with_child_range_access_base</span><span class="special">(</span><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">&amp;);</span></code>
+ </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>
+ Child range
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">std::pair&lt;const_child_iterator,const_child_iterator&gt;
+ get_children() const;</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a Boost.Range over all its child
+ nodes.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child range
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">std::pair&lt;child_iterator,child_iterator&gt;
+ get_children();</code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a Boost.Range over all its child
+ nodes.
+ </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 &#169; 2011 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_child_range_access.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="with_child_range_acc_gen.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_child_range_acc_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_child_range_acc_gen.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,200 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_child_range_access_gen</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_child_range_acc_base.html" title="with_child_range_access_base">
+<link rel="next" href="with_depth.html" title="with_depth">
+</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_child_range_acc_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="with_depth.html"><img 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_child_range_acc_gen"></a><a class="link" href="with_child_range_acc_gen.html" title="with_child_range_access_gen"><code class="computeroutput"><span class="identifier">with_child_range_access_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_child_range_acc_gen.synopsis"></a><a class="link" href="with_child_range_acc_gen.html#tree_node.reference.with_child_range_acc_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">&lt;</span><span class="keyword">typename</span> <span class="identifier">BaseGenerator</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">with_child_range_access_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">with_child_range_access_base</span><span class="special">&lt;</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">&gt;</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_child_range_acc_gen.description"></a><a class="link" href="with_child_range_acc_gen.html#tree_node.reference.with_child_range_acc_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_child_range_acc_gen.definition"></a><a class="link" href="with_child_range_acc_gen.html#tree_node.reference.with_child_range_acc_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">&lt;</span>boost/tree_node/with_child_range_access.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_child_range_acc_gen.model_of"></a><a class="link" href="with_child_range_acc_gen.html#tree_node.reference.with_child_range_acc_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type
+ Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_child_range_acc_gen.tpl_param"></a><a class="link" href="with_child_range_acc_gen.html#tree_node.reference.with_child_range_acc_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">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Metafunction Class from whose
+ return type <a class="link" href="with_child_range_acc_base.html" title="with_child_range_access_base"><code class="computeroutput"><span class="identifier">with_child_range_access_base</span></code></a>
+ will inherit.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type Generator</strong></span></a> concept.
+ </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_child_range_acc_gen.expressions"></a><a class="link" href="with_child_range_acc_gen.html#tree_node.reference.with_child_range_acc_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_child_range_acc_base.html" title="with_child_range_access_base"><code class="computeroutput"><span class="identifier">with_child_range_access_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 data type.
+ Let <code class="computeroutput"><span class="identifier">Selector</span></code> be a valid
+ <code class="computeroutput"><span class="identifier">with_child_range_access_gen</span></code>
+ template argument.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap3<span class="special">&lt;</span>
+ <span class="identifier">with_child_range_access_gen</span><span class="special">&lt;</span><span class="identifier">BaseGenerator</span><span class="special">&gt;</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">&gt;::</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_child_range_acc_base.html" title="with_child_range_access_base">with_child_range_access_base</a>&lt;Derived,BaseGenerator,Key,Data&gt;</code>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special">&lt;</span>
+ <span class="identifier">with_child_range_access_gen</span><span class="special">&lt;</span><span class="identifier">BaseGenerator</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">&gt;::</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_child_range_acc_base.html" title="with_child_range_access_base">with_child_range_access_base</a>&lt;Derived,BaseGenerator,Data&gt;</code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_child_range_acc_gen.complexity"></a><a class="link" href="with_child_range_acc_gen.html#tree_node.reference.with_child_range_acc_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 &#169; 2011 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_child_range_acc_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="with_depth.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_child_range_access.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_child_range_access.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,377 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_child_range_access</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="simple_assoc_node_gen.html" title="simple_associative_node_gen">
+<link rel="next" href="with_child_range_acc_base.html" title="with_child_range_access_base">
+</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="simple_assoc_node_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="with_child_range_acc_base.html"><img 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_child_range_access"></a><a class="link" href="with_child_range_access.html" title="with_child_range_access"><code class="computeroutput"><span class="identifier">with_child_range_access</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_child_range_access.synopsis"></a><a class="link" href="with_child_range_access.html#tree_node.reference.with_child_range_access.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">&lt;</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="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">with_child_range_access</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">with_child_range_access_base</span><span class="special">&lt;</span>
+ <span class="identifier">with_child_range_access</span><span class="special">&lt;</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">&gt;</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">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">with_child_range_access_base</span><span class="special">&lt;</span>
+ <span class="identifier">with_child_range_access</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">&gt;</span>
+ <span class="identifier">super_t</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">super_t</span><span class="special">::</span><span class="identifier">traits</span>
+ <span class="identifier">traits</span><span class="special">;</span>
+ <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>
+ <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>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">child_iterator</span>
+ <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_child_iterator</span>
+ <span class="identifier">const_child_iterator</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_child_range_access.description"></a><a class="link" href="with_child_range_access.html#tree_node.reference.with_child_range_access.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 Boost.Range access to its child nodes as
+ well as the other operations it inherits. Objects of this type must be
+ stored by <code class="computeroutput"><span class="identifier">with_child_range_access</span><span class="special">::</span><span class="identifier">pointer</span></code>
+ and can only be instantiated through the <a class="link" href="factory.html" title="factory"><code class="computeroutput"><span class="identifier">factory</span></code></a> facade or the <code class="computeroutput"><span class="identifier">clone</span><span class="special">()</span></code>
+ method if the base type models the <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a> concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_child_range_access.definition"></a><a class="link" href="with_child_range_access.html#tree_node.reference.with_child_range_access.definition" title="Where defined">Where
+ defined</a>
+</h4></div></div></div>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/tree_node/with_child_range_access.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_child_range_access.tpl_param"></a><a class="link" href="with_child_range_access.html#tree_node.reference.with_child_range_access.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">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Metafunction Class from whose
+ return type <code class="computeroutput"><span class="identifier">with_child_range_access</span></code>
+ will ultimately inherit.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type Generator</strong></span></a> concept.
+ </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 data type otherwise.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type if specified; ignored otherwise.
+ </p>
+ </td>
+<td>
+ </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_child_range_access.model_of"></a><a class="link" href="with_child_range_access.html#tree_node.reference.with_child_range_access.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/factory_constructible.html" title="Factory-Constructible Tree Node"><span class="bold"><strong>Factory-Constructible 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_child_range_access.public_bases"></a><a class="link" href="with_child_range_access.html#tree_node.reference.with_child_range_access.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ __with_child_range_access<span class="underline">base</span>_
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_child_range_access.members"></a><a class="link" href="with_child_range_access.html#tree_node.reference.with_child_range_access.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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Traits type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">traits</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Same as the traits type of the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</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>
+ Child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</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>
+ Immutable child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</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>
+ Child range
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">std::pair&lt;const_child_iterator,const_child_iterator&gt;
+ get_children() const;</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a Boost.Range over all its child
+ nodes.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Child range
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="literal">std::pair&lt;child_iterator,child_iterator&gt;
+ get_children();</code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns a Boost.Range over all its child
+ nodes.
+ </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 &#169; 2011 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="simple_assoc_node_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="with_child_range_acc_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_depth.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_depth.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,346 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_depth</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_child_range_acc_gen.html" title="with_child_range_access_gen">
+<link rel="next" href="with_depth_base.html" title="with_depth_base">
+</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_child_range_acc_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="with_depth_base.html"><img 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_depth"></a><a class="link" href="with_depth.html" title="with_depth"><code class="computeroutput"><span class="identifier">with_depth</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_depth.synopsis"></a><a class="link" href="with_depth.html#tree_node.reference.with_depth.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">&lt;</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="special">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">with_depth</span>
+ <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">with_depth_base</span><span class="special">&lt;</span>
+ <span class="identifier">with_depth</span><span class="special">&lt;</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">&gt;</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">&gt;</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">with_depth_base</span><span class="special">&lt;</span><span class="identifier">with_depth</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">&gt;</span> <span class="identifier">super_t</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">super_t</span><span class="special">::</span><span class="identifier">traits</span> <span class="identifier">traits</span><span class="special">;</span>
+ <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>
+ <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>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">child_iterator</span> <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_child_iterator</span> <span class="identifier">const_child_iterator</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_depth.description"></a><a class="link" href="with_depth.html#tree_node.reference.with_depth.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <span class="bold"><strong>depth</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, 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 depth of the node by updating this information after structural
+ modifications have been performed.
+ </p>
+<p>
+ Objects of this type must be stored by <code class="computeroutput"><span class="identifier">with_depth</span><span class="special">::</span><span class="identifier">pointer</span></code>
+ and can only be instantiated through the <a class="link" href="factory.html" title="factory"><code class="computeroutput"><span class="identifier">factory</span></code></a> facade or the <code class="computeroutput"><span class="identifier">clone</span><span class="special">()</span></code>
+ method if the base type models the <a class="link" href="../concepts/cloneable_tree_node.html" title="Cloneable Tree Node"><span class="bold"><strong>Cloneable Tree Node</strong></span></a> concept.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_depth.definition"></a><a class="link" href="with_depth.html#tree_node.reference.with_depth.definition" title="Where defined">Where defined</a>
+</h4></div></div></div>
+<p>
+
+</p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span>boost/tree_node/with_depth.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_depth.tpl_param"></a><a class="link" href="with_depth.html#tree_node.reference.with_depth.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">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Metafunction Class from whose
+ return type <code class="computeroutput"><span class="identifier">with_depth</span></code>
+ will ultimately inherit.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type Generator</strong></span></a> concept.
+ </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 data type otherwise.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type if specified; ignored otherwise.
+ </p>
+ </td>
+<td>
+ </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_depth.model_of"></a><a class="link" href="with_depth.html#tree_node.reference.with_depth.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/factory_constructible.html" title="Factory-Constructible Tree Node"><span class="bold"><strong>Factory-Constructible 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_depth.public_bases"></a><a class="link" href="with_depth.html#tree_node.reference.with_depth.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ __with_depth<span class="underline">base</span>_
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_depth.members"></a><a class="link" href="with_depth.html#tree_node.reference.with_depth.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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Traits type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">traits</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Same as the traits type of the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</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>
+ <code class="computeroutput"><span class="identifier">const_pointer</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>
+ Child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</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>
+ Immutable child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</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>
+ Depth access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">get_depth</span><span class="special">()</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the depth of this tree 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 &#169; 2011 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_child_range_acc_gen.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="with_depth_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_depth_base.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_depth_base.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,470 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_depth_base</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_depth.html" title="with_depth">
+<link rel="next" href="with_depth_gen.html" title="with_depth_gen">
+</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_depth.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="with_depth_gen.html"><img 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_depth_base"></a><a class="link" href="with_depth_base.html" title="with_depth_base"><code class="computeroutput"><span class="identifier">with_depth_base</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_depth_base.synopsis"></a><a class="link" href="with_depth_base.html#tree_node.reference.with_depth_base.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">&lt;</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">&gt;</span>
+ <span class="keyword">class</span> <span class="identifier">with_depth_base</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">mpl</span><span class="special">::</span><span class="identifier">eval_if</span><span class="special">&lt;</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">&lt;</span><span class="identifier">T2</span><span class="special">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="special">{</span>
+ <span class="keyword">friend</span> <span class="keyword">struct</span> <span class="identifier">tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;;</span>
+ <span class="keyword">friend</span> <span class="keyword">struct</span> <span class="identifier">shared_tree_node_base</span><span class="special">&lt;</span><span class="identifier">Derived</span><span class="special">&gt;;</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">eval_if</span><span class="special">&lt;</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">&lt;</span><span class="identifier">T2</span><span class="special">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</span>
+ <span class="special">&gt;::</span><span class="identifier">type</span>
+ <span class="identifier">super_t</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">super_t</span><span class="special">::</span><span class="identifier">traits</span>
+ <span class="identifier">traits</span><span class="special">;</span>
+ <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>
+ <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>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">child_iterator</span>
+ <span class="identifier">child_iterator</span><span class="special">;</span>
+ <span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">super_t</span><span class="special">::</span><span class="identifier">const_child_iterator</span>
+ <span class="identifier">const_child_iterator</span><span class="special">;</span>
+
+
+ <span class="keyword">protected</span><span class="special">:</span>
+ <span class="identifier">with_depth_base</span><span class="special">();</span>
+
+ <span class="keyword">explicit</span> <span class="identifier">with_depth_base</span><span class="special">(</span><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">&amp;</span> <span class="identifier">data</span><span class="special">);</span>
+
+
+ <span class="keyword">public</span><span class="special">:</span>
+ <span class="special">::</span><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">get_depth</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.with_depth_base.description"></a><a class="link" href="with_depth_base.html#tree_node.reference.with_depth_base.description" title="Description">Description</a>
+</h4></div></div></div>
+<p>
+ The <a class="link" href="with_depth.html" title="with_depth"><code class="computeroutput"><span class="identifier">with_depth</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_depth.html" title="with_depth"><code class="computeroutput"><span class="identifier">with_depth</span></code></a> class template is meant
+ to be used directly as a data structure, while <code class="computeroutput"><span class="identifier">with_depth_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_depth_gen.html" title="with_depth_gen"><code class="computeroutput"><span class="identifier">with_depth_gen</span></code></a> <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type Generator</strong></span></a>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_depth_base.definition"></a><a class="link" href="with_depth_base.html#tree_node.reference.with_depth_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">&lt;</span>boost/tree_node/with_depth.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_depth_base.tpl_param"></a><a class="link" href="with_depth_base.html#tree_node.reference.with_depth_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>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Metafunction Class from whose
+ return type <code class="computeroutput"><span class="identifier">with_depth_base</span></code>
+ will inherit.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type Generator</strong></span></a> concept.
+ </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 data type otherwise.
+ </p>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">T2</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The data type if specified; ignored otherwise.
+ </p>
+ </td>
+<td>
+ </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_depth_base.model_of"></a><a class="link" href="with_depth_base.html#tree_node.reference.with_depth_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_depth_base.public_bases"></a><a class="link" href="with_depth_base.html#tree_node.reference.with_depth_base.public_bases" title="Public Base Classes">Public
+ Base Classes</a>
+</h4></div></div></div>
+<p>
+ <code class="literal">boost::mpl::apply_wrap3&lt;BaseGenerator,Derived,T1,T2&gt;::type</code>
+ if <code class="computeroutput"><span class="identifier">T2</span></code> is specified; otherwise
+ <code class="literal">boost::mpl::apply_wrap2&lt;BaseGenerator,Derived,T1&gt;::type</code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_depth_base.members"></a><a class="link" href="with_depth_base.html#tree_node.reference.with_depth_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>
+ Expression
+ </p>
+ </th>
+<th>
+ <p>
+ Scope
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Traits type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">traits</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Same as the traits type of the return type of <code class="computeroutput"><span class="identifier">BaseGenerator</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Pointer type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">pointer</span></code>
+ </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>
+ <code class="computeroutput"><span class="identifier">const_pointer</span></code>
+ </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>
+ Child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">child_iterator</span></code>
+ </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>
+ Immutable child iterator type
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">const_child_iterator</span></code>
+ </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>
+ Default constructor
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">with_depth_base</span><span class="special">();</span></code>
+ </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>
+ Constructor with data
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">explicit</span> <span class="identifier">with_depth_base</span><span class="special">(</span><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">&amp;);</span></code>
+ </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>
+ Depth access
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">size_t</span> <span class="identifier">get_depth</span><span class="special">()</span> <span class="keyword">const</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="keyword">public</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Returns the depth of this tree 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 &#169; 2011 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_depth.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="with_depth_gen.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

Added: sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_depth_gen.html
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/html/tree_node/reference/with_depth_gen.html 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,196 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>with_depth_gen</title>
+<link rel="stylesheet" href="../../boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../../index.html" title="Chapter&#160;1.&#160;tree_node 0.2">
+<link rel="up" href="../reference.html" title="Reference">
+<link rel="prev" href="with_depth_base.html" title="with_depth_base">
+<link rel="next" href="tree_node_base.html" title="tree_node_base">
+</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_depth_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="tree_node_base.html"><img 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_depth_gen"></a><a class="link" href="with_depth_gen.html" title="with_depth_gen"><code class="computeroutput"><span class="identifier">with_depth_gen</span></code></a>
+</h3></div></div></div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_depth_gen.synopsis"></a><a class="link" href="with_depth_gen.html#tree_node.reference.with_depth_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">&lt;</span><span class="keyword">typename</span> <span class="identifier">BaseGenerator</span><span class="special">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">with_depth_gen</span>
+ <span class="special">{</span>
+ <span class="keyword">template</span> <span class="special">&lt;</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">&gt;</span>
+ <span class="keyword">struct</span> <span class="identifier">apply</span>
+ <span class="special">{</span>
+ <span class="keyword">typedef</span> <span class="identifier">with_depth_base</span><span class="special">&lt;</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">&gt;</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_depth_gen.description"></a><a class="link" href="with_depth_gen.html#tree_node.reference.with_depth_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_depth_gen.definition"></a><a class="link" href="with_depth_gen.html#tree_node.reference.with_depth_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">&lt;</span>boost/tree_node/with_depth.hpp<span class="special">&gt;</span>
+</pre>
+<p>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_depth_gen.model_of"></a><a class="link" href="with_depth_gen.html#tree_node.reference.with_depth_gen.model_of" title="Model of">Model
+ of</a>
+</h4></div></div></div>
+<p>
+ <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type
+ Generator</strong></span></a>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_depth_gen.tpl_param"></a><a class="link" href="with_depth_gen.html#tree_node.reference.with_depth_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">BaseGenerator</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The Metafunction Class from whose
+ return type <a class="link" href="with_depth_base.html" title="with_depth_base"><code class="computeroutput"><span class="identifier">with_depth_base</span></code></a> will
+ inherit.
+ </p>
+ </td>
+<td>
+ <p>
+ It must model the <a class="link" href="../concepts/type_generator.html" title="Type Generator"><span class="bold"><strong>Type Generator</strong></span></a> concept.
+ </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_depth_gen.expressions"></a><a class="link" href="with_depth_gen.html#tree_node.reference.with_depth_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_depth_base.html" title="with_depth_base"><code class="computeroutput"><span class="identifier">with_depth_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 data type. Let <code class="computeroutput"><span class="identifier">Selector</span></code> be a valid <code class="computeroutput"><span class="identifier">with_child_range_access_gen</span></code>
+ template argument.
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap3<span class="special">&lt;</span>
+ <span class="identifier">with_depth_gen</span><span class="special">&lt;</span><span class="identifier">BaseGenerator</span><span class="special">&gt;</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">&gt;::</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_depth_base.html" title="with_depth_base">with_depth_base</a>&lt;Derived,BaseGenerator,Key,Data&gt;</code>
+ </p>
+<p>
+
+</p>
+<pre class="programlisting"><span class="keyword">typedef</span> boost::mpl::apply_wrap2<span class="special">&lt;</span>
+ <span class="identifier">with_depth_gen</span><span class="special">&lt;</span><span class="identifier">BaseGenerator</span><span class="special">&gt;</span>
+ <span class="special">,</span> <span class="identifier">Derived</span>
+ <span class="special">,</span> <span class="identifier">Data</span>
+<span class="special">&gt;::</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_depth_base.html" title="with_depth_base">with_depth_base</a>&lt;Derived,BaseGenerator,Data&gt;</code>
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="tree_node.reference.with_depth_gen.complexity"></a><a class="link" href="with_depth_gen.html#tree_node.reference.with_depth_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 &#169; 2011 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_depth_base.html"><img src="../../images/prev.png" alt="Prev"></a><a accesskey="u" href="../reference.html"><img src="../../images/up.png" alt="Up"></a><a accesskey="h" href="../../index.html"><img src="../../images/home.png" alt="Home"></a><a accesskey="n" href="tree_node_base.html"><img src="../../images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>

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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,224 @@
+[/=============================================================================
+ Copyright (C) 2011 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`]
+
+[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
+``
+
+If this iterator is a __Full_Tree_Node_Iterator__, then it will traverse the
+tree nodes in the following order:
+
+``
+A C B D E F G
+``
+
+If this iterator is a __Tree_Node_Descendant_Iterator__, then it will traverse
+the tree nodes in the following order:
+
+``
+C B D E F G
+``
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_breadth_first_iterator_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`NodePointer`]
+ [The type of a pointer to a tree node.]
+ [
+ It must model the __Trivial_Iterator__ concept, and its value type
+ must model the __Tree_Node__ concept.
+ ]
+ []
+ ]
+ [
+ [`MimicsChildIterator`]
+ [
+ The type that determines whether this `breadth_first_iterator` will
+ iterate only through the descendants of a node or will also include
+ the node in its traversal.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Full_Tree_Node_Iterator__ if `MimicsChildIterator::value` is `false`
+ * __Tree_Node_Descendant_Iterator__ if `MimicsChildIterator::value` is `true`
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Value type]
+ [`value_type`]
+ [__Tree_Node_Iterator__]
+ ]
+ [
+ [Reference type]
+ [`reference`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Difference type]
+ [`difference_type`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [`iterator_category`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [`breadth_first_iterator();`]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from im/mutable node]
+ [`breadth_first_iterator(NodePointer const&);`]
+ [__Tree_Node_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename NP, typename MCI>
+ breadth_first_iterator(breadth_first_iterator<NP,MCI> 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][Expression][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.
+ ]
+ ]
+ [
+ [Descendant iterator creation]
+ [[reference__make_breadth_first_descendant_iterator]]
+ [
+ Constructs and returns a `breadth_first_iterator` that will iterate
+ through the descendants of the specified node.
+ ]
+ ]
+ [
+ [Iteration]
+ [[reference__breadth_first_iterate]]
+ [
+ Iterates through the specified node and its descendants in
+ breadth-first fashion, passing each node pointer dereferenced to
+ the specified __Unary_Function__ object.
+ ]
+ ]
+ [
+ [Descendant iteration]
+ [[reference__breadth_first_iterate_descendants]]
+ [
+ Iterates through the descendants of the specified node in
+ breadth-first fashion, passing each element dereferenced to
+ the specified __Unary_Function__ object.
+ ]
+ ]
+ [
+ [Equality]
+ [[reference__breadth_first_iterator__operator_equals]]
+ [Defined by the __Input_Iterator__ concept.]
+ ]
+ [
+ [Inequality]
+ [[reference__breadth_first_iterator__operator_not_equal]]
+ [Defined by the __Input_Iterator__ concept.]
+ ]
+]
+[endsect] [/ Non-members]
+
+[endsect] [/ breadth_first_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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,299 @@
+[/=============================================================================
+ Copyright (C) 2011 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`]
+
+[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
+``
+
+If this iterator is a __Full_Tree_Node_Iterator__, then it 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
+``
+
+If this iterator is a __Tree_Node_Descendant_Iterator__, then it 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 is ideal for algorithms that need to perform both preprocessing
+and postprocessing of a tree node, e.g. the copy constructors of the
+__raw_node__ and __raw_associative_node__ implementations.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_depth_first_iterator_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`NodePointer`]
+ [The type of a pointer to a tree node.]
+ [
+ It must model the __Trivial_Iterator__ concept, and its value type
+ must model the __Tree_Node__ concept.
+ ]
+ []
+ ]
+ [
+ [`MimicsChildIterator`]
+ [
+ The type that determines whether this `depth_first_iterator` will
+ iterate only through the descendants of a node or will also include
+ the node in its traversal.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Full_Tree_Node_Iterator__ if `MimicsChildIterator::value` is `false`
+ * __Tree_Node_Descendant_Iterator__ if `MimicsChildIterator::value` is `true`
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Description]]
+ [
+ [Value type]
+ [`value_type`]
+ [Defined in the __Tree_Node_Iterator__ concept.]
+ ]
+ [
+ [Reference type]
+ [`reference`]
+ [Defined in the __Forward_Iterator__ concept.]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [Defined in the __Forward_Iterator__ concept.]
+ ]
+ [
+ [Distance type]
+ [`difference_type`]
+ [Defined in the __Forward_Iterator__ concept.]
+ ]
+ [
+ [Iterator category]
+ [`iterator_category`]
+ [Defined in the __Forward_Iterator__ concept.]
+ ]
+ [
+ [Default constructor]
+ [`depth_first_iterator();`]
+ [Defined in the __Default_Constructible__ concept.]
+ ]
+ [
+ [Constructor from im/mutable node]
+ [`depth_first_iterator(NodePointer const&);`]
+ [Defined in the __Tree_Node_Iterator__ concept.]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename NP, typename MCI>
+ depth_first_iterator(depth_first_iterator<NP,MCI> const&);
+ ``]
+ [
+ Constructs a `depth_first_iterator` object that will point to the
+ same element that the specified iterator points to.
+ ]
+ ]
+ [
+ [Copy constructor]
+ [`depth_first_iterator(depth_first_iterator const&);`]
+ [Defined in the __Copy_Constructible__ concept.]
+ ]
+ [
+ [Assignment operator]
+ [`depth_first_iterator& operator=(depth_first_iterator const&);`]
+ [Defined in the __Assignable__ concept.]
+ ]
+ [
+ [Dereference operator]
+ [`reference operator*() const;`]
+ [Defined in the __Forward_Iterator__ concept.]
+ ]
+ [
+ [Indirection operator]
+ [`pointer operator->() const;`]
+ [Defined in the __Forward_Iterator__ concept.]
+ ]
+ [
+ [Pre-increment operator]
+ [`depth_first_iterator& operator++();`]
+ [Defined in the __Forward_Iterator__ concept.]
+ ]
+ [
+ [Post-increment operator]
+ [`depth_first_iterator operator++(int);`]
+ [Defined in the __Forward_Iterator__ concept.]
+ ]
+ [
+ [Traversal state conversion operator]
+ [`operator _traversal_state_() const;`]
+ [
+ Returns `pre_order_traversal` if this iterator has not yet examined
+ the children of the current node, `post_order_traversal` if this
+ iterator has examined all of the children of the current node, or
+ `no_traversal` if this iterator is not dereferenceable.
+ ]
+ ]
+]
+[endsect] [/ Members]
+
+[section:non_members Non-members]
+[table
+ [[Name][Expression][Description]]
+ [
+ [Iterator creation]
+ [``
+ template <typename NodePointer>
+ depth_first_iterator<NodePointer,_mpl_false_>
+ make_depth_first_iterator(NodePointer const& node);
+ ``]
+ [
+ Constructs and returns a `depth_first_iterator` that will iterate
+ through the specified node and its descendants.
+ ]
+ ]
+ [
+ [Descendant iterator creation]
+ [``
+ template <typename NodePointer>
+ depth_first_iterator<NodePointer,_mpl_true_>
+ make_depth_first_descendant_iterator(NodePointer const& node);
+ ``]
+ [
+ Constructs and returns a `depth_first_iterator` that will iterate
+ through the descendants of the specified node.
+ ]
+ ]
+ [
+ [Iteration]
+ [``
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ depth_first_iterate(
+ NodePointer const& node
+ , UnaryFunction function
+ );
+ ``]
+ [
+ Iterates through the specified node and its descendants in
+ depth-first fashion, passing each node pointer dereferenced to
+ the specified __Unary_Function__ object.
+ ]
+ ]
+ [
+ [Descendant iteration]
+ [``
+ template <typename NodePointer, typename UnaryFunction>
+ void
+ depth_first_iterate_descendants(
+ NodePointer const& node
+ , UnaryFunction function
+ );
+ ``]
+ [
+ Iterates through the descendants of the specified node in
+ depth-first fashion, passing each element dereferenced to
+ the specified __Unary_Function__ object.
+ ]
+ ]
+ [
+ [Equality]
+ [``
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+ typename _enable_if_<_mpl_equal_to_<MCI1,MCI2>,bool>::type
+ operator==(
+ depth_first_iterator<NP1,MCI1> const&
+ , depth_first_iterator<NP2,MCI2> const&
+ );
+ ``]
+ [Defined by the __Input_Iterator__ concept.]
+ ]
+ [
+ [Inequality]
+ [``
+ template <typename NP1, typename NP2, typename MCI1, typename MCI2>
+ typename _enable_if_<_mpl_equal_to_<MCI1,MCI2>,bool>::type
+ operator!=(
+ depth_first_iterator<NP1,MCI1> const&
+ , depth_first_iterator<NP2,MCI2> const&
+ );
+ ``]
+ [Defined by the __Input_Iterator__ concept.]
+ ]
+]
+[endsect] [/ Non-members]
+
+[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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,26 @@
+[/=============================================================================
+ Copyright (C) 2011 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 Synopsis]
+[reference__dereference_iterator]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_dereference_iterator_hpp__>
+``
+[endsect]
+
+[endsect] [/ dereference_iterator]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_factory.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_factory.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,61 @@
+[/=============================================================================
+ Copyright (C) 2011 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:factory `factory`]
+
+[section Synopsis]
+[reference__factory]
+[endsect]
+
+[section Description]
+This facade type provides a uniform interface for creating __Tree_Node__
+objects.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_factory_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`T`]
+ [The type of object that the `factory` methods will create.]
+ [It must model the __Tree_Node__ concept.]
+ []
+ ]
+]
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Expression][Description]]
+ [
+ [Depth access]
+ [`static typename T::pointer create();`]
+ [Default-constructs an instance of type `T` on the heap.]
+ ]
+ [
+ [Depth access]
+ [``
+ static typename T::pointer
+ create(typename T::traits::data_type data);
+ ``]
+ [
+ Heap-allocates an instance of type `T` that will store the
+ specified data.
+ ]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ factory]
+

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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,226 @@
+[/=============================================================================
+ Copyright (C) 2011 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`]
+
+[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 /backwards/:
+
+``
+G B F A E C D
+``
+
+[important
+ This iterator works only on __Binary_Tree_Node__ models.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_in_order_iterator_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`NodePointer`]
+ [The type of a pointer to a tree node.]
+ [
+ It must model the __Trivial_Iterator__ concept, and its value type
+ must model the __Binary_Tree_Node__ concept.
+ ]
+ []
+ ]
+]
+[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]
+ [`value_type`]
+ [__Tree_Node_Iterator__]
+ ]
+ [
+ [Reference type]
+ [`reference`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Distance type]
+ [`difference_type`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [`iterator_category`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [`in_order_iterator();`]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from im/mutable node]
+ [`in_order_iterator(NodePointer const&);`]
+ [__Tree_Node_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename NP>
+ in_order_iterator(in_order_iterator<NP> 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__]
+ ]
+ [
+ [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_forward_iterator]]
+ [
+ Constructs and returns a `in_order_iterator` that will iterate
+ forward 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.
+ ]
+ ]
+ [
+ [Forward iteration]
+ [[reference__in_order_iterate_forward]]
+ [
+ Iterates through the specified node and its descendants in forward
+ in-order fashion, passing each node pointer dereferenced to
+ the specified __Unary_Function__ object.
+ ]
+ ]
+ [
+ [Reverse iteration]
+ [[reference__in_order_iterate_reverse]]
+ [
+ Iterates through the specified node and its descendants in reverse
+ in-order fashion, passing each element dereferenced to
+ the specified __Unary_Function__ object.
+ ]
+ ]
+ [
+ [Equality]
+ [[reference__in_order_iterator__operator_equals]]
+ [Defined by the __Input_Iterator__ concept.]
+ ]
+ [
+ [Inequality]
+ [[reference__in_order_iterator__operator_not_equal]]
+ [Defined by the __Input_Iterator__ concept.]
+ ]
+]
+[endsect] [/ Non-members]
+
+[endsect] [/ in_order_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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,224 @@
+[/=============================================================================
+ Copyright (C) 2011 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`]
+
+[section Synopsis]
+[reference__post_order_iterator]
+[endsect]
+
+[section Description]
+This iterator traverses the specified root node and all its descendants in
+post-order fashion, e.g. given the following tree representation:
+
+``
+ A
+ |
+ C---+---B
+ | |
++-+-+ +-+-+
+| | | |
+D E F G
+``
+
+If this iterator is a __Full_Tree_Node_Iterator__, then it will traverse the
+tree nodes in the following order:
+
+``
+D E C F G B A
+``
+
+If this iterator is a __Tree_Node_Descendant_Iterator__, then it will traverse
+the tree nodes in the following order:
+
+``
+D E C F G B
+``
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_post_order_iterator_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`NodePointer`]
+ [The type of a pointer to a tree node.]
+ [
+ It must model the __Trivial_Iterator__ concept, and its value type
+ must model the __Tree_Node__ concept.
+ ]
+ []
+ ]
+ [
+ [`MimicsChildIterator`]
+ [
+ The type that determines whether this `post_order_iterator` will
+ iterate only through the descendants of a node or will also include
+ the node in its traversal.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Full_Tree_Node_Iterator__ if `MimicsChildIterator::value` is `false`
+ * __Tree_Node_Descendant_Iterator__ if `MimicsChildIterator::value` is `true`
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Value type]
+ [`value_type`]
+ [__Tree_Node_Iterator__]
+ ]
+ [
+ [Reference type]
+ [`reference`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Distance type]
+ [`difference_type`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [`iterator_category`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [`post_order_iterator();`]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from im/mutable node]
+ [`post_order_iterator(NodePointer const&);`]
+ [__Tree_Node_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename NP, typename MCI>
+ post_order_iterator(post_order_iterator<NP,MCI> 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][Expression][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.
+ ]
+ ]
+ [
+ [Descendant iterator creation]
+ [[reference__make_post_order_descendant_iterator]]
+ [
+ Constructs and returns a `post_order_iterator` that will iterate
+ through the descendants of the specified node.
+ ]
+ ]
+ [
+ [Iteration]
+ [[reference__post_order_iterate]]
+ [
+ Iterates through the specified node and its descendants in
+ post-order fashion, passing each node pointer dereferenced to
+ the specified __Unary_Function__ object.
+ ]
+ ]
+ [
+ [Descendant iteration]
+ [[reference__post_order_iterate_descendants]]
+ [
+ Iterates through the descendants of the specified node in
+ post-order fashion, passing each element dereferenced to
+ the specified __Unary_Function__ object.
+ ]
+ ]
+ [
+ [Equality]
+ [[reference__post_order_iterator__operator_equals]]
+ [Defined by the __Input_Iterator__ concept.]
+ ]
+ [
+ [Inequality]
+ [[reference__post_order_iterator__operator_not_equal]]
+ [Defined by the __Input_Iterator__ concept.]
+ ]
+]
+[endsect] [/ Non-members]
+
+[endsect] [/ post_order_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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,224 @@
+[/=============================================================================
+ Copyright (C) 2011 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`]
+
+[section Synopsis]
+[reference__pre_order_iterator]
+[endsect]
+
+[section Description]
+This iterator traverses the specified root node and all its descendants in
+pre-order fashion, e.g. given the following tree representation:
+
+``
+ A
+ |
+ C---+---B
+ | |
++-+-+ +-+-+
+| | | |
+D E F G
+``
+
+If this iterator is a __Full_Tree_Node_Iterator__, then it will traverse the
+tree nodes in the following order:
+
+``
+A C D E B F G
+``
+
+If this iterator is a __Tree_Node_Descendant_Iterator__, then it will traverse
+the tree nodes in the following order:
+
+``
+C D E B F G
+``
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_pre_order_iterator_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`NodePointer`]
+ [The type of a pointer to a tree node.]
+ [
+ It must model the __Trivial_Iterator__ concept, and its value type
+ must model the __Tree_Node__ concept.
+ ]
+ []
+ ]
+ [
+ [`MimicsChildIterator`]
+ [
+ The type that determines whether this `pre_order_iterator` will
+ iterate only through the descendants of a node or will also include
+ the node in its traversal.
+ ]
+ [It must model the __Boolean_Integral_Constant__ concept.]
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Full_Tree_Node_Iterator__ if `MimicsChildIterator::value` is `false`
+ * __Tree_Node_Descendant_Iterator__ if `MimicsChildIterator::value` is `true`
+ * __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+None.
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Value type]
+ [`value_type`]
+ [__Tree_Node_Iterator__]
+ ]
+ [
+ [Reference type]
+ [`reference`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Distance type]
+ [`difference_type`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Iterator category]
+ [`iterator_category`]
+ [__Forward_Iterator__]
+ ]
+ [
+ [Default constructor]
+ [`pre_order_iterator();`]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor from im/mutable node]
+ [`pre_order_iterator(NodePointer const&);`]
+ [__Tree_Node_Iterator__]
+ ]
+ [
+ [Conversion constructor]
+ [``
+ template <typename NP, typename MCI>
+ pre_order_iterator(pre_order_iterator<NP,MCI> 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][Expression][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.
+ ]
+ ]
+ [
+ [Descendant iterator creation]
+ [[reference__make_pre_order_descendant_iterator]]
+ [
+ Constructs and returns a `pre_order_iterator` that will iterate
+ through the descendants of the specified node.
+ ]
+ ]
+ [
+ [Iteration]
+ [[reference__pre_order_iterate]]
+ [
+ Iterates through the specified node and its descendants in
+ pre-order fashion, passing each node pointer dereferenced to
+ the specified __Unary_Function__ object.
+ ]
+ ]
+ [
+ [Descendant iteration]
+ [[reference__pre_order_iterate_descendants]]
+ [
+ Iterates through the descendants of the specified node in
+ pre-order fashion, passing each element dereferenced to
+ the specified __Unary_Function__ object.
+ ]
+ ]
+ [
+ [Equality]
+ [[reference__pre_order_iterator__operator_equals]]
+ [Defined by the __Input_Iterator__ concept.]
+ ]
+ [
+ [Inequality]
+ [[reference__pre_order_iterator__operator_not_equal]]
+ [Defined by the __Input_Iterator__ concept.]
+ ]
+]
+[endsect] [/ Non-members]
+
+[endsect] [/ pre_order_iterator]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_raw_assoc_node_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_raw_assoc_node_base.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,255 @@
+[/=============================================================================
+ Copyright (C) 2011 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:raw_associative_node_base `raw_associative_node_base`]
+
+[section Synopsis]
+[reference__raw_associative_node_base]
+[endsect]
+
+[section Description]
+The __raw_associative_node__ class template inherits its functionality from
+this class template. They differ only with regard to template parameters: the
+__raw_associative_node__ class template is meant to be used directly as a data
+structure, while `raw_associative_node_base` is more suitable as a base class
+template from which __Tree_Node__ adaptor class templates can derive via the
+__raw_associative_node_gen__ __Type_Generator__.
+
+[important
+ This component depends on __Boost_Utility_ContainerGen__, which is not yet
+ a part of Boost. For now, you must perform a Subversion checkout from the
+ __SVN_Trac__.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_raw_associative_node_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ []
+ []
+ ]
+ [
+ [`Key`]
+ [The key type.]
+ []
+ []
+ ]
+ [
+ [`Data`]
+ [The data type.]
+ []
+ []
+ ]
+ [
+ [`AssociativeContainerSelector`]
+ [
+ The type that determines the internal map types whose mapped types
+ are the same as the pointer type.
+ ]
+ [
+ It must be a type for which __associative_container_gen__ returns
+ a valid container.
+ ]
+ [`mapS`]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__
+ * __Base_Tree_Node__
+ * __Cloneable_Tree_Node__
+ * __Default_Constructible__ if `Data` is __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__ if `Data` is __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+__tree_node_base__
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Key type]
+ [`typename traits::key_type`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Data type]
+ [`typename traits::data_type`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Default constructor]
+ [`raw_associative_node_base();`]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor with data]
+ [
+ `explicit
+ raw_associative_node_base(typename traits::data_type const&);`
+ ]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Copy constructor]
+ [`raw_associative_node_base(raw_associative_node_base const&);`]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [
+ `raw_associative_node_base&
+ operator=(raw_associative_node_base const&);`
+ ]
+ [__Assignable__]
+ ]
+ [
+ [Clone]
+ [`pointer clone() const;`]
+ [__Cloneable_Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type const& get_data() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type& get_data();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`const_pointer get_parent() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`pointer get_parent();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child creation with data]
+ [
+ `pointer add_child(typename traits::key_type const&,
+ typename traits::data_type const&);`
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child creation]
+ [`pointer add_child(typename traits::key_type const&);`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child copy creation]
+ [
+ `pointer add_child_copy(typename traits::key_type const&,
+ const_pointer const&);`
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`const_child_iterator get_child_begin() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`child_iterator get_child_begin();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`const_child_iterator get_child_end() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`child_iterator get_child_end();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child search]
+ [
+ `const_child_iterator
+ find_child(typename traits::key_type const&) const;`
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search]
+ [`child_iterator find_child(typename traits::key_type const&);`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search range]
+ [
+ [^_std_pair_<const_child_iterator,const_child_iterator>
+ find_children(typename traits::key_type const&) const;]
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search range]
+ [
+ [^_std_pair_<child_iterator,child_iterator>
+ find_children(typename traits::key_type const&);]
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Remove children]
+ [`std::size_t remove_children(typename traits::key_type const&);`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [`void remove_all_children();`]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ raw_associative_node_base]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_raw_assoc_node_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_raw_assoc_node_gen.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,77 @@
+[/=============================================================================
+ Copyright (C) 2011 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:raw_associative_node_gen `raw_associative_node_gen`]
+
+[section Synopsis]
+[reference__raw_associative_node_gen]
+[endsect]
+
+[section Description]
+TODO.
+
+[important
+ This component depends on __Boost_Utility_ContainerGen__, which is not yet
+ a part of Boost. For now, you must perform a Subversion checkout from the
+ __SVN_Trac__.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_raw_associative_node_hpp__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Selector`]
+ [
+ The type that determines the internal container types of
+ __raw_associative_node_base__.
+ ]
+ [
+ It must be a type for which __associative_container_gen__ returns
+ a valid container.
+ ]
+ [`mapS`]
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from __raw_associative_node_base__.
+Let `Key` be the key type.
+Let `Data` be the data type.
+Let `Selector` be a valid `raw_associative_node_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap3_<
+ raw_associative_node_gen<Selector>
+ , Derived
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:] [^_raw_associative_node_base_<Derived,Key,Data,Selector>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ raw_associative_node_gen]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_raw_associative_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_raw_associative_node.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,248 @@
+[/=============================================================================
+ Copyright (C) 2011 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:raw_associative_node `raw_associative_node`]
+
+[section Synopsis]
+[reference__raw_associative_node]
+[endsect]
+
+[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 that does not need to be exposed
+to external code. Objects of this type can be stored by value, and their
+children can be accessed by their associated keys for fast lookup.
+
+[important
+ This component depends on __Boost_Utility_ContainerGen__, which is not yet
+ a part of Boost. For now, you must perform a Subversion checkout from the
+ __SVN_Trac__.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_raw_associative_node_hpp__>
+``
+[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
+ `raw_associative_node`.
+ ]
+ []
+ []
+ ]
+ [
+ [`Data`]
+ [The type of the object to be stored in a `raw_associative_node`.]
+ []
+ []
+ ]
+ [
+ [`AssociativeContainerSelector`]
+ [
+ The type that determines the internal map types whose mapped types
+ are the same as the pointer type.
+ ]
+ [
+ It must be a type for which __associative_container_gen__ returns
+ a valid container.
+ ]
+ [`mapS`]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__
+ * __Factory_Constructible_Tree_Node__
+ * __Cloneable_Tree_Node__
+ * __Default_Constructible__ if `Data` is __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__ if `Data` is __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+__raw_associative_node_base__
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Key type]
+ [`typename traits::key_type`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Data type]
+ [`typename traits::data_type`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Default constructor]
+ [`raw_associative_node();`]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor with data]
+ [`explicit raw_associative_node(typename traits::data_type const&);`]
+ [__Factory_Constructible_Tree_Node__]
+ ]
+ [
+ [Copy constructor]
+ [`raw_associative_node(raw_associative_node const&);`]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [`raw_associative_node& operator=(raw_associative_node const&);`]
+ [__Assignable__]
+ ]
+ [
+ [Clone]
+ [`pointer clone() const;`]
+ [__Cloneable_Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type const& get_data() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type& get_data();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`const_pointer get_parent() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`pointer get_parent();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child creation with data]
+ [
+ `pointer add_child(typename traits::key_type const&,
+ typename traits::data_type const&);`
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child creation]
+ [`pointer add_child(typename traits::key_type const&);`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child copy creation]
+ [
+ `pointer add_child_copy(typename traits::key_type const&,
+ const_pointer const&);`
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`const_child_iterator get_child_begin() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`child_iterator get_child_begin();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`const_child_iterator get_child_end() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`child_iterator get_child_end();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child search]
+ [
+ `const_child_iterator
+ find_child(typename traits::key_type const&) const;`
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search]
+ [`child_iterator find_child(typename traits::key_type const&);`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search range]
+ [
+ [^_std_pair_<const_child_iterator,const_child_iterator>
+ find_children(typename traits::key_type const&) const;]
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search range]
+ [
+ [^_std_pair_<child_iterator,child_iterator>
+ find_children(typename traits::key_type const&);]
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Remove children]
+ [`std::size_t remove_children(typename traits::key_type const&);`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [`void remove_all_children();`]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[section Example]
+<__example_raw_associative_node_cpp__>
+[endsect]
+
+[endsect] [/ raw_associative_node]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_raw_binary_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_raw_binary_node.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,230 @@
+[/=============================================================================
+ Copyright (C) 2011 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:raw_binary_node `raw_binary_node`]
+
+[section Synopsis]
+[reference__raw_binary_node]
+[endsect]
+
+[section Description]
+This class template is suitable for classes or algorithms that require a
+binary tree node data structure but do not need to expose it to external
+code. Objects of this type can be stored by value.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_raw_binary_node_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`T`]
+ [The type of the object to be stored in a `raw_binary_node`.]
+ []
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Binary_Tree_Node__
+ * __Factory_Constructible_Tree_Node__
+ * __Cloneable_Tree_Node__
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__ if `T` is __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+__raw_binary_node_base__
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Data type]
+ [`typename traits::data_type`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Default constructor]
+ [`raw_binary_node();`]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor with data]
+ [`explicit raw_binary_node(typename traits::data_type const&);`]
+ [__Factory_Constructible_Tree_Node__]
+ ]
+ [
+ [Copy constructor]
+ [`raw_binary_node(raw_binary_node const&);`]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [`raw_binary_node& operator=(raw_binary_node const&);`]
+ [__Assignable__]
+ ]
+ [
+ [Clone]
+ [`pointer clone() const;`]
+ [__Cloneable_Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type const& get_data() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type& get_data();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`const_pointer get_parent() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`pointer get_parent();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Left child creation with data]
+ [`pointer add_left_child(typename traits::data_type const&);`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child creation]
+ [`pointer add_left_child();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child copy creation]
+ [`pointer add_left_child_copy(const_pointer const&);`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child creation with data]
+ [`pointer add_right_child(typename traits::data_type const&);`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child creation]
+ [`pointer add_right_child();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child copy creation]
+ [`pointer add_right_child_copy(const_pointer const&);`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child access]
+ [`const_pointer get_left_child() const;`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child access]
+ [`pointer get_left_child();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child access]
+ [`const_pointer get_right_child() const;`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child access]
+ [`pointer get_right_child();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`const_child_iterator get_child_begin() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`child_iterator get_child_begin();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`const_child_iterator get_child_end() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`child_iterator get_child_end();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Rotate left]
+ [`pointer rotate_left();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Rotate right]
+ [`pointer rotate_right();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Remove left child]
+ [`void remove_left_child();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Remove right child]
+ [`void remove_right_child();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [`void remove_all_children();`]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[section Example]
+<__example_raw_binary_node_cpp__>
+[endsect]
+
+[endsect] [/ raw_binary_node]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_raw_binary_node_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_raw_binary_node_base.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,235 @@
+[/=============================================================================
+ Copyright (C) 2011 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:raw_binary_node_base `raw_binary_node_base`]
+
+[section Synopsis]
+[reference__raw_binary_node_base]
+[endsect]
+
+[section Description]
+The __raw_binary_node__ class template inherits its functionality from this
+class template. They differ only with regard to template parameters: the
+__raw_binary_node__ class template is meant to be used directly as a data
+structure, while `raw_binary_node_base` is more suitable as a base class
+template from which __Tree_Node__ adaptor class templates can derive via
+the __raw_binary_node_gen__ __Type_Generator__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_raw_binary_node_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ []
+ []
+ ]
+ [
+ [`T`]
+ [The data type.]
+ []
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Binary_Tree_Node__
+ * __Base_Tree_Node__
+ * __Cloneable_Tree_Node__
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__ if `T` is __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+__tree_node_base__
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Data type]
+ [`typename traits::data_type`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Default constructor]
+ [`raw_binary_node_base();`]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor with data]
+ [`explicit raw_binary_node_base(typename traits::data_type const&);`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Copy constructor]
+ [`raw_binary_node_base(raw_binary_node_base const&);`]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [`raw_binary_node_base& operator=(raw_binary_node_base const&);`]
+ [__Assignable__]
+ ]
+ [
+ [Clone]
+ [`pointer clone() const;`]
+ [__Cloneable_Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type const& get_data() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type& get_data();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`const_pointer get_parent() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`pointer get_parent();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Left child creation with data]
+ [`pointer add_left_child(typename traits::data_type const&);`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child creation]
+ [`pointer add_left_child();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child copy creation]
+ [`pointer add_left_child_copy(const_pointer const&);`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child creation with data]
+ [`pointer add_right_child(typename traits::data_type const&);`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child creation]
+ [`pointer add_right_child();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child copy creation]
+ [`pointer add_right_child_copy(const_pointer const&);`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child access]
+ [`const_pointer get_left_child() const;`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Left child access]
+ [`pointer get_left_child();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child access]
+ [`const_pointer get_right_child() const;`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Right child access]
+ [`pointer get_right_child();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`const_child_iterator get_child_begin() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`child_iterator get_child_begin();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`const_child_iterator get_child_end() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`child_iterator get_child_end();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Rotate left]
+ [`pointer rotate_left();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Rotate right]
+ [`pointer rotate_right();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Remove left child]
+ [`void remove_left_child();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Remove right child]
+ [`void remove_right_child();`]
+ [__Binary_Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [`void remove_all_children();`]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ raw_binary_node_base]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_raw_binary_node_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_raw_binary_node_gen.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,46 @@
+[/=============================================================================
+ Copyright (C) 2011 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:raw_binary_node_gen `raw_binary_node_gen`]
+
+[section Synopsis]
+[reference__raw_binary_node_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_raw_binary_node_hpp__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Type_Generator__
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from __raw_binary_node_base__.
+Let `T` be the data type.
+
+``
+ typedef _mpl_apply_wrap2_<raw_binary_node_gen,Derived,T>::type r;
+``
+
+[*Return type:] [^_raw_binary_node_base_<Derived,T>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ raw_binary_node_gen]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_raw_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_raw_node.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,194 @@
+[/=============================================================================
+ Copyright (C) 2011 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:raw_node `raw_node`]
+
+[section Synopsis]
+[reference__raw_node]
+[endsect]
+
+[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 but does
+not need to be exposed to external code. Objects of this type can be stored by
+value.
+
+[important
+ This component depends on __Boost_Utility_ContainerGen__, which is not yet
+ a part of Boost. For now, you must perform a Subversion checkout from the
+ __SVN_Trac__.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_raw_node_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`T`]
+ [The type of the object to be stored in a `raw_node`.]
+ []
+ []
+ ]
+ [
+ [`Selector`]
+ [
+ The type that determines the internal container types whose value
+ types are the same as the pointer type.
+ ]
+ [
+ It must be a type for which __container_gen__ returns a valid
+ container.
+ ]
+ [`dequeS`]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __N_ary_Tree_Node__
+ * __Factory_Constructible_Tree_Node__
+ * __Cloneable_Tree_Node__
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__ if `T` is __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+__raw_node_base__
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Data type]
+ [`typename traits::data_type`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Default constructor]
+ [`raw_node();`]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor with data]
+ [`explicit raw_node(typename traits::data_type const&);`]
+ [__Factory_Constructible_Tree_Node__]
+ ]
+ [
+ [Copy constructor]
+ [`raw_node(raw_node const&);`]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [`raw_node& operator=(raw_node const&);`]
+ [__Assignable__]
+ ]
+ [
+ [Clone]
+ [`pointer clone() const;`]
+ [__Cloneable_Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type const& get_data() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type& get_data();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`const_pointer get_parent() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`pointer get_parent();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child creation with data]
+ [`pointer add_child(typename traits::data_type const&);`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Child creation]
+ [`pointer add_child();`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Child copy creation]
+ [`pointer add_child_copy(const_pointer const&);`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`const_child_iterator get_child_begin() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`child_iterator get_child_begin();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`const_child_iterator get_child_end() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`child_iterator get_child_end();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [`void remove_all_children();`]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[section Example]
+<__example_raw_node_cpp__>
+[endsect]
+
+[endsect] [/ raw_node]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_raw_node_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_raw_node_base.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,198 @@
+[/=============================================================================
+ Copyright (C) 2011 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:raw_node_base `raw_node_base`]
+
+[section Synopsis]
+[reference__raw_node_base]
+[endsect]
+
+[section Description]
+The __raw_node__ class template inherits its functionality from this class
+template. They differ only with regard to template parameters: the
+__raw_node__ class template is meant to be used directly as a data structure,
+while `raw_node_base` is more suitable as a base class template from which
+__Tree_Node__ adaptor class templates can derive via the __raw_node_gen__
+__Type_Generator__.
+
+[important
+ This component depends on __Boost_Utility_ContainerGen__, which is not yet
+ a part of Boost. For now, you must perform a Subversion checkout from the
+ __SVN_Trac__.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_raw_node_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ []
+ []
+ ]
+ [
+ [`T`]
+ [The data type.]
+ []
+ []
+ ]
+ [
+ [`Selector`]
+ [
+ The type that determines the internal container types whose value
+ types are the same as the pointer type.
+ ]
+ [
+ It must be a type for which __container_gen__ returns a valid
+ container.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __N_ary_Tree_Node__
+ * __Base_Tree_Node__
+ * __Cloneable_Tree_Node__
+ * __Default_Constructible__ if `T` is __Default_Constructible__
+ * __Copy_Constructible__
+ * __Assignable__ if `T` is __Assignable__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+__tree_node_base__
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Data type]
+ [`typename traits::data_type`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Default constructor]
+ [`raw_node_base();`]
+ [__Default_Constructible__]
+ ]
+ [
+ [Constructor with data]
+ [`explicit raw_node_base(typename traits::data_type const&);`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Copy constructor]
+ [`raw_node_base(raw_node_base const&);`]
+ [__Copy_Constructible__]
+ ]
+ [
+ [Assignment operator]
+ [`raw_node_base& operator=(raw_node_base const&);`]
+ [__Assignable__]
+ ]
+ [
+ [Clone]
+ [`pointer clone() const;`]
+ [__Cloneable_Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type const& get_data() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type& get_data();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`const_pointer get_parent() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`pointer get_parent();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child creation with data]
+ [`pointer add_child(typename traits::data_type const&);`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Child creation]
+ [`pointer add_child();`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Child copy creation]
+ [`pointer add_child_copy(const_pointer const&);`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`const_child_iterator get_child_begin() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`child_iterator get_child_begin();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`const_child_iterator get_child_end() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`child_iterator get_child_end();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [`void remove_all_children();`]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ raw_node_base]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_raw_node_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_raw_node_gen.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,71 @@
+[/=============================================================================
+ Copyright (C) 2011 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:raw_node_gen `raw_node_gen`]
+
+[section Synopsis]
+[reference__raw_node_gen]
+[endsect]
+
+[section Description]
+TODO.
+
+[important
+ This component depends on __Boost_Utility_ContainerGen__, which is not yet
+ a part of Boost. For now, you must perform a Subversion checkout from the
+ __SVN_Trac__.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_raw_node_hpp__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Selector`]
+ [
+ The type that determines the internal container types of
+ __raw_node_base__.
+ ]
+ [
+ It must be a type for which __container_gen__ returns a valid
+ container.
+ ]
+ [`dequeS`]
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from __raw_node_base__.
+Let `T` be the data type.
+Let `Selector` be a valid `raw_node_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap2_<raw_node_gen<Selector>,Derived,T>::type r;
+``
+
+[*Return type:] [^_raw_node_base_<Derived,T,Selector>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ raw_node_gen]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_shared_tree_node_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_shared_tree_node_base.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,100 @@
+[/=============================================================================
+ Copyright (C) 2011 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:shared_tree_node_base `shared_tree_node_base`]
+
+[section Synopsis]
+[reference__shared_tree_node_base]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_shared_base_hpp__>
+``
+[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][Expression][Scope][Description]]
+ [
+ [Pointer type]
+ [`pointer`]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Shallow update implementation]
+ [`void shallow_update_impl();`]
+ [`protected`]
+ [
+ Subclass types should override this method if they hold data that
+ will change if the tree node and its children are structurally
+ modified. Does nothing by default.
+ ]
+ ]
+ [
+ [Deep update implementation]
+ [`void deep_update_impl();`]
+ [`protected`]
+ [
+ Subclass types should override this method if they hold data that
+ will change if the tree node and all its descendants (not just its
+ children) are structurally modified. Does nothing by default.
+ ]
+ ]
+ [
+ [Shallow update]
+ [`void shallow_update_derived();`]
+ [`protected`]
+ [
+ Subclass types should invoke this method after the tree node and
+ its children are structurally modified. Calls the corresponding
+ implementation method.
+ ]
+ ]
+ [
+ [Deep update]
+ [`void deep_update_derived();`]
+ [`protected`]
+ [
+ Subclass types should invoke this method after the tree node and
+ all its descendants (not just its children) are structurally
+ modified. Calls the corresponding implementation method.
+ ]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ shared_tree_node_base]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_simple_assoc_node_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_simple_assoc_node_base.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,265 @@
+[/=============================================================================
+ Copyright (C) 2011 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:simple_assoc_node_base `simple_associative_node_base`]
+
+[section Synopsis]
+[reference__simple_associative_node_base]
+[endsect]
+
+[section Description]
+The __simple_associative_node__ class template inherits its functionality from
+this class template. They differ only with regard to template parameters: the
+__simple_associative_node__ class template is meant to be used directly as a
+data structure, while `simple_associative_node_base` is more suitable as a base
+class template from which __Tree_Node__ adaptor class templates can derive via
+the __simple_associative_node_gen__ __Type_Generator__.
+
+[important
+ This component depends on __Boost_Utility_ContainerGen__, which is not yet
+ a part of Boost. For now, you must perform a Subversion checkout from the
+ __SVN_Trac__.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_simple_associative_node_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ []
+ []
+ ]
+ [
+ [`Key`]
+ [The key type.]
+ []
+ []
+ ]
+ [
+ [`Data`]
+ [The data type.]
+ []
+ []
+ ]
+ [
+ [`AssociativeContainerSelector`]
+ [
+ The type that determines the internal map types whose mapped types
+ are the same as the pointer type.
+ ]
+ [
+ It must be a type for which __associative_container_gen__ returns
+ a valid container.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__
+ * __Base_Tree_Node__
+ * __Cloneable_Tree_Node__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+__shared_tree_node_base__
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Scope][Where defined]]
+ [
+ [Key type]
+ [`typename traits::key_type`]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Data type]
+ [`typename traits::data_type`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Default constructor]
+ [`simple_associative_node_base();`]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Constructor with data]
+ [
+ `explicit
+ simple_associative_node_base(typename traits::data_type const&);`
+ ]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Clone]
+ [`pointer clone() const;`]
+ [`public`]
+ [__Cloneable_Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type const& get_data() const;`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type& get_data();`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`const_pointer get_parent() const;`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`pointer get_parent();`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child creation with data]
+ [
+ `pointer add_child(typename traits::key_type const&,
+ typename traits::data_type const&);`
+ ]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child creation]
+ [`pointer add_child(typename traits::key_type const&);`]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child copy creation]
+ [
+ `pointer add_child_copy(typename traits::key_type const&,
+ const_pointer const&);`
+ ]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`const_child_iterator get_child_begin() const;`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`child_iterator get_child_begin();`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`const_child_iterator get_child_end() const;`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`child_iterator get_child_end();`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child search]
+ [
+ `const_child_iterator
+ find_child(typename traits::key_type const&) const;`
+ ]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search]
+ [`child_iterator find_child(typename traits::key_type const&);`]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search range]
+ [
+ [^_std_pair_<const_child_iterator,const_child_iterator>
+ find_children(typename traits::key_type const&) const;]
+ ]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search range]
+ [
+ [^_std_pair_<child_iterator,child_iterator>
+ find_children(typename traits::key_type const&);]
+ ]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Remove children]
+ [`std::size_t remove_children(typename traits::key_type const&);`]
+ [`public`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [`void remove_all_children();`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ simple_associative_node]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_simple_assoc_node_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_simple_assoc_node_gen.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,78 @@
+[/=============================================================================
+ Copyright (C) 2011 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:simple_assoc_node_gen `simple_associative_node_gen`]
+
+[section Synopsis]
+[reference__simple_associative_node_gen]
+[endsect]
+
+[section Description]
+TODO.
+
+[important
+ This component depends on __Boost_Utility_ContainerGen__, which is not yet
+ a part of Boost. For now, you must perform a Subversion checkout from the
+ __SVN_Trac__.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_simple_associative_node_hpp__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Selector`]
+ [
+ The type that determines the internal container types of
+ __simple_associative_node_base__.
+ ]
+ [
+ It must be a type for which __associative_container_gen__ returns
+ a valid container.
+ ]
+ [`mapS`]
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from
+__simple_associative_node_base__.
+Let `Key` be the key type.
+Let `Data` be the data type.
+Let `Selector` be a valid `simple_associative_node_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap3_<
+ simple_associative_node_gen<Selector>
+ , Derived
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:] [^_simple_associative_node_base_<Derived,Key,Data,Selector>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ simple_associative_node_gen]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_simple_associative_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_simple_associative_node.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,227 @@
+[/=============================================================================
+ Copyright (C) 2011 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:simple_associative_node `simple_associative_node`]
+
+[section Synopsis]
+[reference__simple_associative_node]
+[endsect]
+
+[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 that must be exposed to external
+code. Objects of this type must be stored by
+`simple_associative_node::pointer` and can only be instantiated through
+the __tree_node_factory__ facade or the `clone()` method. Their children can
+be accessed by their associated keys for fast lookup.
+
+[important
+ This component depends on __Boost_Utility_ContainerGen__, which is not yet
+ a part of Boost. For now, you must perform a Subversion checkout from the
+ __SVN_Trac__.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_simple_associative_node_hpp__>
+``
+[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
+ `simple_associative_node`.
+ ]
+ []
+ []
+ ]
+ [
+ [`Data`]
+ [The type of the object to be stored in a `simple_associative_node`.]
+ []
+ []
+ ]
+ [
+ [`AssociativeContainerSelector`]
+ [
+ The type that determines the internal map types whose mapped types
+ are the same as the pointer type.
+ ]
+ [
+ It must be a type for which __associative_container_gen__ returns
+ a valid container.
+ ]
+ [`mapS`]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __Associative_Tree_Node__
+ * __Factory_Constructible_Tree_Node__
+ * __Cloneable_Tree_Node__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+__simple_associative_node_base__
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Key type]
+ [`typename traits::key_type`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Data type]
+ [`typename traits::data_type`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Clone]
+ [`pointer clone() const;`]
+ [__Cloneable_Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type const& get_data() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type& get_data();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`const_pointer get_parent() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`pointer get_parent();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child creation with data]
+ [
+ `pointer add_child(typename traits::key_type const&,
+ typename traits::data_type const&);`
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child creation]
+ [`pointer add_child(typename traits::key_type const&);`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child copy creation]
+ [
+ `pointer add_child_copy(typename traits::key_type const&,
+ const_pointer const&);`
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`const_child_iterator get_child_begin() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`child_iterator get_child_begin();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`const_child_iterator get_child_end() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`child_iterator get_child_end();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child search]
+ [
+ `const_child_iterator
+ find_child(typename traits::key_type const&) const;`
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search]
+ [`child_iterator find_child(typename traits::key_type const&);`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search range]
+ [
+ [^_std_pair_<const_child_iterator,const_child_iterator>
+ find_children(typename traits::key_type const&) const;]
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Child search range]
+ [
+ [^_std_pair_<child_iterator,child_iterator>
+ find_children(typename traits::key_type const&);]
+ ]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Remove children]
+ [`std::size_t remove_children(typename traits::key_type const&);`]
+ [__Associative_Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [`void remove_all_children();`]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[section Example]
+<__example_simple_associative_node_cpp__>
+[endsect]
+
+[endsect] [/ simple_associative_node]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_simple_node.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_simple_node.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,172 @@
+[/=============================================================================
+ Copyright (C) 2011 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:simple_node `simple_node`]
+
+[section Synopsis]
+[reference__simple_node]
+[endsect]
+
+[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 and must
+be exposed to external code. Objects of this type must be stored by
+`simple_node::pointer` and can only be instantiated through the
+__tree_node_factory__ facade or the `clone()` method.
+
+[important
+ This component depends on __Boost_Utility_ContainerGen__, which is not yet
+ a part of Boost. For now, you must perform a Subversion checkout from the
+ __SVN_Trac__.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_simple_node_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`T`]
+ [The type of the object to be stored in a `simple_node`.]
+ []
+ []
+ ]
+ [
+ [`Selector`]
+ [
+ The type that determines the internal container types whose value
+ types are the same as the pointer type.
+ ]
+ [
+ It must be a type for which __container_gen__ returns a valid
+ container.
+ ]
+ [`dequeS`]
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __N_ary_Tree_Node__
+ * __Factory_Constructible_Tree_Node__
+ * __Cloneable_Tree_Node__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+__simple_node_base__
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Expression][Where defined]]
+ [
+ [Data type]
+ [`typename traits::data_type`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Clone]
+ [`pointer clone() const;`]
+ [__Cloneable_Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type const& get_data() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type& get_data();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`const_pointer get_parent() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`pointer get_parent();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child creation with data]
+ [`pointer add_child(typename traits::data_type const&);`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Child creation]
+ [`pointer add_child();`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Child copy creation]
+ [`pointer add_child_copy(const_pointer const&);`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`const_child_iterator get_child_begin() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`child_iterator get_child_begin();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`const_child_iterator get_child_end() const;`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`child_iterator get_child_end();`]
+ [__Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [`void remove_all_children();`]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[section Example]
+<__example_simple_node_cpp__>
+[endsect]
+
+[endsect] [/ simple_node]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_simple_node_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_simple_node_base.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,199 @@
+[/=============================================================================
+ Copyright (C) 2011 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:simple_node_base `simple_node_base`]
+
+[section Synopsis]
+[reference__simple_node_base]
+[endsect]
+
+[section Description]
+The __simple_node__ class template inherits its functionality from this
+class template. They differ only with regard to template parameters: the
+__simple_node__ class template is meant to be used directly as a data
+structure, while `simple_node_base` is more suitable as a base class
+template from which __Tree_Node__ adaptor class templates can derive via
+the __simple_node_gen__ __Type_Generator__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_simple_node_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ []
+ []
+ ]
+ [
+ [`T`]
+ [The data type.]
+ []
+ []
+ ]
+ [
+ [`Selector`]
+ [
+ The type that determines the internal container types whose value
+ types are the same as the pointer type.
+ ]
+ [
+ It must be a type for which __container_gen__ returns a valid
+ container.
+ ]
+ []
+ ]
+]
+[endsect]
+
+[section:model_of Model of]
+
+ * __N_ary_Tree_Node__
+ * __Base_Tree_Node__
+ * __Cloneable_Tree_Node__
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+__shared_tree_node_base__
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Scope][Where defined]]
+ [
+ [Data type]
+ [`typename traits::data_type`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [`public`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [`public`]
+ [__Non_Associative_Tree_Node__]
+ ]
+ [
+ [Default constructor]
+ [`simple_node_base();`]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Constructor with data]
+ [`explicit simple_node_base(typename traits::data_type const&);`]
+ [`protected`]
+ [__Base_Tree_Node__]
+ ]
+ [
+ [Clone]
+ [`pointer clone() const;`]
+ [`public`]
+ [__Cloneable_Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type const& get_data() const;`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Data access]
+ [`typename traits::data_type& get_data();`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`const_pointer get_parent() const;`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Parent access]
+ [`pointer get_parent();`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Child creation with data]
+ [`pointer add_child(typename traits::data_type const&);`]
+ [`public`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Child creation]
+ [`pointer add_child();`]
+ [`public`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Child copy creation]
+ [`pointer add_child_copy(const_pointer const&);`]
+ [`public`]
+ [__N_ary_Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`const_child_iterator get_child_begin() const;`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range begin access]
+ [`child_iterator get_child_begin();`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`const_child_iterator get_child_end() const;`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Children range past-the-end access]
+ [`child_iterator get_child_end();`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+ [
+ [Remove all children]
+ [`void remove_all_children();`]
+ [`public`]
+ [__Tree_Node__]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ simple_node_base]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_simple_node_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_simple_node_gen.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,71 @@
+[/=============================================================================
+ Copyright (C) 2011 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:simple_node_gen `simple_node_gen`]
+
+[section Synopsis]
+[reference__simple_node_gen]
+[endsect]
+
+[section Description]
+TODO.
+
+[important
+ This component depends on __Boost_Utility_ContainerGen__, which is not yet
+ a part of Boost. For now, you must perform a Subversion checkout from the
+ __SVN_Trac__.
+]
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_simple_node_hpp__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Selector`]
+ [
+ The type that determines the internal container types of
+ __simple_node_base__.
+ ]
+ [
+ It must be a type for which __container_gen__ returns a valid
+ container.
+ ]
+ [`dequeS`]
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from __simple_node_base__.
+Let `T` be the data type.
+Let `Selector` be a valid `simple_node_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap2_<simple_node_gen<Selector>,Derived,T>::type r;
+``
+
+[*Return type:] [^_simple_node_base_<Derived,T,Selector>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ simple_node_gen]
+

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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,34 @@
+[/=============================================================================
+ Copyright (C) 2011 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 <__boost_tree_node_traversal_state_hpp__>
+``
+[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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,100 @@
+[/=============================================================================
+ Copyright (C) 2011 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`]
+
+[section Synopsis]
+[reference__tree_node_base]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_base_hpp__>
+``
+[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][Expression][Scope][Description]]
+ [
+ [Pointer type]
+ [`pointer`]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Shallow update implementation]
+ [`void shallow_update_impl();`]
+ [`protected`]
+ [
+ Subclass types should override this method if they hold data that
+ will change if the tree node and its children are structurally
+ modified. Does nothing by default.
+ ]
+ ]
+ [
+ [Deep update implementation]
+ [`void deep_update_impl();`]
+ [`protected`]
+ [
+ Subclass types should override this method if they hold data that
+ will change if the tree node and all its descendants (not just its
+ children) are structurally modified. Does nothing by default.
+ ]
+ ]
+ [
+ [Shallow update]
+ [`void shallow_update_derived();`]
+ [`protected`]
+ [
+ Subclass types should invoke this method after the tree node and
+ its children are structurally modified. Calls the corresponding
+ implementation method.
+ ]
+ ]
+ [
+ [Deep update]
+ [`void deep_update_derived();`]
+ [`protected`]
+ [
+ Subclass types should invoke this method after the tree node and
+ all its descendants (not just its children) are structurally
+ modified. Calls the corresponding implementation method.
+ ]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ tree_node_base]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_with_child_range.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_child_range.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,114 @@
+[/=============================================================================
+ Copyright (C) 2011 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_child_range_access `with_child_range_access`]
+
+[section Synopsis]
+[reference__with_child_range_access]
+[endsect]
+
+[section Description]
+This __Tree_Node__ adaptor provides __Boost_Range__ access to its child nodes
+as well as the other operations it inherits. Objects of this type must be
+stored by `with_child_range_access::pointer` and can only be instantiated
+through the __tree_node_factory__ facade or the `clone()` method if the base
+type models the __Cloneable_Tree_Node__ concept.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_with_child_range_access_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Metafunction_Class__ from whose return type
+ `with_child_range_access` will ultimately inherit.
+ ]
+ [It must model the __Type_Generator__ concept.]
+ []
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is specified; the data type otherwise.]
+ []
+ []
+ ]
+ [
+ [`T2`]
+ [The 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
+ * __Factory_Constructible_Tree_Node__
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+__with_child_range_access_base__
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Expression][Description]]
+ [
+ [Traits type]
+ [`traits`]
+ [Same as the traits type of the return type of `BaseGenerator`.]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Child range]
+ [
+ [^_std_pair_<const_child_iterator,const_child_iterator>
+ get_children() const;]
+ ]
+ [Returns a __Boost_Range__ over all its child nodes.]
+ ]
+ [
+ [Child range]
+ [[^_std_pair_<child_iterator,child_iterator> get_children();]]
+ [Returns a __Boost_Range__ over all its child nodes.]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ with_child_range_access]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_with_child_range_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_child_range_base.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,145 @@
+[/=============================================================================
+ Copyright (C) 2011 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_child_range_acc_base `with_child_range_access_base`]
+
+[section Synopsis]
+[reference__with_child_range_access_base]
+[endsect]
+
+[section Description]
+The __tree_node_with_child_range_access__ class template inherits its
+functionality from this class template. They differ only with regard
+to template parameters: the __tree_node_with_child_range_access__
+class template is meant to be used directly as a data structure, while
+`with_child_range_access_base` is more suitable as a base class template
+from which other __Tree_Node__ adaptor class templates can derive via
+the __tree_node_with_child_range_access_gen__ __Type_Generator__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_with_child_range_access_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ []
+ []
+ ]
+ [
+ [`BaseGenerator`]
+ [
+ The __Metafunction_Class__ from whose return type
+ `with_child_range_access_base` will inherit.
+ ]
+ [It must model the __Type_Generator__ concept.]
+ []
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is specified; the data type otherwise.]
+ []
+ []
+ ]
+ [
+ [`T2`]
+ [The 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
+ * __Base_Tree_Node__
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[^_mpl_apply_wrap3_<BaseGenerator,Derived,T1,T2>::type] if `T2` is specified;
+otherwise [^_mpl_apply_wrap2_<BaseGenerator,Derived,T1>::type]
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Scope][Description]]
+ [
+ [Traits type]
+ [`traits`]
+ [`public`]
+ [Same as the traits type of the return type of `BaseGenerator`.]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Default constructor]
+ [`with_child_range_access_base();`]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Constructor with data]
+ [
+ `explicit
+ with_child_range_access_base(typename traits::data_type const&);`
+ ]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Child range]
+ [
+ [^_std_pair_<const_child_iterator,const_child_iterator>
+ get_children() const;]
+ ]
+ [`public`]
+ [Returns a __Boost_Range__ over all its child nodes.]
+ ]
+ [
+ [Child range]
+ [[^_std_pair_<child_iterator,child_iterator> get_children();]]
+ [`public`]
+ [Returns a __Boost_Range__ over all its child nodes.]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ with_child_range_access_base]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_with_child_range_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_child_range_gen.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,81 @@
+[/=============================================================================
+ Copyright (C) 2011 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_child_range_acc_gen `with_child_range_access_gen`]
+
+[section Synopsis]
+[reference__with_child_range_access_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_with_child_range_access_hpp__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Metafunction_Class__ from whose return type
+ __tree_node_with_child_range_access_base__ will inherit.
+ ]
+ [It must model the __Type_Generator__ concept.]
+ []
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from
+__tree_node_with_child_range_access_base__.
+Let `Key` be the key type.
+Let `Data` be the data type.
+Let `Selector` be a valid `with_child_range_access_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap3_<
+ with_child_range_access_gen<BaseGenerator>
+ , Derived
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_child_range_access_base_<Derived,BaseGenerator,Key,Data>]
+
+``
+ typedef _mpl_apply_wrap2_<
+ with_child_range_access_gen<BaseGenerator>
+ , Derived
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_child_range_access_base_<Derived,BaseGenerator,Data>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ with_child_range_access_gen]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_with_depth.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_depth.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,110 @@
+[/=============================================================================
+ Copyright (C) 2011 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_depth `with_depth`]
+
+[section Synopsis]
+[reference__with_depth]
+[endsect]
+
+[section Description]
+The [*depth] 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, this __Tree_Node__ adaptor provides constant-time
+access to the depth of the node by updating this information after structural
+modifications have been performed.
+
+Objects of this type must be stored by `with_depth::pointer` and can only be
+instantiated through the __tree_node_factory__ facade or the `clone()` method
+if the base type models the __Cloneable_Tree_Node__ concept.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_with_depth_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Metafunction_Class__ from whose return type `with_depth`
+ will ultimately inherit.
+ ]
+ [It must model the __Type_Generator__ concept.]
+ []
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is specified; the data type otherwise.]
+ []
+ []
+ ]
+ [
+ [`T2`]
+ [The 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
+ * __Factory_Constructible_Tree_Node__
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+__with_depth_base__
+[endsect]
+
+[section:members Public Members]
+[table
+ [[Name][Expression][Description]]
+ [
+ [Traits type]
+ [`traits`]
+ [Same as the traits type of the return type of `BaseGenerator`.]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Depth access]
+ [`std::size_t get_depth() const`]
+ [Returns the depth of this tree node.]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ with_depth]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_with_depth_base.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_depth_base.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,132 @@
+[/=============================================================================
+ Copyright (C) 2011 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_depth_base `with_depth_base`]
+
+[section Synopsis]
+[reference__with_depth_base]
+[endsect]
+
+[section Description]
+The __tree_node_with_depth__ class template inherits its functionality from
+this class template. They differ only with regard to template parameters: the
+__tree_node_with_depth__ class template is meant to be used directly as a data
+structure, while `with_depth_base` is more suitable as a base class template
+from which other __Tree_Node__ adaptor class templates can derive via
+the __tree_node_with_depth_gen__ __Type_Generator__.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_with_depth_hpp__>
+``
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`Derived`]
+ [The most descendant type that will inherit from this one.]
+ []
+ []
+ ]
+ [
+ [`BaseGenerator`]
+ [
+ The __Metafunction_Class__ from whose return type `with_depth_base`
+ will inherit.
+ ]
+ [It must model the __Type_Generator__ concept.]
+ []
+ ]
+ [
+ [`T1`]
+ [The key type if `T2` is specified; the data type otherwise.]
+ []
+ []
+ ]
+ [
+ [`T2`]
+ [The 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
+ * __Base_Tree_Node__
+ * any other concept that the return type of `BaseGenerator` models
+
+[endsect]
+
+[section:public_bases Public Base Classes]
+[^_mpl_apply_wrap3_<BaseGenerator,Derived,T1,T2>::type] if `T2` is specified;
+otherwise [^_mpl_apply_wrap2_<BaseGenerator,Derived,T1>::type]
+[endsect]
+
+[section Members]
+[table
+ [[Name][Expression][Scope][Description]]
+ [
+ [Traits type]
+ [`traits`]
+ [`public`]
+ [Same as the traits type of the return type of `BaseGenerator`.]
+ ]
+ [
+ [Pointer type]
+ [`pointer`]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Pointer-to-const type]
+ [`const_pointer`]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Child iterator type]
+ [`child_iterator`]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Immutable child iterator type]
+ [`const_child_iterator`]
+ [`public`]
+ [Defined by the __Tree_Node__ concept.]
+ ]
+ [
+ [Default constructor]
+ [`with_depth_base();`]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Constructor with data]
+ [`explicit with_depth_base(typename traits::data_type const&);`]
+ [`protected`]
+ [Defined by the __Base_Tree_Node__ concept.]
+ ]
+ [
+ [Depth access]
+ [`std::size_t get_depth() const`]
+ [`public`]
+ [Returns the depth of this tree node.]
+ ]
+]
+[endsect] [/ Members]
+
+[endsect] [/ with_depth_base]
+

Added: sandbox/tree_node/libs/tree_node/doc/ref_with_depth_gen.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/ref_with_depth_gen.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,81 @@
+[/=============================================================================
+ Copyright (C) 2011 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_depth_gen `with_depth_gen`]
+
+[section Synopsis]
+[reference__with_depth_gen]
+[endsect]
+
+[section Description]
+TODO.
+[endsect]
+
+[section:definition Where defined]
+``
+#include <__boost_tree_node_with_depth_hpp__>
+``
+[endsect]
+
+[section:model_of Model of]
+__Type_Generator__
+[endsect]
+
+[section:tpl_param Template Parameters]
+[table
+ [[Parameter][Description][Requirements][Default]]
+ [
+ [`BaseGenerator`]
+ [
+ The __Metafunction_Class__ from whose return type
+ __tree_node_with_depth_base__ will inherit.
+ ]
+ [It must model the __Type_Generator__ concept.]
+ []
+ ]
+]
+[endsect]
+
+[section:expressions Expression Semantics]
+Let `Derived` be the type that will inherit from
+__tree_node_with_depth_base__.
+Let `Key` be the key type.
+Let `Data` be the data type.
+Let `Selector` be a valid `with_child_range_access_gen` template argument.
+
+``
+ typedef _mpl_apply_wrap3_<
+ with_depth_gen<BaseGenerator>
+ , Derived
+ , Key
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_depth_base_<Derived,BaseGenerator,Key,Data>]
+
+``
+ typedef _mpl_apply_wrap2_<
+ with_depth_gen<BaseGenerator>
+ , Derived
+ , Data
+ >::type r;
+``
+
+[*Return type:]
+[^_tree_node_with_depth_base_<Derived,BaseGenerator,Data>]
+
+[endsect]
+
+[section Complexity]
+Compile time.
+[endsect]
+
+[endsect] [/ with_depth_gen]
+

Added: sandbox/tree_node/libs/tree_node/doc/reference.qbk
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/doc/reference.qbk 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,99 @@
+[/=============================================================================
+ Copyright (C) 2011 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_raw_binary_node.qbk]
+[include ref_raw_binary_node_base.qbk]
+[include ref_raw_binary_node_gen.qbk]
+[include ref_raw_node.qbk]
+[include ref_raw_node_base.qbk]
+[include ref_raw_node_gen.qbk]
+[include ref_simple_node.qbk]
+[include ref_simple_node_base.qbk]
+[include ref_simple_node_gen.qbk]
+[include ref_raw_associative_node.qbk]
+[include ref_raw_assoc_node_base.qbk]
+[include ref_raw_assoc_node_gen.qbk]
+[include ref_simple_associative_node.qbk]
+[include ref_simple_assoc_node_base.qbk]
+[include ref_simple_assoc_node_gen.qbk]
+[include ref_with_child_range.qbk]
+[include ref_with_child_range_base.qbk]
+[include ref_with_child_range_gen.qbk]
+[include ref_with_depth.qbk]
+[include ref_with_depth_base.qbk]
+[include ref_with_depth_gen.qbk]
+[include ref_tree_node_base.qbk]
+[include ref_shared_tree_node_base.qbk]
+[include ref_breadth_first_iterator.qbk]
+[include ref_pre_order_iterator.qbk]
+[include ref_post_order_iterator.qbk]
+[include ref_depth_first_iterator.qbk]
+[include ref_in_order_iterator.qbk]
+[include ref_factory.qbk]
+[include ref_traversal_state.qbk]
+[include ref_dereference_iterator.qbk]
+
+[heading Data Structures]
+
+ * __raw_binary_node__
+ * __raw_node__
+ * __simple_node__
+ * __raw_associative_node__
+ * __simple_associative_node__
+
+[heading Adaptor Types]
+
+ * __tree_node_with_child_range_access__
+ * __tree_node_with_depth__
+
+[heading Base Types]
+
+ * __raw_binary_node_base__
+ * __raw_node_base__
+ * __simple_node_base__
+ * __raw_associative_node_base__
+ * __simple_associative_node_base__
+ * __tree_node_with_child_range_access_base__
+ * __tree_node_with_depth_base__
+ * __tree_node_base__
+ * __shared_tree_node_base__
+
+[heading Type Generators]
+
+ * __raw_binary_node_gen__
+ * __raw_node_gen__
+ * __simple_node_gen__
+ * __raw_associative_node_gen__
+ * __simple_associative_node_gen__
+ * __tree_node_with_child_range_access_gen__
+ * __tree_node_with_depth_gen__
+
+[heading Iterator Types]
+
+ * __breadth_first_iterator__
+ * __pre_order_iterator__
+ * __post_order_iterator__
+ * __depth_first_iterator__
+ * __in_order_iterator__
+
+[heading Facades]
+
+ * __tree_node_factory__
+
+[heading Enum Types]
+
+ * __traversal_state__
+
+[heading Functions]
+
+ * __dereference_iterator__
+
+[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 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,224 @@
+[library tree_node
+ [quickbook 1.5]
+ [version 0.2]
+ [authors [Enage, Cromwell D.]]
+ [copyright 2011 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 __Container__ [@http://www.sgi.com/tech/stl/Container.html [*Container]]]
+[def __Unary_Function__ [@http://www.sgi.com/tech/stl/UnaryFunction.html [*Unary Function]]]
+
+[/ STL reference links.]
+[def __std_pair__ [@http://www.sgi.com/tech/stl/pair.html `std::pair`]]
+[def _std_pair_ [@http://www.sgi.com/tech/stl/pair.html std::pair]]
+
+[/ Boost library and installation links.]
+[def __Boost_Range__ [@boost:libs/range/doc/html/index.html [*Boost.Range]]]
+[def __Build__ [@boost:more/getting_started.html Build]]
+[def __build__ [@boost:more/getting_started.html build]]
+[def __Boost_Test__ [@boost:libs/test/doc/index.html [*Boost.Test]]]
+[def __SVN_Trac__ [@http://svn.boost.org/ SVN Trac]]
+[def __Boost_Utility_ContainerGen__ [@http://svn.boost.org/svn/boost/sandbox/utility-container_gen/libs/utility/container_gen/doc/html/index.html [*Boost.Utility.ContainerGen]]]
+
+[/ Boost concept links.]
+[def __Copy_Constructible__ [@boost:libs/utility/CopyConstructible.html [*Copy Constructible]]]
+[def __Assignable__ [@boost:libs/utility/Assignable.html [*Assignable]]]
+[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 __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]]]
+
+[/ Boost reference links in text.]
+
+[/ Boost reference links in code.]
+[def __tr1_shared_ptr__ [@boost:libs/smart_ptr/shared_ptr.html `std::tr1::shared_ptr`]]
+[def __tr1_enable_shared_from_this__ [@boost:libs/smart_ptr/enable_shared_from_this.html `std::tr1::enable_shared_from_this`]]
+[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_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 __container_gen__ [@http://svn.boost.org/svn/boost/sandbox/utility-container_gen/libs/utility/container_gen/doc/html/container_gen/reference/container_gen.html `container_gen`]]
+[def __associative_container_gen__ [@http://svn.boost.org/svn/boost/sandbox/utility-container_gen/libs/utility/container_gen/doc/html/container_gen/reference/associative_container_gen.html `associative_container_gen`]]
+
+[/ Boost.TreeNode header and source file links.]
+[def __boost_tree_node_factory_hpp__ [@../../../../boost/tree_node/factory.hpp boost/tree_node/factory.hpp]]
+[def __boost_tree_node_base_hpp__ [@../../../../boost/tree_node/base.hpp boost/tree_node/base.hpp]]
+[def __boost_tree_node_shared_base_hpp__ [@../../../../boost/tree_node/shared_base.hpp boost/tree_node/shared_base.hpp]]
+[def __boost_tree_node_raw_binary_node_hpp__ [@../../../../boost/tree_node/raw_binary_node.hpp boost/tree_node/raw_binary_node.hpp]]
+[def __boost_tree_node_raw_node_hpp__ [@../../../../boost/tree_node/raw_node.hpp boost/tree_node/raw_node.hpp]]
+[def __boost_tree_node_simple_node_hpp__ [@../../../../boost/tree_node/simple_node.hpp boost/tree_node/simple_node.hpp]]
+[def __boost_tree_node_raw_associative_node_hpp__ [@../../../../boost/tree_node/raw_associative_node.hpp boost/tree_node/raw_associative_node.hpp]]
+[def __boost_tree_node_simple_associative_node_hpp__ [@../../../../boost/tree_node/simple_associative_node.hpp boost/tree_node/simple_associative_node.hpp]]
+[def __boost_tree_node_with_child_range_access_hpp__ [@../../../../boost/tree_node/with_child_range_access.hpp boost/tree_node/with_child_range_access.hpp]]
+[def __boost_tree_node_with_depth_hpp__ [@../../../../boost/tree_node/with_depth.hpp boost/tree_node/with_depth.hpp]]
+[def __boost_tree_node_breadth_first_iterator_hpp__ [@../../../../boost/tree_node/breadth_first_iterator.hpp boost/tree_node/breadth_first_iterator.hpp]]
+[def __boost_tree_node_pre_order_iterator_hpp__ [@../../../../boost/tree_node/pre_order_iterator.hpp boost/tree_node/pre_order_iterator.hpp]]
+[def __boost_tree_node_post_order_iterator_hpp__ [@../../../../boost/tree_node/post_order_iterator.hpp boost/tree_node/post_order_iterator.hpp]]
+[def __boost_tree_node_depth_first_iterator_hpp__ [@../../../../boost/tree_node/depth_first_iterator.hpp boost/tree_node/depth_first_iterator.hpp]]
+[def __boost_tree_node_in_order_iterator_hpp__ [@../../../../boost/tree_node/in_order_iterator.hpp boost/tree_node/in_order_iterator.hpp]]
+[def __boost_tree_node_traversal_state_hpp__ [@../../../../boost/tree_node/traversal_state.hpp boost/tree_node/traversal_state.hpp]]
+[def __boost_tree_node_dereference_iterator_hpp__ [@../../../../boost/tree_node/dereference_iterator.hpp boost/tree_node/dereference_iterator.hpp]]
+[def __example_default_unconstructible_type_hpp__ [@../../example/default_unconstructible_type.hpp example/default_unconstructible_type.hpp]]
+[def __example_default_unconstructible_type_cpp__ [@../../example/default_unconstructible_type.cpp example/default_unconstructible_type.cpp]]
+[def __example_show_functions_hpp__ [@../../example/show_functions.hpp example/show_functions.hpp]]
+[def __example_show_functions_cpp__ [@../../example/show_functions.cpp example/show_functions.cpp]]
+[def __example_showcase_iterators_hpp__ [@../../example/showcase_iterators.hpp example/showcase_iterators.hpp]]
+[def __example_raw_binary_node_cpp__ [@../../example/raw_binary_node.cpp example/raw_binary_node.cpp]]
+[def __example_raw_node_cpp__ [@../../example/raw_node.cpp example/raw_node.cpp]]
+[def __example_simple_node_cpp__ [@../../example/simple_node.cpp example/simple_node.cpp]]
+[def __example_raw_associative_node_cpp__ [@../../example/raw_associative_node.cpp example/raw_associative_node.cpp]]
+[def __example_simple_associative_node_cpp__ [@../../example/simple_associative_node.cpp example/simple_associative_node.cpp]]
+
+[/ Boost.TreeNode concept links.]
+[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 __Factory_Constructible_Tree_Node__ [link tree_node.concepts.factory_constructible [*Factory-Constructible Tree Node]]]
+[def __Cloneable_Tree_Node__ [link tree_node.concepts.cloneable_tree_node [*Cloneable 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 __Type_Generator__ [link tree_node.concepts.type_generator [*Type Generator]]]
+[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 __tree_node_factory__ [link tree_node.reference.factory `factory`]]
+[def _tree_node_factory_ [link tree_node.reference.factory factory]]
+[def __tree_node_base__ [link tree_node.reference.tree_node_base `tree_node_base`]]
+[def _tree_node_base_ [link tree_node.reference.tree_node_base tree_node_base]]
+[def __shared_tree_node_base__ [link tree_node.reference.shared_tree_node_base `shared_tree_node_base`]]
+[def _shared_tree_node_base_ [link tree_node.reference.shared_tree_node_base shared_tree_node_base]]
+[def __raw_binary_node_base__ [link tree_node.reference.raw_binary_node_base `raw_binary_node_base`]]
+[def _raw_binary_node_base_ [link tree_node.reference.raw_binary_node_base raw_binary_node_base]]
+[def __raw_binary_node__ [link tree_node.reference.raw_binary_node `raw_binary_node`]]
+[def _raw_binary_node_ [link tree_node.reference.raw_binary_node raw_binary_node]]
+[def __raw_binary_node_gen__ [link tree_node.reference.raw_binary_node_gen `raw_binary_node_gen`]]
+[def _raw_binary_node_gen_ [link tree_node.reference.raw_binary_node_gen raw_binary_node_gen]]
+[def __raw_node_base__ [link tree_node.reference.raw_node_base `raw_node_base`]]
+[def _raw_node_base_ [link tree_node.reference.raw_node_base raw_node_base]]
+[def __raw_node__ [link tree_node.reference.raw_node `raw_node`]]
+[def _raw_node_ [link tree_node.reference.raw_node raw_node]]
+[def __raw_node_gen__ [link tree_node.reference.raw_node_gen `raw_node_gen`]]
+[def _raw_node_gen_ [link tree_node.reference.raw_node_gen raw_node_gen]]
+[def __simple_node_base__ [link tree_node.reference.simple_node_base `simple_node_base`]]
+[def _simple_node_base_ [link tree_node.reference.simple_node_base simple_node_base]]
+[def __simple_node__ [link tree_node.reference.simple_node `simple_node`]]
+[def _simple_node_ [link tree_node.reference.simple_node simple_node]]
+[def __simple_node_gen__ [link tree_node.reference.simple_node `simple_node_gen`]]
+[def _simple_node_gen_ [link tree_node.reference.simple_node simple_node_gen]]
+[def __raw_associative_node_base__ [link tree_node.reference.raw_associative_node_base `raw_associative_node_base`]]
+[def _raw_associative_node_base_ [link tree_node.reference.raw_associative_node_base raw_associative_node_base]]
+[def __raw_associative_node__ [link tree_node.reference.raw_associative_node `raw_associative_node`]]
+[def _raw_associative_node_ [link tree_node.reference.raw_associative_node raw_associative_node]]
+[def __raw_associative_node_gen__ [link tree_node.reference.raw_associative_node_gen `raw_associative_node_gen`]]
+[def _raw_associative_node_gen_ [link tree_node.reference.raw_associative_node_gen raw_associative_node_gen]]
+[def __simple_associative_node_base__ [link tree_node.reference.simple_assoc_node_base `simple_associative_node_base`]]
+[def _simple_associative_node_base_ [link tree_node.reference.simple_assoc_node_base simple_associative_node_base]]
+[def __simple_associative_node__ [link tree_node.reference.simple_associative_node `simple_associative_node`]]
+[def _simple_associative_node_ [link tree_node.reference.simple_associative_node simple_associative_node]]
+[def __simple_associative_node_gen__ [link tree_node.reference.simple_assoc_node_gen `simple_associative_node_gen`]]
+[def _simple_associative_node_gen_ [link tree_node.reference.simple_assoc_node_gen simple_associative_node_gen]]
+[def __tree_node_with_child_range_access_base__ [link tree_node.reference.with_child_range_acc_base `with_child_range_access_base`]]
+[def _tree_node_with_child_range_access_base_ [link tree_node.reference.with_child_range_acc_base with_child_range_access_base]]
+[def __tree_node_with_child_range_access__ [link tree_node.reference.with_child_range_access `with_child_range_access`]]
+[def _tree_node_with_child_range_access_ [link tree_node.reference.with_child_range_access with_child_range_access]]
+[def __tree_node_with_child_range_access_gen__ [link tree_node.reference.with_child_range_acc_gen `with_child_range_access_gen`]]
+[def _tree_node_with_child_range_access_gen_ [link tree_node.reference.with_child_range_acc_gen with_child_range_access_gen]]
+[def __tree_node_with_depth_base__ [link tree_node.reference.with_depth_base `with_depth_base`]]
+[def _tree_node_with_depth_base_ [link tree_node.reference.with_depth_base with_depth_base]]
+[def __tree_node_with_depth__ [link tree_node.reference.with_depth `with_depth`]]
+[def _tree_node_with_depth_ [link tree_node.reference.with_depth with_depth]]
+[def __tree_node_with_depth_gen__ [link tree_node.reference.with_depth_gen `with_depth_gen`]]
+[def _tree_node_with_depth_gen_ [link tree_node.reference.with_depth_gen with_depth_gen]]
+[def __breadth_first_iterator__ [link tree_node.reference.breadth_first_iterator `breadth_first_iterator`]]
+[def __make_breadth_first_iterator__ [link tree_node.reference.breadth_first_iterator `make_breadth_first_iterator()`]]
+[def __make_breadth_first_descendant_iterator__ [link tree_node.reference.breadth_first_iterator `make_breadth_first_descendant_iterator()`]]
+[def _breadth_first_iterator_ [link tree_node.reference.breadth_first_iterator breadth_first_iterator]]
+[def __pre_order_iterator__ [link tree_node.reference.pre_order_iterator `pre_order_iterator`]]
+[def __make_pre_order_iterator__ [link tree_node.reference.pre_order_iterator `make_pre_order_iterator()`]]
+[def __make_pre_order_descendant_iterator__ [link tree_node.reference.pre_order_iterator `make_pre_order_descendant_iterator()`]]
+[def _pre_order_iterator_ [link tree_node.reference.pre_order_iterator pre_order_iterator]]
+[def __post_order_iterator__ [link tree_node.reference.post_order_iterator `post_order_iterator`]]
+[def __make_post_order_iterator__ [link tree_node.reference.post_order_iterator `make_post_order_iterator()`]]
+[def __make_post_order_descendant_iterator__ [link tree_node.reference.post_order_iterator `make_post_order_descendant_iterator()`]]
+[def _post_order_iterator_ [link tree_node.reference.post_order_iterator post_order_iterator]]
+[def __depth_first_iterator__ [link tree_node.reference.depth_first_iterator `depth_first_iterator`]]
+[def __make_depth_first_iterator__ [link tree_node.reference.depth_first_iterator `make_depth_first_iterator()`]]
+[def __make_depth_first_descendant_iterator__ [link tree_node.reference.depth_first_iterator `make_depth_first_descendant_iterator()`]]
+[def _depth_first_iterator_ [link tree_node.reference.depth_first_iterator depth_first_iterator]]
+[def __in_order_iterator__ [link tree_node.reference.in_order_iterator `in_order_iterator`]]
+[def __make_in_order_forward_iterator__ [link tree_node.reference.in_order_iterator `make_in_order_forward_iterator()`]]
+[def __make_in_order_reverse_iterator__ [link tree_node.reference.in_order_iterator `make_in_order_reverse_iterator()`]]
+[def _in_order_iterator_ [link tree_node.reference.in_order_iterator in_order_iterator]]
+[def __traversal_state__ [link tree_node.reference.traversal_state `traversal_state`]]
+[def _traversal_state_ [link tree_node.reference.traversal_state traversal_state]]
+[def __dereference_iterator__ [link tree_node.reference.dereference_iterator `dereference_iterator()`]]
+
+[/ Autogenerate concept and reference documentation directly from code.]
+[/ Bypass Doxygen.]
+[import ../../../boost/tree_node/factory.hpp]
+[import ../../../boost/tree_node/base.hpp]
+[import ../../../boost/tree_node/shared_base.hpp]
+[import ../../../boost/tree_node/raw_binary_node.hpp]
+[import ../../../boost/tree_node/raw_node.hpp]
+[import ../../../boost/tree_node/simple_node.hpp]
+[import ../../../boost/tree_node/raw_associative_node.hpp]
+[import ../../../boost/tree_node/simple_associative_node.hpp]
+[import ../../../boost/tree_node/with_child_range_access.hpp]
+[import ../../../boost/tree_node/with_depth.hpp]
+[import ../../../boost/tree_node/breadth_first_iterator.hpp]
+[import ../../../boost/tree_node/pre_order_iterator.hpp]
+[import ../../../boost/tree_node/post_order_iterator.hpp]
+[import ../../../boost/tree_node/depth_first_iterator.hpp]
+[import ../../../boost/tree_node/in_order_iterator.hpp]
+[import ../../../boost/tree_node/traversal_state.hpp]
+[import ../../../boost/tree_node/dereference_iterator.hpp]
+[import ../example/default_unconstructible_type.hpp] [/ example__default_unconstructible_type]
+[import ../example/default_unconstructible_type.cpp] [/ example__default_unconstructible_type__definitions]
+[import ../example/raw_binary_node.cpp]
+[import ../example/raw_node.cpp]
+[import ../example/simple_node.cpp]
+[import ../example/raw_associative_node.cpp]
+[import ../example/simple_associative_node.cpp]
+
+[/ 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.
+
+[/ index.html End]
+
+[include concepts.qbk]
+[include reference.qbk]
+[include changelog.qbk]
+

Added: sandbox/tree_node/libs/tree_node/example/default_unconstructible_type.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/default_unconstructible_type.cpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,20 @@
+// Copyright (C) 2011 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 "default_unconstructible_type.hpp"
+
+//[example__default_unconstructible_type__definitions
+default_unconstructible_example_type::default_unconstructible_example_type()
+{
+}
+
+default_unconstructible_example_type create_instance(std::size_t n)
+{
+ default_unconstructible_example_type instance;
+ instance.number = n;
+ return instance;
+}
+//]
+

Added: sandbox/tree_node/libs/tree_node/example/default_unconstructible_type.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/default_unconstructible_type.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,27 @@
+// Copyright (C) 2011 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_DEFAULT_UNCONSTRUCTIBLE_TYPE_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_DEFAULT_UNCONSTRUCTIBLE_TYPE_HPP_INCLUDED
+
+#include <vector>
+
+//[example__default_unconstructible_type
+class default_unconstructible_example_type
+{
+ default_unconstructible_example_type();
+
+ friend default_unconstructible_example_type
+ create_instance(std::size_t n);
+
+ public:
+ std::size_t number;
+};
+//]
+
+default_unconstructible_example_type create_instance(std::size_t n);
+
+#endif // LIBS_TREE_NODE_EXAMPLE_DEFAULT_UNCONSTRUCTIBLE_TYPE_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/example/raw_associative_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/raw_associative_node.cpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,238 @@
+// Copyright (C) 2011 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/assert.hpp>
+#include <boost/tr1/tuple.hpp>
+#include <boost/tree_node/typeof.hpp>
+#include "default_unconstructible_type.hpp"
+#include "show_functions.hpp"
+#include "showcase_descendant_iterators.hpp"
+
+typedef boost::tree_node::raw_associative_node<
+ char const*
+ , default_unconstructible_example_type
+ , boost::multimapS
+ >
+ DNode;
+typedef boost::tree_node::with_depth<
+ boost::tree_node::raw_associative_node_gen<boost::hash_multimapS>
+ >
+ , char const*
+ , char*
+ >
+ ANode;
+typedef boost::tree_node::factory<ANode>
+ ANodeFactory;
+
+int main()
+{
+ char const* names[] = {"able", "baker", "charlie", "dog", "easy", "fox"};
+ DNode d_root(create_instance(5));
+ ANode::pointer a_root(ANodeFactory::create());
+
+ BOOST_ASSERT(
+ !d_root.get_parent()
+ && "Parent member uninitialized."
+ );
+ BOOST_ASSERT(
+ !a_root->get_data()
+ && "Data member not default-constructed."
+ );
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_breadth_first_iterator(&d_root)
+ );
+ itr;
+ ++itr
+ )
+ {
+ std::size_t const count = (*itr)->get_data().number;
+
+ if (1 < count)
+ {
+ for (std::size_t i = 0; i < count; ++i)
+ {
+ for (std::size_t j = 0; j + i < count; ++j)
+ {
+ DNode::pointer child(
+ (*itr)->add_child(names[j], create_instance(i))
+ );
+ DNode::const_pointer const_child(child);
+
+ BOOST_ASSERT(
+ (child->get_parent() == *itr)
+ && "Ctor not linking child to parent."
+ );
+ BOOST_ASSERT(
+ (child->get_parent() == const_child->get_parent())
+ && "Why are these pointers different?"
+ );
+ }
+ }
+ }
+ }
+
+ {
+ boost::tree_node::depth_first_iterate(&d_root, show_number_tree());
+ std::cout << std::endl;
+ }
+
+ std::cout << "After d_root tree construction," << std::endl;
+ showcase_descendant_iterators(
+ DNode::const_pointer(&d_root)
+ , show_key_and_number<char const*,DNode::const_pointer>
+ , show_key_and_number_tree()
+ );
+
+ {
+ DNode::pointer d_child = d_root.find_child(
+ names[2]
+ )->second->add_child_copy(names[5], &d_root);
+
+ std::cout << "After add_child_copy call," << std::endl;
+ showcase_descendant_iterators(
+ DNode::const_pointer(&d_root)
+ , show_key_and_number<char const*,DNode::const_pointer>
+ , show_key_and_number_tree()
+ );
+
+ d_root = *d_child;
+ std::cout << "After assignment to descendant," << std::endl;
+ showcase_descendant_iterators(
+ DNode::const_pointer(&d_root)
+ , show_key_and_number<char const*,DNode::const_pointer>
+ , show_key_and_number_tree()
+ );
+ }
+
+ *(d_root.find_child(names[4])->second) = d_root;
+ std::cout << "After assignment to ancestor," << std::endl;
+ showcase_descendant_iterators(
+ DNode::const_pointer(&d_root)
+ , show_key_and_number<char const*,DNode::const_pointer>
+ , show_key_and_number_tree()
+ );
+
+ {
+ char* root_data = new char[2];
+
+ root_data[0] = '5';
+ root_data[1] = '\0';
+ a_root->get_data() = root_data;
+ }
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_breadth_first_iterator(a_root)
+ );
+ itr;
+ ++itr
+ )
+ {
+ char digit = (*itr)->get_data()[0];
+
+ if ('1' < digit)
+ {
+ char numchar = digit;
+
+ while (numchar != '0')
+ {
+ --numchar;
+
+ for (char j = 0; numchar + j < digit; ++j)
+ {
+ ANode::pointer child((*itr)->add_child(names[j]));
+ char*& data = child->get_data();
+
+ BOOST_ASSERT(
+ !data
+ && "Data member not default-constructed."
+ );
+ data = new char[2];
+ data[0] = numchar;
+ data[1] = '\0';
+ BOOST_ASSERT(
+ (child->get_parent() == *itr)
+ && "Ctor not linking child to parent."
+ );
+ }
+ }
+ }
+ }
+
+ std::cout << "After a_root tree construction," << std::endl;
+ showcase_descendant_iterators(
+ ANode::const_pointer(a_root)
+ , show_key_and_data<char const*,ANode::const_pointer>
+ , show_key_and_data_tree()
+ );
+
+ {
+ ANode::pointer a_child(
+ a_root->find_child(names[2])->second->add_child(names[5])
+ );
+
+ a_child->get_data() = new char[2];
+ a_child->get_data()[0] = '7';
+ a_child->get_data()[1] = '\0';
+ std::cout << "After a_child construction," << std::endl;
+ showcase_descendant_iterators(
+ ANode::const_pointer(a_root)
+ , show_key_and_data<char const*,ANode::const_pointer>
+ , show_key_and_data_tree()
+ );
+ }
+
+ {
+ ANode::pointer to_be_pruned = a_root->get_child_begin()->second;
+ ANode::child_iterator c_itr, c_end;
+
+ for (
+ std::tr1::tie(c_itr, c_end) = to_be_pruned->find_children(
+ names[1]
+ );
+ c_itr != c_end;
+ ++c_itr
+ )
+ {
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_pre_order_iterator(c_itr->second)
+ );
+ itr;
+ ++itr
+ )
+ {
+ delete[] (*itr)->get_data();
+ }
+ }
+
+ to_be_pruned->remove_children(names[1]);
+ std::cout << "After remove_children call," << std::endl;
+ showcase_descendant_iterators(
+ ANode::const_pointer(a_root)
+ , show_key_and_data<char const*,ANode::const_pointer>
+ , show_key_and_data_tree()
+ );
+ }
+
+ for (
+ BOOST_AUTO(itr, boost::tree_node::make_post_order_iterator(a_root));
+ itr;
+ ++itr
+ )
+ {
+ delete[] (*itr)->get_data();
+ }
+
+ delete a_root;
+ return 0;
+}
+

Added: sandbox/tree_node/libs/tree_node/example/raw_binary_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/raw_binary_node.cpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,280 @@
+// Copyright (C) 2011 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/assert.hpp>
+#include <boost/tree_node/typeof.hpp>
+#include "default_unconstructible_type.hpp"
+#include "show_functions.hpp"
+#include "showcase_iterators.hpp"
+
+typedef boost::tree_node::raw_binary_node<default_unconstructible_example_type>
+ DNode;
+typedef boost::tree_node::with_depth<
+ boost::tree_node::raw_binary_node_gen
+ , char*
+ >
+ ANode;
+typedef boost::tree_node::factory<ANode>
+ ANodeFactory;
+
+int main()
+{
+ DNode d_root(create_instance(5));
+ ANode::pointer a_root(ANodeFactory::create());
+
+ BOOST_ASSERT(
+ !d_root.get_parent()
+ && "Parent member uninitialized."
+ );
+ BOOST_ASSERT(
+ !a_root->get_data()
+ && "Data member not default-constructed."
+ );
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_breadth_first_iterator(&d_root)
+ );
+ itr;
+ ++itr
+ )
+ {
+ std::size_t const count = (*itr)->get_data().number;
+
+ if (1 < count)
+ {
+ DNode::pointer child(
+ (*itr)->add_left_child(create_instance(count - 2))
+ );
+ DNode::const_pointer const_child(child);
+
+ BOOST_ASSERT(
+ (child->get_parent() == *itr)
+ && "Ctor not linking child to parent."
+ );
+ BOOST_ASSERT(
+ (child->get_parent() == const_child->get_parent())
+ && "Why are these pointers different?"
+ );
+
+ child = (*itr)->add_right_child(create_instance(count - 1));
+ const_child = child;
+
+ BOOST_ASSERT(
+ (child->get_parent() == *itr)
+ && "Ctor not linking child to parent."
+ );
+ BOOST_ASSERT(
+ (child->get_parent() == const_child->get_parent())
+ && "Why are these pointers different?"
+ );
+ }
+ }
+
+ std::cout << "After d_root tree construction," << std::endl;
+ showcase_in_order_iterator(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ );
+ showcase_iterators(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ , show_number_tree()
+ );
+
+ {
+ DNode::pointer p = d_root.get_left_child()->get_left_child();
+ DNode::pointer p_child = p->add_left_child_copy(&d_root);
+
+ std::cout << "After add_left_child_copy call," << std::endl;
+ showcase_in_order_iterator(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ );
+ showcase_iterators(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ , show_number_tree()
+ );
+
+ d_root = *p_child;
+ std::cout << "After assignment to descendant," << std::endl;
+ showcase_in_order_iterator(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ );
+ showcase_iterators(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ , show_number_tree()
+ );
+ }
+
+ *(d_root.get_right_child()) = d_root;
+ std::cout << "After assignment to ancestor," << std::endl;
+ showcase_in_order_iterator(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ );
+ showcase_iterators(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ , show_number_tree()
+ );
+
+ d_root.get_right_child()->rotate_left();
+ std::cout << "After rotate_left call," << std::endl;
+ showcase_in_order_iterator(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ );
+ showcase_iterators(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ , show_number_tree()
+ );
+
+ {
+ char* root_data = new char[2];
+
+ root_data[0] = '5';
+ root_data[1] = '\0';
+ a_root->get_data() = root_data;
+ }
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_breadth_first_iterator(a_root)
+ );
+ itr;
+ ++itr
+ )
+ {
+ char digit = (*itr)->get_data()[0];
+
+ if ('1' < digit)
+ {
+ {
+ ANode::pointer child((*itr)->add_left_child());
+ char*& data = child->get_data();
+
+ BOOST_ASSERT(
+ !data
+ && "Data member not default-constructed."
+ );
+ data = new char[2];
+ data[0] = digit - 1;
+ data[1] = '\0';
+ BOOST_ASSERT(
+ (child->get_parent() == *itr)
+ && "Ctor not linking child to parent."
+ );
+ }
+
+ {
+ ANode::pointer child((*itr)->add_right_child());
+ char*& data = child->get_data();
+
+ BOOST_ASSERT(
+ !data
+ && "Data member not default-constructed."
+ );
+ data = new char[2];
+ data[0] = digit - 2;
+ data[1] = '\0';
+ BOOST_ASSERT(
+ (child->get_parent() == *itr)
+ && "Ctor not linking child to parent."
+ );
+ }
+ }
+ }
+
+ std::cout << "After a_root tree construction," << std::endl;
+ showcase_in_order_iterator(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ );
+ showcase_iterators(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ , show_data_tree()
+ );
+
+ {
+ ANode::pointer p = a_root->get_right_child()->get_right_child();
+ ANode::pointer p_child = p->add_right_child();
+
+ p_child->get_data() = new char[2];
+ p_child->get_data()[0] = '7';
+ p_child->get_data()[1] = '\0';
+ std::cout << "After add_right_child call," << std::endl;
+ showcase_in_order_iterator(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ );
+ showcase_iterators(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ , show_data_tree()
+ );
+ }
+
+ a_root->get_left_child()->rotate_right();
+ std::cout << "After rotate_right call," << std::endl;
+ showcase_in_order_iterator(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ );
+ showcase_iterators(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ , show_data_tree()
+ );
+
+ {
+ ANode::pointer leaf = *a_root->get_child_begin();
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_pre_order_descendant_iterator(leaf)
+ );
+ itr;
+ ++itr
+ )
+ {
+ delete[] (*itr)->get_data();
+ }
+
+ leaf->remove_all_children();
+ std::cout << "After remove_all_children call," << std::endl;
+ showcase_in_order_iterator(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ );
+ showcase_iterators(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ , show_data_tree()
+ );
+ }
+
+ for (
+ BOOST_AUTO(itr, boost::tree_node::make_post_order_iterator(a_root));
+ itr;
+ ++itr
+ )
+ {
+ delete[] (*itr)->get_data();
+ }
+
+ delete a_root;
+ return 0;
+}
+

Added: sandbox/tree_node/libs/tree_node/example/raw_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/raw_node.cpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,216 @@
+// Copyright (C) 2011 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/assert.hpp>
+#include <boost/tree_node/typeof.hpp>
+#include "default_unconstructible_type.hpp"
+#include "show_functions.hpp"
+#include "showcase_iterators.hpp"
+
+typedef boost::tree_node::raw_node<default_unconstructible_example_type>
+ DNode;
+typedef boost::tree_node::with_depth<
+ boost::tree_node::raw_node_gen<>
+ , char*
+ >
+ ANode;
+typedef boost::tree_node::factory<ANode>
+ ANodeFactory;
+
+int main()
+{
+ DNode d_root(create_instance(5));
+ ANode::pointer a_root(ANodeFactory::create());
+
+ BOOST_ASSERT(
+ !d_root.get_parent()
+ && "Parent member uninitialized."
+ );
+ BOOST_ASSERT(
+ !a_root->get_data()
+ && "Data member not default-constructed."
+ );
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_breadth_first_iterator(&d_root)
+ );
+ itr;
+ ++itr
+ )
+ {
+ std::size_t const count = (*itr)->get_data().number;
+
+ if (1 < count)
+ {
+ for (std::size_t i = 0; i < count; ++i)
+ {
+ DNode::pointer child((*itr)->add_child(create_instance(i)));
+ DNode::const_pointer const_child(child);
+
+ BOOST_ASSERT(
+ (child->get_parent() == *itr)
+ && "Ctor not linking child to parent."
+ );
+ BOOST_ASSERT(
+ (child == *((*itr)->get_child_begin() + i))
+ && "Ctor not linking parent to child."
+ );
+ BOOST_ASSERT(
+ (child->get_parent() == const_child->get_parent())
+ && "Why are these pointers different?"
+ );
+ }
+ }
+ }
+
+ std::cout << "After d_root tree construction," << std::endl;
+ showcase_iterators(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ , show_number_tree()
+ );
+
+ {
+ DNode::pointer d_child = (
+ *(d_root.get_child_begin() + 2)
+ )->add_child_copy(&d_root);
+
+ std::cout << "After add_child_copy call," << std::endl;
+ showcase_iterators(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ , show_number_tree()
+ );
+
+ d_root = *d_child;
+ std::cout << "After assignment to descendant," << std::endl;
+ showcase_iterators(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ , show_number_tree()
+ );
+ }
+
+ *(*(d_root.get_child_begin() + 4)) = d_root;
+ std::cout << "After assignment to ancestor," << std::endl;
+ showcase_iterators(
+ DNode::const_pointer(&d_root)
+ , show_number<DNode::const_pointer>
+ , show_number_tree()
+ );
+
+ {
+ char* root_data = new char[2];
+
+ root_data[0] = '5';
+ root_data[1] = '\0';
+ a_root->get_data() = root_data;
+ }
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_breadth_first_iterator(a_root)
+ );
+ itr;
+ ++itr
+ )
+ {
+ char digit = (*itr)->get_data()[0];
+
+ if ('1' < digit)
+ {
+ char numchar = digit;
+
+ while (numchar != '0')
+ {
+ ANode::pointer child((*itr)->add_child());
+ char*& data = child->get_data();
+
+ BOOST_ASSERT(
+ !data
+ && "Data member not default-constructed."
+ );
+ data = new char[2];
+ data[0] = --numchar;
+ data[1] = '\0';
+ BOOST_ASSERT(
+ (child->get_parent() == *itr)
+ && "Ctor not linking child to parent."
+ );
+ BOOST_ASSERT(
+ (
+ child
+ == *((*itr)->get_child_begin() + (digit - (numchar + 1)))
+ )
+ && "Ctor not linking parent to child."
+ );
+ }
+ }
+ }
+
+ std::cout << "After a_root tree construction," << std::endl;
+ showcase_iterators(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ , show_data_tree()
+ );
+
+ {
+ ANode::pointer a_child(
+ (*(a_root->get_child_begin() + 2))->add_child()
+ );
+
+ a_child->get_data() = new char[2];
+ a_child->get_data()[0] = '7';
+ a_child->get_data()[1] = '\0';
+ std::cout << "After a_child construction," << std::endl;
+ showcase_iterators(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ , show_data_tree()
+ );
+ }
+
+ {
+ ANode::pointer leaf = *a_root->get_child_begin();
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_pre_order_descendant_iterator(leaf)
+ );
+ itr;
+ ++itr
+ )
+ {
+ delete[] (*itr)->get_data();
+ }
+
+ leaf->remove_all_children();
+ std::cout << "After remove_all_children call," << std::endl;
+ showcase_iterators(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ , show_data_tree()
+ );
+ }
+
+ for (
+ BOOST_AUTO(itr, boost::tree_node::make_post_order_iterator(a_root));
+ itr;
+ ++itr
+ )
+ {
+ delete[] (*itr)->get_data();
+ }
+
+ delete a_root;
+ return 0;
+}
+

Added: sandbox/tree_node/libs/tree_node/example/show_functions.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/show_functions.cpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,60 @@
+// Copyright (C) 2011 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 "show_functions.hpp"
+
+//[example__show_tabs
+void
+ show_tabs(
+ boost::tree_node::traversal_state state
+ , unsigned int& ply_limit
+ )
+{
+ switch (state)
+ {
+ case boost::tree_node::pre_order_traversal:
+ {
+ ++ply_limit;
+
+ for (unsigned int ply = 0; ply < ply_limit; ++ply)
+ {
+ std::cout << " ";
+ }
+
+ std::cout << "Pre-order: ";
+ break;
+ }
+
+ case boost::tree_node::post_order_traversal:
+ {
+ for (unsigned int ply = 0; ply < ply_limit; ++ply)
+ {
+ std::cout << " ";
+ }
+
+ std::cout << "Post-order: ";
+ --ply_limit;
+ break;
+ }
+ }
+}
+//]
+
+show_number_tree::show_number_tree() : ply_limit(1)
+{
+}
+
+show_key_and_number_tree::show_key_and_number_tree() : ply_limit(1)
+{
+}
+
+show_data_tree::show_data_tree() : ply_limit(1)
+{
+}
+
+show_key_and_data_tree::show_key_and_data_tree() : ply_limit(1)
+{
+}
+

Added: sandbox/tree_node/libs/tree_node/example/show_functions.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/show_functions.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,140 @@
+// Copyright (C) 2011 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_SHOW_FUNCTIONS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_SHOW_FUNCTIONS_HPP_INCLUDED
+
+#include <iostream>
+#include <boost/tree_node/traversal_state.hpp>
+
+void
+ show_tabs(
+ boost::tree_node::traversal_state state
+ , unsigned int& ply_limit
+ );
+
+//[example__show_number
+template <typename NodePointer>
+void show_number(NodePointer const& node)
+{
+ std::cout << ' ' << node->get_data().number;
+}
+//]
+
+//[example__show_number_tree
+class show_number_tree
+{
+ unsigned int ply_limit;
+
+ public:
+ show_number_tree();
+
+ template <typename NodePointer>
+ void
+ operator()(
+ NodePointer const& node
+ , boost::tree_node::traversal_state state
+ )
+ {
+ show_tabs(state, ply_limit);
+ std::cout << node->get_data().number << std::endl;
+ }
+};
+//]
+
+//[example__show_key_and_number
+template <typename Key, typename NodePointer>
+void show_key_and_number(Key const& key, NodePointer const& node)
+{
+ std::cout << " [" << key << ", " << node->get_data().number << ']';
+}
+//]
+
+//[example__show_key_and_number_tree
+class show_key_and_number_tree
+{
+ unsigned int ply_limit;
+
+ public:
+ show_key_and_number_tree();
+
+ template <typename Iterator>
+ void
+ operator()(
+ Iterator const& itr
+ , boost::tree_node::traversal_state state
+ )
+ {
+ show_tabs(state, ply_limit);
+ show_key_and_number(itr->first, itr->second);
+ std::cout << std::endl;
+ }
+};
+//]
+
+//[example__show_data
+template <typename NodePointer>
+void show_data(NodePointer const& node)
+{
+ std::cout << ' ' << node->get_data();
+}
+//]
+
+//[example__show_data_tree
+class show_data_tree
+{
+ unsigned int ply_limit;
+
+ public:
+ show_data_tree();
+
+ template <typename NodePointer>
+ void
+ operator()(
+ NodePointer const& node
+ , boost::tree_node::traversal_state state
+ )
+ {
+ show_tabs(state, ply_limit);
+ std::cout << node->get_data() << " (Depth = ";
+ std::cout << node->get_depth() << ')' << std::endl;
+// std::cout << node->get_data() << std::endl;
+ }
+};
+//]
+
+//[example__show_key_and_data
+template <typename Key, typename NodePointer>
+void show_key_and_data(Key const& key, NodePointer const& node)
+{
+ std::cout << " [" << key << ", " << node->get_data() << ']';
+}
+//]
+
+//[example__show_key_and_data_tree
+class show_key_and_data_tree
+{
+ unsigned int ply_limit;
+
+ public:
+ show_key_and_data_tree();
+
+ template <typename Iterator>
+ void
+ operator()(
+ Iterator const& itr
+ , boost::tree_node::traversal_state state
+ )
+ {
+ show_tabs(state, ply_limit);
+ show_key_and_data(itr->first, itr->second);
+ std::cout << " (Depth = " << itr->second->get_depth() << ')';
+ std::cout << std::endl;
+ }
+};
+//]
+
+#endif // LIBS_TREE_NODE_EXAMPLE_SHOW_FUNCTIONS_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/example/showcase_descendant_iterators.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/showcase_descendant_iterators.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,82 @@
+// Copyright (C) 2011 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_SHOWCASE_DESCENDANT_ITERATORS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_SHOWCASE_DESCENDANT_ITERATORS_HPP_INCLUDED
+
+#include <iostream>
+#include <boost/tree_node/typeof.hpp>
+
+//[example__showcase_descendant_iterators
+template <typename NodePointer, typename Function1, typename Function2>
+void
+ showcase_descendant_iterators(
+ NodePointer const& root
+ , Function1 show1
+ , Function2 show2
+ )
+{
+ std::cout << " Breadth-first traversal:";
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_breadth_first_descendant_iterator(root)
+ );
+ itr;
+ ++itr
+ )
+ {
+ show1(itr->first, itr->second);
+ }
+
+ std::cout << std::endl << " Pre-order traversal:";
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_pre_order_descendant_iterator(root)
+ );
+ itr;
+ ++itr
+ )
+ {
+ show1(itr->first, itr->second);
+ }
+
+ std::cout << std::endl << " Post-order traversal:";
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_post_order_descendant_iterator(root)
+ );
+ itr;
+ ++itr
+ )
+ {
+ show1(itr->first, itr->second);
+ }
+
+ std::cout << std::endl << " Depth-first traversal:" << std::endl;
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_depth_first_descendant_iterator(root)
+ );
+ itr;
+ ++itr
+ )
+ {
+ show2(itr, boost::tree_node::traversal_state(itr));
+ }
+
+ std::cout << std::endl;
+}
+//]
+
+#endif // LIBS_TREE_NODE_EXAMPLE_SHOWCASE_DESCENDANT_ITERATORS_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/example/showcase_iterators.hpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/showcase_iterators.hpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,58 @@
+// Copyright (C) 2011 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_SHOWCASE_ITERATORS_HPP_INCLUDED
+#define LIBS_TREE_NODE_EXAMPLE_SHOWCASE_ITERATORS_HPP_INCLUDED
+
+#include <iostream>
+#include <boost/tree_node/breadth_first_iterator.hpp>
+#include <boost/tree_node/pre_order_iterator.hpp>
+#include <boost/tree_node/post_order_iterator.hpp>
+#include <boost/tree_node/depth_first_iterator.hpp>
+#include <boost/tree_node/in_order_iterator.hpp>
+
+//[example__showcase_iterators
+template <typename NodePointer, typename Function1, typename Function2>
+void
+ showcase_iterators(
+ NodePointer const& root
+ , Function1 show1
+ , Function2 show2
+ )
+{
+ std::cout << " Breadth-first: ";
+ boost::tree_node::breadth_first_iterate(root, show1);
+ std::cout << std::endl << " sans root: ";
+ boost::tree_node::breadth_first_iterate_descendants(root, show1);
+ std::cout << std::endl << " Pre-order: ";
+ boost::tree_node::pre_order_iterate(root, show1);
+ std::cout << std::endl << " sans root: ";
+ boost::tree_node::pre_order_iterate_descendants(root, show1);
+ std::cout << std::endl << " Post-order: ";
+ boost::tree_node::post_order_iterate(root, show1);
+ std::cout << std::endl << " sans root: ";
+ boost::tree_node::post_order_iterate_descendants(root, show1);
+ std::cout << std::endl << " Depth-first:" << std::endl;
+ boost::tree_node::depth_first_iterate(root, show2);
+ std::cout << std::endl << " sans root:" << std::endl;
+ boost::tree_node::depth_first_iterate_descendants(root, show2);
+ std::cout << std::endl;
+}
+//]
+
+//[example__showcase_in_order_iterator
+template <typename NodePointer, typename Function>
+void showcase_in_order_iterator(NodePointer const& node, Function show)
+{
+ std::cout << " In-order fwd: ";
+ boost::tree_node::in_order_iterate_forward(node, show);
+ std::cout << std::endl << " In-order bck: ";
+ boost::tree_node::in_order_iterate_reverse(node, show);
+ std::cout << std::endl;
+}
+//]
+
+#endif // LIBS_TREE_NODE_EXAMPLE_SHOWCASE_ITERATORS_HPP_INCLUDED
+

Added: sandbox/tree_node/libs/tree_node/example/simple_associative_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/simple_associative_node.cpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,217 @@
+// Copyright (C) 2011 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/assert.hpp>
+#include <boost/tr1/tuple.hpp>
+#include <boost/tree_node/typeof.hpp>
+#include "default_unconstructible_type.hpp"
+#include "show_functions.hpp"
+#include "showcase_descendant_iterators.hpp"
+
+typedef boost::tree_node::simple_associative_node<
+ char const*
+ , default_unconstructible_example_type
+ , boost::multimapS
+ >
+ DNode;
+typedef boost::tree_node::with_depth<
+ boost::tree_node::simple_associative_node_gen<
+ boost::hash_multimapS
+ >
+ , char const*
+ , char*
+ >
+ ANode;
+typedef boost::tree_node::factory<DNode>
+ DNodeFactory;
+typedef boost::tree_node::factory<ANode>
+ ANodeFactory;
+
+int main()
+{
+ char const* names[] = {"able", "baker", "charlie", "dog", "easy", "fox"};
+ DNode::pointer d_root(DNodeFactory::create(create_instance(5)));
+ ANode::pointer a_root(ANodeFactory::create());
+
+ BOOST_ASSERT(
+ !d_root->get_parent()
+ && "Parent member uninitialized."
+ );
+ BOOST_ASSERT(
+ !a_root->get_data()
+ && "Data member not default-constructed."
+ );
+
+ for (
+ BOOST_AUTO(itr, boost::tree_node::make_breadth_first_iterator(d_root));
+ itr;
+ ++itr
+ )
+ {
+ std::size_t const count = (*itr)->get_data().number;
+
+ if (1 < count)
+ {
+ for (std::size_t i = 0; i < count; ++i)
+ {
+ for (std::size_t j = 0; j + i < count; ++j)
+ {
+ DNode::pointer child(
+ (*itr)->add_child(names[j], create_instance(i))
+ );
+ DNode::const_pointer const_child(child);
+
+ BOOST_ASSERT(
+ (child->get_parent() == *itr)
+ && "Ctor not linking child to parent."
+ );
+ BOOST_ASSERT(
+ (child->get_parent() == const_child->get_parent())
+ && "Why are these pointers different?"
+ );
+ }
+ }
+ }
+ }
+
+ {
+ boost::tree_node::depth_first_iterate(d_root, show_number_tree());
+ std::cout << std::endl;
+ }
+
+ std::cout << "After d_root tree construction," << std::endl;
+ showcase_descendant_iterators(
+ DNode::const_pointer(d_root)
+ , show_key_and_number<char const*,DNode::const_pointer>
+ , show_key_and_number_tree()
+ );
+
+ {
+ d_root->find_child(
+ names[2]
+ )->second->add_child_copy(names[5], d_root);
+ std::cout << "After add_child_copy call," << std::endl;
+ showcase_descendant_iterators(
+ DNode::const_pointer(d_root)
+ , show_key_and_number<char const*,DNode::const_pointer>
+ , show_key_and_number_tree()
+ );
+ }
+
+ {
+ char* root_data = new char[2];
+
+ root_data[0] = '5';
+ root_data[1] = '\0';
+ a_root->get_data() = root_data;
+ }
+
+ for (
+ BOOST_AUTO(itr, boost::tree_node::make_breadth_first_iterator(a_root));
+ itr;
+ ++itr
+ )
+ {
+ char digit = (*itr)->get_data()[0];
+
+ if ('1' < digit)
+ {
+ char numchar = digit;
+
+ while (numchar != '0')
+ {
+ --numchar;
+
+ for (char j = 0; numchar + j < digit; ++j)
+ {
+ ANode::pointer child((*itr)->add_child(names[j]));
+ char*& data = child->get_data();
+
+ BOOST_ASSERT(
+ !data
+ && "Data member not default-constructed."
+ );
+ data = new char[2];
+ data[0] = numchar;
+ data[1] = '\0';
+ BOOST_ASSERT(
+ (child->get_parent() == *itr)
+ && "Ctor not linking child to parent."
+ );
+ }
+ }
+ }
+ }
+
+ std::cout << "After a_root tree construction," << std::endl;
+ showcase_descendant_iterators(
+ ANode::const_pointer(a_root)
+ , show_key_and_data<char const*,ANode::const_pointer>
+ , show_key_and_data_tree()
+ );
+
+ {
+ ANode::pointer a_child(
+ a_root->find_child(names[2])->second->add_child(names[5])
+ );
+
+ a_child->get_data() = new char[2];
+ a_child->get_data()[0] = '7';
+ a_child->get_data()[1] = '\0';
+ std::cout << "After a_child construction," << std::endl;
+ showcase_descendant_iterators(
+ ANode::const_pointer(a_root)
+ , show_key_and_data<char const*,ANode::const_pointer>
+ , show_key_and_data_tree()
+ );
+ }
+
+ {
+ ANode::pointer to_be_pruned = a_root->get_child_begin()->second;
+ ANode::child_iterator c_itr, c_end;
+
+ for (
+ std::tr1::tie(c_itr, c_end) = to_be_pruned->find_children(
+ names[1]
+ );
+ c_itr != c_end;
+ ++c_itr
+ )
+ {
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_pre_order_iterator(c_itr->second)
+ );
+ itr;
+ ++itr
+ )
+ {
+ delete[] (*itr)->get_data();
+ }
+ }
+
+ to_be_pruned->remove_children(names[1]);
+ std::cout << "After remove_children call," << std::endl;
+ showcase_descendant_iterators(
+ ANode::const_pointer(a_root)
+ , show_key_and_data<char const*,ANode::const_pointer>
+ , show_key_and_data_tree()
+ );
+ }
+
+ for (
+ BOOST_AUTO(itr, boost::tree_node::make_post_order_iterator(a_root));
+ itr;
+ ++itr
+ )
+ {
+ delete[] (*itr)->get_data();
+ }
+
+ return 0;
+}
+

Added: sandbox/tree_node/libs/tree_node/example/simple_node.cpp
==============================================================================
--- (empty file)
+++ sandbox/tree_node/libs/tree_node/example/simple_node.cpp 2011-11-01 05:31:24 EDT (Tue, 01 Nov 2011)
@@ -0,0 +1,198 @@
+// Copyright (C) 2011 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/assert.hpp>
+#include <boost/tree_node/typeof.hpp>
+#include "default_unconstructible_type.hpp"
+#include "show_functions.hpp"
+#include "showcase_iterators.hpp"
+
+typedef boost::tree_node::simple_node<default_unconstructible_example_type>
+ DNode;
+typedef boost::tree_node::with_depth<
+ boost::tree_node::simple_node_gen<>
+ , char*
+ >
+ ANode;
+typedef boost::tree_node::factory<DNode>
+ DNodeFactory;
+typedef boost::tree_node::factory<ANode>
+ ANodeFactory;
+
+int main()
+{
+ DNode::pointer d_root(DNodeFactory::create(create_instance(5)));
+ ANode::pointer a_root(ANodeFactory::create());
+
+ BOOST_ASSERT(
+ !d_root->get_parent()
+ && "Parent member uninitialized."
+ );
+ BOOST_ASSERT(
+ !a_root->get_data()
+ && "Data member not default-constructed."
+ );
+
+ for (
+ BOOST_AUTO(itr, boost::tree_node::make_breadth_first_iterator(d_root));
+ itr;
+ ++itr
+ )
+ {
+ std::size_t const count = (*itr)->get_data().number;
+
+ if (1 < count)
+ {
+ for (std::size_t i = 0; i < count; ++i)
+ {
+ DNode::pointer child((*itr)->add_child(create_instance(i)));
+ DNode::const_pointer const_child(child);
+
+ BOOST_ASSERT(
+ (child->get_parent() == *itr)
+ && "Ctor not linking child to parent."
+ );
+ BOOST_ASSERT(
+ (child == *((*itr)->get_child_begin() + i))
+ && "Ctor not linking parent to child."
+ );
+ BOOST_ASSERT(
+ (child->get_parent() == const_child->get_parent())
+ && "Why are these pointers different?"
+ );
+ }
+ }
+ }
+
+ std::cout << "After d_root tree construction," << std::endl;
+ showcase_iterators(
+ DNode::const_pointer(d_root)
+ , show_number<DNode::const_pointer>
+ , show_number_tree()
+ );
+
+ {
+ (*(d_root->get_child_begin() + 2))->add_child_copy(d_root);
+ std::cout << "After add_child_copy call," << std::endl;
+ showcase_iterators(
+ DNode::const_pointer(d_root)
+ , show_number<DNode::const_pointer>
+ , show_number_tree()
+ );
+ }
+
+ (*(d_root->get_child_begin() + 4))->remove_all_children();
+ std::cout << "After remove_all_children call," << std::endl;
+ showcase_iterators(
+ DNode::const_pointer(d_root)
+ , show_number<DNode::const_pointer>
+ , show_number_tree()
+ );
+
+ char* root_data = new char[2];
+
+ root_data[0] = '5';
+ root_data[1] = '\0';
+ a_root->get_data() = root_data;
+
+ for (
+ BOOST_AUTO(itr, boost::tree_node::make_breadth_first_iterator(a_root));
+ itr;
+ ++itr
+ )
+ {
+ char digit = (*itr)->get_data()[0];
+
+ if ('1' < digit)
+ {
+ char numchar = digit;
+
+ while (numchar != '0')
+ {
+ ANode::pointer child((*itr)->add_child());
+ char*& data = child->get_data();
+
+ BOOST_ASSERT(
+ !data
+ && "Data member not default-constructed."
+ );
+ data = new char[2];
+ data[0] = --numchar;
+ data[1] = '\0';
+ BOOST_ASSERT(
+ (child->get_parent() == *itr)
+ && "Ctor not linking child to parent."
+ );
+ BOOST_ASSERT(
+ (
+ child
+ == *((*itr)->get_child_begin() + (digit - (numchar + 1)))
+ )
+ && "Ctor not linking parent to child."
+ );
+ }
+ }
+ }
+
+ std::cout << "After a_root tree construction," << std::endl;
+ showcase_iterators(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ , show_data_tree()
+ );
+
+ {
+ ANode::pointer a_child(
+ (*(a_root->get_child_begin() + 2))->add_child()
+ );
+
+ a_child->get_data() = new char[2];
+ a_child->get_data()[0] = '7';
+ a_child->get_data()[1] = '\0';
+ std::cout << "After a_child construction," << std::endl;
+ showcase_iterators(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ , show_data_tree()
+ );
+ }
+
+ {
+ ANode::pointer leaf = *a_root->get_child_begin();
+
+ for (
+ BOOST_AUTO(
+ itr
+ , boost::tree_node::make_pre_order_descendant_iterator(leaf)
+ );
+ itr;
+ ++itr
+ )
+ {
+ delete[] (*itr)->get_data();
+ }
+
+ leaf->remove_all_children();
+ std::cout << "After remove_all_children call," << std::endl;
+ showcase_iterators(
+ ANode::const_pointer(a_root)
+ , show_data<ANode::const_pointer>
+ , show_data_tree()
+ );
+ }
+
+ for (
+ BOOST_AUTO(itr, boost::tree_node::make_post_order_iterator(a_root));
+ itr;
+ ++itr
+ )
+ {
+ delete[] (*itr)->get_data();
+ }
+
+ 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