Gamedev Framework (gf)  0.12.0
A C++14 framework for 2D games
Public Types | Public Member Functions | Public Attributes | Related Functions | List of all members
gf::NeighborDiamondRange< T >::Iterator Struct Reference

An iterator for a 2D range. More...

#include <gf/Range.h>

Public Types

using difference_type = std::ptrdiff_t
 
using value_type = Vector< T, 2 >
 
using pointer = value_type
 
using reference = value_type
 
using iterator_category = std::forward_iterator_tag
 

Public Member Functions

constexpr Iterator (Vector< T, 2 > iteratorPosition, const NeighborDiamondRange< T > *iteratorParent) noexcept
 Constructor. More...
 
constexpr Iterator (Vector< T, 2 > iteratorPosition) noexcept
 Constructor of a end sentinel. More...
 
void swap (Iterator &other) noexcept
 Swap the iterator with another iterator. More...
 
reference operator* () noexcept
 Dereference operator. More...
 
pointer operator-> () noexcept
 Pointer operator. More...
 
Iteratoroperator++ () noexcept
 Increment operator (prefix) More...
 
Iterator operator++ (int) noexcept
 Increment operator (postfix) More...
 
constexpr bool operator!= (const Iterator &other) const noexcept
 Inequality operator. More...
 
constexpr bool operator== (const Iterator &other) const noexcept
 Equality operator. More...
 

Public Attributes

Vector< T, 2 > position
 
const NeighborDiamondRange< T > * parent
 

Related Functions

(Note that these are not member functions.)

template<typename T >
void swap (typename NeighborDiamondRange< T >::Iterator &lhs, typename NeighborDiamondRange< T >::Iterator &rhs) noexcept
 Swap two range iterators. More...
 

Detailed Description

template<typename T>
struct gf::NeighborDiamondRange< T >::Iterator

An iterator for a 2D range.

Member Typedef Documentation

◆ difference_type

template<typename T>
using gf::NeighborDiamondRange< T >::Iterator::difference_type = std::ptrdiff_t

◆ iterator_category

template<typename T>
using gf::NeighborDiamondRange< T >::Iterator::iterator_category = std::forward_iterator_tag

◆ pointer

template<typename T>
using gf::NeighborDiamondRange< T >::Iterator::pointer = value_type

◆ reference

template<typename T>
using gf::NeighborDiamondRange< T >::Iterator::reference = value_type

◆ value_type

template<typename T>
using gf::NeighborDiamondRange< T >::Iterator::value_type = Vector<T, 2>

Constructor & Destructor Documentation

◆ Iterator() [1/2]

template<typename T>
constexpr gf::NeighborDiamondRange< T >::Iterator::Iterator ( Vector< T, 2 >  iteratorPosition,
const NeighborDiamondRange< T > *  iteratorParent 
)
inlinenoexcept

Constructor.

Parameters
iteratorPositionThe current position in 2D
iteratorParentThe parent range of the iterator

◆ Iterator() [2/2]

template<typename T>
constexpr gf::NeighborDiamondRange< T >::Iterator::Iterator ( Vector< T, 2 >  iteratorPosition)
inlinenoexcept

Constructor of a end sentinel.

Parameters
iteratorPositionThe current position in 2D

Member Function Documentation

◆ operator!=()

template<typename T>
constexpr bool gf::NeighborDiamondRange< T >::Iterator::operator!= ( const Iterator other) const
inlinenoexcept

Inequality operator.

Parameters
otherAnother iterator
Returns
True if the iterator are different

◆ operator*()

template<typename T>
reference gf::NeighborDiamondRange< T >::Iterator::operator* ( )
inlinenoexcept

Dereference operator.

Returns
The position

◆ operator++() [1/2]

template<typename T>
Iterator& gf::NeighborDiamondRange< T >::Iterator::operator++ ( )
inlinenoexcept

Increment operator (prefix)

Returns
The iterator

◆ operator++() [2/2]

template<typename T>
Iterator gf::NeighborDiamondRange< T >::Iterator::operator++ ( int  )
inlinenoexcept

Increment operator (postfix)

Returns
The iterator

◆ operator->()

template<typename T>
pointer gf::NeighborDiamondRange< T >::Iterator::operator-> ( )
inlinenoexcept

Pointer operator.

Returns
The position

◆ operator==()

template<typename T>
constexpr bool gf::NeighborDiamondRange< T >::Iterator::operator== ( const Iterator other) const
inlinenoexcept

Equality operator.

Parameters
otherAnother iterator
Returns
True if the iterator are the same

◆ swap()

template<typename T>
void gf::NeighborDiamondRange< T >::Iterator::swap ( Iterator other)
inlinenoexcept

Swap the iterator with another iterator.

Friends And Related Function Documentation

◆ swap()

template<typename T >
void swap ( typename NeighborDiamondRange< T >::Iterator lhs,
typename NeighborDiamondRange< T >::Iterator rhs 
)
related

Swap two range iterators.

Member Data Documentation

◆ parent

template<typename T>
const NeighborDiamondRange<T>* gf::NeighborDiamondRange< T >::Iterator::parent

◆ position

template<typename T>
Vector<T, 2> gf::NeighborDiamondRange< T >::Iterator::position