diff options
Diffstat (limited to 'gcc/graphviz.h')
-rw-r--r-- | gcc/graphviz.h | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/gcc/graphviz.h b/gcc/graphviz.h new file mode 100644 index 0000000..7f77167 --- /dev/null +++ b/gcc/graphviz.h @@ -0,0 +1,53 @@ +/* Helper code for graphviz output. + Copyright (C) 2019-2020 Free Software Foundation, Inc. + Contributed by David Malcolm <dmalcolm@redhat.com>. + +This file is part of GCC. + +GCC is free software; you can redistribute it and/or modify it +under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 3, or (at your option) +any later version. + +GCC is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. + +You should have received a copy of the GNU General Public License +along with GCC; see the file COPYING3. If not see +<http://www.gnu.org/licenses/>. */ + +#ifndef GCC_GRAPHVIZ_H +#define GCC_GRAPHVIZ_H + +#include "pretty-print.h" /* for ATTRIBUTE_GCC_PPDIAG. */ + +/* A class for writing .dot output to a pretty_printer with + indentation to show nesting. */ + +class graphviz_out { + public: + graphviz_out (pretty_printer *pp); + + void print (const char *fmt, ...) + ATTRIBUTE_GCC_PPDIAG(2,3); + void println (const char *fmt, ...) + ATTRIBUTE_GCC_PPDIAG(2,3); + + void indent () { m_indent++; } + void outdent () { m_indent--; } + + void write_indent (); + + void begin_tr (); + void end_tr (); + + pretty_printer *get_pp () const { return m_pp; } + + private: + pretty_printer *m_pp; + int m_indent; +}; + +#endif /* GCC_GRAPHVIZ_H */ |