@ -1,5 +1,3 @@
using System.Collections.Generic ;
namespace ICSharpCode.Decompiler.CSharp.Syntax
namespace ICSharpCode.Decompiler.CSharp.Syntax
{
{
/// <summary>
/// <summary>
@ -7,57 +5,20 @@ namespace ICSharpCode.Decompiler.CSharp.Syntax
/// </summary>
/// </summary>
public sealed class TokenRole : Role < CSharpTokenNode >
public sealed class TokenRole : Role < CSharpTokenNode >
{
{
internal readonly static List < string > Tokens = new List < string > ( ) ;
internal readonly static List < int > TokenLengths = new List < int > ( ) ;
internal readonly uint TokenIndex ;
static TokenRole ( )
{
// null token
Tokens . Add ( "" ) ;
TokenLengths . Add ( 0 ) ;
}
/// <summary>
/// <summary>
/// Gets the token as string. Note that the token Name and Token value may differ.
/// Gets the token as string. Note that the token Name and Token value may differ.
/// </summary>
/// </summary>
public string Token {
public string Token { get ; }
get ;
private set ;
}
/// <summary>
/// <summary>
/// Gets the char length of the token.
/// Gets the char length of the token.
/// </summary>
/// </summary>
public int Length {
public int Length { get ; }
get ;
private set ;
}
public TokenRole ( string token ) : base ( token , CSharpTokenNode . Null )
public TokenRole ( string token ) : base ( token , CSharpTokenNode . Null )
{
{
this . Token = token ;
this . Token = token ;
this . Length = token . Length ;
this . Length = token . Length ;
bool found = false ;
for ( int i = 0 ; i < Tokens . Count ; i + + )
{
var existingToken = Tokens [ i ] ;
if ( existingToken = = token )
{
TokenIndex = ( uint ) i ;
found = true ;
break ;
}
}
if ( ! found )
{
TokenIndex = ( uint ) Tokens . Count ;
Tokens . Add ( token ) ;
TokenLengths . Add ( this . Length ) ;
}
}
}
}
}
}
}