summaryrefslogtreecommitdiff
path: root/src/expr/node_manager.cpp
diff options
context:
space:
mode:
authorajreynol <andrew.j.reynolds@gmail.com>2016-09-14 16:41:27 -0500
committerajreynol <andrew.j.reynolds@gmail.com>2016-09-14 16:41:27 -0500
commitd43e5fb294d89ba69f7d2607a12c8700b7ec9345 (patch)
treedde7459b84aa182fefdcdafd4d004fada98b8fd8 /src/expr/node_manager.cpp
parentbeb73911f71daa6711390264221e7b4de7dc8c6c (diff)
Support for unique variable generation in node manager.
Diffstat (limited to 'src/expr/node_manager.cpp')
-rw-r--r--src/expr/node_manager.cpp13
1 files changed, 7 insertions, 6 deletions
diff --git a/src/expr/node_manager.cpp b/src/expr/node_manager.cpp
index 94b136c46..f7e76c06b 100644
--- a/src/expr/node_manager.cpp
+++ b/src/expr/node_manager.cpp
@@ -170,7 +170,7 @@ NodeManager::~NodeManager() {
d_operators[i] = Node::null();
}
- d_sep_nils.clear();
+ d_unique_vars.clear();
//d_tupleAndRecordTypes.clear();
d_tt_cache.d_children.clear();
@@ -683,13 +683,14 @@ Node NodeManager::mkInstConstant(const TypeNode& type) {
return n;
}
-Node NodeManager::mkSepNil(const TypeNode& type) {
- std::map< TypeNode, Node >::iterator it = d_sep_nils.find( type );
- if( it==d_sep_nils.end() ){
- Node n = NodeBuilder<0>(this, kind::SEP_NIL);
+Node NodeManager::mkUniqueVar(const TypeNode& type, Kind k) {
+ std::map< TypeNode, Node >::iterator it = d_unique_vars[k].find( type );
+ if( it==d_unique_vars[k].end() ){
+ Node n = NodeBuilder<0>(this, k);
n.setAttribute(TypeAttr(), type);
n.setAttribute(TypeCheckedAttr(), true);
- d_sep_nils[type] = n;
+ d_unique_vars[k][type] = n;
+ Assert( n.getMetaKind() == kind::metakind::VARIABLE );
return n;
}else{
return it->second;
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback