$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r74606 - in sandbox-branches/geometry/index: boost/geometry/extensions/index boost/geometry/extensions/index/rtree tests
From: adam.wulkiewicz_at_[hidden]
Date: 2011-09-28 20:03:46
Author: awulkiew
Date: 2011-09-28 20:03:45 EDT (Wed, 28 Sep 2011)
New Revision: 74606
URL: http://svn.boost.org/trac/boost/changeset/74606
Log:
operator!() predicates generators implemented.
Text files modified: 
   sandbox-branches/geometry/index/boost/geometry/extensions/index/predicates.hpp       |    78 ++++++++++++++++++++++++++++++++++++++- 
   sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/predicates.hpp |     6 ---                                     
   sandbox-branches/geometry/index/tests/additional_sizes_and_times.cpp                 |    18 +++++++++                               
   3 files changed, 94 insertions(+), 8 deletions(-)
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/predicates.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/predicates.hpp	(original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/predicates.hpp	2011-09-28 20:03:45 EDT (Wed, 28 Sep 2011)
@@ -19,10 +19,10 @@
 
 namespace boost { namespace geometry { namespace index {
 
-// predicates
-
 namespace detail {
 
+// predicates
+
 struct empty {};
 
 template <typename ValuePredicate>
@@ -104,6 +104,8 @@
 
 } // namespace detail
 
+// generators
+
 inline detail::empty empty()
 {
     return detail::empty();
@@ -403,4 +405,76 @@
 
 }}} // namespace boost::geometry::index
 
+// operator! generators
+
+template <typename Geometry>
+boost::geometry::index::detail::not_covered_by<Geometry>
+operator!(boost::geometry::index::detail::covered_by<Geometry> const& p)
+{
+    return boost::geometry::index::detail::not_covered_by<Geometry>(p.geometry);
+}
+
+template <typename Geometry>
+boost::geometry::index::detail::covered_by<Geometry>
+operator!(boost::geometry::index::detail::not_covered_by<Geometry> const& p)
+{
+    return boost::geometry::index::detail::covered_by<Geometry>(p.geometry);
+}
+
+template <typename Geometry>
+boost::geometry::index::detail::not_disjoint<Geometry>
+operator!(boost::geometry::index::detail::disjoint<Geometry> const& p)
+{
+    return boost::geometry::index::detail::not_disjoint<Geometry>(p.geometry);
+}
+
+template <typename Geometry>
+boost::geometry::index::detail::disjoint<Geometry>
+operator!(boost::geometry::index::detail::not_disjoint<Geometry> const& p)
+{
+    return boost::geometry::index::detail::disjoint<Geometry>(p.geometry);
+}
+
+template <typename Geometry>
+boost::geometry::index::detail::not_intersects<Geometry>
+operator!(boost::geometry::index::detail::intersects<Geometry> const& p)
+{
+    return boost::geometry::index::detail::not_intersects<Geometry>(p.geometry);
+}
+
+template <typename Geometry>
+boost::geometry::index::detail::intersects<Geometry>
+operator!(boost::geometry::index::detail::not_intersects<Geometry> const& p)
+{
+    return boost::geometry::index::detail::intersects<Geometry>(p.geometry);
+}
+
+template <typename Geometry>
+boost::geometry::index::detail::not_overlaps<Geometry>
+operator!(boost::geometry::index::detail::overlaps<Geometry> const& p)
+{
+    return boost::geometry::index::detail::not_overlaps<Geometry>(p.geometry);
+}
+
+template <typename Geometry>
+boost::geometry::index::detail::overlaps<Geometry>
+operator!(boost::geometry::index::detail::not_overlaps<Geometry> const& p)
+{
+    return boost::geometry::index::detail::overlaps<Geometry>(p.geometry);
+}
+
+template <typename Geometry>
+boost::geometry::index::detail::not_within<Geometry>
+operator!(boost::geometry::index::detail::within<Geometry> const& p)
+{
+    return boost::geometry::index::detail::not_within<Geometry>(p.geometry);
+}
+
+template <typename Geometry>
+boost::geometry::index::detail::within<Geometry>
+operator!(boost::geometry::index::detail::not_within<Geometry> const& p)
+{
+    return boost::geometry::index::detail::within<Geometry>(p.geometry);
+}
+
 #endif // BOOST_GEOMETRY_EXTENSIONS_INDEX_PREDICATES_HPP
Modified: sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/predicates.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/predicates.hpp	(original)
+++ sandbox-branches/geometry/index/boost/geometry/extensions/index/rtree/predicates.hpp	2011-09-28 20:03:45 EDT (Wed, 28 Sep 2011)
@@ -140,12 +140,6 @@
     template <typename Value, typename Box>
     static bool apply(not_overlaps<Geometry> const& p, Value const&, Box const& i)
     {
-        bool inters = geometry::intersects(i, p.geometry);
-
-        //return !inters || ( inters && !geometry::overlaps(i, p.geometry) );
-
-        // TODO: awulkiew - write working condition
-
         return true;
     }
 };
Modified: sandbox-branches/geometry/index/tests/additional_sizes_and_times.cpp
==============================================================================
--- sandbox-branches/geometry/index/tests/additional_sizes_and_times.cpp	(original)
+++ sandbox-branches/geometry/index/tests/additional_sizes_and_times.cpp	2011-09-28 20:03:45 EDT (Wed, 28 Sep 2011)
@@ -185,6 +185,24 @@
 
     // searching test
     {
+        std::cout << "query(!disjoint(B)) searching time test... ("
+            << queries_count << ")\n";
+        tim.restart();    
+        size_t temp = 0;
+        for (size_t i = 0 ; i < queries_count ; ++i )
+        {
+            float x = coords[i].first;
+            float y = coords[i].second;
+            std::deque< std::pair<B, size_t> > result;
+            t.query(!bgi::disjoint(B(P(x - 10, y - 10), P(x + 10, y + 10))), std::back_inserter(result));
+            temp += result.size();
+        }
+        std::cout << "time: " << tim.elapsed() << "s\n";
+        std::cout << "found: " << temp << "\n";
+    }
+
+    // searching test
+    {
         std::cout << "query(B) searching time test... ("
             << queries_count << ")\n";
         tim.restart();