using System; using System.Collections.Generic; using System.Text; using System.Collections; namespace CLab { public class ValidAssignmentData { private int cpVarNum; private int[] dom; private int[] bddVarTocpVar; private int[] domStart; private int[][] valExist; public ValidAssignmentData(Layout layout) { createValidAssignmentData(layout); } public int CpVarNum { get { return cpVarNum; } } public int[] Dom { get { return dom; } } public int[] BddVarTocpVar { get { return bddVarTocpVar; } } public int[] DomStart { get { return domStart; } } public int[][] ValExist { get { return valExist; } } public void createValidAssignmentData(Layout layout) { cpVarNum = layout.LayoutVariables.Count; dom = new int[cpVarNum]; domStart = new int[cpVarNum]; bddVarTocpVar = new int[layout.BddVarNum]; valExist = new int[cpVarNum][]; for (int i = 0; i < cpVarNum; i++) { LayoutVariable lv = layout.LayoutVariables[i]; LayoutType lt = layout.LayoutTypes[lv.TypeIndex]; dom[i] = lt.DomainSize; valExist[i] = new int[lt.DomainSize]; for (int j = 0; j < lt.DomainSize; j++) valExist[i][j] = 0; domStart[i] = (int) lv.BddVar[lv.BddVar.Count - 1]; for (int j = 0; j < lv.BddVar.Count; j++) bddVarTocpVar[(int) lv.BddVar[j]] = i; } } public override String ToString() { String res = ""; res += "cpVarNum = " + cpVarNum + "\n"; res += "dom = \n"; for (int i = 0; i < dom.Length; i++) { res += "" +i + " -> " +dom[i] + ", "; } res += "\ndomStart = \n"; for (int i = 0; i < domStart.Length; i++) { res += "" + i + " -> " + domStart[i] +", "; } res += "\nbddVarTocpVar = \n"; for (int i = 0; i < bddVarTocpVar.Length; i++) { res += "" + i + " -> " + bddVarTocpVar[i] + ", "; } res += "\nvalExist = \n"; for (int i = 0; i < valExist.Length; i++) { res+= "" +i +" : "; for (int j = 0; j < valExist[i].Length; j++) { res += "" + j + " -> " + valExist[i][j] + ", "; } res += "\n"; } return res; } } }