summaryrefslogtreecommitdiff
path: root/src/expr/node_manager.cpp
diff options
context:
space:
mode:
authorPaul Meng <baolmeng@gmail.com>2016-10-11 13:54:20 -0500
committerPaul Meng <baolmeng@gmail.com>2016-10-11 13:54:20 -0500
commit3395c5c13cd61d98aec0d9806e3b9bc3d707968a (patch)
tree0eadad9799862ec77d29f7abe03a46c300d80de8 /src/expr/node_manager.cpp
parent773e7d27d606b71ff0f78e84efe1deef2653f016 (diff)
parent5f415d4585134612bc24e9a823289fee35541a01 (diff)
Merge branch 'origin' of https://github.com/CVC4/CVC4.git
Conflicts: src/options/quantifiers_options
Diffstat (limited to 'src/expr/node_manager.cpp')
-rw-r--r--src/expr/node_manager.cpp26
1 files changed, 14 insertions, 12 deletions
diff --git a/src/expr/node_manager.cpp b/src/expr/node_manager.cpp
index d2ac7e2a1..f7e76c06b 100644
--- a/src/expr/node_manager.cpp
+++ b/src/expr/node_manager.cpp
@@ -169,6 +169,8 @@ NodeManager::~NodeManager() {
for(unsigned i = 0; i < unsigned(kind::LAST_KIND); ++i) {
d_operators[i] = Node::null();
}
+
+ d_unique_vars.clear();
//d_tupleAndRecordTypes.clear();
d_tt_cache.d_children.clear();
@@ -681,18 +683,18 @@ Node NodeManager::mkInstConstant(const TypeNode& type) {
return n;
}
-Node NodeManager::mkSepNil(const TypeNode& type) {
- Node n = NodeBuilder<0>(this, kind::SEP_NIL);
- n.setAttribute(TypeAttr(), type);
- n.setAttribute(TypeCheckedAttr(), true);
- return n;
-}
-
-Node* NodeManager::mkSepNilPtr(const TypeNode& type) {
- Node* n = NodeBuilder<0>(this, kind::SEP_NIL).constructNodePtr();
- setAttribute(*n, TypeAttr(), type);
- setAttribute(*n, TypeCheckedAttr(), true);
- return n;
+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_unique_vars[k][type] = n;
+ Assert( n.getMetaKind() == kind::metakind::VARIABLE );
+ return n;
+ }else{
+ return it->second;
+ }
}
Node NodeManager::mkAbstractValue(const TypeNode& type) {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback