7#ifndef GRAPHDOM_FULL_LABELED_MULTISET_UGRAPH_H
8#define GRAPHDOM_FULL_LABELED_MULTISET_UGRAPH_H
10#include <forward_list>
12#include "labeled_vertex_graph.h"
13#include "labeled_vertex_multiset_graph.h"
14#include "labeled_edge_graph.h"
15#include "labeled_edge_non_mixed_graph.h"
28 typename VertexLabelType,
29 typename EdgeLabelType,
33 class full_labeled_multiset_ugraph final :
34 virtual public labeled_vertex_multiset_graph<VertexType,VertexLabelType,VertexLabellerType>,
35 virtual public labeled_edge_non_mixed_graph<VertexType,EdgeLabelType,EdgeLabellerType> {
37 full_labeled_multiset_ugraph();
38 full_labeled_multiset_ugraph(
const VertexLabellerType& v_lab,
const EdgeLabellerType& e_lab);
39 explicit full_labeled_multiset_ugraph(
const VertexLabellerType& v_lab, EdgeLabellerType&& e_lab = EdgeLabellerType());
40 full_labeled_multiset_ugraph(VertexLabellerType&& v_lab,
const EdgeLabellerType& e_lab);
41 explicit full_labeled_multiset_ugraph(VertexLabellerType&& v_lab, EdgeLabellerType&& e_lab = EdgeLabellerType());
43 ~full_labeled_multiset_ugraph()
override;
50 [[nodiscard]] std::size_t
order()
const override;
127 static void safe_edge_endpoint_deallocation(
typename graphdom::graph<VertexType>::template edge_endpoint<VertexContainerPointerType>*);
129 std::forward_list<vertex_container> vertices;
130 std::size_t number_of_vertices_inserted;
134#include "impl/full_labeled_multiset_ugraph.h"
This class template is the default vertex labeller used by all labeled-edge graphs if no user-specifi...
Definition labeled_edge_graph.h:37
This class template is the default vertex labeller used by all labeled-vertex graphs if no user-speci...
Definition labeled_vertex_graph.h:53
const VertexLabelType & get_vertex_label(const typename graph< VertexType >::vertex_const_handle &vertex) const override
Definition full_labeled_multiset_ugraph.h:67
multiset_graph< VertexType >::vertex_handle insert_vertex(const VertexType &v_core, const VertexLabelType &vertex_label) override
Definition full_labeled_multiset_ugraph.h:178
const EdgeLabelType & get_edge_label(const typename graph< VertexType >::adj_list_const_iterator &) const override
Definition full_labeled_multiset_ugraph.h:77
void insert_edge(const typename graph< VertexType >::vertex_const_handle &first_endpoint, const typename graph< VertexType >::vertex_const_handle &second_endpoint, const EdgeLabelType &edge_label) override
Definition full_labeled_multiset_ugraph.h:259
std::size_t order() const override
Returns the order of *this, i.e. the number of vertices inside the graph.
Definition full_labeled_multiset_ugraph.h:62
graphdom::graph< VertexType >::adj_list_iterator erase_edge(const typename graph< VertexType >::adj_list_const_iterator &) override
Definition full_labeled_multiset_ugraph.h:144
void erase_vertex(const typename graphdom::graph< VertexType >::vertex_const_handle &vertex) override
Removes the vertex identified by vertex.
Definition full_labeled_multiset_ugraph.h:95
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 graph created using this library is an instance of a concrete class publicly derived,...
Definition graph.h:43
Every labeled-edge non-mixed graph created using this library is an instance of a concrete class publ...
Definition labeled_edge_non_mixed_graph.h:23
Every labeled-vertex multiset graph created using this library is an instance of a concrete class pub...
Definition labeled_vertex_multiset_graph.h:24
Every valid instance of this class can be used to identify a specific vertex of a multiset graph and ...
Definition multiset_graph_vertex_handle.h:31
Every multiset graph created using this library is an instance of a concrete class publicly derived,...
Definition multiset_graph.h:19