added two more hooks to the ir graph dumper
[libfirm] / ir / ir / irdump.h
index 9d0dab0..2e03d27 100644 (file)
 /*                                 GRAPH DUMPERS                                */
 /* **************************************************************************** */
 
+/**
+ * This hook is called to insert some special nodes into dumped graph
+ */
+typedef int (*DUMP_IR_GRAPH_FUNC)(FILE *F, ir_graph *irg);
 /**
  * This hook is called to dump the vcg attributes of a node to a file.
  * If this function returns zero, the default attributes are added, else
  * removed.
  */
 typedef int (*DUMP_NODE_VCGATTR_FUNC)(FILE *F, ir_node *node, ir_node *local);
+/**
+ * This hook is called to dump the vcg attributes of an edge to a file.
+ * If this function returns zero, the default attributes are added, else
+ * removed.
+ */
+typedef int (*DUMP_EDGE_VCGATTR_FUNC)(FILE *F, ir_node *node, int to);
 
+/** Set the ir graph dump hook. */
+void set_dump_ir_graph_hook(DUMP_IR_GRAPH_FUNC hook);
 /** Set the node_vcgattr hook. */
 void set_dump_node_vcgattr_hook(DUMP_NODE_VCGATTR_FUNC hook);
+/** Set the edge_vcgattr hook. */
+void set_dump_edge_vcgattr_hook(DUMP_EDGE_VCGATTR_FUNC hook);
+
+typedef int (*DUMP_NODE_EDGE_FUNC)(FILE *f, ir_node *node);
+
+/**
+ * Set the hook to be called to dump additional edges to a node.
+ * @param func The hook to be called.
+ */
+void set_dump_node_edge_hook(DUMP_NODE_EDGE_FUNC func);
+
+/**
+ * Get the additional edge dump hook.
+ * @return The current additional edge dump hook.]
+ */
+DUMP_NODE_EDGE_FUNC get_dump_node_edge_hook(void);
 
 /** Dump a firm graph.
  *
@@ -88,6 +116,24 @@ void dump_ir_graph (ir_graph *irg, const char *suffix);
  */
 void dump_ir_block_graph (ir_graph *irg, const char *suffix);
 
+/** Dump a firm graph without explicit block nodes but grouped in extended blocks.
+ *
+ *  @param irg   The firm graph to be dumped.
+ *
+ *  @return
+ *     A file containing the firm graph in vcg format.
+ *
+ *  Dumps all Firm nodes of a single graph for a single procedure in
+ *  extended xvcg format.
+ *  Dumps the graph to a file.  The file name is constructed from the
+ *  name of the entity describing the procedure (irg->entity) and the
+ *  ending <-ip>.vcg.  Eventually overwrites existing files.  Dumps several
+ *  procedures in boxes if interprocedural_view.
+ *
+ * @see turn_off_edge_labels()
+ */
+void dump_ir_extblock_graph (ir_graph *irg, const char *suffix);
+
 /** Dumps all graphs in interprocedural view to a file named All_graphs.vcg.
  */
 void dump_all_cg_block_graph(const char *suffix);
@@ -191,6 +237,8 @@ void dump_subgraph (ir_node *root, int depth, const char *suffix);
 /** Dump the call graph.
  *
  * Dumps the callgraph to a file "Callgraph"<suffix>".vcg".
+ *
+ * @see dump_callgraph_loop_tree(const char *suffix)
  */
 void dump_callgraph(const char *suffix);
 
@@ -393,6 +441,11 @@ void dump_types_as_text(unsigned verbosity, const char *suffix);
 
 /** Dumps all global variables as text.
  *
+ *  Dumps a text representation of the entities in the global type.
+ *
+ *  The file name is the program name (get_irp_name()), or 'TextTypes'
+ *  if the program name is not set, appended by <suffix>-globals.txt.
+ *  For verbosity see the documentation of the verbosity flags above.
  */
 void dump_globals_as_text(unsigned verbosity, const char *suffix);
 
@@ -421,7 +474,7 @@ int is_filtered_dump_name(ident *name);
 /**  Sets the vcg flag "display_edge_labels" to no.
  *
  *   This is necessary as xvcg and aisee both fail to display graphs
- *   with self-edges if these edges have lables.
+ *   with self-edges if these edges have labels.
  */
 void turn_off_edge_labels(void);
 
@@ -455,7 +508,7 @@ bool get_opt_dump_keepalive_edges(void);
 /** Turns on dumping the out edges starting from the Start block in
  *  dump_ir_graph.
  *
- *  To test the consistency of the out datastructure.
+ *  To test the consistency of the out data structure.
  */
 void dump_out_edges(bool b);
 
@@ -491,5 +544,10 @@ void set_opt_dump_analysed_type_info(bool b);
  */
 void dump_pointer_values_to_info(bool b);
 
+/** Dumps ld_names of entities instead of there names.
+ *
+ * This option is on per default.
+ */
+void dump_ld_names(bool b);
 
 # endif /* _IRDUMP_H_ */