Support setting :regular-output-channel and :diagnostic-output-channel.
authorMorgan Deters <mdeters@gmail.com>
Mon, 6 Aug 2012 22:05:12 +0000 (22:05 +0000)
committerMorgan Deters <mdeters@gmail.com>
Mon, 6 Aug 2012 22:05:12 +0000 (22:05 +0000)
Also some cleanup of option-related exceptions infrastructure.

17 files changed:
configure.ac
src/cvc4.i
src/expr/command.cpp
src/main/options
src/options/Makefile.am
src/options/mkoptions
src/options/option_exception.h [new file with mode: 0644]
src/options/option_exception.i [new file with mode: 0644]
src/options/options.h
src/smt/Makefile.am
src/smt/bad_option_exception.h [deleted file]
src/smt/bad_option_exception.i [deleted file]
src/smt/options
src/smt/options_handlers.h
src/smt/smt_engine.cpp
src/smt/smt_engine.h
src/smt/smt_options_template.cpp

index 6820b2bb44537c91f69e385d40a6c2141f9ed2a5..0e98152be005e923ea23a9aee9ac6e82c2235cd0 100644 (file)
@@ -862,6 +862,9 @@ AC_CHECK_HEADERS([getopt.h unistd.h])
 
 AC_CHECK_DECLS([optreset], [], [], [#include <getopt.h>])
 
+# check with which standard strerror_r() complies
+AC_FUNC_STRERROR_R
+
 # require boost library
 BOOST_REQUIRE()
 
index cddd3891cdbc444ccb79544b3dabe58b7b590077..08b2c509f1c278b4c17a1bad6d8c362f9262cb57 100644 (file)
@@ -117,8 +117,10 @@ using namespace CVC4;
 %include "expr/expr_stream.i"
 
 %include "smt/smt_engine.i"
-%include "smt/bad_option_exception.i"
 %include "smt/no_such_function_exception.i"
 %include "smt/modal_exception.i"
 
+%include "options/options.i"
+%include "options/option_exception.i"
+
 %include "parser/cvc4parser.i"
index 576707fca50ceae0c6a085c5d3af814bc67d2386..7f10c533ed68b29c94776cd0b5261a54e7c53f7f 100644 (file)
@@ -25,7 +25,7 @@
 
 #include "expr/command.h"
 #include "smt/smt_engine.h"
-#include "smt/bad_option_exception.h"
+#include "options/options.h"
 #include "util/output.h"
 #include "util/dump.h"
 #include "util/sexpr.h"
@@ -963,7 +963,7 @@ void SetInfoCommand::invoke(SmtEngine* smtEngine) throw() {
   try {
     smtEngine->setInfo(d_flag, d_sexpr);
     d_commandStatus = CommandSuccess::instance();
-  } catch(BadOptionException&) {
+  } catch(UnrecognizedOptionException&) {
     d_commandStatus = new CommandUnsupported();
   } catch(exception& e) {
     d_commandStatus = new CommandFailure(e.what());
@@ -997,7 +997,7 @@ void GetInfoCommand::invoke(SmtEngine* smtEngine) throw() {
        << response;
     d_result = ss.str();
     d_commandStatus = CommandSuccess::instance();
-  } catch(BadOptionException&) {
+  } catch(UnrecognizedOptionException&) {
     d_commandStatus = new CommandUnsupported();
   } catch(exception& e) {
     d_commandStatus = new CommandFailure(e.what());
@@ -1047,7 +1047,7 @@ void SetOptionCommand::invoke(SmtEngine* smtEngine) throw() {
   try {
     smtEngine->setOption(d_flag, d_sexpr);
     d_commandStatus = CommandSuccess::instance();
-  } catch(BadOptionException&) {
+  } catch(UnrecognizedOptionException&) {
     d_commandStatus = new CommandUnsupported();
   } catch(exception& e) {
     d_commandStatus = new CommandFailure(e.what());
@@ -1082,7 +1082,7 @@ void GetOptionCommand::invoke(SmtEngine* smtEngine) throw() {
     ss << SExpr(v);
     d_result = ss.str();
     d_commandStatus = CommandSuccess::instance();
-  } catch(BadOptionException&) {
+  } catch(UnrecognizedOptionException&) {
     d_commandStatus = new CommandUnsupported();
   } catch(exception& e) {
     d_commandStatus = new CommandFailure(e.what());
index 6defc8642b89507c31cf8a05b1bf4cb196f65dbf..47e397d11b7e0232b82ecfc74f9d47afbe4df8cc 100644 (file)
@@ -30,8 +30,7 @@ option threadArgv std::vector<std::string>
 option thread_id int :default -1
  Thread ID, for internal use in case of multi-threaded run
 option separateOutput bool :default false
- In multi-threaded setting print output of each thread at the
- end of run, separated by a divider ("----").
+ In multi-threaded setting print output of each thread at the end of run, separated by a divider ("----").
 option sharingFilterByLength --filter-lemma-length=N int :default -1 :read-write
  don't share lemmas strictly longer than N
 
index 2db54a4d94df33f281fe76636d237c782ac9c9c7..e1cd721f3767cb1160f8c919fcca955d24fbb863 100644 (file)
@@ -28,7 +28,8 @@ noinst_LTLIBRARIES = liboptions.la
 
 liboptions_la_SOURCES = \
        options.h \
-       base_options_handlers.h
+       base_options_handlers.h \
+       option_exception.h
 
 nodist_liboptions_la_SOURCES = \
        options.cpp \
@@ -60,6 +61,7 @@ EXTRA_DIST = \
        options_template.cpp \
        options_holder_template.h \
        options.i \
+       option_exception.i \
        $(OPTIONS_FILES:%=../%)
 
 if CVC4_DEBUG
index 2bfd6a2d9aeb5d51bed9d2f0c5caeb5e18e3b36a..a551d5bd970380ceea35a72341585b0de356c5a9 100755 (executable)
@@ -649,7 +649,7 @@ template <> options::${internal}__option_t::type runHandlerAndPredicates(options
         for handler in $handlers; do
           run_handlers="$run_handlers
 #line $lineno \"$kf\"
-    $handler(\"$smtname\", value, smt);
+    $handler(\"$smtname\", optarg, smt);
 "
         done
       fi
@@ -665,7 +665,7 @@ template <> options::${internal}__option_t::type runHandlerAndPredicates(options
       for handler in $handlers; do
         run_handlers="$run_handlers
 #line $lineno \"$kf\"
-    $handler(\"$smtname\", value, smt);
+    $handler(\"$smtname\", optarg, smt);
 "
       done
       smt_setoption_handlers="${smt_setoption_handlers}
diff --git a/src/options/option_exception.h b/src/options/option_exception.h
new file mode 100644 (file)
index 0000000..657bc75
--- /dev/null
@@ -0,0 +1,58 @@
+/*********************                                                        */
+/*! \file option_exception.h
+ ** \verbatim
+ ** Original author: mdeters
+ ** Major contributors: taking, cconway
+ ** Minor contributors (to current version): dejan
+ ** This file is part of the CVC4 prototype.
+ ** Copyright (c) 2009-2012  The Analysis of Computer Systems Group (ACSys)
+ ** Courant Institute of Mathematical Sciences
+ ** New York University
+ ** See the file COPYING in the top-level source directory for licensing
+ ** information.\endverbatim
+ **
+ ** \brief Options-related exceptions
+ **
+ ** Options-related exceptions.
+ **/
+
+#include "cvc4_public.h"
+
+#ifndef __CVC4__OPTION_EXCEPTION_H
+#define __CVC4__OPTION_EXCEPTION_H
+
+#include "util/exception.h"
+
+namespace CVC4 {
+
+/**
+ * Class representing an option-parsing exception such as badly-typed
+ * or missing arguments, arguments out of bounds, etc.  If an option
+ * name is itself unrecognized, a UnrecognizedOptionException (a derived
+ * class, below) should be used instead.
+ */
+class CVC4_PUBLIC OptionException : public CVC4::Exception {
+public:
+  OptionException(const std::string& s) throw() :
+    CVC4::Exception("Error in option parsing: " + s) {
+  }
+};/* class OptionException */
+
+/**
+ * Class representing an exception in option processing due to an
+ * unrecognized or unsupported option key.
+ */
+class CVC4_PUBLIC UnrecognizedOptionException : public CVC4::OptionException {
+public:
+  UnrecognizedOptionException() :
+    CVC4::OptionException("Unrecognized informational or option key or setting") {
+  }
+
+  UnrecognizedOptionException(const std::string& msg) :
+    CVC4::OptionException(msg) {
+  }
+};/* class UnrecognizedOptionException */
+
+}/* CVC4 namespace */
+
+#endif /* __CVC4__OPTION_EXCEPTION_H */
diff --git a/src/options/option_exception.i b/src/options/option_exception.i
new file mode 100644 (file)
index 0000000..ae68d4e
--- /dev/null
@@ -0,0 +1,5 @@
+%{
+#include "options/option_exception.h"
+%}
+
+%include "options/option_exception.h"
index a3abdd54b490b68b8d587b579e49683117c897c7..c966670f5c495755433434d8db8837a8ebcf0b84 100644 (file)
@@ -25,7 +25,7 @@
 #include <fstream>
 #include <string>
 
-#include "util/exception.h"
+#include "options/option_exception.h"
 #include "util/language.h"
 #include "util/tls.h"
 
@@ -40,14 +40,6 @@ class NodeManager;
 class NodeManagerScope;
 class SmtEngine;
 
-/** Class representing an option-parsing exception. */
-class CVC4_PUBLIC OptionException : public CVC4::Exception {
-public:
-  OptionException(const std::string& s) throw() :
-    CVC4::Exception("Error in option parsing: " + s) {
-  }
-};/* class OptionException */
-
 class CVC4_PUBLIC Options {
   /** The struct that holds all option values. */
   options::OptionsHolder* d_holder;
index 9cc236a13b5a58416e6ca6478cf3324154aa718e..76cebbdd17b995fb63f120d0101e1c9244fe8e9d 100644 (file)
@@ -11,7 +11,6 @@ libsmt_la_SOURCES = \
        smt_engine_scope.cpp \
        smt_engine_scope.h \
        modal_exception.h \
-       bad_option_exception.h \
        no_such_function_exception.h \
        simplification_mode.h \
        simplification_mode.cpp
@@ -22,7 +21,6 @@ nodist_libsmt_la_SOURCES = \
 EXTRA_DIST = \
        options_handlers.h \
        smt_options_template.cpp \
-       bad_option_exception.i \
        no_such_function_exception.i \
        modal_exception.i \
        smt_engine.i
diff --git a/src/smt/bad_option_exception.h b/src/smt/bad_option_exception.h
deleted file mode 100644 (file)
index 8fafb95..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-/*********************                                                        */
-/*! \file bad_option_exception.h
- ** \verbatim
- ** Original author: mdeters
- ** Major contributors: none
- ** Minor contributors (to current version): none
- ** This file is part of the CVC4 prototype.
- ** Copyright (c) 2009, 2010, 2011  The Analysis of Computer Systems Group (ACSys)
- ** Courant Institute of Mathematical Sciences
- ** New York University
- ** See the file COPYING in the top-level source directory for licensing
- ** information.\endverbatim
- **
- ** \brief An exception that is thrown when an option setting is not
- ** understood.
- **
- ** An exception that is thrown when an interactive-only feature while
- ** CVC4 is being used in a non-interactive setting (for example, the
- ** "(get-assertions)" command in an SMT-LIBv2 script).
- **/
-
-#include "cvc4_public.h"
-
-#ifndef __CVC4__SMT__BAD_OPTION_EXCEPTION_H
-#define __CVC4__SMT__BAD_OPTION_EXCEPTION_H
-
-#include "util/exception.h"
-
-namespace CVC4 {
-
-class CVC4_PUBLIC BadOptionException : public CVC4::Exception {
-public:
-  BadOptionException() :
-    Exception("Unrecognized informational or option key or setting") {
-  }
-
-  BadOptionException(const std::string& msg) :
-    Exception(msg) {
-  }
-
-  BadOptionException(const char* msg) :
-    Exception(msg) {
-  }
-};/* class BadOptionException */
-
-}/* CVC4 namespace */
-
-#endif /* __CVC4__SMT__BAD_OPTION_EXCEPTION_H */
diff --git a/src/smt/bad_option_exception.i b/src/smt/bad_option_exception.i
deleted file mode 100644 (file)
index eeded5a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-%{
-#include "smt/bad_option_exception.h"
-%}
-
-%ignore CVC4::BadOptionException::BadOptionException(const char*);
-
-%include "smt/bad_option_exception.h"
index 5ee65e50a42b1647b2dcccb28407f1dea86c0203..13b3b51f326e92e4a06d4e551c972c1b229c8cd0 100644 (file)
@@ -55,6 +55,11 @@ option repeatSimp --repeat-simp bool :read-write
 common-option incrementalSolving incremental -i --incremental bool
  enable incremental solving
 
+option - regular-output-channel argument :handler CVC4::smt::setRegularOutputChannel :handler-include "smt/options_handlers.h"
+ set the regular output channel of the solver
+option - diagnostic-output-channel argument :handler CVC4::smt::setDiagnosticOutputChannel :handler-include "smt/options_handlers.h"
+ set the diagnostic output channel of the solver
+
 common-option cumulativeMillisecondLimit --tlimit=MS "unsigned long"
  enable time limiting (give milliseconds)
 common-option perCallMillisecondLimit --tlimit-per=MS "unsigned long"
index f111f512b13ea449405ee86173d30bd1ee1a195a..925f86d4837ca4251fe8edd45c8d8783a8fa2c10 100644 (file)
 #ifndef __CVC4__SMT__OPTIONS_HANDLERS_H
 #define __CVC4__SMT__OPTIONS_HANDLERS_H
 
+#include "cvc4autoconfig.h"
 #include "util/dump.h"
 
+#include <cerrno>
+#include <cstring>
+#include <sstream>
+
 namespace CVC4 {
 namespace smt {
 
+static inline std::string __cvc4_errno_failreason() {
+#if HAVE_STRERROR_R
+#if STRERROR_R_CHAR_P
+  if(errno != 0) {
+    // GNU version of strerror_r: *might* use the given buffer,
+    // or might not.  It returns a pointer to buf, or not.
+    char buf[80];
+    return std::string(strerror_r(errno, buf, sizeof buf));
+  } else {
+    return "unknown reason";
+  }
+#else /* STRERROR_R_CHAR_P */
+  if(errno != 0) {
+    // XSI version of strerror_r: always uses the given buffer.
+    // Returns an error code.
+    char buf[80];
+    if(strerror_r(errno, buf, sizeof buf) == 0) {
+      return std::string(buf);
+    } else {
+      // some error occurred while getting the error string
+      return "unknown reason";
+    }
+  } else {
+    return "unknown reason";
+  }
+#endif /* STRERROR_R_CHAR_P */
+#else /* HAVE_STRERROR_R */
+  return "unknown reason";
+#endif /* HAVE_STRERROR_R */
+}
+
 static const std::string dumpHelp = "\
 Dump modes currently supported by the --dump option:\n\
 \n\
@@ -179,42 +215,107 @@ inline void dumpMode(std::string option, std::string optarg, SmtEngine* smt) {
 #endif /* CVC4_DUMPING */
 }
 
+inline SimplificationMode stringToSimplificationMode(std::string option, std::string optarg, SmtEngine* smt) throw(OptionException) {
+  if(optarg == "batch") {
+    return SIMPLIFICATION_MODE_BATCH;
+  } else if(optarg == "incremental") {
+    return SIMPLIFICATION_MODE_INCREMENTAL;
+  } else if(optarg == "none") {
+    return SIMPLIFICATION_MODE_NONE;
+  } else if(optarg == "help") {
+    puts(simplificationHelp.c_str());
+    exit(1);
+  } else {
+    throw OptionException(std::string("unknown option for --simplification: `") +
+                          optarg + "'.  Try --simplification help.");
+  }
+}
+
+// This macro is used for setting :regular-output-channel and :diagnostic-output-channel
+// to redirect a stream.  It maintains all attributes set on the stream.
+#define __CVC4__SMT__OUTPUTCHANNELS__SETSTREAM__(__channel_get, __channel_set) \
+  { \
+    int dagSetting = expr::ExprDag::getDag(__channel_get); \
+    size_t exprDepthSetting = expr::ExprSetDepth::getDepth(__channel_get); \
+    bool printtypesSetting = expr::ExprPrintTypes::getPrintTypes(__channel_get); \
+    OutputLanguage languageSetting = expr::ExprSetLanguage::getLanguage(__channel_get); \
+    __channel_set; \
+    __channel_get << Expr::dag(dagSetting); \
+    __channel_get << Expr::setdepth(exprDepthSetting); \
+    __channel_get << Expr::printtypes(printtypesSetting); \
+    __channel_get << Expr::setlanguage(languageSetting); \
+  }
+
 inline void dumpToFile(std::string option, std::string optarg, SmtEngine* smt) {
 #ifdef CVC4_DUMPING
-  size_t dagSetting = expr::ExprDag::getDag(Dump.getStream());
+  std::ostream* outStream = NULL;
   if(optarg == "") {
     throw OptionException(std::string("Bad file name for --dump-to"));
   } else if(optarg == "-") {
-    Dump.setStream(DumpOutC::dump_cout);
+    outStream = &DumpOutC::dump_cout;
   } else {
-    std::ostream* dumpTo = new std::ofstream(optarg.c_str(), std::ofstream::out | std::ofstream::trunc);
-    if(!*dumpTo) {
-      throw OptionException(std::string("Cannot open dump-to file (maybe it exists): `") + optarg + "'");
+    errno = 0;
+    outStream = new std::ofstream(optarg.c_str(), std::ofstream::out | std::ofstream::trunc);
+    if(outStream == NULL || !*outStream) {
+      std::stringstream ss;
+      ss << "Cannot open dump-to file: `" << optarg << "': " << __cvc4_errno_failreason();
+      throw OptionException(ss.str());
     }
-    Dump.setStream(*dumpTo);
   }
-  expr::ExprDag::setDag(Dump.getStream(), dagSetting);
+  __CVC4__SMT__OUTPUTCHANNELS__SETSTREAM__(Dump.getStream(), Dump.setStream(*outStream));
 #else /* CVC4_DUMPING */
   throw OptionException("The dumping feature was disabled in this build of CVC4.");
 #endif /* CVC4_DUMPING */
 }
 
-inline SimplificationMode stringToSimplificationMode(std::string option, std::string optarg, SmtEngine* smt) throw(OptionException) {
-  if(optarg == "batch") {
-    return SIMPLIFICATION_MODE_BATCH;
-  } else if(optarg == "incremental") {
-    return SIMPLIFICATION_MODE_INCREMENTAL;
-  } else if(optarg == "none") {
-    return SIMPLIFICATION_MODE_NONE;
-  } else if(optarg == "help") {
-    puts(simplificationHelp.c_str());
-    exit(1);
+inline void setRegularOutputChannel(std::string option, std::string optarg, SmtEngine* smt) {
+  std::ostream* outStream = NULL;
+  if(optarg == "") {
+    throw OptionException(std::string("Bad file name setting for regular output channel"));
+  } else if(optarg == "stdout") {
+    outStream = &std::cout;
+  } else if(optarg == "stderr") {
+    outStream = &std::cerr;
   } else {
-    throw OptionException(std::string("unknown option for --simplification: `") +
-                          optarg + "'.  Try --simplification help.");
+    errno = 0;
+    outStream = new std::ofstream(optarg.c_str(), std::ofstream::out | std::ofstream::trunc);
+    if(outStream == NULL || !*outStream) {
+      std::stringstream ss;
+      ss << "Cannot open regular-output-channel file: `" << optarg << "': " << __cvc4_errno_failreason();
+      throw OptionException(ss.str());
+    }
+  }
+  __CVC4__SMT__OUTPUTCHANNELS__SETSTREAM__(*options::err(), options::err.set(outStream));
+}
+
+inline void setDiagnosticOutputChannel(std::string option, std::string optarg, SmtEngine* smt) {
+  std::ostream* outStream = NULL;
+  if(optarg == "") {
+    throw OptionException(std::string("Bad file name setting for diagnostic output channel"));
+  } else if(optarg == "stdout") {
+    outStream = &std::cout;
+  } else if(optarg == "stderr") {
+    outStream = &std::cerr;
+  } else {
+    errno = 0;
+    outStream = new std::ofstream(optarg.c_str(), std::ofstream::out | std::ofstream::trunc);
+    if(outStream == NULL || !*outStream) {
+      std::stringstream ss;
+      ss << "Cannot open diagnostic-output-channel file: `" << optarg << "': " << __cvc4_errno_failreason();
+      throw OptionException(ss.str());
+    }
   }
+  __CVC4__SMT__OUTPUTCHANNELS__SETSTREAM__(Debug.getStream(), Debug.setStream(*outStream));
+  __CVC4__SMT__OUTPUTCHANNELS__SETSTREAM__(Warning.getStream(), Warning.setStream(*outStream));
+  __CVC4__SMT__OUTPUTCHANNELS__SETSTREAM__(Message.getStream(), Message.setStream(*outStream));
+  __CVC4__SMT__OUTPUTCHANNELS__SETSTREAM__(Notice.getStream(), Notice.setStream(*outStream));
+  __CVC4__SMT__OUTPUTCHANNELS__SETSTREAM__(Chat.getStream(), Chat.setStream(*outStream));
+  __CVC4__SMT__OUTPUTCHANNELS__SETSTREAM__(Trace.getStream(), Trace.setStream(*outStream));
+  __CVC4__SMT__OUTPUTCHANNELS__SETSTREAM__(*options::err(), options::err.set(outStream));
 }
 
+#undef __CVC4__SMT__OUTPUTCHANNELS__SETSTREAM
+
 inline std::string checkReplayFilename(std::string option, std::string optarg, SmtEngine* smt) {
 #ifdef CVC4_REPLAY
   if(optarg == "") {
@@ -234,9 +335,12 @@ inline std::ostream* checkReplayLogFilename(std::string option, std::string opta
   } else if(optarg == "-") {
     return &std::cout;
   } else {
+    errno = 0;
     std::ostream* replayLog = new std::ofstream(optarg.c_str(), std::ofstream::out | std::ofstream::trunc);
-    if(!*replayLog) {
-      throw OptionException(std::string("Cannot open replay-log file: `") + optarg + "'");
+    if(replayLog == NULL || !*replayLog) {
+      std::stringstream ss;
+      ss << "Cannot open replay-log file: `" << optarg << "': " << __cvc4_errno_failreason();
+      throw OptionException(ss.str());
     }
     return replayLog;
   }
index 6b7ca8d2fa8e6a16cce242e0833cc4fc66ebc468..de5971306c4ff689c00ae40c3f4956c0e3c76e1b 100644 (file)
@@ -38,7 +38,6 @@
 #include "expr/metakind.h"
 #include "expr/node_builder.h"
 #include "prop/prop_engine.h"
-#include "smt/bad_option_exception.h"
 #include "smt/modal_exception.h"
 #include "smt/no_such_function_exception.h"
 #include "smt/smt_engine.h"
@@ -50,6 +49,7 @@
 #include "util/configuration.h"
 #include "util/exception.h"
 #include "smt/options.h"
+#include "options/option_exception.h"
 #include "util/output.h"
 #include "util/hash.h"
 #include "theory/substitutions.h"
@@ -607,7 +607,7 @@ void SmtEngine::setLogicInternal() throw(AssertionException) {
 }
 
 void SmtEngine::setInfo(const std::string& key, const CVC4::SExpr& value)
-  throw(BadOptionException, ModalException) {
+  throw(OptionException, ModalException) {
 
   SmtScope smts(this);
 
@@ -631,7 +631,7 @@ void SmtEngine::setInfo(const std::string& key, const CVC4::SExpr& value)
       string cvc4key = key.substr(6);
       if(cvc4key == "logic") {
         if(! value.isAtom()) {
-          throw BadOptionException("argument to (set-info :cvc4-logic ..) must be a string");
+          throw OptionException("argument to (set-info :cvc4-logic ..) must be a string");
         }
         SmtScope smts(this);
         d_logic = value.getValue();
@@ -656,17 +656,17 @@ void SmtEngine::setInfo(const std::string& key, const CVC4::SExpr& value)
       s = value.getValue();
     }
     if(s != "sat" && s != "unsat" && s != "unknown") {
-      throw BadOptionException("argument to (set-info :status ..) must be "
-                               "`sat' or `unsat' or `unknown'");
+      throw OptionException("argument to (set-info :status ..) must be "
+                            "`sat' or `unsat' or `unknown'");
     }
     d_status = Result(s);
     return;
   }
-  throw BadOptionException();
+  throw UnrecognizedOptionException();
 }
 
 CVC4::SExpr SmtEngine::getInfo(const std::string& key) const
-  throw(BadOptionException, ModalException) {
+  throw(OptionException, ModalException) {
 
   SmtScope smts(this);
 
@@ -721,7 +721,7 @@ CVC4::SExpr SmtEngine::getInfo(const std::string& key) const
                            "last result wasn't unknown!");
     }
   } else {
-    throw BadOptionException();
+    throw UnrecognizedOptionException();
   }
 }
 
index 52a2e0c27f2d2012e94bef8c4d0d94ec66b7d91b..505a2d8d895da9a1a475ddb5d73b089b9f6c62db 100644 (file)
@@ -30,7 +30,6 @@
 #include "expr/expr_manager.h"
 #include "util/proof.h"
 #include "util/model.h"
-#include "smt/bad_option_exception.h"
 #include "smt/modal_exception.h"
 #include "smt/no_such_function_exception.h"
 #include "util/hash.h"
@@ -303,25 +302,25 @@ public:
    * Set information about the script executing.
    */
   void setInfo(const std::string& key, const CVC4::SExpr& value)
-    throw(BadOptionException, ModalException);
+    throw(OptionException, ModalException);
 
   /**
    * Query information about the SMT environment.
    */
   CVC4::SExpr getInfo(const std::string& key) const
-    throw(BadOptionException, ModalException);
+    throw(OptionException, ModalException);
 
   /**
    * Set an aspect of the current SMT execution environment.
    */
   void setOption(const std::string& key, const CVC4::SExpr& value)
-    throw(BadOptionException, ModalException);
+    throw(OptionException, ModalException);
 
   /**
    * Get an aspect of the current SMT execution environment.
    */
   CVC4::SExpr getOption(const std::string& key) const
-    throw(BadOptionException);
+    throw(OptionException);
 
   /**
    * Add a formula to the current context: preprocess, do per-theory
index f34a0e2dbf208fa40a82668628c72782001db650..b254a3b30f8a75e0cdac08e416d9b58276e15dc1 100644 (file)
@@ -17,7 +17,6 @@
  **/
 
 #include "smt/smt_engine.h"
-#include "smt/bad_option_exception.h"
 #include "smt/modal_exception.h"
 #include "util/sexpr.h"
 #include "util/dump.h"
 ${include_all_option_headers}
 ${option_handler_includes}
 
-#line 34 "${template}"
+#line 33 "${template}"
 
 using namespace std;
 
 namespace CVC4 {
 
 void SmtEngine::setOption(const std::string& key, const CVC4::SExpr& value)
-  throw(BadOptionException, ModalException) {
+  throw(OptionException, ModalException) {
 
   NodeManagerScope nms(d_nodeManager);
   SmtEngine* const smt = this;
@@ -51,13 +50,13 @@ void SmtEngine::setOption(const std::string& key, const CVC4::SExpr& value)
 
   ${smt_setoption_handlers}
 
-#line 55 "${template}"
+#line 54 "${template}"
 
-  throw BadOptionException();
+  throw UnrecognizedOptionException();
 }
 
 CVC4::SExpr SmtEngine::getOption(const std::string& key) const
-  throw(BadOptionException) {
+  throw(OptionException) {
 
   NodeManagerScope nms(d_nodeManager);
 
@@ -68,9 +67,9 @@ CVC4::SExpr SmtEngine::getOption(const std::string& key) const
 
   ${smt_getoption_handlers}
 
-#line 72 "${template}"
+#line 71 "${template}"
 
-  throw BadOptionException();
+  throw UnrecognizedOptionException();
 }
 
 }/* CVC4 namespace */