Make the GraphWriter be more consistent about the string
authorDan Gohman <gohman@apple.com>
Mon, 21 Jul 2008 19:57:57 +0000 (19:57 +0000)
committerDan Gohman <gohman@apple.com>
Mon, 21 Jul 2008 19:57:57 +0000 (19:57 +0000)
used for the graph "title" and the graph "label", as there
are differences in interpretation of these strings
between viewers.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@53871 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Support/GraphWriter.h

index dab09e57c6a4f89e96de470bd1d809cee7c2c9ce..afb2f545bbd5ae9d1eb188e20fd2398e3d38f41a 100644 (file)
@@ -85,7 +85,7 @@ public:
     std::string GraphName = DOTTraits::getGraphName(G);
 
     if (!Name.empty())
-      O << "digraph " << Name << " {\n";
+      O << "digraph \"" << DOT::EscapeString(Name) << "\" {\n";
     else if (!GraphName.empty())
       O << "digraph \"" << DOT::EscapeString(GraphName) << "\" {\n";
     else
@@ -94,7 +94,9 @@ public:
     if (DOTTraits::renderGraphFromBottomUp())
       O << "\trankdir=\"BT\";\n";
 
-    if (!GraphName.empty())
+    if (!Name.empty())
+      O << "\tlabel=\"" << DOT::EscapeString(Name) << "\";\n";
+    else if (!GraphName.empty())
       O << "\tlabel=\"" << DOT::EscapeString(GraphName) << "\";\n";
     O << DOTTraits::getGraphProperties(G);
     O << "\n";
@@ -234,12 +236,13 @@ public:
 
 template<typename GraphType>
 std::ostream &WriteGraph(std::ostream &O, const GraphType &G,
-                         const std::string &Name = "") {
+                         const std::string &Name = "",
+                         const std::string &Title = "") {
   // Start the graph emission process...
   GraphWriter<GraphType> W(O, G);
 
   // Output the header for the graph...
-  W.writeHeader(Name);
+  W.writeHeader(Title);
 
   // Emit all of the nodes in the graph...
   W.writeNodes();
@@ -273,24 +276,10 @@ sys::Path WriteGraph(const GraphType &G,
   std::ofstream O(Filename.c_str());
 
   if (O.good()) {
-    // Start the graph emission process...
-    GraphWriter<GraphType> W(O, G);
-
-    // Output the header for the graph...
-    W.writeHeader(Title);
-
-    // 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();
+    WriteGraph(O, G, Name, Title);
     cerr << " done. \n";
 
     O.close();
-    
   } else {
     cerr << "error opening file for writing!\n";
     Filename.clear();