GraphDom
Toggle main menu visibility
Loading...
Searching...
No Matches
labeled_edge_mixed_graph.h
1
/*
2
* Copyright 2026 Michele Comparini
3
*
4
* SPDX-License-Identifier: Apache-2.0
5
*/
6
7
#ifndef GRAPHDOM_LABELED_EDGE_MIXED_GRAPH_H
8
#define GRAPHDOM_LABELED_EDGE_MIXED_GRAPH_H
9
10
#include "labeled_edge_graph.h"
11
#include "mixed_graph.h"
12
13
namespace
graphdom
{
15
18
template
<
19
typename
VertexType,
20
typename
EdgeLabelType,
21
typename
EdgeLabellerType =
default_edge_labeller<VertexType,EdgeLabelType>
22
>
23
class
labeled_edge_mixed_graph :
virtual
public
labeled_edge_graph
<VertexType,EdgeLabelType>,
virtual
public
mixed_graph
<VertexType> {
24
public
:
25
labeled_edge_mixed_graph();
26
explicit
labeled_edge_mixed_graph(
const
EdgeLabellerType& el);
27
explicit
labeled_edge_mixed_graph(EdgeLabellerType&& el);
28
30
~labeled_edge_mixed_graph
()
override
=
default
;
31
32
[[nodiscard]]
constexpr
const
EdgeLabellerType& get_edges_labeller()
const
;
33
34
using
mixed_graph
<VertexType>
::insert_edge
;
35
45
void
insert_edge
(
const
typename
graph<VertexType>::vertex_const_handle
& first_endpoint,
const
typename
graph<VertexType>::vertex_const_handle
& second_endpoint,
edge_type
et)
final
;
46
57
virtual
void
insert_edge
(
const
typename
graph<VertexType>::vertex_const_handle
& first_endpoint,
const
typename
graph<VertexType>::vertex_const_handle
& second_endpoint,
edge_type
et,
const
EdgeLabelType& edge_label) = 0;
58
70
virtual
void
insert_edge
(
const
typename
graph<VertexType>::vertex_const_handle
& first_endpoint,
const
typename
graph<VertexType>::vertex_const_handle
& second_endpoint,
edge_type
et, EdgeLabelType&& edge_label) = 0;
71
private
:
72
EdgeLabellerType edges_labeller;
73
};
74
}
75
76
#include "impl/labeled_edge_mixed_graph.h"
77
78
#endif
//GRAPHDOM_LABELED_EDGE_MIXED_GRAPH_H
graphdom::default_edge_labeller
This class template is the default vertex labeller used by all labeled-edge graphs if no user-specifi...
Definition
labeled_edge_graph.h:37
graphdom::graph::vertex_const_handle
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
graphdom::labeled_edge_graph
Every labeled-edge graph created using this library is an instance of a concrete class publicly deriv...
Definition
labeled_edge_graph.h:21
graphdom::labeled_edge_mixed_graph::insert_edge
void insert_edge(const typename graph< VertexType >::vertex_const_handle &first_endpoint, const typename graph< VertexType >::vertex_const_handle &second_endpoint, edge_type et) final
Definition
labeled_edge_mixed_graph.h:27
graphdom::labeled_edge_mixed_graph::insert_edge
virtual void insert_edge(const typename graph< VertexType >::vertex_const_handle &first_endpoint, const typename graph< VertexType >::vertex_const_handle &second_endpoint, edge_type et, EdgeLabelType &&edge_label)=0
graphdom::labeled_edge_mixed_graph::~labeled_edge_mixed_graph
~labeled_edge_mixed_graph() override=default
To be polymorphic, this class has a virtual destructor.
graphdom::labeled_edge_mixed_graph::insert_edge
virtual void insert_edge(const typename graph< VertexType >::vertex_const_handle &first_endpoint, const typename graph< VertexType >::vertex_const_handle &second_endpoint, edge_type et, const EdgeLabelType &edge_label)=0
graphdom::mixed_graph
Every mixed graph created using this library is an instance of a concrete class publicly derived,...
Definition
mixed_graph.h:18
graphdom
Definition
adj_list.h:16
graphdom::edge_type
edge_type
The enumerated type whose values represent the two types of edges of a graph.
Definition
graph.h:21
include
graphdom
labeled_edge_mixed_graph.h
Generated by
1.17.0