Add option to optimize edges in final encoding
[satune.git] / src / Backend / satencoder.h
1 #ifndef SATENCODER_H
2 #define SATENCODER_H
3
4 #include "classlist.h"
5 #include "structs.h"
6 #include "inc_solver.h"
7 #include "constraint.h"
8
9 struct SATEncoder {
10         uint varcount;
11         CNF *cnf;
12         CSolver *solver;
13 };
14
15 #include "satelemencoder.h"
16 #include "satorderencoder.h"
17 #include "satfunctableencoder.h"
18
19 SATEncoder *allocSATEncoder(CSolver *solver);
20 void deleteSATEncoder(SATEncoder *This);
21 void encodeAllSATEncoder(CSolver *csolver, SATEncoder *This);
22 Edge getNewVarSATEncoder(SATEncoder *This);
23 void getArrayNewVarsSATEncoder(SATEncoder *encoder, uint num, Edge *carray);
24 Edge encodeConstraintSATEncoder(SATEncoder *This, Boolean *constraint);
25 Edge encodeVarSATEncoder(SATEncoder *This, BooleanVar *constraint);
26 Edge encodeLogicSATEncoder(SATEncoder *This, BooleanLogic *constraint);
27 Edge encodePredicateSATEncoder(SATEncoder *This, BooleanPredicate *constraint);
28 Edge encodeTablePredicateSATEncoder(SATEncoder *This, BooleanPredicate *constraint);
29
30
31
32 void encodeElementSATEncoder(SATEncoder *encoder, Element *This);
33 void encodeElementFunctionSATEncoder(SATEncoder *encoder, ElementFunction *This);
34 void encodeTableElementFunctionSATEncoder(SATEncoder *encoder, ElementFunction *This);
35
36 #endif