Shuffling around public vs. private headers
authorTim King <taking@google.com>
Wed, 30 Dec 2015 19:45:37 +0000 (11:45 -0800)
committerTim King <taking@google.com>
Wed, 30 Dec 2015 19:45:37 +0000 (11:45 -0800)
- Adding a script contrib/test_install_headers.h that tests whether one can include all cvc4_public headers. CVC4 can pass this test after this commit.
- Making lib/{clock_gettime.h,ffs.h,strtok_r.h} cvc4_private.
- Making prop/sat_solver_factory.h cvc4_private.
- Moving the expr iostream manipulators into their own files: expr_iomanip.{h,cpp}.
- Setting the generated *_options.h files back to being cvc4_private.
-- Removing the usage of options/expr_options.h from expr.h.
-- Removing the include of base_options.h from options.h.
- Cleaning up CPP macros in cvc4_public headers.
-- Changing the ROLL macro in floatingpoint.h into an inline function.
-- Removing the now unused flag -D__BUILDING_STATISTICS_FOR_EXPORT.

63 files changed:
contrib/test_install_headers.sh [new file with mode: 0755]
examples/hashsmt/sha1_collision.cpp
examples/hashsmt/sha1_inversion.cpp
examples/hashsmt/word.cpp
examples/nra-translate/normalize.cpp
examples/nra-translate/smt2info.cpp
examples/nra-translate/smt2todreal.cpp
examples/nra-translate/smt2toisat.cpp
examples/nra-translate/smt2tomathematica.cpp
examples/nra-translate/smt2toqepcad.cpp
examples/nra-translate/smt2toredlog.cpp
examples/sets-translate/sets_translate.cpp
examples/translator.cpp
src/compat/cvc3_compat.cpp
src/expr/Makefile.am
src/expr/expr_iomanip.cpp [new file with mode: 0644]
src/expr/expr_iomanip.h [new file with mode: 0644]
src/expr/expr_template.cpp
src/expr/expr_template.h
src/expr/node.h
src/expr/node_value.cpp
src/expr/statistics_registry.cpp
src/expr/statistics_registry.h
src/expr/type_node.cpp
src/expr/type_node.h
src/lib/clock_gettime.h
src/lib/ffs.h
src/lib/strtok_r.h
src/main/command_executor.cpp
src/main/command_executor_portfolio.cpp
src/main/driver_unified.cpp
src/main/interactive_shell.cpp
src/main/main.cpp
src/main/portfolio_util.cpp
src/main/portfolio_util.h
src/main/util.cpp
src/options/base_options_template.h
src/options/boolean_term_conversion_mode.h
src/options/bv_bitblast_mode.h
src/options/decision_mode.cpp
src/options/decision_mode.h
src/options/decision_weight.h
src/options/options.h
src/options/set_language.cpp
src/parser/parser.cpp
src/parser/parser_builder.cpp
src/printer/printer.cpp
src/printer/printer.h
src/proof/unsat_core.cpp
src/prop/minisat/minisat.cpp
src/prop/prop_engine.cpp
src/prop/sat_solver_factory.h
src/smt/smt_engine.cpp
src/smt/smt_options_handler.cpp
src/smt_util/command.cpp
src/smt_util/model.cpp
src/theory/quantifiers/term_database.cpp
src/util/floatingpoint.h
test/system/ouroborous.cpp
test/system/smt2_compliance.cpp
test/unit/main/interactive_shell_black.h
test/unit/parser/parser_black.h
test/unit/util/boolean_simplification_black.h

diff --git a/contrib/test_install_headers.sh b/contrib/test_install_headers.sh
new file mode 100755 (executable)
index 0000000..6f6855e
--- /dev/null
@@ -0,0 +1,36 @@
+#!/bin/bash
+# contrib/test_install_headers.sh
+# Tim King <taking@google.com> for the CVC4 project, 24 December 2015
+#
+# ./contrib/test_install_headers.sh <INSTALL>
+#
+# This files tests the completeness of the public headers for CVC4.
+# Any header marked by #include "cvc4_public.h" in either the builds/
+# or src/ directory is installed into the path INSTALL/include/cvc4 where
+# INSTALL is set using the --prefix=INSTALL flag at configure time.
+# This test uses find to attempt to include all of the headers in
+# INSTALL/include/cvc4 and compiles a simple cpp file.
+
+INSTALLATION=$1
+CXX=g++
+LDFLAGS=-lcln
+CXXFILE=test_cvc4_header_install.cpp
+OUTFILE=test_cvc4_header_install
+
+echo $INSTALLATION
+
+echo "Generating $CXXFILE"
+find $INSTALLATION/include/cvc4/ -name *.h -printf '%P\n' | \
+                awk '{ print "#include <cvc4/" $0 ">"}' > $CXXFILE
+echo "int main() { return 0; }" >> $CXXFILE
+
+echo "Compiling $CXXFILE into $OUTFILE"
+echo "$CXX -I$INSTALLATION/include -L$INSTALLATION/lib $LDFLAGS -o $OUTFILE $CXXFILE"
+$CXX -I$INSTALLATION/include -L$INSTALLATION/lib $LDFLAGS -o $OUTFILE $CXXFILE
+
+read -p "Do you want to delete $CXXFILE and $OUTFILE? [y/n]" yn
+case $yn in
+               [Nn]* ) exit;;
+               [Yy]* ) rm "$OUTFILE" "$CXXFILE";;
+               * ) echo "Did not get a yes or no answer. Exiting."; exit;;
+esac
index 9ed4424ba8ffb818539594ab9475bcc22129c8eb..984cbde137fac57ca980d59b9165671075e9c714 100644 (file)
@@ -28,6 +28,7 @@
 #include <sstream>
 #include <string>
 
+#include "expr/expr_iomanip.h"
 #include "options/language.h"
 #include "options/set_language.h"
 #include "sha1.hpp"
index 15c7d87284ed3f284205eb0b0f093883e29aa2eb..9aac7bbe0b35bf8eabc1c57aebbbd00ad97da1f9 100644 (file)
@@ -28,6 +28,7 @@
 #include <sstream>
 #include <string>
 
+#include "expr/expr_iomanip.h"
 #include "options/language.h"
 #include "options/set_language.h"
 #include "sha1.hpp"
index 2e638f64f4a3dfd76e48c6e3f7319159c2a53349..7aa37e91b999830edf4e5917eb3751d3d633f5e3 100644 (file)
 
 #include <vector>
 
+#include "expr/expr.h"
+#include "expr/expr_iomanip.h"
+#include "options/base_options.h"
+#include "options/language.h"
+#include "options/options.h"
+
 using namespace std;
 using namespace hashsmt;
 using namespace CVC4;
