From 5586fc85bfadca3712c9dfd87dc6ec0f2b5ab0ce Mon Sep 17 00:00:00 2001 From: Adam Wulkiewicz Date: Wed, 13 Jul 2011 01:57:30 +0000 Subject: [PATCH] visitors are now explicitly nonassignable. rtree is set as noncopyable since copying isn't implemented. [SVN r73029] --- .../extensions/index/nonassignable.hpp | 22 +++++++++++++++++++ .../extensions/index/rtree/rstar/insert.hpp | 1 + .../rtree/rstar/redistribute_elements.hpp | 5 ++--- .../geometry/extensions/index/rtree/rtree.hpp | 4 +++- .../index/rtree/visitors/are_boxes_ok.hpp | 4 +++- .../index/rtree/visitors/are_levels_ok.hpp | 4 +++- .../extensions/index/rtree/visitors/find.hpp | 4 +++- .../index/rtree/visitors/insert.hpp | 4 +++- .../index/rtree/visitors/remove.hpp | 4 +++- 9 files changed, 43 insertions(+), 9 deletions(-) create mode 100644 include/boost/geometry/extensions/index/nonassignable.hpp diff --git a/include/boost/geometry/extensions/index/nonassignable.hpp b/include/boost/geometry/extensions/index/nonassignable.hpp new file mode 100644 index 000000000..a59a04ae6 --- /dev/null +++ b/include/boost/geometry/extensions/index/nonassignable.hpp @@ -0,0 +1,22 @@ +// Boost.Geometry (aka GGL, Generic Geometry Library) +// +// Boost.Index - nonassignable +// +// Copyright 2011 Adam Wulkiewicz. +// 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_NONASSIGNABLE_HPP +#define BOOST_GEOMETRY_EXTENSIONS_INDEX_NONASSIGNABLE_HPP + +namespace boost { namespace geometry { namespace index { + +class nonassignable +{ + nonassignable & operator=(nonassignable const&); +}; + +}}} // namespace boost::geometry::index + +#endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_NONASSIGNABLE_HPP diff --git a/include/boost/geometry/extensions/index/rtree/rstar/insert.hpp b/include/boost/geometry/extensions/index/rtree/rstar/insert.hpp index 352edcdc0..c35fd7573 100644 --- a/include/boost/geometry/extensions/index/rtree/rstar/insert.hpp +++ b/include/boost/geometry/extensions/index/rtree/rstar/insert.hpp @@ -352,6 +352,7 @@ struct level_insert<0, Value, Value, Options, Translator, Box> template class insert : public rtree::visitor::type + , index::nonassignable { private: typedef typename rtree::node::type node; diff --git a/include/boost/geometry/extensions/index/rtree/rstar/redistribute_elements.hpp b/include/boost/geometry/extensions/index/rtree/rstar/redistribute_elements.hpp index 94a070ed7..60676b45c 100644 --- a/include/boost/geometry/extensions/index/rtree/rstar/redistribute_elements.hpp +++ b/include/boost/geometry/extensions/index/rtree/rstar/redistribute_elements.hpp @@ -10,14 +10,12 @@ #ifndef BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RSTAR_REDISTRIBUTE_ELEMENTS_HPP #define BOOST_GEOMETRY_EXTENSIONS_INDEX_RTREE_RSTAR_REDISTRIBUTE_ELEMENTS_HPP -#include +#include #include #include #include -#include - #include #include #include @@ -32,6 +30,7 @@ namespace rstar { template class element_axis_corner_less + : index::nonassignable { public: element_axis_corner_less(Translator const& tr) diff --git a/include/boost/geometry/extensions/index/rtree/rtree.hpp b/include/boost/geometry/extensions/index/rtree/rtree.hpp index 5757943e3..d20439afb 100644 --- a/include/boost/geometry/extensions/index/rtree/rtree.hpp +++ b/include/boost/geometry/extensions/index/rtree/rtree.hpp @@ -17,6 +17,7 @@ #include #include +#include #include @@ -36,7 +37,7 @@ namespace boost { namespace geometry { namespace index { -// TODO: awulkiew - min and max elems as template parameters? +// TODO copying template < typename Value, @@ -44,6 +45,7 @@ template < typename Translator = translator::def > class rtree + : public boost::noncopyable { public: typedef Value value_type; diff --git a/include/boost/geometry/extensions/index/rtree/visitors/are_boxes_ok.hpp b/include/boost/geometry/extensions/index/rtree/visitors/are_boxes_ok.hpp index d20164bfc..ce9e43478 100644 --- a/include/boost/geometry/extensions/index/rtree/visitors/are_boxes_ok.hpp +++ b/include/boost/geometry/extensions/index/rtree/visitors/are_boxes_ok.hpp @@ -18,7 +18,9 @@ namespace boost { namespace geometry { namespace index { namespace detail { namespace rtree { namespace visitors { template -class are_boxes_ok : public rtree::visitor::type +class are_boxes_ok + : public rtree::visitor::type + , index::nonassignable { typedef typename rtree::internal_node::type internal_node; typedef typename rtree::leaf::type leaf; diff --git a/include/boost/geometry/extensions/index/rtree/visitors/are_levels_ok.hpp b/include/boost/geometry/extensions/index/rtree/visitors/are_levels_ok.hpp index 3ec7f7820..d905853f0 100644 --- a/include/boost/geometry/extensions/index/rtree/visitors/are_levels_ok.hpp +++ b/include/boost/geometry/extensions/index/rtree/visitors/are_levels_ok.hpp @@ -17,7 +17,9 @@ namespace boost { namespace geometry { namespace index { namespace detail { namespace rtree { namespace visitors { template -class are_levels_ok : public rtree::visitor::type +class are_levels_ok + : public rtree::visitor::type + , index::nonassignable { typedef typename rtree::internal_node::type internal_node; typedef typename rtree::leaf::type leaf; diff --git a/include/boost/geometry/extensions/index/rtree/visitors/find.hpp b/include/boost/geometry/extensions/index/rtree/visitors/find.hpp index c0ed3b03c..83026bc2d 100644 --- a/include/boost/geometry/extensions/index/rtree/visitors/find.hpp +++ b/include/boost/geometry/extensions/index/rtree/visitors/find.hpp @@ -141,7 +141,9 @@ namespace detail { namespace rtree { namespace visitors { // rtree spatial query visitor template -struct find : public rtree::visitor::type +struct find + : public rtree::visitor::type + , index::nonassignable { typedef typename rtree::node::type node; typedef typename rtree::internal_node::type internal_node; diff --git a/include/boost/geometry/extensions/index/rtree/visitors/insert.hpp b/include/boost/geometry/extensions/index/rtree/visitors/insert.hpp index 093310edc..706cb43e8 100644 --- a/include/boost/geometry/extensions/index/rtree/visitors/insert.hpp +++ b/include/boost/geometry/extensions/index/rtree/visitors/insert.hpp @@ -83,7 +83,9 @@ struct redistribute_elements; // Default insert visitor template -class insert : public rtree::visitor::type +class insert + : public rtree::visitor::type + , index::nonassignable { protected: typedef typename rtree::node::type node; diff --git a/include/boost/geometry/extensions/index/rtree/visitors/remove.hpp b/include/boost/geometry/extensions/index/rtree/visitors/remove.hpp index d4e2f2d48..57b9a1527 100644 --- a/include/boost/geometry/extensions/index/rtree/visitors/remove.hpp +++ b/include/boost/geometry/extensions/index/rtree/visitors/remove.hpp @@ -22,7 +22,9 @@ namespace detail { namespace rtree { namespace visitors { // Default remove algorithm template -class remove : public rtree::visitor::type +class remove + : public rtree::visitor::type + , index::nonassignable { typedef typename rtree::node::type node; typedef typename rtree::internal_node::type internal_node;