/* Various declarations for language-independent pretty-print subroutines. Copyright (C) 2002 Free Software Foundation, Inc. Contributed by Gabriel Dos Reis This file is part of GCC. GCC is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GCC is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GCC; see the file COPYING. If not, write to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. */ #ifndef GCC_PRETTY_PRINT_H #define GCC_PRETTY_PRINT_H #include "diagnostic.h" /* The type of pretty-printer flags passed to clients. */ typedef unsigned int pp_flags; typedef enum { pp_none, pp_before, pp_after } pp_padding; struct pretty_print_info { /* Where we print external representation of ENTITY. */ output_buffer *buffer; pp_flags flags; /* Where to put whitespace around the entity being formatted. */ pp_padding padding; }; #define pp_left_paren(PPI) output_add_character (pp_buffer (PPI), '(') #define pp_right_paren(PPI) output_add_character (pp_buffer (PPI), ')') #define pp_left_bracket(PPI) output_add_character (pp_buffer (PPI), '[') #define pp_right_bracket(PPI) output_add_character (pp_buffer (PPI), ']') #define pp_left_brace(PPI) output_add_character (pp_buffer (PPI), '{') #define pp_right_brace(PPI) output_add_character (pp_buffer (PPI), '}') #define pp_semicolon(PPI) output_add_character (pp_buffer (PPI), ';') #define pp_comma(PPI) output_add_string (pp_buffer (PPI), ", ") #define pp_dot(PPI) output_add_character (pp_buffer (PPI), '.') #define pp_colon(PPI) output_add_character (pp_buffer (PPI), ':') #define pp_colon_colon(PPI) output_add_string (pp_buffer (PPI), "::") #define pp_arrow(PPI) output_add_string (pp_buffer (PPI), "->") #define pp_equal(PPI) output_add_character (pp_buffer (PPI), '=') #define pp_question(PPI) output_add_character (pp_buffer (PPI), '?') #define pp_bar(PPI) output_add_character (pp_buffer (PPI), '|') #define pp_carret(PPI) output_add_character (pp_buffer (PPI), '^') #define pp_ampersand(PPI) output_add_character (pp_buffer (PPI), '&') #define pp_less(PPI) output_add_character (pp_buffer (PPI), '<') #define pp_greater(PPI) output_add_character (pp_buffer (PPI), '>') #define pp_plus(PPI) output_add_character (pp_buffer (PPI), '+') #define pp_minus(PPI) output_add_character (pp_buffer (PPI), '-') #define pp_star(PPI) output_add_character (pp_buffer (PPI), '*') #define pp_slash(PPI) output_add_character (pp_buffer (PPI), '/') #define pp_modulo(PPI) output_add_character (pp_buffer (PPI), '%') #define pp_exclamation(PPI) output_add_character (pp_buffer (PPI), '!') #define pp_complement(PPI) output_add_character (pp_buffer (PPI), '~') #define pp_quote(PPI) output_add_character (pp_buffer (PPI), '\'') #define pp_backquote(PPI) output_add_character (pp_buffer (PPI), '`') #define pp_doublequote(PPI) output_add_character (pp_buffer (PPI), '"') #define pp_newline(PPI) output_add_newline (pp_buffer (PPI)) #define pp_character(PPI, C) output_add_character (pp_buffer (PPI), C) #define pp_whitespace(PPI) output_add_space (pp_buffer (PPI)) #define pp_indentation(PPI) output_indentation (pp_buffer (PPI)) #define pp_newline_and_indent(PPI, N) \ do { \ pp_indentation (PPI) += N; \ pp_newline (PPI); \ } while (0) #define pp_separate_with(PPI, C) \ do { \ pp_character (PPI, C); \ pp_whitespace (PPI); \ } while (0) #define pp_format_scalar(PPI, F, S) \ output_formatted_scalar (pp_buffer (PPI), F, S) #define pp_wide_integer(PPI, I) \ pp_format_scalar (PPI, HOST_WIDE_INT_PRINT_DEC, (HOST_WIDE_INT) I) #define pp_pointer(PPI, P) pp_format_scalar (PPI, "%p", p) #define pp_identifier(PPI, ID) output_add_string (pp_buffer (PPI), ID) #define pp_tree_identifier(PPI, T) pp_identifier(PPI, IDENTIFIER_POINTER (T)) #define pp_unsupported_tree(PPI, T) \ output_verbatim (pp_buffer(PPI), "#`%s' not supported by %s#",\ tree_code_name[(int) TREE_CODE (T)], __FUNCTION__) #endif /* GCC_PRETTY_PRINT_H */