@@ -66,7 +72,7 @@ Word Word::concat(const Word words[], unsigned size) {
 }
 
 void Word::print(ostream& out) const {
-  out << CVC4::Expr::setdepth(-1) << d_expr;
+  out << CVC4::expr::ExprSetDepth(-1) << d_expr;
 }
 
 Word::Word(unsigned newSize, unsigned value) {
index db76390a7af7c291ad1284c88686bb14366fad7a..56f3262168ada5a2b77faaf088f88d54ba6eece4 100644 (file)
@@ -23,7 +23,9 @@
 #include <vector>
 
 #include "expr/expr.h"
+#include "expr/expr_iomanip.h"
 #include "options/language.h"
+#include "options/base_options.h"
 #include "options/options.h"
 #include "options/set_language.h"
 #include "parser/parser.h"
@@ -49,7 +51,7 @@ int main(int argc, char* argv[])
   ExprManager exprManager(options);
 
   cout << language::SetLanguage(language::output::LANG_SMTLIB_V2)
-       << Expr::setdepth(-1);
+       << expr::ExprSetDepth(-1);
 
   // Create the parser
   ParserBuilder parserBuilder(&exprManager, input, options);
index d59f9f4c43293ce4604b40ac618fcd40c2a9b613..c541a23fe715790569a2975436e6ad768a647846 100644 (file)
@@ -22,6 +22,7 @@
 #include <vector>
 
 #include "expr/expr.h"
+#include "options/base_options.h"
 #include "options/options.h"
 #include "parser/parser.h"
 #include "parser/parser_builder.h"
index 97c5c5d04da9961d33d77423c1c221be2e2c22b7..56f323812ba34780f1d7859aaf93af24f81cabac 100644 (file)
@@ -23,6 +23,8 @@
 #include <vector>
 
 #include "expr/expr.h"
+#include "expr/expr_iomanip.h"
+#include "options/base_options.h"
 #include "options/options.h"
 #include "parser/parser.h"
 #include "parser/parser_builder.h"
@@ -46,7 +48,7 @@ int main(int argc, char* argv[])
   options.set(outputLanguage, language::output::LANG_SMTLIB_V2);
   ExprManager exprManager(options);
 
-  cout << Expr::dag(0) << Expr::setdepth(-1);
+  cout << expr::ExprDag(0) << expr::ExprSetDepth(-1);
   
   // Create the parser
   ParserBuilder parserBuilder(&exprManager, input, options);
index 9c94cdd4325f08a2d97d5336cdeb105ed69241ae..8eb46dd2f2caac4ea10e218830977e19ba9e0509 100644 (file)
@@ -23,6 +23,7 @@
 #include <vector>
 
 #include "expr/expr.h"
+#include "options/base_options.h"
 #include "options/options.h"
 #include "parser/parser.h"
 #include "parser/parser_builder.h"
index 86aaf786fcd70c26023f9bc7affa6e194f01d7e7..0ad5bbab58e6aa6648a62f91c6f26890c37a95e6 100644 (file)
@@ -23,6 +23,7 @@
 #include <vector>
 
 #include "expr/expr.h"
+#include "options/base_options.h"
 #include "options/options.h"
 #include "parser/parser.h"
 #include "parser/parser_builder.h"
index 058fa8e0d3f50e2816c39501c490b8ec8f5f3275..c74b0a110b1d2f6ad81675683ce7d5ecfc02708f 100644 (file)
@@ -23,6 +23,7 @@
 #include <vector>
 
 #include "expr/expr.h"
+#include "options/base_options.h"
 #include "options/options.h"
 #include "parser/parser.h"
 #include "parser/parser_builder.h"
index 1ebd6ea594d45a7870a9dc879ba6612e7a7abbf5..7a6f87122839e47e09fbffdc5437a24714fdafbc 100644 (file)
@@ -23,6 +23,7 @@
 #include <vector>
 
 #include "expr/expr.h"
+#include "options/base_options.h"
 #include "options/options.h"
 #include "parser/parser.h"
 #include "parser/parser_builder.h"
index 7e17e68f42ac3b8a58050c13867ac42c11029ccf..aef3843f86d6f34af481afb4597ae0edde55e6ea 100644 (file)
@@ -24,6 +24,7 @@
 
 #include "expr/expr.h"
 #include "options/language.h"
+#include "options/base_options.h"
 #include "options/options.h"
 #include "options/set_language.h"
 #include "parser/parser.h"
index 7d5e912e77fb8746717e2fe1f1b7915c7ffcc536..248dadd5f711402671b973255c53d10857d59e87 100644 (file)
@@ -23,6 +23,8 @@
 #include <iostream>
 
 #include "expr/expr.h"
+#include "expr/expr_iomanip.h"
+#include "options/base_options.h"
 #include "options/language.h"
 #include "options/set_language.h"
 #include "parser/parser.h"
@@ -211,7 +213,7 @@ int main(int argc, char* argv[]) {
       switch(c) {
       case 1:
         ++files;
-        *out << Expr::dag(dag_thresh);
+        *out << expr::ExprDag(dag_thresh);
         readFile(optarg, (!strcmp(optarg, "-") && fromLang == input::LANG_AUTO) ? input::LANG_CVC4 : fromLang, toLang, expand_definitions, combine_assertions, out);
         break;
       case INPUT_LANG:
@@ -276,7 +278,7 @@ int main(int argc, char* argv[]) {
     }
 
     if(files == 0) {
-      *out << Expr::dag(dag_thresh);
+      *out << expr::ExprDag(dag_thresh);
       readFile("-", fromLang == input::LANG_AUTO ? input::LANG_CVC4 : fromLang, toLang, expand_definitions, combine_assertions, out);
       exit(0);
     }
index 3fa790f3eb5179e9a9cf394c9717dfd9f9b8546c..24c4d8112ac2fac80a0df490a80b237c174fe4bf 100644 (file)
 
 #include "base/exception.h"
 #include "base/output.h"
+#include "expr/expr_iomanip.h"
 #include "expr/kind.h"
 #include "expr/predicate.h"
 #include "expr/sexpr.h"
+#include "options/base_options.h"
 #include "options/expr_options.h"
 #include "options/parser_options.h"
 #include "options/set_language.h"
@@ -1560,8 +1562,8 @@ void ValidityChecker::printExpr(const Expr& e) {
 }
 
 void ValidityChecker::printExpr(const Expr& e, std::ostream& os) {
-  Expr::setdepth::Scope sd(os, -1);
-  Expr::printtypes::Scope pt(os, false);
+  CVC4::expr::ExprSetDepth::Scope sd(os, -1);
+  CVC4::expr::ExprPrintTypes::Scope pt(os, false);
   CVC4::language::SetLanguage::Scope sl(os, d_em->getOptions()[CVC4::options::outputLanguage]);
   os << e;
 }
index dc6ad5833bafecdc1c373365bc304f0ce3aa32ba..63f31ed679dcce18f43dd2f5bb9ae7e28b63d848 100644 (file)
@@ -32,6 +32,8 @@ libexpr_la_SOURCES = \
        chain.h \
        emptyset.cpp \
        emptyset.h \
+       expr_iomanip.cpp \
+       expr_iomanip.h \
        expr_manager_scope.h \
        expr_stream.h \
        kind_map.h \
diff --git a/src/expr/expr_iomanip.cpp b/src/expr/expr_iomanip.cpp
new file mode 100644 (file)
index 0000000..4c7ab3c
--- /dev/null
@@ -0,0 +1,160 @@
+/*********************                                                        */
+/*! \file expr_iomanip.cpp
+ ** \verbatim
+ ** Original author: Tim King
+ ** Major contributors: none
+ ** Minor contributors (to current version): none
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2015  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief Expr IO manipulation classes.
+ **
+ ** Expr IO manipulation classes.
+ **/
+
+#include "expr/expr_iomanip.h"
+
+#include <iomanip>
+#include <iostream>
+
+#include "options/options.h"
+#include "options/expr_options.h"
+
+namespace CVC4 {
+namespace expr {
+
+const int ExprSetDepth::s_iosIndex = std::ios_base::xalloc();
+const int ExprPrintTypes::s_iosIndex = std::ios_base::xalloc();
+const int ExprDag::s_iosIndex = std::ios_base::xalloc();
+
+
+
+ExprSetDepth::ExprSetDepth(long depth) : d_depth(depth) {}
+
+void ExprSetDepth::applyDepth(std::ostream& out) {
+  out.iword(s_iosIndex) = d_depth;
+}
+
+long ExprSetDepth::getDepth(std::ostream& out) {
+  long& l = out.iword(s_iosIndex);
+  if(l == 0) {
+    // set the default print depth on this ostream
+    if(not Options::isCurrentNull()) {
+      l = options::defaultExprDepth();
+    }
+    if(l == 0) {
+      // if called from outside the library, we may not have options
+      // available to us at this point (or perhaps the output language
+      // is not set in Options).  Default to something reasonable, but
+      // don't set "l" since that would make it "sticky" for this
+      // stream.
+      return s_defaultPrintDepth;
+    }
+  }
+  return l;
+}
+
+void ExprSetDepth::setDepth(std::ostream& out, long depth) {
+  out.iword(s_iosIndex) = depth;
+}
+
+
+ExprSetDepth::Scope::Scope(std::ostream& out, long depth)
+  : d_out(out), d_oldDepth(ExprSetDepth::getDepth(out))
+{
+  ExprSetDepth::setDepth(out, depth);
+}
+
+ExprSetDepth::Scope::~Scope() {
+  ExprSetDepth::setDepth(d_out, d_oldDepth);
+}
+
+
+ExprPrintTypes::ExprPrintTypes(bool printTypes) : d_printTypes(printTypes) {}
+
+void ExprPrintTypes::applyPrintTypes(std::ostream& out) {
+  out.iword(s_iosIndex) = d_printTypes;
+}
+
+bool ExprPrintTypes::getPrintTypes(std::ostream& out) {
+  return out.iword(s_iosIndex);
+}
+
+void ExprPrintTypes::setPrintTypes(std::ostream& out, bool printTypes) {
+  out.iword(s_iosIndex) = printTypes;
+}
+
+ExprPrintTypes::Scope::Scope(std::ostream& out, bool printTypes)
+  : d_out(out),
+    d_oldPrintTypes(ExprPrintTypes::getPrintTypes(out)) {
+  ExprPrintTypes::setPrintTypes(out, printTypes);
+}
+
+ExprPrintTypes::Scope::~Scope() {
+  ExprPrintTypes::setPrintTypes(d_out, d_oldPrintTypes);
+}
+
+ExprDag::ExprDag(bool dag) : d_dag(dag ? 1 : 0) {}
+
+ExprDag::ExprDag(int dag) : d_dag(dag < 0 ? 0 : dag) {}
+
+void ExprDag::applyDag(std::ostream& out) {
+  // (offset by one to detect whether default has been set yet)
+  out.iword(s_iosIndex) = static_cast<long>(d_dag) + 1;
+}
+
+size_t ExprDag::getDag(std::ostream& out) {
+  long& l = out.iword(s_iosIndex);
+  if(l == 0) {
+    // set the default dag setting on this ostream
+    // (offset by one to detect whether default has been set yet)
+    if(not Options::isCurrentNull()) {
+      l = options::defaultDagThresh() + 1;
+    }
+    if(l == 0) {
+      // if called from outside the library, we may not have options
+      // available to us at this point (or perhaps the output language
+      // is not set in Options).  Default to something reasonable, but
+      // don't set "l" since that would make it "sticky" for this
+      // stream.
+      return s_defaultDag + 1;
+    }
+  }
+  return static_cast<size_t>(l - 1);
+}
+
+void ExprDag::setDag(std::ostream& out, size_t dag) {
+  // (offset by one to detect whether default has been set yet)
+  out.iword(s_iosIndex) = static_cast<long>(dag) + 1;
+}
+
+ExprDag::Scope::Scope(std::ostream& out, size_t dag)
+  : d_out(out),
+    d_oldDag(ExprDag::getDag(out)) {
+  ExprDag::setDag(out, dag);
+}
+
+ExprDag::Scope::~Scope() {
+  ExprDag::setDag(d_out, d_oldDag);
+}
+
+std::ostream& operator<<(std::ostream& out, ExprDag d) {
+  d.applyDag(out);
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, ExprPrintTypes pt) {
+  pt.applyPrintTypes(out);
+  return out;
+}
+
+std::ostream& operator<<(std::ostream& out, ExprSetDepth sd) {
+  sd.applyDepth(out);
+  return out;
+}
+
+
+}/* namespace CVC4::expr */
+}/* namespace CVC4 */
diff --git a/src/expr/expr_iomanip.h b/src/expr/expr_iomanip.h
new file mode 100644 (file)
index 0000000..b3370e7
--- /dev/null
@@ -0,0 +1,239 @@
+/*********************                                                        */
+/*! \file expr_iomanip.h
+ ** \verbatim
+ ** Original author: Tim King
+ ** Major contributors: none
+ ** Minor contributors (to current version): none
+ ** This file is part of the CVC4 project.
+ ** Copyright (c) 2015  New York University and The University of Iowa
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief Expr IO manipulation classes.
+ **
+ ** Expr IO manipulation classes.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__EXPR__EXPR_IOMANIP_H
+#define __CVC4__EXPR__EXPR_IOMANIP_H
+
+#include <iosfwd>
+
+namespace CVC4 {
+namespace expr {
+
+/**
+ * IOStream manipulator to set the maximum depth of Exprs when
+ * pretty-printing.  -1 means print to any depth.  E.g.:
+ *
+ *   // let a, b, c, and d be VARIABLEs
+ *   Expr e = em->mkExpr(OR, a, b, em->mkExpr(AND, c, em->mkExpr(NOT, d)))
+ *   out << setdepth(3) << e;
+ *
+ * gives "(OR a b (AND c (NOT d)))", but
+ *
+ *   out << setdepth(1) << [same expr as above]
+ *
+ * gives "(OR a b (...))".
+ *
+ * The implementation of this class serves two purposes; it holds
+ * information about the depth setting (such as the index of the
+ * allocated word in ios_base), and serves also as the manipulator
+ * itself (as above).
+ */
+class CVC4_PUBLIC ExprSetDepth {
+public:
+
+  /**
+   * Construct a ExprSetDepth with the given depth.
+   */
+  ExprSetDepth(long depth);
+
+  void applyDepth(std::ostream& out);
+
+  static long getDepth(std::ostream& out);
+
+  static void setDepth(std::ostream& out, long depth);
+
+  /**
+   * Set the expression depth on the output stream for the current
+   * stack scope.  This makes sure the old depth is reset on the stream
+   * after normal OR exceptional exit from the scope, using the RAII
+   * C++ idiom.
+   */
+  class Scope {
+  public:
+    Scope(std::ostream& out, long depth);
+    ~Scope();
+
+  private:
+    std::ostream& d_out;
+    long d_oldDepth;
+  };/* class ExprSetDepth::Scope */
+
+ private:
+  /**
+   * The allocated index in ios_base for our depth setting.
+   */
+  static const int s_iosIndex;
+
+  /**
+   * The default depth to print, for ostreams that haven't yet had a
+   * setdepth() applied to them.
+   */
+  static const int s_defaultPrintDepth = -1;
+
+  /**
+   * When this manipulator is used, the depth is stored here.
+   */
+  long d_depth;
+};/* class ExprSetDepth */
+
+/**
+ * IOStream manipulator to print type ascriptions or not.
+ *
+ *   // let a, b, c, and d be variables of sort U
+ *   Expr e = em->mkExpr(OR, a, b, em->mkExpr(AND, c, em->mkExpr(NOT, d)))
+ *   out << e;
+ *
+ * gives "(OR a:U b:U (AND c:U (NOT d:U)))", but
+ */
+class CVC4_PUBLIC ExprPrintTypes {
+public:
+  /**
+   * Construct a ExprPrintTypes with the given setting.
+   */
+  ExprPrintTypes(bool printTypes);
+
+  void applyPrintTypes(std::ostream& out);
+
+  static bool getPrintTypes(std::ostream& out);
+
+  static void setPrintTypes(std::ostream& out, bool printTypes);
+
+  /**
+   * Set the print-types state on the output stream for the current
+   * stack scope.  This makes sure the old state is reset on the
+   * stream after normal OR exceptional exit from the scope, using the
+   * RAII C++ idiom.
+   */
+  class Scope {
+  public:
+    Scope(std::ostream& out, bool printTypes);
+    ~Scope();
+
+  private:
+    std::ostream& d_out;
+    bool d_oldPrintTypes;
+  };/* class ExprPrintTypes::Scope */
+
+ private:
+  /**
+   * The allocated index in ios_base for our setting.
+   */
+  static const int s_iosIndex;
+
+  /**
+   * When this manipulator is used, the setting is stored here.
+   */
+  bool d_printTypes;
+};/* class ExprPrintTypes */
+
+/**
+ * IOStream manipulator to print expressions as a dag (or not).
+ */
+class CVC4_PUBLIC ExprDag {
+public:
+  /**
+   * Construct a ExprDag with the given setting (dagification on or off).
+   */
+  explicit ExprDag(bool dag);
+
+  /**
+   * Construct a ExprDag with the given setting (letify only common
+   * subexpressions that appear more than 'dag' times).  dag <= 0 means
+   * don't dagify.
+   */
+  explicit ExprDag(int dag);
+
+  void applyDag(std::ostream& out);
+
+  static size_t getDag(std::ostream& out);
+
+  static void setDag(std::ostream& out, size_t dag);
+
+  /**
+   * Set the dag state on the output stream for the current
+   * stack scope.  This makes sure the old state is reset on the
+   * stream after normal OR exceptional exit from the scope, using the
+   * RAII C++ idiom.
+   */
+  class Scope {
+  public:
+    Scope(std::ostream& out, size_t dag);
+    ~Scope();
+
+  private:
+    std::ostream& d_out;
+    size_t d_oldDag;
+  };/* class ExprDag::Scope */
+
+ private:
+  /**
+   * The allocated index in ios_base for our setting.
+   */
+  static const int s_iosIndex;
+
+  /**
+   * The default setting, for ostreams that haven't yet had a
+   * dag() applied to them.
+   */
+  static const size_t s_defaultDag = 1;
+
+  /**
+   * When this manipulator is used, the setting is stored here.
+   */
+  size_t d_dag;
+};/* class ExprDag */
+
+/**
+ * Sets the default dag setting when pretty-printing a Expr to an ostream.
+ * Use like this:
+ *
+ *   // let out be an ostream, e an Expr
+ *   out << Expr::dag(true) << e << endl;
+ *
+ * The setting stays permanently (until set again) with the stream.
+ */
+std::ostream& operator<<(std::ostream& out, ExprDag d) CVC4_PUBLIC;
+
+
+/**
+ * Sets the default print-types setting when pretty-printing an Expr
+ * to an ostream.  Use like this:
+ *
+ *   // let out be an ostream, e an Expr
+ *   out << Expr::printtypes(true) << e << endl;
+ *
+ * The setting stays permanently (until set again) with the stream.
+ */
+std::ostream& operator<<(std::ostream& out, ExprPrintTypes pt) CVC4_PUBLIC;
+
+/**
+ * Sets the default depth when pretty-printing a Expr to an ostream.
+ * Use like this:
+ *
+ *   // let out be an ostream, e an Expr
+ *   out << Expr::setdepth(n) << e << endl;
+ *
+ * The depth stays permanently (until set again) with the stream.
+ */
+std::ostream& operator<<(std::ostream& out, ExprSetDepth sd) CVC4_PUBLIC;
+
+}/* namespace CVC4::expr */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__EXPR__EXPR_IOMANIP_H */
index dfbe179bebc87e1a869073ff57d038c283e87417..a6cdedd00c62290c207979120d772bd7b200d2ed 100644 (file)
@@ -40,14 +40,6 @@ namespace CVC4 {
 
 class ExprManager;
 
-namespace expr {
-
-const int ExprSetDepth::s_iosIndex = std::ios_base::xalloc();
-const int ExprPrintTypes::s_iosIndex = std::ios_base::xalloc();
-const int ExprDag::s_iosIndex = std::ios_base::xalloc();
-
-}/* CVC4::expr namespace */
-
 std::ostream& operator<<(std::ostream& out, const TypeCheckingException& e) {
   return out << e.getMessage() << ": " << e.getExpression();
 }
index 2e2f177428e24cc998acd0506195cffdf1f2512c..7d82cb222d3396b99dadba01889c5aee1007198d 100644 (file)
@@ -33,7 +33,6 @@ ${includes}
 #include <string>
 
 #include "base/exception.h"
-#include "options/expr_options.h"
 #include "options/language.h"
 #include "util/hash.h"
 
@@ -77,10 +76,6 @@ namespace smt {
 }/* CVC4::smt namespace */
 
 namespace expr {
-  class CVC4_PUBLIC ExprSetDepth;
-  class CVC4_PUBLIC ExprPrintTypes;
-  class CVC4_PUBLIC ExprDag;
-
   class ExportPrivate;
 }/* CVC4::expr namespace */
 
@@ -512,42 +507,6 @@ public:
    */
   Expr exportTo(ExprManager* exprManager, ExprManagerMapCollection& variableMap, uint32_t flags = 0) const;
 
-  /**
-   * IOStream manipulator to set the maximum depth of Exprs when
-   * pretty-printing.  -1 means print to any depth.  E.g.:
-   *
-   *   // let a, b, c, and d be VARIABLEs
-   *   Expr e = em->mkExpr(OR, a, b, em->mkExpr(AND, c, em->mkExpr(NOT, d)))
-   *   out << setdepth(3) << e;
-   *
-   * gives "(OR a b (AND c (NOT d)))", but
-   *
-   *   out << setdepth(1) << [same expr as above]
-   *
-   * gives "(OR a b (...))"
-   */
-  typedef expr::ExprSetDepth setdepth;
-
-  /**
-   * IOStream manipulator to print type ascriptions or not.
-   *
-   *   // let a, b, c, and d be variables of sort U
-   *   Expr e = em->mkExpr(OR, a, b, em->mkExpr(AND, c, em->mkExpr(NOT, d)))
-   *   out << printtypes(true) << e;
-   *
-   * gives "(OR a:U b:U (AND c:U (NOT d:U)))", but
-   *
-   *   out << printtypes(false) << [same expr as above]
-   *
-   * gives "(OR a b (AND c (NOT d)))"
-   */
-  typedef expr::ExprPrintTypes printtypes;
-
-  /**
-   * IOStream manipulator to print expressions as a DAG (or not).
-   */
-  typedef expr::ExprDag dag;
-
   /**
    * Very basic pretty printer for Expr.
    * This is equivalent to calling e.getNode().printAst(...)
@@ -592,307 +551,10 @@ private:
 
 };/* class Expr */
 
-namespace expr {
-
-/**
- * IOStream manipulator to set the maximum depth of Exprs when
- * pretty-printing.  -1 means print to any depth.  E.g.:
- *
- *   // let a, b, c, and d be VARIABLEs
- *   Expr e = em->mkExpr(OR, a, b, em->mkExpr(AND, c, em->mkExpr(NOT, d)))
- *   out << setdepth(3) << e;
- *
- * gives "(OR a b (AND c (NOT d)))", but
- *
- *   out << setdepth(1) << [same expr as above]
- *
- * gives "(OR a b (...))".
- *
- * The implementation of this class serves two purposes; it holds
- * information about the depth setting (such as the index of the
- * allocated word in ios_base), and serves also as the manipulator
- * itself (as above).
- */
-class CVC4_PUBLIC ExprSetDepth {
-  /**
-   * The allocated index in ios_base for our depth setting.
-   */
-  static const int s_iosIndex;
-
-  /**
-   * The default depth to print, for ostreams that haven't yet had a
-   * setdepth() applied to them.
-   */
-  static const int s_defaultPrintDepth = -1;
-
-  /**
-   * When this manipulator is used, the depth is stored here.
-   */
-  long d_depth;
-
-public:
-  /**
-   * Construct a ExprSetDepth with the given depth.
-   */
-  ExprSetDepth(long depth) : d_depth(depth) {}
-
-  inline void applyDepth(std::ostream& out) {
-    out.iword(s_iosIndex) = d_depth;
-  }
-
-  static inline long getDepth(std::ostream& out) {
-    long& l = out.iword(s_iosIndex);
-    if(l == 0) {
-      // set the default print depth on this ostream
-      if(not Options::isCurrentNull()) {
-        l = options::defaultExprDepth();
-      }
-      if(l == 0) {
-        // if called from outside the library, we may not have options
-        // available to us at this point (or perhaps the output language
-        // is not set in Options).  Default to something reasonable, but
-        // don't set "l" since that would make it "sticky" for this
-        // stream.
-        return s_defaultPrintDepth;
-      }
-    }
-    return l;
-  }
-
-  static inline void setDepth(std::ostream& out, long depth) {
-    out.iword(s_iosIndex) = depth;
-  }
-
-  /**
-   * Set the expression depth on the output stream for the current
-   * stack scope.  This makes sure the old depth is reset on the stream
-   * after normal OR exceptional exit from the scope, using the RAII
-   * C++ idiom.
-   */
-  class Scope {
-    std::ostream& d_out;
-    long d_oldDepth;
-
-  public:
-
-    inline Scope(std::ostream& out, long depth) :
-      d_out(out),
-      d_oldDepth(ExprSetDepth::getDepth(out)) {
-      ExprSetDepth::setDepth(out, depth);
-    }
-
-    inline ~Scope() {
-      ExprSetDepth::setDepth(d_out, d_oldDepth);
-    }
-
-  };/* class ExprSetDepth::Scope */
-
-};/* class ExprSetDepth */
-
-/**
- * IOStream manipulator to print type ascriptions or not.
- *
- *   // let a, b, c, and d be variables of sort U
- *   Expr e = em->mkExpr(OR, a, b, em->mkExpr(AND, c, em->mkExpr(NOT, d)))
- *   out << e;
- *
- * gives "(OR a:U b:U (AND c:U (NOT d:U)))", but
- */
-class CVC4_PUBLIC ExprPrintTypes {
-  /**
-   * The allocated index in ios_base for our setting.
-   */
-  static const int s_iosIndex;
-
-  /**
-   * When this manipulator is used, the setting is stored here.
-   */
-  bool d_printTypes;
-
-public:
-  /**
-   * Construct a ExprPrintTypes with the given setting.
-   */
-  ExprPrintTypes(bool printTypes) : d_printTypes(printTypes) {}
-
-  inline void applyPrintTypes(std::ostream& out) {
-    out.iword(s_iosIndex) = d_printTypes;
-  }
-
-  static inline bool getPrintTypes(std::ostream& out) {
-    return out.iword(s_iosIndex);
-  }
-
-  static inline void setPrintTypes(std::ostream& out, bool printTypes) {
-    out.iword(s_iosIndex) = printTypes;
-  }
-
-  /**
-   * Set the print-types state on the output stream for the current
-   * stack scope.  This makes sure the old state is reset on the
-   * stream after normal OR exceptional exit from the scope, using the
-   * RAII C++ idiom.
-   */
-  class Scope {
-    std::ostream& d_out;
-    bool d_oldPrintTypes;
-
-  public:
-
-    inline Scope(std::ostream& out, bool printTypes) :
-      d_out(out),
-      d_oldPrintTypes(ExprPrintTypes::getPrintTypes(out)) {
-      ExprPrintTypes::setPrintTypes(out, printTypes);
-    }
-
-    inline ~Scope() {
-      ExprPrintTypes::setPrintTypes(d_out, d_oldPrintTypes);
-    }
-
-  };/* class ExprPrintTypes::Scope */
-
-};/* class ExprPrintTypes */
-
-/**
- * IOStream manipulator to print expressions as a dag (or not).
- */
-class CVC4_PUBLIC ExprDag {
-  /**
-   * The allocated index in ios_base for our setting.
-   */
-  static const int s_iosIndex;
-
-  /**
-   * The default setting, for ostreams that haven't yet had a
-   * dag() applied to them.
-   */
-  static const size_t s_defaultDag = 1;
-
-  /**
-   * When this manipulator is used, the setting is stored here.
-   */
-  size_t d_dag;
-
-public:
-  /**
-   * Construct a ExprDag with the given setting (dagification on or off).
-   */
-  explicit ExprDag(bool dag) : d_dag(dag ? 1 : 0) {}
-
-  /**
-   * Construct a ExprDag with the given setting (letify only common
-   * subexpressions that appear more than 'dag' times).  dag <= 0 means
-   * don't dagify.
-   */
-  explicit ExprDag(int dag) : d_dag(dag < 0 ? 0 : dag) {}
-
-  inline void applyDag(std::ostream& out) {
-    // (offset by one to detect whether default has been set yet)
-    out.iword(s_iosIndex) = static_cast<long>(d_dag) + 1;
-  }
-
-  static inline size_t getDag(std::ostream& out) {
-    long& l = out.iword(s_iosIndex);
-    if(l == 0) {
-      // set the default dag setting on this ostream
-      // (offset by one to detect whether default has been set yet)
-      if(not Options::isCurrentNull()) {
-        l = options::defaultDagThresh() + 1;
-      }
-      if(l == 0) {
-        // if called from outside the library, we may not have options
-        // available to us at this point (or perhaps the output language
-        // is not set in Options).  Default to something reasonable, but
-        // don't set "l" since that would make it "sticky" for this
-        // stream.
-        return s_defaultDag + 1;
-      }
-    }
-    return static_cast<size_t>(l - 1);
-  }
-
-  static inline void setDag(std::ostream& out, size_t dag) {
-    // (offset by one to detect whether default has been set yet)
-    out.iword(s_iosIndex) = static_cast<long>(dag) + 1;
-  }
-
-  /**
-   * Set the dag state on the output stream for the current
-   * stack scope.  This makes sure the old state is reset on the
-   * stream after normal OR exceptional exit from the scope, using the
-   * RAII C++ idiom.
-   */
-  class Scope {
-    std::ostream& d_out;
-    size_t d_oldDag;
-
-  public:
-
-    inline Scope(std::ostream& out, size_t dag) :
-      d_out(out),
-      d_oldDag(ExprDag::getDag(out)) {
-      ExprDag::setDag(out, dag);
-    }
-
-    inline ~Scope() {
-      ExprDag::setDag(d_out, d_oldDag);
-    }
-
-  };/* class ExprDag::Scope */
-
-};/* class ExprDag */
-}/* CVC4::expr namespace */
-
 ${getConst_instantiations}
 
 #line 939 "${template}"
 
-namespace expr {
-
-/**
- * Sets the default depth when pretty-printing a Expr to an ostream.
- * Use like this:
- *
- *   // let out be an ostream, e an Expr
- *   out << Expr::setdepth(n) << e << endl;
- *
- * The depth stays permanently (until set again) with the stream.
- */
-inline std::ostream& operator<<(std::ostream& out, ExprSetDepth sd) {
-  sd.applyDepth(out);
-  return out;
-}
-
-/**
- * Sets the default print-types setting when pretty-printing an Expr
- * to an ostream.  Use like this:
- *
- *   // let out be an ostream, e an Expr
- *   out << Expr::printtypes(true) << e << endl;
- *
- * The setting stays permanently (until set again) with the stream.
- */
-inline std::ostream& operator<<(std::ostream& out, ExprPrintTypes pt) {
-  pt.applyPrintTypes(out);
-  return out;
-}
-
-/**
- * Sets the default dag setting when pretty-printing a Expr to an ostream.
- * Use like this:
- *
- *   // let out be an ostream, e an Expr
- *   out << Expr::dag(true) << e << endl;
- *
- * The setting stays permanently (until set again) with the stream.
- */
-inline std::ostream& operator<<(std::ostream& out, ExprDag d) {
-  d.applyDag(out);
-  return out;
-}
-
-}/* CVC4::expr namespace */
-
 inline size_t ExprHashFunction::operator()(CVC4::Expr e) const {
   return (size_t) e.getId();
 }
index f345ba5529584216fef567d38f34900a22aa263c..c0e2a554253165911b046c38029c4e3b0aa19387 100644 (file)
@@ -37,6 +37,7 @@
 #include "expr/kind.h"
 #include "expr/metakind.h"
 #include "expr/expr.h"
+#include "expr/expr_iomanip.h"
 #include "options/language.h"
 #include "options/set_language.h"
 #include "util/configuration.h"
index dbe7d09ebd2ab22143ac7ae447c9ec1632f87c61..ab18973cba6acfc34bd01f0cc5c79950d6f90ec7 100644 (file)
@@ -24,6 +24,7 @@
 #include "expr/kind.h"
 #include "expr/metakind.h"
 #include "expr/node.h"
+#include "options/base_options.h"
 #include "options/language.h"
 #include "options/options.h"
 #include "printer/printer.h"
index bf36236f73306daafa42ce31622f4809339f0d78..3f9124a2f2857a832dd2e2012c2732963a400a54 100644 (file)
 #include "expr/expr_manager.h"
 #include "lib/clock_gettime.h"
 #include "smt/smt_engine.h"
+#include "smt/smt_engine_scope.h"
 
-#ifndef __BUILDING_STATISTICS_FOR_EXPORT
-#  include "smt/smt_engine_scope.h"
-#endif /* ! __BUILDING_STATISTICS_FOR_EXPORT */
 
 #ifdef CVC4_STATISTICS_ON
 #  define __CVC4_USE_STATISTICS true
@@ -65,8 +63,6 @@ inline StatisticsRegistry* getStatisticsRegistry(ExprManager* em) {
 
 }/* CVC4::stats namespace */
 
-#ifndef __BUILDING_STATISTICS_FOR_EXPORT
-
 StatisticsRegistry* StatisticsRegistry::current() {
   return stats::getStatisticsRegistry(smt::currentSmtEngine());
 }
@@ -91,8 +87,6 @@ void StatisticsRegistry::unregisterStat(Stat* s) throw(CVC4::IllegalArgumentExce
 #endif /* CVC4_STATISTICS_ON */
 }/* StatisticsRegistry::unregisterStat() */
 
-#endif /* ! __BUILDING_STATISTICS_FOR_EXPORT */
-
 void StatisticsRegistry::registerStat_(Stat* s) throw(CVC4::IllegalArgumentException) {
 #ifdef CVC4_STATISTICS_ON
   PrettyCheckArgument(d_stats.find(s) == d_stats.end(), s);
index 4793f130115ab5fa8575ce07041b6e781c3f9696..3feb0d5d75ff52846866994ebbfefc3c37e2ac34 100644 (file)
@@ -32,7 +32,6 @@
 
 #include "base/exception.h"
 #include "expr/statistics.h"
-#include "lib/clock_gettime.h"
 
 namespace CVC4 {
 
@@ -617,10 +616,10 @@ public:
     d_prefix = d_name = name;
   }
 
-#if (defined(__BUILDING_CVC4LIB) || defined(__BUILDING_CVC4LIB_UNIT_TEST)) && !defined(__BUILDING_STATISTICS_FOR_EXPORT)
+#if (defined(__BUILDING_CVC4LIB) || defined(__BUILDING_CVC4LIB_UNIT_TEST))
   /** Get a pointer to the current statistics registry */
   static StatisticsRegistry* current();
-#endif /* (__BUILDING_CVC4LIB || __BUILDING_CVC4LIB_UNIT_TEST) && ! __BUILDING_STATISTICS_FOR_EXPORT */
+#endif /* (__BUILDING_CVC4LIB || __BUILDING_CVC4LIB_UNIT_TEST) */
 
   /** Overridden to avoid the name being printed */
   void flushStat(std::ostream &out) const;
@@ -638,13 +637,13 @@ public:
     return SExpr(v);
   }
 
-#if (defined(__BUILDING_CVC4LIB) || defined(__BUILDING_CVC4LIB_UNIT_TEST)) && !defined(__BUILDING_STATISTICS_FOR_EXPORT)
+#if (defined(__BUILDING_CVC4LIB) || defined(__BUILDING_CVC4LIB_UNIT_TEST))
   /** Register a new statistic, making it active. */
   static void registerStat(Stat* s) throw(CVC4::IllegalArgumentException);
 
   /** Unregister an active statistic, making it inactive. */
   static void unregisterStat(Stat* s) throw(CVC4::IllegalArgumentException);
-#endif /* (__BUILDING_CVC4LIB || __BUILDING_CVC4LIB) && ! __BUILDING_STATISTICS_FOR_EXPORT */
+#endif /* (__BUILDING_CVC4LIB || __BUILDING_CVC4LIB) */
 
   /** Register a new statistic */
   void registerStat_(Stat* s) throw(CVC4::IllegalArgumentException);
@@ -887,7 +886,7 @@ class RegisterStatistic {
 
 public:
 
-#if (defined(__BUILDING_CVC4LIB) || defined(__BUILDING_CVC4LIB_UNIT_TEST)) && ! defined(__BUILDING_STATISTICS_FOR_EXPORT)
+#if (defined(__BUILDING_CVC4LIB) || defined(__BUILDING_CVC4LIB_UNIT_TEST))
   RegisterStatistic(Stat* stat) :
       d_reg(StatisticsRegistry::current()),
       d_stat(stat) {
@@ -896,7 +895,7 @@ public:
     }
     StatisticsRegistry::registerStat(d_stat);
   }
-#endif /* (__BUILDING_CVC4LIB || __BUILDING_CVC4LIB_UNIT_TEST) && ! __BUILDING_STATISTICS_FOR_EXPORT */
+#endif /* (__BUILDING_CVC4LIB || __BUILDING_CVC4LIB_UNIT_TEST) */
 
   RegisterStatistic(StatisticsRegistry* reg, Stat* stat) :
     d_reg(reg),
index 659e805506881410472197344b8dbc7949fdc501..ea185f98b7dddc5ec9254fb2da6c3db64e1cbff9 100644 (file)
  **
  ** Reference-counted encapsulation of a pointer to node information.
  **/
+#include "expr/type_node.h"
 
 #include <vector>
 
 #include "expr/node_manager_attributes.h"
-#include "expr/type_node.h"
 #include "expr/type_properties.h"
+#include "options/base_options.h"
+#include "options/expr_options.h"
 
 using namespace std;
 
@@ -564,4 +566,12 @@ bool TypeNode::isSortConstructor() const {
   return getKind() == kind::SORT_TYPE && hasAttribute(expr::SortArityAttr());
 }
 
+std::string TypeNode::toString() const {
+  std::stringstream ss;
+  OutputLanguage outlang = (this == &s_null) ? language::output::LANG_AUTO : options::outputLanguage();
+  d_nv->toStream(ss, -1, false, 0, outlang);
+  return ss.str();
+}
+
+
 }/* CVC4 namespace */
index ce006a4f10b0863f943da1307612808626450116..59f602f0923ef96f3fb1f51c124ed4112b4beabb 100644 (file)
@@ -372,12 +372,7 @@ public:
    *
    * @return the string representation of this type.
    */
-  inline std::string toString() const {
-    std::stringstream ss;
-    OutputLanguage outlang = (this == &s_null) ? language::output::LANG_AUTO : options::outputLanguage();
-    d_nv->toStream(ss, -1, false, 0, outlang);
-    return ss.str();
-  }
+  std::string toString() const;
 
   /**
    * Converts this node into a string representation and sends it to the
index e065466f28cf4e10a2cb6bd2a5f7b98f234bff32..daae9aabf5504e27b764120dba82d2b5ceb0a153 100644 (file)
@@ -14,7 +14,7 @@
  ** Replacement for clock_gettime() for systems without it (like Mac OS X).
  **/
 
-#include "cvc4_public.h"
+#include "cvc4_private.h"
 
 #ifndef __CVC4__LIB__CLOCK_GETTIME_H
 #define __CVC4__LIB__CLOCK_GETTIME_H
index 2dc51d0e9a8c8c1510bea1879735229d4c5568e6..44fb40674e9156f52b6a1e3045ddd8d7198ee5f7 100644 (file)
  ** Replacement for ffs() for systems without it (like Win32).
  **/
 
-#include "cvc4_public.h"
+#include "cvc4_private.h"
 
 #ifndef __CVC4__LIB__FFS_H
 #define __CVC4__LIB__FFS_H
 
+//We include this for HAVE_FFS
+#include "cvc4autoconfig.h"
+
 #ifdef HAVE_FFS
 
 // available in strings.h
index 644ff7a31d6a4d93d660d8213120fad8ba08a1da..cc737043b9cc10894835e990ad780e8cb73c66f3 100644 (file)
@@ -14,7 +14,7 @@
  ** Replacement for strtok_r() for systems without it (like Win32).
  **/
 
-#include "cvc4_public.h"
+#include "cvc4_private.h"
 
 #ifndef __CVC4__LIB__STRTOK_R_H
 #define __CVC4__LIB__STRTOK_R_H
index 0b53c3cbe486a4286e02c2a3be68d99a93c012fd..aa43cff0f94f9b7771a34411e0f94d50023cd8d5 100644 (file)
@@ -22,6 +22,7 @@
 #include <string>
 
 #include "main/main.h"
+#include "options/base_options.h"
 #include "options/main_options.h"
 #include "options/printer_options.h"
 #include "options/smt_options.h"
index a1f737d1d573a87c3237241623fa688dd325d47f..c471ae585eda80892129a59e5241abd46e12a491 100644 (file)
@@ -31,6 +31,7 @@
 #include "expr/pickler.h"
 #include "main/main.h"
 #include "main/portfolio.h"
+#include "options/base_options.h"
 #include "options/main_options.h"
 #include "options/options.h"
 #include "options/printer_options.h"
index 7e82e1bd1743e1f2f671116208b6ec38d0b1b81d..3ad26c6a2425b696c432fc47be46edf1686224ae 100644 (file)
 #include <iostream>
 #include <new>
 
-#include "base/output.h"
+// This must come before PORTFOLIO_BUILD.
 #include "cvc4autoconfig.h"
+
+#include "base/output.h"
+#include "expr/expr_iomanip.h"
 #include "expr/expr_manager.h"
 #include "expr/result.h"
 #include "expr/statistics_registry.h"
@@ -35,6 +38,7 @@
 
 #include "main/interactive_shell.h"
 #include "main/main.h"
+#include "options/base_options.h"
 #include "options/main_options.h"
 #include "options/options.h"
 #include "options/quantifiers_options.h"
@@ -284,7 +288,8 @@ int runCvc4(int argc, char* argv[], Options& opts) {
     opts.set(options::replayStream, new Parser::ExprStream(replayParser));
   }
   if( opts[options::replayLog] != NULL ) {
-    *opts[options::replayLog] << language::SetLanguage(opts[options::outputLanguage]) << Expr::setdepth(-1);
+    *opts[options::replayLog] << language::SetLanguage(opts[options::outputLanguage])
+                              << expr::ExprSetDepth(-1);
   }
 
   int returnValue = 0;
index 7b146b3b01e743b3496f03b9b458d9164be71201..6888d3af59df708829d03400d127ae8101867f95 100644 (file)
@@ -40,6 +40,7 @@
 
 #include "base/output.h"
 #include "options/language.h"
+#include "options/base_options.h"
 #include "options/main_options.h"
 #include "options/options.h"
 #include "options/smt_options.h"
index 36a339d945617c0c1f8d7b3cdb4775badebd3a87..3f0842cc50a946efa964def35b3ec03de6e89e50 100644 (file)
@@ -28,6 +28,7 @@
 #include "expr/statistics.h"
 #include "main/command_executor.h"
 #include "main/interactive_shell.h"
+#include "options/base_options.h"
 #include "options/language.h"
 #include "options/main_options.h"
 #include "parser/parser.h"
index 6b5fe4723f77b1b2acc1bc462280247988bb0c37..1ec0b961cc3e66736cbb6f6a167d81b90279987d 100644 (file)
  ** \brief Code relevant only for portfolio builds
  **/
 
+#include "main/portfolio_util.h"
+
 #include <unistd.h>
 
 #include <cassert>
 #include <vector>
 
+#include "options/base_options.h"
 #include "options/main_options.h"
 #include "options/options.h"
 #include "options/prop_options.h"
@@ -96,4 +99,48 @@ vector<Options> parseThreadSpecificOptions(Options opts)
   return threadOptions;
 }
 
+void PortfolioLemmaOutputChannel::notifyNewLemma(Expr lemma) {
+  if(int(lemma.getNumChildren()) > options::sharingFilterByLength()) {
+    return;
+  }
+  ++cnt;
+  Trace("sharing") << d_tag << ": " << lemma << std::endl;
+  expr::pickle::Pickle pkl;
+  try {
+    d_pickler.toPickle(lemma, pkl);
+    d_sharedChannel->push(pkl);
+    if(Trace.isOn("showSharing") && options::thread_id() == 0) {
+      *options::out() << "thread #0: notifyNewLemma: " << lemma
+                      << std::endl;
+    }
+  } catch(expr::pickle::PicklingException& p){
+    Trace("sharing::blocked") << lemma << std::endl;
+  }
+}
+
+
+PortfolioLemmaInputChannel::PortfolioLemmaInputChannel(std::string tag,
+    SharedChannel<ChannelFormat>* c,
+    ExprManager* em,
+    VarMap& to,
+    VarMap& from)
+    : d_tag(tag), d_sharedChannel(c), d_pickler(em, to, from)
+{}
+
+bool PortfolioLemmaInputChannel::hasNewLemma(){
+  Debug("lemmaInputChannel") << d_tag << ": " << "hasNewLemma" << std::endl;
+  return !d_sharedChannel->empty();
+}
+
+Expr PortfolioLemmaInputChannel::getNewLemma() {
+  Debug("lemmaInputChannel") << d_tag << ": " << "getNewLemma" << std::endl;
+  expr::pickle::Pickle pkl = d_sharedChannel->pop();
+
+  Expr e = d_pickler.fromPickle(pkl);
+  if(Trace.isOn("showSharing") && options::thread_id() == 0) {
+    *options::out() << "thread #0: getNewLemma: " << e << std::endl;
+  }
+  return e;
+}
+
 }/*CVC4 namespace */
