$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r55524 - in sandbox/SOC/2006/tree/trunk/boost/tree: . detail
From: ockham_at_[hidden]
Date: 2009-08-11 08:17:33
Author: bernhard.reiter
Date: 2009-08-11 08:17:31 EDT (Tue, 11 Aug 2009)
New Revision: 55524
URL: http://svn.boost.org/trac/boost/changeset/55524
Log:
nary_node typedef cleanups, and: make nary_cursor::m_pos an implementation detail
Text files modified: 
   sandbox/SOC/2006/tree/trunk/boost/tree/binary_tree.hpp            |    14 +++++-----                              
   sandbox/SOC/2006/tree/trunk/boost/tree/detail/multiway_cursor.hpp |     2                                         
   sandbox/SOC/2006/tree/trunk/boost/tree/detail/nary_cursor.hpp     |    50 +++++++++++++++++---------------------- 
   sandbox/SOC/2006/tree/trunk/boost/tree/detail/nary_node.hpp       |    31 +++++++++---------------                
   sandbox/SOC/2006/tree/trunk/boost/tree/detail/node_traits.hpp     |    15 ++++-------                             
   5 files changed, 48 insertions(+), 64 deletions(-)
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/binary_tree.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/binary_tree.hpp	(original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/binary_tree.hpp	2009-08-11 08:17:31 EDT (Tue, 11 Aug 2009)
@@ -195,7 +195,7 @@
         //m_node_alloc.construct(p_node, val);
         *p_node = node_type(val);
         
-        detail::attach(pos.base_node(), pos.the_node(), p_node, p_node->m_children[pos.m_pos]);
+        detail::attach(pos.parent_node(), pos.child_node(), p_node, p_node->m_children[pos.index()]);
 
         // Readjust begin
 //        if ((pos == this->inorder_first()))
@@ -248,7 +248,7 @@
         if (!position.is_leaf()) {
             node_pointer pos_node = 
                 static_cast<node_pointer>(
-                    position.the_node()
+                    position.child_node()
                 );
 
             size_type parent_idx = index(position.parent());
@@ -274,7 +274,7 @@
         if (!position.is_leaf()) {
             node_pointer pos_node = 
                 static_cast<node_pointer>(
-                     position.the_node()
+                     position.child_node()
                 );
 
             // recurse
@@ -289,7 +289,7 @@
 public:
     void rotate(cursor& pos)
     {
-        pos.m_pos = detail::rotate(pos.the_node(), pos.base_node(), pos.m_pos);
+        detail::rotate(pos.child_node(), pos.parent_node(), pos.index());
     }
     
     /**
@@ -380,7 +380,7 @@
     void splice(cursor position, binary_tree& x, cursor root)
     {
         // x isn't actually used currently...
-        detail::splice(position.base_node(), position.the_node(), root.the_node());
+        detail::splice(position.parent_node(), position.child_node(), root.child_node());
     }
 
     /**
@@ -391,11 +391,11 @@
     cursor erase(cursor position)
     {
         size_type idx = index(position);
-        node_pointer p_node = static_cast<node_pointer>(position.base_node());
+        node_pointer p_node = static_cast<node_pointer>(position.parent_node());
 
         p_node = static_cast<node_pointer>(p_node->detach(idx));
 
-        position.base_node() = static_cast<node_base_pointer>(p_node->m_children[idx]);
+        position.parent_node() = static_cast<node_base_pointer>(p_node->m_children[idx]);
 
         m_node_alloc.destroy(p_node);
         m_node_alloc.deallocate(p_node, 1);
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/detail/multiway_cursor.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/detail/multiway_cursor.hpp	(original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/detail/multiway_cursor.hpp	2009-08-11 08:17:31 EDT (Tue, 11 Aug 2009)
@@ -131,7 +131,7 @@
         multiway_tree_cursor<OtherCursor> const& other
       , typename boost::enable_if<
             boost::is_convertible<OtherCursor*, 
-               typename Cursor::base_pointer>  // is that correct?
+               typename Cursor::node_base_type*>  // is that correct?
           , enabler
         >::type = enabler()
     )
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/detail/nary_cursor.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/detail/nary_cursor.hpp	(original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/detail/nary_cursor.hpp	2009-08-11 08:17:31 EDT (Tue, 11 Aug 2009)
@@ -34,8 +34,8 @@
  : public cursor_adaptor<ascending_nary_cursor<Node>
       , typename mpl::eval_if<
                         is_const<Node>
-                      , add_const<typename Node::base_type>
-                      , mpl::identity<typename Node::base_type>
+                      , add_const<typename Node::node_base>
+                      , mpl::identity<typename Node::node_base>
                     >::type*                  
       , typename mpl::eval_if<
                     is_const<Node>
@@ -47,21 +47,17 @@
     > {
 
 private:
-    typedef typename Node::base_type node_base;
-      
-    typedef typename mpl::eval_if<
-                        is_const<Node>
-                      , add_const<node_base>
-                      , mpl::identity<node_base>
-                    >::type base_type;
-
-    typedef base_type* base_pointer;
-      
     struct enabler {};
-     
+
     typedef Node node_type;
     typedef node_type* node_pointer;
-    
+
+    typedef typename mpl::eval_if<
+                        is_const<Node>
+                      , add_const<typename Node::node_base>
+                      , mpl::identity<typename Node::node_base>
+                    >::type node_base_type;
+
 public:
     typedef typename mpl::eval_if<
                         is_const<Node>
@@ -89,7 +85,7 @@
     ascending_nary_cursor()
       : ascending_nary_cursor::cursor_adaptor_(0), m_pos(0) {}
 
-    explicit ascending_nary_cursor(base_pointer p, size_type pos) 
+    explicit ascending_nary_cursor(node_base_type* p, size_type pos) 
     : ascending_nary_cursor::cursor_adaptor_(p), m_pos(pos) {}
 
     template <class OtherNode>
@@ -102,9 +98,8 @@
     )
     : ascending_nary_cursor::cursor_adaptor_(other.base()), m_pos(other.m_pos) {}
 
-     size_type m_pos;
-
-private: 
+private:
+    size_type m_pos;
 
     friend class iterator_core_access;
     friend class cursor_core_access;
@@ -173,7 +168,7 @@
     void left()
     {
         this->base_reference() = 
-            static_cast<node_base*>(this->base_reference()->m_children[m_pos]);
+            static_cast<node_base_type*>(this->base_reference()->m_children[m_pos]);
         m_pos  = 0;
         //this->base_reference() = this->base_reference()->operator[0];
     }
@@ -182,7 +177,7 @@
     {
         size_type new_pos = this->base_reference()->m_children.size()-1; 
         this->base_reference() = 
-            static_cast<node_base*>(this->base_reference()->m_children[m_pos]);
+            static_cast<node_base_type*>(this->base_reference()->m_children[m_pos]);
         m_pos  = new_pos;
         //this->base_reference() = this->base_reference()->operator[0];
     }
@@ -191,38 +186,37 @@
     void up()
     {
         m_pos  = this->base_reference()->get_index();
-        this->base_reference() = static_cast<base_pointer>(this->base_reference()->parent());
+        this->base_reference() = static_cast<node_base_type*>(this->base_reference()->parent());
         //this->base_reference() = this->base_reference()->parent();
     }
     
 protected:
     bool is_on_top() const
     {
-        base_pointer parent_begin_node = 
-            static_cast<base_pointer>(this->base_reference()->parent())
+        node_base_type* parent_begin_node = 
+            static_cast<node_base_type*>(this->base_reference()->parent())
             ->m_children[this->base_reference()->get_index()];
         return (!m_pos && (this->base_reference() != parent_begin_node));
         // (*this != this->parent().begin())
     }
 
 public:
-    
-    base_pointer const& base_node() const
+    node_base_type* const& parent_node() const
     {
         return this->base_reference();
     }
 
-    base_pointer& base_node()
+    node_base_type*& parent_node()
     {
         return this->base_reference();
     }
 
-    typename node_type::node_with_children_base* const& the_node() const
+    typename node_base_type::node_with_children_base* const& child_node() const
     {
         return this->base_reference()->m_children[m_pos];
     }
 
-    typename node_type::node_with_children_base*& the_node()
+    typename node_base_type::node_with_children_base*& child_node()
     {
         return this->base_reference()->m_children[m_pos];
     }
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/detail/nary_node.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/detail/nary_node.hpp	(original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/detail/nary_node.hpp	2009-08-11 08:17:31 EDT (Tue, 11 Aug 2009)
@@ -89,18 +89,13 @@
 
 class node_base
 : public node_with_parent_base, public node_with_children_base {
-    typedef node_base self_type;
-    
 public:
-    typedef self_type* base_pointer;
-    typedef self_type const* const_base_pointer;
-        
     node_base() : node_with_parent_base(), node_with_children_base() {}
 
     node_base(node_with_parent_base* p)
     : node_with_parent_base(p), node_with_children_base() {}
     
-    base_pointer detach(children_type::size_type m_pos)
+    node_base* detach(children_type::size_type m_pos)
     {
         node_with_children_base::children_type::size_type parent_idx = get_index();
 
@@ -116,17 +111,19 @@
     // O(1)
     children_type::size_type const get_index() const
     {
-        return (static_cast<base_pointer>(this->m_parent)->m_children[0] == this ? 0 : 1);
+        return (static_cast<node_base*>(this->m_parent)->m_children[0] == this ? 0 : 1);
     }
 };
 
-node_with_children_base::children_type::size_type rotate(node_with_children_base*& child, node_base* parent, node_with_children_base::children_type::size_type const& c)
+//node_with_children_base::children_type::size_type
+void
+rotate(node_with_children_base*& child, node_base* parent
+     , node_with_children_base::children_type::size_type const& c)
 {
     //TODO: Optimise.
-    typedef node_base* base_pointer;
-    base_pointer q = static_cast<node_base*>(child);
+    node_base* q = static_cast<node_base*>(child);
     
-    base_pointer B = static_cast<node_base*>(child->m_children[(c ? 0 : 1)]);
+    node_base* B = static_cast<node_base*>(child->m_children[(c ? 0 : 1)]);
     //pre_rotate();
     
     //B swaps places with its m_parent:
@@ -136,10 +133,10 @@
     q->m_parent = parent->m_parent;
 
     node_with_children_base::children_type::size_type qp = parent->get_index();
-    static_cast<base_pointer>(q->m_parent)->m_children[qp] = q;
+    static_cast<node_base*>(q->m_parent)->m_children[qp] = q;
     parent->m_parent = q;
     q->m_children[(c ? 0 : 1)] = parent;
-    return qp;
+    //return qp;
     //return (c ? 0 : 1);
 }
 
@@ -173,10 +170,6 @@
     typedef ascending_node<value_type> node_type;
     typedef node_type* node_pointer;
     typedef node_type& node_reference;
-
-    typedef node_base base_type;
-    typedef base_type* base_pointer;
-    typedef base_type const* const_base_pointer;
     
     typedef value_type& reference;
     typedef value_type const& const_reference;
@@ -189,9 +182,9 @@
 
     const_reference operator*() const { return m_data; } 
     
-    ascending_node(value_type data) : base_type(), m_data(data) {}
+    ascending_node(value_type data) : node_base(), m_data(data) {}
  
-    ascending_node(value_type data, base_pointer p) : base_type(p), m_data(data) {}
+    ascending_node(value_type data, node_base* p) : node_base(p), m_data(data) {}
     
 private:
     value_type m_data;
Modified: sandbox/SOC/2006/tree/trunk/boost/tree/detail/node_traits.hpp
==============================================================================
--- sandbox/SOC/2006/tree/trunk/boost/tree/detail/node_traits.hpp	(original)
+++ sandbox/SOC/2006/tree/trunk/boost/tree/detail/node_traits.hpp	2009-08-11 08:17:31 EDT (Tue, 11 Aug 2009)
@@ -17,20 +17,17 @@
     typedef Node node_type;
     
     // Value
-    typedef typename node_type::value_type    value_type;
-    typedef typename node_type::pointer        pointer;
-    typedef typename node_type::reference    reference;
+    typedef typename node_type::value_type  value_type;
+    typedef typename node_type::pointer     pointer;
+    typedef typename node_type::reference   reference;
     //typedef typename node_type::size_type    size_type;
     
     // Node
-    typedef typename node_type::node_pointer node_pointer;
-    typedef typename node_type::node_reference node_reference;
+    typedef typename node_type::node_pointer    node_pointer;
+    typedef typename node_type::node_reference  node_reference;
     
     // Node base
-    typedef typename node_type::base_type node_base_type;
-    typedef typename node_type::base_pointer node_base_pointer;
-    
-    typedef node_base_pointer position_type;
+    typedef typename node_type::node_base   node_base_type;
 };
 
 } // namespace detail