(root)/
bison-3.8.2/
src/
graphviz.h
       1  /* Output Graphviz specification of a state machine generated by Bison.
       2  
       3     Copyright (C) 2006, 2010-2015, 2018-2021 Free Software Foundation,
       4     Inc.
       5  
       6     This file is part of Bison, the GNU Compiler Compiler.
       7  
       8     This program is free software: you can redistribute it and/or modify
       9     it under the terms of the GNU General Public License as published by
      10     the Free Software Foundation, either version 3 of the License, or
      11     (at your option) any later version.
      12  
      13     This program is distributed in the hope that it will be useful,
      14     but WITHOUT ANY WARRANTY; without even the implied warranty of
      15     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      16     GNU General Public License for more details.
      17  
      18     You should have received a copy of the GNU General Public License
      19     along with this program.  If not, see <https://www.gnu.org/licenses/>.  */
      20  
      21  /* Written by Paul Eggert and Satya Kiran Popuri.  */
      22  
      23  #ifndef GRAPHVIZ_H_
      24  # define GRAPHVIZ_H_
      25  
      26  # include "state.h"
      27  
      28  /** Begin a Dot graph.
      29   *
      30   * \param fout   output stream.
      31   */
      32  void start_graph (FILE *fout);
      33  
      34  /** Output a Dot node.
      35   *
      36   * \param id     identifier of the node
      37   * \param label  human readable label of the node (no Dot escaping needed).
      38   * \param fout   output stream.
      39   */
      40  void output_node (int id, char const *label, FILE *fout);
      41  
      42  /** Output a Dot edge.
      43   * \param source       id of the source node
      44   * \param destination  id of the target node
      45   * \param label        human readable label of the edge
      46   *                     (no Dot escaping needed).  Can be 0.
      47   * \param style        Dot style of the edge (e.g., "dotted" or "solid").
      48   * \param fout         output stream.
      49   */
      50  void output_edge (int source, int destination, char const *label,
      51                    char const *style, FILE *fout);
      52  
      53  /** Output a reduction.
      54   * \param s            current state
      55   * \param reds         the set of reductions
      56   * \param fout         output stream.
      57   */
      58  void output_red (state const *s, reductions const *reds, FILE *fout);
      59  
      60  /** End a Dot graph.
      61   *
      62   * \param fout  output stream.
      63   */
      64  void finish_graph (FILE *fout);
      65  
      66  #endif /* ! GRAPHVIZ_H_ */