protected override void ReadTableMeta(FileStream stream) { _tableCount = new ByteWord(_tableCountAddr); _tableStart = new ByteWord(_tableStartAddr); _tableCount.ReadFromFile(stream); _tableStart.ReadFromFile(stream); int current = BitConverter.ToInt32(_tableStart.GetBytes(), 0); int count = BitConverter.ToInt32(_tableCount.GetBytes(), 0); Console.Out.WriteLine("Entry count: " + count); for (int i = 0; i < count; i++) { MxeIndexEntry e = new MxeIndexEntry(GetRealAddress(current)); e.ReadEntry(stream); _indexes.Add(e.GetIndex(), e); current += _tableStart.Length * 4; } Dictionary <string, MxeEntryType> dts = DiscoverTypes(stream); RefreshOtherTypesToDiscoveredType(dts); }
protected bool ReadCsvFile(FileInfo fi) { Console.Out.WriteLine("Reading in CSV data from [" + fi.FullName + "]..."); int end = fi.Name.LastIndexOf('-'); int start = fi.Name.IndexOf('-'); string type = fi.Name.Remove(end).Substring(start + 1); string countStr = fi.Name.Remove(start); int count = -1; bool foundAChange = false; if (!Int32.TryParse(countStr, out count)) { Console.Out.WriteLine(String.Format(CSV_OPEN_NAME_ERROR, fi.FullName)); return(false); } try { using (var stream = new StreamReader(fi.FullName)) { int lineNum = 0; string line = stream.ReadLine(); if (line != null) { lineNum++; List <string> headers = GetCsvHeaders(line); while ((line = stream.ReadLine()) != null) { lineNum++; string[] info = line.Split(','); int indexId = -1; if (!Int32.TryParse(info[0], out indexId)) { Console.Out.WriteLine(String.Format(CSV_PARSE_ERROR, fi.FullName, lineNum)); continue; } if (!_indexes.ContainsKey(indexId)) { Console.Out.WriteLine(String.Format(CSV_MATCH_ERROR, fi.FullName, indexId)); continue; } List <string> data = info.ToList(); data.RemoveAt(0); data.RemoveAt(0); MxeIndexEntry index = _indexes[indexId]; if (!index.GetVmTitle().Equals(type)) { Console.Out.WriteLine(String.Format(CSV_MATCH_TITLE_ERROR, fi.FullName, lineNum, index.GetVmTitle(), type)); continue; } if (!index.GetTypeCode().Equals(count)) { Console.Out.WriteLine(String.Format(CSV_MATCH_SIZE_ERROR, fi.FullName, lineNum, index.GetTypeCode(), count)); continue; } if (!headers.Count.Equals(data.Count)) { Console.Out.WriteLine(String.Format(CSV_MATCH_COUNT_ERROR, fi.FullName, lineNum, headers.Count, data.Count)); continue; } foundAChange = index.ReadCsvLineData(headers, data) || foundAChange; } } stream.Close(); } } catch (Exception exc) { Console.Out.WriteLine(exc.ToString()); } return(foundAChange); }