From 900ff665db0f4d0b591935df9f9b7e1f402f5908 Mon Sep 17 00:00:00 2001 From: David Robillard Date: Sat, 28 Nov 2020 17:18:34 +0100 Subject: Add utilities for printing events --- src/event_to_string.cpp | 82 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) create mode 100644 src/event_to_string.cpp (limited to 'src/event_to_string.cpp') diff --git a/src/event_to_string.cpp b/src/event_to_string.cpp new file mode 100644 index 0000000..e351c28 --- /dev/null +++ b/src/event_to_string.cpp @@ -0,0 +1,82 @@ +/* This file is part of Patchage. + * Copyright 2007-2020 David Robillard + * + * Patchage is free software: you can redistribute it and/or modify it under + * the terms of the GNU General Public License as published by the Free + * Software Foundation, either version 3 of the License, or (at your option) + * any later version. + * + * Patchage is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS + * FOR A PARTICULAR PURPOSE. See the GNU General Public License for details. + * + * You should have received a copy of the GNU General Public License + * along with Patchage. If not, see . + */ + +#include "event_to_string.hpp" + +#include "PatchageEvent.hpp" +#include "warnings.hpp" + +PATCHAGE_DISABLE_FMT_WARNINGS +#include +#include +PATCHAGE_RESTORE_WARNINGS + +#include +#include +#include + +namespace { + +struct EventPrinter +{ + using result_type = std::string; ///< For boost::apply_visitor + + std::string operator()(const ClientCreationEvent& event) + { + return fmt::format("Add client \"{}\"", event.id); + } + + std::string operator()(const ClientDestructionEvent& event) + { + return fmt::format("Remove client \"{}\"", event.id); + } + + std::string operator()(const PortCreationEvent& event) + { + return fmt::format("Add port \"{}\"", event.id); + } + + std::string operator()(const PortDestructionEvent& event) + { + return fmt::format("Remove port \"{}\"", event.id); + } + + std::string operator()(const ConnectionEvent& event) + { + return fmt::format("Connect \"{}\" to \"{}\"", event.tail, event.head); + } + + std::string operator()(const DisconnectionEvent& event) + { + return fmt::format( + "Disconnect \"{}\" from \"{}\"", event.tail, event.head); + } +}; + +} // namespace + +std::string +event_to_string(const PatchageEvent& event) +{ + EventPrinter printer; + return boost::apply_visitor(printer, event); +} + +std::ostream& +operator<<(std::ostream& os, const PatchageEvent& event) +{ + return os << event_to_string(event); +} -- cgit v1.2.1