GraphLibrary  0.0.1
A simple library that implements various graph algorithms.
 All Classes Namespaces Files Functions Variables Typedefs Macros
gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst > Class Template Reference

Edge_Iterator class. Used to iterate over all Edges in the Graph More...

#include <Graph.hpp>

Public Types

using value_type = Edge
 Edge type. More...
 
using reference = std::conditional_t< IsConst, const Edge &, Edge & >
 Edge reference type. More...
 
using pointer = std::conditional_t< IsConst, const Edge *, Edge * >
 Edge pointer type. More...
 
using iterator_category = std::forward_iterator_tag
 Iterator category. More...
 
using difference_type = std::ptrdiff_t
 Pointer Difference type. More...
 
using self_t = Edge_Iterator
 EdgeIterator type. More...
 
using matrix_iterator_t = std::conditional_t< IsConst, typename matrix_t::const_iterator, typename matrix_t::iterator >
 
using rootList_iterator_t = std::conditional_t< IsConst, typename rootList_t::const_iterator, typename rootList_t::iterator >
 
using list_iterator_t = std::conditional_t< IsConst, typename nodeList_t::const_iterator, typename nodeList_t::iterator >
 
using container_pointer_t = std::conditional_t< IsConst, const Graph< SCALAR, STORAGE_KIND, DIRECTION > *, Graph< SCALAR, STORAGE_KIND, DIRECTION > * >
 

Public Member Functions

 Edge_Iterator ()
 Default constructor. More...
 
 Edge_Iterator (matrix_iterator_t ptr, matrix_iterator_t data1, container_pointer_t data2)
 Construct EdgeIterator, only used with Matrix Representation. More...
 
 Edge_Iterator (list_iterator_t ptr, rootList_iterator_t data1, container_pointer_t data2)
 Construct EdgeIterator, only used with List Representation. More...
 
self_t operator++ ()
 Move Iterator to next edge (pre-increment) More...
 
self_t operator++ (int dummy)
 Move Iterator to next edge (post-increment) More...
 
 operator* () const
 Const dereference iterator. More...
 
 operator* ()
 Non-const dereference iterator. More...
 
 operator-> () const
 Get underlying edge. More...
 
 operator-> ()
 Get underlying edge. More...
 
bool operator== (const self_t &rhs)
 Check if equal. More...
 
bool operator!= (const self_t &rhs)
 Check if not equal. More...
 
self_t operator= (const self_t &rhs)
 Construct from Assignment. More...
 

Private Attributes

std::conditional_t
< std::is_same_v< STORAGE_KIND,
Matrix >, matrix_iterator_t,
list_iterator_t
ptr_
 [Matrix] Iterator to an element, [List] Iterator over the nodeLists More...
 
std::conditional_t
< std::is_same_v< STORAGE_KIND,
Matrix >, matrix_iterator_t,
rootList_iterator_t
data1_
 [Matrix] Iterator to first element, [List] Iterator over the rootList More...
 
container_pointer_t data2_
 Pointer to owner Graph. More...
 

Detailed Description

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
class gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >

Edge_Iterator class. Used to iterate over all Edges in the Graph

Member Typedef Documentation

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
using gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::value_type = Edge

Edge type.

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
using gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::reference = std::conditional_t<IsConst, const Edge &, Edge &>

Edge reference type.

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
using gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::pointer = std::conditional_t<IsConst, const Edge *, Edge *>

Edge pointer type.

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
using gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::iterator_category = std::forward_iterator_tag

Iterator category.

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
using gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::difference_type = std::ptrdiff_t

Pointer Difference type.

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
using gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::self_t = Edge_Iterator

EdgeIterator type.

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
using gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::matrix_iterator_t = std::conditional_t<IsConst, typename matrix_t::const_iterator, typename matrix_t::iterator>
template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
using gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::rootList_iterator_t = std::conditional_t<IsConst, typename rootList_t::const_iterator, typename rootList_t::iterator>
template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
using gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::list_iterator_t = std::conditional_t<IsConst, typename nodeList_t::const_iterator, typename nodeList_t::iterator>
template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
using gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::container_pointer_t = std::conditional_t<IsConst, const Graph<SCALAR, STORAGE_KIND, DIRECTION> *, Graph<SCALAR, STORAGE_KIND, DIRECTION> *>

Constructor & Destructor Documentation

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::Edge_Iterator ( )
inline

Default constructor.

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::Edge_Iterator ( matrix_iterator_t  ptr,
matrix_iterator_t  data1,
container_pointer_t  data2 
)
inline

Construct EdgeIterator, only used with Matrix Representation.

Parameters
[in]ptrPointer to which edge this iterator should point
[in]data1pointer to first element in the matrix
[in]data2pointer to the owner data structure
template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::Edge_Iterator ( list_iterator_t  ptr,
rootList_iterator_t  data1,
container_pointer_t  data2 
)
inline

Construct EdgeIterator, only used with List Representation.

Parameters
[in]ptrPointer to which edge this iterator should point
[in]data1iterator over the root vector
[in]data2pointer to the owner data structure

Member Function Documentation

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
self_t gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::operator++ ( )
inline

Move Iterator to next edge (pre-increment)

Returns
new Iterator
template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
self_t gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::operator++ ( int  dummy)
inline

Move Iterator to next edge (post-increment)

Returns
new Iterator
template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::operator* ( ) const
inline

Const dereference iterator.

Returns
A Reference to the underlying edge
template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::operator* ( )
inline

Non-const dereference iterator.

Returns
A Reference to the underlying edge
template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::operator-> ( ) const
inline

Get underlying edge.

Returns
Const pointer to underlying edge
template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::operator-> ( )
inline

Get underlying edge.

Returns
Non-const pointer to underlying edge
template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
bool gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::operator== ( const self_t rhs)
inline

Check if equal.

Returns
If both iterators are equal
template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
bool gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::operator!= ( const self_t rhs)
inline

Check if not equal.

Returns
If both iterators are not equal
template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
self_t gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::operator= ( const self_t rhs)
inline

Construct from Assignment.

Returns
If both iterators are not equal

Member Data Documentation

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
std::conditional_t<std::is_same_v<STORAGE_KIND, Matrix>, matrix_iterator_t, list_iterator_t> gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::ptr_
private

[Matrix] Iterator to an element, [List] Iterator over the nodeLists

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
std::conditional_t<std::is_same_v<STORAGE_KIND, Matrix>, matrix_iterator_t, rootList_iterator_t> gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::data1_
private

[Matrix] Iterator to first element, [List] Iterator over the rootList

template<class SCALAR = int, class STORAGE_KIND = gl::List, class DIRECTION = gl::Undirected>
template<bool IsConst = true>
container_pointer_t gl::Graph< SCALAR, STORAGE_KIND, DIRECTION >::Edge_Iterator< IsConst >::data2_
private

Pointer to owner Graph.


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