* @file
* @brief Write vcg representation of firm to file.
* @author Martin Trapp, Christian Schaefer, Goetz Lindenmaier, Hubert Schmidt
- * @version $Id$
- * @brief
- * Dump routines for the ir graph and all type information.
- *
- * The dump format of most functions is vcg. This is a text based graph
- * representation. Some use the original format,
- * but most generate an extended format that is only read by some special
- * versions of xvcg or by the comercialized version now calles aiSee.
- * A test version of aiSee is available at
- * http://www.absint.de/aisee/download/index.htm.
+ * @brief Dump routines for the ir graph and all type information.
*
- * We have developed an own advanced viewer called ycomp:
- * http://www.info.uni-karlsruhe.de/software/ycomp/
*/
#ifndef FIRM_IR_IRDUMP_H
#define FIRM_IR_IRDUMP_H
#include "firm_types.h"
#include "begin.h"
-/** @defgroup convenience_dumper Convenience interface for dumpers */
-/*@{*/
+/** @defgroup ir_dump Visualisation
+ *
+ * Dumps information so it can be visualised. The dump format of most functions
+ * is vcg. This is a text based graph representation. Some use the original
+ * format, but most generate an extended format that is only read by some
+ * special versions of xvcg or by the commercialized version now calles aiSee.
+ *
+ * A test version of aiSee is available at
+ * http://www.absint.de/aisee/download/index.htm.
+ *
+ * We have developed an own advanced viewer called ycomp:
+ * http://www.info.uni-karlsruhe.de/software/ycomp/
+ *@{
+ */
+
+/** @defgroup convenience Convenience Interface
+ * @{
+ */
/**
* Convenience interface for dumping a graph as vcg file.
* at @p mime_type.
* The file is stored into the directory specified by #ir_set_dump_path
*
- * @param func Dumper. Usualle one of #dump_callgraph, #dump_typegraph,
+ * @param func Dumper. Usually one of #dump_callgraph, #dump_typegraph,
* #dump_class_hierarchy, #dump_types_as_text,
* #dump_globals_as_text
* @param suffix Suffix to append to the name
FIRM_API void ir_set_dump_path(const char *path);
/**
- * Set a prefix filter for output functions.
+ * Sets a prefix filter for output functions.
*
* All graph dumpers check this name. If the name is != "" and
* not a prefix of the graph to be dumped, the dumper does not
/*@}*/
-/**
- * @defgroup dumper Dump information to file
- * This is the low-level interface for dumping information as text files
- * and xvcg graphs.
- * Normally you should use the convenience interface @ref convenience_dumper
- * instead of the functions in this group.
- */
-/*@{*/
-
/**
* Dumps all Firm nodes of a single graph for a single procedure in
* standard xvcg format.
*/
FIRM_API void dump_loop(FILE *out, ir_loop *loop);
-/** Write the irnode and all its attributes to the file passed. */
-FIRM_API void dump_irnode_to_file(FILE *out, ir_node *node);
-
/** Write the graph and all its attributes to the file passed.
* Does not write the nodes. */
FIRM_API void dump_graph_as_text(FILE *out, ir_graph *graph);
dump_verbosity_max = 0x4FF00FBE /**< Turn everything on */
} ir_dump_verbosity_t;
+ENUM_BITSET(ir_dump_verbosity_t)
/** override currently set text dump flags with new ones */
FIRM_API void ir_set_dump_verbosity(ir_dump_verbosity_t verbosity);
typedef enum {
/** dump basic blocks as subgraphs which contain the nodes in the block */
ir_dump_flag_blocks_as_subgraphs = 1U << 0,
- /** display blocks in extended basic grouped inside a subgraph */
- ir_dump_flag_group_extbb = 1U << 1,
/** dump (parts of) typegraph along with nodes */
ir_dump_flag_with_typegraph = 1U << 2,
/** Sets the vcg flag "display_edge_labels" to no.
/** dump entities in class hierarchies */
ir_dump_flag_entities_in_hierarchy = 1U << 22,
} ir_dump_flags_t;
+ENUM_BITSET(ir_dump_flags_t)
/** override currently set dump flags with new ones */
FIRM_API void ir_set_dump_flags(ir_dump_flags_t flags);
* If this function returns zero, the default attributes are added, else
* removed.
*/
-typedef int (*dump_node_vcgattr_func)(FILE *out, ir_node *node, ir_node *local);
+typedef int (*dump_node_vcgattr_func)(FILE *out, const ir_node *node, const 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 *out, ir_node *node, int to);
+typedef int (*dump_edge_vcgattr_func)(FILE *out, const ir_node *node, int to);
-typedef void (*dump_node_edge_func)(FILE *out, ir_node *node);
+/**
+ * This hook allows dumping of additional edges (it is called outside a node: {}
+ * environment)
+ */
+typedef void (*dump_node_edge_func)(FILE *out, const ir_node *node);
-/** Set the node_vcgattr hook. */
+/** Sets the node_vcgattr hook. */
FIRM_API void set_dump_node_vcgattr_hook(dump_node_vcgattr_func hook);
-/** Set the edge_vcgattr hook. */
+/** Sets the edge_vcgattr hook. */
FIRM_API void set_dump_edge_vcgattr_hook(dump_edge_vcgattr_func hook);
/**
- * Set the hook to be called to dump additional edges to a node.
+ * Sets the hook to be called to dump additional edges to a node.
* @param func The hook to be called.
*/
FIRM_API void set_dump_node_edge_hook(dump_node_edge_func func);
/**
- * Get the additional edge dump hook.
+ * Returns the additional edge dump hook.
* @return The current additional edge dump hook.]
*/
FIRM_API dump_node_edge_func get_dump_node_edge_hook(void);
/**
- * Set the hook to be called to dump additional edges to a block.
+ * Sets the hook to be called to dump additional edges to a block.
* @param func The hook to be called.
*/
FIRM_API void set_dump_block_edge_hook(dump_node_edge_func func);
/**
- * Get the additional block edge dump hook.
+ * Returns the additional block edge dump hook.
* @return The current additional block edge dump hook.
*/
FIRM_API dump_node_edge_func get_dump_block_edge_hook(void);