GCC Middle and Back End API Reference
|
#include <pretty-print.h>
Public Member Functions | |
pretty_printer (int=0) | |
pretty_printer (const pretty_printer &other) | |
virtual | ~pretty_printer () |
virtual std::unique_ptr< pretty_printer > | clone () const |
void | set_output_stream (FILE *outfile) |
void | set_token_printer (token_printer *tp) |
void | set_prefix (char *prefix) |
void | emit_prefix () |
void | format (text_info &text) |
void | maybe_space () |
bool | supports_urls_p () const |
diagnostic_url_format | get_url_format () const |
void | set_url_format (diagnostic_url_format url_format) |
void | begin_url (const char *url) |
void | end_url () |
pp_wrapping_mode_t | set_verbatim_wrapping () |
void | set_padding (pp_padding padding) |
pp_padding | get_padding () const |
void | clear_state () |
void | set_real_maximum_length () |
int | remaining_character_count_for_line () |
void | dump (FILE *out, int indent) const |
void DEBUG_FUNCTION | dump () const |
Friends | |
output_buffer *& | pp_buffer (pretty_printer *pp) |
output_buffer * | pp_buffer (const pretty_printer *pp) |
const char * | pp_get_prefix (const pretty_printer *pp) |
char * | pp_take_prefix (pretty_printer *pp) |
void | pp_destroy_prefix (pretty_printer *pp) |
int & | pp_line_cutoff (pretty_printer *pp) |
diagnostic_prefixing_rule_t & | pp_prefixing_rule (pretty_printer *pp) |
const diagnostic_prefixing_rule_t & | pp_prefixing_rule (const pretty_printer *pp) |
pp_wrapping_mode_t & | pp_wrapping_mode (pretty_printer *pp) |
bool & | pp_needs_newline (pretty_printer *pp) |
int & | pp_indentation (pretty_printer *pp) |
bool & | pp_translate_identifiers (pretty_printer *pp) |
bool & | pp_show_color (pretty_printer *pp) |
printer_fn & | pp_format_decoder (pretty_printer *pp) |
format_postprocessor *& | pp_format_postprocessor (pretty_printer *pp) |
bool & | pp_show_highlight_colors (pretty_printer *pp) |
void | pp_output_formatted_text (pretty_printer *pp, const urlifier *urlifier=nullptr) |
The data structure that contains the bare minimum required to do proper pretty-printing. Clients may derive from this structure and add additional fields they need.
|
explicit |
Construct a PRETTY-PRINTER of MAXIMUM_LENGTH characters per line.
References DIAGNOSTICS_SHOW_PREFIX_ONCE, NULL, pp_line_cutoff, pp_prefixing_rule, and pp_set_prefix().
|
explicit |
Copy constructor for pretty_printer.
References format_postprocessor::clone(), m_format_postprocessor, m_maximum_length, NULL, pp_line_cutoff, pp_prefixing_rule, and pp_set_prefix().
|
virtual |
References free(), m_buffer, m_format_postprocessor, m_prefix, and output_buffer::~output_buffer().
void pretty_printer::begin_url | ( | const char * | url | ) |
Support for encoding URLs. See egmontkob/Hyperlinks_in_Terminal_Emulators.md ( https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda ). > A hyperlink is opened upon encountering an OSC 8 escape sequence with > the target URI. The syntax is > > OSC 8 ; params ; URI ST > > A hyperlink is closed with the same escape sequence, omitting the > parameters and the URI but keeping the separators: > > OSC 8 ; ; ST > > OSC (operating system command) is typically ESC ]. Use BEL instead of ST, as that is currently rendered better in some terminal emulators that don't support OSC 8, like konsole.
If URL-printing is enabled, write an "open URL" escape sequence to PP for the given URL.
References gcc_unreachable, m_skipping_null_url, m_url_format, pp_string(), URL_FORMAT_BEL, URL_FORMAT_NONE, and URL_FORMAT_ST.
|
inline |
Clear this pretty_printer's output state.
References m_emitted_prefix, and pp_indentation.
Referenced by format(), pp_flush(), and pp_really_flush().
|
virtual |
Base class implementation of pretty_printer::clone vfunc.
Referenced by element_event_desc::add_to_phase_2(), diagnostic_context::clone_printer(), diagnostic_event::get_desc(), make_json_for_path(), and sarif_builder::make_location_object().
|
inline |
void pretty_printer::dump | ( | FILE * | out, |
int | indent ) const |
Dump state of this pretty_printer to OUT, for debugging.
References output_buffer::dump(), gcc_unreachable, m_buffer, m_show_color, m_url_format, URL_FORMAT_BEL, URL_FORMAT_NONE, and URL_FORMAT_ST.
Referenced by diagnostic_context::dump().
void pretty_printer::emit_prefix | ( | ) |
Write out this pretty_printer's prefix.
References DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE, DIAGNOSTICS_SHOW_PREFIX_NEVER, DIAGNOSTICS_SHOW_PREFIX_ONCE, m_emitted_prefix, m_prefix, pp_append_r(), pp_indent(), pp_indentation, and pp_prefixing_rule.
Referenced by pp_append_text().
void pretty_printer::end_url | ( | ) |
If URL-printing is enabled, write a "close URL" escape sequence to PP.
References get_end_url_string(), m_skipping_null_url, m_url_format, pp_string(), and URL_FORMAT_NONE.
void pretty_printer::format | ( | text_info & | text | ) |
References clear_state(), format_phase_1(), format_phase_2(), format_postprocessor::handle(), pp_formatted_chunks::m_args, m_buffer, output_buffer::m_chunk_obstack, m_format_postprocessor, output_buffer::m_formatted_obstack, output_buffer::m_line_length, output_buffer::m_obstack, PP_NL_ARGMAX, pp_set_verbatim_wrapping(), pp_wrapping_mode, and output_buffer::push_formatted_chunks().
Referenced by dump_printf(), dump_printf_loc(), dump_context::dump_printf_loc_va(), and dump_context::dump_printf_va().
|
inline |
References m_padding.
|
inline |
References m_url_format.
Referenced by get_end_url_string(), diagnostic_text_output_format::update_printer(), and diagnostic_context::urls_init().
void pretty_printer::maybe_space | ( | ) |
int pretty_printer::remaining_character_count_for_line | ( | ) |
Return the amount of characters PRETTY-PRINTER can accept to make a full line. Meaningful only in line-wrapping mode.
References output_buffer::m_line_length, m_maximum_length, and pp_buffer.
Referenced by pp_character(), and pp_wrap_text().
|
inline |
References m_buffer, and output_buffer::m_stream.
Referenced by dot_rdg_1(), ana::one_way_id_map< T >::dump(), irange_bitmask::dump(), vrange::dump(), digraph< GraphTraits >::dump_dot_to_file(), dump_insn_slim(), dump_rtl_slim(), dump_ssaname_info_to_file(), dump_value_slim(), gimple_dump_bb(), libgdiagnostics_path_event::make_desc(), maybe_init_pretty_print(), print_gimple_expr(), print_gimple_seq(), print_gimple_stmt(), print_graph_cfg(), print_node(), start_graph_dump(), tree_dump_pretty_printer::tree_dump_pretty_printer(), and diagnostic_manager::write_patch().
|
inline |
References m_padding.
void pretty_printer::set_prefix | ( | char * | prefix | ) |
Set PREFIX for PRETTY-PRINTER, taking ownership of PREFIX, which will eventually be free-ed.
References free(), m_emitted_prefix, m_prefix, pp_indentation, and set_real_maximum_length().
Referenced by lhd_print_error_function().
void pretty_printer::set_real_maximum_length | ( | ) |
Subroutine of pp_set_maximum_length. Set up PRETTY-PRINTER's internal maximum characters per line.
References DIAGNOSTICS_SHOW_PREFIX_NEVER, DIAGNOSTICS_SHOW_PREFIX_ONCE, m_maximum_length, m_prefix, pp_is_wrapping_line, pp_line_cutoff, and pp_prefixing_rule.
Referenced by pp_set_line_maximum_length(), and set_prefix().
|
inline |
References m_token_printer.
Referenced by dump_pretty_printer::dump_pretty_printer(), and sarif_output_format::update_printer().
|
inline |
References m_url_format.
Referenced by diagnostic_context::urls_init().
|
inline |
References DIAGNOSTICS_SHOW_PREFIX_NEVER, pp_line_cutoff, pp_prefixing_rule, and pp_wrapping_mode.
|
inline |
|
friend |
|
friend |
|
friend |
Free PRETTY-PRINTER's prefix, a previously malloc()'d string.
|
friend |
|
friend |
|
friend |
|
friend |
The amount of whitespace to be emitted when starting a new line.
Referenced by clear_state(), emit_prefix(), and set_prefix().
|
friend |
Maximum characters per line in automatic line wrapping mode. Zero means don't wrap lines.
Referenced by pretty_printer(), pretty_printer(), set_real_maximum_length(), and set_verbatim_wrapping().
|
friend |
TRUE if a newline character needs to be added before further formatting.
|
friend |
Phase 3 of formatting a message (phases 1 and 2 done by pp_format). Pop a pp_formatted_chunks from chunk_obstack, collecting all the tokens from phases 1 and 2 of formatting, and writing into text in formatted_obstack. If URLIFIER is non-null then use it on any quoted text that was not handled in phases 1 or 2 to potentially add URLs.
Referenced by dump_context::dump_printf_va().
|
friend |
|
friend |
Prefixing rule used in formatting a diagnostic message.
Referenced by emit_prefix(), pretty_printer(), pretty_printer(), set_real_maximum_length(), and set_verbatim_wrapping().
|
friend |
True if colors should be shown.
Referenced by dump_pretty_printer::custom_token_printer::print_tokens(), and tree_dump_pretty_printer::tree_dump_pretty_printer().
|
friend |
|
friend |
Take ownership of PP's prefix, setting it to NULL. This allows clients to save, override, and then restore an existing prefix, without it being free-ed.
|
friend |
True if identifiers are translated to the locale character set on output.
|
friend |
Get or set the wrapping mode as a single entity.
Referenced by format(), and set_verbatim_wrapping().
|
private |
Referenced by dump(), format(), set_output_stream(), and ~pretty_printer().
|
private |
Referenced by clear_state(), emit_prefix(), and set_prefix().
|
private |
|
private |
Referenced by format(), pretty_printer(), and ~pretty_printer().
|
private |
|
private |
Referenced by pretty_printer(), remaining_character_count_for_line(), and set_real_maximum_length().
|
private |
|
private |
Referenced by get_padding(), maybe_space(), and set_padding().
|
private |
Referenced by emit_prefix(), set_prefix(), set_real_maximum_length(), and ~pretty_printer().
|
private |
|
private |
Referenced by begin_url(), and end_url().
|
private |
Referenced by set_token_printer().
|
private |
|
private |
Referenced by begin_url(), dump(), end_url(), get_url_format(), set_url_format(), and supports_urls_p().
|
private |