By popular demand, I also added a printAst to Expr.
authorTim King <taking@cs.nyu.edu>
Wed, 3 Feb 2010 19:41:14 +0000 (19:41 +0000)
committerTim King <taking@cs.nyu.edu>
Wed, 3 Feb 2010 19:41:14 +0000 (19:41 +0000)
src/expr/expr.cpp
src/expr/expr.h
src/expr/node.h

index 50c9edcd2c3433cc754bd0391a858d89b431777f..578eaf2f562caaf598dd8f2aca29ee36edd15d6b 100644 (file)
@@ -17,6 +17,8 @@
 #include "expr/node.h"
 #include "util/Assert.h"
 
+#include "util/output.h"
+
 namespace CVC4 {
 
 std::ostream& operator<<(std::ostream& out, const Expr& e) {
@@ -168,4 +170,14 @@ Expr BoolExpr::iteExpr(const Expr& then_e, const Expr& else_e) const {
   return d_em->mkExpr(ITE, *this, then_e, else_e);
 }
 
+void Expr::printAst(std::ostream & o, int indent) const{
+  getNode().printAst(o,indent);
+}
+
+void Expr::debugPrint(){
+  printAst(Warning());
+  Warning().flush();
+}
+
+
 } // End namespace CVC4
index 6f7330ed0b6a39a2ab1c4f18d800ed14ddafdbfd..8d0d4f347d096a8aa8402fd081451fa117bc5a31 100644 (file)
@@ -129,6 +129,24 @@ public:
    */
   ExprManager* getExprManager() const;
 
+  /**
+   * Very basic pretty printer for Expr.
+   * This is equivalent to calling e.getNode().printAst(...)
+   * @param o output stream to print to.
+   * @param indent number of spaces to indent the formula by.
+   */
+  void printAst(std::ostream & o, int indent = 0) const;
+  
+private:
+  
+  /**
+   * Pretty printer for use within gdb
+   * This is not intended to be used outside of gdb.
+   * This writes to the ostream Warning() and immediately flushes
+   * the ostream.
+   */
+  void debugPrint();
+
 protected:
 
   /**
index ab5007a34e0cf53698cbbb071492a726c8aa404b..46827d1963b017798df33450b7a76a244b966053 100644 (file)
@@ -154,9 +154,21 @@ public:
 
   bool isNull() const;
 
+   /**
+   * Very basic pretty printer for Node.
+   * @param o output stream to print to.
+   * @param indent number of spaces to indent the formula by.
+   */
   void printAst(std::ostream & o, int indent = 0) const;
   
 private:
+  
+  /**
+   * Pretty printer for use within gdb
+   * This is not intended to be used outside of gdb.
+   * This writes to the ostream Warning() and immediately flushes
+   * the ostream.
+   */
   void debugPrint();
 
 };/* class Node */