1 /* Helper code for graphviz output. 2 Copyright (C) 2019-2020 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 indent()38 void indent () { m_indent++; } outdent()39 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 get_pp()52 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 */ 60