GraphDom
Loading...
Searching...
No Matches
adj_list_const_iterator.h
1/*
2 * Copyright 2026 Michele Comparini
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef GRAPHDOM_ADJ_LIST_CONST_ITERATOR_H
8#define GRAPHDOM_ADJ_LIST_CONST_ITERATOR_H
9
10#include "../graph.h"
11#include "adj_list_base_iterator.h"
12#include "../multiset_graph.h"
13
14namespace graphdom {
15 template <typename VertexType>
16 class graphdom::graph<VertexType>::adj_list_const_iterator final : public graph<VertexType>::adj_list_base_iterator< const graph<VertexType>::vertex_container* > {
17 public:
18 adj_list_const_iterator();
19 adj_list_const_iterator(const adj_list_const_iterator& other_iterator);
20 adj_list_const_iterator(const graph<VertexType>::adj_list_iterator& other_iterator);
21 adj_list_const_iterator(const typename multiset_graph<VertexType>::adj_list_iterator& other_iterator);
22
23 ~adj_list_const_iterator() = default;
24
25 graph<VertexType>::vertex_const_handle operator->() const;
26 graph<VertexType>::vertex_const_handle operator*() const;
27
28 adj_list_const_iterator& operator=(const adj_list_const_iterator& other);
29 adj_list_const_iterator& operator++();
30 [[nodiscard]] adj_list_const_iterator operator++(int);
31
33 friend class graph<VertexType>::const_adj_list;
34 friend class graph<VertexType>::adj_list;
35 friend class multiset_graph<VertexType>::adj_list;
36 friend class graph<VertexType>;
37 friend class set_graph<VertexType>;
38 friend class multiset_graph<VertexType>;
40 private:
41 adj_list_const_iterator( const graph<VertexType>::adj_list_base_iterator< const graph<VertexType>::vertex_container* >& other );
42 adj_list_const_iterator(
43 const graph<VertexType>* iterator_owner_pointer,
44 typename graph<VertexType>::graph_edges_type iterator_owner_graph_edges_type,
45 const typename graph<VertexType>::vertex_container* edge_begin_point_vertex_container,
46 typename graph<VertexType>::edges_type_selection_type edges_type_restriction,
47 graphdom::edge_type inner_iterator_edge_current_type
48 );
49 adj_list_const_iterator(
50 const graph<VertexType>* iterator_owner_pointer,
51 typename graph<VertexType>::graph_edges_type iterator_owner_graph_edges_type,
52 const typename graph<VertexType>::vertex_container* edge_begin_point_vertex_container,
53 typename graph<VertexType>::edges_type_selection_type edges_type_restriction,
54 graphdom::edge_type inner_iterator_edge_current_type,
55 const typename graph<VertexType>::template adj_set<typename graph<VertexType>::vertex_container*>::iterator& inner_iterator
56 );
57 adj_list_const_iterator(
58 const graph<VertexType>* iterator_owner_pointer,
59 typename graph<VertexType>::graph_edges_type iterator_owner_graph_edges_type,
60 const typename graph<VertexType>::vertex_container* edge_begin_point_vertex_container,
61 typename graph<VertexType>::edges_type_selection_type edges_type_restriction,
62 graphdom::edge_type inner_iterator_edge_current_type,
63 const typename graph<VertexType>::template adj_set<const typename graph<VertexType>::vertex_container*>::iterator& inner_iterator
64 );
65 };
66}
67
68#include "impl/adj_list_const_iterator.h"
69
70#endif //GRAPHDOM_ADJ_LIST_CONST_ITERATOR_H
Every graph created using this library is an instance of a concrete class publicly derived,...
Definition graph.h:43
Definition adj_list.h:16