123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425 |
- #ifndef BOOST_GEOMETRY_INDEX_PREDICATES_HPP
- #define BOOST_GEOMETRY_INDEX_PREDICATES_HPP
- #include <boost/geometry/index/detail/predicates.hpp>
- #include <boost/geometry/util/tuples.hpp>
- namespace boost { namespace geometry { namespace index {
- template <typename Geometry> inline
- detail::predicates::spatial_predicate<Geometry, detail::predicates::contains_tag, false>
- contains(Geometry const& g)
- {
- return detail::predicates::spatial_predicate
- <
- Geometry,
- detail::predicates::contains_tag,
- false
- >(g);
- }
- template <typename Geometry> inline
- detail::predicates::spatial_predicate<Geometry, detail::predicates::covered_by_tag, false>
- covered_by(Geometry const& g)
- {
- return detail::predicates::spatial_predicate
- <
- Geometry,
- detail::predicates::covered_by_tag,
- false
- >(g);
- }
- template <typename Geometry> inline
- detail::predicates::spatial_predicate<Geometry, detail::predicates::covers_tag, false>
- covers(Geometry const& g)
- {
- return detail::predicates::spatial_predicate
- <
- Geometry,
- detail::predicates::covers_tag,
- false
- >(g);
- }
- template <typename Geometry> inline
- detail::predicates::spatial_predicate<Geometry, detail::predicates::disjoint_tag, false>
- disjoint(Geometry const& g)
- {
- return detail::predicates::spatial_predicate
- <
- Geometry,
- detail::predicates::disjoint_tag,
- false
- >(g);
- }
- template <typename Geometry> inline
- detail::predicates::spatial_predicate<Geometry, detail::predicates::intersects_tag, false>
- intersects(Geometry const& g)
- {
- return detail::predicates::spatial_predicate
- <
- Geometry,
- detail::predicates::intersects_tag,
- false
- >(g);
- }
- template <typename Geometry> inline
- detail::predicates::spatial_predicate<Geometry, detail::predicates::overlaps_tag, false>
- overlaps(Geometry const& g)
- {
- return detail::predicates::spatial_predicate
- <
- Geometry,
- detail::predicates::overlaps_tag,
- false
- >(g);
- }
- #ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
- template <typename Geometry> inline
- detail::predicates::spatial_predicate<Geometry, detail::predicates::touches_tag, false>
- touches(Geometry const& g)
- {
- return detail::predicates::spatial_predicate
- <
- Geometry,
- detail::predicates::touches_tag,
- false
- >(g);
- }
- #endif
- template <typename Geometry> inline
- detail::predicates::spatial_predicate<Geometry, detail::predicates::within_tag, false>
- within(Geometry const& g)
- {
- return detail::predicates::spatial_predicate
- <
- Geometry,
- detail::predicates::within_tag,
- false
- >(g);
- }
- template <typename UnaryPredicate> inline
- detail::predicates::satisfies<UnaryPredicate, false>
- satisfies(UnaryPredicate const& pred)
- {
- return detail::predicates::satisfies<UnaryPredicate, false>(pred);
- }
- template <typename Geometry> inline
- detail::predicates::nearest<Geometry>
- nearest(Geometry const& geometry, unsigned k)
- {
- return detail::predicates::nearest<Geometry>(geometry, k);
- }
- #ifdef BOOST_GEOMETRY_INDEX_DETAIL_EXPERIMENTAL
- template <typename SegmentOrLinestring> inline
- detail::predicates::path<SegmentOrLinestring>
- path(SegmentOrLinestring const& linestring, unsigned k)
- {
- return detail::predicates::path<SegmentOrLinestring>(linestring, k);
- }
- #endif
- namespace detail { namespace predicates {
- template <typename Fun, bool Negated> inline
- satisfies<Fun, !Negated>
- operator!(satisfies<Fun, Negated> const& p)
- {
- return satisfies<Fun, !Negated>(p);
- }
- template <typename Geometry, typename Tag, bool Negated> inline
- spatial_predicate<Geometry, Tag, !Negated>
- operator!(spatial_predicate<Geometry, Tag, Negated> const& p)
- {
- return spatial_predicate<Geometry, Tag, !Negated>(p.geometry);
- }
- template <typename Pred1, typename Pred2> inline
- std::tuple<Pred1, Pred2>
- operator&&(Pred1 const& p1, Pred2 const& p2)
- {
-
- return std::tuple<Pred1, Pred2>(p1, p2);
- }
- template <typename ...Preds, typename Pred> inline
- typename geometry::tuples::push_back
- <
- std::tuple<Preds...>, Pred
- >::type
- operator&&(std::tuple<Preds...> const& t, Pred const& p)
- {
-
- return geometry::tuples::push_back
- <
- std::tuple<Preds...>, Pred
- >::apply(t, p);
- }
-
- }}
- }}}
- #endif
|