Every labeled-edge mixed graph created using this library is an instance of a concrete class publicly derived, directly or indirectly, from this polymorphic template class.
More...
|
|
| labeled_edge_mixed_graph (const EdgeLabellerType &el) |
|
| labeled_edge_mixed_graph (EdgeLabellerType &&el) |
|
| ~labeled_edge_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, edge_type et) final |
| 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 |
| 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 |
|
| ~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 |
|
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 |
|
| ~mixed_graph () override=default |
| | To be polymorphic, this class has a virtual destructor.
|
template<typename VertexType, typename EdgeLabelType, typename EdgeLabellerType = default_edge_labeller<VertexType,EdgeLabelType>>
class graphdom::labeled_edge_mixed_graph< VertexType, EdgeLabelType, EdgeLabellerType >
Every labeled-edge 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.
template<typename VertexType, typename EdgeLabelType, typename EdgeLabellerType>
If et is equal to undirected then inserts in *this an undirected edge having first_endpoint and second_endpoint as endpoints, if *this doesn't already contain the same edge.
If et is equal to directed 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_endpoint | This handle must be valid and must identify a vertex belonging to *this, otherwise the insertion will cause undefined behavior. |
| second_endpoint | This handle must be valid and must identify a vertex belonging to *this, otherwise the insertion will cause undefined behavior. |
| et | The type of edge to insert |
Implements graphdom::mixed_graph< VertexType >.
template<typename VertexType, typename EdgeLabelType, typename EdgeLabellerType = default_edge_labeller<VertexType,EdgeLabelType>>
If et is equal to undirected then inserts in *this an undirected edge having first_endpoint and second_endpoint as endpoints, if *this doesn't already contain the same edge.
If et is equal to directed 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_endpoint | This handle must be valid and must identify a vertex belonging to *this, otherwise the insertion will cause undefined behavior. |
| second_endpoint | This handle must be valid and must identify a vertex belonging to *this, otherwise the insertion will cause undefined behavior. |
| et | The type of edge to insert |
| edge_label | If and as soon as the insertion took place, the label of the inserted edge is equal to edge_label . |
template<typename VertexType, typename EdgeLabelType, typename EdgeLabellerType = default_edge_labeller<VertexType,EdgeLabelType>>
If et is equal to undirected then inserts in *this an undirected edge having first_endpoint and second_endpoint as endpoints, if *this doesn't already contain the same edge.
If et is equal to directed 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_endpoint | This handle must be valid and must identify a vertex belonging to *this, otherwise the insertion will cause undefined behavior. |
| second_endpoint | This handle must be valid and must identify a vertex belonging to *this, otherwise the insertion will cause undefined behavior. |
| et | The type of edge to insert |
| edge_label | If and as soon as the insertion took place, the label of the inserted edge is equal to edge_label . |