From: Chris Lattner Date: Thu, 17 Oct 2002 00:59:59 +0000 (+0000) Subject: Break up the GraphWriter into smaller chunks to be used in different ways X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=dc05fffe2bbbdecf2e0dc0bb691b8967777edc9a;p=oota-llvm.git 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 --- diff --git a/include/Support/GraphWriter.h b/include/Support/GraphWriter.h index 743e3a309e6..ada31b28031 100644 --- a/include/Support/GraphWriter.h +++ b/include/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 std::ostream &WriteGraph(std::ostream &O, const GraphType &G, const std::string &Name = "") { // Start the graph emission process... - GraphWriter W(O, G, Name); + GraphWriter 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::addCustomGraphFeatures(G, W); + + // Output the end of the graph + W.writeFooter(); return O; } diff --git a/include/llvm/Support/GraphWriter.h b/include/llvm/Support/GraphWriter.h index 743e3a309e6..ada31b28031 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 std::ostream &WriteGraph(std::ostream &O, const GraphType &G, const std::string &Name = "") { // Start the graph emission process... - GraphWriter W(O, G, Name); + GraphWriter 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::addCustomGraphFeatures(G, W); + + // Output the end of the graph + W.writeFooter(); return O; }