X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=include%2Flibfirm%2Firdump.h;h=51b2bc4bde2edaff2ce49e30afeb70486f103ecb;hb=c32482bc042c9f0591bec432ccb6dfcadbad4cb7;hp=91b6bfee755360aa3f56bb954e1470ac7ad52878;hpb=d9828055de5eebe3b6269ad559b551c74e156256;p=libfirm diff --git a/include/libfirm/irdump.h b/include/libfirm/irdump.h index 91b6bfee7..51b2bc4bd 100644 --- a/include/libfirm/irdump.h +++ b/include/libfirm/irdump.h @@ -21,19 +21,8 @@ * @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 @@ -43,8 +32,24 @@ #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. @@ -66,7 +71,7 @@ typedef void (*ir_prog_dump_func)(FILE *out); * 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 @@ -106,7 +111,7 @@ FIRM_API void dump_all_ir_graphs(const char *suffix); 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 @@ -135,15 +140,6 @@ FIRM_API ir_prog_pass_t *dump_all_ir_graph_pass(const char *name, /*@}*/ -/** - * @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. @@ -236,9 +232,6 @@ FIRM_API void dump_globals_as_text(FILE *out); */ 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); @@ -284,6 +277,7 @@ typedef enum { 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); @@ -298,8 +292,6 @@ FIRM_API ir_dump_verbosity_t ir_get_dump_verbosity(void); 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. @@ -333,10 +325,8 @@ typedef enum { ir_dump_flag_node_addresses = 1U << 14, /** dump all anchor nodes, even the unused ones */ ir_dump_flag_all_anchors = 1U << 15, - /** dumps macroblock edges from every block to its macroblock */ - ir_dump_flag_macroblock_edges = 1U << 16, /** dumps marked blocks with an asterisk in the label */ - ir_dump_flag_show_marks = 1U << 17, + ir_dump_flag_show_marks = 1U << 16, /** turns of dumping of constant entity values in typegraphs */ ir_dump_flag_no_entity_values = 1U << 20, @@ -345,6 +335,7 @@ typedef enum { /** 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); @@ -360,42 +351,46 @@ FIRM_API ir_dump_flags_t ir_get_dump_flags(void); * 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);