Browse Source

Add CSharpResolver.ResolveSizeOf().

newNRvisualizers
Daniel Grunwald 15 years ago
parent
commit
5dfe00e950
  1. 36
      ICSharpCode.NRefactory/CSharp/Resolver/CSharpResolver.cs

36
ICSharpCode.NRefactory/CSharp/Resolver/CSharpResolver.cs

@ -1617,5 +1617,41 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver @@ -1617,5 +1617,41 @@ namespace ICSharpCode.NRefactory.CSharp.Resolver
}
}
#endregion
#region ResolveSizeOf
/// <summary>
/// Resolves 'sizeof(type)'.
/// </summary>
public ResolveResult ResolveSizeOf(IType type)
{
IType int32 = TypeCode.Int32.ToTypeReference().Resolve(context);
int size;
switch (ReflectionHelper.GetTypeCode(type)) {
case TypeCode.Boolean:
case TypeCode.SByte:
case TypeCode.Byte:
size = 1;
break;
case TypeCode.Char:
case TypeCode.Int16:
case TypeCode.UInt16:
size = 2;
break;
case TypeCode.Int32:
case TypeCode.UInt32:
case TypeCode.Single:
size = 4;
break;
case TypeCode.Int64:
case TypeCode.UInt64:
case TypeCode.Double:
size = 8;
break;
default:
return new ResolveResult(int32);
}
return new ConstantResolveResult(int32, size);
}
#endregion
}
}

Loading…
Cancel
Save