public BracketLocator(TextReader reader) { string str; this.openBracketPositions = new List <XamlDebuggerXmlReader.FilePosition>(); this.closeBracketPositions = new List <XamlDebuggerXmlReader.FilePosition>(); XamlDebuggerXmlReader.FilePosition item = new XamlDebuggerXmlReader.FilePosition(0, 0); this.openBracketPositions.Add(item); this.closeBracketPositions.Add(item); int line = 1; while ((str = reader.ReadLine()) != null) { for (int i = 0; i < str.Length; i++) { if (str[i] == '<') { this.openBracketPositions.Add(new XamlDebuggerXmlReader.FilePosition(line, i + 1)); } else if (str[i] == '>') { this.closeBracketPositions.Add(new XamlDebuggerXmlReader.FilePosition(line, i + 1)); } } line++; } item = new XamlDebuggerXmlReader.FilePosition(line, 1); this.openBracketPositions.Add(item); this.closeBracketPositions.Add(item); }
private static XamlDebuggerXmlReader.FilePosition GetPositionBefore(List <XamlDebuggerXmlReader.FilePosition> positions, XamlDebuggerXmlReader.FilePosition beforeThis) { int num = positions.BinarySearch(beforeThis, XamlDebuggerXmlReader.FilePosition.Comparer); if (num < 0) { num = ~num; } return(positions[num - 1]); }
private static XamlDebuggerXmlReader.FilePosition GetPositionAfter(List <XamlDebuggerXmlReader.FilePosition> positions, XamlDebuggerXmlReader.FilePosition afterThis) { int num = positions.BinarySearch(afterThis, XamlDebuggerXmlReader.FilePosition.Comparer); if (num < 0) { num = ~num; } else { num++; } return(positions[num]); }
public XamlDebuggerXmlReader.FilePosition FindOpenBracketBefore(XamlDebuggerXmlReader.FilePosition position) { return(GetPositionBefore(this.openBracketPositions, position)); }
public XamlDebuggerXmlReader.FilePosition FindCloseBracketAfter(XamlDebuggerXmlReader.FilePosition position) { return(GetPositionAfter(this.closeBracketPositions, position)); }