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

◆ IndexOfAny< T >() [1/6]

static int System.MemoryExtensions.IndexOfAny< T > ( this ReadOnlySpan< T > span,
ReadOnlySpan< T > values )
inlinestatic
Type Constraints
T :IEquatable<T> 

Definition at line 753 of file MemoryExtensions.cs.

754 {
755 if (RuntimeHelpers.IsBitwiseEquatable<T>())
756 {
757 if (Unsafe.SizeOf<T>() == 1)
758 {
759 ref byte reference = ref Unsafe.As<T, byte>(ref MemoryMarshal.GetReference(values));
760 if (values.Length == 2)
761 {
762 return SpanHelpers.IndexOfAny(ref Unsafe.As<T, byte>(ref MemoryMarshal.GetReference(span)), reference, Unsafe.Add(ref reference, 1), span.Length);
763 }
764 if (values.Length == 3)
765 {
766 return SpanHelpers.IndexOfAny(ref Unsafe.As<T, byte>(ref MemoryMarshal.GetReference(span)), reference, Unsafe.Add(ref reference, 1), Unsafe.Add(ref reference, 2), span.Length);
767 }
768 }
769 if (Unsafe.SizeOf<T>() == 2)
770 {
771 ref char reference2 = ref Unsafe.As<T, char>(ref MemoryMarshal.GetReference(values));
772 if (values.Length == 5)
773 {
774 return SpanHelpers.IndexOfAny(ref Unsafe.As<T, char>(ref MemoryMarshal.GetReference(span)), reference2, Unsafe.Add(ref reference2, 1), Unsafe.Add(ref reference2, 2), Unsafe.Add(ref reference2, 3), Unsafe.Add(ref reference2, 4), span.Length);
775 }
776 if (values.Length == 2)
777 {
778 return SpanHelpers.IndexOfAny(ref Unsafe.As<T, char>(ref MemoryMarshal.GetReference(span)), reference2, Unsafe.Add(ref reference2, 1), span.Length);
779 }
780 if (values.Length == 4)
781 {
782 return SpanHelpers.IndexOfAny(ref Unsafe.As<T, char>(ref MemoryMarshal.GetReference(span)), reference2, Unsafe.Add(ref reference2, 1), Unsafe.Add(ref reference2, 2), Unsafe.Add(ref reference2, 3), span.Length);
783 }
784 if (values.Length == 3)
785 {
786 return SpanHelpers.IndexOfAny(ref Unsafe.As<T, char>(ref MemoryMarshal.GetReference(span)), reference2, Unsafe.Add(ref reference2, 1), Unsafe.Add(ref reference2, 2), span.Length);
787 }
788 if (values.Length == 1)
789 {
790 return SpanHelpers.IndexOf(ref Unsafe.As<T, char>(ref MemoryMarshal.GetReference(span)), reference2, span.Length);
791 }
792 }
793 }
794 return SpanHelpers.IndexOfAny(ref MemoryMarshal.GetReference(span), span.Length, ref MemoryMarshal.GetReference(values), values.Length);
795 }

References System.SpanHelpers.IndexOf(), System.SpanHelpers.IndexOfAny(), System.T, and System.values.