$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r83302 - in sandbox-branches/geometry/index: boost/geometry/index boost/geometry/index/detail/rtree/node test/rtree
From: adam.wulkiewicz_at_[hidden]
Date: 2013-03-04 21:42:04
Author: awulkiew
Date: 2013-03-04 21:42:02 EST (Mon, 04 Mar 2013)
New Revision: 83302
URL: http://svn.boost.org/trac/boost/changeset/83302
Log:
Added commented out specializations of insexable<>, equal_to<> and tests for std::tuple.
Removed unneeded variant node get<> function.
Text files modified: 
   sandbox-branches/geometry/index/boost/geometry/index/detail/rtree/node/static_visitor.hpp |    10 ------                                  
   sandbox-branches/geometry/index/boost/geometry/index/equal_to.hpp                         |    52 ++++++++++++++++++++++++++++++++++      
   sandbox-branches/geometry/index/boost/geometry/index/indexable.hpp                        |    28 ++++++++++++++++++                      
   sandbox-branches/geometry/index/test/rtree/test_rtree.hpp                                 |    60 ++++++++++++++++++++++++++++++++++++++++
   4 files changed, 140 insertions(+), 10 deletions(-)
Modified: sandbox-branches/geometry/index/boost/geometry/index/detail/rtree/node/static_visitor.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/index/detail/rtree/node/static_visitor.hpp	(original)
+++ sandbox-branches/geometry/index/boost/geometry/index/detail/rtree/node/static_visitor.hpp	2013-03-04 21:42:02 EST (Mon, 04 Mar 2013)
@@ -37,16 +37,6 @@
     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>
Modified: sandbox-branches/geometry/index/boost/geometry/index/equal_to.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/index/equal_to.hpp	(original)
+++ sandbox-branches/geometry/index/boost/geometry/index/equal_to.hpp	2013-03-04 21:42:02 EST (Mon, 04 Mar 2013)
@@ -123,4 +123,56 @@
 
 }}} // namespace boost::geometry::index
 
+//#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+//
+//#include <tuple>
+//
+//namespace boost { namespace geometry { namespace index {
+//
+//namespace detail {
+//
+//template <typename Tuple, size_t I, size_t N>
+//struct std_tuple_equals
+//{
+//    inline static bool apply(Tuple const& t1, Tuple const& t2)
+//    {
+//        typedef typename std::tuple_element<I, Tuple>::type T;
+//        return
+//            equals<
+//                T, typename geometry::traits::tag<T>::type
+//            >::apply(std::get<I>(t1), std::get<I>(t2))
+//            &&
+//            std_tuple_equals<Tuple, I+1, N>::apply(t1, t2);
+//    }
+//};
+//
+//template <typename Tuple, size_t I>
+//struct std_tuple_equals<Tuple, I, I>
+//{
+//    inline static bool apply(Tuple const&, Tuple const&)
+//    {
+//        return true;
+//    }
+//};
+//
+//} // namespace detail
+//
+//template <typename ...Args>
+//struct equal_to< std::tuple<Args...> >
+//{
+//    typedef std::tuple<Args...> value_type;
+//
+//    typedef bool result_type;
+//    bool operator()(value_type const& l, value_type const& r) const
+//    {
+//        return detail::std_tuple_equals<
+//            value_type, 0, std::tuple_size<value_type>::value
+//        >::apply(l ,r);
+//    }
+//};
+//
+//}}} // namespace boost::geometry::index
+//
+//#endif // !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+
 #endif // BOOST_GEOMETRY_INDEX_EQUAL_TO_HPP
Modified: sandbox-branches/geometry/index/boost/geometry/index/indexable.hpp
==============================================================================
--- sandbox-branches/geometry/index/boost/geometry/index/indexable.hpp	(original)
+++ sandbox-branches/geometry/index/boost/geometry/index/indexable.hpp	2013-03-04 21:42:02 EST (Mon, 04 Mar 2013)
@@ -109,4 +109,32 @@
 
 }}} // namespace boost::geometry::index
 
