X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=ir%2Fstat%2Fpattern_dmp.h;h=007704386ff22e51b21cd24b03b4235b78a2d5ce;hb=b8dbf835753fe9cecd9d6106034ececa3c3ef148;hp=116128b4888b515fba77c63f5491878596488561;hpb=1580176436dd0df7f1a0b608aef904d5f6d24e5a;p=libfirm diff --git a/ir/stat/pattern_dmp.h b/ir/stat/pattern_dmp.h index 116128b48..007704386 100644 --- a/ir/stat/pattern_dmp.h +++ b/ir/stat/pattern_dmp.h @@ -1,27 +1,24 @@ #ifndef _PATTERN_DMP_H_ #define _PATTERN_DMP_H_ +#include "counter.h" + typedef struct _pattern_dumper_t pattern_dumper_t; -typedef void (*DUMP_NODE_FUNC)(pattern_dumper_t *self, unsigned id, unsigned op_code, unsigned mode_code); -typedef void (*DUMP_REF_FUNC)(pattern_dumper_t *self, unsigned id); -typedef void (*DUMP_EDGE_FUNC)(pattern_dumper_t *self, unsigned id, unsigned parent, unsigned position); -typedef void (*DUMP_START_CHILDREN_FUNC)(pattern_dumper_t *self, unsigned id); -typedef void (*DUMP_FINISH_CHILDREN_FUNC)(pattern_dumper_t *self, unsigned id); -struct _pattern_dumper_t { - DUMP_NODE_FUNC dump_node; - DUMP_REF_FUNC dump_ref; - DUMP_EDGE_FUNC dump_edge; - DUMP_START_CHILDREN_FUNC dump_start_children; - DUMP_FINISH_CHILDREN_FUNC dump_finish_children; -}; +/** + * starts a new pattern + */ +void pattern_dump_new_pattern(pattern_dumper_t *self, counter_t *cnt); -extern pattern_dumper_t vcg_dump, stdout_dump; +/** + * Finishes current pattern + */ +void pattern_dump_finish_pattern(pattern_dumper_t *self); /** * Dumps a node */ -void pattern_dump_node(pattern_dumper_t *self, unsigned id, unsigned op_code, unsigned mode_code); +void pattern_dump_node(pattern_dumper_t *self, unsigned id, unsigned op_code, unsigned mode_code, void *attr); /** * Dump a ref @@ -30,8 +27,13 @@ void pattern_dump_ref(pattern_dumper_t *self, unsigned id); /** * Dump an edge + * + * @param tgt The target ID + * @param src The source ID + * @param pos The edge position + * @param mode_code The mode_code of the edge */ -void pattern_dump_edge(pattern_dumper_t *self, unsigned id, unsigned parent, unsigned position); +void pattern_dump_edge(pattern_dumper_t *self, unsigned tgt, unsigned src, unsigned pos, unsigned mode_code); /** * Start children dumper @@ -39,8 +41,26 @@ void pattern_dump_edge(pattern_dumper_t *self, unsigned id, unsigned parent, uns void pattern_start_children(pattern_dumper_t *self, unsigned id); /** - * finishes childred dumper + * finishes the children dumper */ void pattern_finish_children(pattern_dumper_t *self, unsigned id); +/** + * finishes dumper, destroys the dumper object + */ +void pattern_end(pattern_dumper_t *self); + +/** + * pattern dumper factory for text dumper + */ +pattern_dumper_t *new_text_dumper(void); + +/** + * pattern dumper factory for vcg dumper + * + * @param vcg_name name of the VCG file + * @param max_pattern maximum number of pattern to be dumped + */ +pattern_dumper_t *new_vcg_dumper(const char *vcg_name, unsigned max_pattern); + #endif /* _PATTERN_DMP_H_ */