Rename namespace CVC5 to cvc5. (#6258)
[cvc5.git] / src / smt / output_manager.h
1 /********************* */
2 /*! \file output_manager.h
3 ** \verbatim
4 ** Top contributors (to current version):
5 ** Abdalrhman Mohamed
6 ** This file is part of the CVC4 project.
7 ** Copyright (c) 2009-2021 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 output manager for the SmtEngine.
13 **
14 ** The output manager provides helper functions for printing commands
15 ** internally.
16 **/
17
18 #ifndef CVC4__SMT__OUTPUT_MANAGER_H
19 #define CVC4__SMT__OUTPUT_MANAGER_H
20
21 #include <ostream>
22
23 namespace cvc5 {
24
25 class Printer;
26 class SmtEngine;
27
28 /** This utility class provides helper functions for printing commands
29 * internally */
30 class OutputManager
31 {
32 public:
33 /** Constructor
34 *
35 * @param smt SMT engine to manage output for
36 */
37 explicit OutputManager(SmtEngine* smt);
38
39 /** Get the current printer based on the current options
40 *
41 * @return the current printer
42 */
43 const Printer& getPrinter() const;
44
45 /** Get the output stream that --dump=X should print to
46 *
47 * @return the output stream
48 */
49 std::ostream& getDumpOut() const;
50
51 private:
52 SmtEngine* d_smt;
53 };
54
55 } // namespace cvc5
56
57 #endif // CVC4__SMT__OUTPUT_MANAGER_H