Chris@16: // Boost.Geometry Index Chris@16: // Chris@16: // Query range adaptor Chris@16: // Chris@16: // Copyright (c) 2011-2013 Adam Wulkiewicz, Lodz, Poland. Chris@16: // Chris@16: // Use, modification and distribution is subject to the Boost Software License, Chris@16: // Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at Chris@16: // http://www.boost.org/LICENSE_1_0.txt) Chris@16: Chris@16: #ifndef BOOST_GEOMETRY_INDEX_ADAPTORS_QUERY_HPP Chris@16: #define BOOST_GEOMETRY_INDEX_ADAPTORS_QUERY_HPP Chris@16: Chris@16: /*! Chris@16: \defgroup adaptors Adaptors (boost::geometry::index::adaptors::) Chris@16: */ Chris@16: Chris@16: namespace boost { namespace geometry { namespace index { Chris@16: Chris@16: namespace adaptors { Chris@16: Chris@16: namespace detail { Chris@16: Chris@16: template Chris@16: class query_range Chris@16: { Chris@16: BOOST_MPL_ASSERT_MSG( Chris@16: (false), Chris@16: NOT_IMPLEMENTED_FOR_THIS_INDEX, Chris@16: (query_range)); Chris@16: Chris@16: typedef int* iterator; Chris@16: typedef const int* const_iterator; Chris@16: Chris@16: template Chris@16: inline query_range( Chris@16: Index const&, Chris@16: Predicates const&) Chris@16: {} Chris@16: Chris@16: inline iterator begin() { return 0; } Chris@16: inline iterator end() { return 0; } Chris@16: inline const_iterator begin() const { return 0; } Chris@16: inline const_iterator end() const { return 0; } Chris@16: }; Chris@16: Chris@16: // TODO: awulkiew - consider removing reference from predicates Chris@16: Chris@16: template Chris@16: struct query Chris@16: { Chris@16: inline explicit query(Predicates const& pred) Chris@16: : predicates(pred) Chris@16: {} Chris@16: Chris@16: Predicates const& predicates; Chris@16: }; Chris@16: Chris@16: template Chris@16: index::adaptors::detail::query_range Chris@16: operator|( Chris@16: Index const& si, Chris@16: index::adaptors::detail::query const& f) Chris@16: { Chris@16: return index::adaptors::detail::query_range(si, f.predicates); Chris@16: } Chris@16: Chris@16: } // namespace detail Chris@16: Chris@16: /*! Chris@16: \brief The query index adaptor generator. Chris@16: Chris@16: \ingroup adaptors Chris@16: Chris@16: \param pred Predicates. Chris@16: */ Chris@16: template Chris@16: detail::query Chris@16: queried(Predicates const& pred) Chris@16: { Chris@16: return detail::query(pred); Chris@16: } Chris@16: Chris@16: } // namespace adaptors Chris@16: Chris@16: }}} // namespace boost::geometry::index Chris@16: Chris@16: #endif // BOOST_GEOMETRY_INDEX_ADAPTORS_QUERY_HPP