using System; using System.Diagnostics; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; namespace Ryujinx.Graphics.Texture.Astc { [StructLayout(LayoutKind.Sequential, Size = IntegerEncoded.StructSize * Capacity + sizeof(int))] internal struct IntegerSequence { private const int Capacity = 100; private int _length; private IntegerEncoded _start; public Span List => MemoryMarshal.CreateSpan(ref _start, _length); public void Reset() => _length = 0; [MethodImpl(MethodImplOptions.AggressiveInlining)] public void Add(ref IntegerEncoded item) { Debug.Assert(_length < Capacity); int oldLength = _length; _length++; List[oldLength] = item; } } }