diff options
Diffstat (limited to 'Ryujinx.Common/Hash128.cs')
-rw-r--r-- | Ryujinx.Common/Hash128.cs | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/Ryujinx.Common/Hash128.cs b/Ryujinx.Common/Hash128.cs new file mode 100644 index 00000000..99cd015c --- /dev/null +++ b/Ryujinx.Common/Hash128.cs @@ -0,0 +1,42 @@ +using System; +using System.Runtime.InteropServices; + +namespace Ryujinx.Common +{ + [StructLayout(LayoutKind.Sequential)] + public struct Hash128 : IEquatable<Hash128> + { + public ulong Low; + public ulong High; + + public override string ToString() + { + return $"{High:x16}{Low:x16}"; + } + + public static bool operator ==(Hash128 x, Hash128 y) + { + return x.Equals(y); + } + + public static bool operator !=(Hash128 x, Hash128 y) + { + return !x.Equals(y); + } + + public override bool Equals(object obj) + { + return obj is Hash128 hash128 && Equals(hash128); + } + + public bool Equals(Hash128 cmpObj) + { + return Low == cmpObj.Low && High == cmpObj.High; + } + + public override int GetHashCode() + { + return HashCode.Combine(Low, High); + } + } +} |