Fix some bugs, Moving backend codes to SATEncoder
[satune.git] / src / Backend / satencoder.h
1 #ifndef SATENCODER_H
2 #define SATENCODER_H
3
4 #include "classlist.h"
5 #include "structs.h"
6
7 struct SATEncoder {
8         uint varcount;
9         //regarding managing memory 
10         VectorConstraint vars;
11         VectorConstraint allConstraints;
12 };
13
14 inline VectorConstraint* getSATEncoderVars(SATEncoder* ne){
15         return &ne->vars;
16 }
17 inline VectorConstraint* getSATEncoderAllConstraints(SATEncoder* ne){
18         return &ne->allConstraints;
19 }
20 SATEncoder * allocSATEncoder();
21 void deleteSATEncoder(SATEncoder *This);
22 void encodeAllSATEncoder(SATEncoder *This, CSolver *csolver);
23 Constraint * getNewVarSATEncoder(SATEncoder *This);
24 void getArrayNewVarsSATEncoder(SATEncoder* encoder, uint num, Constraint **carray);
25 Constraint * encodeConstraintSATEncoder(SATEncoder *This, Boolean *constraint);
26 Constraint * encodeOrderSATEncoder(SATEncoder *This, BooleanOrder * constraint);
27 Constraint * encodeVarSATEncoder(SATEncoder *This, BooleanVar * constraint);
28 Constraint * encodeLogicSATEncoder(SATEncoder *This, BooleanLogic * constraint);
29 Constraint * encodePredicateSATEncoder(SATEncoder * This, BooleanPredicate * constraint);
30
31 Constraint* encodeFunctionElementSATEncoder(SATEncoder* encoder, ElementFunction *This);
32 Constraint* encodeEnumTableElemFunctionSATEncoder(SATEncoder* encoder, ElementFunction* This);
33 Constraint* encodeTableElementFunctionSATEncoder(SATEncoder* encoder, ElementFunction* This);
34 Constraint* encodeOperatorElementFunctionSATEncoder(SATEncoder* encoder,ElementFunction* This);
35 #endif