41 size_t memorySizeBytes = 0;
43 bool containsInternalNodes =
false;
44 int latencyNumSamples = 0;
52 demangle (
typeid (n).name()) };
57 const auto [destNodeID, destNodeString] = getNodeName (n);
58 auto& destNodeInfo = map[destNodeID];
59 destNodeInfo.label = destNodeString;
60 destNodeInfo.memorySizeBytes = n.getAllocatedBytes();
62 destNodeInfo.numOutputs = n.numOutputNodes;
67 const auto [sourceNodeID, sourceNodeString] = getNodeName (*input);
68 auto& sourceNodeInfo = map[sourceNodeID];
69 sourceNodeInfo.label = sourceNodeString;
71 const auto edge = sourceNodeID +
"->" + destNodeID;
76 visitInputs (*input, edges, map);
83 Visitor::visitInputs (node, edges, idNameMap);
87 output +=
"digraph {\n";
89 for (
auto [
id, info] : idNameMap)
91 std::string label = choc::text::replace (info.label,
92 "tracktion::engine",
"te",
93 "tracktion::graph",
"tg");
97 if (info.memorySizeBytes > 0)
100 colourString +=
"color=red ";
105 if (info.latencyNumSamples > 0)
106 label += choc::text::replace (
"\n{}",
"{}",
std::to_string (info.latencyNumSamples));
108 if (info.containsInternalNodes)
109 shapeString +=
"shape=box";
111 output +=
id +
"[label=\"" + label +
"\" " + colourString + shapeString +
"]\n";
114 for (
auto edge : edges)
115 output += edge +=
"\n";