1using System.Runtime.CompilerServices;
12 private const uint
PRIME1 = 2654435761U;
13 private const uint
PRIME2 = 2246822519U;
14 private const uint
PRIME3 = 3266489917U;
15 private const uint
PRIME4 = 668265263U;
16 private const uint
PRIME5 = 374761393U;
29 [MethodImpl(MethodImplOptions.AggressiveInlining)]
32 return value << offset | value >> 32 - offset;
45 [MethodImpl(MethodImplOptions.AggressiveInlining)]
48 return value << offset | value >> 64 - offset;
61 [MethodImpl(MethodImplOptions.AggressiveInlining)]
64 return value >> offset | value << 32 - offset;
77 [MethodImpl(MethodImplOptions.AggressiveInlining)]
80 return value >> offset | value << 64 - offset;
85 return (uint)
new Random().Next();
97 uint hc1 = (uint)(value1?.GetHashCode() ?? 0);
111 uint hc1 = (uint)(value1?.GetHashCode() ?? 0);
112 uint hc2 = (uint)(value2?.GetHashCode() ?? 0);
127 uint hc1 = (uint)(value1?.GetHashCode() ?? 0);
128 uint hc2 = (uint)(value2?.GetHashCode() ?? 0);
129 uint hc3 = (uint)(value3?.GetHashCode() ?? 0);
145 uint hc1 = (uint)(value1?.GetHashCode() ?? 0);
146 uint hc2 = (uint)(value2?.GetHashCode() ?? 0);
147 uint hc3 = (uint)(value3?.GetHashCode() ?? 0);
148 uint hc4 = (uint)(value4?.GetHashCode() ?? 0);
150 Initialize(out uint v1, out uint v2, out uint v3, out uint v4);
157 uint hash =
MixState(v1, v2, v3, v4);
167 uint hc1 = (uint)(value1?.GetHashCode() ?? 0);
168 uint hc2 = (uint)(value2?.GetHashCode() ?? 0);
169 uint hc3 = (uint)(value3?.GetHashCode() ?? 0);
170 uint hc4 = (uint)(value4?.GetHashCode() ?? 0);
171 uint hc5 = (uint)(value5?.GetHashCode() ?? 0);
173 Initialize(out uint v1, out uint v2, out uint v3, out uint v4);
180 uint hash =
MixState(v1, v2, v3, v4);
198 uint hc1 = (uint)(value1?.GetHashCode() ?? 0);
199 uint hc2 = (uint)(value2?.GetHashCode() ?? 0);
200 uint hc3 = (uint)(value3?.GetHashCode() ?? 0);
201 uint hc4 = (uint)(value4?.GetHashCode() ?? 0);
202 uint hc5 = (uint)(value5?.GetHashCode() ?? 0);
203 uint hc6 = (uint)(value6?.GetHashCode() ?? 0);
205 Initialize(out uint v1, out uint v2, out uint v3, out uint v4);
212 uint hash =
MixState(v1, v2, v3, v4);
232 uint hc1 = (uint)(value1?.GetHashCode() ?? 0);
233 uint hc2 = (uint)(value2?.GetHashCode() ?? 0);
234 uint hc3 = (uint)(value3?.GetHashCode() ?? 0);
235 uint hc4 = (uint)(value4?.GetHashCode() ?? 0);
236 uint hc5 = (uint)(value5?.GetHashCode() ?? 0);
237 uint hc6 = (uint)(value6?.GetHashCode() ?? 0);
238 uint hc7 = (uint)(value7?.GetHashCode() ?? 0);
240 Initialize(out uint v1, out uint v2, out uint v3, out uint v4);
247 uint hash =
MixState(v1, v2, v3, v4);
269 uint hc1 = (uint)(value1?.GetHashCode() ?? 0);
270 uint hc2 = (uint)(value2?.GetHashCode() ?? 0);
271 uint hc3 = (uint)(value3?.GetHashCode() ?? 0);
272 uint hc4 = (uint)(value4?.GetHashCode() ?? 0);
273 uint hc5 = (uint)(value5?.GetHashCode() ?? 0);
274 uint hc6 = (uint)(value6?.GetHashCode() ?? 0);
275 uint hc7 = (uint)(value7?.GetHashCode() ?? 0);
276 uint hc8 = (uint)(value8?.GetHashCode() ?? 0);
278 Initialize(out uint v1, out uint v2, out uint v3, out uint v4);
290 uint hash =
MixState(v1, v2, v3, v4);
298 [MethodImpl(MethodImplOptions.AggressiveInlining)]
299 private static void Initialize(out uint v1, out uint v2, out uint v3, out uint v4)
307 [MethodImpl(MethodImplOptions.AggressiveInlining)]
308 private static uint
Round(uint hash, uint input)
313 [MethodImpl(MethodImplOptions.AggressiveInlining)]
319 [MethodImpl(MethodImplOptions.AggressiveInlining)]
320 private static uint
MixState(uint v1, uint v2, uint v3, uint v4)
330 [MethodImpl(MethodImplOptions.AggressiveInlining)]
Implements Combination of HashCode Functions Taken from decompiled source of System....
static uint MixEmptyState()
static int Combine< T1 >(T1 value1)
static int Combine< T1, T2, T3, T4 >(T1 value1, T2 value2, T3 value3, T4 value4)
static int Combine< T1, T2, T3, T4, T5, T6 >(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6)
static uint MixState(uint v1, uint v2, uint v3, uint v4)
static uint QueueRound(uint hash, uint queuedValue)
static ulong RotateRight(ulong value, int offset)
Rotates the specified value right by the specified number of bits. Similar in behavior to the x86 ins...
static int Combine< T1, T2, T3, T4, T5, T6, T7, T8 >(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7, T8 value8)
static uint Round(uint hash, uint input)
static uint MixFinal(uint hash)
static void Initialize(out uint v1, out uint v2, out uint v3, out uint v4)
static uint RotateLeft(uint value, int offset)
Rotates the specified value left by the specified number of bits. Similar in behavior to the x86 inst...
static int Combine< T1, T2, T3 >(T1 value1, T2 value2, T3 value3)
static ulong RotateLeft(ulong value, int offset)
Rotates the specified value left by the specified number of bits. Similar in behavior to the x86 inst...
static int Combine< T1, T2 >(T1 value1, T2 value2)
static int Combine< T1, T2, T3, T4, T5, T6, T7 >(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5, T6 value6, T7 value7)
static uint RotateRight(uint value, int offset)
Rotates the specified value right by the specified number of bits. Similar in behavior to the x86 ins...
static readonly uint s_Seed
static int Combine< T1, T2, T3, T4, T5 >(T1 value1, T2 value2, T3 value3, T4 value4, T5 value5)
static uint GenerateGlobalSeed()
Contains Utility Functions and Classes.