summaryrefslogtreecommitdiff
path: root/src/smt
diff options
context:
space:
mode:
authorajreynol <andrew.j.reynolds@gmail.com>2016-11-01 13:20:49 -0500
committerajreynol <andrew.j.reynolds@gmail.com>2016-11-01 13:20:49 -0500
commit8e0fce94790249ff7aff84ff4500bb96e2ebb9e9 (patch)
tree25e65718cff712f13688e452ffc1d4b459cd7367 /src/smt
parent3506b13f4d298095e8405b32b05e838f17dbe809 (diff)
Working memory leak free version, changes interface to pointers.
Diffstat (limited to 'src/smt')
-rw-r--r--src/smt/boolean_terms.cpp20
-rw-r--r--src/smt/smt_engine.cpp3
2 files changed, 13 insertions, 10 deletions
diff --git a/src/smt/boolean_terms.cpp b/src/smt/boolean_terms.cpp
index 51ae0fd11..e9b51c47b 100644
--- a/src/smt/boolean_terms.cpp
+++ b/src/smt/boolean_terms.cpp
@@ -60,10 +60,10 @@ BooleanTermConverter::BooleanTermConverter(SmtEngine& smt) :
d_ffDt = d_ff;
d_ttDt = d_tt;
} else {
- Datatype spec("BooleanTerm");
+ Datatype* spec = new Datatype("BooleanTerm");
// don't change the order; false is assumed to come first by the model postprocessor
- spec.addConstructor(DatatypeConstructor("BT_False"));
- spec.addConstructor(DatatypeConstructor("BT_True"));
+ spec->addConstructor(DatatypeConstructor("BT_False"));
+ spec->addConstructor(DatatypeConstructor("BT_True"));
const Datatype& dt = NodeManager::currentNM()->toExprManager()->mkDatatypeType(spec).getDatatype();
d_ffDt = NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, Node::fromExpr(dt["BT_False"].getConstructor()));
d_ttDt = NodeManager::currentNM()->mkNode(kind::APPLY_CONSTRUCTOR, Node::fromExpr(dt["BT_True"].getConstructor()));
@@ -255,13 +255,13 @@ const Datatype& BooleanTermConverter::convertDatatype(const Datatype& dt) throw(
mySelfType = NodeManager::currentNM()->toExprManager()->mkSortConstructor(dt.getName() + "'", dt.getNumParameters());
unresolvedTypes.insert(mySelfType);
}
- vector<Datatype> newDtVector;
+ vector<Datatype*> newDtVector;
if(dt.isParametric()) {
- newDtVector.push_back(Datatype(dt.getName() + "'", dt.getParameters(), false));
+ newDtVector.push_back(new Datatype(dt.getName() + "'", dt.getParameters(), false));
} else {
- newDtVector.push_back(Datatype(dt.getName() + "'", false));
+ newDtVector.push_back(new Datatype(dt.getName() + "'", false));
}
- Datatype& newDt = newDtVector.front();
+ Datatype * newDt = newDtVector.front();
Debug("boolean-terms") << "found a Boolean arg in constructor " << (*c).getName() << endl;
for(c = dt.begin(); c != dt.end(); ++c) {
DatatypeConstructor ctor((*c).getName() + "'", (*c).getTesterName() + "'");
@@ -286,10 +286,10 @@ const Datatype& BooleanTermConverter::convertDatatype(const Datatype& dt) throw(
}
}
}
- newDt.addConstructor(ctor);
+ newDt->addConstructor(ctor);
}
- vector<DatatypeType> newDttVector =
- NodeManager::currentNM()->toExprManager()->mkMutualDatatypeTypes(newDtVector, unresolvedTypes);
+ vector<DatatypeType> newDttVector;
+ NodeManager::currentNM()->toExprManager()->mkMutualDatatypeTypes(newDtVector, unresolvedTypes, newDttVector);
DatatypeType& newDtt = newDttVector.front();
const Datatype& newD = newDtt.getDatatype();
for(c = dt.begin(); c != dt.end(); ++c) {
diff --git a/src/smt/smt_engine.cpp b/src/smt/smt_engine.cpp
index e3a0533af..1e5ac84b4 100644
--- a/src/smt/smt_engine.cpp
+++ b/src/smt/smt_engine.cpp
@@ -784,8 +784,11 @@ public:
}
void nmNotifyNewDatatypes(const std::vector<DatatypeType>& dtts) {
+ Trace("ajr-temp") << "Notify " << dtts.size() << " datatypes." << std::endl;
DatatypeDeclarationCommand c(dtts);
+ Trace("ajr-temp") << "dump command" << std::endl;
d_smt.addToModelCommandAndDump(c);
+ Trace("ajr-temp") << "Finish" << std::endl;
}
void nmNotifyNewVar(TNode n, uint32_t flags) {
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback