GraphDom
Loading...
Searching...
No Matches
graphdom::labeled_edge_non_mixed_graph< VertexType, EdgeLabelType, EdgeLabellerType > Class Template Referenceabstract

Every labeled-edge non-mixed graph created using this library is an instance of a concrete class publicly derived, directly or indirectly, from this polymorphic template class. More...

#include <labeled_edge_non_mixed_graph.h>

Inheritance diagram for graphdom::labeled_edge_non_mixed_graph< VertexType, EdgeLabelType, EdgeLabellerType >:
Collaboration diagram for graphdom::labeled_edge_non_mixed_graph< VertexType, EdgeLabelType, EdgeLabellerType >:

Public Member Functions

 labeled_edge_non_mixed_graph (const EdgeLabellerType &edge_labeller)
 labeled_edge_non_mixed_graph (EdgeLabellerType &&edge_labeller)
 ~labeled_edge_non_mixed_graph () override=default
 To be polymorphic, this class has a virtual destructor.
constexpr const EdgeLabellerType & get_edges_labeller () const
void insert_edge (const typename graph< VertexType >::vertex_const_handle &first_endpoint, const typename graph< VertexType >::vertex_const_handle &second_endpoint) final
virtual 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)=0
virtual void insert_edge (const typename graph< VertexType >::vertex_const_handle &first_endpoint, const typename graph< VertexType >::vertex_const_handle &second_endpoint, EdgeLabelType &&edge_label)=0
Public Member Functions inherited from graphdom::labeled_edge_graph< VertexType, EdgeLabelType >
 ~labeled_edge_graph () override=default
 To be polymorphic, this class has a virtual destructor.
virtual const EdgeLabelType & get_edge_label (const typename graph< VertexType >::adj_list_const_iterator &) const =0
virtual EdgeLabelType & get_edge_label (const typename graph< VertexType >::adj_list_const_iterator &)=0
Public Member Functions inherited from graphdom::graph< VertexType >
virtual ~graph ()=default
 To be polymorphic, this class has a virtual destructor.
virtual std::size_t order () const =0
 Returns the order of *this, i.e. the number of vertices inside the graph.
virtual void erase_vertex (const vertex_const_handle &vertex)=0
 Removes the vertex identified by vertex.
virtual adj_list_iterator erase_edge (const adj_list_const_iterator &)=0
Public Member Functions inherited from graphdom::non_mixed_graph< VertexType >
 ~non_mixed_graph () override=default
 To be polymorphic, this class has a virtual destructor.

Detailed Description

template<typename VertexType, typename EdgeLabelType, typename EdgeLabellerType = default_edge_labeller<VertexType,EdgeLabelType>>
class graphdom::labeled_edge_non_mixed_graph< VertexType, EdgeLabelType, EdgeLabellerType >

Every labeled-edge non-mixed graph created using this library is an instance of a concrete class publicly derived, directly or indirectly, from this polymorphic template class.

Creating an object of a user-defined class derived, directly or indirectly, from this one will cause undefined behavior.

Member Function Documentation

◆ insert_edge() [1/3]

template<typename VertexType, typename EdgeLabelType, typename EdgeLabellerType>
void graphdom::labeled_edge_non_mixed_graph< VertexType, EdgeLabelType, EdgeLabellerType >::insert_edge ( const typename graph< VertexType >::vertex_const_handle & first_endpoint,
const typename graph< VertexType >::vertex_const_handle & second_endpoint )
finalvirtual

If *this is an ugraph then inserts in *this an undirected edge having first_endpoint, second_endpoint as endpoints, if *this doesn't already contain the same edge.
If *this is a digraph then inserts in *this a directed edge having first_endpoint as tail and second_endpoint as head, if *this doesn't already contain the same edge.
If and as soon as the insertion took place, the label of the inserted edge is equal to ( this->get_edges_labeller() )()

Parameters
first_endpointThis handle must be valid and must identify a vertex belonging to *this, otherwise the insertion will cause undefined behavior.
second_endpointThis handle must be valid and must identify a vertex belonging to *this, otherwise the insertion will cause undefined behavior.

Implements graphdom::non_mixed_graph< VertexType >.

◆ insert_edge() [2/3]

template<typename VertexType, typename EdgeLabelType, typename EdgeLabellerType = default_edge_labeller<VertexType,EdgeLabelType>>
virtual void graphdom::labeled_edge_non_mixed_graph< VertexType, EdgeLabelType, EdgeLabellerType >::insert_edge ( const typename graph< VertexType >::vertex_const_handle & first_endpoint,
const typename graph< VertexType >::vertex_const_handle & second_endpoint,
const EdgeLabelType & edge_label )
pure virtual

If *this is an ugraph then inserts in *this an undirected edge having first_endpoint, second_endpoint as endpoints, if *this doesn't already contain the same edge.
If *this is a digraph then inserts in *this a directed edge having first_endpoint as tail and second_endpoint as head, if *this doesn't already contain the same edge.
If and as soon as the insertion took place, the label of the inserted edge is equal to edge_label .

Parameters
first_endpointThis handle must be valid and must identify a vertex belonging to *this, otherwise the insertion will cause undefined behavior.
second_endpointThis handle must be valid and must identify a vertex belonging to *this, otherwise the insertion will cause undefined behavior.
edge_labelIf and as soon as the insertion took place, the label of the inserted edge is equal to edge_label .

Implemented in graphdom::full_labeled_multiset_digraph< VertexType, VertexLabelType, EdgeLabelType, VertexLabellerType, EdgeLabellerType >, graphdom::full_labeled_multiset_ugraph< VertexType, VertexLabelType, EdgeLabelType, VertexLabellerType, EdgeLabellerType >, graphdom::full_labeled_set_digraph< VertexType, VertexLabelType, EdgeLabelType, Compare, VertexLabellerType, EdgeLabellerType >, and graphdom::full_labeled_set_ugraph< VertexType, VertexLabelType, EdgeLabelType, Compare, VertexLabellerType, EdgeLabellerType >.

◆ insert_edge() [3/3]

template<typename VertexType, typename EdgeLabelType, typename EdgeLabellerType = default_edge_labeller<VertexType,EdgeLabelType>>
virtual void graphdom::labeled_edge_non_mixed_graph< VertexType, EdgeLabelType, EdgeLabellerType >::insert_edge ( const typename graph< VertexType >::vertex_const_handle & first_endpoint,
const typename graph< VertexType >::vertex_const_handle & second_endpoint,
EdgeLabelType && edge_label )
pure virtual

If *this is an ugraph then inserts in *this an undirected edge having first_endpoint, second_endpoint as endpoints, if *this doesn't already contain the same edge.
If *this is a digraph then inserts in *this a directed edge having first_endpoint as tail and second_endpoint as head, if *this doesn't already contain the same edge.
If and as soon as the insertion took place, the label of the inserted edge is equal to edge_label .
If the insertion did not take place, edge_label remains unchanged.

Parameters
first_endpointThis handle must be valid and must identify a vertex belonging to *this, otherwise the insertion will cause undefined behavior.
second_endpointThis handle must be valid and must identify a vertex belonging to *this, otherwise the insertion will cause undefined behavior.
edge_labelIf and as soon as the insertion took place, the label of the inserted edge is equal to edge_label .

Implemented in graphdom::full_labeled_multiset_digraph< VertexType, VertexLabelType, EdgeLabelType, VertexLabellerType, EdgeLabellerType >, graphdom::full_labeled_multiset_ugraph< VertexType, VertexLabelType, EdgeLabelType, VertexLabellerType, EdgeLabellerType >, graphdom::full_labeled_set_digraph< VertexType, VertexLabelType, EdgeLabelType, Compare, VertexLabellerType, EdgeLabellerType >, and graphdom::full_labeled_set_ugraph< VertexType, VertexLabelType, EdgeLabelType, Compare, VertexLabellerType, EdgeLabellerType >.


The documentation for this class was generated from the following files: