#ifndef GCC_DMP_TREE_H
#define GCC_DMP_TREE_H
#ifdef ENABLE_DMP_TREE
typedef int (*lang_dump_tree_p_t) PARAMS ((FILE *, const char *, tree, int));
extern lang_dump_tree_p_t set_dump_tree_p PARAMS ((lang_dump_tree_p_t));
extern void dmp_tree PARAMS ((tree));
extern void dmp_tree1 PARAMS ((tree, int));
extern void dmp_tree2 PARAMS ((tree));
extern void dmp_tree3 PARAMS ((FILE *, tree, int));
extern void dump_tree PARAMS ((FILE *, const char *, tree, int));
extern int node_seen PARAMS ((tree, int));
extern void newline_and_indent PARAMS ((FILE *, int));
extern void print_type PARAMS ((FILE *, const char *, tree, int));
extern void print_decl PARAMS ((FILE *, const char *, tree, int));
extern void print_ref PARAMS ((FILE *, const char *, tree, int));
extern void print_operands PARAMS ((FILE *file, tree, int, int, ...));
extern void print_lineno PARAMS ((FILE *, tree));
extern void print_integer_constant PARAMS ((FILE *, tree, int));
extern void print_real_constant PARAMS ((FILE *, tree));
extern void print_string_constant PARAMS ((FILE *, const char *, int));
extern void print_tree_flags PARAMS ((FILE *, tree));
enum dmp_tree_visit_state {
DMP_TREE_VISIT_ANY,
DMP_TREE_VISIT_ONCE,
DMP_TREE_VISIT_ONCE1,
DMP_TREE_VISIT_ONCE2
};
typedef struct {
int max_code;
int nesting_depth;
int dump_full_type;
int really_follow;
int doing_parm_decl;
int doing_call_expr;
char *curr_file;
int no_new_line;
int line_cnt;
int doing_tree_list;
int max_depth;
enum dmp_tree_visit_state visit_only_once;
} dump_tree_state_t;
extern dump_tree_state_t dump_tree_state;
#define SET_MAX_DMP_TREE_CODE(code) \
dump_tree_state.max_code = MAX(dump_tree_state.max_code, (int)(code))
#ifdef DMP_TREE
#define DMP_TREE_WRAPPED_OUTPUT 1
#if DMP_TREE_WRAPPED_OUTPUT
extern int dmp_tree_fprintf PARAMS ((FILE *, const char *, ...));
extern int dmp_tree_fputc PARAMS((int, FILE *));
extern int dmp_tree_fputs PARAMS((const char *, FILE *));
#define fprintf dmp_tree_fprintf
#define fputc dmp_tree_fputc
#define fputs dmp_tree_fputs
#endif
#define HOST_PTR_PRINTF_VALUE(p) (char *) (p)
#define INDENT 1
#endif
#endif
#endif