internal SegmentBreakdownProvider(string name, ILinesProvider linesProvider, string[] segmentNames) : this(name, linesProvider) { if (segmentNames == null) throw new ArgumentNullException("segmentNames"); _segmentNameSelector = segmentNames.Contains; }
private SegmentBreakdownProvider(string name, ILinesProvider linesProvider) { if (linesProvider == null) throw new ArgumentNullException("linesProvider"); _name = name; _linesProvider = linesProvider; }
internal SegmentBreakdownProvider(string name, ILinesProvider linesProvider, Func<string, Boolean> segmentNameSelector) : this(name, linesProvider) { if (segmentNameSelector == null) throw new ArgumentNullException("segmentNameSelector"); _segmentNameSelector = segmentNameSelector; }
public static ZilogModule[] Parse(ILinesProvider linesProvider) { var lines = linesProvider.GetLines(); var startIndex = lines.IndexOf("SEGMENTS WITHIN MODULES:"); var endindex = lines.IndexOf("EXTERNAL DEFINITIONS:"); var modules = new List<ZilogModule>(); if (startIndex >= 0 && endindex >= 0) { var lineIndex = startIndex + 3; ZilogModule zilogModule = null; while (lineIndex < endindex) { if (lines[lineIndex].StartsWith("Module")) { zilogModule = new ZilogModule() { Name = lines[lineIndex].Replace("Module:", "").Trim() }; modules.Add(zilogModule); } if (lines[lineIndex].Trim().StartsWith("Segment:")) { var segment = new Segment(); segment.Name = lines[lineIndex].Substring(13, 30).Trim(); var sizeText = lines[lineIndex].Substring(70, 6).Trim(); segment.Size = Convert.ToInt32(sizeText, 16); if (zilogModule != null) { zilogModule.Segments.Add(segment); } } lineIndex++; } } //Return the array return modules.ToArray(); }