1 /*********************                                                        */
2 /*! \file ast_printer.h
3  ** \verbatim
4  ** Top contributors (to current version):
5  **   Tim King, Morgan Deters
6  ** This file is part of the CVC4 project.
7  ** Copyright (c) 2009-2019 by the authors listed in the file AUTHORS
8  ** in the top-level source directory) and their institutional affiliations.
9  ** All rights reserved.  See the file COPYING in the top-level source
10  ** directory for licensing information.\endverbatim
11  **
12  ** \brief The pretty-printer interface for the AST output language
13  **
14  ** The pretty-printer interface for the AST output language.
15  **/
16 
17 #include "cvc4_private.h"
18 
19 #ifndef __CVC4__PRINTER__AST_PRINTER_H
20 #define __CVC4__PRINTER__AST_PRINTER_H
21 
22 #include <iostream>
23 
24 #include "printer/printer.h"
25 
26 namespace CVC4 {
27 namespace printer {
28 namespace ast {
29 
30 class AstPrinter : public CVC4::Printer {
31  public:
32   using CVC4::Printer::toStream;
33   void toStream(std::ostream& out,
34                 TNode n,
35                 int toDepth,
36                 bool types,
37                 size_t dag) const override;
38   void toStream(std::ostream& out,
39                 const Command* c,
40                 int toDepth,
41                 bool types,
42                 size_t dag) const override;
43   void toStream(std::ostream& out, const CommandStatus* s) const override;
44   void toStream(std::ostream& out, const Model& m) const override;
45 
46  private:
47   void toStream(std::ostream& out, TNode n, int toDepth, bool types) const;
48   void toStream(std::ostream& out,
49                 const Model& m,
50                 const Command* c) const override;
51 };/* class AstPrinter */
52 
53 }/* CVC4::printer::ast namespace */
54 }/* CVC4::printer namespace */
55 }/* CVC4 namespace */
56 
57 #endif /* __CVC4__PRINTER__AST_PRINTER_H */
58