/********************* */ /*! \file options_handlers.h ** \verbatim ** Original author: Morgan Deters ** Major contributors: none ** Minor contributors (to current version): none ** This file is part of the CVC4 project. ** Copyright (c) 2009-2014 New York University and The University of Iowa ** See the file COPYING in the top-level source directory for licensing ** information.\endverbatim ** ** \brief Custom handlers and predicates for main driver options ** ** Custom handlers and predicates for main driver options. **/ #include "cvc4_private.h" #ifndef __CVC4__MAIN__OPTIONS_HANDLERS_H #define __CVC4__MAIN__OPTIONS_HANDLERS_H namespace CVC4 { namespace main { inline void showConfiguration(std::string option, SmtEngine* smt) { fputs(Configuration::about().c_str(), stdout); printf("\n"); printf("version : %s\n", Configuration::getVersionString().c_str()); if(Configuration::isGitBuild()) { const char* branchName = Configuration::getGitBranchName(); if(*branchName == '\0') { branchName = "-"; } printf("scm : git [%s %s%s]\n", branchName, std::string(Configuration::getGitCommit()).substr(0, 8).c_str(), Configuration::hasGitModifications() ? " (with modifications)" : ""); } else if(Configuration::isSubversionBuild()) { printf("scm : svn [%s r%u%s]\n", Configuration::getSubversionBranchName(), Configuration::getSubversionRevision(), Configuration::hasSubversionModifications() ? " (with modifications)" : ""); } else { printf("scm : no\n"); } printf("\n"); printf("library : %u.%u.%u\n", Configuration::getVersionMajor(), Configuration::getVersionMinor(), Configuration::getVersionRelease()); printf("\n"); printf("debug code : %s\n", Configuration::isDebugBuild() ? "yes" : "no"); printf("statistics : %s\n", Configuration::isStatisticsBuild() ? "yes" : "no"); printf("replay : %s\n", Configuration::isReplayBuild() ? "yes" : "no"); printf("tracing : %s\n", Configuration::isTracingBuild() ? "yes" : "no"); printf("dumping : %s\n", Configuration::isDumpingBuild() ? "yes" : "no"); printf("muzzled : %s\n", Configuration::isMuzzledBuild() ? "yes" : "no"); printf("assertions : %s\n", Configuration::isAssertionBuild() ? "yes" : "no"); printf("proof : %s\n", Configuration::isProofBuild() ? "yes" : "no"); printf("coverage : %s\n", Configuration::isCoverageBuild() ? "yes" : "no"); printf("profiling : %s\n", Configuration::isProfilingBuild() ? "yes" : "no"); printf("competition: %s\n", Configuration::isCompetitionBuild() ? "yes" : "no"); printf("\n"); printf("cudd : %s\n", Configuration::isBuiltWithCudd() ? "yes" : "no"); printf("cln : %s\n", Configuration::isBuiltWithCln() ? "yes" : "no"); printf("gmp : %s\n", Configuration::isBuiltWithGmp() ? "yes" : "no"); printf("glpk : %s\n", Configuration::isBuiltWithGlpk() ? "yes" : "no"); printf("abc : %s\n", Configuration::isBuiltWithAbc() ? "yes" : "no"); printf("readline : %s\n", Configuration::isBuiltWithReadline() ? "yes" : "no"); printf("tls : %s\n", Configuration::isBuiltWithTlsSupport() ? "yes" : "no"); exit(0); } inline void showDebugTags(std::string option, SmtEngine* smt) { if(Configuration::isDebugBuild() && Configuration::isTracingBuild()) { printf("available tags:"); unsigned ntags = Configuration::getNumDebugTags(); char const* const* tags = Configuration::getDebugTags(); for(unsigned i = 0; i < ntags; ++ i) { printf(" %s", tags[i]); } printf("\n"); } else if(! Configuration::isDebugBuild()) { throw OptionException("debug tags not available in non-debug builds"); } else { throw OptionException("debug tags not available in non-tracing builds"); } exit(0); } inline void showTraceTags(std::string option, SmtEngine* smt) { if(Configuration::isTracingBuild()) { printf("available tags:"); unsigned ntags = Configuration::getNumTraceTags(); char const* const* tags = Configuration::getTraceTags(); for (unsigned i = 0; i < ntags; ++ i) { printf(" %s", tags[i]); } printf("\n"); } else { throw OptionException("trace tags not available in non-tracing build"); } exit(0); } inline void threadN(std::string option, SmtEngine* smt) { throw OptionException(option + " is not a real option by itself. Use e.g. --thread0=\"--random-seed=10 --random-freq=0.02\" --thread1=\"--random-seed=20 --random-freq=0.05\""); } }/* CVC4::main namespace */ }/* CVC4 namespace */ #endif /* __CVC4__MAIN__OPTIONS_HANDLERS_H */