index d6d6a2d02b32334faa9f993e5603dc85543f6419..2b1e2275479250a5466c76e1d3d3c455ddd2fce6 100644 (file)
@@ -20,6 +20,7 @@
 #include "base/output.h"
 #include "expr/pickler.h"
 #include "options/main_options.h"
+#include "smt/smt_engine.h"
 #include "smt_util/lemma_input_channel.h"
 #include "smt_util/lemma_output_channel.h"
 #include "util/channel.h"
@@ -49,25 +50,7 @@ public:
 
   ~PortfolioLemmaOutputChannel() throw() { }
 
-  void notifyNewLemma(Expr lemma) {
-    if(int(lemma.getNumChildren()) > options::sharingFilterByLength()) {
-      return;
-    }
-    ++cnt;
-    Trace("sharing") << d_tag << ": " << lemma << std::endl;
-    expr::pickle::Pickle pkl;
-    try {
-      d_pickler.toPickle(lemma, pkl);
-      d_sharedChannel->push(pkl);
-      if(Trace.isOn("showSharing") && options::thread_id() == 0) {
-        *options::out() << "thread #0: notifyNewLemma: " << lemma
-                        << std::endl;
-      }
-    } catch(expr::pickle::PicklingException& p){
-      Trace("sharing::blocked") << lemma << std::endl;
-    }
-  }
-
+  void notifyNewLemma(Expr lemma);
 };/* class PortfolioLemmaOutputChannel */
 
 class PortfolioLemmaInputChannel : public LemmaInputChannel {
@@ -81,29 +64,12 @@ public:
                              SharedChannel<ChannelFormat>* c,
                              ExprManager* em,
                              VarMap& to,
-                             VarMap& from) :
-    d_tag(tag),
-    d_sharedChannel(c),
-    d_pickler(em, to, from){
-  }
+                               VarMap& from);
 
   ~PortfolioLemmaInputChannel() throw() { }
 
