Chris@16
|
1 // Boost.Geometry Index
|
Chris@16
|
2 //
|
Chris@16
|
3 // Query range adaptor
|
Chris@16
|
4 //
|
Chris@16
|
5 // Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland.
|
Chris@16
|
6 //
|
Chris@16
|
7 // Use, modification and distribution is subject to the Boost Software License,
|
Chris@16
|
8 // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
Chris@16
|
9 // http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
10
|
Chris@16
|
11 #ifndef BOOST_GEOMETRY_INDEX_ADAPTORS_QUERY_HPP
|
Chris@16
|
12 #define BOOST_GEOMETRY_INDEX_ADAPTORS_QUERY_HPP
|
Chris@16
|
13
|
Chris@16
|
14 /*!
|
Chris@16
|
15 \defgroup adaptors Adaptors (boost::geometry::index::adaptors::)
|
Chris@16
|
16 */
|
Chris@16
|
17
|
Chris@16
|
18 namespace boost { namespace geometry { namespace index {
|
Chris@16
|
19
|
Chris@16
|
20 namespace adaptors {
|
Chris@16
|
21
|
Chris@16
|
22 namespace detail {
|
Chris@16
|
23
|
Chris@16
|
24 template <typename Index>
|
Chris@16
|
25 class query_range
|
Chris@16
|
26 {
|
Chris@16
|
27 BOOST_MPL_ASSERT_MSG(
|
Chris@16
|
28 (false),
|
Chris@16
|
29 NOT_IMPLEMENTED_FOR_THIS_INDEX,
|
Chris@16
|
30 (query_range));
|
Chris@16
|
31
|
Chris@16
|
32 typedef int* iterator;
|
Chris@16
|
33 typedef const int* const_iterator;
|
Chris@16
|
34
|
Chris@16
|
35 template <typename Predicates>
|
Chris@16
|
36 inline query_range(
|
Chris@16
|
37 Index const&,
|
Chris@16
|
38 Predicates const&)
|
Chris@16
|
39 {}
|
Chris@16
|
40
|
Chris@16
|
41 inline iterator begin() { return 0; }
|
Chris@16
|
42 inline iterator end() { return 0; }
|
Chris@16
|
43 inline const_iterator begin() const { return 0; }
|
Chris@16
|
44 inline const_iterator end() const { return 0; }
|
Chris@16
|
45 };
|
Chris@16
|
46
|
Chris@16
|
47 // TODO: awulkiew - consider removing reference from predicates
|
Chris@16
|
48
|
Chris@16
|
49 template<typename Predicates>
|
Chris@16
|
50 struct query
|
Chris@16
|
51 {
|
Chris@16
|
52 inline explicit query(Predicates const& pred)
|
Chris@16
|
53 : predicates(pred)
|
Chris@16
|
54 {}
|
Chris@16
|
55
|
Chris@16
|
56 Predicates const& predicates;
|
Chris@16
|
57 };
|
Chris@16
|
58
|
Chris@16
|
59 template<typename Index, typename Predicates>
|
Chris@16
|
60 index::adaptors::detail::query_range<Index>
|
Chris@16
|
61 operator|(
|
Chris@16
|
62 Index const& si,
|
Chris@16
|
63 index::adaptors::detail::query<Predicates> const& f)
|
Chris@16
|
64 {
|
Chris@16
|
65 return index::adaptors::detail::query_range<Index>(si, f.predicates);
|
Chris@16
|
66 }
|
Chris@16
|
67
|
Chris@16
|
68 } // namespace detail
|
Chris@16
|
69
|
Chris@16
|
70 /*!
|
Chris@16
|
71 \brief The query index adaptor generator.
|
Chris@16
|
72
|
Chris@16
|
73 \ingroup adaptors
|
Chris@16
|
74
|
Chris@16
|
75 \param pred Predicates.
|
Chris@16
|
76 */
|
Chris@16
|
77 template <typename Predicates>
|
Chris@16
|
78 detail::query<Predicates>
|
Chris@16
|
79 queried(Predicates const& pred)
|
Chris@16
|
80 {
|
Chris@16
|
81 return detail::query<Predicates>(pred);
|
Chris@16
|
82 }
|
Chris@16
|
83
|
Chris@16
|
84 } // namespace adaptors
|
Chris@16
|
85
|
Chris@16
|
86 }}} // namespace boost::geometry::index
|
Chris@16
|
87
|
Chris@16
|
88 #endif // BOOST_GEOMETRY_INDEX_ADAPTORS_QUERY_HPP
|