aboutsummaryrefslogtreecommitdiff
path: root/include/llvm/Support/GraphWriter.h
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-10-17 00:59:59 +0000
committerChris Lattner <sabre@nondot.org>2002-10-17 00:59:59 +0000
commitdc05fffe2bbbdecf2e0dc0bb691b8967777edc9a (patch)
treec5a8d5f9acc74725a10d360956567b6aeda5aa61 /include/llvm/Support/GraphWriter.h
parenta16adb7dd268dec23464681167721f223766384b (diff)
Break up the GraphWriter into smaller chunks to be used in different ways
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4207 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/Support/GraphWriter.h')
-rw-r--r--include/llvm/Support/GraphWriter.h27
1 files changed, 17 insertions, 10 deletions
diff --git a/include/llvm/Support/GraphWriter.h b/include/llvm/Support/GraphWriter.h
index 743e3a309e..ada31b2803 100644
--- a/include/llvm/Support/GraphWriter.h
+++ b/include/llvm/Support/GraphWriter.h
@@ -59,8 +59,9 @@ class GraphWriter {
typedef typename GTraits::nodes_iterator node_iterator;
typedef typename GTraits::ChildIteratorType child_iterator;
public:
- GraphWriter(std::ostream &o, const GraphType &g,
- const std::string &Name) : O(o), G(g) {
+ GraphWriter(std::ostream &o, const GraphType &g) : O(o), G(g) {}
+
+ void writeHeader(const std::string &Name) {
if (Name.empty())
O << "digraph foo {\n"; // Graph name doesn't matter
else
@@ -71,15 +72,9 @@ public:
O << "\tlabel=\"" << DOT::EscapeString(GraphName) << "\";\n";
O << DOTTraits::getGraphProperties(G);
O << "\n";
-
- // Emit all of the nodes in the graph...
- writeNodes();
-
- // Output any customizations on the graph
- DOTTraits::addCustomGraphFeatures(G, *this);
}
- ~GraphWriter() {
+ void writeFooter() {
// Finish off the graph
O << "}\n";
}
@@ -180,7 +175,19 @@ template<typename GraphType>
std::ostream &WriteGraph(std::ostream &O, const GraphType &G,
const std::string &Name = "") {
// Start the graph emission process...
- GraphWriter<GraphType> W(O, G, Name);
+ GraphWriter<GraphType> W(O, G);
+
+ // Output the header for the graph...
+ W.writeHeader(Name);
+
+ // Emit all of the nodes in the graph...
+ W.writeNodes();
+
+ // Output any customizations on the graph
+ DOTGraphTraits<GraphType>::addCustomGraphFeatures(G, W);
+
+ // Output the end of the graph
+ W.writeFooter();
return O;
}