|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r82837 - in sandbox-branches/geometry/index: boost/geometry/index/detail test/rtree
From: adam.wulkiewicz_at_[hidden]
Date: 2013-02-12 13:24:14
Author: awulkiew
Date: 2013-02-12 13:24:13 EST (Tue, 12 Feb 2013)
New Revision: 82837
URL: http://svn.boost.org/trac/boost/changeset/82837
Log:
Added rtree_interprocess test (doesn't executed for now), error fixed in detail::varray
Added:
sandbox-branches/geometry/index/test/rtree/rtree_interprocess.cpp (contents, props changed)
Text files modified:
sandbox-branches/geometry/index/boost/geometry/index/detail/varray.hpp | 4 +-
sandbox-branches/geometry/index/test/rtree/Jamfile.v2 | 11 ++++++++
sandbox-branches/geometry/index/test/rtree/test_rtree.hpp | 55 ++++++++++++++++++---------------------
3 files changed, 39 insertions(+), 31 deletions(-)
Modified: sandbox-branches/geometry/index/boost/geometry/index/detail/varray.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/index/detail/varray.hpp (original)
+++ sandbox-branches/geometry/index/boost/geometry/index/detail/varray.hpp 2013-02-12 13:24:13 EST (Tue, 12 Feb 2013)
@@ -798,12 +798,12 @@
pointer ptr()
{
- return pointer(m_storage.address());
+ return pointer(static_cast<value_type *>(m_storage.address()));
}
const_pointer ptr() const
{
- return const_pointer(m_storage.address());
+ return const_pointer(static_cast<const value_type *>(m_storage.address()));
}
boost::aligned_storage<sizeof(Value[Capacity]), boost::alignment_of<Value[Capacity]>::value> m_storage;
Modified: sandbox-branches/geometry/index/test/rtree/Jamfile.v2
==============================================================================
--- sandbox-branches/geometry/index/test/rtree/Jamfile.v2 (original)
+++ sandbox-branches/geometry/index/test/rtree/Jamfile.v2 2013-02-12 13:24:13 EST (Tue, 12 Feb 2013)
@@ -13,3 +13,14 @@
[ run rtree_exceptions.cpp ]
;
+#test-suite boost-geometry-index-rtree_interprocess
+# : [ run rtree_interprocess.cpp /boost/thread//boost_thread
+# : # additional args
+# : # test-files
+# : # requirements
+# <toolset>acc:<linkflags>-lrt
+# <toolset>acc-pa_risc:<linkflags>-lrt
+# <toolset>gcc-mingw:<linkflags>"-lole32 -loleaut32 -lpsapi -ladvapi32"
+# <host-os>hpux,<toolset>gcc:<linkflags>"-Wl,+as,mpas"
+# ] : <threading>multi
+# ;
\ No newline at end of file
Added: sandbox-branches/geometry/index/test/rtree/rtree_interprocess.cpp
==============================================================================
--- (empty file)
+++ sandbox-branches/geometry/index/test/rtree/rtree_interprocess.cpp 2013-02-12 13:24:13 EST (Tue, 12 Feb 2013)
@@ -0,0 +1,84 @@
+// Boost.Geometry Index
+// Unit Test
+
+// Copyright (c) 2011-2013 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)
+
+#include <rtree/test_rtree.hpp>
+
+#include <boost/geometry/geometries/point_xy.hpp>
+#include <boost/geometry/geometries/point.hpp>
+#include <boost/geometry/geometries/box.hpp>
+
+#include <boost/interprocess/managed_shared_memory.hpp>
+#include <boost/interprocess/allocators/allocator.hpp>
+
+template <typename Value, typename Parameters>
+void test_rtree_interprocess(Parameters const& parameters = Parameters())
+{
+ namespace bi = boost::interprocess;
+ struct shm_remove
+ {
+ shm_remove() { bi::shared_memory_object::remove("shmem"); }
+ ~shm_remove(){ bi::shared_memory_object::remove("shmem"); }
+ } remover;
+
+ bi::managed_shared_memory segment(bi::create_only, "shmem", 65535);
+ typedef bi::allocator<Value, bi::managed_shared_memory::segment_manager> shmem_alloc;
+
+ typedef bgi::rtree<Value, Parameters, bgi::translator::def<Value>, shmem_alloc> Tree;
+
+ Tree * tree = segment.construct<Tree>("Tree")(parameters, bgi::translator::def<Value>(), shmem_alloc(segment.get_segment_manager()));
+ typedef typename Tree::bounds_type B;
+
+ std::vector<Value> input;
+ B qbox;
+
+ generate_rtree(*tree, input, qbox);
+
+ test_intersects(*tree, input, qbox);
+ test_disjoint(*tree, input, qbox);
+ test_covered_by(*tree, input, qbox);
+ test_overlaps(*tree, input, qbox);
+ //test_touches(*tree, input, qbox);
+ test_within(*tree, input, qbox);
+
+ typedef typename bgi::detail::traits::point_type<B>::type P;
+ P pt;
+ bg::centroid(qbox, pt);
+
+ test_nearest_query_k(*tree, input, pt, 10);
+ test_nearest_query_not_found(*tree, generate_outside_point<P>::apply());
+
+ segment.destroy_ptr(tree);
+}
+
+int test_main(int, char* [])
+{
+ typedef bg::model::point<double, 2, bg::cs::cartesian> P2d;
+ typedef bg::model::box<P2d> B2d;
+ typedef std::pair<B2d, int> PB2d;
+
+ test_rtree_interprocess<P2d>(bgi::linear<32, 8>());
+ /*test_rtree_interprocess<P2d>(bgi::runtime::linear(32, 8));
+ test_rtree_interprocess<B2d>(bgi::quadratic<32, 8>());
+ test_rtree_interprocess<B2d>(bgi::runtime::quadratic(32, 8));
+ test_rtree_interprocess<PB2d>(bgi::rstar<32, 8>());
+ test_rtree_interprocess<PB2d>(bgi::runtime::rstar(32, 8));
+
+ typedef bg::model::point<float, 3, bg::cs::cartesian> P3f;
+ typedef bg::model::box<P3f> B3f;
+ typedef std::pair<B3f, int> PB3f;
+
+ test_rtree_interprocess<P3f>(bgi::linear<32, 8>());
+ test_rtree_interprocess<P3f>(bgi::runtime::linear(32, 8));
+ test_rtree_interprocess<B3f>(bgi::quadratic<32, 8>());
+ test_rtree_interprocess<B3f>(bgi::runtime::quadratic(32, 8));
+ test_rtree_interprocess<PB3f>(bgi::rstar<32, 8>());
+ test_rtree_interprocess<PB3f>(bgi::runtime::rstar(32, 8));*/
+
+ return 0;
+}
Modified: sandbox-branches/geometry/index/test/rtree/test_rtree.hpp
==============================================================================
--- sandbox-branches/geometry/index/test/rtree/test_rtree.hpp (original)
+++ sandbox-branches/geometry/index/test/rtree/test_rtree.hpp 2013-02-12 13:24:13 EST (Tue, 12 Feb 2013)
@@ -480,13 +480,10 @@
return generate_value_outside_impl<V, bgi::detail::traits::dimension<I>::value>::apply();
}
-template<typename Value, typename Algo, typename Box>
-void generate_rtree(bgi::rtree<Value, Algo> & tree, std::vector<Value> & input, Box & qbox)
+template<typename Rtree, typename Elements, typename Box>
+void generate_rtree(Rtree & tree, Elements & input, Box & qbox)
{
- typedef bgi::rtree<Value, Algo> T;
- typedef typename T::box_type B;
- typedef typename T::value_type V;
- typedef typename T::indexable_type I;
+ typedef typename Rtree::indexable_type I;
generate_input<
bgi::detail::traits::dimension<I>::value
@@ -568,8 +565,8 @@
// rtree specific queries tests
-template <typename Value, typename Algo, typename Box>
-void test_intersects(bgi::rtree<Value, Algo> const& tree, std::vector<Value> const& input, Box const& qbox)
+template <typename Value, typename Algo, typename T, typename A, typename Box>
+void test_intersects(bgi::rtree<Value, Algo, T, A> const& tree, std::vector<Value> const& input, Box const& qbox)
{
std::vector<Value> expected_output;
@@ -592,8 +589,8 @@
test_spatial_query(tree, !bgi::disjoint(qpoly), expected_output);*/
}
-template <typename Value, typename Algo, typename Box>
-void test_disjoint(bgi::rtree<Value, Algo> const& tree, std::vector<Value> const& input, Box const& qbox)
+template <typename Value, typename Algo, typename T, typename A, typename Box>
+void test_disjoint(bgi::rtree<Value, Algo, T, A> const& tree, std::vector<Value> const& input, Box const& qbox)
{
std::vector<Value> expected_output;
@@ -614,8 +611,8 @@
}
-template <typename Value, typename Algo, typename Box>
-void test_covered_by(bgi::rtree<Value, Algo> const& tree, std::vector<Value> const& input, Box const& qbox)
+template <typename Value, typename Algo, typename T, typename A, typename Box>
+void test_covered_by(bgi::rtree<Value, Algo, T, A> const& tree, std::vector<Value> const& input, Box const& qbox)
{
std::vector<Value> expected_output;
@@ -637,8 +634,8 @@
template <typename Tag>
struct test_overlap_impl
{
- template <typename Value, typename Algo, typename Box>
- static void apply(bgi::rtree<Value, Algo> const& tree, std::vector<Value> const& input, Box const& qbox)
+ template <typename Value, typename Algo, typename T, typename A, typename Box>
+ static void apply(bgi::rtree<Value, Algo, T, A> const& tree, std::vector<Value> const& input, Box const& qbox)
{
std::vector<Value> expected_output;
@@ -661,13 +658,13 @@
template <>
struct test_overlap_impl<bg::point_tag>
{
- template <typename Value, typename Algo, typename Box>
- static void apply(bgi::rtree<Value, Algo> const& /*tree*/, std::vector<Value> const& /*input*/, Box const& /*qbox*/)
+ template <typename Value, typename Algo, typename T, typename A, typename Box>
+ static void apply(bgi::rtree<Value, Algo, T, A> const& /*tree*/, std::vector<Value> const& /*input*/, Box const& /*qbox*/)
{}
};
-template <typename Value, typename Algo, typename Box>
-void test_overlaps(bgi::rtree<Value, Algo> const& tree, std::vector<Value> const& input, Box const& qbox)
+template <typename Value, typename Algo, typename T, typename A, typename Box>
+void test_overlaps(bgi::rtree<Value, Algo, T, A> const& tree, std::vector<Value> const& input, Box const& qbox)
{
test_overlap_impl<
typename bgi::detail::traits::tag<
@@ -679,16 +676,16 @@
//template <typename Tag, size_t Dimension>
//struct test_touches_impl
//{
-// template <typename Value, typename Algo, typename Box>
-// static void apply(bgi::rtree<Value, Algo> const& tree, std::vector<Value> const& input, Box const& qbox)
+// template <typename Value, typename Algo, typename T, typename A, typename Box>
+// static void apply(bgi::rtree<Value, Algo, T, A> const& tree, std::vector<Value> const& input, Box const& qbox)
// {}
//};
//
//template <>
//struct test_touches_impl<bg::box_tag, 2>
//{
-// template <typename Value, typename Algo, typename Box>
-// static void apply(bgi::rtree<Value, Algo> const& tree, std::vector<Value> const& input, Box const& qbox)
+// template <typename Value, typename Algo, typename T, typename A, typename Box>
+// static void apply(bgi::rtree<Value, Algo, T, A> const& tree, std::vector<Value> const& input, Box const& qbox)
// {
// std::vector<Value> expected_output;
//
@@ -700,21 +697,21 @@
// }
//};
//
-//template <typename Value, typename Algo, typename Box>
-//void test_touches(bgi::rtree<Value, Algo> const& tree, std::vector<Value> const& input, Box const& qbox)
+//template <typename Value, typename Algo, typename T, typename A, typename Box>
+//void test_touches(bgi::rtree<Value, Algo, T, A> const& tree, std::vector<Value> const& input, Box const& qbox)
//{
// test_touches_impl<
// bgi::traits::tag<
-// typename bgi::rtree<Value, Algo>::indexable_type
+// typename bgi::rtree<Value, Algo, T, A>::indexable_type
// >::type,
// bgi::traits::dimension<
-// typename bgi::rtree<Value, Algo>::indexable_type
+// typename bgi::rtree<Value, Algo, T, A>::indexable_type
// >::value
// >::apply(tree, input, qbox);
//}
-template <typename Value, typename Algo, typename Box>
-void test_within(bgi::rtree<Value, Algo> const& tree, std::vector<Value> const& input, Box const& qbox)
+template <typename Value, typename Algo, typename T, typename A, typename Box>
+void test_within(bgi::rtree<Value, Algo, T, A> const& tree, std::vector<Value> const& input, Box const& qbox)
{
std::vector<Value> expected_output;
@@ -830,7 +827,7 @@
struct AlwaysFalse
{
template <typename Value>
- bool operator()(Value const& v) const { return false; }
+ bool operator()(Value const& ) const { return false; }
};
template <typename Rtree, typename Point>
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk