Add an unwind_to field to basic blocks, making them Users instead of Values.
[oota-llvm.git] / include / llvm / Support / DOTGraphTraits.h
index 62eac0cea90a1794d997b2e4d9edc954253301a0..080c09b5f48eb733fbf3c5c3f44c1dab5e4af453 100644 (file)
@@ -2,8 +2,8 @@
 //
 //                     The LLVM Compiler Infrastructure
 //
-// This file was developed by the LLVM research group and is distributed under
-// the University of Illinois Open Source License. See LICENSE.TXT for details.
+// This file is distributed under the University of Illinois Open Source
+// License. See LICENSE.TXT for details.
 //
 //===----------------------------------------------------------------------===//
 //
@@ -30,12 +30,14 @@ struct DefaultDOTGraphTraits {
   /// getGraphName - Return the label for the graph as a whole.  Printed at the
   /// top of the graph.
   ///
-  static std::string getGraphName(const void *Graph) { return ""; }
+  template<typename GraphType>
+  static std::string getGraphName(const GraphType& Graph) { return ""; }
 
   /// getGraphProperties - Return any custom properties that should be included
   /// in the top level graph structure for dot.
   ///
-  static std::string getGraphProperties(const void *Graph) {
+  template<typename GraphType>
+  static std::string getGraphProperties(const GraphType& Graph) {
     return "";
   }
 
@@ -48,19 +50,23 @@ struct DefaultDOTGraphTraits {
 
   /// getNodeLabel - Given a node and a pointer to the top level graph, return
   /// the label to print in the node.
-  static std::string getNodeLabel(const void *Node, const void *Graph) {
+  template<typename GraphType>
+  static std::string getNodeLabel(const void *Node, const GraphType& Graph) {
     return "";
   }
   
   /// hasNodeAddressLabel - If this method returns true, the address of the node
   /// is added to the label of the node.
-  static bool hasNodeAddressLabel(const void *Node, const void *Graph) {
+  template<typename GraphType>
+  static bool hasNodeAddressLabel(const void *Node, const GraphType& Graph) {
     return false;
   }
 
   /// If you want to specify custom node attributes, this is the place to do so
   ///
-  static std::string getNodeAttributes(const void *Node, const void *Graph) {
+  template<typename GraphType>
+  static std::string getNodeAttributes(const void *Node,
+                                       const GraphType& Graph) {
     return "";
   }
 
@@ -100,8 +106,8 @@ struct DefaultDOTGraphTraits {
   /// 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(const void *Graph, GraphWriter &GW) {}
+  template<typename GraphType, typename GraphWriter>
+  static void addCustomGraphFeatures(const GraphType& Graph, GraphWriter &GW) {}
 };