Branch data Line data Source code
1 : : /* Helper code for graphviz output.
2 : : Copyright (C) 2019-2024 Free Software Foundation, Inc.
3 : : Contributed by David Malcolm <dmalcolm@redhat.com>.
4 : :
5 : : This file is part of GCC.
6 : :
7 : : GCC is free software; you can redistribute it and/or modify it
8 : : under the terms of the GNU General Public License as published by
9 : : the Free Software Foundation; either version 3, or (at your option)
10 : : any later version.
11 : :
12 : : GCC is distributed in the hope that it will be useful, but
13 : : WITHOUT ANY WARRANTY; without even the implied warranty of
14 : : MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 : : General Public License for more details.
16 : :
17 : : You should have received a copy of the GNU General Public License
18 : : along with GCC; see the file COPYING3. If not see
19 : : <http://www.gnu.org/licenses/>. */
20 : :
21 : : #ifndef GCC_GRAPHVIZ_H
22 : : #define GCC_GRAPHVIZ_H
23 : :
24 : : #include "pretty-print.h" /* for ATTRIBUTE_GCC_PPDIAG. */
25 : :
26 : : /* A class for writing .dot output to a pretty_printer with
27 : : indentation to show nesting. */
28 : :
29 : : class graphviz_out {
30 : : public:
31 : : graphviz_out (pretty_printer *pp);
32 : :
33 : : void print (const char *fmt, ...)
34 : : ATTRIBUTE_GCC_PPDIAG(2,3);
35 : : void println (const char *fmt, ...)
36 : : ATTRIBUTE_GCC_PPDIAG(2,3);
37 : :
38 : 1232 : void indent () { m_indent++; }
39 : 1232 : void outdent () { m_indent--; }
40 : :
41 : : void write_indent ();
42 : :
43 : : void begin_tr ();
44 : : void end_tr ();
45 : :
46 : : void begin_td ();
47 : : void end_td ();
48 : :
49 : : void begin_trtd ();
50 : : void end_tdtr ();
51 : :
52 : 3928 : pretty_printer *get_pp () const { return m_pp; }
53 : :
54 : : private:
55 : : pretty_printer *m_pp;
56 : : int m_indent;
57 : : };
58 : :
59 : : #endif /* GCC_GRAPHVIZ_H */
|