$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
From: ockham_at_[hidden]
Date: 2008-06-27 13:36:04
Author: bernhard.reiter
Date: 2008-06-27 13:36:03 EDT (Fri, 27 Jun 2008)
New Revision: 46782
URL: http://svn.boost.org/trac/boost/changeset/46782
Log:
Split cursor_helpers.hpp into cursor_facade.hpp and cursor_adaptor.hpp
Added:
   sandbox/SOC/2006/tree/trunk/boost/tree/cursor_adaptor.hpp   (contents, props changed)
   sandbox/SOC/2006/tree/trunk/boost/tree/cursor_facade.hpp
      - copied, changed from r46781, /sandbox/SOC/2006/tree/trunk/boost/tree/cursor_helpers.hpp
Removed:
   sandbox/SOC/2006/tree/trunk/boost/tree/cursor_helpers.hpp
Text files modified: 
   sandbox/SOC/2006/tree/trunk/boost/tree/ascending_cursor.hpp       |     2                                         
   sandbox/SOC/2006/tree/trunk/boost/tree/cursor_facade.hpp          |   245 --------------------------------------- 
   sandbox/SOC/2006/tree/trunk/boost/tree/detail/cursor/forest.hpp   |    83 -------------                           
   sandbox/SOC/2006/tree/trunk/boost/tree/detail/cursor/multiway.hpp |    11 -                                       
   sandbox/SOC/2006/tree/trunk/boost/tree/detail/cursor/nary.hpp     |     2                                         
   5 files changed, 13 insertions(+), 330 deletions(-)
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/ascending_cursor.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/ascending_cursor.hpp	(original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/ascending_cursor.hpp	2008-06-27 13:36:03 EDT (Fri, 27 Jun 2008)
@@ -14,7 +14,7 @@
 
 
 #include <boost/tree/cursor.hpp>
-#include <boost/tree/cursor_helpers.hpp>
+#include <boost/tree/cursor_facade.hpp>
 
 #include <boost/mpl/eval_if.hpp>
 #include <boost/mpl/identity.hpp>
Added: sandbox/SOC/2006/tree/trunk/boost/tree/cursor_adaptor.hpp
==============================================================================
--- (empty file)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/cursor_adaptor.hpp	2008-06-27 13:36:03 EDT (Fri, 27 Jun 2008)
@@ -0,0 +1,265 @@
+//  Copyright (c) 2006-2008, 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 cursor_adaptor.hpp
+ * Cursor adaptor implementation
+ */
+
+// TODO: Use TR1 type_traits (integral_constant)
+
+#ifndef BOOST_TREE_CURSOR_ADAPTOR_HPP
+#define BOOST_TREE_CURSOR_ADAPTOR_HPP
+
+#include <boost/tree/cursor.hpp>
+
+#include <boost/tree/cursor_facade.hpp>
+
+#include <boost/type_traits/integral_constant.hpp>
+#include <boost/type_traits/is_same.hpp>
+
+namespace boost {
+namespace tree {
+
+using boost::iterator_core_access;
+
+// We'll abuse iterator_adaptor to determine our types.
+template <
+    class Derived
+  , class Base
+  , class Value               			= use_default
+  , class HorizontalTraversalOrCategory = use_default
+  , class VerticalTraversalOrCategory	= use_default
+  , class Reference           			= use_default
+  , class Difference          			= use_default
+  , class Size                			= use_default
+>
+class eval_use_default
+: private iterator_adaptor<Derived 
+  						, Base
+  						, Value
+						, HorizontalTraversalOrCategory
+						, Reference
+						, Difference>
+, private iterator_adaptor<Derived 
+  						, Base
+  						, Value
+						, VerticalTraversalOrCategory
+						, Reference
+						, Difference>
+{
+private:
+	eval_use_default() {} // This class is used for typedefs only.
+	
+	typedef typename iterator_adaptor<Derived, Base, Value
+								, HorizontalTraversalOrCategory, Reference
+								, Difference>::super_t h_super_t;
+	typedef typename iterator_adaptor<Derived, Base, Value
+								, VerticalTraversalOrCategory, Reference
+								, Difference>::super_t v_super_t;
+public:
+	typedef typename h_super_t::value_type value_type;	
+	typedef typename h_super_t::reference reference;
+	typedef typename h_super_t::difference_type difference_type;
+	typedef typename h_super_t::pointer pointer;
+	typedef typename h_super_t::iterator_category iterator_category;
+	typedef typename v_super_t::iterator_category vertical_traversal;
+	
+	// size_type isn't in iterator_adaptor or _facade, 
+	// so we have to calculate it on our own: 
+	typedef typename mpl::eval_if<
+		is_same<Size, use_default>
+	  , boost::tree::cursor_size<Base>
+	  , mpl::identity<Size>
+	>::type size_type;
+};
+
+template <
+    class Derived
+  , class Base
+  , class Value               			= use_default
+  , class HorizontalTraversalOrCategory = use_default
+  , class VerticalTraversalOrCategory	= use_default
+  , class Reference           			= use_default
+  , class Difference          			= use_default
+  , class Size                			= use_default
+>
+class cursor_adaptor 
+: public cursor_facade<
+	Derived 
+  , typename eval_use_default<Derived
+  							, Base
+  							, Value
+							, HorizontalTraversalOrCategory
+							, VerticalTraversalOrCategory
+							, Reference
+							, Difference
+							, Size>::value_type
+  , typename eval_use_default<Derived
+  							, Base
+  							, Value
+							, HorizontalTraversalOrCategory
+							, VerticalTraversalOrCategory
+							, Reference
+							, Difference
+							, Size>::iterator_category
+  , typename eval_use_default<Derived
+  							, Base
+  							, Value
+							, HorizontalTraversalOrCategory
+							, VerticalTraversalOrCategory
+							, Reference
+							, Difference
+							, Size>::vertical_traversal
+  , typename eval_use_default<Derived
+  							, Base
+  							, Value
+							, HorizontalTraversalOrCategory
+							, VerticalTraversalOrCategory
+							, Reference
+							, Difference
+							, Size>::reference
+  , typename eval_use_default<Derived
+  							, Base
+  							, Value
+							, HorizontalTraversalOrCategory
+							, VerticalTraversalOrCategory
+							, Reference
+							, Difference
+							, Size>::difference_type
+  , typename eval_use_default<Derived
+  							, Base
+  							, Value
+							, HorizontalTraversalOrCategory
+							, VerticalTraversalOrCategory
+							, Reference
+							, Difference
+							, Size>::size_type>
+{
+	friend class iterator_core_access;
+	friend class cursor_core_access;
+	typedef cursor_facade<Derived
+						, Value
+						, HorizontalTraversalOrCategory
+						, VerticalTraversalOrCategory
+						, Reference
+						, Difference
+						, Size> cursor_facade_;
+
+ public:
+    cursor_adaptor() {}
+    
+    explicit cursor_adaptor(Base const& cur) : m_cursor(cur)
+    { }
+    
+    Base const& base() const
+    { return m_cursor; }
+    
+	typedef typename cursor_facade_::iterator_category iterator_category;
+
+    typedef typename cursor_facade_::horizontal_traversal horizontal_traversal;
+    typedef typename cursor_facade_::vertical_traversal cursor_category;
+    
+    typedef Size size_type;
+    typedef Base base_type;
+     
+ protected:
+    typedef cursor_adaptor<Derived, Base, Value, HorizontalTraversalOrCategory,
+    					   VerticalTraversalOrCategory, Reference, Difference,
+    					   Size> cursor_adaptor_;
+	
+	typedef eval_use_default<Derived
+							, Base
+							, Value
+							, HorizontalTraversalOrCategory
+							, VerticalTraversalOrCategory
+							, Reference
+							, Difference
+							, Size> super_t;
+	
+	Base const& base_reference() const
+	{ return m_cursor; }
+	
+	Base& base_reference()
+	{ return m_cursor; }
+	
+ public:
+ 
+ 	typename super_t::reference dereference() const
+ 	{
+ 		return *m_cursor;
+ 	}
+ 	
+ 	void increment()
+ 	{
+ 		++m_cursor;
+ 	}
+ 	
+ 	void decrement()
+ 	{
+ 		--m_cursor;
+ 	}
+ 	
+ 	template <class OtherDerived, class OtherCursor, class V, class C, 
+ 			  class R, class D, class S>
+ 	bool equal(cursor_adaptor<OtherDerived, OtherCursor, 
+ 							  V, C, R, D, S> const& x) const
+ 	{
+ 		return m_cursor == x.base();
+ 	}
+ 	
+ 	template <class OtherDerived, class OtherCursor, class V, class C, 
+ 			  class R, class D, class S>
+ 	Difference distance_to(cursor_adaptor<OtherDerived, OtherCursor, 
+ 							  			  V, C, R, D, S> const& x) const
+	{
+		return x.base() - m_cursor;
+	}
+ 	
+ 	bool const empty_() const
+	{
+		return m_cursor.empty();
+	}
+	
+	size_type const size_() const
+	{
+		return m_cursor.size();
+	}
+	
+	size_type const max_size_() const
+	{
+		return m_cursor.max_size();
+	}
+
+	size_type const par() const
+	{
+		return m_cursor.parity();
+	}
+
+	void left()
+	{
+		m_cursor.to_begin();
+	}
+
+	void right()
+	{
+		m_cursor.to_end();
+	}
+	
+	void up()
+	{
+		m_cursor.to_parent();
+	}
+	
+private:
+	Base m_cursor;
+};
+
+
+} // namespace tree
+} // namespace boost
+
+#endif // BOOST_TREE_CURSOR_ADAPTOR_HPP
Copied: sandbox/SOC/2006/tree/trunk/boost/tree/cursor_facade.hpp (from r46781, /sandbox/SOC/2006/tree/trunk/boost/tree/cursor_helpers.hpp)
==============================================================================
--- /sandbox/SOC/2006/tree/trunk/boost/tree/cursor_helpers.hpp	(original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/cursor_facade.hpp	2008-06-27 13:36:03 EDT (Fri, 27 Jun 2008)
@@ -5,14 +5,14 @@
 //  http://www.boost.org/LICENSE_1_0.txt)
 
 /** 
- * @file cursor_helpers.hpp
- * Cursor facade and adaptor implementations
+ * @file cursor_facade.hpp
+ * Cursor facade implementation
  */
 
 // TODO: Use TR1 type_traits (integral_constant)
 
-#ifndef BOOST_TREE_CURSOR_HELPERS_HPP
-#define BOOST_TREE_CURSOR_HELPERS_HPP
+#ifndef BOOST_TREE_CURSOR_FACADE_HPP
+#define BOOST_TREE_CURSOR_FACADE_HPP
 
 #include <boost/tree/cursor.hpp>
 
@@ -24,9 +24,6 @@
 #include <boost/type_traits/is_convertible.hpp>
 #include <boost/utility/enable_if.hpp>
 
-#include <iterator>
-#include <utility>
-
 namespace boost {
 namespace tree {
 
@@ -190,238 +187,6 @@
          }
 };
 
-// We'll abuse iterator_adaptor to determine our types.
-template <
-    class Derived
-  , class Base
-  , class Value               			= use_default
-  , class HorizontalTraversalOrCategory = use_default
-  , class VerticalTraversalOrCategory	= use_default
-  , class Reference           			= use_default
-  , class Difference          			= use_default
-  , class Size                			= use_default
->
-class eval_use_default
-: private iterator_adaptor<Derived 
-  						, Base
-  						, Value
-						, HorizontalTraversalOrCategory
-						, Reference
-						, Difference>
-, private iterator_adaptor<Derived 
-  						, Base
-  						, Value
-						, VerticalTraversalOrCategory
-						, Reference
-						, Difference>
-{
-private:
-	eval_use_default() {} // This class is used for typedefs only.
-	
-	typedef typename iterator_adaptor<Derived, Base, Value
-								, HorizontalTraversalOrCategory, Reference
-								, Difference>::super_t h_super_t;
-	typedef typename iterator_adaptor<Derived, Base, Value
-								, VerticalTraversalOrCategory, Reference
-								, Difference>::super_t v_super_t;
-public:
-	typedef typename h_super_t::value_type value_type;	
-	typedef typename h_super_t::reference reference;
-	typedef typename h_super_t::difference_type difference_type;
-	typedef typename h_super_t::pointer pointer;
-	typedef typename h_super_t::iterator_category iterator_category;
-	typedef typename v_super_t::iterator_category vertical_traversal;
-	
-	// size_type isn't in iterator_adaptor, 
-	// so we have to calculate it on our own: 
-	typedef typename mpl::eval_if<
-		is_same<Size, use_default>
-	  , boost::tree::cursor_size<Base>
-	  , mpl::identity<Size>
-	>::type size_type;
-};
-
-template <
-    class Derived
-  , class Base
-  , class Value               			= use_default
-  , class HorizontalTraversalOrCategory = use_default
-  , class VerticalTraversalOrCategory	= use_default
-  , class Reference           			= use_default
-  , class Difference          			= use_default
-  , class Size                			= use_default
->
-class cursor_adaptor 
-: public cursor_facade<
-	Derived 
-  , typename eval_use_default<Derived
-  							, Base
-  							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size>::value_type
-  , typename eval_use_default<Derived
-  							, Base
-  							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size>::iterator_category
-  , typename eval_use_default<Derived
-  							, Base
-  							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size>::vertical_traversal
-  , typename eval_use_default<Derived
-  							, Base
-  							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size>::reference
-  , typename eval_use_default<Derived
-  							, Base
-  							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size>::difference_type
-  , typename eval_use_default<Derived
-  							, Base
-  							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size>::size_type>
-{
-	friend class iterator_core_access;
-	friend class cursor_core_access;
-	typedef cursor_facade<Derived
-						, Value
-						, HorizontalTraversalOrCategory
-						, VerticalTraversalOrCategory
-						, Reference
-						, Difference
-						, Size> cursor_facade_;
-
- public:
-    cursor_adaptor() {}
-    
-    explicit cursor_adaptor(Base const& cur) : m_cursor(cur)
-    { }
-    
-    Base const& base() const
-    { return m_cursor; }
-    
-	typedef typename cursor_facade_::iterator_category iterator_category;
-
-    typedef typename cursor_facade_::horizontal_traversal horizontal_traversal;
-    typedef typename cursor_facade_::vertical_traversal cursor_category;
-    
-    typedef Size size_type;
-    typedef Base base_type;
-     
- protected:
-    typedef cursor_adaptor<Derived, Base, Value, HorizontalTraversalOrCategory,
-    					   VerticalTraversalOrCategory, Reference, Difference,
-    					   Size> cursor_adaptor_;
-	
-	typedef eval_use_default<Derived
-							, Base
-							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size> super_t;
-	
-	Base const& base_reference() const
-	{ return m_cursor; }
-	
-	Base& base_reference()
-	{ return m_cursor; }
-	
- public:
- 
- 	typename super_t::reference dereference() const
- 	{
- 		return *m_cursor;
- 	}
- 	
- 	void increment()
- 	{
- 		++m_cursor;
- 	}
- 	
- 	void decrement()
- 	{
- 		--m_cursor;
- 	}
- 	
- 	template <class OtherDerived, class OtherCursor, class V, class C, 
- 			  class R, class D, class S>
- 	bool equal(cursor_adaptor<OtherDerived, OtherCursor, 
- 							  V, C, R, D, S> const& x) const
- 	{
- 		return m_cursor == x.base();
- 	}
- 	
- 	template <class OtherDerived, class OtherCursor, class V, class C, 
- 			  class R, class D, class S>
- 	Difference distance_to(cursor_adaptor<OtherDerived, OtherCursor, 
- 							  			  V, C, R, D, S> const& x) const
-	{
-		return x.base() - m_cursor;
-	}
- 	
- 	bool const empty_() const
-	{
-		return m_cursor.empty();
-	}
-	
-	size_type const size_() const
-	{
-		return m_cursor.size();
-	}
-	
-	size_type const max_size_() const
-	{
-		return m_cursor.max_size();
-	}
-
-	size_type const par() const
-	{
-		return m_cursor.parity();
-	}
-
-	void left()
-	{
-		m_cursor.to_begin();
-	}
-
-	void right()
-	{
-		m_cursor.to_end();
-	}
-	
-	void up()
-	{
-		m_cursor.to_parent();
-	}
-	
-private:
-	Base m_cursor;
-};
-
 //TODO: Put somewhere else?
 template <class Value>
 struct metadata {
@@ -431,4 +196,4 @@
 } // namespace tree
 } // namespace boost
 
-#endif // BOOST_TREE_CURSOR_HELPERS_HPP
+#endif // BOOST_TREE_CURSOR_FACADE_HPP
Deleted: sandbox/SOC/2006/tree/trunk/boost/tree/cursor_helpers.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/cursor_helpers.hpp	2008-06-27 13:36:03 EDT (Fri, 27 Jun 2008)
+++ (empty file)
@@ -1,434 +0,0 @@
-//  Copyright (c) 2006-2008, 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 cursor_helpers.hpp
- * Cursor facade and adaptor implementations
- */
-
-// TODO: Use TR1 type_traits (integral_constant)
-
-#ifndef BOOST_TREE_CURSOR_HELPERS_HPP
-#define BOOST_TREE_CURSOR_HELPERS_HPP
-
-#include <boost/tree/cursor.hpp>
-
-#include <boost/iterator/iterator_facade.hpp>
-#include <boost/iterator/iterator_adaptor.hpp>
-
-#include <boost/type_traits/integral_constant.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/type_traits/is_convertible.hpp>
-#include <boost/utility/enable_if.hpp>
-
-#include <iterator>
-#include <utility>
-
-namespace boost {
-namespace tree {
-
-using boost::iterator_core_access;
-
-class cursor_core_access {
- public:
- 
- 	friend class iterator_core_access;
- 	
-  	template <class Facade>
-	static bool empty_(Facade const& f)
-	{
-		return f.empty_();
-	}
-	
- 	template <class Facade>
-	static typename Facade::size_type size_(Facade const& f)
-	{
-		return f.size_();
-	}
-	
-	template <class Facade>
-	static typename Facade::size_type max_size_(Facade const& f)
-	{
-		return f.max_size_();
-	}
-
-	template <class Facade>
-	static typename Facade::size_type par(Facade const& f)
-	{
-		return f.par();
-	}
-		
-	template <class Facade>
-	static void left(Facade& f)
-	{
-		f.left();
-	}
-	
-	template <class Facade>
-	static void right(Facade& f)
-	{
-		f.right();
-	}
-	
-	//only if ascending
-	template <class Facade>
-	static void up(Facade& f)
-	{
-		f.up();
-	}
-
-private:
-	cursor_core_access();
-};
-
-template <
-    class Derived             // The derived cursor type being constructed
-  , class Value
-  , class HorizontalCategoryOrTraversal
-  , class VerticalCategoryOrTraversal
-  , class Reference   = Value&
-  , class Difference  = std::ptrdiff_t
-  , class Size		  = std::size_t
->
-class cursor_facade 
- : public iterator_facade<Derived, Value, HorizontalCategoryOrTraversal, 
-						  Reference, Difference> {
- private:
-	// Curiously Recurring Template interface.
-
-	Derived& derived()
-	{
-	    return *static_cast<Derived*>(this);
-	}
-	
-	Derived const& derived() const
-	{
-	    return *static_cast<Derived const*>(this);
-	}
-
-	typedef typename cursor_facade::iterator_facade_ iterator_facade_;
-
- protected:
- 	// For use by derived classes
-	typedef cursor_facade<Derived, Value, HorizontalCategoryOrTraversal,
-						  VerticalCategoryOrTraversal, Reference, Difference> 
-			cursor_facade_;
- public:
-	typedef typename iterator_facade_::value_type value_type;
-	typedef Reference reference;
-	typedef Difference difference_type;
-	typedef typename iterator_facade_::pointer pointer;
-	typedef typename iterator_facade_::iterator_category iterator_category;
-
-	typedef Size size_type;
-
-	typedef bidirectional_traversal_tag cursor_category; //TODO
-	typedef typename 
-		iterator_category_to_traversal<iterator_category>::type
-		horizontal_traversal; 
-	typedef typename 
-		iterator_category_to_traversal<VerticalCategoryOrTraversal>::type
-		vertical_traversal; 
-
-	bool const empty() const
-	{
-		return cursor_core_access::empty_(this->derived());
-	}
-	
-	size_type const size() const
-	{
-		return cursor_core_access::size_(this->derived());
-	}
-	
-	size_type const max_size() const
-	{
-		return cursor_core_access::max_size_(this->derived());
-	}
-
-	size_type const parity() const
-	{
-		return cursor_core_access::par(this->derived());
-	}
-
- 	Derived& to_begin()
- 	{
-		cursor_core_access::left(this->derived());
-		return this->derived();
- 	}
- 				 
- 	Derived begin()
- 	{
- 		Derived tmp(this->derived());
- 		return tmp.to_begin();
- 	}
-
- 	Derived& to_end()
- 	{
-		cursor_core_access::right(this->derived());
-		return this->derived();
- 	}
- 	
- 	Derived end()
- 	{
- 		Derived tmp(this->derived());
- 		return tmp.to_end();
-  	}
- 	
- 	Derived& to_parent()
- 	{
- 		cursor_core_access::up(this->derived());
- 		return this->derived();
- 	}
- 	
- 	Derived parent()
- 	{
- 		Derived tmp(this->derived());
- 		return tmp.to_parent();
- 	}
-};
-
-// We'll abuse iterator_adaptor to determine our types.
-template <
-    class Derived
-  , class Base
-  , class Value               			= use_default
-  , class HorizontalTraversalOrCategory = use_default
-  , class VerticalTraversalOrCategory	= use_default
-  , class Reference           			= use_default
-  , class Difference          			= use_default
-  , class Size                			= use_default
->
-class eval_use_default
-: private iterator_adaptor<Derived 
-  						, Base
-  						, Value
-						, HorizontalTraversalOrCategory
-						, Reference
-						, Difference>
-, private iterator_adaptor<Derived 
-  						, Base
-  						, Value
-						, VerticalTraversalOrCategory
-						, Reference
-						, Difference>
-{
-private:
-	eval_use_default() {} // This class is used for typedefs only.
-	
-	typedef typename iterator_adaptor<Derived, Base, Value
-								, HorizontalTraversalOrCategory, Reference
-								, Difference>::super_t h_super_t;
-	typedef typename iterator_adaptor<Derived, Base, Value
-								, VerticalTraversalOrCategory, Reference
-								, Difference>::super_t v_super_t;
-public:
-	typedef typename h_super_t::value_type value_type;	
-	typedef typename h_super_t::reference reference;
-	typedef typename h_super_t::difference_type difference_type;
-	typedef typename h_super_t::pointer pointer;
-	typedef typename h_super_t::iterator_category iterator_category;
-	typedef typename v_super_t::iterator_category vertical_traversal;
-	
-	// size_type isn't in iterator_adaptor, 
-	// so we have to calculate it on our own: 
-	typedef typename mpl::eval_if<
-		is_same<Size, use_default>
-	  , boost::tree::cursor_size<Base>
-	  , mpl::identity<Size>
-	>::type size_type;
-};
-
-template <
-    class Derived
-  , class Base
-  , class Value               			= use_default
-  , class HorizontalTraversalOrCategory = use_default
-  , class VerticalTraversalOrCategory	= use_default
-  , class Reference           			= use_default
-  , class Difference          			= use_default
-  , class Size                			= use_default
->
-class cursor_adaptor 
-: public cursor_facade<
-	Derived 
-  , typename eval_use_default<Derived
-  							, Base
-  							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size>::value_type
-  , typename eval_use_default<Derived
-  							, Base
-  							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size>::iterator_category
-  , typename eval_use_default<Derived
-  							, Base
-  							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size>::vertical_traversal
-  , typename eval_use_default<Derived
-  							, Base
-  							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size>::reference
-  , typename eval_use_default<Derived
-  							, Base
-  							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size>::difference_type
-  , typename eval_use_default<Derived
-  							, Base
-  							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size>::size_type>
-{
-	friend class iterator_core_access;
-	friend class cursor_core_access;
-	typedef cursor_facade<Derived
-						, Value
-						, HorizontalTraversalOrCategory
-						, VerticalTraversalOrCategory
-						, Reference
-						, Difference
-						, Size> cursor_facade_;
-
- public:
-    cursor_adaptor() {}
-    
-    explicit cursor_adaptor(Base const& cur) : m_cursor(cur)
-    { }
-    
-    Base const& base() const
-    { return m_cursor; }
-    
-	typedef typename cursor_facade_::iterator_category iterator_category;
-
-    typedef typename cursor_facade_::horizontal_traversal horizontal_traversal;
-    typedef typename cursor_facade_::vertical_traversal cursor_category;
-    
-    typedef Size size_type;
-    typedef Base base_type;
-     
- protected:
-    typedef cursor_adaptor<Derived, Base, Value, HorizontalTraversalOrCategory,
-    					   VerticalTraversalOrCategory, Reference, Difference,
-    					   Size> cursor_adaptor_;
-	
-	typedef eval_use_default<Derived
-							, Base
-							, Value
-							, HorizontalTraversalOrCategory
-							, VerticalTraversalOrCategory
-							, Reference
-							, Difference
-							, Size> super_t;
-	
-	Base const& base_reference() const
-	{ return m_cursor; }
-	
-	Base& base_reference()
-	{ return m_cursor; }
-	
- public:
- 
- 	typename super_t::reference dereference() const
- 	{
- 		return *m_cursor;
- 	}
- 	
- 	void increment()
- 	{
- 		++m_cursor;
- 	}
- 	
- 	void decrement()
- 	{
- 		--m_cursor;
- 	}
- 	
- 	template <class OtherDerived, class OtherCursor, class V, class C, 
- 			  class R, class D, class S>
- 	bool equal(cursor_adaptor<OtherDerived, OtherCursor, 
- 							  V, C, R, D, S> const& x) const
- 	{
- 		return m_cursor == x.base();
- 	}
- 	
- 	template <class OtherDerived, class OtherCursor, class V, class C, 
- 			  class R, class D, class S>
- 	Difference distance_to(cursor_adaptor<OtherDerived, OtherCursor, 
- 							  			  V, C, R, D, S> const& x) const
-	{
-		return x.base() - m_cursor;
-	}
- 	
- 	bool const empty_() const
-	{
-		return m_cursor.empty();
-	}
-	
-	size_type const size_() const
-	{
-		return m_cursor.size();
-	}
-	
-	size_type const max_size_() const
-	{
-		return m_cursor.max_size();
-	}
-
-	size_type const par() const
-	{
-		return m_cursor.parity();
-	}
-
-	void left()
-	{
-		m_cursor.to_begin();
-	}
-
-	void right()
-	{
-		m_cursor.to_end();
-	}
-	
-	void up()
-	{
-		m_cursor.to_parent();
-	}
-	
-private:
-	Base m_cursor;
-};
-
-//TODO: Put somewhere else?
-template <class Value>
-struct metadata {
-	struct type {};
-};
-
-} // namespace tree
-} // namespace boost
-
-#endif // BOOST_TREE_CURSOR_HELPERS_HPP
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/detail/cursor/forest.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/detail/cursor/forest.hpp	(original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/detail/cursor/forest.hpp	2008-06-27 13:36:03 EDT (Fri, 27 Jun 2008)
@@ -16,18 +16,11 @@
 #ifndef BOOST_TREE_DETAIL_CURSOR_FOREST_HPP
 #define BOOST_TREE_DETAIL_CURSOR_FOREST_HPP
 
-//#include <boost/tree/detail/cursor/nary.hpp>
-
 #include <boost/tree/cursor.hpp>
-#include <boost/tree/cursor_helpers.hpp>
-
-//#include <boost/type_traits/integral_constant.hpp>
-//
-//#include <boost/type_traits/is_convertible.hpp>
-//#include <boost/utility/enable_if.hpp>
-//
-#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/tree/cursor_adaptor.hpp>
 
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/utility/enable_if.hpp>
 
 #include <iterator>
 #include <utility>
@@ -39,76 +32,6 @@
 using boost::tree::cursor_core_access;
 using boost::iterator_core_access;
 
-//template <class Cursor>
-//class forest_cursor;
-//
-//template<class Cursor>
-//class const_forest_cursor
-// : public cursor_adaptor<const_forest_cursor<Cursor>
-//      , Cursor const
-//      , boost::use_default
-//      , bidirectional_traversal_tag
-//      , forward_traversal_tag
-//    > {
-// private:
-//    struct enabler {};
-//
-// public:
-// 	//TODO: Tidy up typedefs
-//
-//	typedef Cursor base_cursor;
-//	
-// 	typedef forest_cursor<Cursor> cursor;
-// 	typedef const_forest_cursor<Cursor> const_cursor;
-//
-//	typedef typename cursor_size<base_cursor>::type size_type;
-//
-//	typedef bidirectional_traversal_tag cursor_category;
-//	
-//	typedef typename Cursor::metadata_type metadata_type;
-//	
-//	// Container-specific:
-//	typedef cursor iterator;  // For (range) concepts' sake, mainly
-//	typedef const_cursor const_iterator;
-//	
-// 	// Common iterator facade stuff
-//    const_forest_cursor()
-//     : const_forest_cursor::cursor_adaptor_() {}
-//
-//    explicit const_forest_cursor(base_cursor p)
-//     : const_forest_cursor::cursor_adaptor_(p) {}
-//      
-//    template <class OtherCursor>
-//    const_forest_cursor(
-//        const_forest_cursor<OtherCursor> const& other
-//      , typename boost::enable_if<
-//            boost::is_convertible<OtherCursor*, 
-//           	typename Cursor::base_pointer>  // is that correct?
-//          , enabler
-//        >::type = enabler()
-//    )
-//      : const_forest_cursor::cursor_adaptor_(other.base()) {}
-//
-//	operator base_cursor()
-//	{
-//		return this->base();
-//	}	
-// private:
-//	
-//    friend class boost::iterator_core_access;
-//       
-//    void increment()
-//    {
-//		 (++this->base_reference()).to_begin();
-//    }
-//    
-//    void decrement()
-//    {
-//		--this->base_reference().to_parent();
-//    }
-//
-//};
-
 template <class Cursor> 
 class forest_cursor
  : public cursor_adaptor<forest_cursor<Cursor>
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/detail/cursor/multiway.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/detail/cursor/multiway.hpp	(original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/detail/cursor/multiway.hpp	2008-06-27 13:36:03 EDT (Fri, 27 Jun 2008)
@@ -12,15 +12,10 @@
 #include <boost/tree/detail/cursor/nary.hpp>
 
 #include <boost/tree/cursor.hpp>
-#include <boost/tree/cursor_helpers.hpp>
-
-//#include <boost/type_traits/integral_constant.hpp>
-//
-//#include <boost/type_traits/is_convertible.hpp>
-//#include <boost/utility/enable_if.hpp>
-//
-//#include <boost/iterator/iterator_adaptor.hpp>
+#include <boost/tree/cursor_adaptor.hpp>
 
+#include <boost/type_traits/is_convertible.hpp>
+#include <boost/utility/enable_if.hpp>
 
 #include <iterator>
 #include <utility>
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/detail/cursor/nary.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/detail/cursor/nary.hpp	(original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/detail/cursor/nary.hpp	2008-06-27 13:36:03 EDT (Fri, 27 Jun 2008)
@@ -13,7 +13,7 @@
 #define BOOST_TREE_DETAIL_CURSOR_NARY_HPP
 
 
-#include <boost/tree/cursor_helpers.hpp>
+#include <boost/tree/cursor_facade.hpp>
 #include <boost/tree/detail/node/nary.hpp>
 
 #include <boost/mpl/eval_if.hpp>