HavoqGT
havoqgt::upper_triangle_edge_generator::input_iterator_type Class Reference

InputIterator class for upper_triangle_edge_generator. More...

#include <upper_triangle_edge_generator.hpp>

Inheritance diagram for havoqgt::upper_triangle_edge_generator::input_iterator_type:
Collaboration diagram for havoqgt::upper_triangle_edge_generator::input_iterator_type:

Public Member Functions

 input_iterator_type (uint64_t max_vertex, uint64_t num_edges, bool undirected)
 
 input_iterator_type (uint64_t max_vertex, uint64_t num_edges, bool undirected, uint64_t i, uint64_t j)
 
const edge_typeoperator* () const
 
input_iterator_typeoperator++ ()
 
input_iterator_type operator++ (int)
 
edge_typeoperator-> ()
 
bool is_equal (const input_iterator_type &_x) const
 

Private Member Functions

void get_next ()
 
 input_iterator_type ()
 
edge_type generate_edge ()
 

Private Attributes

const uint64_t m_max_vertex
 
const uint64_t m_num_edges
 
const bool m_undirected
 
bool m_make_undirected {false}
 
uint64_t m_count {0}
 
uint64_t m_i
 
uint64_t m_j
 
edge_type m_current
 

Friends

bool operator== (const input_iterator_type &x, const input_iterator_type &y)
 
bool operator!= (const input_iterator_type &x, const input_iterator_type &y)
 

Detailed Description

InputIterator class for upper_triangle_edge_generator.

Definition at line 72 of file upper_triangle_edge_generator.hpp.

Constructor & Destructor Documentation

havoqgt::upper_triangle_edge_generator::input_iterator_type::input_iterator_type ( uint64_t  max_vertex,
uint64_t  num_edges,
bool  undirected 
)
inline
havoqgt::upper_triangle_edge_generator::input_iterator_type::input_iterator_type ( uint64_t  max_vertex,
uint64_t  num_edges,
bool  undirected,
uint64_t  i,
uint64_t  j 
)
inline
havoqgt::upper_triangle_edge_generator::input_iterator_type::input_iterator_type ( )
private

Member Function Documentation

edge_type havoqgt::upper_triangle_edge_generator::input_iterator_type::generate_edge ( )
inlineprivate

Definition at line 147 of file upper_triangle_edge_generator.hpp.

147  {
148  if (m_j < m_max_vertex) {
149  m_j++;
150  } else {
151  m_i++;
152  m_j = m_i;
153  }
154  assert(m_i <= m_max_vertex);
155  assert(m_j <= m_max_vertex);
156  return std::make_pair(m_j + 1, m_i + 1);
157  } // generate_edge

Here is the caller graph for this function:

void havoqgt::upper_triangle_edge_generator::input_iterator_type::get_next ( )
inlineprivate

Definition at line 75 of file upper_triangle_edge_generator.hpp.

Here is the call graph for this function:

Here is the caller graph for this function:

bool havoqgt::upper_triangle_edge_generator::input_iterator_type::is_equal ( const input_iterator_type _x) const
inline

Definition at line 130 of file upper_triangle_edge_generator.hpp.

130  {
131  return m_count == (_x.m_count);
132  }
const edge_type& havoqgt::upper_triangle_edge_generator::input_iterator_type::operator* ( ) const
inline
input_iterator_type& havoqgt::upper_triangle_edge_generator::input_iterator_type::operator++ ( )
inline

Definition at line 115 of file upper_triangle_edge_generator.hpp.

Here is the call graph for this function:

input_iterator_type havoqgt::upper_triangle_edge_generator::input_iterator_type::operator++ ( int  )
inline

Definition at line 120 of file upper_triangle_edge_generator.hpp.

Here is the call graph for this function:

edge_type* havoqgt::upper_triangle_edge_generator::input_iterator_type::operator-> ( )
inline

Friends And Related Function Documentation

bool operator!= ( const input_iterator_type x,
const input_iterator_type y 
)
friend

Definition at line 141 of file upper_triangle_edge_generator.hpp.

142  { return !x.is_equal(y); }
bool operator== ( const input_iterator_type x,
const input_iterator_type y 
)
friend

Definition at line 136 of file upper_triangle_edge_generator.hpp.

137  { return x.is_equal(y); }

Member Data Documentation

uint64_t havoqgt::upper_triangle_edge_generator::input_iterator_type::m_count {0}
private

Definition at line 162 of file upper_triangle_edge_generator.hpp.

edge_type havoqgt::upper_triangle_edge_generator::input_iterator_type::m_current
private

Definition at line 163 of file upper_triangle_edge_generator.hpp.

uint64_t havoqgt::upper_triangle_edge_generator::input_iterator_type::m_i
private

Definition at line 162 of file upper_triangle_edge_generator.hpp.

uint64_t havoqgt::upper_triangle_edge_generator::input_iterator_type::m_j
private

Definition at line 162 of file upper_triangle_edge_generator.hpp.

bool havoqgt::upper_triangle_edge_generator::input_iterator_type::m_make_undirected {false}
private

Definition at line 161 of file upper_triangle_edge_generator.hpp.

const uint64_t havoqgt::upper_triangle_edge_generator::input_iterator_type::m_max_vertex
private

Definition at line 159 of file upper_triangle_edge_generator.hpp.

const uint64_t havoqgt::upper_triangle_edge_generator::input_iterator_type::m_num_edges
private

Definition at line 159 of file upper_triangle_edge_generator.hpp.

const bool havoqgt::upper_triangle_edge_generator::input_iterator_type::m_undirected
private

Definition at line 160 of file upper_triangle_edge_generator.hpp.


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