-Constraint * getElementValueConstraint(Element* This, uint64_t value) {
- switch(GETELEMENTTYPE(This)){
- case ELEMSET:
- ; //Statement is needed for a label and This is a NOPE
- uint size = getSetSize(((ElementSet*)This)->set);
- //FIXME
- for(uint i=0; i<size; i++){
- if( getElementEncoding(This)->encodingArray[i]==value){
- return generateBinaryConstraint(getElementEncoding(This)->numVars,
- getElementEncoding(This)->variables, i);
- }
- }
- break;
- case ELEMFUNCRETURN:
- ASSERT(0);
- break;
- default:
- ASSERT(0);
+
+Constraint * getElementValueBinaryIndexConstraint(Element* This, uint64_t value) {
+ ASTNodeType type = GETELEMENTTYPE(This);
+ ASSERT(type == ELEMSET || type == ELEMFUNCRETURN);
+ ElementEncoding* elemEnc = getElementEncoding(This);
+ for(uint i=0; i<elemEnc->encArraySize; i++){
+ if( isinUseElement(elemEnc, i) && elemEnc->encodingArray[i]==value){
+ return generateBinaryConstraint(elemEnc->numVars,
+ elemEnc->variables, i);
+ }