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.
76 lines
1.7 KiB
76 lines
1.7 KiB
// <file> |
|
// <copyright see="prj:///doc/copyright.txt"/> |
|
// <license see="prj:///doc/license.txt"/> |
|
// <owner name="none" email=""/> |
|
// <version>$Revision$</version> |
|
// </file> |
|
|
|
using System; |
|
using System.Collections.Generic; |
|
using System.Text; |
|
|
|
namespace ICSharpCode.NRefactory.Parser |
|
{ |
|
public class SpecialTracker |
|
{ |
|
List<ISpecial> currentSpecials = new List<ISpecial>(); |
|
|
|
CommentType currentCommentType; |
|
StringBuilder sb = new StringBuilder(); |
|
Location startPosition; |
|
|
|
public List<ISpecial> CurrentSpecials { |
|
get { |
|
return currentSpecials; |
|
} |
|
} |
|
|
|
public void InformToken(int kind) |
|
{ |
|
|
|
} |
|
|
|
/// <summary> |
|
/// Gets the specials from the SpecialTracker and resets the lists. |
|
/// </summary> |
|
public List<ISpecial> RetrieveSpecials() |
|
{ |
|
List<ISpecial> tmp = currentSpecials; |
|
currentSpecials = new List<ISpecial>(); |
|
return tmp; |
|
} |
|
|
|
public void AddEndOfLine(Location point) |
|
{ |
|
currentSpecials.Add(new BlankLine(point)); |
|
} |
|
|
|
public void AddPreprocessingDirective(string cmd, string arg, Location start, Location end) |
|
{ |
|
currentSpecials.Add(new PreprocessingDirective(cmd, arg, start, end)); |
|
} |
|
|
|
// used for comment tracking |
|
public void StartComment(CommentType commentType, Location startPosition) |
|
{ |
|
this.currentCommentType = commentType; |
|
this.startPosition = startPosition; |
|
this.sb.Length = 0; |
|
} |
|
|
|
public void AddChar(char c) |
|
{ |
|
sb.Append(c); |
|
} |
|
|
|
public void AddString(string s) |
|
{ |
|
sb.Append(s); |
|
} |
|
|
|
public void FinishComment(Location endPosition) |
|
{ |
|
currentSpecials.Add(new Comment(currentCommentType, sb.ToString(), startPosition, endPosition)); |
|
} |
|
} |
|
}
|
|
|