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

◆ Overlaps< T >() [2/4]

static bool System.MemoryExtensions.Overlaps< T > ( this ReadOnlySpan< T > span,
ReadOnlySpan< T > other,
out int elementOffset )
inlinestatic

Definition at line 1202 of file MemoryExtensions.cs.

1203 {
1204 if (span.IsEmpty || other.IsEmpty)
1205 {
1206 elementOffset = 0;
1207 return false;
1208 }
1209 IntPtr intPtr = Unsafe.ByteOffset(ref MemoryMarshal.GetReference(span), ref MemoryMarshal.GetReference(other));
1210 if (Unsafe.SizeOf<IntPtr>() == 4)
1211 {
1212 if ((uint)(int)intPtr < (uint)(span.Length * Unsafe.SizeOf<T>()) || (uint)(int)intPtr > (uint)(-(other.Length * Unsafe.SizeOf<T>())))
1213 {
1214 if ((int)intPtr % Unsafe.SizeOf<T>() != 0)
1215 {
1216 ThrowHelper.ThrowArgumentException_OverlapAlignmentMismatch();
1217 }
1218 elementOffset = (int)intPtr / Unsafe.SizeOf<T>();
1219 return true;
1220 }
1221 elementOffset = 0;
1222 return false;
1223 }
1224 if ((ulong)(long)intPtr < (ulong)((long)span.Length * (long)Unsafe.SizeOf<T>()) || (ulong)(long)intPtr > (ulong)(-((long)other.Length * (long)Unsafe.SizeOf<T>())))
1225 {
1226 if ((long)intPtr % Unsafe.SizeOf<T>() != 0L)
1227 {
1228 ThrowHelper.ThrowArgumentException_OverlapAlignmentMismatch();
1229 }
1230 elementOffset = (int)((long)intPtr / Unsafe.SizeOf<T>());
1231 return true;
1232 }
1233 elementOffset = 0;
1234 return false;
1235 }

References System.L, System.other, and System.ThrowHelper.ThrowArgumentException_OverlapAlignmentMismatch().