using System; using System.Runtime.CompilerServices; namespace DotRecast.Core.Collections { public struct RcStackArray16 { public static RcStackArray16 Empty => new RcStackArray16(); private const int Size = 16; public int Length => Size; public T V0; public T V1; public T V2; public T V3; public T V4; public T V5; public T V6; public T V7; public T V8; public T V9; public T V10; public T V11; public T V12; public T V13; public T V14; public T V15; public T this[int index] { [MethodImpl(MethodImplOptions.AggressiveInlining)] get { RcThrowHelper.ThrowExceptionIfIndexOutOfRange(index, Length); return index switch { 0 => V0, 1 => V1, 2 => V2, 3 => V3, 4 => V4, 5 => V5, 6 => V6, 7 => V7, 8 => V8, 9 => V9, 10 => V10, 11 => V11, 12 => V12, 13 => V13, 14 => V14, 15 => V15, _ => throw new IndexOutOfRangeException($"{index}") }; } set { RcThrowHelper.ThrowExceptionIfIndexOutOfRange(index, Length); switch (index) { case 0: V0 = value; break; case 1: V1 = value; break; case 2: V2 = value; break; case 3: V3 = value; break; case 4: V4 = value; break; case 5: V5 = value; break; case 6: V6 = value; break; case 7: V7 = value; break; case 8: V8 = value; break; case 9: V9 = value; break; case 10: V10 = value; break; case 11: V11 = value; break; case 12: V12 = value; break; case 13: V13 = value; break; case 14: V14 = value; break; case 15: V15 = value; break; } } } } }