-  bool hasNewLemma(){
-    Debug("lemmaInputChannel") << d_tag << ": " << "hasNewLemma" << std::endl;
-    return !d_sharedChannel->empty();
-  }
-
-  Expr getNewLemma() {
-    Debug("lemmaInputChannel") << d_tag << ": " << "getNewLemma" << std::endl;
-    expr::pickle::Pickle pkl = d_sharedChannel->pop();
-
-    Expr e = d_pickler.fromPickle(pkl);
-    if(Trace.isOn("showSharing") && options::thread_id() == 0) {
-      *options::out() << "thread #0: getNewLemma: " << e << std::endl;
-    }
-    return e;
-  }
+  bool hasNewLemma();
+  Expr getNewLemma();
 
 };/* class PortfolioLemmaInputChannel */
 
index 86272ee534e4ae0f19781f6c136a4364665dd86f..ce4e4509d8f04f4c97df8b019aac7d078a6e44bc 100644 (file)
@@ -34,6 +34,7 @@
 #include "expr/statistics.h"
 #include "main/command_executor.h"
 #include "main/main.h"
+#include "options/base_options.h"
 #include "options/options.h"
 #include "smt/smt_engine.h"
 
index e43d2848eb8322d201632aee1070173db4d54158..c8c02ecaa2b74a3ed54f3e7ac7ff1361b20e8ab7 100644 (file)
@@ -14,7 +14,7 @@
  ** Contains code for handling command-line options
  **/
 
