GraphDom
Loading...
Searching...
No Matches
set_graph.h
1/*
2 * Copyright 2026 Michele Comparini
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef GRAPHDOM_SET_GRAPH_IMPL_H
8#define GRAPHDOM_SET_GRAPH_IMPL_H
9
10#include "../set_graph.h"
11
12template<typename VertexType>
15const typename graphdom::graph<VertexType>::adj_list_const_iterator& const_edge_itr) {
16 return std::get< typename graph<VertexType>::template adj_set<const typename graph<VertexType>::vertex_container*>::iterator >( const_edge_itr.inner_iterator );
17}
18
19template<typename VertexType>
20typename graphdom::graph<VertexType>::adj_list_iterator
22 const graphdom::set_graph<VertexType>* const edge_set_vertex_graph_owner_ptr,
23 const non_mixed_graph_vertex_container* const edge_begin_point_ptr,
24 const graphdom::edge_type edge_set_vertex_graph_owner_edges_type,
25 const typename adj_set::iterator inner_itr) {
26 return typename graphdom::graph<VertexType>::adj_list_iterator(
27 edge_set_vertex_graph_owner_ptr,
28 ( edge_set_vertex_graph_owner_edges_type == edge_type::undirected ) ?
29 graph<VertexType>::graph_edges_type::undirected :
30 graph<VertexType>::graph_edges_type::directed,
31 edge_begin_point_ptr,
32 graph<VertexType>::edges_type_selection_type::none,
33 edge_set_vertex_graph_owner_edges_type,
34 inner_itr
35 );
36}
37
38template<typename VertexType>
39typename graphdom::graph<VertexType>::adj_list_iterator
41 const graphdom::set_graph<VertexType>* const edge_set_vertex_graph_owner_ptr,
42 const mixed_graph_vertex_container* const edge_begin_point_ptr,
43 const typename adj_set::iterator inner_itr,
44 const graphdom::edge_type inner_itr_edge_type,
45 const bool inner_itr_is_limited_by_edge_type) {
46 return typename graphdom::graph<VertexType>::adj_list_iterator(
47 edge_set_vertex_graph_owner_ptr,
48 graph<VertexType>::graph_edges_type::mixed,
49 edge_begin_point_ptr,
50 inner_itr_is_limited_by_edge_type ?
51 ( ( inner_itr_edge_type == graphdom::edge_type::undirected ) ?
52 graph<VertexType>::edges_type_selection_type::undirected_edges :
53 graph<VertexType>::edges_type_selection_type::directed_edges ) :
54 graph<VertexType>::edges_type_selection_type::none,
55 inner_itr_edge_type,
56 inner_itr
57 );
58}
59
60#endif //GRAPHDOM_SET_GRAPH_IMPL_H
Every graph created using this library is an instance of a concrete class publicly derived,...
Definition graph.h:43
Every set graph created using this library is an instance of a concrete class publicly derived,...
Definition set_graph.h:18
edge_type
The enumerated type whose values represent the two types of edges of a graph.
Definition graph.h:21
@ undirected
This enum value means undirected edge.
Definition graph.h:22