-
Martin Christoph Hierholzer authoredMartin Christoph Hierholzer authored
VariableNetworkNodeDumpingVisitor.cc 1.79 KiB
#include "VariableNetworkNodeDumpingVisitor.h"
#include "VariableNetworkNode.h"
namespace ChimeraTK {
VariableNetworkNodeDumpingVisitor::VariableNetworkNodeDumpingVisitor(
std::ostream& stream, const std::string& separator)
: Visitor<ChimeraTK::VariableNetworkNode>(), PushableStream(stream), _separator(separator) {}
void VariableNetworkNodeDumpingVisitor::dispatch(const VariableNetworkNode& t) {
if(t.getType() == NodeType::Application) stream() << " type = Application ('" << t.getQualifiedName() << "')";
if(t.getType() == NodeType::ControlSystem) stream() << " type = ControlSystem ('" << t.getPublicName() << "')";
if(t.getType() == NodeType::Device)
stream() << " type = Device (" << t.getDeviceAlias() << ": " << t.getRegisterName() << ")";
if(t.getType() == NodeType::TriggerReceiver) stream() << " type = TriggerReceiver";
if(t.getType() == NodeType::Constant) stream() << " type = Constant";
if(t.getType() == NodeType::invalid) stream() << " type = **invalid**";
if(t.getMode() == UpdateMode::push) stream() << _separator << "pushing";
if(t.getMode() == UpdateMode::poll) stream() << _separator << "polling";
if(t.getDirection().withReturn) stream() << _separator << "with return";
stream() << _separator;
stream() << "data type: " << boost::core::demangle(t.getValueType().name());
stream() << _separator;
stream() << "length: " << t.getNumberOfElements();
stream() << _separator;
stream() << "[ptr: " << &(*(t.pdata)) << "]";
stream() << _separator;
stream() << "tags: [";
bool first = true;
for(auto& tag : t.getTags()) {
if(!first) stream() << ",";
stream() << tag;
first = false;
}
stream() << "]";
stream() << _separator;
stream() << std::endl;
}
} // namespace ChimeraTK