aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2002-10-16 01:44:59 +0000
committerChris Lattner <sabre@nondot.org>2002-10-16 01:44:59 +0000
commit834a9d12f3575f0030f39117546f01fc7e0ff300 (patch)
treec6e182786ff4794121e8927b0b517643e97e3e99 /include
parentff5feedf283b5321a0a16b2ee02b58af41018222 (diff)
downloadexternal_llvm-834a9d12f3575f0030f39117546f01fc7e0ff300.zip
external_llvm-834a9d12f3575f0030f39117546f01fc7e0ff300.tar.gz
external_llvm-834a9d12f3575f0030f39117546f01fc7e0ff300.tar.bz2
* Add new DOTGraphTraits::addCustomGraphFeatures method
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@4197 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include')
-rw-r--r--include/Support/DOTGraphTraits.h9
-rw-r--r--include/Support/GraphWriter.h4
-rw-r--r--include/llvm/Support/DOTGraphTraits.h9
-rw-r--r--include/llvm/Support/GraphWriter.h4
4 files changed, 26 insertions, 0 deletions
diff --git a/include/Support/DOTGraphTraits.h b/include/Support/DOTGraphTraits.h
index ca7c463..42f9af2 100644
--- a/include/Support/DOTGraphTraits.h
+++ b/include/Support/DOTGraphTraits.h
@@ -60,6 +60,15 @@ struct DefaultDOTGraphTraits {
/// edge.
template<typename EdgeIter>
static EdgeIter getEdgeTarget(void *Node, EdgeIter I) { return I; }
+
+ /// addCustomGraphFeatures - If a graph is made up of more than just
+ /// straight-forward nodes and edges, this is the place to put all of the
+ /// custom stuff neccesary. The GraphWriter object, instantiated with your
+ /// GraphType is passed in as an argument. You may call arbitrary methods on
+ /// it to add things to the output graph.
+ ///
+ template<typename GraphWriter>
+ static void addCustomGraphFeatures(void *Graph, GraphWriter &GW) {}
};
diff --git a/include/Support/GraphWriter.h b/include/Support/GraphWriter.h
index 0a7576c..7783b46 100644
--- a/include/Support/GraphWriter.h
+++ b/include/Support/GraphWriter.h
@@ -72,7 +72,11 @@ public:
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() {
diff --git a/include/llvm/Support/DOTGraphTraits.h b/include/llvm/Support/DOTGraphTraits.h
index ca7c463..42f9af2 100644
--- a/include/llvm/Support/DOTGraphTraits.h
+++ b/include/llvm/Support/DOTGraphTraits.h
@@ -60,6 +60,15 @@ struct DefaultDOTGraphTraits {
/// edge.
template<typename EdgeIter>
static EdgeIter getEdgeTarget(void *Node, EdgeIter I) { return I; }
+
+ /// addCustomGraphFeatures - If a graph is made up of more than just
+ /// straight-forward nodes and edges, this is the place to put all of the
+ /// custom stuff neccesary. The GraphWriter object, instantiated with your
+ /// GraphType is passed in as an argument. You may call arbitrary methods on
+ /// it to add things to the output graph.
+ ///
+ template<typename GraphWriter>
+ static void addCustomGraphFeatures(void *Graph, GraphWriter &GW) {}
};
diff --git a/include/llvm/Support/GraphWriter.h b/include/llvm/Support/GraphWriter.h
index 0a7576c..7783b46 100644
--- a/include/llvm/Support/GraphWriter.h
+++ b/include/llvm/Support/GraphWriter.h
@@ -72,7 +72,11 @@ public:
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() {