|
|
|
@ -126,6 +126,41 @@ namespace ICSharpCode.Decompiler
@@ -126,6 +126,41 @@ namespace ICSharpCode.Decompiler
|
|
|
|
|
return false; |
|
|
|
|
return type.IsValueType || type.IsVoid(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// checks if the given TypeReference is one of the following types:
|
|
|
|
|
/// [sbyte, short, int, long, IntPtr]
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static bool IsSignedIntegralType(this TypeReference type) |
|
|
|
|
{ |
|
|
|
|
return type.MetadataType == MetadataType.SByte || |
|
|
|
|
type.MetadataType == MetadataType.Int16 || |
|
|
|
|
type.MetadataType == MetadataType.Int32 || |
|
|
|
|
type.MetadataType == MetadataType.Int64 || |
|
|
|
|
type.MetadataType == MetadataType.IntPtr; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// checks if the given value is a numeric zero-value.
|
|
|
|
|
/// NOTE that this only works for types: [sbyte, short, int, long, IntPtr, byte, ushort, uint, ulong, float, double and decimal]
|
|
|
|
|
/// </summary>
|
|
|
|
|
public static bool IsZero(this object value) |
|
|
|
|
{ |
|
|
|
|
return value.Equals((sbyte)0) || |
|
|
|
|
value.Equals((short)0) || |
|
|
|
|
value.Equals(0) || |
|
|
|
|
value.Equals(0L) || |
|
|
|
|
value.Equals(IntPtr.Zero) || |
|
|
|
|
value.Equals((byte)0) || |
|
|
|
|
value.Equals((ushort)0) || |
|
|
|
|
value.Equals(0u) || |
|
|
|
|
value.Equals(0UL) || |
|
|
|
|
value.Equals(0.0f) || |
|
|
|
|
value.Equals(0.0) || |
|
|
|
|
value.Equals((decimal)0); |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|