annotate gcc/graphviz.cc @ 158:494b0b89df80 default tip

...
author Shinji KONO <kono@ie.u-ryukyu.ac.jp>
date Mon, 25 May 2020 18:13:55 +0900
parents 1830386684a0
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
145
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
1 /* Helper code for graphviz output.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
2 Copyright (C) 2019-2020 Free Software Foundation, Inc.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
3 Contributed by David Malcolm <dmalcolm@redhat.com>.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
4
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
5 This file is part of GCC.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
6
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
7 GCC is free software; you can redistribute it and/or modify it
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
8 under the terms of the GNU General Public License as published by
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
9 the Free Software Foundation; either version 3, or (at your option)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
10 any later version.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
11
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
12 GCC is distributed in the hope that it will be useful, but
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
13 WITHOUT ANY WARRANTY; without even the implied warranty of
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
15 General Public License for more details.
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
16
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
17 You should have received a copy of the GNU General Public License
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
18 along with GCC; see the file COPYING3. If not see
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
19 <http://www.gnu.org/licenses/>. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
20
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
21 #include "config.h"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
22 #include "system.h"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
23 #include "coretypes.h"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
24 #include "graphviz.h"
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
25
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
26 /* graphviz_out's ctor, wrapping PP. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
27
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
28 graphviz_out::graphviz_out (pretty_printer *pp)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
29 : m_pp (pp),
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
30 m_indent (0)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
31 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
32 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
33
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
34 /* Formatted print of FMT. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
35
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
36 void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
37 graphviz_out::print (const char *fmt, ...)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
38 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
39 text_info text;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
40 va_list ap;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
41
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
42 va_start (ap, fmt);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
43 text.err_no = errno;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
44 text.args_ptr = &ap;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
45 text.format_spec = fmt;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
46 pp_format (m_pp, &text);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
47 pp_output_formatted_text (m_pp);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
48 va_end (ap);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
49 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
50
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
51 /* Formatted print of FMT. The text is indented by the current
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
52 indent, and a newline is added. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
53
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
54 void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
55 graphviz_out::println (const char *fmt, ...)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
56 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
57 text_info text;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
58 va_list ap;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
59
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
60 write_indent ();
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
61
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
62 va_start (ap, fmt);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
63 text.err_no = errno;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
64 text.args_ptr = &ap;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
65 text.format_spec = fmt;
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
66 pp_format (m_pp, &text);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
67 pp_output_formatted_text (m_pp);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
68 va_end (ap);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
69
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
70 pp_newline (m_pp);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
71 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
72
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
73 /* Print the current indent to the underlying pp. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
74
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
75 void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
76 graphviz_out::write_indent ()
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
77 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
78 for (int i = 0; i < m_indent * 2; ++i)
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
79 pp_space (m_pp);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
80 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
81
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
82 /* Write the start of an HTML-like row via <TR><TD>, writing to the stream
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
83 so that followup text can be escaped. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
84
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
85 void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
86 graphviz_out::begin_tr ()
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
87 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
88 pp_string (m_pp, "<TR><TD ALIGN=\"LEFT\">");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
89 pp_write_text_to_stream (m_pp);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
90 }
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
91
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
92 /* Write the end of an HTML-like row via </TD></TR>, writing to the stream
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
93 so that followup text can be escaped. */
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
94
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
95 void
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
96 graphviz_out::end_tr ()
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
97 {
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
98 pp_string (m_pp, "</TD></TR>");
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
99 pp_write_text_to_stream (m_pp);
1830386684a0 gcc-9.2.0
anatofuz
parents:
diff changeset
100 }