blob: 5db02236c0f6ec26e3d320bf5989e1b2febd1598 [file] [log] [blame]
/* Helper code for graphviz output.
Copyright (C) 2019-2024 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 ();
void begin_td ();
void end_td ();
void begin_trtd ();
void end_tdtr ();
pretty_printer *get_pp () const { return m_pp; }
private:
pretty_printer *m_pp;
int m_indent;
};
#endif /* GCC_GRAPHVIZ_H */