7#ifndef GRAPHDOM_FULL_LABELED_MULTISET_DIGRAPH_H
8#define GRAPHDOM_FULL_LABELED_MULTISET_DIGRAPH_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_digraph 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_digraph();
38 full_labeled_multiset_digraph(
const VertexLabellerType& v_lab,
const EdgeLabellerType& e_lab);
39 explicit full_labeled_multiset_digraph(
const VertexLabellerType& v_lab, EdgeLabellerType&& e_lab = EdgeLabellerType());
40 full_labeled_multiset_digraph(VertexLabellerType&& v_lab,
const EdgeLabellerType& e_lab);
41 explicit full_labeled_multiset_digraph(VertexLabellerType&& v_lab, EdgeLabellerType&& e_lab = EdgeLabellerType());
43 ~full_labeled_multiset_digraph()
override;
50 [[nodiscard]] std::size_t
order()
const override;
126 static void safe_edge_endpoint_deallocation(
typename graphdom::graph<VertexType>::template edge_endpoint<VertexContainerPointerType>*);
128 std::forward_list<vertex_container> vertices;
129 std::size_t number_of_vertices_inserted;
133#include "impl/full_labeled_multiset_digraph.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
void insert_edge(const typename graph< VertexType >::vertex_const_handle &tail, const typename graph< VertexType >::vertex_const_handle &head, const EdgeLabelType &edge_label) override
Definition full_labeled_multiset_digraph.h:238
std::size_t order() const override
Returns the order of *this, i.e. the number of vertices inside the graph.
Definition full_labeled_multiset_digraph.h:62
graphdom::graph< VertexType >::adj_list_iterator erase_edge(const typename graph< VertexType >::adj_list_const_iterator &) override
Definition full_labeled_multiset_digraph.h:131
const VertexLabelType & get_vertex_label(const typename graph< VertexType >::vertex_const_handle &vertex) const override
Definition full_labeled_multiset_digraph.h:67
void erase_vertex(const typename graphdom::graph< VertexType >::vertex_const_handle &vertex) override
Removes the vertex identified by vertex.
Definition full_labeled_multiset_digraph.h:92
const EdgeLabelType & get_edge_label(const typename graph< VertexType >::adj_list_const_iterator &) const override
Definition full_labeled_multiset_digraph.h:77
multiset_graph< VertexType >::vertex_handle insert_vertex(const VertexType &v_core, const VertexLabelType &vertex_label) override
Definition full_labeled_multiset_digraph.h:160
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 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