Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ ComputeHash32OrdinalIgnoreCase()

static int System.Marvin.ComputeHash32OrdinalIgnoreCase ( ref char data,
int count,
uint p0,
uint p1 )
inlinestatic

Definition at line 106 of file Marvin.cs.

107 {
108 uint num = (uint)count;
109 nuint num2 = 0u;
110 while (true)
111 {
112 if (num >= 2)
113 {
114 uint value = Unsafe.ReadUnaligned<uint>(ref Unsafe.As<char, byte>(ref Unsafe.AddByteOffset(ref data, num2)));
116 {
117 break;
118 }
120 Block(ref p0, ref p1);
121 num2 += 4;
122 num -= 2;
123 continue;
124 }
125 if (num != 0)
126 {
127 uint value = Unsafe.AddByteOffset(ref data, num2);
128 if (value > 127)
129 {
130 break;
131 }
132 _ = BitConverter.IsLittleEndian;
134 }
135 _ = BitConverter.IsLittleEndian;
136 p0 += 128;
137 Block(ref p0, ref p1);
138 Block(ref p0, ref p1);
139 return (int)(p1 ^ p0);
140 }
141 return ComputeHash32OrdinalIgnoreCaseSlow(ref Unsafe.AddByteOffset(ref data, num2), (int)num, p0, p1);
142 }
static void Block(ref uint rp0, ref uint rp1)
Definition Marvin.cs:83
static int ComputeHash32OrdinalIgnoreCaseSlow(ref char data, int count, uint p0, uint p1)
Definition Marvin.cs:144
static bool AllCharsInUInt32AreAscii(uint value)
static uint ConvertAllAsciiCharsInUInt32ToUppercase(uint value)

References System.Text.Unicode.Utf16Utility.AllCharsInUInt32AreAscii(), System.Marvin.Block(), System.Marvin.ComputeHash32OrdinalIgnoreCaseSlow(), System.Text.Unicode.Utf16Utility.ConvertAllAsciiCharsInUInt32ToUppercase(), System.count, System.BitConverter.IsLittleEndian, and System.value.

Referenced by System.Collections.Generic.RandomizedStringEqualityComparer.OrdinalIgnoreCaseComparer.GetHashCode(), System.String.GetHashCodeOrdinalIgnoreCase(), and System.String.GetHashCodeOrdinalIgnoreCase().