GraphDom
Loading...
Searching...
No Matches
multiset_graph_vertex_handle.h
1/*
2 * Copyright 2026 Michele Comparini
3 *
4 * SPDX-License-Identifier: Apache-2.0
5 */
6
7#ifndef GRAPHDOM_MULTISET_GRAPH_VERTEX_HANDLE_H
8#define GRAPHDOM_MULTISET_GRAPH_VERTEX_HANDLE_H
9
10#include "../graph.h"
11#include "vertex_container.h"
12#include "vertex_handle.h"
13#include "../multiset_graph.h"
14
15namespace graphdom {
30 template <typename VertexType>
31 class multiset_graph<VertexType>::vertex_handle final : public graph<VertexType>::template vertex_base_handle< typename graph<VertexType>::vertex_container* > {
32 public:
33 vertex_handle() = delete;
42 vertex_handle(const vertex_handle& other);
52 explicit vertex_handle(const typename graph<VertexType>::vertex_handle& other);
53
54 ~vertex_handle() = default;
55
56 vertex_handle& operator=(const vertex_handle& other);
57
58 [[nodiscard]] multiset_graph<VertexType>::adj_list adj_list() const;
59 [[nodiscard]] multiset_graph<VertexType>::adj_list adj_list(edge_type edge_type) const;
60 [[nodiscard]] typename graph<VertexType>::const_adj_list const_adj_list() const;
61 [[nodiscard]] typename graph<VertexType>::const_adj_list const_adj_list(edge_type edge_type) const;
62
65 friend typename multiset_graph<VertexType>::adj_list_iterator;
67 private:
68 vertex_handle(
69 const graph<VertexType>* vertex_container_owner_ptr,
70 typename graph<VertexType>::graph_edges_type vertex_container_owner_et,
71 typename graph<VertexType>::vertex_container* vertex_container_ptr
72 );
73 };
74}
75
76#include "impl/multiset_graph_vertex_handle.h"
77
78#endif //GRAPHDOM_MULTISET_GRAPH_VERTEX_HANDLE_H
Every valid instance of this class is a "container-like and non-owning" handle to a subset of the set...
Definition const_adj_list.h:35
Every valid instance of this class can be used to identify a specific vertex of a graph and to access...
Definition vertex_const_handle.h:35
Every valid instance of this class can be used to identify a specific vertex of a graph and to access...
Definition vertex_handle.h:32
Every graph created using this library is an instance of a concrete class publicly derived,...
Definition graph.h:43
Every valid instance of this class is a "container-like and non-owning" handle to a subset of the set...
Definition multiset_graph_adj_list.h:31
vertex_handle(const vertex_handle &other)
Every multiset graph created using this library is an instance of a concrete class publicly derived,...
Definition multiset_graph.h:19
Definition adj_list.h:16
edge_type
The enumerated type whose values represent the two types of edges of a graph.
Definition graph.h:21