Esempio n. 1
0
 internal static void Check(FormalValueAccess[] accesses)
 {
     var ss = accesses.Select(x => x.Size).Distinct().ToArray();
     if(ss.Length != 1 || ss[0] != accesses.ToArray().Length)
         Tracer.FlaggedLine("Size problem");
     var ii = accesses.Select((x, i) => i - x.Index).Distinct().ToArray();
     if(ii.Length != 1 || ii[0] != 0)
         Tracer.FlaggedLine("Consequtivity problem");
 }
Esempio n. 2
0
 public static IFormalValue[] Transpose(FormalValueAccess[] accesses)
 {
     var distinctAccesses = accesses.Distinct().ToArray();
     if(distinctAccesses.Length == 1 && distinctAccesses[0] == null)
         return new IFormalValue[1];
     var result = accesses.Select(x => x == null ? null : x.FormalValue).Distinct().ToArray();
     foreach(var formalValue in result)
         if(formalValue != null)
             formalValue.Check(accesses.Where(x => x != null && x.FormalValue == formalValue).ToArray());
     return result;
 }