+//#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+//
+//#include <tuple>
+//
+//namespace boost { namespace geometry { namespace index {
+//
+//template <typename Indexable, typename ...Args>
+//struct indexable< std::tuple<Indexable, Args...> >
+//{
+//    typedef std::tuple<Indexable, Args...> value_type;
+//
+//    BOOST_MPL_ASSERT_MSG(
+//        (detail::is_indexable<Indexable>::value),
+//        NOT_VALID_INDEXABLE_TYPE,
+//        (Indexable)
+//        );
+//
+//    typedef Indexable const& result_type;
+//    result_type operator()(value_type const& v) const
+//    {
+//        return std::get<0>(v);
+//    }
+//};
+//
+//}}} // namespace boost::geometry::index
+//
+//#endif // !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+
 #endif // BOOST_GEOMETRY_INDEX_INDEXABLE_HPP
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-03-04 21:42:02 EST (Mon, 04 Mar 2013)
@@ -196,6 +196,56 @@
     }
 };
 
+//#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+//
+//template <typename T, typename C>
+//struct generate_value< std::tuple<bg::model::point<T, 2, C>, int, int> >
+//{
+//    typedef bg::model::point<T, 2, C> P;
+//    typedef std::tuple<P, int, int> R;
+//    static R apply(int x, int y)
+//    {
+//        return std::make_tuple(P(x, y), x + y * 100, 0);
+//    }
+//};
+//
+//template <typename T, typename C>
+//struct generate_value< std::tuple<bg::model::box< bg::model::point<T, 2, C> >, int, int> >
+//{
+//    typedef bg::model::point<T, 2, C> P;
+//    typedef bg::model::box<P> B;
+//    typedef std::tuple<B, int, int> R;
+//    static R apply(int x, int y)
+//    {
+//        return std::make_tuple(B(P(x, y), P(x + 2, y + 3)), x + y * 100, 0);
+//    }
+//};
+//
+//template <typename T, typename C>
+//struct generate_value< std::tuple<bg::model::point<T, 3, C>, int, int> >
+//{
+//    typedef bg::model::point<T, 3, C> P;
+//    typedef std::tuple<P, int, int> R;
+//    static R apply(int x, int y, int z)
+//    {
+//        return std::make_tuple(P(x, y, z), x + y * 100 + z * 10000, 0);
+//    }
+//};
+//
+//template <typename T, typename C>
+//struct generate_value< std::tuple<bg::model::box< bg::model::point<T, 3, C> >, int, int> >
+//{
+//    typedef bg::model::point<T, 3, C> P;
+//    typedef bg::model::box<P> B;
+//    typedef std::tuple<B, int, int> R;
+//    static R apply(int x, int y, int z)
+//    {
+//        return std::make_tuple(B(P(x, y, z), P(x + 2, y + 3, z + 4)), x + y * 100 + z * 10000, 0);
+//    }
+//};
+//
+//#endif // #if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+
 // shared_ptr value
 
 template <typename Indexable>
@@ -1346,6 +1396,11 @@
 
     test_rtree_count<Point>(parameters, allocator);
     test_rtree_bounds<Point>(parameters, allocator);
+
+//#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+//    typedef std::tuple<Point, int, int> StdTupleP;
+//    test_rtree_by_value<StdTupleP, Parameters>(parameters, allocator);
+//#endif
 }
 
 template<typename Point, typename Parameters, typename Allocator>
@@ -1366,6 +1421,11 @@
 
     test_rtree_count<Box>(parameters, allocator);
     test_rtree_bounds<Box>(parameters, allocator);
+
+//#if !defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+//    typedef std::tuple<Box, int, int> StdTupleB;
+//    test_rtree_by_value<StdTupleB, Parameters>(parameters, allocator);
+//#endif
 }
 
 template<typename Point, typename Parameters>