VariableNetworkModuleGraphDumpingVisitor.h 1.78 KiB
// SPDX-FileCopyrightText: Deutsches Elektronen-Synchrotron DESY, MSK, ChimeraTK Project <chimeratk-support@desy.de>
// SPDX-License-Identifier: LGPL-3.0-or-later
#pragma once
#include "VariableNetworkNodeDumpingVisitor.h"
#include "Visitor.h"
#include <map>
namespace ChimeraTK {
/*********************************************************************************************************************/
// Forward Declarations
class Application;
class VariableNetwork;
class Module;
/*********************************************************************************************************************/
/**
* @brief The VariableNetworkModuleGraphDumpingVisitor class
*
* This class provides a Graphiviz dump of the connections between modiles.
* Due to the potential size of the resulting graph, it is recommended to use
* SVG for rendering the resulting graph.
*/
class VariableNetworkModuleGraphDumpingVisitor : public Visitor<Application, Module, VariableNetwork>,
VariableNetworkNodeDumpingVisitor {
public:
VariableNetworkModuleGraphDumpingVisitor(std::ostream& stream);
virtual ~VariableNetworkModuleGraphDumpingVisitor() {}
void dispatch(const Application& t) override;
void dispatch(const Module& t) override;
void dispatch(const VariableNetwork& t) override;
private:
// edge map contains all edges. key is the edge in graphviz notation ("NodeA->NodeB"), value is the label and
// a flag whether the arrow needs to be inverted
std::map<std::string, std::pair<std::string, bool>> _edgeMap;
std::list<std::string> _deviceList;
};
/*********************************************************************************************************************/
} // namespace ChimeraTK