-#include "cvc4_public.h"
+#include "cvc4_private.h"
 
 #ifndef __CVC4__OPTIONS__${module_id}_H
 #define __CVC4__OPTIONS__${module_id}_H
index 65cc7a8a5bdee891fd3d46552543c2ea2eb13dbd..81a0c661ac10228cfb7a7d6fa7b7237f144ca61d 100644 (file)
@@ -26,7 +26,7 @@ namespace CVC4 {
 namespace theory {
 namespace booleans {
 
-typedef enum {
+enum BooleanTermConversionMode {
   /**
    * Convert Boolean terms to bitvectors of size 1.
    */
@@ -41,7 +41,7 @@ typedef enum {
    */
   BOOLEAN_TERM_CONVERT_NATIVE
 
-} BooleanTermConversionMode;
+};
 
 }/* CVC4::theory::booleans namespace */
 }/* CVC4::theory namespace */
index 08a6e4077103d2d2d1e6e69e5dc38f212a3705a2..f36021478b50e9bea2f07e546e65f43c5ad8168f 100644 (file)
@@ -64,8 +64,8 @@ enum BvSlicerMode {
 }/* CVC4::theory::bv namespace */
 }/* CVC4::theory namespace */
 
-std::ostream& operator<<(std::ostream& out, theory::bv::BitblastMode mode) CVC4_PUBLIC;
-std::ostream& operator<<(std::ostream& out, theory::bv::BvSlicerMode mode) CVC4_PUBLIC;
+std::ostream& operator<<(std::ostream& out, theory::bv::BitblastMode mode);
+std::ostream& operator<<(std::ostream& out, theory::bv::BvSlicerMode mode);
 
 }/* CVC4 namespace */
 
