diff options
author | Tim King <taking@google.com> | 2016-01-28 12:35:45 -0800 |
---|---|---|
committer | Tim King <taking@google.com> | 2016-01-28 12:35:45 -0800 |
commit | 2ba8bb701ce289ba60afec01b653b0930cc59298 (patch) | |
tree | 46df365b7b41ce662a0f94de5b11c3ed20829851 /src/util | |
parent | 42b665f2a00643c81b42932fab1441987628c5a5 (diff) |
Adding listeners to Options.
- Options
-- Added the new option attribute :notify. One can get a notify() call on the Listener after a the option's value is updated. This is the new preferred way to achieve dynamic dispatch for options.
-- Removed SmtOptionsHandler and pushed its functionality into OptionsHandler and Listeners.
-- Added functions to Options for registering listeners of the notify calls.
-- Changed a number of options to use the new listener infrastructure.
-- Fixed a number of warnings in options.
-- Added the ArgumentExtender class to better capture how arguments are inserted while parsing options and ease memory management. Previously this was the "preemptGetopt" procedure.
-- Moved options/options_handler_interface.{cpp,h} to options/options_handler.{cpp,h}.
- Theories
-- Reimplemented alternative theories to use a datastructure stored on TheoryEngine instead of on Options.
- Ostream Handling:
-- Added new functionality that generalized how ostreams are opened, options/open_stream.h.
-- Simplified the memory management for different ostreams, smt/managed_ostreams.h.
-- Had the SmtEnginePrivate manage the memory for the ostreams set by options.
-- Simplified how the setting of ostreams are updated, smt/update_ostream.h.
- Configuration and Tags:
-- Configuration can now be used during predicates and handlers for options.
-- Moved configuration.{cpp,h,i} and configuration_private.h from util/ into base/.
-- Moved {Debug,Trace}_tags.* from being generated in options/ into base/.
- cvc4_private.h
-- Upgraded #warning's in cvc4_private.h and cvc4_private_library.h to #error's.
-- Added public first-order (non-templatized) member functions for options get and set the value of options outside of libcvc4. Fixed all of the use locations.
-- Made lib/lib/clock_gettime.h a cvc4_private_library.h header.
- Antlr
-- Fixed antlr and cvc4 macro definition conflicts that caused warnings.
- SmtGlobals
-- Refactored replayStream and replayLog out of SmtGlobals.
-- Renamed SmtGlobals to LemmaChannels and moved the implementation into smt_util/lemma_channels.{h,cpp}.
Diffstat (limited to 'src/util')
-rw-r--r-- | src/util/Makefile.am | 4 | ||||
-rw-r--r-- | src/util/cache.h | 4 | ||||
-rw-r--r-- | src/util/configuration.cpp | 293 | ||||
-rw-r--r-- | src/util/configuration.h | 135 | ||||
-rw-r--r-- | src/util/configuration.i | 7 | ||||
-rw-r--r-- | src/util/configuration_private.h | 163 | ||||
-rw-r--r-- | src/util/resource_manager.cpp | 18 | ||||
-rw-r--r-- | src/util/resource_manager.h | 32 | ||||
-rw-r--r-- | src/util/sexpr.cpp | 13 |
9 files changed, 48 insertions, 621 deletions
diff --git a/src/util/Makefile.am b/src/util/Makefile.am index e95faea56..a8e37c93c 100644 --- a/src/util/Makefile.am +++ b/src/util/Makefile.am @@ -25,9 +25,6 @@ libutil_la_SOURCES = \ cardinality.cpp \ cardinality.h \ channel.h \ - configuration.cpp \ - configuration.h \ - configuration_private.h \ debug.h \ dense_map.h \ divisible.cpp \ @@ -81,7 +78,6 @@ EXTRA_DIST = \ bitvector.i \ bool.i \ cardinality.i \ - configuration.i \ divisible.i \ floatingpoint.i \ hash.i \ diff --git a/src/util/cache.h b/src/util/cache.h index 5183c439b..788c89d83 100644 --- a/src/util/cache.h +++ b/src/util/cache.h @@ -39,8 +39,8 @@ class Cache { typename Map::iterator d_result; // disallow copy/assignment - Cache(const Cache&) CVC4_UNUSED; - Cache& operator=(const Cache&) CVC4_UNUSED; + Cache(const Cache&) CVC4_UNDEFINED; + Cache& operator=(const Cache&) CVC4_UNDEFINED; public: diff --git a/src/util/configuration.cpp b/src/util/configuration.cpp deleted file mode 100644 index bbde7193f..000000000 --- a/src/util/configuration.cpp +++ /dev/null @@ -1,293 +0,0 @@ -/********************* */ -/*! \file configuration.cpp - ** \verbatim - ** Original author: Morgan Deters - ** Major contributors: none - ** Minor contributors (to current version): Liana Hadarean, Tim King, ACSYS, Christopher L. Conway, Dejan Jovanovic, Francois Bobot - ** 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 Implementation of Configuration class, which provides compile-time - ** configuration information about the CVC4 library - ** - ** Implementation of Configuration class, which provides compile-time - ** configuration information about the CVC4 library. - **/ -#include "util/configuration.h" - -#include <stdlib.h> -#include <string.h> - -#include <sstream> -#include <string> - -#include "cvc4autoconfig.h" -#include "util/configuration_private.h" - -#if defined(CVC4_DEBUG) && defined(CVC4_TRACING) -# include "options/Debug_tags.h" -#endif /* CVC4_DEBUG && CVC4_TRACING */ - -#ifdef CVC4_TRACING -# include "options/Trace_tags.h" -#endif /* CVC4_TRACING */ - -using namespace std; - -namespace CVC4 { - -string Configuration::getName() { - return PACKAGE_NAME; -} - -bool Configuration::isDebugBuild() { - return IS_DEBUG_BUILD; -} - -bool Configuration::isStatisticsBuild() { - return IS_STATISTICS_BUILD; -} - -bool Configuration::isReplayBuild() { - return IS_REPLAY_BUILD; -} - -bool Configuration::isTracingBuild() { - return IS_TRACING_BUILD; -} - -bool Configuration::isDumpingBuild() { - return IS_DUMPING_BUILD; -} - -bool Configuration::isMuzzledBuild() { - return IS_MUZZLED_BUILD; -} - -bool Configuration::isAssertionBuild() { - return IS_ASSERTIONS_BUILD; -} - -bool Configuration::isProofBuild() { - return IS_PROOFS_BUILD; -} - -bool Configuration::isCoverageBuild() { - return IS_COVERAGE_BUILD; -} - -bool Configuration::isProfilingBuild() { - return IS_PROFILING_BUILD; -} - -bool Configuration::isCompetitionBuild() { - return IS_COMPETITION_BUILD; -} - -string Configuration::getPackageName() { - return PACKAGE_NAME; -} - -string Configuration::getVersionString() { - return CVC4_RELEASE_STRING; -} - -unsigned Configuration::getVersionMajor() { - return CVC4_MAJOR; -} - -unsigned Configuration::getVersionMinor() { - return CVC4_MINOR; -} - -unsigned Configuration::getVersionRelease() { - return CVC4_RELEASE; -} - -std::string Configuration::getVersionExtra() { - return CVC4_EXTRAVERSION; -} - -std::string Configuration::about() { - return CVC4_ABOUT_STRING; -} - -bool Configuration::licenseIsGpl() { - return IS_GPL_BUILD; -} - -bool Configuration::isBuiltWithGmp() { - return IS_GMP_BUILD; -} - -bool Configuration::isBuiltWithCln() { - return IS_CLN_BUILD; -} - -bool Configuration::isBuiltWithGlpk() { - return IS_GLPK_BUILD; -} - -bool Configuration::isBuiltWithAbc() { - return IS_ABC_BUILD; -} - -bool Configuration::isBuiltWithReadline() { - return IS_READLINE_BUILD; -} - -bool Configuration::isBuiltWithCudd() { - return false; -} - -bool Configuration::isBuiltWithTlsSupport() { - return USING_TLS; -} - -unsigned Configuration::getNumDebugTags() { -#if defined(CVC4_DEBUG) && defined(CVC4_TRACING) - /* -1 because a NULL pointer is inserted as the last value */ - return (sizeof(Debug_tags) / sizeof(Debug_tags[0])) - 1; -#else /* CVC4_DEBUG && CVC4_TRACING */ - return 0; -#endif /* CVC4_DEBUG && CVC4_TRACING */ -} - -char const* const* Configuration::getDebugTags() { -#if defined(CVC4_DEBUG) && defined(CVC4_TRACING) - return Debug_tags; -#else /* CVC4_DEBUG && CVC4_TRACING */ - static char const* no_tags[] = { NULL }; - return no_tags; -#endif /* CVC4_DEBUG && CVC4_TRACING */ -} - -int strcmpptr(const char **s1, const char **s2){ - return strcmp(*s1,*s2); -} - -bool Configuration::isDebugTag(char const *tag){ -#if defined(CVC4_DEBUG) && defined(CVC4_TRACING) - unsigned ntags = getNumDebugTags(); - char const* const* tags = getDebugTags(); - for (unsigned i = 0; i < ntags; ++ i) { - if (strcmp(tag, tags[i]) == 0) { - return true; - } - } -#endif /* CVC4_DEBUG && CVC4_TRACING */ - return false; -} - -unsigned Configuration::getNumTraceTags() { -#if CVC4_TRACING - /* -1 because a NULL pointer is inserted as the last value */ - return sizeof(Trace_tags) / sizeof(Trace_tags[0]) - 1; -#else /* CVC4_TRACING */ - return 0; -#endif /* CVC4_TRACING */ -} - -char const* const* Configuration::getTraceTags() { -#if CVC4_TRACING - return Trace_tags; -#else /* CVC4_TRACING */ - static char const* no_tags[] = { NULL }; - return no_tags; -#endif /* CVC4_TRACING */ -} - -bool Configuration::isTraceTag(char const * tag){ -#if CVC4_TRACING - unsigned ntags = getNumTraceTags(); - char const* const* tags = getTraceTags(); - for (unsigned i = 0; i < ntags; ++ i) { - if (strcmp(tag, tags[i]) == 0) { - return true; - } - } -#endif /* CVC4_TRACING */ - return false; -} - -bool Configuration::isGitBuild() { - return IS_GIT_BUILD; -} - -const char* Configuration::getGitBranchName() { - return GIT_BRANCH_NAME; -} - -const char* Configuration::getGitCommit() { - return GIT_COMMIT; -} - -bool Configuration::hasGitModifications() { - return GIT_HAS_MODIFICATIONS; -} - -std::string Configuration::getGitId() { - if(! isGitBuild()) { - return ""; - } - - const char* branchName = getGitBranchName(); - if(*branchName == '\0') { - branchName = "-"; - } - - stringstream ss; - ss << "git " << branchName << " " << string(getGitCommit()).substr(0, 8) - << ( ::CVC4::Configuration::hasGitModifications() ? " (with modifications)" : "" ); - return ss.str(); -} - -bool Configuration::isSubversionBuild() { - return IS_SUBVERSION_BUILD; -} - -const char* Configuration::getSubversionBranchName() { - return SUBVERSION_BRANCH_NAME; -} - -unsigned Configuration::getSubversionRevision() { - return SUBVERSION_REVISION; -} - -bool Configuration::hasSubversionModifications() { - return SUBVERSION_HAS_MODIFICATIONS; -} - -std::string Configuration::getSubversionId() { - if(! isSubversionBuild()) { - return ""; - } - - stringstream ss; - ss << "subversion " << getSubversionBranchName() << " r" << getSubversionRevision() - << ( ::CVC4::Configuration::hasSubversionModifications() ? " (with modifications)" : "" ); - return ss.str(); -} - -std::string Configuration::getCompiler() { - stringstream ss; -#ifdef __GNUC__ - ss << "GCC"; -#else /* __GNUC__ */ - ss << "unknown compiler"; -#endif /* __GNUC__ */ -#ifdef __VERSION__ - ss << " version " << __VERSION__; -#else /* __VERSION__ */ - ss << ", unknown version"; -#endif /* __VERSION__ */ - return ss.str(); -} - -std::string Configuration::getCompiledDateTime() { - return __DATE__ " " __TIME__; -} - -}/* CVC4 namespace */ diff --git a/src/util/configuration.h b/src/util/configuration.h deleted file mode 100644 index 818652db0..000000000 --- a/src/util/configuration.h +++ /dev/null @@ -1,135 +0,0 @@ -/********************* */ -/*! \file configuration.h - ** \verbatim - ** Original author: Morgan Deters - ** Major contributors: none - ** Minor contributors (to current version): ACSYS, Liana Hadarean, Tim King, Francois Bobot - ** 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 Interface to a public class that provides compile-time information - ** about the CVC4 library. - ** - ** Interface to a public class that provides compile-time information - ** about the CVC4 library. - **/ - -#include "cvc4_public.h" - -#ifndef __CVC4__CONFIGURATION_H -#define __CVC4__CONFIGURATION_H - -#include <string> - -namespace CVC4 { - -/** - * Represents the (static) configuration of CVC4. - */ -class CVC4_PUBLIC Configuration { -private: - /** Private default ctor: Disallow construction of this class */ - Configuration(); - - // these constants are filled in by the build system - static const bool IS_SUBVERSION_BUILD; - static const char* const SUBVERSION_BRANCH_NAME; - static const unsigned SUBVERSION_REVISION; - static const bool SUBVERSION_HAS_MODIFICATIONS; - static const bool IS_GIT_BUILD; - static const char* const GIT_BRANCH_NAME; - static const char* const GIT_COMMIT; - static const bool GIT_HAS_MODIFICATIONS; - -public: - - static std::string getName(); - - static bool isDebugBuild(); - - static bool isStatisticsBuild(); - - static bool isReplayBuild(); - - static bool isTracingBuild(); - - static bool isDumpingBuild(); - - static bool isMuzzledBuild(); - - static bool isAssertionBuild(); - - static bool isProofBuild(); - - static bool isCoverageBuild(); - - static bool isProfilingBuild(); - - static bool isCompetitionBuild(); - - static std::string getPackageName(); - - static std::string getVersionString(); - - static unsigned getVersionMajor(); - - static unsigned getVersionMinor(); - - static unsigned getVersionRelease(); - - static std::string getVersionExtra(); - - static std::string about(); - - static bool licenseIsGpl(); - - static bool isBuiltWithGmp(); - - static bool isBuiltWithCln(); - - static bool isBuiltWithGlpk(); - - static bool isBuiltWithAbc(); - - static bool isBuiltWithReadline(); - - static bool isBuiltWithCudd(); - - static bool isBuiltWithTlsSupport(); - - /* Return the number of debug tags */ - static unsigned getNumDebugTags(); - /* Return a sorted array of the debug tags name */ - static char const* const* getDebugTags(); - /* Test if the given argument is a known debug tag name */ - static bool isDebugTag(char const *); - - /* Return the number of trace tags */ - static unsigned getNumTraceTags(); - /* Return a sorted array of the trace tags name */ - static char const* const* getTraceTags(); - /* Test if the given argument is a known trace tag name */ - static bool isTraceTag(char const *); - - static bool isGitBuild(); - static const char* getGitBranchName(); - static const char* getGitCommit(); - static bool hasGitModifications(); - static std::string getGitId(); - - static bool isSubversionBuild(); - static const char* getSubversionBranchName(); - static unsigned getSubversionRevision(); - static bool hasSubversionModifications(); - static std::string getSubversionId(); - - static std::string getCompiler(); - static std::string getCompiledDateTime(); - -};/* class Configuration */ - -}/* CVC4 namespace */ - -#endif /* __CVC4__CONFIGURATION_H */ diff --git a/src/util/configuration.i b/src/util/configuration.i deleted file mode 100644 index 240131592..000000000 --- a/src/util/configuration.i +++ /dev/null @@ -1,7 +0,0 @@ -%{ -#include "util/configuration.h" -%} - -%apply char **STRING_ARRAY { char const* const* } -%include "util/configuration.h" -%clear char const* const*; diff --git a/src/util/configuration_private.h b/src/util/configuration_private.h deleted file mode 100644 index 631a323d3..000000000 --- a/src/util/configuration_private.h +++ /dev/null @@ -1,163 +0,0 @@ -/********************* */ -/*! \file configuration_private.h - ** \verbatim - ** Original author: Christopher L. Conway - ** Major contributors: ACSYS, Morgan Deters - ** Minor contributors (to current version): Liana Hadarean, Tim King - ** 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 Provides compile-time configuration information about the - ** CVC4 library. - **/ - -#include "cvc4_private.h" - -#ifndef __CVC4__CONFIGURATION_PRIVATE_H -#define __CVC4__CONFIGURATION_PRIVATE_H - -#include <string> -#include "util/configuration.h" - -namespace CVC4 { - -#ifdef CVC4_DEBUG -# define IS_DEBUG_BUILD true -#else /* CVC4_DEBUG */ -# define IS_DEBUG_BUILD false -#endif /* CVC4_DEBUG */ - -#ifdef CVC4_STATISTICS_ON -# define IS_STATISTICS_BUILD true -#else /* CVC4_STATISTICS_ON */ -# define IS_STATISTICS_BUILD false -#endif /* CVC4_STATISTICS_ON */ - -#ifdef CVC4_REPLAY -# define IS_REPLAY_BUILD true -#else /* CVC4_REPLAY */ -# define IS_REPLAY_BUILD false -#endif /* CVC4_REPLAY */ - -#ifdef CVC4_TRACING -# define IS_TRACING_BUILD true -#else /* CVC4_TRACING */ -# define IS_TRACING_BUILD false -#endif /* CVC4_TRACING */ - -#ifdef CVC4_DUMPING -# define IS_DUMPING_BUILD true -#else /* CVC4_DUMPING */ -# define IS_DUMPING_BUILD false -#endif /* CVC4_DUMPING */ - -#ifdef CVC4_MUZZLE -# define IS_MUZZLED_BUILD true -#else /* CVC4_MUZZLE */ -# define IS_MUZZLED_BUILD false -#endif /* CVC4_MUZZLE */ - -#ifdef CVC4_ASSERTIONS -# define IS_ASSERTIONS_BUILD true -#else /* CVC4_ASSERTIONS */ -# define IS_ASSERTIONS_BUILD false -#endif /* CVC4_ASSERTIONS */ - -#ifdef CVC4_PROOF -# define IS_PROOFS_BUILD true -#else /* CVC4_PROOF */ -# define IS_PROOFS_BUILD false -#endif /* CVC4_PROOF */ - -#ifdef CVC4_COVERAGE -# define IS_COVERAGE_BUILD true -#else /* CVC4_COVERAGE */ -# define IS_COVERAGE_BUILD false -#endif /* CVC4_COVERAGE */ - -#ifdef CVC4_PROFILING -# define IS_PROFILING_BUILD true -#else /* CVC4_PROFILING */ -# define IS_PROFILING_BUILD false -#endif /* CVC4_PROFILING */ - -#ifdef CVC4_COMPETITION_MODE -# define IS_COMPETITION_BUILD true -#else /* CVC4_COMPETITION_MODE */ -# define IS_COMPETITION_BUILD false -#endif /* CVC4_COMPETITION_MODE */ - -#ifdef CVC4_GMP_IMP -# define IS_GMP_BUILD true -#else /* CVC4_GMP_IMP */ -# define IS_GMP_BUILD false -#endif /* CVC4_GMP_IMP */ - -#ifdef CVC4_CLN_IMP -# define IS_CLN_BUILD true -#else /* CVC4_CLN_IMP */ -# define IS_CLN_BUILD false -#endif /* CVC4_CLN_IMP */ - -#if CVC4_USE_GLPK -# define IS_GLPK_BUILD true -#else /* CVC4_USE_GLPK */ -# define IS_GLPK_BUILD false -#endif /* CVC4_USE_GLPK */ - -#if CVC4_USE_ABC -# define IS_ABC_BUILD true -#else /* CVC4_USE_ABC */ -# define IS_ABC_BUILD false -#endif /* CVC4_USE_ABC */ - -#ifdef HAVE_LIBREADLINE -# define IS_READLINE_BUILD true -#else /* HAVE_LIBREADLINE */ -# define IS_READLINE_BUILD false -#endif /* HAVE_LIBREADLINE */ - -#if CVC4_GPL_DEPS -# define IS_GPL_BUILD true -#else /* CVC4_GPL_DEPS */ -# define IS_GPL_BUILD false -#endif /* CVC4_GPL_DEPS */ - -#ifdef TLS -# define USING_TLS true -#else /* TLS */ -# define USING_TLS false -#endif /* TLS */ - -#define CVC4_ABOUT_STRING ( ::std::string("\ -This is CVC4 version " CVC4_RELEASE_STRING ) + \ - ( ::CVC4::Configuration::isGitBuild() \ - ? ( ::std::string(" [") + ::CVC4::Configuration::getGitId() + "]" ) \ - : \ - ( ::CVC4::Configuration::isSubversionBuild() \ - ? ( ::std::string(" [") + ::CVC4::Configuration::getSubversionId() + "]" ) \ - : ::std::string("") \ - )) + "\n\ -compiled with " + ::CVC4::Configuration::getCompiler() + "\n\ -on " + ::CVC4::Configuration::getCompiledDateTime() + "\n\n\ -Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014\n\ - New York University and The University of Iowa\n\n" + \ - ( IS_GPL_BUILD ? "\ -This build of CVC4 uses GPLed libraries, and is thus covered by the GNU\n\ -General Public License (GPL) version 3. Versions of CVC4 are available\n\ -that are covered by the (modified) BSD license. If you want to license\n\ -CVC4 under this license, please configure CVC4 with the \"--bsd\" option\n\ -before building from sources.\n\ -" : \ -"This CVC4 library uses GMP as its multi-precision arithmetic library.\n\n\ -CVC4 is open-source and is covered by the BSD license (modified).\n\n\ -" ) + "\ -THIS SOFTWARE PROVIDED AS-IS, WITHOUT ANY WARRANTIES. USE AT YOUR OWN RISK.\n\n\ -See the file COPYING (distributed with the source code, and with all binaries)\n\ -for the full CVC4 copyright, licensing, and (lack of) warranty information.\n" ) - -}/* CVC4 namespace */ - -#endif /* __CVC4__CONFIGURATION_PRIVATE_H */ diff --git a/src/util/resource_manager.cpp b/src/util/resource_manager.cpp index d426ab03e..8d6e5e6d4 100644 --- a/src/util/resource_manager.cpp +++ b/src/util/resource_manager.cpp @@ -17,6 +17,7 @@ #include "base/cvc4_assert.h" #include "base/output.h" +#include "options/smt_options.h" using namespace std; @@ -180,9 +181,10 @@ void ResourceManager::spendResource(unsigned ammount) throw (UnsafeInterruptExce d_thisCallResourceUsed += ammount; if(out()) { Trace("limit") << "ResourceManager::spendResource: interrupt!" << std::endl; - Trace("limit") << " on call " << d_spendResourceCalls << std::endl; + Trace("limit") << " on call " << d_spendResourceCalls << std::endl; if (outOfTime()) { - Trace("limit") << "ResourceManager::spendResource: elapsed time" << d_cumulativeTimer.elapsed() << std::endl; + Trace("limit") << "ResourceManager::spendResource: elapsed time" + << d_cumulativeTimer.elapsed() << std::endl; } if (d_isHardLimit) { @@ -281,12 +283,16 @@ void ResourceManager::enable(bool on) { d_on = on; } -ListenerCollection* ResourceManager::getHardListeners() { - return &d_hardListeners; +ListenerCollection::Registration* ResourceManager::registerHardListener( + Listener* listener) +{ + return d_hardListeners.registerListener(listener); } -ListenerCollection* ResourceManager::getSoftListeners() { - return &d_softListeners; +ListenerCollection::Registration* ResourceManager::registerSoftListener( + Listener* listener) +{ + return d_softListeners.registerListener(listener); } } /* namespace CVC4 */ diff --git a/src/util/resource_manager.h b/src/util/resource_manager.h index 2c54011a5..f3bb42a08 100644 --- a/src/util/resource_manager.h +++ b/src/util/resource_manager.h @@ -114,6 +114,18 @@ class CVC4_PUBLIC ResourceManager { /** Receives a notification on reaching a hard limit. */ ListenerCollection d_softListeners; + /** + * ResourceManagers cannot be copied as they are given an explicit + * list of Listeners to respond to. + */ + ResourceManager(const ResourceManager&) CVC4_UNDEFINED; + + /** + * ResourceManagers cannot be assigned as they are given an explicit + * list of Listeners to respond to. + */ + ResourceManager& operator=(const ResourceManager&) CVC4_UNDEFINED; + public: ResourceManager(); @@ -162,13 +174,25 @@ public: static uint64_t getFrequencyCount() { return s_resourceCount; } - /** Collection of listeners that are notified on a hard resource out. */ - ListenerCollection* getHardListeners(); + /** + * Registers a listener that is notified on a hard resource out. + * + * This Registration must be destroyed by the user before this + * ResourceManager. + */ + ListenerCollection::Registration* registerHardListener(Listener* listener); + + /** + * Registers a listener that is notified on a soft resource out. + * + * This Registration must be destroyed by the user before this + * ResourceManager. + */ + ListenerCollection::Registration* registerSoftListener(Listener* listener); - /** Collection of listeners that are notified on a soft resource out. */ - ListenerCollection* getSoftListeners(); };/* class ResourceManager */ + }/* CVC4 namespace */ #endif /* __CVC4__RESOURCE_MANAGER_H */ diff --git a/src/util/sexpr.cpp b/src/util/sexpr.cpp index eb53e34c2..9837a7045 100644 --- a/src/util/sexpr.cpp +++ b/src/util/sexpr.cpp @@ -149,12 +149,12 @@ SExpr::SExpr(const std::string& value) : d_children(NULL) { } - /** - * This constructs a string expression from a const char* value. - * This cannot be removed in order to support SExpr("foo"). - * Given the other constructors this SExpr("foo") converts to bool. - * instead of SExpr(string("foo")). - */ +/** + * This constructs a string expression from a const char* value. + * This cannot be removed in order to support SExpr("foo"). + * Given the other constructors this SExpr("foo") converts to bool. + * instead of SExpr(string("foo")). + */ SExpr::SExpr(const char* value) : d_sexprType(SEXPR_STRING), d_integerValue(0), @@ -163,7 +163,6 @@ SExpr::SExpr(const char* value) : d_children(NULL) { } -#warning "TODO: Discuss this change with Clark." SExpr::SExpr(bool value) : d_sexprType(SEXPR_KEYWORD), d_integerValue(0), |