Add facility to dump pass manager structure
[oota-llvm.git] / include / llvm / Support / DOTGraphTraits.h
index 62eac0cea90a1794d997b2e4d9edc954253301a0..ed59303742397b1847bf31803b26b3bdc95338d9 100644 (file)
@@ -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(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(GraphType Graph) {
     return "";
   }
 
@@ -48,19 +50,22 @@ 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, 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, 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, GraphType Graph) {
     return "";
   }
 
@@ -100,8 +105,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(GraphType Graph, GraphWriter &GW) {}
 };