index 168637e646edb40613f1f9a9123201cd12503f56..0aeae1baab36ec841248728a915d6e897baabd51 100644 (file)
@@ -17,6 +17,8 @@
 
 #include "options/decision_mode.h"
 
+#include <iostream>
+
 namespace CVC4 {
 
 std::ostream& operator<<(std::ostream& out, decision::DecisionMode mode) {
index fb01c587be23a7f0a048bb35a0ed7710a6879c95..420d00b4c398f804ad1904269ace3641f753aa15 100644 (file)
@@ -20,7 +20,7 @@
 #ifndef __CVC4__SMT__DECISION_MODE_H
 #define __CVC4__SMT__DECISION_MODE_H
 
-#include <iostream>
+#include <iosfwd>
 
 namespace CVC4 {
 namespace decision {
@@ -57,7 +57,7 @@ enum DecisionWeightInternal {
 
 }/* CVC4::decision namespace */
 
-std::ostream& operator<<(std::ostream& out, decision::DecisionMode mode) CVC4_PUBLIC;
+std::ostream& operator<<(std::ostream& out, decision::DecisionMode mode);
 
 }/* CVC4 namespace */
 
index 42f1d5b6d580b793b749c84733be9e8e43f50566..89ebe8a2129271bff3ae2be11de11275db2ddf1d 100644 (file)
@@ -21,7 +21,9 @@
 
 namespace CVC4 {
 namespace decision {
+
 typedef uint64_t DecisionWeight;
+
 }/* CVC4::decision namespace */
 }/* CVC4 namespace */
 
index fc3bf40ac05569df8e62860190747cc60aecea34..a83de9acbec97f16c3423d0180858e6f1c482c0f 100644 (file)
@@ -164,6 +164,4 @@ public:
 
 }/* CVC4 namespace */
 
-#include "options/base_options.h"
-
 #endif /* __CVC4__OPTIONS__OPTIONS_H */
index db0275e044bfa3120ff37499cfc8ef19804ff106..f68adbb45bc0e0d3b993584f869af2289c14a6b5 100644 (file)
@@ -18,6 +18,7 @@
 #include <iosfwd>
 #include <iomanip>
 
+#include "options/base_options.h"
 #include "options/language.h"
 #include "options/options.h"
 
index 0e8a9e241a8db64a0ac81a77b506c9ca6c40d7a7..120f6398721adace19d6c73e80430e887a0ad17c 100644 (file)
@@ -26,6 +26,7 @@
 
 #include "base/output.h"
 #include "expr/expr.h"
+#include "expr/expr_iomanip.h"
 #include "expr/kind.h"
 #include "expr/resource_manager.h"
 #include "expr/type.h"
@@ -331,7 +332,7 @@ Parser::mkMutualDatatypeTypes(const std::vector<Datatype>& datatypes) {
           j != j_end;
           ++j) {
         const DatatypeConstructor& ctor = *j;
-        Expr::printtypes::Scope pts(Debug("parser-idt"), true);
+        expr::ExprPrintTypes::Scope pts(Debug("parser-idt"), true);
         Expr constructor = ctor.getConstructor();
         Debug("parser-idt") << "+ define " << constructor << std::endl;
         string constructorName = ctor.getName();
index 08e0232aa07ef919af50ceaa8a1e26b785ca318f..f473ae1788067c947502a39e613181b4f58740f0 100644 (file)
@@ -18,6 +18,7 @@
 #include <string>
 
 #include "expr/expr_manager.h"
+#include "options/base_options.h"
 #include "options/parser_options.h"
 #include "options/smt_options.h"
 #include "parser/input.h"
index 75d625edc03b5ead34a00e3b758bf9e6c0a4c892..d4b99536e0423bd39c9ec9d95d1b344a64862f9f 100644 (file)
@@ -17,6 +17,7 @@
 
 #include <string>
 
+#include "options/base_options.h"
 #include "options/language.h"
 #include "printer/ast/ast_printer.h"
 #include "printer/cvc/cvc_printer.h"
@@ -87,4 +88,29 @@ void Printer::toStream(std::ostream& out, const UnsatCore& core, const std::map<
   }
 }/* Printer::toStream(UnsatCore, std::map<Expr, std::string>) */
 
+Printer* Printer::getPrinter(OutputLanguage lang) throw() {
+  if(lang == language::output::LANG_AUTO) {
+  // Infer the language to use for output.
+  //
+  // Options can be null in certain circumstances (e.g., when printing
+  // the singleton "null" expr.  So we guard against segfault
+  if(not Options::isCurrentNull()) {
+    if(options::outputLanguage.wasSetByUser()) {
+      lang = options::outputLanguage();
+    }
+    if(lang == language::output::LANG_AUTO && options::inputLanguage.wasSetByUser()) {
+      lang = language::toOutputLanguage(options::inputLanguage());
+     }
+   }
+   if(lang == language::output::LANG_AUTO) {
+      lang = language::output::LANG_CVC4; // default
+    }
+  }
+  if(d_printers[lang] == NULL) {
+    d_printers[lang] = makePrinter(lang);
+  }
+  return d_printers[lang];
+}
+
+
 }/* CVC4 namespace */
index 30d33d46b306bd9d27b8eb19e618b720a2cfafd7..48787f70aa8118011e51708a5e18d8f3682819cf 100644 (file)
@@ -56,29 +56,7 @@ protected:
 
 public:
   /** Get the Printer for a given OutputLanguage */
-  static Printer* getPrinter(OutputLanguage lang) throw() {
-    if(lang == language::output::LANG_AUTO) {
-      // Infer the language to use for output.
-      //
-      // Options can be null in certain circumstances (e.g., when printing
-      // the singleton "null" expr.  So we guard against segfault
-      if(not Options::isCurrentNull()) {
-        if(options::outputLanguage.wasSetByUser()) {
-          lang = options::outputLanguage();
-        }
-        if(lang == language::output::LANG_AUTO && options::inputLanguage.wasSetByUser()) {
-          lang = language::toOutputLanguage(options::inputLanguage());
-        }
-      }
-      if(lang == language::output::LANG_AUTO) {
-        lang = language::output::LANG_CVC4; // default
-      }
-    }
-    if(d_printers[lang] == NULL) {
-      d_printers[lang] = makePrinter(lang);
-    }
-    return d_printers[lang];
-  }
+  static Printer* getPrinter(OutputLanguage lang) throw();
 
   /** Write a Node out to a stream with this Printer. */
   virtual void toStream(std::ostream& out, TNode n,
index 4a4d13977161c44860b64fece5959df3089d3c4b..37cc62aa055b4168dad8e37e501f2fe90628bed6 100644 (file)
@@ -16,6 +16,8 @@
 
 #include "proof/unsat_core.h"
 
+#include "expr/expr_iomanip.h"
+#include "options/base_options.h"
 #include "printer/printer.h"
 #include "smt/smt_engine_scope.h"
 #include "smt_util/command.h"
@@ -36,13 +38,13 @@ UnsatCore::const_iterator UnsatCore::end() const {
 
 void UnsatCore::toStream(std::ostream& out) const {
   smt::SmtScope smts(d_smt);
-  Expr::dag::Scope scope(out, false);
+  expr::ExprDag::Scope scope(out, false);
   Printer::getPrinter(options::outputLanguage())->toStream(out, *this);
 }
 
 void UnsatCore::toStream(std::ostream& out, const std::map<Expr, std::string>& names) const {
   smt::SmtScope smts(d_smt);
-  Expr::dag::Scope scope(out, false);
+  expr::ExprDag::Scope scope(out, false);
   Printer::getPrinter(options::outputLanguage())->toStream(out, *this, names);
 }
 
index 23a740a267020dd71337b10e6c97739d5fdda615..d9b8bb4f8a685d46b4a92c1f15c0554ddc51f84a 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "prop/minisat/minisat.h"
 
+#include "options/base_options.h"
 #include "options/decision_options.h"
 #include "options/prop_options.h"
 #include "options/smt_options.h"
index 499cf1b569a3b3047d4d9b156d1ff0401072d554..2a1b05619c0782787904d6a47d722489f58fc52d 100644 (file)
@@ -26,6 +26,7 @@
 #include "expr/expr.h"
 #include "expr/resource_manager.h"
 #include "expr/result.h"
+#include "options/base_options.h"
 #include "options/decision_options.h"
 #include "options/main_options.h"
 #include "options/options.h"
index 34776c24561273f2673e477b31a7e5fa39965454..e0446eb4aa5a1c9b531c0a319c84ed6f1ec7a86c 100644 (file)
  ** SAT Solver creation facility
  **/
 
-#pragma once
+#include "cvc4_private.h"
 
-#include "cvc4_public.h"
+#pragma once
 
 #include <string>
 #include <vector>
+
 #include "prop/sat_solver.h"
 
 namespace CVC4 {
index f2c45eab91f5fd2076d9e4da7333d5798d76756c..c1d49d8c88178b1d5aec9b7083a480c4a0838112 100644 (file)
 #include <utility>
 #include <vector>
 
-#include "options/boolean_term_conversion_mode.h"
-#include "options/decision_mode.h"
 #include "base/exception.h"
 #include "base/modal_exception.h"
-#include "options/option_exception.h"
 #include "base/output.h"
 #include "context/cdhashset.h"
 #include "context/cdlist.h"
 #include "expr/resource_manager.h"
 #include "options/arith_options.h"
 #include "options/arrays_options.h"
+#include "options/base_options.h"
+#include "options/boolean_term_conversion_mode.h"
 #include "options/booleans_options.h"
 #include "options/booleans_options.h"
 #include "options/bv_options.h"
 #include "options/datatypes_options.h"
+#include "options/decision_mode.h"
 #include "options/decision_options.h"
 #include "options/main_options.h"
+#include "options/option_exception.h"
 #include "options/options_handler_interface.h"
 #include "options/printer_options.h"
 #include "options/prop_options.h"
@@ -65,8 +66,8 @@
 #include "proof/proof.h"
 #include "proof/proof_manager.h"
 #include "proof/proof_manager.h"
-#include "proof/unsat_core.h"
 #include "proof/theory_proof.h"
+#include "proof/unsat_core.h"
 #include "prop/prop_engine.h"
 #include "smt/boolean_terms.h"
 #include "smt/command_list.h"
@@ -74,8 +75,8 @@
 #include "smt/model_postprocessor.h"
 #include "smt/smt_engine_scope.h"
 #include "smt/smt_options_handler.h"
-#include "smt_util/command.h"
 #include "smt_util/boolean_simplification.h"
+#include "smt_util/command.h"
 #include "smt_util/ite_removal.h"
 #include "smt_util/nary_builder.h"
 #include "smt_util/node_visitor.h"
index 371cdcddd8433508cc141a6d22c60768fd86c740..e1a19d48b59e11b9d25efef93fe50a8324ac6c9d 100644 (file)
@@ -25,6 +25,7 @@
 #include "base/modal_exception.h"
 #include "base/output.h"
 #include "cvc4autoconfig.h"
+#include "expr/expr_iomanip.h"
 #include "expr/metakind.h"
 #include "expr/node_manager.h"
 #include "expr/resource_manager.h"
@@ -32,6 +33,7 @@
 #include "options/arith_heuristic_pivot_rule.h"
 #include "options/arith_propagation_mode.h"
 #include "options/arith_unate_lemma_mode.h"
+#include "options/base_options.h"
 #include "options/boolean_term_conversion_mode.h"
 #include "options/bv_bitblast_mode.h"
 #include "options/bv_options.h"
@@ -1219,9 +1221,9 @@ void SmtOptionsHandler::proofEnabledBuild(std::string option, bool value) throw(
     bool printtypesSetting = expr::ExprPrintTypes::getPrintTypes(__channel_get); \
     OutputLanguage languageSetting = language::SetLanguage::getLanguage(__channel_get); \
     __channel_set; \
-    __channel_get << Expr::dag(dagSetting); \
-    __channel_get << Expr::setdepth(exprDepthSetting); \
-    __channel_get << Expr::printtypes(printtypesSetting); \
+    __channel_get << expr::ExprDag(dagSetting);      \
+    __channel_get << expr::ExprSetDepth(exprDepthSetting); \
+    __channel_get << expr::ExprPrintTypes(printtypesSetting); \
     __channel_get << language::SetLanguage(languageSetting); \
   }
 
@@ -1418,12 +1420,12 @@ void SmtOptionsHandler::setDefaultExprDepth(std::string option, int depth) {
     throw OptionException("--default-expr-depth requires a positive argument, or -1.");
   }
 
-  Debug.getStream() << Expr::setdepth(depth);
-  Trace.getStream() << Expr::setdepth(depth);
-  Notice.getStream() << Expr::setdepth(depth);
-  Chat.getStream() << Expr::setdepth(depth);
-  Message.getStream() << Expr::setdepth(depth);
-  Warning.getStream() << Expr::setdepth(depth);
+  Debug.getStream() << expr::ExprSetDepth(depth);
+  Trace.getStream() << expr::ExprSetDepth(depth);
+  Notice.getStream() << expr::ExprSetDepth(depth);
+  Chat.getStream() << expr::ExprSetDepth(depth);
+  Message.getStream() << expr::ExprSetDepth(depth);
+  Warning.getStream() << expr::ExprSetDepth(depth);
   // intentionally exclude Dump stream from this list
 }
 
@@ -1432,22 +1434,22 @@ void SmtOptionsHandler::setDefaultDagThresh(std::string option, int dag) {
     throw OptionException("--default-dag-thresh requires a nonnegative argument.");
   }
 
-  Debug.getStream() << Expr::dag(dag);
-  Trace.getStream() << Expr::dag(dag);
-  Notice.getStream() << Expr::dag(dag);
-  Chat.getStream() << Expr::dag(dag);
-  Message.getStream() << Expr::dag(dag);
-  Warning.getStream() << Expr::dag(dag);
-  Dump.getStream() << Expr::dag(dag);
+  Debug.getStream() << expr::ExprDag(dag);
+  Trace.getStream() << expr::ExprDag(dag);
+  Notice.getStream() << expr::ExprDag(dag);
+  Chat.getStream() << expr::ExprDag(dag);
+  Message.getStream() << expr::ExprDag(dag);
+  Warning.getStream() << expr::ExprDag(dag);
+  Dump.getStream() << expr::ExprDag(dag);
 }
 
 void SmtOptionsHandler::setPrintExprTypes(std::string option) {
-  Debug.getStream() << Expr::printtypes(true);
-  Trace.getStream() << Expr::printtypes(true);
-  Notice.getStream() << Expr::printtypes(true);
-  Chat.getStream() << Expr::printtypes(true);
-  Message.getStream() << Expr::printtypes(true);
-  Warning.getStream() << Expr::printtypes(true);
+  Debug.getStream() << expr::ExprPrintTypes(true);
+  Trace.getStream() << expr::ExprPrintTypes(true);
+  Notice.getStream() << expr::ExprPrintTypes(true);
+  Chat.getStream() << expr::ExprPrintTypes(true);
+  Message.getStream() << expr::ExprPrintTypes(true);
+  Warning.getStream() << expr::ExprPrintTypes(true);
   // intentionally exclude Dump stream from this list
 }
 
index ae4e1f1f00ac68c89481bfe36b0d37893f32c95f..5917d71da64c53b305d7053beef1e86130fadff2 100644 (file)
@@ -25,6 +25,7 @@
 
 #include "base/cvc4_assert.h"
 #include "base/output.h"
+#include "expr/expr_iomanip.h"
 #include "expr/node.h"
 #include "expr/sexpr.h"
 #include "options/options.h"
@@ -984,7 +985,7 @@ void GetValueCommand::printResult(std::ostream& out, uint32_t verbosity) const t
   if(! ok()) {
     this->Command::printResult(out, verbosity);
   } else {
-    Expr::dag::Scope scope(out, false);
+    expr::ExprDag::Scope scope(out, false);
     out << d_result << endl;
   }
 }
index 3f0423f49c8cce99de7d4e69ef026e130ebcd1f9..ddac7e263bf93d1ae63d0b5a700ec161f4d05a8f 100644 (file)
 
 #include <vector>
 
-#include "smt_util/command.h"
-#include "smt/smt_engine_scope.h"
-#include "smt/command_list.h"
+#include "expr/expr_iomanip.h"
+#include "options/base_options.h"
 #include "printer/printer.h"
+#include "smt/command_list.h"
+#include "smt/smt_engine_scope.h"
+#include "smt_util/command.h"
 
 using namespace std;
 
@@ -27,7 +29,7 @@ namespace CVC4 {
 
 std::ostream& operator<<(std::ostream& out, const Model& m) {
   smt::SmtScope smts(&m.d_smt);
-  Expr::dag::Scope scope(out, false);
+  expr::ExprDag::Scope scope(out, false);
   Printer::getPrinter(options::outputLanguage())->toStream(out, m);
   return out;
 }
index 36b24c51bcd734d759078e47b1a545e78bb69ae2..56f966426dc3601d4efc21abdcf2df68789776e5 100644 (file)
@@ -15,6 +15,7 @@
 #include "theory/quantifiers/term_database.h"
 
 #include "expr/datatype.h"
+#include "options/base_options.h"
 #include "options/quantifiers_options.h"
 #include "theory/datatypes/datatypes_rewriter.h"
 #include "theory/quantifiers/ce_guided_instantiation.h"
index 132d67b1cd0f1ea9e30ef023e2a007b0f47ee454..d8a3a65d9f88fd7043ad96e7c88850eeb9508285 100644 (file)
@@ -62,11 +62,11 @@ namespace CVC4 {
 
   }; /* class FloatingPointSize */
 
-
-
-#define ROLL(X,N) (((X) << (N)) | ((X) >> (8*sizeof((X)) - (N)) ))
-
   struct CVC4_PUBLIC FloatingPointSizeHashFunction {
+    static inline size_t ROLL(size_t X, size_t N) {
+      return (((X) << (N)) | ((X) >> (8*sizeof((X)) - (N)) ));
+    }
+
     inline size_t operator() (const FloatingPointSize& fpt) const {
       return size_t(ROLL(fpt.exponent(), 4*sizeof(unsigned)) |
                    fpt.significand());
index dd6cbccb816c748662f7e999294ca98e6f2c0dc8..d27ebd9b3589e9849cfd5c9a07fb26621463b04f 100644 (file)
@@ -29,6 +29,7 @@
 #include <string>
 
 #include "expr/expr.h"
+#include "expr/expr_iomanip.h"
 #include "options/set_language.h"
 #include "parser/parser.h"
 #include "parser/parser_builder.h"
@@ -70,7 +71,7 @@ string translate(string in, InputLanguage inlang, OutputLanguage outlang) {
   psr->setInput(Input::newStringInput(inlang, in, "internal-buffer"));
   Expr e = psr->nextExpression();
   stringstream ss;
-  ss << language::SetLanguage(outlang) << Expr::setdepth(-1) << e;
+  ss << language::SetLanguage(outlang) << expr::ExprSetDepth(-1) << e;
   assert(psr->nextExpression().isNull());// next expr should be null
   assert(psr->done());// parser should be done
   string s = ss.str();
@@ -122,7 +123,7 @@ int runTest() {
 
   assert(psr->done());// parser should be done
 
-  cout << Expr::setdepth(-1);
+  cout << expr::ExprSetDepth(-1);
 
   runTestString("(= (f (f y)) x)");
   runTestString("~BVPLUS(3, 0bin00, 0bin11)[2:1] = 0bin10", input::LANG_CVC4);
index 99b4c625c0d989ed014424ca368f7ebe034c2a75..b202bcccc2dcf6ad7a643f573c5ff7a231a0ed5d 100644 (file)
@@ -19,6 +19,7 @@
 #include <sstream>
 
 #include "expr/expr_manager.h"
+#include "options/base_options.h"
 #include "options/set_language.h"
 #include "options/smt_options.h"
 #include "parser/parser.h"
index 6c3e73d2c121268ef9ad8aa2c8ac767974770267..b351f5c3ed9ff22b2b0d26711e65aba96dc3ed34 100644 (file)
@@ -22,6 +22,7 @@
 
 #include "expr/expr_manager.h"
 #include "main/interactive_shell.h"
+#include "options/base_options.h"
 #include "options/language.h"
 #include "options/options.h"
 #include "parser/parser_builder.h"
index 9b700eda60271b04a21f418ec78219bc46290ea2..6ecc76c2b611ac52daab7666a3d2fe6231a99f98 100644 (file)
@@ -22,6 +22,7 @@
 #include "base/output.h"
 #include "expr/expr.h"
 #include "expr/expr_manager.h"
+#include "options/base_options.h"
 #include "options/language.h"
 #include "options/options.h"
 #include "parser/parser.h"
index 355d4ff37da58c8df762308e9c7d79633d7ad962..4c0eb81ccfa84d833fcc18046f5adee6743d655a 100644 (file)
@@ -18,6 +18,7 @@
 #include <set>
 #include <vector>
 
+#include "expr/expr_iomanip.h"
 #include "expr/kind.h"
 #include "expr/node.h"
 #include "expr/node_manager.h"
@@ -102,7 +103,7 @@ public:
     TS_ASSERT_LESS_THAN_EQUALS(10u,
       BooleanSimplification::DUPLICATE_REMOVAL_THRESHOLD);
 
-    cout << Expr::setdepth(-1)
+    cout << expr::ExprSetDepth(-1)
          << language::SetLanguage(language::output::LANG_CVC4);
   }