16 #ifndef SPATIAL_OPEN_REGION_HPP
17 #define SPATIAL_OPEN_REGION_HPP
19 #include "spatial_region.hpp"
40 template <
typename Key,
typename Compare>
84 return (!Compare::operator()(dim,
_lower, key)
86 : (Compare::operator()(dim, key,
_upper)
121 template <
typename Tp>
125 (
const Tp& container,
133 (container.key_comp(), lower, upper);
136 template<
typename Ct>
139 <Ct, open_bounds<typename container_traits<Ct>::key_type,
140 typename container_traits<Ct>::key_compare> >
154 template<
typename Ct>
157 <const Ct, open_bounds<typename container_traits<Ct>::key_type,
158 typename container_traits<Ct>::key_compare> >
177 <
const Ct, open_bounds<typename container_traits<Ct>::key_type,
182 template<
typename Ct>
185 <Ct, open_bounds<typename container_traits<Ct>::key_type,
186 typename container_traits<Ct>::key_compare> >
198 <Ct, open_bounds<typename container_traits<Ct>::key_type,
203 template<
typename Ct>
206 <const Ct, open_bounds<typename container_traits<Ct>::key_type,
207 typename container_traits<Ct>::key_compare> >
219 <
const Ct, open_bounds<typename container_traits<Ct>::key_type,
228 <
const Ct, open_bounds<typename container_traits<Ct>::key_type,
233 template <
typename Ct>
234 inline open_region_iterator<Ct>
240 template <
typename Ct>
241 inline open_region_iterator<const Ct>
247 template <
typename Ct>
248 inline open_region_iterator<const Ct>
254 template <
typename Ct>
255 inline open_region_iterator<Ct>
261 template <
typename Ct>
262 inline open_region_iterator<const Ct>
268 template <
typename Ct>
269 inline open_region_iterator<const Ct>
277 template <
typename Ct>
278 inline open_region_iterator_pair<Ct>
284 template <
typename Ct>
285 inline open_region_iterator_pair<const Ct>
291 template <
typename Ct>
292 inline open_region_iterator_pair<const Ct>
302 #endif // SPATIAL_OPEN_REGION_HPP
This type provides both an iterator and a constant iterator to iterate through all elements of a tree...
A model of Region Predicate that checks if a value of type Key is contained within the open boundarie...
void check_open_bounds(const Tp &container, const typename container_traits< Tp >::key_type &lower, const typename container_traits< Tp >::key_type &upper)
Checks if all coordinates of lower are strictly less than these of higher along the same dimensions...
Tp::key_compare key_compare
Comparison functor used to compare two instances of key_type.
open_region_iterator< const Ct > open_region_cend(const Ct &container, const typename container_traits< Ct >::key_type &lower, const typename container_traits< Ct >::key_type &upper)
open_region_iterator< Ct > open_region_end(Ct &container, const typename container_traits< Ct >::key_type &lower, const typename container_traits< Ct >::key_type &upper)
open_region_iterator_pair()
region_iterator< const Ct, Predicate > region_cend(const Ct &container, const Predicate &pred)
This structure defines a pair of mutable region iterator.
Tp::key_type key_type
The type representing the key managed by the container.
open_region_iterator< const Ct > open_region_cbegin(const Ct &container, const typename container_traits< Ct >::key_type &lower, const typename container_traits< Ct >::key_type &upper)
open_region_iterator_pair< Ct > open_region_range(Ct &container, const typename container_traits< Ct >::key_type &lower, const typename container_traits< Ct >::key_type &upper)
Key _upper
The upper bound for the orthogonal region iterator.
region_iterator< Ct, Predicate > region_begin(Ct &container, const Predicate &pred)
open_bounds()
The default constructor leaves everything un-initialized.
region_iterator_pair< Ct, Predicate > region_range(Ct &container, const Predicate &pred)
Returns a spatial::region_iterator_pair where first points to the first element matching the predicat...
open_region_iterator< Ct > open_region_begin(Ct &container, const typename container_traits< Ct >::key_type &lower, const typename container_traits< Ct >::key_type &upper)
The traits type for all containers in the spatial namespace.
region_iterator< const Ct, Predicate > region_cbegin(const Ct &container, const Predicate &pred)
relative_order
Defines values for relative ordering.
std::size_t dimension_type
Defines the type for the dimension as being a size.
region_iterator< Ct, Predicate > region_end(Ct &container, const Predicate &pred)
Key _lower
The lower bound for the orthogonal region iterator.
The main namespace used in the library.
region_iterator_pair< const Ct, Predicate > region_crange(const Ct &container, const Predicate &pred)
This overload works only on constant containers and will return a set of constant iterators...
open_region_iterator_pair< const Ct > open_region_crange(const Ct &container, const typename container_traits< Ct >::key_type &lower, const typename container_traits< Ct >::key_type &upper)
open_bounds(const Compare &compare, const Key &lower, const Key &upper)
Set the lower and upper boundary for the orthogonal range search in the region.
open_region_iterator_pair()
open_bounds< typename container_traits< Tp >::key_type, typename container_traits< Tp >::key_compare > make_open_bounds(const Tp &container, const typename container_traits< Tp >::key_type &lower, const typename container_traits< Tp >::key_type &upper)
A open_bounds factory that takes in a container, a region defined by lower and upper, and returns a constructed open_bounds object.
relative_order operator()(dimension_type dim, dimension_type, const Key &key) const
The operator that returns wheather the point is in region or not.