diff options
author | Morgan Deters <mdeters@gmail.com> | 2011-04-01 00:56:42 +0000 |
---|---|---|
committer | Morgan Deters <mdeters@gmail.com> | 2011-04-01 00:56:42 +0000 |
commit | 159cb7ee8b6f28f3784a3f24b371760c2ab77f86 (patch) | |
tree | d510bfa3e4977b5c532d9ab82b6cd5d9581365a3 /src/expr/declaration_scope.cpp | |
parent | ceca24424da629db2e133f7864b0bac03ad44829 (diff) |
This commit is a merge from the "betterstats" branch, which:
* Makes Options an "omnipresent thread-local global" (like the notion
of the "current NodeManager" was already). Options::current() accesses
this structure.
* Removes Options from constructors and data structures everywhere
(this cleans up a lot of things).
* No longer uses StatisticsRegistry statically. An instance of the
registry is created and linked to a NodeManager.
* StatisticsRegistry::current() is similar to Options::current(), but
the pointer is stowed in the NodeManager (rather than stored)
* The static functions of StatisticsRegistry have been left, for backward
compatibility; they now use the "current" statistics registry.
* SmtEngine::getStatisticsRegistry() is a public accessor for the
registry; this is needed by main() to reach in and get the registry,
for flushing statistics at the end.
Diffstat (limited to 'src/expr/declaration_scope.cpp')
-rw-r--r-- | src/expr/declaration_scope.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/src/expr/declaration_scope.cpp b/src/expr/declaration_scope.cpp index f36c8a6e3..09aa3ed9f 100644 --- a/src/expr/declaration_scope.cpp +++ b/src/expr/declaration_scope.cpp @@ -21,6 +21,7 @@ #include "expr/declaration_scope.h" #include "expr/expr.h" #include "expr/type.h" +#include "expr/expr_manager_scope.h" #include "context/cdmap.h" #include "context/cdset.h" #include "context/context.h" @@ -48,11 +49,15 @@ DeclarationScope::~DeclarationScope() { delete d_context; } -void DeclarationScope::bind(const std::string& name, Expr obj) throw() { +void DeclarationScope::bind(const std::string& name, Expr obj) throw(AssertionException) { + CheckArgument(!obj.isNull(), obj, "cannot bind to a null Expr"); + ExprManagerScope ems(obj); d_exprMap->insert(name, obj); } -void DeclarationScope::bindDefinedFunction(const std::string& name, Expr obj) throw() { +void DeclarationScope::bindDefinedFunction(const std::string& name, Expr obj) throw(AssertionException) { + CheckArgument(!obj.isNull(), obj, "cannot bind to a null Expr"); + ExprManagerScope ems(obj); d_exprMap->insert(name, obj); d_functions->insert(obj); } |