/* A graph edge. * * Author: Daniel Krebs <github@daniel-krebs.net> * SPDX-FileCopyrightText: 2014-2023 Institute for Automation of Complex Power Systems, RWTH Aachen University * SPDX-License-Identifier: Apache-2.0 */ #pragma once #include <fmt/ostream.h> #include <villas/config.hpp> #include <villas/graph/vertex.hpp> namespace villas { namespace graph { class Edge { template <typename VertexType, typename EdgeType> friend class DirectedGraph; public: using Identifier = std::size_t; friend std::ostream &operator<<(std::ostream &stream, const Edge &edge) { return stream << edge.id; } bool operator==(const Edge &other) { return this->id == other.id; } Vertex::Identifier getVertexTo() const { return to; } Vertex::Identifier getVertexFrom() const { return from; } std::string toString() { std::stringstream ss; ss << *this; return ss.str(); } private: Identifier id; Vertex::Identifier from; Vertex::Identifier to; }; } // namespace graph } // namespace villas #ifndef FMT_LEGACY_OSTREAM_FORMATTER template <> class fmt::formatter<villas::graph::Edge> : public fmt::ostream_formatter {}; #endif