OGS
GeoLib::Polyline::SegmentIterator Class Referencefinal

Detailed Description

Definition at line 31 of file Polyline.h.

#include <Polyline.h>

Collaboration diagram for GeoLib::Polyline::SegmentIterator:
[legend]

Public Types

using iterator_category = std::forward_iterator_tag
using value_type = LineSegment
using difference_type = std::ptrdiff_t
using pointer = LineSegment*
using reference = LineSegment&

Public Member Functions

 SegmentIterator (Polyline const &polyline, std::size_t segment_number)
 SegmentIterator (SegmentIterator const &src)
 SegmentIterator ()=delete
 ~SegmentIterator ()=default
SegmentIteratoroperator= (SegmentIterator const &rhs)
std::size_t getSegmentNumber () const
SegmentIteratoroperator++ ()
LineSegment operator* () const
LineSegment operator* ()
bool operator== (SegmentIterator const &other) const
bool operator!= (SegmentIterator const &other) const
SegmentIteratoroperator+= (std::vector< GeoLib::Point >::difference_type n)
SegmentIterator operator+ (std::vector< GeoLib::Point >::difference_type n)
SegmentIteratoroperator-= (std::vector< GeoLib::Point >::difference_type n)
SegmentIterator operator- (std::vector< GeoLib::Point >::difference_type n)

Private Attributes

GeoLib::Polyline const * _polyline
std::vector< GeoLib::Point * >::size_type _segment_number

Member Typedef Documentation

◆ difference_type

Definition at line 36 of file Polyline.h.

◆ iterator_category

using GeoLib::Polyline::SegmentIterator::iterator_category = std::forward_iterator_tag

Definition at line 34 of file Polyline.h.

◆ pointer

◆ reference

◆ value_type

Constructor & Destructor Documentation

◆ SegmentIterator() [1/3]

GeoLib::Polyline::SegmentIterator::SegmentIterator ( Polyline const & polyline,
std::size_t segment_number )
explicit

Definition at line 350 of file Polyline.cpp.

352 : _polyline(&polyline),
354 static_cast<std::vector<GeoLib::Point*>::size_type>(segment_number))
355{
356}
GeoLib::Polyline const * _polyline
Definition Polyline.h:75
std::vector< GeoLib::Point * >::size_type _segment_number
Definition Polyline.h:76

References GeoLib::Polyline::Polyline(), _polyline, and _segment_number.

Referenced by SegmentIterator(), ~SegmentIterator(), operator!=(), operator+(), operator=(), and operator==().

◆ SegmentIterator() [2/3]

GeoLib::Polyline::SegmentIterator::SegmentIterator ( SegmentIterator const & src)

Definition at line 358 of file Polyline.cpp.

359 : _polyline(src._polyline), _segment_number(src._segment_number)
360{
361}

References SegmentIterator(), _polyline, and _segment_number.

◆ SegmentIterator() [3/3]

GeoLib::Polyline::SegmentIterator::SegmentIterator ( )
delete

◆ ~SegmentIterator()

GeoLib::Polyline::SegmentIterator::~SegmentIterator ( )
default

References SegmentIterator().

Member Function Documentation

◆ getSegmentNumber()

std::size_t GeoLib::Polyline::SegmentIterator::getSegmentNumber ( ) const

◆ operator!=()

bool GeoLib::Polyline::SegmentIterator::operator!= ( SegmentIterator const & other) const

Definition at line 402 of file Polyline.cpp.

403{
404 return other._segment_number != _segment_number ||
405 other._polyline != _polyline;
406}

References SegmentIterator(), _polyline, and _segment_number.

◆ operator*() [1/2]

LineSegment GeoLib::Polyline::SegmentIterator::operator* ( )

Definition at line 392 of file Polyline.cpp.

393{
394 return _polyline->getSegment(_segment_number);
395}

References _polyline, and _segment_number.

◆ operator*() [2/2]

LineSegment GeoLib::Polyline::SegmentIterator::operator* ( ) const

Definition at line 387 of file Polyline.cpp.

388{
389 return _polyline->getSegment(_segment_number);
390}

References _polyline, and _segment_number.

◆ operator+()

Polyline::SegmentIterator GeoLib::Polyline::SegmentIterator::operator+ ( std::vector< GeoLib::Point >::difference_type n)

Definition at line 428 of file Polyline.cpp.

430{
431 SegmentIterator t(*this);
432 t += n;
433 return t;
434}
SegmentIterator(Polyline const &polyline, std::size_t segment_number)
Definition Polyline.cpp:350

References SegmentIterator().

◆ operator++()

Polyline::SegmentIterator & GeoLib::Polyline::SegmentIterator::operator++ ( )

Definition at line 381 of file Polyline.cpp.

382{
384 return *this;
385}

References _segment_number.

◆ operator+=()

Polyline::SegmentIterator & GeoLib::Polyline::SegmentIterator::operator+= ( std::vector< GeoLib::Point >::difference_type n)

Definition at line 408 of file Polyline.cpp.

410{
411 if (n < 0)
412 {
414 static_cast<std::vector<GeoLib::Point>::size_type>(-n);
415 }
416 else
417 {
419 static_cast<std::vector<GeoLib::Point>::size_type>(n);
420 }
421 if (_segment_number > _polyline->getNumberOfSegments())
422 {
423 OGS_FATAL("");
424 }
425 return *this;
426}
#define OGS_FATAL(...)
Definition Error.h:19

References _polyline, _segment_number, and OGS_FATAL.

◆ operator-()

Polyline::SegmentIterator GeoLib::Polyline::SegmentIterator::operator- ( std::vector< GeoLib::Point >::difference_type n)

Definition at line 456 of file Polyline.cpp.

458{
459 Polyline::SegmentIterator t(*this);
460 t -= n;
461 return t;
462}

◆ operator-=()

Polyline::SegmentIterator & GeoLib::Polyline::SegmentIterator::operator-= ( std::vector< GeoLib::Point >::difference_type n)

Definition at line 436 of file Polyline.cpp.

438{
439 if (n >= 0)
440 {
442 static_cast<std::vector<GeoLib::Point>::size_type>(n);
443 }
444 else
445 {
447 static_cast<std::vector<GeoLib::Point>::size_type>(-n);
448 }
449 if (_segment_number > _polyline->getNumberOfSegments())
450 {
451 OGS_FATAL("");
452 }
453 return *this;
454}

References _polyline, _segment_number, and OGS_FATAL.

◆ operator=()

Polyline::SegmentIterator & GeoLib::Polyline::SegmentIterator::operator= ( SegmentIterator const & rhs)

Definition at line 363 of file Polyline.cpp.

365{
366 if (&rhs == this)
367 {
368 return *this;
369 }
370
371 _polyline = rhs._polyline;
372 _segment_number = rhs._segment_number;
373 return *this;
374}

References SegmentIterator(), _polyline, and _segment_number.

◆ operator==()

bool GeoLib::Polyline::SegmentIterator::operator== ( SegmentIterator const & other) const

Definition at line 397 of file Polyline.cpp.

398{
399 return !(*this != other);
400}

References SegmentIterator().

Member Data Documentation

◆ _polyline

GeoLib::Polyline const* GeoLib::Polyline::SegmentIterator::_polyline
private

◆ _segment_number

std::vector<GeoLib::Point*>::size_type GeoLib::Polyline::SegmentIterator::_segment_number
private

The documentation for this class was generated from the following files: