void addSomeVar(indexList *varList,varData *vdat){ int *data = vdat->data; if(data[0] == symCellVarType) createSymCellVar(varList,data[1],data[2],data[3],data[4],data[5],0); else if(data[0] == transVarType) createTransVar(varList,data[1],0,data[2],data[3]); }
// list of sat variables linkedList createVarList(rootData *rdata,linkedList fullTransNodes){ indexList *varList = createVarIndex(); // board treeNode *boardNode = rdata->boardNode; setData *boardSet = boardNode->data; int boardWidth = boardSet->width; int boardHeight = boardSet->height; cellData **boardVars = boardSet->setVars; int y,x,i,n; for(y=0;y<boardHeight;y++){ for(x=0;x<boardWidth;x++){ if(!boardVars[y*boardWidth+x]) continue; cellData *cell = boardVars[y*boardWidth+x]; int cellName = cell->cellName; linkedList symList = cell->symList; int symWidth = sizeLinked(symList); int **symArray = toArrayLinked(symList); // since there are only two symbols, symbol and not symbol are used as variables if(symWidth > 2){ for(i=0;i<symWidth;i++){ int symId = *symArray[i]; for(n=0;n<numStagesGlobal;n++){ createSymCellVar(varList,symId,cellName,x,y,n,NULL); } } } else{ for(n=0;n<numStagesGlobal;n++){ int symId = *symArray[0]; varData *vdat = createSymCellVar(varList,symId,cellName,x,y,n,NULL); symId = *symArray[1]; createSymCellVar(varList,symId,cellName,x,y,n,vdat); } } } } // trans int transWidth = sizeLinked(fullTransNodes); tempTransVar **transArray = toArrayLinked(fullTransNodes); for(i=0;i<transWidth;i++){ tempTransVar *data = transArray[i]; int transId = data->transId; int transObjId = data->objId; int desObjId = data->desObjId; // there is a variable associated with each transition-stage nodeStages *stages = data->stages; for(n=stages->start;n<stages->end-1;n++){ createTransVar(varList,transId,transObjId,desObjId,n); } } // used for(y=0;y<boardHeight;y++){ for(x=0;x<boardWidth;x++){ if(!boardVars[y*boardWidth+x]) continue; cellData *cell = boardVars[y*boardWidth+x]; for(n=0;n<numStagesGlobal-1;n++){ createUsedVar(varList,cell->cellName,x,y,n); } } } return varList; }