aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorDavid Malcolm <dmalcolm@redhat.com>2024-06-12 09:15:09 -0400
committerDavid Malcolm <dmalcolm@redhat.com>2024-06-12 09:15:09 -0400
commitc5e3be456888aa48f591512ec28183703e70978c (patch)
tree0c2e238f92f0e41c80708e258c6060b1d1d8c9a6 /gcc
parentfc47393acfae8188c131e46bc1c5379c722eab84 (diff)
pretty_printer: make all fields private
No functional change intended. gcc/analyzer/ChangeLog: * access-diagram.cc (access_range::dump): Update for fields of pretty_printer becoming private. * call-details.cc (call_details::dump): Likewise. * call-summary.cc (call_summary::dump): Likewise. (call_summary_replay::dump): Likewise. * checker-event.cc (checker_event::debug): Likewise. * constraint-manager.cc (range::dump): Likewise. (bounded_range::dump): Likewise. (constraint_manager::dump): Likewise. * engine.cc (exploded_node::dump): Likewise. (exploded_path::dump): Likewise. (exploded_path::dump_to_file): Likewise. * feasible-graph.cc (feasible_graph::dump_feasible_path): Likewise. * program-point.cc (program_point::dump): Likewise. * program-state.cc (extrinsic_state::dump_to_file): Likewise. (sm_state_map::dump): Likewise. (program_state::dump_to_file): Likewise. * ranges.cc (symbolic_byte_offset::dump): Likewise. (symbolic_byte_range::dump): Likewise. * record-layout.cc (record_layout::dump): Likewise. * region-model-reachability.cc (reachable_regions::dump): Likewise. * region-model.cc (region_to_value_map::dump): Likewise. (region_model::dump): Likewise. (model_merger::dump): Likewise. * region-model.h (one_way_id_map<T>::dump): Likewise. * region.cc (region_offset::dump): Likewise. (region::dump): Likewise. * sm-malloc.cc (deallocator_set::dump): Likewise. * store.cc (uncertainty_t::dump): Likewise. (binding_key::dump): Likewise. (bit_range::dump): Likewise. (byte_range::dump): Likewise. (binding_map::dump): Likewise. (binding_cluster::dump): Likewise. (store::dump): Likewise. * supergraph.cc (supergraph::dump_dot_to_file): Likewise. (superedge::dump): Likewise. * svalue.cc (svalue::dump): Likewise. gcc/c-family/ChangeLog: * c-ada-spec.cc (dump_ads): Update for fields of pretty_printer becoming private. * c-pretty-print.cc: Likewise throughout. gcc/c/ChangeLog: * c-objc-common.cc (print_type): Update for fields of pretty_printer becoming private. (c_tree_printer): Likewise. gcc/cp/ChangeLog: * cxx-pretty-print.cc: Update throughout for fields of pretty_printer becoming private. * error.cc: Likewise. gcc/ChangeLog: * diagnostic.cc (diagnostic_context::urls_init): Update for fields of pretty_printer becoming private. (diagnostic_context::print_any_cwe): Likewise. (diagnostic_context::print_any_rules): Likewise. (diagnostic_context::print_option_information): Likewise. * diagnostic.h (diagnostic_format_decoder): Likewise. (diagnostic_prefixing_rule): Likewise, fixing typo. * digraph.cc (test_dump_to_dot): Likewise. * digraph.h (digraph<GraphTraits>::dump_dot_to_file): Likewise. * dumpfile.cc (dump_pretty_printer::emit_any_pending_textual_chunks): Likewise. * gimple-pretty-print.cc (print_gimple_stmt): Likewise. (print_gimple_expr): Likewise. (print_gimple_seq): Likewise. (dump_ssaname_info_to_file): Likewise. (gimple_dump_bb): Likewise. * graph.cc (print_graph_cfg): Likewise. (start_graph_dump): Likewise. * langhooks.cc (lhd_print_error_function): Likewise. * lto-wrapper.cc (print_lto_docs_link): Likewise. * pretty-print.cc (pp_set_real_maximum_length): Convert to... (pretty_printer::set_real_maximum_length): ...this. (pp_clear_state): Convert to... (pretty_printer::clear_state): ...this. (pp_wrap_text): Update for pp_remaining_character_count_for_line becoming a member function. (urlify_quoted_string): Update for fields of pretty_printer becoming private. (pp_format): Convert to... (pretty_printer::format): ...this. Reduce the scope of local variables "old_line_length" and "old_wrapping_mode" and make const. Reduce the scope of locals "args", "new_chunk_array", "curarg", "any_unnumbered", and "any_numbered". (pp_output_formatted_text): Update for fields of pretty_printer becoming private. (pp_flush): Likewise. (pp_really_flush): Likewise. (pp_set_line_maximum_length): Likewise. (pp_set_prefix): Convert to... (pretty_printer::set_prefix): ...this. (pp_take_prefix): Update for fields of pretty_printer gaining "m_" prefixes. (pp_destroy_prefix): Likewise. (pp_emit_prefix): Convert to... (pretty_printer::emit_prefix): ...this. (pretty_printer::pretty_printer): Update both ctors for fields gaining "m_" prefixes. (pretty_printer::~pretty_printer): Likewise for dtor. (pp_append_text): Update for pp_emit_prefix becoming pretty_printer::emit_prefix. (pp_remaining_character_count_for_line): Convert to... (pretty_printer::remaining_character_count_for_line): ...this. (pp_character): Update for above change. (pp_maybe_space): Convert to... (pretty_printer::maybe_space): ...this. (pp_begin_url): Convert to... (pretty_printer::begin_url): ...this. (get_end_url_string): Update for fields of pretty_printer becoming private. (pp_end_url): Convert to... (pretty_printer::end_url): ...this. (selftest::test_pretty_printer::test_pretty_printer): Update for fields of pretty_printer becoming private. (selftest::test_urls): Likewise. (selftest::test_null_urls): Likewise. (selftest::test_urlification): Likewise. * pretty-print.h (pp_line_cutoff): Convert from macro to inline function. (pp_prefixing_rule): Likewise. (pp_wrapping_mode): Likewise. (pp_format_decoder): Likewise. (pp_needs_newline): Likewise. (pp_indentation): Likewise. (pp_translate_identifiers): Likewise. (pp_show_color): Likewise. (pp_buffer): Likewise. (pp_get_prefix): Add forward decl to allow friend decl. (pp_take_prefix): Likewise. (pp_destroy_prefix): Likewise. (class pretty_printer): Fix typo in leading comment. Add "friend" decls for the various new accessor functions that were formerly macros and for pp_get_prefix, pp_take_prefix, and pp_destroy_prefix. Make all fields private. (pretty_printer::set_output_stream): New. (pretty_printer::set_prefix): New decl. (pretty_printer::emit_prefix): New decl. (pretty_printer::format): New decl. (pretty_printer::maybe_space): New decl. (pretty_printer::supports_urls_p): New. (pretty_printer::get_url_format): New. (pretty_printer::set_url_format): New. (pretty_printer::begin_url): New decl. (pretty_printer::end_url): New decl. (pretty_printer::set_verbatim_wrapping): New. (pretty_printer::set_padding): New. (pretty_printer::get_padding): New. (pretty_printer::clear_state): New decl. (pretty_printer::set_real_maximum_length): New decl. (pretty_printer::remaining_character_count_for_line): New decl. (pretty_printer::buffer): Rename to... (pretty_printer::m_buffer): ...this. (pretty_printer::prefix): Rename to... (pretty_printer::m_prefix): ...this; (pretty_printer::padding): Rename to... (pretty_printer::m_padding): ...this; (pretty_printer::maximum_length): Rename to... (pretty_printer::m_maximum_length): ...this; (pretty_printer::indent_skip): Rename to... (pretty_printer::m_indent_skip): ...this; (pretty_printer::wrapping): Rename to... (pretty_printer::m_wrapping): ...this; (pretty_printer::format_decoder): Rename to... (pretty_printer::m_format_decoder): ...this; (pretty_printer::emitted_prefix): Rename to... (pretty_printer::m_emitted_prefix): ...this; (pretty_printer::need_newline): Rename to... (pretty_printer::m_need_newline): ...this; (pretty_printer::translate_identifiers): Rename to... (pretty_printer::m_translate_identifiers): ...this; (pretty_printer::show_color): Rename to... (pretty_printer::m_show_color): ...this; (pretty_printer::url_format): Rename to... (pretty_printer::m_url_format): ...this; (pp_get_prefix): Reformat. (pp_format_postprocessor): New inline function. (pp_take_prefix): Move decl to before class pretty_printer. (pp_destroy_prefix): Likewise. (pp_set_prefix): Convert to inline function. (pp_emit_prefix): Convert to inline function. (pp_format): Convert to inline function. (pp_maybe_space): Convert to inline function. (pp_begin_url): Convert to inline function. (pp_end_url): Convert to inline function. (pp_set_verbatim_wrapping): Convert from macro to inline function, renaming... (pp_set_verbatim_wrapping_): ...this. * print-rtl.cc (dump_value_slim): Update for fields of pretty_printer becoming private. (dump_insn_slim): Likewise. (dump_rtl_slim): Likewise. * print-tree.cc (print_node): Likewise. * sched-rgn.cc (dump_rgn_dependencies_dot): Likewise. * text-art/canvas.cc (canvas::print_to_pp): Likewise. (canvas::debug): Likewise. (selftest::test_canvas_urls): Likewise. * text-art/dump.h (dump_to_file): Likewise. * text-art/selftests.cc (selftest::assert_canvas_streq): Likewise. * text-art/style.cc (style::print_changes): Likewise. * text-art/styled-string.cc (styled_string::from_fmt_va): Likewise. * tree-diagnostic-path.cc (control_flow_tests): Update for pp_show_color becoming an inline function. * tree-loop-distribution.cc (dot_rdg_1): Update for fields of pretty_printer becoming private. * tree-pretty-print.cc (maybe_init_pretty_print): Likewise. * value-range.cc (vrange::dump): Likewise. (irange_bitmask::dump): Likewise. gcc/fortran/ChangeLog: * error.cc (gfc_clear_pp_buffer): Likewise. (gfc_warning): Likewise. (gfc_warning_check): Likewise. (gfc_error_opt): Likewise. (gfc_error_check): Likewise. gcc/jit/ChangeLog: * jit-recording.cc (recording::function::dump_to_dot): Update for fields of pretty_printer becoming private. gcc/testsuite/ChangeLog: * gcc.dg/plugin/analyzer_cpython_plugin.c (dump_refcnt_info): Update for fields of pretty_printer becoming private. Signed-off-by: David Malcolm <dmalcolm@redhat.com>
Diffstat (limited to 'gcc')
-rw-r--r--gcc/analyzer/access-diagram.cc2
-rw-r--r--gcc/analyzer/call-details.cc2
-rw-r--r--gcc/analyzer/call-summary.cc4
-rw-r--r--gcc/analyzer/checker-event.cc2
-rw-r--r--gcc/analyzer/constraint-manager.cc8
-rw-r--r--gcc/analyzer/engine.cc6
-rw-r--r--gcc/analyzer/feasible-graph.cc2
-rw-r--r--gcc/analyzer/program-point.cc2
-rw-r--r--gcc/analyzer/program-state.cc6
-rw-r--r--gcc/analyzer/ranges.cc4
-rw-r--r--gcc/analyzer/record-layout.cc2
-rw-r--r--gcc/analyzer/region-model-reachability.cc2
-rw-r--r--gcc/analyzer/region-model.cc6
-rw-r--r--gcc/analyzer/region-model.h2
-rw-r--r--gcc/analyzer/region.cc4
-rw-r--r--gcc/analyzer/sm-malloc.cc2
-rw-r--r--gcc/analyzer/store.cc14
-rw-r--r--gcc/analyzer/supergraph.cc4
-rw-r--r--gcc/analyzer/svalue.cc2
-rw-r--r--gcc/c-family/c-ada-spec.cc2
-rw-r--r--gcc/c-family/c-pretty-print.cc36
-rw-r--r--gcc/c/c-objc-common.cc4
-rw-r--r--gcc/cp/cxx-pretty-print.cc12
-rw-r--r--gcc/cp/error.cc37
-rw-r--r--gcc/diagnostic.cc14
-rw-r--r--gcc/diagnostic.h6
-rw-r--r--gcc/digraph.cc2
-rw-r--r--gcc/digraph.h2
-rw-r--r--gcc/dumpfile.cc1
-rw-r--r--gcc/fortran/error.cc30
-rw-r--r--gcc/gimple-pretty-print.cc10
-rw-r--r--gcc/graph.cc4
-rw-r--r--gcc/jit/jit-recording.cc2
-rw-r--r--gcc/langhooks.cc3
-rw-r--r--gcc/lto-wrapper.cc4
-rw-r--r--gcc/pretty-print.cc339
-rw-r--r--gcc/pretty-print.h263
-rw-r--r--gcc/print-rtl.cc6
-rw-r--r--gcc/print-tree.cc2
-rw-r--r--gcc/sched-rgn.cc2
-rw-r--r--gcc/testsuite/gcc.dg/plugin/analyzer_cpython_plugin.c2
-rw-r--r--gcc/text-art/canvas.cc10
-rw-r--r--gcc/text-art/dump.h2
-rw-r--r--gcc/text-art/selftests.cc2
-rw-r--r--gcc/text-art/style.cc4
-rw-r--r--gcc/text-art/styled-string.cc2
-rw-r--r--gcc/tree-diagnostic-path.cc2
-rw-r--r--gcc/tree-loop-distribution.cc2
-rw-r--r--gcc/tree-pretty-print.cc2
-rw-r--r--gcc/value-range.cc4
50 files changed, 516 insertions, 373 deletions
diff --git a/gcc/analyzer/access-diagram.cc b/gcc/analyzer/access-diagram.cc
index 8d7461fe381..cb5b656c164 100644
--- a/gcc/analyzer/access-diagram.cc
+++ b/gcc/analyzer/access-diagram.cc
@@ -547,7 +547,7 @@ access_range::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, simple);
pp_newline (&pp);
pp_flush (&pp);
diff --git a/gcc/analyzer/call-details.cc b/gcc/analyzer/call-details.cc
index fda925edb96..116ab40afaf 100644
--- a/gcc/analyzer/call-details.cc
+++ b/gcc/analyzer/call-details.cc
@@ -366,7 +366,7 @@ call_details::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, simple);
pp_flush (&pp);
}
diff --git a/gcc/analyzer/call-summary.cc b/gcc/analyzer/call-summary.cc
index 46b4e2a3bbd..ec36fdfd9f1 100644
--- a/gcc/analyzer/call-summary.cc
+++ b/gcc/analyzer/call-summary.cc
@@ -149,7 +149,7 @@ call_summary::dump (const extrinsic_state &ext_state,
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = fp;
+ pp.set_output_stream (fp);
dump_to_pp (ext_state, &pp, simple);
pp_flush (&pp);
}
@@ -890,7 +890,7 @@ call_summary_replay::dump (FILE *fp, bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = fp;
+ pp.set_output_stream (fp);
dump_to_pp (&pp, simple);
pp_flush (&pp);
}
diff --git a/gcc/analyzer/checker-event.cc b/gcc/analyzer/checker-event.cc
index ee3ceb407ea..593f364e1d6 100644
--- a/gcc/analyzer/checker-event.cc
+++ b/gcc/analyzer/checker-event.cc
@@ -199,7 +199,7 @@ checker_event::debug () const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump (&pp);
pp_newline (&pp);
pp_flush (&pp);
diff --git a/gcc/analyzer/constraint-manager.cc b/gcc/analyzer/constraint-manager.cc
index 883f33b2cdd..a9d58c9cdcf 100644
--- a/gcc/analyzer/constraint-manager.cc
+++ b/gcc/analyzer/constraint-manager.cc
@@ -185,7 +185,7 @@ range::dump () const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp);
pp_newline (&pp);
pp_flush (&pp);
@@ -448,7 +448,7 @@ bounded_range::dump (bool show_types) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, show_types);
pp_newline (&pp);
pp_flush (&pp);
@@ -721,7 +721,7 @@ bounded_ranges::dump (bool show_types) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, show_types);
pp_newline (&pp);
pp_flush (&pp);
@@ -1772,7 +1772,7 @@ constraint_manager::dump (FILE *fp) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = fp;
+ pp.set_output_stream (fp);
dump_to_pp (&pp, true);
pp_flush (&pp);
}
diff --git a/gcc/analyzer/engine.cc b/gcc/analyzer/engine.cc
index 30c0913c861..f5fad5b2e47 100644
--- a/gcc/analyzer/engine.cc
+++ b/gcc/analyzer/engine.cc
@@ -1422,7 +1422,7 @@ exploded_node::dump (FILE *fp,
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = fp;
+ pp.set_output_stream (fp);
dump_to_pp (&pp, ext_state);
pp_flush (&pp);
}
@@ -4832,7 +4832,7 @@ exploded_path::dump (FILE *fp, const extrinsic_state *ext_state) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = fp;
+ pp.set_output_stream (fp);
dump_to_pp (&pp, ext_state);
pp_flush (&pp);
}
@@ -4856,7 +4856,7 @@ exploded_path::dump_to_file (const char *filename,
return;
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
- pp.buffer->stream = fp;
+ pp.set_output_stream (fp);
dump_to_pp (&pp, &ext_state);
pp_flush (&pp);
fclose (fp);
diff --git a/gcc/analyzer/feasible-graph.cc b/gcc/analyzer/feasible-graph.cc
index a1812231572..35b489fde35 100644
--- a/gcc/analyzer/feasible-graph.cc
+++ b/gcc/analyzer/feasible-graph.cc
@@ -301,7 +301,7 @@ feasible_graph::dump_feasible_path (const feasible_node &dst_fnode,
FILE *fp = fopen (filename, "w");
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
- pp.buffer->stream = fp;
+ pp.set_output_stream (fp);
dump_feasible_path (dst_fnode, &pp);
pp_flush (&pp);
fclose (fp);
diff --git a/gcc/analyzer/program-point.cc b/gcc/analyzer/program-point.cc
index 14ce5be4bcf..ea15ccc91d2 100644
--- a/gcc/analyzer/program-point.cc
+++ b/gcc/analyzer/program-point.cc
@@ -302,7 +302,7 @@ program_point::dump () const
{
pretty_printer pp;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
print (&pp, format (true));
pp_flush (&pp);
}
diff --git a/gcc/analyzer/program-state.cc b/gcc/analyzer/program-state.cc
index efaf569a490..cb9c3888002 100644
--- a/gcc/analyzer/program-state.cc
+++ b/gcc/analyzer/program-state.cc
@@ -86,7 +86,7 @@ extrinsic_state::dump_to_file (FILE *outf) const
pretty_printer pp;
if (outf == stderr)
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = outf;
+ pp.set_output_stream (outf);
dump_to_pp (&pp);
pp_flush (&pp);
}
@@ -274,7 +274,7 @@ sm_state_map::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
print (NULL, simple, true, &pp);
pp_newline (&pp);
pp_flush (&pp);
@@ -1169,7 +1169,7 @@ program_state::dump_to_file (const extrinsic_state &ext_state,
pp_format_decoder (&pp) = default_tree_printer;
if (outf == stderr)
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = outf;
+ pp.set_output_stream (outf);
dump_to_pp (ext_state, summarize, multiline, &pp);
pp_flush (&pp);
}
diff --git a/gcc/analyzer/ranges.cc b/gcc/analyzer/ranges.cc
index f591efae43a..17d6e6b2212 100644
--- a/gcc/analyzer/ranges.cc
+++ b/gcc/analyzer/ranges.cc
@@ -98,7 +98,7 @@ symbolic_byte_offset::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, simple);
pp_newline (&pp);
pp_flush (&pp);
@@ -157,7 +157,7 @@ symbolic_byte_range::dump (bool simple, region_model_manager &mgr) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, simple, mgr);
pp_newline (&pp);
pp_flush (&pp);
diff --git a/gcc/analyzer/record-layout.cc b/gcc/analyzer/record-layout.cc
index af311551848..59690a43b76 100644
--- a/gcc/analyzer/record-layout.cc
+++ b/gcc/analyzer/record-layout.cc
@@ -85,7 +85,7 @@ record_layout::dump () const
{
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp);
pp_flush (&pp);
}
diff --git a/gcc/analyzer/region-model-reachability.cc b/gcc/analyzer/region-model-reachability.cc
index b9887902980..828e3fcbada 100644
--- a/gcc/analyzer/region-model-reachability.cc
+++ b/gcc/analyzer/region-model-reachability.cc
@@ -350,7 +350,7 @@ reachable_regions::dump () const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp);
pp_flush (&pp);
}
diff --git a/gcc/analyzer/region-model.cc b/gcc/analyzer/region-model.cc
index 1a44ff073bd..7969055a59c 100644
--- a/gcc/analyzer/region-model.cc
+++ b/gcc/analyzer/region-model.cc
@@ -226,7 +226,7 @@ region_to_value_map::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, simple, true);
pp_newline (&pp);
pp_flush (&pp);
@@ -486,7 +486,7 @@ region_model::dump (FILE *fp, bool simple, bool multiline) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = fp;
+ pp.set_output_stream (fp);
dump_to_pp (&pp, simple, multiline);
pp_newline (&pp);
pp_flush (&pp);
@@ -7400,7 +7400,7 @@ model_merger::dump (FILE *fp, bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = fp;
+ pp.set_output_stream (fp);
dump_to_pp (&pp, simple);
pp_flush (&pp);
}
diff --git a/gcc/analyzer/region-model.h b/gcc/analyzer/region-model.h
index 912b558a18d..f57d2069b3b 100644
--- a/gcc/analyzer/region-model.h
+++ b/gcc/analyzer/region-model.h
@@ -123,7 +123,7 @@ DEBUG_FUNCTION inline void
one_way_id_map<T>::dump () const
{
pretty_printer pp;
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp);
pp_flush (&pp);
}
diff --git a/gcc/analyzer/region.cc b/gcc/analyzer/region.cc
index d5cfd476fd8..2eabda41941 100644
--- a/gcc/analyzer/region.cc
+++ b/gcc/analyzer/region.cc
@@ -141,7 +141,7 @@ region_offset::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, simple);
pp_newline (&pp);
pp_flush (&pp);
@@ -1018,7 +1018,7 @@ region::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, simple);
pp_newline (&pp);
pp_flush (&pp);
diff --git a/gcc/analyzer/sm-malloc.cc b/gcc/analyzer/sm-malloc.cc
index 8bdcb4bc33c..f1ec04d117d 100644
--- a/gcc/analyzer/sm-malloc.cc
+++ b/gcc/analyzer/sm-malloc.cc
@@ -586,7 +586,7 @@ deallocator_set::dump () const
{
pretty_printer pp;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp);
pp_newline (&pp);
pp_flush (&pp);
diff --git a/gcc/analyzer/store.cc b/gcc/analyzer/store.cc
index 5a33d740ce2..f58b84ef946 100644
--- a/gcc/analyzer/store.cc
+++ b/gcc/analyzer/store.cc
@@ -110,7 +110,7 @@ uncertainty_t::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, simple);
pp_newline (&pp);
pp_flush (&pp);
@@ -147,7 +147,7 @@ binding_key::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, simple);
pp_newline (&pp);
pp_flush (&pp);
@@ -231,7 +231,7 @@ DEBUG_FUNCTION void
bit_range::dump () const
{
pretty_printer pp;
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp);
pp_newline (&pp);
pp_flush (&pp);
@@ -507,7 +507,7 @@ DEBUG_FUNCTION void
byte_range::dump () const
{
pretty_printer pp;
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp);
pp_newline (&pp);
pp_flush (&pp);
@@ -776,7 +776,7 @@ binding_map::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, simple, true);
pp_newline (&pp);
pp_flush (&pp);
@@ -1403,7 +1403,7 @@ binding_cluster::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
pp_string (&pp, " cluster for: ");
m_base_region->dump_to_pp (&pp, simple);
pp_string (&pp, ": ");
@@ -2639,7 +2639,7 @@ store::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, simple, true, NULL);
pp_newline (&pp);
pp_flush (&pp);
diff --git a/gcc/analyzer/supergraph.cc b/gcc/analyzer/supergraph.cc
index adbf90f17ed..4dc7942b26a 100644
--- a/gcc/analyzer/supergraph.cc
+++ b/gcc/analyzer/supergraph.cc
@@ -443,7 +443,7 @@ supergraph::dump_dot_to_file (FILE *fp, const dump_args_t &dump_args) const
trying to prettify things by showing the underlying var. */
pp_format_decoder (pp) = default_tree_printer;
- pp->buffer->stream = fp;
+ pp->set_output_stream (fp);
dump_dot_to_pp (pp, dump_args);
pp_flush (pp);
delete pp;
@@ -902,7 +902,7 @@ superedge::dump () const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump (&pp);
pp_newline (&pp);
pp_flush (&pp);
diff --git a/gcc/analyzer/svalue.cc b/gcc/analyzer/svalue.cc
index b67780a5ef1..cad6b7dd3cd 100644
--- a/gcc/analyzer/svalue.cc
+++ b/gcc/analyzer/svalue.cc
@@ -89,7 +89,7 @@ svalue::dump (bool simple) const
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
dump_to_pp (&pp, simple);
pp_newline (&pp);
pp_flush (&pp);
diff --git a/gcc/c-family/c-ada-spec.cc b/gcc/c-family/c-ada-spec.cc
index e0e72493151..a41e93aeafb 100644
--- a/gcc/c-family/c-ada-spec.cc
+++ b/gcc/c-family/c-ada-spec.cc
@@ -3556,7 +3556,7 @@ dump_ads (const char *source_file,
pretty_printer pp;
pp_needs_newline (&pp) = true;
- pp.buffer->stream = f;
+ pp.set_output_stream (f);
/* Dump all relevant macros. */
dump_ada_macros (&pp, source_file);
diff --git a/gcc/c-family/c-pretty-print.cc b/gcc/c-family/c-pretty-print.cc
index da7934d783a..dd7eba12394 100644
--- a/gcc/c-family/c-pretty-print.cc
+++ b/gcc/c-family/c-pretty-print.cc
@@ -47,7 +47,7 @@ along with GCC; see the file COPYING3. If not see
#define pp_c_maybe_whitespace(PP) \
do { \
- if ((PP)->padding == pp_before) \
+ if ((PP)->get_padding () == pp_before) \
pp_c_whitespace (PP); \
} while (0)
@@ -76,98 +76,98 @@ void
pp_c_whitespace (c_pretty_printer *pp)
{
pp_space (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_left_paren (c_pretty_printer *pp)
{
pp_left_paren (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_right_paren (c_pretty_printer *pp)
{
pp_right_paren (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_left_brace (c_pretty_printer *pp)
{
pp_left_brace (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_right_brace (c_pretty_printer *pp)
{
pp_right_brace (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_left_bracket (c_pretty_printer *pp)
{
pp_left_bracket (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_right_bracket (c_pretty_printer *pp)
{
pp_right_bracket (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_dot (c_pretty_printer *pp)
{
pp_dot (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_ampersand (c_pretty_printer *pp)
{
pp_ampersand (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_star (c_pretty_printer *pp)
{
pp_star (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_arrow (c_pretty_printer *pp)
{
pp_arrow (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_semicolon (c_pretty_printer *pp)
{
pp_semicolon (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_complement (c_pretty_printer *pp)
{
pp_complement (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
pp_c_exclamation (c_pretty_printer *pp)
{
pp_exclamation (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
/* Print out the external representation of QUALIFIERS. */
@@ -1307,7 +1307,7 @@ pp_c_ws_string (c_pretty_printer *pp, const char *str)
{
pp_c_maybe_whitespace (pp);
pp_string (pp, str);
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
}
void
@@ -1328,7 +1328,7 @@ pp_c_identifier (c_pretty_printer *pp, const char *id)
{
pp_c_maybe_whitespace (pp);
pp_identifier (pp, id);
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
}
/* Pretty-print a C primary-expression.
@@ -2985,7 +2985,7 @@ print_c_tree (FILE *file, tree t)
c_pretty_printer pp;
pp_needs_newline (&pp) = true;
- pp.buffer->stream = file;
+ pp.set_output_stream (file);
pp.statement (t);
pp_newline_and_flush (&pp);
}
diff --git a/gcc/c/c-objc-common.cc b/gcc/c/c-objc-common.cc
index 738e899a2a9..1025e0e1c7b 100644
--- a/gcc/c/c-objc-common.cc
+++ b/gcc/c/c-objc-common.cc
@@ -252,7 +252,7 @@ print_type (c_pretty_printer *cpp, tree t, bool *quoted)
c_pretty_printer cpp2;
/* Print the stripped version into a temporary printer. */
cpp2.type_id (aka_type);
- struct obstack *ob2 = cpp2.buffer->obstack;
+ struct obstack *ob2 = pp_buffer (&cpp2)->obstack;
/* Get the stripped version from the temporary printer. */
const char *aka = (char *) obstack_base (ob2);
int aka_len = obstack_object_size (ob2);
@@ -301,7 +301,7 @@ c_tree_printer (pretty_printer *pp, text_info *text, const char *spec,
tree t = NULL_TREE;
// FIXME: the next cast should be a dynamic_cast, when it is permitted.
c_pretty_printer *cpp = (c_pretty_printer *) pp;
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
if (precision != 0 || wide)
return false;
diff --git a/gcc/cp/cxx-pretty-print.cc b/gcc/cp/cxx-pretty-print.cc
index c6d8cc84132..806aebff174 100644
--- a/gcc/cp/cxx-pretty-print.cc
+++ b/gcc/cp/cxx-pretty-print.cc
@@ -49,7 +49,7 @@ pp_cxx_nonconsecutive_character (cxx_pretty_printer *pp, int c)
if (p != NULL && *p == c)
pp_cxx_whitespace (pp);
pp_character (pp, c);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
#define pp_cxx_expression_list(PP, T) \
@@ -65,7 +65,7 @@ void
pp_cxx_colon_colon (cxx_pretty_printer *pp)
{
pp_colon_colon (pp);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
void
@@ -84,7 +84,7 @@ void
pp_cxx_separate_with (cxx_pretty_printer *pp, int c)
{
pp_separate_with (pp, c);
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
}
/* Expressions. */
@@ -1702,7 +1702,7 @@ cxx_pretty_printer::direct_declarator (tree t)
if (DECL_IOBJ_MEMBER_FUNCTION_P (t))
{
- padding = pp_before;
+ set_padding (pp_before);
pp_cxx_cv_qualifier_seq (this, pp_cxx_implicit_parameter_type (t));
}
@@ -1859,7 +1859,7 @@ cxx_pretty_printer::direct_abstract_declarator (tree t)
direct_abstract_declarator (TREE_TYPE (t));
if (TREE_CODE (t) == METHOD_TYPE)
{
- padding = pp_before;
+ set_padding (pp_before);
pp_cxx_cv_qualifier_seq (this, class_of_this_parm (t));
}
pp_cxx_exception_specification (this, t);
@@ -2685,7 +2685,7 @@ pp_cxx_requires_clause (cxx_pretty_printer *pp, tree t)
{
if (!t)
return;
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
pp_cxx_ws_string (pp, "requires");
pp_space (pp);
pp->expression (t);
diff --git a/gcc/cp/error.cc b/gcc/cp/error.cc
index 0ff7f9d4c46..01ad794df8e 100644
--- a/gcc/cp/error.cc
+++ b/gcc/cp/error.cc
@@ -180,7 +180,7 @@ cxx_initialize_diagnostics (diagnostic_context *context)
diagnostic_starter (context) = cp_diagnostic_starter;
/* diagnostic_finalizer is already c_diagnostic_finalizer. */
diagnostic_format_decoder (context) = cp_printer;
- pp->m_format_postprocessor = new cxx_format_postprocessor ();
+ pp_format_postprocessor (pp) = new cxx_format_postprocessor ();
}
/* Dump an '@module' name suffix for DECL, if any. */
@@ -210,7 +210,7 @@ dump_module_suffix (cxx_pretty_printer *pp, tree decl)
if (const char *n = module_name (m, false))
{
pp_character (pp, '@');
- pp->padding = pp_none;
+ pp->set_padding (pp_none);
pp_string (pp, n);
}
}
@@ -921,7 +921,7 @@ dump_type_prefix (cxx_pretty_printer *pp, tree t, int flags)
else
pp_ampersand (pp);
}
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
pp_cxx_cv_qualifier_seq (pp, t);
}
break;
@@ -939,7 +939,7 @@ dump_type_prefix (cxx_pretty_printer *pp, tree t, int flags)
}
pp_cxx_star (pp);
pp_cxx_cv_qualifier_seq (pp, t);
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
break;
/* This can be reached without a pointer when dealing with
@@ -986,7 +986,7 @@ dump_type_prefix (cxx_pretty_printer *pp, tree t, int flags)
case FIXED_POINT_TYPE:
case NULLPTR_TYPE:
dump_type (pp, t, flags);
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
break;
default:
@@ -1035,7 +1035,7 @@ dump_type_suffix (cxx_pretty_printer *pp, tree t, int flags)
anyway; they may in g++, but we'll just pretend otherwise. */
dump_parameters (pp, arg, flags & ~TFF_FUNCTION_DEFAULT_ARGUMENTS);
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
pp_cxx_cv_qualifiers (pp, type_memfn_quals (t),
TREE_CODE (t) == FUNCTION_TYPE
&& (flags & TFF_POINTER));
@@ -1049,7 +1049,7 @@ dump_type_suffix (cxx_pretty_printer *pp, tree t, int flags)
{
pp_space (pp);
pp_c_attributes_display (pp, TYPE_ATTRIBUTES (t));
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
}
dump_type_suffix (pp, TREE_TYPE (t), flags);
break;
@@ -1720,13 +1720,13 @@ dump_lambda_function (cxx_pretty_printer *pp,
/* Early escape. */;
else if (TREE_CODE (TREE_TYPE (fn)) == FUNCTION_TYPE)
{
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
pp_c_ws_string (pp, "static");
}
else if (!(TYPE_QUALS (class_of_this_parm (TREE_TYPE (fn)))
& TYPE_QUAL_CONST))
{
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
pp_c_ws_string (pp, "mutable");
}
dump_substitution (pp, fn, template_parms, template_args, flags);
@@ -1845,20 +1845,20 @@ dump_function_decl (cxx_pretty_printer *pp, tree t, int flags)
if (TREE_CODE (fntype) == METHOD_TYPE)
{
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
pp_cxx_cv_qualifier_seq (pp, class_of_this_parm (fntype));
dump_ref_qualifier (pp, fntype, flags);
}
if (tx_safe_fn_type_p (fntype))
{
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
pp_cxx_ws_string (pp, "transaction_safe");
}
if (flags & TFF_EXCEPTION_SPECIFICATION)
{
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
dump_exception_spec (pp, exceptions, flags);
}
@@ -1952,7 +1952,7 @@ dump_ref_qualifier (cxx_pretty_printer *pp, tree t, int flags ATTRIBUTE_UNUSED)
{
if (FUNCTION_REF_QUALIFIED (t))
{
- pp->padding = pp_before;
+ pp->set_padding (pp_before);
if (FUNCTION_RVALUE_QUALIFIED (t))
pp_cxx_ws_string (pp, "&&");
else
@@ -3156,7 +3156,7 @@ static void
reinit_cxx_pp (void)
{
pp_clear_output_area (cxx_pp);
- cxx_pp->padding = pp_none;
+ cxx_pp->set_padding (pp_none);
pp_indentation (cxx_pp) = 0;
pp_needs_newline (cxx_pp) = false;
pp_show_color (cxx_pp) = false;
@@ -3537,7 +3537,7 @@ static const char *
cv_to_string (tree p, int v)
{
reinit_cxx_pp ();
- cxx_pp->padding = v ? pp_before : pp_none;
+ cxx_pp->set_padding (v ? pp_before : pp_none);
pp_cxx_cv_qualifier_seq (cxx_pp, p);
return pp_ggc_formatted_text (cxx_pp);
}
@@ -3682,8 +3682,7 @@ cp_print_error_function (diagnostic_context *context,
pp_newline (context->printer);
diagnostic_set_last_function (context, diagnostic);
- pp_destroy_prefix (context->printer);
- context->printer->prefix = old_prefix;
+ context->printer->set_prefix (old_prefix);
}
}
@@ -4470,9 +4469,9 @@ cp_printer (pretty_printer *pp, text_info *text, const char *spec,
int precision, bool wide, bool set_locus, bool verbose,
bool *quoted, const char **buffer_ptr)
{
- gcc_assert (pp->m_format_postprocessor);
+ gcc_assert (pp_format_postprocessor (pp));
cxx_format_postprocessor *postprocessor
- = static_cast <cxx_format_postprocessor *> (pp->m_format_postprocessor);
+ = static_cast <cxx_format_postprocessor *> (pp_format_postprocessor (pp));
const char *result;
tree t = NULL;
diff --git a/gcc/diagnostic.cc b/gcc/diagnostic.cc
index 1b4def06f72..9d0cb8ea051 100644
--- a/gcc/diagnostic.cc
+++ b/gcc/diagnostic.cc
@@ -342,8 +342,8 @@ diagnostic_context::urls_init (int value)
value = DIAGNOSTICS_URLS_DEFAULT;
}
- this->printer->url_format
- = determine_url_format ((diagnostic_url_rule_t) value);
+ this->printer->set_url_format
+ (determine_url_format ((diagnostic_url_rule_t) value));
}
/* Create the file_cache, if not already created, and tell it how to
@@ -1354,7 +1354,7 @@ diagnostic_context::print_any_cwe (const diagnostic_info &diagnostic)
pp_string (pp, " [");
pp_string (pp, colorize_start (pp_show_color (pp),
diagnostic_kind_color[diagnostic.kind]));
- if (pp->url_format != URL_FORMAT_NONE)
+ if (pp->supports_urls_p ())
{
char *cwe_url = get_cwe_url (cwe);
pp_begin_url (pp, cwe_url);
@@ -1362,7 +1362,7 @@ diagnostic_context::print_any_cwe (const diagnostic_info &diagnostic)
}
pp_printf (pp, "CWE-%i", cwe);
pp_set_prefix (pp, saved_prefix);
- if (pp->url_format != URL_FORMAT_NONE)
+ if (pp->supports_urls_p ())
pp_end_url (pp);
pp_string (pp, colorize_stop (pp_show_color (pp)));
pp_character (pp, ']');
@@ -1394,7 +1394,7 @@ diagnostic_context::print_any_rules (const diagnostic_info &diagnostic)
colorize_start (pp_show_color (pp),
diagnostic_kind_color[diagnostic.kind]));
char *url = NULL;
- if (pp->url_format != URL_FORMAT_NONE)
+ if (pp->supports_urls_p ())
{
url = rule.make_url ();
if (url)
@@ -1402,7 +1402,7 @@ diagnostic_context::print_any_rules (const diagnostic_info &diagnostic)
}
pp_string (pp, desc);
pp_set_prefix (pp, saved_prefix);
- if (pp->url_format != URL_FORMAT_NONE)
+ if (pp->supports_urls_p ())
if (url)
pp_end_url (pp);
free (url);
@@ -1425,7 +1425,7 @@ diagnostic_context::print_option_information (const diagnostic_info &diagnostic,
orig_diag_kind, diagnostic.kind))
{
char *option_url = nullptr;
- if (this->printer->url_format != URL_FORMAT_NONE)
+ if (this->printer->supports_urls_p ())
option_url = make_option_url (diagnostic.option_index);
pretty_printer * const pp = this->printer;
pp_string (pp, " [");
diff --git a/gcc/diagnostic.h b/gcc/diagnostic.h
index 4632aac73c6..9a9571bb76d 100644
--- a/gcc/diagnostic.h
+++ b/gcc/diagnostic.h
@@ -842,10 +842,10 @@ diagnostic_finalizer (diagnostic_context *context)
#define diagnostic_info_auxiliary_data(DI) (DI)->x_data
/* Same as pp_format_decoder. Works on 'diagnostic_context *'. */
-#define diagnostic_format_decoder(DC) ((DC)->printer->format_decoder)
+#define diagnostic_format_decoder(DC) pp_format_decoder ((DC)->printer)
-/* Same as output_prefixing_rule. Works on 'diagnostic_context *'. */
-#define diagnostic_prefixing_rule(DC) ((DC)->printer->wrapping.rule)
+/* Same as pp_prefixing_rule. Works on 'diagnostic_context *'. */
+#define diagnostic_prefixing_rule(DC) pp_prefixing_rule ((DC)->printer)
/* Raise SIGABRT on any diagnostic of severity DK_ERROR or higher. */
inline void
diff --git a/gcc/digraph.cc b/gcc/digraph.cc
index 64497f8d929..b323764a93c 100644
--- a/gcc/digraph.cc
+++ b/gcc/digraph.cc
@@ -108,7 +108,7 @@ test_dump_to_dot ()
g.add_test_edge (a, b);
pretty_printer pp;
- pp.buffer->stream = NULL;
+ pp.set_output_stream (nullptr);
test_dump_args_t dump_args;
g.dump_dot_to_pp (&pp, NULL, dump_args);
diff --git a/gcc/digraph.h b/gcc/digraph.h
index 33a5055cd9c..4894d3987cc 100644
--- a/gcc/digraph.h
+++ b/gcc/digraph.h
@@ -201,7 +201,7 @@ digraph<GraphTraits>::dump_dot_to_file (FILE *fp,
pretty_printer pp;
// TODO:
pp_format_decoder (&pp) = default_tree_printer;
- pp.buffer->stream = fp;
+ pp.set_output_stream (fp);
dump_dot_to_pp (&pp, root_cluster, args);
pp_flush (&pp);
}
diff --git a/gcc/dumpfile.cc b/gcc/dumpfile.cc
index 1ec44cb58fb..097f9bcfff2 100644
--- a/gcc/dumpfile.cc
+++ b/gcc/dumpfile.cc
@@ -860,6 +860,7 @@ dump_pretty_printer::emit_items (optinfo *dest)
void
dump_pretty_printer::emit_any_pending_textual_chunks (optinfo *dest)
{
+ output_buffer *const buffer = pp_buffer (this);
gcc_assert (buffer->obstack == &buffer->formatted_obstack);
/* Don't emit an item if the pending text is empty. */
diff --git a/gcc/fortran/error.cc b/gcc/fortran/error.cc
index 65e38b0e866..a0e1a1c3684 100644
--- a/gcc/fortran/error.cc
+++ b/gcc/fortran/error.cc
@@ -924,10 +924,10 @@ static void
gfc_clear_pp_buffer (output_buffer *this_buffer)
{
pretty_printer *pp = global_dc->printer;
- output_buffer *tmp_buffer = pp->buffer;
- pp->buffer = this_buffer;
+ output_buffer *tmp_buffer = pp_buffer (pp);
+ pp_buffer (pp) = this_buffer;
pp_clear_output_area (pp);
- pp->buffer = tmp_buffer;
+ pp_buffer (pp) = tmp_buffer;
/* We need to reset last_location, otherwise we may skip caret lines
when we actually give a diagnostic. */
global_dc->m_last_location = UNKNOWN_LOCATION;
@@ -964,13 +964,13 @@ gfc_warning (int opt, const char *gmsgid, va_list ap)
rich_location rich_loc (line_table, UNKNOWN_LOCATION);
bool fatal_errors = global_dc->m_fatal_errors;
pretty_printer *pp = global_dc->printer;
- output_buffer *tmp_buffer = pp->buffer;
+ output_buffer *tmp_buffer = pp_buffer (pp);
gfc_clear_pp_buffer (pp_warning_buffer);
if (buffered_p)
{
- pp->buffer = pp_warning_buffer;
+ pp_buffer (pp) = pp_warning_buffer;
global_dc->m_fatal_errors = false;
/* To prevent -fmax-errors= triggering. */
--werrorcount;
@@ -983,7 +983,7 @@ gfc_warning (int opt, const char *gmsgid, va_list ap)
if (buffered_p)
{
- pp->buffer = tmp_buffer;
+ pp_buffer (pp) = tmp_buffer;
global_dc->m_fatal_errors = fatal_errors;
warningcount_buffered = 0;
@@ -1461,13 +1461,13 @@ gfc_warning_check (void)
if (! gfc_output_buffer_empty_p (pp_warning_buffer))
{
pretty_printer *pp = global_dc->printer;
- output_buffer *tmp_buffer = pp->buffer;
- pp->buffer = pp_warning_buffer;
+ output_buffer *tmp_buffer = pp_buffer (pp);
+ pp_buffer (pp) = pp_warning_buffer;
pp_really_flush (pp);
warningcount += warningcount_buffered;
werrorcount += werrorcount_buffered;
gcc_assert (warningcount_buffered + werrorcount_buffered == 1);
- pp->buffer = tmp_buffer;
+ pp_buffer (pp) = tmp_buffer;
diagnostic_action_after_output (global_dc,
warningcount_buffered
? DK_WARNING : DK_ERROR);
@@ -1502,7 +1502,7 @@ gfc_error_opt (int opt, const char *gmsgid, va_list ap)
rich_location richloc (line_table, UNKNOWN_LOCATION);
bool fatal_errors = global_dc->m_fatal_errors;
pretty_printer *pp = global_dc->printer;
- output_buffer *tmp_buffer = pp->buffer;
+ output_buffer *tmp_buffer = pp_buffer (pp);
gfc_clear_pp_buffer (pp_error_buffer);
@@ -1512,7 +1512,7 @@ gfc_error_opt (int opt, const char *gmsgid, va_list ap)
save abort_on_error and restore it below. */
saved_abort_on_error = global_dc->m_abort_on_error;
global_dc->m_abort_on_error = false;
- pp->buffer = pp_error_buffer;
+ pp_buffer (pp) = pp_error_buffer;
global_dc->m_fatal_errors = false;
/* To prevent -fmax-errors= triggering, we decrease it before
report_diagnostic increases it. */
@@ -1524,7 +1524,7 @@ gfc_error_opt (int opt, const char *gmsgid, va_list ap)
if (buffered_p)
{
- pp->buffer = tmp_buffer;
+ pp_buffer (pp) = tmp_buffer;
global_dc->m_fatal_errors = fatal_errors;
global_dc->m_abort_on_error = saved_abort_on_error;
@@ -1609,12 +1609,12 @@ gfc_error_check (void)
{
error_buffer.flag = false;
pretty_printer *pp = global_dc->printer;
- output_buffer *tmp_buffer = pp->buffer;
- pp->buffer = pp_error_buffer;
+ output_buffer *tmp_buffer = pp_buffer (pp);
+ pp_buffer (pp) = pp_error_buffer;
pp_really_flush (pp);
++errorcount;
gcc_assert (gfc_output_buffer_empty_p (pp_error_buffer));
- pp->buffer = tmp_buffer;
+ pp_buffer (pp) = tmp_buffer;
diagnostic_action_after_output (global_dc, DK_ERROR);
diagnostic_check_max_errors (global_dc, true);
return true;
diff --git a/gcc/gimple-pretty-print.cc b/gcc/gimple-pretty-print.cc
index 285d76b3540..8294465fd9f 100644
--- a/gcc/gimple-pretty-print.cc
+++ b/gcc/gimple-pretty-print.cc
@@ -155,7 +155,7 @@ print_gimple_stmt (FILE *file, gimple *g, int spc, dump_flags_t flags)
{
pretty_printer pp;
pp_needs_newline (&pp) = true;
- pp.buffer->stream = file;
+ pp.set_output_stream (file);
pp_gimple_stmt_1 (&pp, g, spc, flags);
pp_newline_and_flush (&pp);
}
@@ -186,7 +186,7 @@ print_gimple_expr (FILE *file, gimple *g, int spc, dump_flags_t flags)
flags |= TDF_RHS_ONLY;
pretty_printer pp;
pp_needs_newline (&pp) = true;
- pp.buffer->stream = file;
+ pp.set_output_stream (file);
pp_gimple_stmt_1 (&pp, g, spc, flags);
pp_flush (&pp);
}
@@ -222,7 +222,7 @@ print_gimple_seq (FILE *file, gimple_seq seq, int spc, dump_flags_t flags)
{
pretty_printer pp;
pp_needs_newline (&pp) = true;
- pp.buffer->stream = file;
+ pp.set_output_stream (file);
dump_gimple_seq (&pp, seq, spc, flags);
pp_newline_and_flush (&pp);
}
@@ -2377,7 +2377,7 @@ dump_ssaname_info_to_file (FILE *file, tree node, int spc)
{
pretty_printer pp;
pp_needs_newline (&pp) = true;
- pp.buffer->stream = file;
+ pp.set_output_stream (file);
dump_ssaname_info (&pp, node, spc);
pp_flush (&pp);
}
@@ -3095,7 +3095,7 @@ gimple_dump_bb (FILE *file, basic_block bb, int indent, dump_flags_t flags)
{
pretty_printer pp;
pp_needs_newline (&pp) = true;
- pp.buffer->stream = file;
+ pp.set_output_stream (file);
gimple_dump_bb_buff (&pp, bb, indent, flags);
}
dump_gimple_bb_footer (file, bb, indent, flags);
diff --git a/gcc/graph.cc b/gcc/graph.cc
index 5689a64b20b..07da0798f51 100644
--- a/gcc/graph.cc
+++ b/gcc/graph.cc
@@ -310,7 +310,7 @@ void DEBUG_FUNCTION
print_graph_cfg (FILE *fp, struct function *fun)
{
pretty_printer graph_slim_pp;
- graph_slim_pp.buffer->stream = fp;
+ graph_slim_pp.set_output_stream (fp);
pretty_printer *const pp = &graph_slim_pp;
const char *funcname = function_name (fun);
pp_printf (pp, "subgraph \"cluster_%s\" {\n"
@@ -354,7 +354,7 @@ static void
start_graph_dump (FILE *fp, const char *base)
{
pretty_printer graph_slim_pp;
- graph_slim_pp.buffer->stream = fp;
+ graph_slim_pp.set_output_stream (fp);
pretty_printer *const pp = &graph_slim_pp;
pp_string (pp, "digraph \"");
pp_write_text_to_stream (pp);
diff --git a/gcc/jit/jit-recording.cc b/gcc/jit/jit-recording.cc
index 70830e34965..8a1ec2d9806 100644
--- a/gcc/jit/jit-recording.cc
+++ b/gcc/jit/jit-recording.cc
@@ -4410,7 +4410,7 @@ recording::function::dump_to_dot (const char *path)
return;
pretty_printer the_pp;
- the_pp.buffer->stream = fp;
+ the_pp.set_output_stream (fp);
pretty_printer *pp = &the_pp;
diff --git a/gcc/langhooks.cc b/gcc/langhooks.cc
index 94d1f4e5a2c..61f2b676256 100644
--- a/gcc/langhooks.cc
+++ b/gcc/langhooks.cc
@@ -466,8 +466,7 @@ lhd_print_error_function (diagnostic_context *context, const char *file,
diagnostic_set_last_function (context, diagnostic);
pp_newline_and_flush (context->printer);
- context->printer->prefix = old_prefix;
- free ((char*) new_prefix);
+ context->printer->set_prefix (old_prefix);
}
}
diff --git a/gcc/lto-wrapper.cc b/gcc/lto-wrapper.cc
index 6dcf8b469a3..84835a888ef 100644
--- a/gcc/lto-wrapper.cc
+++ b/gcc/lto-wrapper.cc
@@ -1361,11 +1361,11 @@ init_num_threads (void)
void
print_lto_docs_link ()
{
- bool print_url = global_dc->printer->url_format != URL_FORMAT_NONE;
+ bool print_url = global_dc->printer->supports_urls_p ();
const char *url = global_dc->make_option_url (OPT_flto);
pretty_printer pp;
- pp.url_format = URL_FORMAT_DEFAULT;
+ pp.set_url_format (URL_FORMAT_DEFAULT);
pp_string (&pp, "see the ");
if (print_url)
pp_begin_url (&pp, url);
diff --git a/gcc/pretty-print.cc b/gcc/pretty-print.cc
index eb59bf424b7..271cd650c4d 100644
--- a/gcc/pretty-print.cc
+++ b/gcc/pretty-print.cc
@@ -814,34 +814,35 @@ output_buffer::~output_buffer ()
/* Subroutine of pp_set_maximum_length. Set up PRETTY-PRINTER's
internal maximum characters per line. */
-static void
-pp_set_real_maximum_length (pretty_printer *pp)
+
+void
+pretty_printer::set_real_maximum_length ()
{
/* If we're told not to wrap lines then do the obvious thing. In case
we'll emit prefix only once per message, it is appropriate
not to increase unnecessarily the line-length cut-off. */
- if (!pp_is_wrapping_line (pp)
- || pp_prefixing_rule (pp) == DIAGNOSTICS_SHOW_PREFIX_ONCE
- || pp_prefixing_rule (pp) == DIAGNOSTICS_SHOW_PREFIX_NEVER)
- pp->maximum_length = pp_line_cutoff (pp);
+ if (!pp_is_wrapping_line (this)
+ || pp_prefixing_rule (this) == DIAGNOSTICS_SHOW_PREFIX_ONCE
+ || pp_prefixing_rule (this) == DIAGNOSTICS_SHOW_PREFIX_NEVER)
+ m_maximum_length = pp_line_cutoff (this);
else
{
- int prefix_length = pp->prefix ? strlen (pp->prefix) : 0;
+ int prefix_length = m_prefix ? strlen (m_prefix) : 0;
/* If the prefix is ridiculously too long, output at least
32 characters. */
- if (pp_line_cutoff (pp) - prefix_length < 32)
- pp->maximum_length = pp_line_cutoff (pp) + 32;
+ if (pp_line_cutoff (this) - prefix_length < 32)
+ m_maximum_length = pp_line_cutoff (this) + 32;
else
- pp->maximum_length = pp_line_cutoff (pp);
+ m_maximum_length = pp_line_cutoff (this);
}
}
-/* Clear PRETTY-PRINTER's output state. */
-static inline void
-pp_clear_state (pretty_printer *pp)
+/* Clear this pretty_printer's output state. */
+inline void
+pretty_printer::clear_state ()
{
- pp->emitted_prefix = false;
- pp_indentation (pp) = 0;
+ m_emitted_prefix = false;
+ pp_indentation (this) = 0;
}
/* Print X to PP in decimal. */
@@ -1006,7 +1007,7 @@ pp_wrap_text (pretty_printer *pp, const char *start, const char *end)
while (p != end && !ISBLANK (*p) && *p != '\n')
++p;
if (wrapping_line
- && p - start >= pp_remaining_character_count_for_line (pp))
+ && p - start >= pp->remaining_character_count_for_line ())
pp_newline (pp);
pp_append_text (pp, start, p);
start = p;
@@ -1101,7 +1102,7 @@ urlify_quoted_string (pretty_printer *pp,
size_t quoted_text_start_idx,
size_t quoted_text_end_idx)
{
- if (pp->url_format == URL_FORMAT_NONE)
+ if (!pp->supports_urls_p ())
return quoted_text_end_idx;
if (!urlifier)
return quoted_text_end_idx;
@@ -1125,7 +1126,7 @@ urlify_quoted_string (pretty_printer *pp,
/* ...with URLified version of the text. */
/* Begin URL. */
- switch (pp->url_format)
+ switch (pp->get_url_format ())
{
default:
case URL_FORMAT_NONE:
@@ -1305,7 +1306,8 @@ on_end_quote (pretty_printer *pp,
1 up to highest argument; each argument may only be used once.
A format string can have at most 30 arguments. */
-/* Formatting phases 1 and 2: render TEXT->format_spec plus
+/* Implementation of pp_format.
+ Formatting phases 1 and 2: render TEXT->format_spec plus
text->m_args_ptr into a series of chunks in pp_buffer (PP)->args[].
Phase 3 is in pp_output_formatted_text.
@@ -1322,27 +1324,22 @@ on_end_quote (pretty_printer *pp,
are stashed into the output_buffer's m_quotes for use in phase 3. */
void
-pp_format (pretty_printer *pp,
- text_info *text,
- const urlifier *urlifier)
+pretty_printer::format (text_info *text,
+ const urlifier *urlifier)
{
- output_buffer * const buffer = pp_buffer (pp);
- const char *p;
- const char **args;
- struct chunk_info *new_chunk_array;
+ output_buffer * const buffer = m_buffer;
- unsigned int curarg = 0, chunk = 0, argno;
- pp_wrapping_mode_t old_wrapping_mode;
- bool any_unnumbered = false, any_numbered = false;
+ unsigned int chunk = 0, argno;
const char **formatters[PP_NL_ARGMAX];
/* Allocate a new chunk structure. */
- new_chunk_array = XOBNEW (&buffer->chunk_obstack, struct chunk_info);
+ struct chunk_info *new_chunk_array
+ = XOBNEW (&buffer->chunk_obstack, struct chunk_info);
new_chunk_array->prev = buffer->cur_chunk_array;
new_chunk_array->m_quotes = nullptr;
buffer->cur_chunk_array = new_chunk_array;
- args = new_chunk_array->args;
+ const char **args = new_chunk_array->args;
/* Formatting phase 1: split up TEXT->format_spec into chunks in
pp_buffer (PP)->args[]. Even-numbered chunks are to be output
@@ -1352,7 +1349,9 @@ pp_format (pretty_printer *pp,
memset (formatters, 0, sizeof formatters);
- for (p = text->m_format_spec; *p; )
+ unsigned int curarg = 0;
+ bool any_unnumbered = false, any_numbered = false;
+ for (const char *p = text->m_format_spec; *p; )
{
while (*p != '\0' && *p != '%')
{
@@ -1377,8 +1376,7 @@ pp_format (pretty_printer *pp,
{
obstack_grow (&buffer->chunk_obstack,
open_quote, strlen (open_quote));
- const char *colorstr
- = colorize_start (pp_show_color (pp), "quote");
+ const char *colorstr = colorize_start (m_show_color, "quote");
obstack_grow (&buffer->chunk_obstack, colorstr, strlen (colorstr));
p++;
@@ -1388,9 +1386,9 @@ pp_format (pretty_printer *pp,
case '>':
{
- on_end_quote (pp, *buffer, chunk, urlifier);
+ on_end_quote (this, *buffer, chunk, urlifier);
- const char *colorstr = colorize_stop (pp_show_color (pp));
+ const char *colorstr = colorize_stop (m_show_color);
obstack_grow (&buffer->chunk_obstack, colorstr, strlen (colorstr));
}
/* FALLTHRU */
@@ -1402,7 +1400,7 @@ pp_format (pretty_printer *pp,
case '}':
{
- const char *endurlstr = get_end_url_string (pp);
+ const char *endurlstr = get_end_url_string (this);
obstack_grow (&buffer->chunk_obstack, endurlstr,
strlen (endurlstr));
}
@@ -1411,7 +1409,7 @@ pp_format (pretty_printer *pp,
case 'R':
{
- const char *colorstr = colorize_stop (pp_show_color (pp));
+ const char *colorstr = colorize_stop (m_show_color);
obstack_grow (&buffer->chunk_obstack, colorstr,
strlen (colorstr));
p++;
@@ -1520,7 +1518,7 @@ pp_format (pretty_printer *pp,
prefixing off. */
buffer->obstack = &buffer->chunk_obstack;
const int old_line_length = buffer->line_length;
- old_wrapping_mode = pp_set_verbatim_wrapping (pp);
+ const pp_wrapping_mode_t old_wrapping_mode = pp_set_verbatim_wrapping (this);
/* Second phase. Replace each formatter with the formatted text it
corresponds to. */
@@ -1533,6 +1531,8 @@ pp_format (pretty_printer *pp,
bool hash = false;
bool quote = false;
+ const char *p;
+
/* We do not attempt to enforce any ordering on the modifier
characters. */
@@ -1583,14 +1583,14 @@ pp_format (pretty_printer *pp,
if (quote)
{
- pp_begin_quote (pp, pp_show_color (pp));
+ pp_begin_quote (this, m_show_color);
on_begin_quote (*buffer, chunk, urlifier);
}
switch (*p)
{
case 'r':
- pp_string (pp, colorize_start (pp_show_color (pp),
+ pp_string (this, colorize_start (m_show_color,
va_arg (*text->m_args_ptr,
const char *)));
break;
@@ -1602,11 +1602,11 @@ pp_format (pretty_printer *pp,
"\x" prefix. Otherwise print them all unchanged. */
int chr = va_arg (*text->m_args_ptr, int);
if (ISPRINT (chr) || !quote)
- pp_character (pp, chr);
+ pp_character (this, chr);
else
{
const char str [2] = { chr, '\0' };
- pp_quoted_string (pp, str, 1);
+ pp_quoted_string (this, str, 1);
}
break;
}
@@ -1614,43 +1614,43 @@ pp_format (pretty_printer *pp,
case 'd':
case 'i':
if (wide)
- pp_wide_integer (pp, va_arg (*text->m_args_ptr, HOST_WIDE_INT));
+ pp_wide_integer (this, va_arg (*text->m_args_ptr, HOST_WIDE_INT));
else
- pp_integer_with_precision (pp, *text->m_args_ptr, precision,
+ pp_integer_with_precision (this, *text->m_args_ptr, precision,
int, "d");
break;
case 'o':
if (wide)
- pp_scalar (pp, "%" HOST_WIDE_INT_PRINT "o",
+ pp_scalar (this, "%" HOST_WIDE_INT_PRINT "o",
va_arg (*text->m_args_ptr, unsigned HOST_WIDE_INT));
else
- pp_integer_with_precision (pp, *text->m_args_ptr, precision,
+ pp_integer_with_precision (this, *text->m_args_ptr, precision,
unsigned, "o");
break;
case 's':
if (quote)
- pp_quoted_string (pp, va_arg (*text->m_args_ptr, const char *));
+ pp_quoted_string (this, va_arg (*text->m_args_ptr, const char *));
else
- pp_string (pp, va_arg (*text->m_args_ptr, const char *));
+ pp_string (this, va_arg (*text->m_args_ptr, const char *));
break;
case 'p':
- pp_pointer (pp, va_arg (*text->m_args_ptr, void *));
+ pp_pointer (this, va_arg (*text->m_args_ptr, void *));
break;
case 'u':
if (wide)
- pp_scalar (pp, HOST_WIDE_INT_PRINT_UNSIGNED,
+ pp_scalar (this, HOST_WIDE_INT_PRINT_UNSIGNED,
va_arg (*text->m_args_ptr, unsigned HOST_WIDE_INT));
else
- pp_integer_with_precision (pp, *text->m_args_ptr, precision,
+ pp_integer_with_precision (this, *text->m_args_ptr, precision,
unsigned, "u");
break;
case 'f':
- pp_double (pp, va_arg (*text->m_args_ptr, double));
+ pp_double (this, va_arg (*text->m_args_ptr, double));
break;
case 'Z':
@@ -1660,11 +1660,11 @@ pp_format (pretty_printer *pp,
for (unsigned i = 0; i < len; ++i)
{
- pp_scalar (pp, "%i", v[i]);
+ pp_scalar (this, "%i", v[i]);
if (i < len - 1)
{
- pp_comma (pp);
- pp_space (pp);
+ pp_comma (this);
+ pp_space (this);
}
}
break;
@@ -1672,10 +1672,10 @@ pp_format (pretty_printer *pp,
case 'x':
if (wide)
- pp_scalar (pp, HOST_WIDE_INT_PRINT_HEX,
+ pp_scalar (this, HOST_WIDE_INT_PRINT_HEX,
va_arg (*text->m_args_ptr, unsigned HOST_WIDE_INT));
else
- pp_integer_with_precision (pp, *text->m_args_ptr, precision,
+ pp_integer_with_precision (this, *text->m_args_ptr, precision,
unsigned, "x");
break;
@@ -1714,7 +1714,7 @@ pp_format (pretty_printer *pp,
Negative precision is treated as if it were omitted. */
size_t len = n < 0 ? strlen (s) : strnlen (s, n);
- pp_append_text (pp, s, s + len);
+ pp_append_text (this, s, s + len);
}
break;
@@ -1725,16 +1725,16 @@ pp_format (pretty_printer *pp,
= va_arg (*text->m_args_ptr, diagnostic_event_id_ptr);
gcc_assert (event_id->known_p ());
- pp_string (pp, colorize_start (pp_show_color (pp), "path"));
- pp_character (pp, '(');
- pp_decimal_int (pp, event_id->one_based ());
- pp_character (pp, ')');
- pp_string (pp, colorize_stop (pp_show_color (pp)));
+ pp_string (this, colorize_start (m_show_color, "path"));
+ pp_character (this, '(');
+ pp_decimal_int (this, event_id->one_based ());
+ pp_character (this, ')');
+ pp_string (this, colorize_stop (m_show_color));
}
break;
case '{':
- pp_begin_url (pp, va_arg (*text->m_args_ptr, const char *));
+ begin_url (va_arg (*text->m_args_ptr, const char *));
break;
default:
@@ -1746,18 +1746,18 @@ pp_format (pretty_printer *pp,
potentially disable printing of the closing quote
(e.g. when printing "'TYPEDEF' aka 'TYPE'" in the C family
of frontends). */
- gcc_assert (pp_format_decoder (pp));
- ok = pp_format_decoder (pp) (pp, text, p,
- precision, wide, plus, hash, &quote,
- formatters[argno]);
+ gcc_assert (pp_format_decoder (this));
+ ok = m_format_decoder (this, text, p,
+ precision, wide, plus, hash, &quote,
+ formatters[argno]);
gcc_assert (ok);
}
}
if (quote)
{
- on_end_quote (pp, *buffer, chunk, urlifier);
- pp_end_quote (pp, pp_show_color (pp));
+ on_end_quote (this, *buffer, chunk, urlifier);
+ pp_end_quote (this, m_show_color);
}
obstack_1grow (&buffer->chunk_obstack, '\0');
@@ -1770,14 +1770,14 @@ pp_format (pretty_printer *pp,
/* If the client supplied a postprocessing object, call its "handle"
hook here. */
- if (pp->m_format_postprocessor)
- pp->m_format_postprocessor->handle (pp);
+ if (m_format_postprocessor)
+ m_format_postprocessor->handle (this);
/* Revert to normal obstack and wrapping mode. */
buffer->obstack = &buffer->formatted_obstack;
buffer->line_length = old_line_length;
- pp_wrapping_mode (pp) = old_wrapping_mode;
- pp_clear_state (pp);
+ pp_wrapping_mode (this) = old_wrapping_mode;
+ clear_state ();
}
struct auto_obstack
@@ -1923,7 +1923,7 @@ pp_output_formatted_text (pretty_printer *pp,
/* If we have any deferred urlification, handle it now. */
if (urlifier
- && pp->url_format != URL_FORMAT_NONE
+ && pp->supports_urls_p ()
&& buffer->cur_chunk_array->m_quotes
&& buffer->cur_chunk_array->m_quotes->has_phase_3_quotes_p ())
buffer->cur_chunk_array->m_quotes->handle_phase_3 (pp, *urlifier);
@@ -1959,8 +1959,8 @@ pp_format_verbatim (pretty_printer *pp, text_info *text)
void
pp_flush (pretty_printer *pp)
{
- pp_clear_state (pp);
- if (!pp->buffer->flush_p)
+ pp->clear_state ();
+ if (!pp_buffer (pp)->flush_p)
return;
pp_write_text_to_stream (pp);
fflush (pp_buffer (pp)->stream);
@@ -1971,7 +1971,7 @@ pp_flush (pretty_printer *pp)
void
pp_really_flush (pretty_printer *pp)
{
- pp_clear_state (pp);
+ pp->clear_state ();
pp_write_text_to_stream (pp);
fflush (pp_buffer (pp)->stream);
}
@@ -1983,7 +1983,7 @@ void
pp_set_line_maximum_length (pretty_printer *pp, int length)
{
pp_line_cutoff (pp) = length;
- pp_set_real_maximum_length (pp);
+ pp->set_real_maximum_length ();
}
/* Clear PRETTY-PRINTER output area text info. */
@@ -1999,13 +1999,13 @@ pp_clear_output_area (pretty_printer *pp)
will eventually be free-ed. */
void
-pp_set_prefix (pretty_printer *pp, char *prefix)
+pretty_printer::set_prefix (char *prefix)
{
- free (pp->prefix);
- pp->prefix = prefix;
- pp_set_real_maximum_length (pp);
- pp->emitted_prefix = false;
- pp_indentation (pp) = 0;
+ free (m_prefix);
+ m_prefix = prefix;
+ set_real_maximum_length ();
+ m_emitted_prefix = false;
+ pp_indentation (this) = 0;
}
/* Take ownership of PP's prefix, setting it to NULL.
@@ -2015,8 +2015,8 @@ pp_set_prefix (pretty_printer *pp, char *prefix)
char *
pp_take_prefix (pretty_printer *pp)
{
- char *result = pp->prefix;
- pp->prefix = NULL;
+ char *result = pp->m_prefix;
+ pp->m_prefix = nullptr;
return result;
}
@@ -2024,39 +2024,39 @@ pp_take_prefix (pretty_printer *pp)
void
pp_destroy_prefix (pretty_printer *pp)
{
- if (pp->prefix != NULL)
+ if (pp->m_prefix)
{
- free (pp->prefix);
- pp->prefix = NULL;
+ free (pp->m_prefix);
+ pp->m_prefix = nullptr;
}
}
-/* Write out PRETTY-PRINTER's prefix. */
+/* Write out this pretty_printer's prefix. */
void
-pp_emit_prefix (pretty_printer *pp)
+pretty_printer::emit_prefix ()
{
- if (pp->prefix != NULL)
+ if (m_prefix)
{
- switch (pp_prefixing_rule (pp))
+ switch (pp_prefixing_rule (this))
{
default:
case DIAGNOSTICS_SHOW_PREFIX_NEVER:
break;
case DIAGNOSTICS_SHOW_PREFIX_ONCE:
- if (pp->emitted_prefix)
+ if (m_emitted_prefix)
{
- pp_indent (pp);
+ pp_indent (this);
break;
}
- pp_indentation (pp) += 3;
+ pp_indentation (this) += 3;
/* Fall through. */
case DIAGNOSTICS_SHOW_PREFIX_EVERY_LINE:
{
- int prefix_length = strlen (pp->prefix);
- pp_append_r (pp, pp->prefix, prefix_length);
- pp->emitted_prefix = true;
+ int prefix_length = strlen (m_prefix);
+ pp_append_r (this, m_prefix, prefix_length);
+ m_emitted_prefix = true;
}
break;
}
@@ -2066,19 +2066,19 @@ pp_emit_prefix (pretty_printer *pp)
/* Construct a PRETTY-PRINTER of MAXIMUM_LENGTH characters per line. */
pretty_printer::pretty_printer (int maximum_length)
- : buffer (new (XCNEW (output_buffer)) output_buffer ()),
- prefix (),
- padding (pp_none),
- maximum_length (),
- indent_skip (),
- wrapping (),
- format_decoder (),
+ : m_buffer (new (XCNEW (output_buffer)) output_buffer ()),
+ m_prefix (nullptr),
+ m_padding (pp_none),
+ m_maximum_length (0),
+ m_indent_skip (0),
+ m_wrapping (),
+ m_format_decoder (nullptr),
m_format_postprocessor (NULL),
- emitted_prefix (),
- need_newline (),
- translate_identifiers (true),
- show_color (),
- url_format (URL_FORMAT_NONE),
+ m_emitted_prefix (false),
+ m_need_newline (false),
+ m_translate_identifiers (true),
+ m_show_color (false),
+ m_url_format (URL_FORMAT_NONE),
m_skipping_null_url (false)
{
pp_line_cutoff (this) = maximum_length;
@@ -2090,22 +2090,22 @@ pretty_printer::pretty_printer (int maximum_length)
/* Copy constructor for pretty_printer. */
pretty_printer::pretty_printer (const pretty_printer &other)
-: buffer (new (XCNEW (output_buffer)) output_buffer ()),
- prefix (),
- padding (other.padding),
- maximum_length (other.maximum_length),
- indent_skip (other.indent_skip),
- wrapping (other.wrapping),
- format_decoder (other.format_decoder),
+: m_buffer (new (XCNEW (output_buffer)) output_buffer ()),
+ m_prefix (nullptr),
+ m_padding (other.m_padding),
+ m_maximum_length (other.m_maximum_length),
+ m_indent_skip (other.m_indent_skip),
+ m_wrapping (other.m_wrapping),
+ m_format_decoder (other.m_format_decoder),
m_format_postprocessor (NULL),
- emitted_prefix (other.emitted_prefix),
- need_newline (other.need_newline),
- translate_identifiers (other.translate_identifiers),
- show_color (other.show_color),
- url_format (other.url_format),
+ m_emitted_prefix (other.m_emitted_prefix),
+ m_need_newline (other.m_need_newline),
+ m_translate_identifiers (other.m_translate_identifiers),
+ m_show_color (other.m_show_color),
+ m_url_format (other.m_url_format),
m_skipping_null_url (false)
{
- pp_line_cutoff (this) = maximum_length;
+ pp_line_cutoff (this) = m_maximum_length;
/* By default, we emit prefixes once per message. */
pp_prefixing_rule (this) = pp_prefixing_rule (&other);
pp_set_prefix (this, NULL);
@@ -2118,9 +2118,9 @@ pretty_printer::~pretty_printer ()
{
if (m_format_postprocessor)
delete m_format_postprocessor;
- buffer->~output_buffer ();
- XDELETE (buffer);
- free (prefix);
+ m_buffer->~output_buffer ();
+ XDELETE (m_buffer);
+ free (m_prefix);
}
/* Base class implementation of pretty_printer::clone vfunc. */
@@ -2142,7 +2142,7 @@ pp_append_text (pretty_printer *pp, const char *start, const char *end)
/* Emit prefix and skip whitespace if we're starting a new line. */
if (pp_buffer (pp)->line_length == 0)
{
- pp_emit_prefix (pp);
+ pp->emit_prefix ();
if (pp_is_wrapping_line (pp))
while (start != end && *start == ' ')
++start;
@@ -2169,12 +2169,11 @@ pp_last_position_in_text (const pretty_printer *pp)
/* Return the amount of characters PRETTY-PRINTER can accept to
make a full line. Meaningful only in line-wrapping mode. */
int
-pp_remaining_character_count_for_line (pretty_printer *pp)
+pretty_printer::remaining_character_count_for_line ()
{
- return pp->maximum_length - pp_buffer (pp)->line_length;
+ return m_maximum_length - pp_buffer (this)->line_length;
}
-
/* Format a message into BUFFER a la printf. */
void
pp_printf (pretty_printer *pp, const char *msg, ...)
@@ -2219,7 +2218,7 @@ pp_character (pretty_printer *pp, int c)
if (pp_is_wrapping_line (pp)
/* If printing UTF-8, don't wrap in the middle of a sequence. */
&& (((unsigned int) c) & 0xC0) != 0x80
- && pp_remaining_character_count_for_line (pp) <= 0)
+ && pp->remaining_character_count_for_line () <= 0)
{
pp_newline (pp);
if (ISSPACE (c))
@@ -2319,12 +2318,12 @@ pp_quoted_string (pretty_printer *pp, const char *str, size_t n /* = -1 */)
/* Maybe print out a whitespace if needed. */
void
-pp_maybe_space (pretty_printer *pp)
+pretty_printer::maybe_space ()
{
- if (pp->padding != pp_none)
+ if (m_padding != pp_none)
{
- pp_space (pp);
- pp->padding = pp_none;
+ pp_space (this);
+ m_padding = pp_none;
}
}
@@ -2625,28 +2624,28 @@ identifier_to_locale (const char *ident)
for the given URL. */
void
-pp_begin_url (pretty_printer *pp, const char *url)
+pretty_printer::begin_url (const char *url)
{
if (!url)
{
/* Handle null URL by skipping all output here,
and in the next pp_end_url. */
- pp->m_skipping_null_url = true;
+ m_skipping_null_url = true;
return;
}
- switch (pp->url_format)
+ switch (m_url_format)
{
case URL_FORMAT_NONE:
break;
case URL_FORMAT_ST:
- pp_string (pp, "\33]8;;");
- pp_string (pp, url);
- pp_string (pp, "\33\\");
+ pp_string (this, "\33]8;;");
+ pp_string (this, url);
+ pp_string (this, "\33\\");
break;
case URL_FORMAT_BEL:
- pp_string (pp, "\33]8;;");
- pp_string (pp, url);
- pp_string (pp, "\a");
+ pp_string (this, "\33]8;;");
+ pp_string (this, url);
+ pp_string (this, "\a");
break;
default:
gcc_unreachable ();
@@ -2659,7 +2658,7 @@ pp_begin_url (pretty_printer *pp, const char *url)
static const char *
get_end_url_string (pretty_printer *pp)
{
- switch (pp->url_format)
+ switch (pp->get_url_format ())
{
case URL_FORMAT_NONE:
return "";
@@ -2675,17 +2674,17 @@ get_end_url_string (pretty_printer *pp)
/* If URL-printing is enabled, write a "close URL" escape sequence to PP. */
void
-pp_end_url (pretty_printer *pp)
+pretty_printer::end_url ()
{
- if (pp->m_skipping_null_url)
+ if (m_skipping_null_url)
{
/* We gracefully handle pp_begin_url (NULL) by omitting output for
both begin and end. Here we handle the latter. */
- pp->m_skipping_null_url = false;
+ m_skipping_null_url = false;
return;
}
- if (pp->url_format != URL_FORMAT_NONE)
- pp_string (pp, get_end_url_string (pp));
+ if (m_url_format != URL_FORMAT_NONE)
+ pp_string (this, get_end_url_string (this));
}
#if CHECKING_P
@@ -2925,7 +2924,7 @@ class test_pretty_printer : public pretty_printer
int max_line_length)
{
pp_set_prefix (this, xstrdup ("PREFIX: "));
- wrapping.rule = rule;
+ pp_prefixing_rule (this) = rule;
pp_set_line_maximum_length (this, max_line_length);
}
};
@@ -3018,7 +3017,7 @@ test_urls ()
{
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_NONE;
+ pp.set_url_format (URL_FORMAT_NONE);
pp_begin_url (&pp, "http://example.com");
pp_string (&pp, "This is a link");
pp_end_url (&pp);
@@ -3028,7 +3027,7 @@ test_urls ()
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_ST;
+ pp.set_url_format (URL_FORMAT_ST);
pp_begin_url (&pp, "http://example.com");
pp_string (&pp, "This is a link");
pp_end_url (&pp);
@@ -3038,7 +3037,7 @@ test_urls ()
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_BEL;
+ pp.set_url_format (URL_FORMAT_BEL);
pp_begin_url (&pp, "http://example.com");
pp_string (&pp, "This is a link");
pp_end_url (&pp);
@@ -3054,7 +3053,7 @@ test_null_urls ()
{
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_NONE;
+ pp.set_url_format (URL_FORMAT_NONE);
pp_begin_url (&pp, nullptr);
pp_string (&pp, "This isn't a link");
pp_end_url (&pp);
@@ -3064,7 +3063,7 @@ test_null_urls ()
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_ST;
+ pp.set_url_format (URL_FORMAT_ST);
pp_begin_url (&pp, nullptr);
pp_string (&pp, "This isn't a link");
pp_end_url (&pp);
@@ -3074,7 +3073,7 @@ test_null_urls ()
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_BEL;
+ pp.set_url_format (URL_FORMAT_BEL);
pp_begin_url (&pp, nullptr);
pp_string (&pp, "This isn't a link");
pp_end_url (&pp);
@@ -3122,7 +3121,7 @@ test_urlification ()
{
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_NONE;
+ pp.set_url_format (URL_FORMAT_NONE);
pp_printf_with_urlifier (&pp, &urlifier,
"foo %<-foption%> %<unrecognized%> bar");
ASSERT_STREQ ("foo `-foption' `unrecognized' bar",
@@ -3130,7 +3129,7 @@ test_urlification ()
}
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_ST;
+ pp.set_url_format (URL_FORMAT_ST);
pp_printf_with_urlifier (&pp, &urlifier,
"foo %<-foption%> %<unrecognized%> bar");
ASSERT_STREQ
@@ -3140,7 +3139,7 @@ test_urlification ()
}
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_BEL;
+ pp.set_url_format (URL_FORMAT_BEL);
pp_printf_with_urlifier (&pp, &urlifier,
"foo %<-foption%> %<unrecognized%> bar");
ASSERT_STREQ
@@ -3153,7 +3152,7 @@ test_urlification ()
/* Use of "%qs". */
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_ST;
+ pp.set_url_format (URL_FORMAT_ST);
pp_printf_with_urlifier (&pp, &urlifier,
"foo %qs %qs bar",
"-foption", "unrecognized");
@@ -3167,7 +3166,7 @@ test_urlification ()
a mixture of phase 1 and phase 2. */
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_ST;
+ pp.set_url_format (URL_FORMAT_ST);
pp_printf_with_urlifier (&pp, &urlifier,
"foo %<-f%s%> bar",
"option");
@@ -3180,7 +3179,7 @@ test_urlification ()
quoted region. */
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_ST;
+ pp.set_url_format (URL_FORMAT_ST);
pp_printf_with_urlifier (&pp, &urlifier,
"foo %<-f%sion%> bar %<-f%sion%> baz",
"opt", "opt");
@@ -3192,7 +3191,7 @@ test_urlification ()
/* Likewise. */
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_ST;
+ pp.set_url_format (URL_FORMAT_ST);
pp_printf_with_urlifier (&pp, &urlifier,
"foo %<%sption%> bar %<-f%sion%> baz",
"-fo", "opt");
@@ -3205,7 +3204,7 @@ test_urlification ()
between a mixture of phase 1 and multiple phase 2. */
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_ST;
+ pp.set_url_format (URL_FORMAT_ST);
pp_printf_with_urlifier (&pp, &urlifier,
"foo %<-f%s%s%> bar",
"opt", "ion");
@@ -3217,7 +3216,7 @@ test_urlification ()
/* Mixed usage of %< and %s with a prefix. */
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_ST;
+ pp.set_url_format (URL_FORMAT_ST);
pp_set_prefix (&pp, xstrdup ("PREFIX"));
pp_printf_with_urlifier (&pp, &urlifier,
"foo %<-f%s%> bar",
@@ -3230,7 +3229,7 @@ test_urlification ()
/* Example of mixed %< and %s with numbered args. */
{
pretty_printer pp;
- pp.url_format = URL_FORMAT_ST;
+ pp.set_url_format (URL_FORMAT_ST);
pp_printf_with_urlifier (&pp, &urlifier,
"foo %<-f%2$st%1$sn%> bar",
"io", "op");
diff --git a/gcc/pretty-print.h b/gcc/pretty-print.h
index 14a225eefe0..99e55dc6a3c 100644
--- a/gcc/pretty-print.h
+++ b/gcc/pretty-print.h
@@ -189,25 +189,12 @@ struct pp_wrapping_mode_t
int line_cutoff;
};
-/* Maximum characters per line in automatic line wrapping mode.
- Zero means don't wrap lines. */
-#define pp_line_cutoff(PP) (PP)->wrapping.line_cutoff
-
-/* Prefixing rule used in formatting a diagnostic message. */
-#define pp_prefixing_rule(PP) (PP)->wrapping.rule
-
-/* Get or set the wrapping mode as a single entity. */
-#define pp_wrapping_mode(PP) (PP)->wrapping
-
/* The type of a hook that formats client-specific data onto a pretty_printer.
A client-supplied formatter returns true if everything goes well,
otherwise it returns false. */
typedef bool (*printer_fn) (pretty_printer *, text_info *, const char *,
int, bool, bool, bool, bool *, const char **);
-/* Client supplied function used to decode formats. */
-#define pp_format_decoder(PP) (PP)->format_decoder
-
/* Base class for an optional client-supplied object for doing additional
processing between stages 2 and 3 of formatted printing. */
class format_postprocessor
@@ -218,31 +205,51 @@ class format_postprocessor
virtual void handle (pretty_printer *) = 0;
};
-/* TRUE if a newline character needs to be added before further
- formatting. */
-#define pp_needs_newline(PP) (PP)->need_newline
+inline bool & pp_needs_newline (pretty_printer *pp);
/* True if PRETTY-PRINTER is in line-wrapping mode. */
#define pp_is_wrapping_line(PP) (pp_line_cutoff (PP) > 0)
-/* The amount of whitespace to be emitted when starting a new line. */
-#define pp_indentation(PP) (PP)->indent_skip
-
-/* True if identifiers are translated to the locale character set on
- output. */
-#define pp_translate_identifiers(PP) (PP)->translate_identifiers
-
-/* True if colors should be shown. */
-#define pp_show_color(PP) (PP)->show_color
+inline output_buffer *&pp_buffer (pretty_printer *pp);
+inline output_buffer *pp_buffer (const pretty_printer *pp);
+inline const char *pp_get_prefix (const pretty_printer *pp);
+extern char *pp_take_prefix (pretty_printer *);
+extern void pp_destroy_prefix (pretty_printer *);
+inline int &pp_line_cutoff (pretty_printer *pp);
+inline diagnostic_prefixing_rule_t &pp_prefixing_rule (pretty_printer *pp);
+inline pp_wrapping_mode_t &pp_wrapping_mode (pretty_printer *pp);
+inline int & pp_indentation (pretty_printer *pp);
+inline bool & pp_translate_identifiers (pretty_printer *pp);
+inline bool & pp_show_color (pretty_printer *pp);
+inline printer_fn &pp_format_decoder (pretty_printer *pp);
+inline format_postprocessor *& pp_format_postprocessor (pretty_printer *pp);
class urlifier;
/* The data structure that contains the bare minimum required to do
- proper pretty-printing. Clients may derived from this structure
+ proper pretty-printing. Clients may derive from this structure
and add additional fields they need. */
class pretty_printer
{
public:
+ friend inline output_buffer *&pp_buffer (pretty_printer *pp);
+ friend inline output_buffer *pp_buffer (const pretty_printer *pp);
+ friend inline const char *pp_get_prefix (const pretty_printer *pp);
+ friend char *pp_take_prefix (pretty_printer *);
+ friend void pp_destroy_prefix (pretty_printer *);
+ friend inline int &pp_line_cutoff (pretty_printer *pp);
+ friend inline diagnostic_prefixing_rule_t &
+ pp_prefixing_rule (pretty_printer *pp);
+ friend inline const diagnostic_prefixing_rule_t &
+ pp_prefixing_rule (const pretty_printer *pp);
+ friend inline pp_wrapping_mode_t &pp_wrapping_mode (pretty_printer *pp);
+ friend bool & pp_needs_newline (pretty_printer *pp);
+ friend int & pp_indentation (pretty_printer *pp);
+ friend bool & pp_translate_identifiers (pretty_printer *pp);
+ friend bool & pp_show_color (pretty_printer *pp);
+ friend printer_fn &pp_format_decoder (pretty_printer *pp);
+ friend format_postprocessor *& pp_format_postprocessor (pretty_printer *pp);
+
/* Default construct a pretty printer with specified
maximum line length cut off limit. */
explicit pretty_printer (int = 0);
@@ -252,25 +259,67 @@ public:
virtual pretty_printer *clone () const;
+ void set_output_stream (FILE *outfile)
+ {
+ m_buffer->stream = outfile;
+ }
+
+ void set_prefix (char *prefix);
+
+ void emit_prefix ();
+
+ void format (text_info *text,
+ const urlifier *urlifier);
+
+ void maybe_space ();
+
+ bool supports_urls_p () const { return m_url_format != URL_FORMAT_NONE; }
+ diagnostic_url_format get_url_format () const { return m_url_format; }
+ void set_url_format (diagnostic_url_format url_format)
+ {
+ m_url_format = url_format;
+ }
+
+ void begin_url (const char *url);
+ void end_url ();
+
+ /* Switch into verbatim mode and return the old mode. */
+ pp_wrapping_mode_t
+ set_verbatim_wrapping ()
+ {
+ const pp_wrapping_mode_t oldmode = pp_wrapping_mode (this);
+ pp_line_cutoff (this) = 0;
+ pp_prefixing_rule (this) = DIAGNOSTICS_SHOW_PREFIX_NEVER;
+ return oldmode;
+ }
+
+ void set_padding (pp_padding padding) { m_padding = padding; }
+ pp_padding get_padding () const { return m_padding; }
+
+ void clear_state ();
+ void set_real_maximum_length ();
+ int remaining_character_count_for_line ();
+
+private:
/* Where we print external representation of ENTITY. */
- output_buffer *buffer;
+ output_buffer *m_buffer;
/* The prefix for each new line. If non-NULL, this is "owned" by the
pretty_printer, and will eventually be free-ed. */
- char *prefix;
+ char *m_prefix;
/* Where to put whitespace around the entity being formatted. */
- pp_padding padding;
+ pp_padding m_padding;
/* The real upper bound of number of characters per line, taking into
account the case of a very very looong prefix. */
- int maximum_length;
+ int m_maximum_length;
/* Indentation count. */
- int indent_skip;
+ int m_indent_skip;
/* Current wrapping mode. */
- pp_wrapping_mode_t wrapping;
+ pp_wrapping_mode_t m_wrapping;
/* If non-NULL, this function formats a TEXT into the BUFFER. When called,
TEXT->format_spec points to a format code. FORMAT_DECODER should call
@@ -281,7 +330,7 @@ public:
returns, TEXT->format_spec should point to the last character processed.
The QUOTE and BUFFER_PTR are passed in, to allow for deferring-handling
of format codes (e.g. %H and %I in the C++ frontend). */
- printer_fn format_decoder;
+ printer_fn m_format_decoder;
/* If non-NULL, this is called by pp_format once after all format codes
have been processed, to allow for client-specific postprocessing.
@@ -290,28 +339,112 @@ public:
format_postprocessor *m_format_postprocessor;
/* Nonzero if current PREFIX was emitted at least once. */
- bool emitted_prefix;
+ bool m_emitted_prefix;
/* Nonzero means one should emit a newline before outputting anything. */
- bool need_newline;
+ bool m_need_newline;
/* Nonzero means identifiers are translated to the locale character
set on output. */
- bool translate_identifiers;
+ bool m_translate_identifiers;
/* Nonzero means that text should be colorized. */
- bool show_color;
+ bool m_show_color;
/* Whether URLs should be emitted, and which terminator to use. */
- diagnostic_url_format url_format;
+ diagnostic_url_format m_url_format;
- /* If true, then we've had a pp_begin_url (nullptr), and so the
- next pp_end_url should be a no-op. */
+ /* If true, then we've had a begin_url (nullptr), and so the
+ next end_url should be a no-op. */
bool m_skipping_null_url;
};
+inline output_buffer *&
+pp_buffer (pretty_printer *pp)
+{
+ return pp->m_buffer;
+}
+
+inline output_buffer *
+pp_buffer (const pretty_printer *pp)
+{
+ return pp->m_buffer;
+}
+
inline const char *
-pp_get_prefix (const pretty_printer *pp) { return pp->prefix; }
+pp_get_prefix (const pretty_printer *pp)
+{
+ return pp->m_prefix;
+}
+
+/* TRUE if a newline character needs to be added before further
+ formatting. */
+inline bool &
+pp_needs_newline (pretty_printer *pp)
+{
+ return pp->m_need_newline;
+}
+
+/* The amount of whitespace to be emitted when starting a new line. */
+inline int &
+pp_indentation (pretty_printer *pp)
+{
+ return pp->m_indent_skip;
+}
+
+/* True if identifiers are translated to the locale character set on
+ output. */
+inline bool &
+pp_translate_identifiers (pretty_printer *pp)
+{
+ return pp->m_translate_identifiers;
+}
+
+/* True if colors should be shown. */
+inline bool &
+pp_show_color (pretty_printer *pp)
+{
+ return pp->m_show_color;
+}
+
+inline printer_fn &
+pp_format_decoder (pretty_printer *pp)
+{
+ return pp->m_format_decoder;
+}
+
+inline format_postprocessor *&
+pp_format_postprocessor (pretty_printer *pp)
+{
+ return pp->m_format_postprocessor;
+}
+
+/* Maximum characters per line in automatic line wrapping mode.
+ Zero means don't wrap lines. */
+inline int &
+pp_line_cutoff (pretty_printer *pp)
+{
+ return pp->m_wrapping.line_cutoff;
+}
+
+/* Prefixing rule used in formatting a diagnostic message. */
+inline diagnostic_prefixing_rule_t &
+pp_prefixing_rule (pretty_printer *pp)
+{
+ return pp->m_wrapping.rule;
+}
+inline const diagnostic_prefixing_rule_t &
+pp_prefixing_rule (const pretty_printer *pp)
+{
+ return pp->m_wrapping.rule;
+}
+
+/* Get or set the wrapping mode as a single entity. */
+inline pp_wrapping_mode_t &
+pp_wrapping_mode (pretty_printer *pp)
+{
+ return pp->m_wrapping;
+}
#define pp_space(PP) pp_character (PP, ' ')
#define pp_left_paren(PP) pp_character (PP, '(')
@@ -375,17 +508,18 @@ pp_get_prefix (const pretty_printer *pp) { return pp->prefix; }
: (ID)))
-#define pp_buffer(PP) (PP)->buffer
-
extern void pp_set_line_maximum_length (pretty_printer *, int);
-extern void pp_set_prefix (pretty_printer *, char *);
-extern char *pp_take_prefix (pretty_printer *);
-extern void pp_destroy_prefix (pretty_printer *);
-extern int pp_remaining_character_count_for_line (pretty_printer *);
+inline void pp_set_prefix (pretty_printer *pp, char *prefix)
+{
+ pp->set_prefix (prefix);
+}
extern void pp_clear_output_area (pretty_printer *);
extern const char *pp_formatted_text (pretty_printer *);
extern const char *pp_last_position_in_text (const pretty_printer *);
-extern void pp_emit_prefix (pretty_printer *);
+inline void pp_emit_prefix (pretty_printer *pp)
+{
+ pp->emit_prefix ();
+}
extern void pp_append_text (pretty_printer *, const char *, const char *);
extern void pp_newline_and_flush (pretty_printer *);
extern void pp_newline_and_indent (pretty_printer *, int);
@@ -413,8 +547,11 @@ extern void pp_verbatim (pretty_printer *, const char *, ...)
ATTRIBUTE_GCC_PPDIAG(2,3);
extern void pp_flush (pretty_printer *);
extern void pp_really_flush (pretty_printer *);
-extern void pp_format (pretty_printer *, text_info *,
- const urlifier * = nullptr);
+inline void pp_format (pretty_printer *pp, text_info *text,
+ const urlifier *urlifier = nullptr)
+{
+ pp->format (text, urlifier);
+}
extern void pp_output_formatted_text (pretty_printer *,
const urlifier * = nullptr);
extern void pp_format_verbatim (pretty_printer *, text_info *);
@@ -429,24 +566,32 @@ extern void pp_write_text_to_stream (pretty_printer *);
extern void pp_write_text_as_dot_label_to_stream (pretty_printer *, bool);
extern void pp_write_text_as_html_like_dot_to_stream (pretty_printer *pp);
-extern void pp_maybe_space (pretty_printer *);
+inline void pp_maybe_space (pretty_printer *pp)
+{
+ pp->maybe_space ();
+}
extern void pp_begin_quote (pretty_printer *, bool);
extern void pp_end_quote (pretty_printer *, bool);
-extern void pp_begin_url (pretty_printer *pp, const char *url);
-extern void pp_end_url (pretty_printer *pp);
+inline void
+pp_begin_url (pretty_printer *pp, const char *url)
+{
+ pp->begin_url (url);
+}
+
+inline void
+pp_end_url (pretty_printer *pp)
+{
+ pp->end_url ();
+}
/* Switch into verbatim mode and return the old mode. */
inline pp_wrapping_mode_t
-pp_set_verbatim_wrapping_ (pretty_printer *pp)
+pp_set_verbatim_wrapping (pretty_printer *pp)
{
- pp_wrapping_mode_t oldmode = pp_wrapping_mode (pp);
- pp_line_cutoff (pp) = 0;
- pp_prefixing_rule (pp) = DIAGNOSTICS_SHOW_PREFIX_NEVER;
- return oldmode;
+ return pp->set_verbatim_wrapping ();
}
-#define pp_set_verbatim_wrapping(PP) pp_set_verbatim_wrapping_ (PP)
extern const char *identifier_to_locale (const char *);
extern void *(*identifier_to_locale_alloc) (size_t);
diff --git a/gcc/print-rtl.cc b/gcc/print-rtl.cc
index ecb689f56a9..69c2e196e04 100644
--- a/gcc/print-rtl.cc
+++ b/gcc/print-rtl.cc
@@ -2070,7 +2070,7 @@ void
dump_value_slim (FILE *f, const_rtx x, int verbose)
{
pretty_printer rtl_slim_pp;
- rtl_slim_pp.buffer->stream = f;
+ rtl_slim_pp.set_output_stream (f);
print_value (&rtl_slim_pp, x, verbose);
pp_flush (&rtl_slim_pp);
}
@@ -2081,7 +2081,7 @@ void
dump_insn_slim (FILE *f, const rtx_insn *x)
{
pretty_printer rtl_slim_pp;
- rtl_slim_pp.buffer->stream = f;
+ rtl_slim_pp.set_output_stream (f);
print_insn_with_notes (&rtl_slim_pp, x);
pp_flush (&rtl_slim_pp);
}
@@ -2095,7 +2095,7 @@ dump_rtl_slim (FILE *f, const rtx_insn *first, const rtx_insn *last,
{
const rtx_insn *insn, *tail;
pretty_printer rtl_slim_pp;
- rtl_slim_pp.buffer->stream = f;
+ rtl_slim_pp.set_output_stream (f);
tail = last ? NEXT_INSN (last) : NULL;
for (insn = first;
diff --git a/gcc/print-tree.cc b/gcc/print-tree.cc
index 4e1acf04d44..0dda09a99e3 100644
--- a/gcc/print-tree.cc
+++ b/gcc/print-tree.cc
@@ -955,7 +955,7 @@ print_node (FILE *file, const char *prefix, tree node, int indent,
fprintf (file, "def_stmt ");
{
pretty_printer pp;
- pp.buffer->stream = file;
+ pp.set_output_stream (file);
pp_gimple_stmt_1 (&pp, SSA_NAME_DEF_STMT (node), indent + 4,
TDF_NONE);
pp_flush (&pp);
diff --git a/gcc/sched-rgn.cc b/gcc/sched-rgn.cc
index eb75d1bdb26..3d8cff76aaf 100644
--- a/gcc/sched-rgn.cc
+++ b/gcc/sched-rgn.cc
@@ -2882,7 +2882,7 @@ dump_rgn_dependencies_dot (FILE *file)
int bb;
pretty_printer pp;
- pp.buffer->stream = file;
+ pp.set_output_stream (file);
pp_printf (&pp, "digraph SchedDG {\n");
for (bb = 0; bb < current_nr_blocks; ++bb)
diff --git a/gcc/testsuite/gcc.dg/plugin/analyzer_cpython_plugin.c b/gcc/testsuite/gcc.dg/plugin/analyzer_cpython_plugin.c
index b53b347bb4f..d71b75f44cc 100644
--- a/gcc/testsuite/gcc.dg/plugin/analyzer_cpython_plugin.c
+++ b/gcc/testsuite/gcc.dg/plugin/analyzer_cpython_plugin.c
@@ -530,7 +530,7 @@ dump_refcnt_info (const hash_map<const region *, int> &region_to_refcnt,
pretty_printer pp;
pp_format_decoder (&pp) = default_tree_printer;
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = stderr;
+ pp.set_output_stream (stderr);
for (const auto &region_refcnt : region_to_refcnt)
{
diff --git a/gcc/text-art/canvas.cc b/gcc/text-art/canvas.cc
index 5bb33b2c6fa..8e5d96808d8 100644
--- a/gcc/text-art/canvas.cc
+++ b/gcc/text-art/canvas.cc
@@ -80,8 +80,8 @@ canvas::print_to_pp (pretty_printer *pp,
pp_string (pp, per_line_prefix);
pretty_printer line_pp;
- line_pp.show_color = pp->show_color;
- line_pp.url_format = pp->url_format;
+ pp_show_color (&line_pp) = pp_show_color (pp);
+ line_pp.set_url_format (pp->get_url_format ());
const int final_x_in_row = get_final_x_in_row (y);
for (int x = 0; x <= final_x_in_row; x++)
{
@@ -133,7 +133,7 @@ canvas::debug (bool styled) const
if (styled)
{
pp_show_color (&pp) = true;
- pp.url_format = determine_url_format (DIAGNOSTICS_URL_AUTO);
+ pp.set_url_format (determine_url_format (DIAGNOSTICS_URL_AUTO));
}
print_to_pp (&pp);
fprintf (stderr, "%s\n", pp_formatted_text (&pp));
@@ -383,7 +383,7 @@ test_canvas_urls ()
{
pretty_printer pp;
pp_show_color (&pp) = true;
- pp.url_format = URL_FORMAT_ST;
+ pp.set_url_format (URL_FORMAT_ST);
assert_canvas_streq (SELFTEST_LOCATION, canvas, &pp,
(/* Line 1. */
"\n"
@@ -400,7 +400,7 @@ test_canvas_urls ()
{
pretty_printer pp;
pp_show_color (&pp) = true;
- pp.url_format = URL_FORMAT_BEL;
+ pp.set_url_format (URL_FORMAT_BEL);
assert_canvas_streq (SELFTEST_LOCATION, canvas, &pp,
(/* Line 1. */
"\n"
diff --git a/gcc/text-art/dump.h b/gcc/text-art/dump.h
index e94f308f8ce..4659d1424b5 100644
--- a/gcc/text-art/dump.h
+++ b/gcc/text-art/dump.h
@@ -63,7 +63,7 @@ void dump_to_file (const T &obj, FILE *outf)
pp_format_decoder (&pp) = default_tree_printer;
if (outf == stderr)
pp_show_color (&pp) = pp_show_color (global_dc->printer);
- pp.buffer->stream = outf;
+ pp.set_output_stream (outf);
text_art::theme *theme = global_dc->get_diagram_theme ();
dump_to_pp (obj, theme, &pp);
diff --git a/gcc/text-art/selftests.cc b/gcc/text-art/selftests.cc
index 5b4679b0cda..2b113b6b017 100644
--- a/gcc/text-art/selftests.cc
+++ b/gcc/text-art/selftests.cc
@@ -71,7 +71,7 @@ selftest::assert_canvas_streq (const location &loc,
if (styled)
{
pp_show_color (&pp) = true;
- pp.url_format = URL_FORMAT_DEFAULT;
+ pp.set_url_format (URL_FORMAT_DEFAULT);
}
assert_canvas_streq (loc, canvas, &pp, expected_str);
}
diff --git a/gcc/text-art/style.cc b/gcc/text-art/style.cc
index 5c58d432cf4..e5e9bdfdf7b 100644
--- a/gcc/text-art/style.cc
+++ b/gcc/text-art/style.cc
@@ -232,7 +232,7 @@ style::print_changes (pretty_printer *pp,
{
if (!old_style.m_url.empty ())
pp_end_url (pp);
- if (pp->url_format != URL_FORMAT_NONE
+ if (pp->supports_urls_p ()
&& !new_style.m_url.empty ())
{
/* Adapted from pp_begin_url, but encoding the
@@ -241,7 +241,7 @@ style::print_changes (pretty_printer *pp,
pp_string (pp, "\33]8;;");
for (auto ch : new_style.m_url)
pp_unicode_character (pp, ch);
- switch (pp->url_format)
+ switch (pp->get_url_format ())
{
default:
case URL_FORMAT_NONE:
diff --git a/gcc/text-art/styled-string.cc b/gcc/text-art/styled-string.cc
index 78c65498921..988fe8a742a 100644
--- a/gcc/text-art/styled-string.cc
+++ b/gcc/text-art/styled-string.cc
@@ -566,7 +566,7 @@ styled_string::from_fmt_va (style_manager &sm,
text_info text (fmt, args, errno);
pretty_printer pp;
pp_show_color (&pp) = true;
- pp.url_format = URL_FORMAT_DEFAULT;
+ pp.set_url_format (URL_FORMAT_DEFAULT);
pp_format_decoder (&pp) = format_decoder;
pp_format (&pp, &text);
pp_output_formatted_text (&pp);
diff --git a/gcc/tree-diagnostic-path.cc b/gcc/tree-diagnostic-path.cc
index 0ad6c5beb81..f82ef305c06 100644
--- a/gcc/tree-diagnostic-path.cc
+++ b/gcc/tree-diagnostic-path.cc
@@ -2284,7 +2284,7 @@ control_flow_tests (const line_table_case &case_)
{
std::unique_ptr<pretty_printer> event_pp
= std::unique_ptr<pretty_printer> (global_dc->printer->clone ());
- pp_show_color (event_pp) = 0;
+ pp_show_color (event_pp.get ()) = false;
test_control_flow_1 (case_, event_pp.get ());
test_control_flow_2 (case_, event_pp.get ());
diff --git a/gcc/tree-loop-distribution.cc b/gcc/tree-loop-distribution.cc
index 83324086c85..f87393ee94d 100644
--- a/gcc/tree-loop-distribution.cc
+++ b/gcc/tree-loop-distribution.cc
@@ -347,7 +347,7 @@ dot_rdg_1 (FILE *file, struct graph *rdg)
int i;
pretty_printer pp;
pp_needs_newline (&pp) = false;
- pp.buffer->stream = file;
+ pp.set_output_stream (file);
fprintf (file, "digraph RDG {\n");
diff --git a/gcc/tree-pretty-print.cc b/gcc/tree-pretty-print.cc
index 601cf215ca8..4bb946bb0e8 100644
--- a/gcc/tree-pretty-print.cc
+++ b/gcc/tree-pretty-print.cc
@@ -4814,7 +4814,7 @@ maybe_init_pretty_print (FILE *file)
pp_translate_identifiers (tree_pp) = false;
}
- tree_pp->buffer->stream = file;
+ tree_pp->set_output_stream (file);
}
static void
diff --git a/gcc/value-range.cc b/gcc/value-range.cc
index 45400306d64..05cb308e682 100644
--- a/gcc/value-range.cc
+++ b/gcc/value-range.cc
@@ -284,7 +284,7 @@ vrange::dump (FILE *file) const
{
pretty_printer pp;
pp_needs_newline (&pp) = true;
- pp.buffer->stream = file;
+ pp.set_output_stream (file);
vrange_printer vrange_pp (&pp);
this->accept (vrange_pp);
pp_flush (&pp);
@@ -297,7 +297,7 @@ irange_bitmask::dump (FILE *file) const
pretty_printer pp;
pp_needs_newline (&pp) = true;
- pp.buffer->stream = file;
+ pp.set_output_stream (file);
pp_string (&pp, "MASK ");
unsigned len_mask, len_val;
if (print_hex_buf_size (m_mask, &len_mask)