16 #include "atlas/grid/detail/grid/Grid.h" 27 using implementation_t = detail::grid::Grid::IteratorXY;
30 using difference_type = implementation_t::difference_type;
31 using iterator_category = implementation_t::iterator_category;
32 using value_type = implementation_t::value_type;
33 using pointer = implementation_t::pointer;
34 using reference = implementation_t::reference;
37 IteratorXY( std::unique_ptr<implementation_t> iterator ) : iterator_( std::move( iterator ) ) {}
41 bool next( value_type& xy ) {
return iterator_->next( xy ); }
43 reference operator*()
const {
return iterator_->operator*(); }
46 iterator_->operator++();
50 const IteratorXY& operator+=( difference_type distance ) {
51 iterator_->operator+=( distance );
62 return first.iterator_->distance( *last.iterator_ );
65 bool operator==(
const IteratorXY& other )
const {
return iterator_->operator==( *other.iterator_ ); }
66 bool operator!=(
const IteratorXY& other )
const {
return iterator_->operator!=( *other.iterator_ ); }
69 IteratorXY::difference_type distance(
const IteratorXY& other )
const {
70 return iterator_->distance( *other.iterator_ );
74 std::unique_ptr<implementation_t> iterator_;
81 using implementation_t = detail::grid::Grid::IteratorLonLat;
84 using difference_type = implementation_t::difference_type;
85 using iterator_category = implementation_t::iterator_category;
86 using value_type = implementation_t::value_type;
87 using pointer = implementation_t::pointer;
88 using reference = implementation_t::reference;
91 IteratorLonLat( std::unique_ptr<implementation_t> iterator ) : iterator_( std::move( iterator ) ) {}
95 bool next( value_type& xy ) {
return iterator_->next( xy ); }
97 reference operator*()
const {
return iterator_->operator*(); }
100 iterator_->operator++();
105 iterator_->operator+=( distance );
116 return first.iterator_->distance( *last.iterator_ );
119 bool operator==(
const IteratorLonLat& other )
const {
return iterator_->operator==( *other.iterator_ ); }
120 bool operator!=(
const IteratorLonLat& other )
const {
return iterator_->operator!=( *other.iterator_ ); }
123 difference_type distance(
const IteratorLonLat& other )
const {
return iterator_->distance( *other.iterator_ ); }
126 std::unique_ptr<implementation_t> iterator_;
141 void access(
size_t i,
PointXY& );
142 PointXY front() {
return *begin(); }
143 PointXY back() {
return *( begin() + ( grid_.size() - 1 ) ); }
160 PointLonLat back() {
return *( begin() + ( grid_.size() - 1 ) ); }
169 #ifndef DOXYGEN_SHOULD_SKIP_THIS Definition: Iterator.h:149
This file contains classes and functions working on points.
Point in longitude-latitude coordinate system.
Definition: Point.h:103
Definition: DataType.h:22
Definition: Iterator.h:26
Definition: Iterator.h:131
Definition: Iterator.h:80
Point in arbitrary XY-coordinate system.
Definition: Point.h:40
Contains all atlas classes and methods.
Definition: atlas-grids.cc:33