return NULL;
}
-uint getElemEncodingInUseVarsSize(ElementEncoding* This){
- uint size=0;
- for(uint i=0; i<This->encArraySize; i++){
- if(isinUseElement(This, i)){
- size++;
- }
- }
- return size;
-}
-
-
Constraint * getElementValueBinaryIndexConstraint(Element* This, uint64_t value) {
ASTNodeType type = GETELEMENTTYPE(This);
ASSERT(type == ELEMSET || type == ELEMFUNCRETURN);
return &func->functionencoding;
}
-uint getElemEncodingInUseVarsSize(ElementEncoding* This);
Constraint * getElementValueBinaryIndexConstraint(Element* This, uint64_t value);
#endif
SATEncoder * allocSATEncoder() {
SATEncoder *This=ourmalloc(sizeof (SATEncoder));
- allocInlineDefVectorConstraint(getSATEncoderAllConstraints(This));
- allocInlineDefVectorConstraint(getSATEncoderVars(This));
This->varcount=1;
return This;
}
Constraint * varneg=allocVarConstraint(NOTVAR, This->varcount++);
setNegConstraint(var, varneg);
setNegConstraint(varneg, var);
- pushVectorConstraint(getSATEncoderVars(This), var);
return var;
}
constraints[i]=row;
}
Constraint* result = allocArrayConstraint(OR, size, constraints);
- pushVectorConstraint( getSATEncoderAllConstraints(encoder), result);
return result;
-}
\ No newline at end of file
+}
struct SATEncoder {
uint varcount;
- //regarding managing memory
- VectorConstraint vars;
- VectorConstraint allConstraints;
};
-static inline VectorConstraint* getSATEncoderVars(SATEncoder* ne){
- return &ne->vars;
-}
-static inline VectorConstraint* getSATEncoderAllConstraints(SATEncoder* ne){
- return &ne->allConstraints;
-}
SATEncoder * allocSATEncoder();
void deleteSATEncoder(SATEncoder *This);
void initializeConstraintVars(CSolver* csolver, SATEncoder* This);
void generateBinaryIndexEncodingVars(SATEncoder* encoder, ElementEncoding* This){
ASSERT(This->type==BINARYINDEX);
- uint size = getElemEncodingInUseVarsSize(This);
- allocElementConstraintVariables(This, NUMBITS(size-1));
+ allocElementConstraintVariables(This, NUMBITS(This->encArraySize-1));
getArrayNewVarsSATEncoder(encoder, This->numVars, This->variables);
}