Add pp_write_text_as_html_like_dot_to_stream
gcc/ChangeLog: * pretty-print.c (pp_write_text_as_html_like_dot_to_stream): New function. * pretty-print.h (pp_write_text_as_html_like_dot_to_stream): New decl. From-SVN: r279444
This commit is contained in:
parent
bb03700c9b
commit
a326a3dedb
@ -1,3 +1,9 @@
|
||||
2019-12-16 David Malcolm <dmalcolm@redhat.com>
|
||||
|
||||
* pretty-print.c (pp_write_text_as_html_like_dot_to_stream): New
|
||||
function.
|
||||
* pretty-print.h (pp_write_text_as_html_like_dot_to_stream): New decl.
|
||||
|
||||
2019-12-16 Segher Boessenkool <segher@kernel.crashing.org>
|
||||
|
||||
* config/rs6000/rs6000.md (movsi_to_cr_one): Use CR0_REGNO instead of
|
||||
|
@ -907,6 +907,54 @@ pp_write_text_as_dot_label_to_stream (pretty_printer *pp, bool for_record)
|
||||
pp_clear_output_area (pp);
|
||||
}
|
||||
|
||||
/* As pp_write_text_to_stream, but for GraphViz HTML-like strings.
|
||||
|
||||
Flush the formatted text of pretty-printer PP onto the attached stream,
|
||||
escaping these characters
|
||||
" & < >
|
||||
using XML escape sequences.
|
||||
|
||||
http://www.graphviz.org/doc/info/lang.html#html states:
|
||||
special XML escape sequences for ", &, <, and > may be necessary in
|
||||
order to embed these characters in attribute values or raw text
|
||||
This doesn't list "'" (which would normally be escaped in XML
|
||||
as "'" or in HTML as "'");.
|
||||
|
||||
Experiments show that escaping "'" doesn't seem to be necessary. */
|
||||
|
||||
void
|
||||
pp_write_text_as_html_like_dot_to_stream (pretty_printer *pp)
|
||||
{
|
||||
const char *text = pp_formatted_text (pp);
|
||||
const char *p = text;
|
||||
FILE *fp = pp_buffer (pp)->stream;
|
||||
|
||||
for (;*p; p++)
|
||||
{
|
||||
switch (*p)
|
||||
{
|
||||
case '"':
|
||||
fputs (""", fp);
|
||||
break;
|
||||
case '&':
|
||||
fputs ("&", fp);
|
||||
break;
|
||||
case '<':
|
||||
fputs ("<", fp);
|
||||
break;
|
||||
case '>':
|
||||
fputs (">",fp);
|
||||
break;
|
||||
|
||||
default:
|
||||
fputc (*p, fp);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
pp_clear_output_area (pp);
|
||||
}
|
||||
|
||||
/* Wrap a text delimited by START and END into PRETTY-PRINTER. */
|
||||
static void
|
||||
pp_wrap_text (pretty_printer *pp, const char *start, const char *end)
|
||||
|
@ -393,8 +393,11 @@ extern void pp_indent (pretty_printer *);
|
||||
extern void pp_newline (pretty_printer *);
|
||||
extern void pp_character (pretty_printer *, int);
|
||||
extern void pp_string (pretty_printer *, const char *);
|
||||
|
||||
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 *);
|
||||
|
||||
extern void pp_begin_quote (pretty_printer *, bool);
|
||||
|
Loading…
Reference in New Issue
Block a user