SATEncoder * allocSATEncoder() {
SATEncoder *This=ourmalloc(sizeof (SATEncoder));
+ This->varcount=1;
return This;
}
return NULL;
}
+Constraint * getNewVarSATEncoder(SATEncoder *This) {
+ Constraint * var=allocVarConstraint(VAR, This->varcount);
+ Constraint * varneg=allocVarConstraint(NOTVAR, This->varcount++);
+ setNegConstraint(var, varneg);
+ setNegConstraint(varneg, var);
+ return var;
+}
+
Constraint * encodeVarSATEncoder(SATEncoder *This, BooleanVar * constraint) {
- return NULL;
+ if (constraint->var == NULL) {
+ constraint->var=getNewVarSATEncoder(This);
+ }
+ return constraint->var;
}
Constraint * encodeLogicSATEncoder(SATEncoder *This, BooleanLogic * constraint) {
#include "classlist.h"
struct SATEncoder {
-
+ uint varcount;
};
SATEncoder * allocSATEncoder();
void deleteSATEncoder(SATEncoder *This);
void encodeAllSATEncoder(SATEncoder *This, CSolver *csolver);
+Constraint * getNewVarSATEncoder(SATEncoder *This);
Constraint * encodeConstraintSATEncoder(SATEncoder *This, Boolean *constraint);
Constraint * encodeOrderSATEncoder(SATEncoder *This, BooleanOrder * constraint);
Constraint * encodeVarSATEncoder(SATEncoder *This, BooleanVar * constraint);