Cosmos/source/Cosmos.System.Plugs/System/UInt64Impl.cs
fanoI eb533357b0 - Correctly plugged Enum's GetHashCode()
- Removed GetHashCode() methods that were not really needed
- Plugged class CultureInfo for GetHashCode()
- Plugged class Runtime.CompilerServices for GetHashCode()
- Plugged class RuntimeTypeImpl for GetHashCode()
- Fixed tests that were failing using true .NET GetHashCode()
- Fixed IL Interpreter added SHIFT, AND, XOR... for sbyte and short
2016-03-05 23:10:06 +01:00

46 lines
1.2 KiB
C#

using System;
using Cosmos.IL2CPU.Plugs;
namespace Cosmos.System.Plugs.System
{
[Plug(Target = typeof(UInt64))]
public class UInt64Impl
{
public static string ToString(ref ulong aThis)
{
return UInt64Impl2.GetNumberString(aThis, false);
}
}
// See note in UInt32Impl
public class UInt64Impl2
{
public static string GetNumberString(ulong aValue, bool aIsNegative)
{
const string xDigits = "0123456789";
char[] xResultChars = new char[21];
int xCurrentPos = 20;
if (aValue > 0)
{
while (aValue > 0)
{
byte xPos = (byte)(aValue % 10);
aValue /= 10;
xResultChars[xCurrentPos] = xDigits[xPos];
xCurrentPos -= 1;
}
}
else {
xResultChars[xCurrentPos] = '0';
xCurrentPos -= 1;
}
if (aIsNegative)
{
xResultChars[xCurrentPos] = '-';
xCurrentPos -= 1;
}
return new String(xResultChars, xCurrentPos + 1, 20 - xCurrentPos);
}
}
}