public static void Make(StreamWriter f, ref Jobs jobs) { int[] codes = { 0, 1, 2, 3, 4, 6, 5, 7, 8, 9, 98, 99 }; string[] codenames = { "SAT", "UNSAT", "UNKNOWN", "BUG", "ERROR", "MEMORY", "TIMEOUT", "SATTIME", "UNSATTIME", "INFERR", "OVERPERF", "UNDERPERF" }; f.Write("Date,ID"); HashSet <string> categories = new HashSet <string>(); foreach (Job j in jobs) { foreach (string cat in j.Summary.Categories) { if (!categories.Contains(cat)) { categories.Add(cat); } } } foreach (string c in categories) { for (int i = 0; i < codes.Length; i++) { f.Write(",\"" + c + "|" + codenames[i] + "\""); } } f.WriteLine(); foreach (Job j in jobs) { f.Write("\"" + j.MetaData.SubmissionTime.ToString(Global.culture) + "\","); f.Write(j.MetaData.Id.ToString()); foreach (string category in categories) { Summary s = j.Summary; for (int i = 0; i < codes.Length; i++) { int code = codes[i]; string name = codenames[i]; if (!s.ContainsKey(category)) { f.Write(",0"); } else { CategoryStatistics cs = s[category]; switch (code) { case 0: f.Write("," + cs.SAT.ToString()); break; case 1: f.Write("," + cs.UNSAT.ToString()); break; case 2: f.Write("," + cs.UNKNOWN.ToString()); break; case 3: f.Write("," + cs.Bugs.ToString()); break; case 4: f.Write("," + cs.Errors.ToString()); break; case 5: f.Write("," + cs.Timeout.ToString()); break; case 6: f.Write("," + cs.Memout.ToString()); break; case 7: f.Write("," + cs.TimeSAT.ToString()); break; case 8: f.Write("," + cs.TimeUNSAT.ToString()); break; case 9: f.Write("," + cs.InfrastructureErrors.ToString()); break; case 98: f.Write("," + cs.Overperformers.ToString()); break; case 99: f.Write("," + cs.UnderPerformers.ToString()); break; } } } } f.WriteLine(); } }