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

◆ Contains() [1/2]

static bool System.SpanHelpers.Contains ( ref byte searchSpace,
byte value,
int length )
inlinestatic

Definition at line 102 of file SpanHelpers.cs.

103 {
104 nuint num = 0u;
105 nuint num2 = (uint)length;
107 {
109 }
110 while (true)
111 {
112 if (num2 >= 8)
113 {
114 num2 -= 8;
115 if (value == Unsafe.AddByteOffset(ref searchSpace, num + 0) || value == Unsafe.AddByteOffset(ref searchSpace, num + 1) || value == Unsafe.AddByteOffset(ref searchSpace, num + 2) || value == Unsafe.AddByteOffset(ref searchSpace, num + 3) || value == Unsafe.AddByteOffset(ref searchSpace, num + 4) || value == Unsafe.AddByteOffset(ref searchSpace, num + 5) || value == Unsafe.AddByteOffset(ref searchSpace, num + 6) || value == Unsafe.AddByteOffset(ref searchSpace, num + 7))
116 {
117 break;
118 }
119 num += 8;
120 continue;
121 }
122 if (num2 >= 4)
123 {
124 num2 -= 4;
125 if (value == Unsafe.AddByteOffset(ref searchSpace, num + 0) || value == Unsafe.AddByteOffset(ref searchSpace, num + 1) || value == Unsafe.AddByteOffset(ref searchSpace, num + 2) || value == Unsafe.AddByteOffset(ref searchSpace, num + 3))
126 {
127 break;
128 }
129 num += 4;
130 }
131 while (num2 != 0)
132 {
133 num2--;
134 if (value == Unsafe.AddByteOffset(ref searchSpace, num))
135 {
136 goto end_IL_00bd;
137 }
138 num++;
139 }
140 if (Vector.IsHardwareAccelerated && num < (uint)length)
141 {
142 num2 = ((uint)length - num) & (nuint)(~(Vector<byte>.Count - 1));
143 Vector<byte> left = new Vector<byte>(value);
144 for (; num2 > num; num += (nuint)Vector<byte>.Count)
145 {
147 if (!Vector<byte>.Zero.Equals(other))
148 {
149 goto end_IL_00bd;
150 }
151 }
152 if (num < (uint)length)
153 {
154 num2 = (uint)length - num;
155 continue;
156 }
157 }
158 return false;
159 continue;
161 break;
162 }
163 return true;
164 }
static bool IsHardwareAccelerated
Definition Vector.cs:14
static Vector< int > Equals(Vector< float > left, Vector< float > right)
Definition Vector.cs:52
static unsafe nuint UnalignedCountVector(ref byte searchSpace)
static Vector< byte > LoadVector(ref byte start, nuint offset)

References System.Collections.Generic.Dictionary< TKey, TValue >.Count, System.Numerics.Vector< T >.Equals(), System.Numerics.Vector< T >.IsHardwareAccelerated, System.length, System.SpanHelpers.LoadVector(), System.other, System.SpanHelpers.UnalignedCountVector(), and System.value.

Referenced by System.String.Contains(), System.MemoryExtensions.Contains< T >(), and System.MemoryExtensions.Contains< T >().