Browse Source

Minor optimization for ReadOnlyDocument.

pull/15/head
Daniel Grunwald 16 years ago
parent
commit
6a8c1130b5
  1. 21
      src/Main/Base/Project/Src/Editor/ReadOnlyDocument.cs

21
src/Main/Base/Project/Src/Editor/ReadOnlyDocument.cs

@ -45,40 +45,37 @@ namespace ICSharpCode.SharpDevelop.Editor
{ {
readonly ReadOnlyDocument doc; readonly ReadOnlyDocument doc;
readonly int lineNumber; readonly int lineNumber;
readonly int offset, endOffset;
public ReadOnlyDocumentLine(ReadOnlyDocument doc, int lineNumber) public ReadOnlyDocumentLine(ReadOnlyDocument doc, int lineNumber)
{ {
this.doc = doc; this.doc = doc;
this.lineNumber = lineNumber; this.lineNumber = lineNumber;
this.offset = doc.GetStartOffset(lineNumber);
this.endOffset = doc.GetEndOffset(lineNumber);
} }
public int Offset { public int Offset {
get { get { return offset; }
return doc.GetStartOffset(lineNumber);
}
} }
public int Length { public int Length {
get { get { return endOffset - offset; }
return doc.GetEndOffset(lineNumber) - doc.GetStartOffset(lineNumber);
}
} }
public int EndOffset { public int EndOffset {
get { get { return endOffset; }
return doc.GetEndOffset(lineNumber);
}
} }
public int TotalLength { public int TotalLength {
get { get {
return doc.GetTotalEndOffset(lineNumber) - doc.GetStartOffset(lineNumber); return doc.GetTotalEndOffset(lineNumber) - offset;
} }
} }
public int DelimiterLength { public int DelimiterLength {
get { get {
return doc.GetTotalEndOffset(lineNumber) - doc.GetEndOffset(lineNumber); return doc.GetTotalEndOffset(lineNumber) - endOffset;
} }
} }
@ -248,7 +245,7 @@ namespace ICSharpCode.SharpDevelop.Editor
public ITextBuffer CreateSnapshot() public ITextBuffer CreateSnapshot()
{ {
return this; // ReadOnlyDocument is immutable return textBuffer; // textBuffer is immutable
} }
public ITextBuffer CreateSnapshot(int offset, int length) public ITextBuffer CreateSnapshot(int offset, int length)

Loading…
Cancel
Save