}
Constraint * encodePredicateSATEncoder(SATEncoder * This, BooleanPredicate * constraint) {
- //TO IMPLEMENT
-
+ switch(GETPREDICATETYPE(constraint) ){
+ case TABLEPRED:
+ return encodeTablePredicateSATEncoder(This, constraint);
+ case OPERATORPRED:
+ return encodeOperatorPredicateSATEncoder(This, constraint);
+ default:
+ ASSERT(0);
+ }
+ return NULL;
+}
+
+Constraint * encodeTablePredicateSATEncoder(SATEncoder * This, BooleanPredicate * constraint){
+ switch(constraint->encoding.type){
+ case ENUMERATEIMPLICATIONS:
+ return encodeEnumTablePredicateSATEncoder(This, constraint);
+ case CIRCUIT:
+ ASSERT(0);
+ break;
+ default:
+ ASSERT(0);
+ }
+ return NULL;
+}
+
+Constraint * encodeEnumTablePredicateSATEncoder(SATEncoder * This, BooleanPredicate * constraint){
- TableEntry* entries = &(((PredicateTable*)constraint->predicate)->table->entries);
++ VectorTableEntry* entries = &(((PredicateTable*)constraint->predicate)->table->entries);
+ uint size = getSizeVectorTableEntry(entries);
+ for(uint i=0; i<size; i++){
+ TableEntry* entry = getVectorTableEntry(entries, i);
+
+ }
++ return NULL;
+}
+
+Constraint * encodeOperatorPredicateSATEncoder(SATEncoder * This, BooleanPredicate * constraint){
+ switch(constraint->encoding.type){
+ case ENUMERATEIMPLICATIONS:
+ break;
+ case CIRCUIT:
+ break;
+ default:
+ ASSERT(0);
+ }
return NULL;
}