Boost logo

Boost-Commit :

Subject: [Boost-commit] svn:boost r50581 - in sandbox/SOC/2006/tree/trunk: . boost/tree libs/tree/test
From: ockham_at_[hidden]
Date: 2009-01-14 12:26:30


Author: bernhard.reiter
Date: 2009-01-14 12:26:29 EST (Wed, 14 Jan 2009)
New Revision: 50581
URL: http://svn.boost.org/trac/boost/changeset/50581

Log:
Rename forest_tree to forest, as it turns out to be a forest (= a collection of trees), not just "one" tree.
Added:
   sandbox/SOC/2006/tree/trunk/boost/tree/forest.hpp
      - copied, changed from r50580, /sandbox/SOC/2006/tree/trunk/boost/tree/forest_tree.hpp
Removed:
   sandbox/SOC/2006/tree/trunk/boost/tree/forest_tree.hpp
Text files modified:
   sandbox/SOC/2006/tree/trunk/TODO | 7 +++----
   sandbox/SOC/2006/tree/trunk/boost/tree/forest.hpp | 40 ++++++++++++++++++++--------------------
   sandbox/SOC/2006/tree/trunk/libs/tree/test/forest_tree_test.cpp | 34 +++++++++++++++++-----------------
   sandbox/SOC/2006/tree/trunk/libs/tree/test/test_tree_traversal_data.hpp | 2 +-
   4 files changed, 41 insertions(+), 42 deletions(-)

Modified: sandbox/SOC/2006/tree/trunk/TODO
==============================================================================
--- sandbox/SOC/2006/tree/trunk/TODO (original)
+++ sandbox/SOC/2006/tree/trunk/TODO 2009-01-14 12:26:29 EST (Wed, 14 Jan 2009)
@@ -16,11 +16,10 @@
 General:
 * preorder_insert_cursor: hopefully easy to implement...
 * Add checks for correspondence of concepts and archetypes!
-* Re-do forest (again!). No root(); begin() and end() instead. No default element at
- construction time (that would really suck). Rename forest_tree to forest,
- as it's going to be a forest, not just "one" tree.
+* Re-do forest (again!).
   This seems to raise one issue, though: subtree algorithms operate on subtree root cursors,
- not ranges. (They might, however, work for "subforests".)
+ not ranges. (They might, however, work for "subforests". Consult Austern's segmented
+ iterators paper!)
   They also work for the important special case in which forest consists of only one
   subtree!
 * Improve cursor_archetype. Currently, there's trouble eg with constructors.

Copied: sandbox/SOC/2006/tree/trunk/boost/tree/forest.hpp (from r50580, /sandbox/SOC/2006/tree/trunk/boost/tree/forest_tree.hpp)
==============================================================================
--- /sandbox/SOC/2006/tree/trunk/boost/tree/forest_tree.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/forest.hpp 2009-01-14 12:26:29 EST (Wed, 14 Jan 2009)
@@ -5,12 +5,12 @@
 // http://www.boost.org/LICENSE_1_0.txt)
 
 /**
- * @file forest_tree.hpp
+ * @file forest.hpp
  * Binary tree based forest implementation
  */
 
-#ifndef BOOST_TREE_FOREST_TREE_HPP
-#define BOOST_TREE_FOREST_TREE_HPP
+#ifndef BOOST_TREE_forest_HPP
+#define BOOST_TREE_forest_HPP
 
 #include <boost/tree/detail/forest_cursor.hpp>
 
@@ -27,14 +27,14 @@
 using namespace boost_concepts;
 
 /**
- * @brief A %forest_tree.
+ * @brief A %forest.
  * This class models the hierarchy concept. It is a (binary) tree adaptor,
  * and a (forest) tree of its own right.
  * TODO: complete this..
  *
 */
 template <class T, class Hierarchy = binary_tree<T> >
-class forest_tree {
+class forest {
 
 BOOST_CONCEPT_ASSERT((DefaultConstructible<T>));
 BOOST_CONCEPT_ASSERT((DescendingCursor< typename binary_tree<T>::cursor >));
@@ -42,7 +42,7 @@
 //BOOST_CONCEPT_ASSERT((SameType<T, typename Hierarchy::value_type>));
 // Is there a SameType concept in BCCL?
 
- typedef forest_tree<T, Hierarchy> self_type;
+ typedef forest<T, Hierarchy> self_type;
 
  public:
     typedef T value_type;
@@ -63,7 +63,7 @@
      * @brief The default constructor creates one element at the root.
      * @param val The value the root will be assigned.
      */
-// forest_tree(/*value_type const& val = value_type()*/) : h(Hierarchy())
+// forest(/*value_type const& val = value_type()*/) : h(Hierarchy())
 // {
 // //h.insert(h.root(), val);
 // }
@@ -71,16 +71,16 @@
     /**
      * @brief The default constructor creates no elements.
      * @param hier A hierarchy object that will be used as a base to
- * construct this forest_tree.
+ * construct this forest.
      */
- explicit forest_tree(Hierarchy const& hier = Hierarchy()) : h(hier)
+ explicit forest(Hierarchy const& hier = Hierarchy()) : h(hier)
     {
 // if (h.empty())
 // h.insert(h.root(), value_type());
     }
 
     /**
- * Returns true if the %forest_tree is empty.
+ * Returns true if the %forest is empty.
      */
     bool empty()
     {
@@ -88,7 +88,7 @@
     }
     
     /**
- * Returns a read/write ("mutable") cursor to the %forest_tree's
+ * Returns a read/write ("mutable") cursor to the %forest's
      * first element.
      */
     cursor begin()
@@ -98,7 +98,7 @@
     }
 
     /**
- * Returns a read-only const_cursor to the %forest_tree's
+ * Returns a read-only const_cursor to the %forest's
      * first element.
      */
     const_cursor begin() const
@@ -107,7 +107,7 @@
     }
     
     /**
- * Returns a read-only const_cursor to the %forest_tree's
+ * Returns a read-only const_cursor to the %forest's
      * first element.
      */
     const_cursor cbegin() const
@@ -119,7 +119,7 @@
     // TODO: end.
 
     /**
- * Returns a read/write ("mutable") cursor past the %forest_tree's
+ * Returns a read/write ("mutable") cursor past the %forest's
      * last element.
      */
     cursor end()
@@ -131,7 +131,7 @@
     }
 
     /**
- * Returns a read-only const_cursor past the %forest_tree's
+ * Returns a read-only const_cursor past the %forest's
      * last element.
      */
     const_cursor end() const
@@ -140,7 +140,7 @@
     }
     
     /**
- * Returns a read-only const_cursor past the %forest_tree's
+ * Returns a read-only const_cursor past the %forest's
      * last element.
      */
     const_cursor cend() const
@@ -153,7 +153,7 @@
 
     /**
      * @brief Inserts val in front of @a pos.
- * @param pos The %forest_tree cursor in front of which to insert.
+ * @param pos The %forest cursor in front of which to insert.
      * @param val The value to insert.
      * @return A cursor that points to the inserted data.
      */
@@ -176,7 +176,7 @@
 
 
 // TODO: template <class Cursor> -> template <class T, class Hierarchy>
-// forest_cursor<Cursor> -> forest_tree<T, Hierarchy>::cursor
+// forest_cursor<Cursor> -> forest<T, Hierarchy>::cursor
 // const_cursor?
 template <class Cursor>
 typename forest_cursor<Cursor>::size_type
@@ -185,7 +185,7 @@
     return cur.index();
 }
 
-/// Use natural forest_tree-binary_tree correspondence:
+/// Use natural forest-binary_tree correspondence:
 /// Preoder - preorder
 
 template <class Cursor, class Op>
@@ -229,4 +229,4 @@
 } // namespace tree
 } // namespace boost
 
-#endif // BOOST_TREE_FOREST_TREE_HPP
+#endif // BOOST_TREE_forest_HPP

Deleted: sandbox/SOC/2006/tree/trunk/boost/tree/forest_tree.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/forest_tree.hpp 2009-01-14 12:26:29 EST (Wed, 14 Jan 2009)
+++ (empty file)
@@ -1,232 +0,0 @@
-// Copyright (c) 2006-2009, Bernhard Reiter
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt or copy at
-// http://www.boost.org/LICENSE_1_0.txt)
-
-/**
- * @file forest_tree.hpp
- * Binary tree based forest implementation
- */
-
-#ifndef BOOST_TREE_FOREST_TREE_HPP
-#define BOOST_TREE_FOREST_TREE_HPP
-
-#include <boost/tree/detail/forest_cursor.hpp>
-
-#include <boost/tree/binary_tree.hpp>
-#include <boost/tree/algorithm.hpp>
-#include <boost/tree/cursor_concepts.hpp>
-
-#include <boost/concept_check.hpp>
-
-namespace boost {
-namespace tree {
-
-using detail::forest_cursor;
-using namespace boost_concepts;
-
-/**
- * @brief A %forest_tree.
- * This class models the hierarchy concept. It is a (binary) tree adaptor,
- * and a (forest) tree of its own right.
- * TODO: complete this..
- *
-*/
-template <class T, class Hierarchy = binary_tree<T> >
-class forest_tree {
-
-BOOST_CONCEPT_ASSERT((DefaultConstructible<T>));
-BOOST_CONCEPT_ASSERT((DescendingCursor< typename binary_tree<T>::cursor >));
-BOOST_CONCEPT_ASSERT((DescendingCursor< typename binary_tree<T>::const_cursor >));
-//BOOST_CONCEPT_ASSERT((SameType<T, typename Hierarchy::value_type>));
-// Is there a SameType concept in BCCL?
-
- typedef forest_tree<T, Hierarchy> self_type;
-
- public:
- typedef T value_type;
- typedef Hierarchy hierarchy_type;
-
- typedef typename hierarchy_type::cursor base_cursor;
- typedef typename hierarchy_type::const_cursor base_const_cursor;
-
- typedef forest_cursor<base_cursor> cursor;
- typedef forest_cursor<base_const_cursor> const_cursor;
-
- typedef typename cursor_pointer<cursor>::type pointer;
- typedef typename cursor_reference<cursor>::type reference;
- typedef typename cursor_size<cursor>::type size_type;
- typedef typename cursor_difference<cursor>::type difference_type;
-
- /**
- * @brief The default constructor creates one element at the root.
- * @param val The value the root will be assigned.
- */
-// forest_tree(/*value_type const& val = value_type()*/) : h(Hierarchy())
-// {
-// //h.insert(h.root(), val);
-// }
-
- /**
- * @brief The default constructor creates no elements.
- * @param hier A hierarchy object that will be used as a base to
- * construct this forest_tree.
- */
- explicit forest_tree(Hierarchy const& hier = Hierarchy()) : h(hier)
- {
-// if (h.empty())
-// h.insert(h.root(), value_type());
- }
-
- /**
- * Returns true if the %forest_tree is empty.
- */
- bool empty()
- {
- return h.empty();
- }
-
- /**
- * Returns a read/write ("mutable") cursor to the %forest_tree's
- * first element.
- */
- cursor begin()
- {
- //cursor c(h.root());
- return cursor(h.root());
- }
-
- /**
- * Returns a read-only const_cursor to the %forest_tree's
- * first element.
- */
- const_cursor begin() const
- {
- return cbegin();
- }
-
- /**
- * Returns a read-only const_cursor to the %forest_tree's
- * first element.
- */
- const_cursor cbegin() const
- {
- //const_cursor c(h.croot());
- return const_cursor(h.croot());
- }
-
- // TODO: end.
-
- /**
- * Returns a read/write ("mutable") cursor past the %forest_tree's
- * last element.
- */
- cursor end()
- {
- base_cursor b(h.root());
- while (!b.empty())
- b.to_end();
- return cursor(b);
- }
-
- /**
- * Returns a read-only const_cursor past the %forest_tree's
- * last element.
- */
- const_cursor end() const
- {
- return cend();
- }
-
- /**
- * Returns a read-only const_cursor past the %forest_tree's
- * last element.
- */
- const_cursor cend() const
- {
- base_const_cursor b(h.croot());
- while (!b.empty())
- b.to_end();
- return const_cursor(b);
- }
-
- /**
- * @brief Inserts val in front of @a pos.
- * @param pos The %forest_tree cursor in front of which to insert.
- * @param val The value to insert.
- * @return A cursor that points to the inserted data.
- */
- cursor insert(cursor pos, value_type const& val)
- {
- return cursor(h.insert(base_cursor(pos), val));
- }
-
- /**
- * @brief Clears all data from the forest tree.
- */
- void clear()
- {
- h.clear();
- }
-
-protected:
- hierarchy_type h;
-};
-
-
-// TODO: template <class Cursor> -> template <class T, class Hierarchy>
-// forest_cursor<Cursor> -> forest_tree<T, Hierarchy>::cursor
-// const_cursor?
-template <class Cursor>
-typename forest_cursor<Cursor>::size_type
-index(forest_cursor<Cursor> const& cur)
-{
- return cur.index();
-}
-
-/// Use natural forest_tree-binary_tree correspondence:
-/// Preoder - preorder
-
-template <class Cursor, class Op>
-Op for_each(preorder, forest_cursor<Cursor> s, Op f)
-{
- return for_each(preorder(), Cursor(s), f);
-}
-
-template <class InCursor, class OutCursor, class Op>
-OutCursor transform (preorder, forest_cursor<InCursor> s, forest_cursor<OutCursor> t, Op op)
-{
- return transform(preorder(), InCursor(s), OutCursor(t), op);
-}
-
-template <class InCursor, class OutCursor>
-OutCursor copy (preorder, forest_cursor<InCursor> s, forest_cursor<OutCursor> t)
-{
- return copy(preorder(), InCursor(s), OutCursor(t));
-}
-
-/// Postoder - inorder
-
-template <class Cursor, class Op>
-Op for_each(postorder, forest_cursor<Cursor> s, Op f)
-{
- return for_each(inorder(), Cursor(s), f);
-}
-
-template <class InCursor, class OutCursor, class Op>
-OutCursor transform (postorder, forest_cursor<InCursor> s, forest_cursor<OutCursor> t, Op op)
-{
- return transform(inorder(), InCursor(s), OutCursor(t), op);
-}
-
-template <class InCursor, class OutCursor>
-OutCursor copy (postorder, forest_cursor<InCursor> s, forest_cursor<OutCursor> t)
-{
- return copy(inorder(), InCursor(s), OutCursor(t));
-}
-
-} // namespace tree
-} // namespace boost
-
-#endif // BOOST_TREE_FOREST_TREE_HPP

Modified: sandbox/SOC/2006/tree/trunk/libs/tree/test/forest_tree_test.cpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/libs/tree/test/forest_tree_test.cpp (original)
+++ sandbox/SOC/2006/tree/trunk/libs/tree/test/forest_tree_test.cpp 2009-01-14 12:26:29 EST (Wed, 14 Jan 2009)
@@ -4,7 +4,7 @@
 // (See accompanying file LICENSE_1_0.txt or copy at
 // http://www.boost.org/LICENSE_1_0.txt)
 
-#include <boost/tree/forest_tree.hpp>
+#include <boost/tree/forest.hpp>
 #include <boost/tree/algorithm.hpp>
 
 #include <boost/lambda/bind.hpp>
@@ -14,7 +14,7 @@
 
 #include <list>
 
-#define BOOST_TEST_MODULE forest_tree test
+#define BOOST_TEST_MODULE forest test
 //#define BOOST_TEST_DYN_LINK
 #include <boost/test/included/unit_test.hpp>
 #include <boost/test/test_case_template.hpp>
@@ -28,7 +28,7 @@
 
 BOOST_AUTO_TEST_CASE( constructors_test )
 {
- forest_tree<int> ft0;
+ forest<int> ft0;
     //BOOST_CHECK_EQUAL(*ft0.root(), 0);
     BOOST_CHECK(ft0.empty());
 }
