Algorithms Library Toolkit
A toolkit for algorithms, especially for algorithms on formal languages
GraphInterface.hpp
Go to the documentation of this file.
1
6// Copyright (c) 2017 Czech Technical University in Prague | Faculty of Information Technology. All rights reserved.
7
8#pragma once
9
10#include <alib/set>
11#include <alib/vector>
12#include <functional>
13
14#include "GraphBase.hpp"
15
16namespace graph {
17
18template<typename TNode, typename TEdge>
19class GraphInterface : public GraphBase {
20// ---------------------------------------------------------------------------------------------------------------------
21 public:
22 using node_type = TNode;
23 using edge_type = TEdge;
24
25// ---------------------------------------------------------------------------------------------------------------------
26
27 virtual size_t nodeCount() const = 0;
28 virtual size_t edgeCount() const = 0;
29
30// ---------------------------------------------------------------------------------------------------------------------
31
32 virtual ext::set<TNode> getNodes() const = 0;
33 virtual ext::vector<TEdge> getEdges() const = 0;
34
35// ---------------------------------------------------------------------------------------------------------------------
36
37 virtual ext::set<TNode> successors(const TNode &n) const = 0;
38 virtual ext::vector<TEdge> successorEdges(const TNode &n) const = 0;
39 virtual ext::set<TNode> predecessors(const TNode &n) const = 0;
40 virtual ext::vector<TEdge> predecessorEdges(const TNode &n) const = 0;
41
42// ---------------------------------------------------------------------------------------------------------------------
43
44 virtual std::string name() const = 0;
45
46// ---------------------------------------------------------------------------------------------------------------------
47};
48
49// =====================================================================================================================
50
51}
52
Definition: set.hpp:44
Class extending the vector class from the standard library. Original reason is to allow printing of t...
Definition: vector.hpp:45
Definition: GraphBase.hpp:18
Definition: GraphInterface.hpp:19
virtual ext::set< TNode > successors(const TNode &n) const =0
virtual ext::vector< TEdge > getEdges() const =0
virtual size_t edgeCount() const =0
virtual std::string name() const =0
virtual ext::set< TNode > predecessors(const TNode &n) const =0
virtual size_t nodeCount() const =0
virtual ext::set< TNode > getNodes() const =0
virtual ext::vector< TEdge > successorEdges(const TNode &n) const =0
virtual ext::vector< TEdge > predecessorEdges(const TNode &n) const =0
TEdge edge_type
Definition: GraphInterface.hpp:23
TNode node_type
Definition: GraphInterface.hpp:22
Definition: ReconstructPath.hpp:14