$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r80782 - sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node
From: adam.wulkiewicz_at_[hidden]
Date: 2012-09-30 08:54:26
Author: awulkiew
Date: 2012-09-30 08:54:25 EDT (Sun, 30 Sep 2012)
New Revision: 80782
URL: http://svn.boost.org/trac/boost/changeset/80782
Log:
code related to nodes visitation moved to XXX_visitor.hpp
Added:
   sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/static_visitor.hpp   (contents, props changed)
Text files modified: 
   sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/dynamic_visitor.hpp    |    24 +++++++++++                             
   sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node.hpp               |     4                                         
   sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node_d_mem_dynamic.hpp |    22 ----------                              
   sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node_s_mem_dynamic.hpp |    87 ++++++++++----------------------------- 
   sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node_s_mem_static.hpp  |    29 ++++++------                            
   5 files changed, 63 insertions(+), 103 deletions(-)
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/dynamic_visitor.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/dynamic_visitor.hpp	(original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/dynamic_visitor.hpp	2012-09-30 08:54:25 EDT (Sun, 30 Sep 2012)
@@ -63,6 +63,30 @@
     virtual void operator()(leaf &) = 0;
 };
 
+// nodes conversion
+
+template <typename Derived, typename Parameters, typename Value, typename Box, typename Allocators, typename Tag>
+inline Derived & get(dynamic_node<Value, Parameters, Box, Allocators, Tag> & n)
+{
+    assert(dynamic_cast<Derived*>(&n));
+    return static_cast<Derived&>(n);
+}
+
+template <typename Derived, typename Parameters, typename Value, typename Box, typename Allocators, typename Tag>
+inline Derived * get(dynamic_node<Value, Parameters, Box, Allocators, Tag> * n)
+{
+    assert(dynamic_cast<Derived*>(n));
+    return static_cast<Derived*>(n);
+}
+
+// apply visitor
+
+template <typename Visitor, typename Visitable>
+inline void apply_visitor(Visitor &v, Visitable & n)
+{
+    n.apply_visitor(v);
+}
+
 }} // namespace detail::rtree
 
 }}} // namespace boost::geometry::index
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node.hpp	(original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node.hpp	2012-09-30 08:54:25 EDT (Sun, 30 Sep 2012)
@@ -14,9 +14,9 @@
 #include <boost/geometry/extensions/index/rtree/node/concept.hpp>
 
 #include <boost/geometry/extensions/index/rtree/node/node_d_mem_dynamic.hpp>
-#include <boost/geometry/extensions/index/rtree/node/node_s_mem_dynamic.hpp>
-
 #include <boost/geometry/extensions/index/rtree/node/node_d_mem_static.hpp>
+
+#include <boost/geometry/extensions/index/rtree/node/node_s_mem_dynamic.hpp>
 #include <boost/geometry/extensions/index/rtree/node/node_s_mem_static.hpp>
 
 #include <boost/geometry/algorithms/expand.hpp>
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node_d_mem_dynamic.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node_d_mem_dynamic.hpp	(original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node_d_mem_dynamic.hpp	2012-09-30 08:54:25 EDT (Sun, 30 Sep 2012)
@@ -77,22 +77,6 @@
     typedef dynamic_leaf<Value, Parameters, Box, Allocators, node_d_mem_dynamic_tag> type;
 };
 
-// nodes conversion
-
-template <typename Derived, typename Parameters, typename Value, typename Box, typename Allocators, typename Tag>
-inline Derived & get(dynamic_node<Value, Parameters, Box, Allocators, Tag> & n)
-{
-    assert(dynamic_cast<Derived*>(&n));
-    return static_cast<Derived&>(n);
-}
-
-template <typename Derived, typename Parameters, typename Value, typename Box, typename Allocators, typename Tag>
-inline Derived * get(dynamic_node<Value, Parameters, Box, Allocators, Tag> * n)
-{
-    assert(dynamic_cast<Derived*>(n));
-    return static_cast<Derived*>(n);
-}
-
 // visitor traits
 
 template <typename Value, typename Parameters, typename Box, typename Allocators, bool IsVisitableConst>
@@ -101,12 +85,6 @@
     typedef dynamic_visitor<Value, Parameters, Box, Allocators, node_d_mem_dynamic_tag, IsVisitableConst> type;
 };
 
-template <typename Visitor, typename Visitable>
-inline void apply_visitor(Visitor &v, Visitable & n)
-{
-    n.apply_visitor(v);
-}
-
 // element's indexable type
 
 template <typename Value, typename Translator>
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node_s_mem_dynamic.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node_s_mem_dynamic.hpp	(original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node_s_mem_dynamic.hpp	2012-09-30 08:54:25 EDT (Sun, 30 Sep 2012)
@@ -12,7 +12,8 @@
 #define BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_NODE_NODE_DEFAULT_VARIANT_HPP
 
 #include <vector>
-#include <boost/variant.hpp>
+
+#include <boost/geometry/extensions/index/rtree/node/static_visitor.hpp>
 
 namespace boost { namespace geometry { namespace index {
 
@@ -21,7 +22,7 @@
 // nodes default types
 
 template <typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
-struct internal_node_variant
+struct static_internal_node
 {
     typedef std::vector<
         std::pair<
@@ -31,7 +32,7 @@
         typename Allocators::internal_node_elements_allocator_type
     > elements_type;
 
-    inline internal_node_variant(typename Allocators::internal_node_elements_allocator_type & al)
+    inline static_internal_node(typename Allocators::internal_node_elements_allocator_type & al)
         : elements(al)
     {}
 
@@ -39,14 +40,14 @@
 };
 
 template <typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
-struct leaf_variant
+struct static_leaf
 {
     typedef std::vector<
         Value,
         typename Allocators::leaf_elements_allocator_type
     > elements_type;
 
-    inline leaf_variant(typename Allocators::leaf_elements_allocator_type & al)
+    inline static_leaf(typename Allocators::leaf_elements_allocator_type & al)
         : elements(al)
     {}
 
@@ -59,47 +60,23 @@
 struct node<Value, Parameters, Box, Allocators, node_s_mem_dynamic_tag>
 {
         typedef boost::variant<
-		leaf_variant<Value, Parameters, Box, Allocators, node_s_mem_dynamic_tag>,
-		internal_node_variant<Value, Parameters, Box, Allocators, node_s_mem_dynamic_tag>
+		static_leaf<Value, Parameters, Box, Allocators, node_s_mem_dynamic_tag>,
+		static_internal_node<Value, Parameters, Box, Allocators, node_s_mem_dynamic_tag>
 	> type;
 };
 
 template <typename Value, typename Parameters, typename Box, typename Allocators>
 struct internal_node<Value, Parameters, Box, Allocators, node_s_mem_dynamic_tag>
 {
-    typedef internal_node_variant<Value, Parameters, Box, Allocators, node_s_mem_dynamic_tag> type;
+    typedef static_internal_node<Value, Parameters, Box, Allocators, node_s_mem_dynamic_tag> type;
 };
 
 template <typename Value, typename Parameters, typename Box, typename Allocators>
 struct leaf<Value, Parameters, Box, Allocators, node_s_mem_dynamic_tag>
 {
-    typedef leaf_variant<Value, Parameters, Box, Allocators, node_s_mem_dynamic_tag> type;
+    typedef static_leaf<Value, Parameters, Box, Allocators, node_s_mem_dynamic_tag> type;
 };
 
-// nodes conversion
-
-template <typename V, typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
-inline V & get(
-	boost::variant<
-		leaf_variant<Value, Parameters, Box, Allocators, Tag>,
-		internal_node_variant<Value, Parameters, Box, Allocators, Tag>
-	> &v
-)
-{
-    return boost::get<V>(v);
-}
-
-template <typename V, typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
-inline V * get(
-	boost::variant<
-		leaf_variant<Value, Parameters, Box, Allocators, Tag>,
-		internal_node_variant<Value, Parameters, Box, Allocators, Tag>
-	> *v
-)
-{
-    return boost::get<V>(v);
-}
-
 // visitor traits
 
 template <typename Value, typename Parameters, typename Box, typename Allocators, bool IsVisitableConst>
@@ -108,26 +85,6 @@
     typedef static_visitor<> type;
 };
 
-template <typename Visitor, typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
-inline void apply_visitor(Visitor & v,
-						  boost::variant<
-							  leaf_variant<Value, Parameters, Box, Allocators, Tag>,
-							  internal_node_variant<Value, Parameters, Box, Allocators, Tag>
-						  > & n)
-{
-    boost::apply_visitor(v, n);
-}
-
-template <typename Visitor, typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
-inline void apply_visitor(Visitor & v,
-						  boost::variant<
-							  leaf_variant<Value, Parameters, Box, Allocators, Tag>,
-							  internal_node_variant<Value, Parameters, Box, Allocators, Tag>
-						  > const& n)
-{
-	boost::apply_visitor(v, n);
-}
-
 // element's indexable type
 
 template <typename Value, typename Parameters, typename Box, typename Allocators, typename Tag, typename Translator>
@@ -135,8 +92,8 @@
     std::pair<
         Box,
         boost::variant<
-            leaf_variant<Value, Parameters, Box, Allocators, Tag>,
-            internal_node_variant<Value, Parameters, Box, Allocators, Tag>
+            static_leaf<Value, Parameters, Box, Allocators, Tag>,
+            static_internal_node<Value, Parameters, Box, Allocators, Tag>
         > *
     >,
     Translator
@@ -152,8 +109,8 @@
 element_indexable(std::pair<
                                           Box,
                                           boost::variant<
-						  leaf_variant<Value, Parameters, Box, Allocators, Tag>,
-						  internal_node_variant<Value, Parameters, Box, Allocators, Tag>
+						  static_leaf<Value, Parameters, Box, Allocators, Tag>,
+						  static_internal_node<Value, Parameters, Box, Allocators, Tag>
 					  > *
 				  > const& el,
                                   Translator const&)
@@ -239,14 +196,14 @@
 template <typename Allocators, typename Value, typename Parameters, typename Box, typename Tag>
 struct create_node<
     Allocators,
-    internal_node_variant<Value, Parameters, Box, Allocators, Tag>
+    static_internal_node<Value, Parameters, Box, Allocators, Tag>
 >
 {
     static inline typename node<Value, Parameters, Box, Allocators, Tag>::type *
     apply(Allocators & allocators)
     {
         return create_node_variant<
-            internal_node_variant<Value, Parameters, Box, Allocators, Tag>
+            static_internal_node<Value, Parameters, Box, Allocators, Tag>
         >::template apply<
             typename node<Value, Parameters, Box, Allocators, Tag>::type
         >(allocators.node_allocator, allocators.internal_node_elements_allocator);
@@ -256,14 +213,14 @@
 template <typename Allocators, typename Value, typename Parameters, typename Box, typename Tag>
 struct create_node<
     Allocators,
-    leaf_variant<Value, Parameters, Box, Allocators, Tag>
+    static_leaf<Value, Parameters, Box, Allocators, Tag>
 >
 {
     static inline typename node<Value, Parameters, Box, Allocators, Tag>::type *
     apply(Allocators & allocators)
     {
         return create_node_variant<
-            leaf_variant<Value, Parameters, Box, Allocators, Tag>
+            static_leaf<Value, Parameters, Box, Allocators, Tag>
         >::template apply<
             typename node<Value, Parameters, Box, Allocators, Tag>::type
         >(allocators.node_allocator, allocators.leaf_elements_allocator);
@@ -275,13 +232,13 @@
 template <typename Allocators, typename Value, typename Parameters, typename Box, typename Tag>
 struct destroy_node<
     Allocators,
-    internal_node_variant<Value, Parameters, Box, Allocators, Tag>
+    static_internal_node<Value, Parameters, Box, Allocators, Tag>
 >
 {
     static inline void apply(Allocators & allocators, typename node<Value, Parameters, Box, Allocators, Tag>::type * n)
     {
         destroy_node_variant<
-            internal_node_variant<Value, Parameters, Box, Allocators, Tag>
+            static_internal_node<Value, Parameters, Box, Allocators, Tag>
         >::apply(allocators.node_allocator, n);
     }
 };
@@ -289,13 +246,13 @@
 template <typename Allocators, typename Value, typename Parameters, typename Box, typename Tag>
 struct destroy_node<
     Allocators,
-    leaf_variant<Value, Parameters, Box, Allocators, Tag>
+    static_leaf<Value, Parameters, Box, Allocators, Tag>
 >
 {
     static inline void apply(Allocators & allocators, typename node<Value, Parameters, Box, Allocators, Tag>::type * n)
     {
         destroy_node_variant<
-            leaf_variant<Value, Parameters, Box, Allocators, Tag>
+            static_leaf<Value, Parameters, Box, Allocators, Tag>
         >::apply(allocators.node_allocator, n);
     }
 };
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node_s_mem_static.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node_s_mem_static.hpp	(original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/node_s_mem_static.hpp	2012-09-30 08:54:25 EDT (Sun, 30 Sep 2012)
@@ -11,8 +11,9 @@
 #ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_NODE_NODE_DEFAULT_STATIC_VARIANT_HPP
 #define BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_NODE_NODE_DEFAULT_STATIC_VARIANT_HPP
 
-#include <vector>
-#include <boost/variant.hpp>
+#include <boost/geometry/extensions/index/pushable_array.hpp>
+
+#include <boost/geometry/extensions/index/rtree/node/static_visitor.hpp>
 
 namespace boost { namespace geometry { namespace index {
 
@@ -21,7 +22,7 @@
 // nodes default types
 
 template <typename Value, typename Parameters, typename Box, typename Allocators>
-struct internal_node_variant<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
+struct static_internal_node<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
 {
     typedef index::pushable_array<
         std::pair<
@@ -32,18 +33,18 @@
     > elements_type;
 
     template <typename Dummy>
-    inline internal_node_variant(Dummy) {}
+    inline static_internal_node(Dummy) {}
 
     elements_type elements;
 };
 
 template <typename Value, typename Parameters, typename Box, typename Allocators>
-struct leaf_variant<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
+struct static_leaf<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
 {
     typedef index::pushable_array<Value, Parameters::max_elements + 1> elements_type;
 
     template <typename Dummy>
-    inline leaf_variant(Dummy) {}
+    inline static_leaf(Dummy) {}
 
     elements_type elements;
 };
@@ -54,21 +55,21 @@
 struct node<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
 {
         typedef boost::variant<
-		leaf_variant<Value, Parameters, Box, Allocators, node_s_mem_static_tag>,
-		internal_node_variant<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
+		static_leaf<Value, Parameters, Box, Allocators, node_s_mem_static_tag>,
+		static_internal_node<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
 	> type;
 };
 
 template <typename Value, typename Parameters, typename Box, typename Allocators>
 struct internal_node<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
 {
-    typedef internal_node_variant<Value, Parameters, Box, Allocators, node_s_mem_static_tag> type;
+    typedef static_internal_node<Value, Parameters, Box, Allocators, node_s_mem_static_tag> type;
 };
 
 template <typename Value, typename Parameters, typename Box, typename Allocators>
 struct leaf<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
 {
-    typedef leaf_variant<Value, Parameters, Box, Allocators, node_s_mem_static_tag> type;
+    typedef static_leaf<Value, Parameters, Box, Allocators, node_s_mem_static_tag> type;
 };
 
 // visitor traits
@@ -113,14 +114,14 @@
 template <typename Allocators, typename Value, typename Parameters, typename Box>
 struct create_node<
     Allocators,
-    internal_node_variant<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
+    static_internal_node<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
 >
 {
     static inline typename node<Value, Parameters, Box, Allocators, node_s_mem_static_tag>::type *
     apply(Allocators & allocators)
     {
         return create_node_variant<
-            internal_node_variant<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
+            static_internal_node<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
         >::template apply<
             typename node<Value, Parameters, Box, Allocators, node_s_mem_static_tag>::type
         >(allocators.node_allocator, allocators.node_allocator);
@@ -130,14 +131,14 @@
 template <typename Allocators, typename Value, typename Parameters, typename Box>
 struct create_node<
     Allocators,
-    leaf_variant<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
+    static_leaf<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
 >
 {
     static inline typename node<Value, Parameters, Box, Allocators, node_s_mem_static_tag>::type *
     apply(Allocators & allocators)
     {
         return create_node_variant<
-            leaf_variant<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
+            static_leaf<Value, Parameters, Box, Allocators, node_s_mem_static_tag>
         >::template apply<
             typename node<Value, Parameters, Box, Allocators, node_s_mem_static_tag>::type
         >(allocators.node_allocator, allocators.node_allocator);
Added: sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/static_visitor.hpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/node/static_visitor.hpp	2012-09-30 08:54:25 EDT (Sun, 30 Sep 2012)
@@ -0,0 +1,76 @@
+// Boost.Geometry Index
+//
+// R-tree nodes static visitor related code
+//
+// Copyright (c) 2011-2012 Adam Wulkiewicz, Lodz, Poland.
+//
+// Use, modification and distribution is subject to the 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_GEOMETRY_EXTENSIONS_INDEX_RTREE_NODE_STATIC_VISITOR_HPP
+#define BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_NODE_STATIC_VISITOR_HPP
+
+#include <boost/variant.hpp>
+
+namespace boost { namespace geometry { namespace index {
+
+namespace detail { namespace rtree {
+
+// nodes variants forward declarations
+
+template <typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
+struct static_internal_node;
+
+template <typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
+struct static_leaf;
+
+// nodes conversion
+
+template <typename V, typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
+inline V & get(
+    boost::variant<
+        static_leaf<Value, Parameters, Box, Allocators, Tag>,
+        static_internal_node<Value, Parameters, Box, Allocators, Tag>
+    > & v)
+{
+    return boost::get<V>(v);
+}
+
+template <typename V, typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
+inline V * get(
+    boost::variant<
+        static_leaf<Value, Parameters, Box, Allocators, Tag>,
+        static_internal_node<Value, Parameters, Box, Allocators, Tag>
+    > *v)
+{
+    return boost::get<V>(v);
+}
+
+// apply visitor
+
+template <typename Visitor, typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
+inline void apply_visitor(Visitor & v,
+						  boost::variant<
+							  static_leaf<Value, Parameters, Box, Allocators, Tag>,
+							  static_internal_node<Value, Parameters, Box, Allocators, Tag>
+						  > & n)
+{
+    boost::apply_visitor(v, n);
+}
+
+template <typename Visitor, typename Value, typename Parameters, typename Box, typename Allocators, typename Tag>
+inline void apply_visitor(Visitor & v,
+						  boost::variant<
+							  static_leaf<Value, Parameters, Box, Allocators, Tag>,
+							  static_internal_node<Value, Parameters, Box, Allocators, Tag>
+						  > const& n)
+{
+	boost::apply_visitor(v, n);
+}
+
+}} // namespace detail::rtree
+
+}}} // namespace boost::geometry::index
+
+#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_NODE_STATIC_VISITOR_HPP