119 lines
5.1 KiB
C#
119 lines
5.1 KiB
C#
using System;
|
|
using System.Runtime.CompilerServices;
|
|
using System.Runtime.InteropServices;
|
|
using BackingLevelInt = System.Byte;
|
|
|
|
namespace PkmnLibSharp.StaticData
|
|
{
|
|
[StructLayout(LayoutKind.Explicit)]
|
|
public struct LevelInt : IComparable, IComparable<BackingLevelInt>, IComparable<LevelInt>, IConvertible,
|
|
IEquatable<BackingLevelInt>, IEquatable<LevelInt>, IEquatable<int>, IFormattable
|
|
{
|
|
[FieldOffset(0)] private BackingLevelInt _value;
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static implicit operator BackingLevelInt(LevelInt l)
|
|
{
|
|
return l._value;
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static implicit operator LevelInt(BackingLevelInt b)
|
|
{
|
|
return new LevelInt { _value = b };
|
|
}
|
|
|
|
public int CompareTo(object obj)
|
|
{
|
|
if (obj is LevelInt l)
|
|
return _value.CompareTo(l._value);
|
|
return _value.CompareTo(obj);
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public int CompareTo(BackingLevelInt other) => _value.CompareTo(other);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public int CompareTo(LevelInt other) => _value.CompareTo(other._value);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public TypeCode GetTypeCode() => Type.GetTypeCode(typeof(BackingLevelInt));
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public bool ToBoolean(IFormatProvider provider) => ((IConvertible)_value).ToBoolean(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public byte ToByte(IFormatProvider provider) => ((IConvertible)_value).ToByte(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public char ToChar(IFormatProvider provider) => ((IConvertible)_value).ToChar(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public DateTime ToDateTime(IFormatProvider provider) => ((IConvertible)_value).ToDateTime(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public decimal ToDecimal(IFormatProvider provider) => ((IConvertible)_value).ToDecimal(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public double ToDouble(IFormatProvider provider) => ((IConvertible)_value).ToDouble(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public short ToInt16(IFormatProvider provider) => ((IConvertible)_value).ToInt16(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public int ToInt32(IFormatProvider provider) => ((IConvertible)_value).ToInt32(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public long ToInt64(IFormatProvider provider) => ((IConvertible)_value).ToInt64(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public sbyte ToSByte(IFormatProvider provider) => ((IConvertible)_value).ToSByte(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public float ToSingle(IFormatProvider provider) => ((IConvertible)_value).ToSingle(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public string ToString(IFormatProvider provider) => _value.ToString(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public object ToType(Type conversionType, IFormatProvider provider) =>
|
|
((IConvertible)_value).ToType(conversionType, provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public ushort ToUInt16(IFormatProvider provider) => ((IConvertible)_value).ToUInt16(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public uint ToUInt32(IFormatProvider provider) => ((IConvertible)_value).ToUInt32(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public ulong ToUInt64(IFormatProvider provider) => ((IConvertible)_value).ToUInt64(provider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public bool Equals(BackingLevelInt other) => _value == other;
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public string ToString(string format, IFormatProvider formatProvider) =>
|
|
_value.ToString(format, formatProvider);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public bool Equals(LevelInt other) => _value == other._value;
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public bool Equals(int other) => _value == other;
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public override bool Equals(object? obj) => obj is LevelInt other && Equals(other);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public override int GetHashCode()
|
|
{
|
|
return _value.GetHashCode();
|
|
}
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static bool operator ==(LevelInt left, LevelInt right) => left.Equals(right);
|
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
public static bool operator !=(LevelInt left, LevelInt right) => !left.Equals(right);
|
|
}
|
|
} |