SATEncoder::SATEncoder(CSolver *_solver) :
cnf(createCNF()),
- solver(_solver) {
+ solver(_solver),
+ vector(allocDefVectorEdge()) {
}
SATEncoder::~SATEncoder() {
deleteCNF(cnf);
+ deleteVectorEdge(vector);
+}
+
+void SATEncoder::resetSATEncoder() {
+ resetCNF(cnf);
+ booledgeMap.reset();
}
int SATEncoder::solve() {
Edge SATEncoder::encodeConstraintSATEncoder(BooleanEdge c) {
Edge result;
- Boolean * constraint = c.getBoolean();
+ Boolean *constraint = c.getBoolean();
if (booledgeMap.contains(constraint)) {
Edge e = {(Node *) booledgeMap.get(constraint)};
case SATC_OR:
case SATC_XOR:
case SATC_IMPLIES:
- //Don't handle, translate these away...
+ //Don't handle, translate these away...
default:
model_print("Unhandled case in encodeLogicSATEncoder %u", constraint->op);
exit(-1);
void SATEncoder::encodeElementSATEncoder(Element *element) {
/* Check to see if we have already encoded this element. */
- if (getElementEncoding(element)->variables != NULL)
+ if (element->getElementEncoding()->variables != NULL)
return;
/* Need to encode. */
}
void SATEncoder::encodeTableElementFunctionSATEncoder(ElementFunction *function) {
- switch (getElementFunctionEncoding(function)->type) {
+ switch (function->getElementFunctionEncoding()->type) {
case ENUMERATEIMPLICATIONS:
encodeEnumTableElemFunctionSATEncoder(function);
break;