mirror of https://github.com/icsharpcode/ILSpy.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
125 lines
4.0 KiB
125 lines
4.0 KiB
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt) |
|
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt) |
|
|
|
using ICSharpCode.NRefactory; |
|
using System; |
|
|
|
namespace ICSharpCode.SharpDevelop.Dom.Refactoring |
|
{ |
|
/// <summary> |
|
/// A document representing a source code file for refactoring. |
|
/// Line and column counting starts at 1. |
|
/// Offset counting starts at 0. |
|
/// </summary> |
|
public interface IRefactoringDocument : IServiceProvider |
|
{ |
|
/// <summary> |
|
/// Gets the total text length. |
|
/// </summary> |
|
/// <returns>The length of the text, in characters.</returns> |
|
/// <remarks>This is the same as Text.Length, but is more efficient because |
|
/// it doesn't require creating a String object.</remarks> |
|
int TextLength { get; } |
|
|
|
/// <summary> |
|
/// Gets the total number of lines in the document. |
|
/// </summary> |
|
int TotalNumberOfLines { get; } |
|
|
|
/// <summary> |
|
/// Gets/Sets the whole text as string. |
|
/// </summary> |
|
string Text { get; set; } |
|
|
|
/// <summary> |
|
/// Gets the document line with the specified number. |
|
/// </summary> |
|
/// <param name="lineNumber">The number of the line to retrieve. The first line has number 1.</param> |
|
IRefactoringDocumentLine GetLine(int lineNumber); |
|
|
|
/// <summary> |
|
/// Gets the document line that contains the specified offset. |
|
/// </summary> |
|
IRefactoringDocumentLine GetLineForOffset(int offset); |
|
|
|
int PositionToOffset(int line, int column); |
|
Location OffsetToPosition(int offset); |
|
|
|
void Insert(int offset, string text); |
|
void Remove(int offset, int length); |
|
void Replace(int offset, int length, string newText); |
|
|
|
/// <summary> |
|
/// Gets a character at the specified position in the document. |
|
/// </summary> |
|
/// <paramref name="offset">The index of the character to get.</paramref> |
|
/// <exception cref="ArgumentOutOfRangeException">Offset is outside the valid range (0 to TextLength-1).</exception> |
|
/// <returns>The character at the specified position.</returns> |
|
/// <remarks>This is the same as Text[offset], but is more efficient because |
|
/// it doesn't require creating a String object.</remarks> |
|
char GetCharAt(int offset); |
|
|
|
/// <summary> |
|
/// Retrieves the text for a portion of the document. |
|
/// </summary> |
|
/// <exception cref="ArgumentOutOfRangeException">offset or length is outside the valid range.</exception> |
|
/// <remarks>This is the same as Text.Substring, but is more efficient because |
|
/// it doesn't require creating a String object for the whole document.</remarks> |
|
string GetText(int offset, int length); |
|
|
|
/// <summary> |
|
/// Make the document combine the following actions into a single |
|
/// action for undo purposes. |
|
/// </summary> |
|
void StartUndoableAction(); |
|
|
|
/// <summary> |
|
/// Ends the undoable action started with <see cref="StartUndoableAction"/>. |
|
/// </summary> |
|
void EndUndoableAction(); |
|
|
|
/// <summary> |
|
/// Creates an undo group. Dispose the returned value to close the undo group. |
|
/// </summary> |
|
/// <returns>An object that closes the undo group when Dispose() is called.</returns> |
|
IDisposable OpenUndoGroup(); |
|
} |
|
|
|
/// <summary> |
|
/// A line inside a <see cref="IRefactoringDocument"/>. |
|
/// </summary> |
|
public interface IRefactoringDocumentLine |
|
{ |
|
/// <summary> |
|
/// Gets the starting offset of the line in the document's text. |
|
/// </summary> |
|
int Offset { get; } |
|
|
|
/// <summary> |
|
/// Gets the length of this line (=the number of characters on the line). |
|
/// </summary> |
|
int Length { get; } |
|
|
|
/// <summary> |
|
/// Gets the length of this line, including the line delimiter. |
|
/// </summary> |
|
int TotalLength { get; } |
|
|
|
/// <summary> |
|
/// Gets the length of the line terminator. |
|
/// Returns 1 or 2; or 0 at the end of the document. |
|
/// </summary> |
|
int DelimiterLength { get; } |
|
|
|
/// <summary> |
|
/// Gets the number of this line. |
|
/// The first line has the number 1. |
|
/// </summary> |
|
int LineNumber { get; } |
|
|
|
/// <summary> |
|
/// Gets the text on this line. |
|
/// </summary> |
|
string Text { get; } |
|
} |
|
}
|
|
|