1  /* Helper code for graphviz output.
       2     Copyright (C) 2019-2023 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    void indent () { m_indent++; }
      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  
      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 */