@@ -37,9 +37,9 @@
 //{
 // using namespace boost::tree;
 //
-//// forest_tree<int> mytree;
+//// forest<int> mytree;
 ////
-//// forest_tree<int>::cursor c = mytree.root();
+//// forest<int>::cursor c = mytree.root();
 //// c = mytree.insert(c, 6);
 //// BOOST_CHECK_EQUAL(*c, 6);
 ////
@@ -55,9 +55,9 @@
 //// ++c;
 //// BOOST_CHECK_EQUAL(*c, 6);
 //
-// forest_tree<int> ft0;
+// forest<int> ft0;
 //
-// forest_tree<int>::cursor c = ft0.insert(ft0.end(), 8); //FIXME
+// forest<int>::cursor c = ft0.insert(ft0.end(), 8); //FIXME
 //
 // BOOST_CHECK_EQUAL(*c, 8);
 // BOOST_CHECK(c == ft0.begin());
@@ -113,7 +113,7 @@
 // BOOST_CHECK_EQUAL(*c.to_begin(), 1);
 // BOOST_CHECK(c.empty());
 //
-// //validate_corresponding_forest_tree(ft0);
+// //validate_corresponding_forest(ft0);
 //}
 
 BOOST_AUTO_TEST_SUITE_END()
@@ -122,8 +122,8 @@
 
 BOOST_AUTO_TEST_CASE( binary_tree_constructor_test )
 {
- forest_tree<int, fake_binary_tree<int> > ft0(fbt1);
- forest_tree<int, fake_binary_tree<int> >::const_cursor c = ft0.begin();
+ forest<int, fake_binary_tree<int> > ft0(fbt1);
+ forest<int, fake_binary_tree<int> >::const_cursor c = ft0.begin();
    
     //TODO: validate
     BOOST_CHECK_EQUAL(*c, 8);
@@ -138,7 +138,7 @@
 
     c = ft0.begin().begin();
     ++c;
- forest_tree<int, fake_binary_tree<int> >::const_cursor d = c;
+ forest<int, fake_binary_tree<int> >::const_cursor d = c;
     BOOST_CHECK_EQUAL(*c.to_begin(), 4);
     BOOST_CHECK(++c == d.end());
     
@@ -172,9 +172,9 @@
 //{
 // using namespace boost::tree;
 //
-// forest_tree<int> ft(bt);
+// forest<int> ft(bt);
 //
-// //validate_corresponding_forest_tree(ft);
+// //validate_corresponding_forest(ft);
 //
 // std::list<int> test_list;
 // typedef std::back_insert_iterator< std::list<int> > back_insert_iter_list_int;
@@ -197,9 +197,9 @@
 //{
 // using namespace boost::tree;
 //
-// forest_tree<int> ft(bt);
+// forest<int> ft(bt);
 //
-// //validate_corresponding_forest_tree(ft);
+// //validate_corresponding_forest(ft);
 //
 // std::list<int> test_list;
 // typedef std::back_insert_iterator< std::list<int> > back_insert_iter_list_int;
@@ -218,9 +218,9 @@
 //{
 // using namespace boost::tree;
 //
-// forest_tree<int> ft(bt);
+// forest<int> ft(bt);
 //
-// //validate_corresponding_forest_tree(ft);
+// //validate_corresponding_forest(ft);
 //
 // std::list<int> test_list;
 // typedef std::back_insert_iterator< std::list<int> > back_insert_iter_list_int;

Modified: sandbox/SOC/2006/tree/trunk/libs/tree/test/test_tree_traversal_data.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/libs/tree/test/test_tree_traversal_data.hpp (original)
+++ sandbox/SOC/2006/tree/trunk/libs/tree/test/test_tree_traversal_data.hpp 2009-01-14 12:26:29 EST (Wed, 14 Jan 2009)
@@ -115,7 +115,7 @@
 };
 
 template <class Tree>
-void validate_corresponding_forest_tree(Tree const& t)
+void validate_corresponding_forest(Tree const& t)
 {
     typename Tree::const_cursor c = t.root().begin();
     BOOST_CHECK_EQUAL(*c, 8);


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