namespace Misaki.HighPerformance.LowLevel.Collections.Contracts; public unsafe interface IUnsafeCollection : IDisposable { /// /// Indicates whether the object has been created. Returns true if the object is created, otherwise false. /// public bool IsCreated { get; } /// /// Removes all elements from the collection. The collection will be empty after this operation. /// public void Clear(); /// /// Returns a pointer to an unmanaged memory location. This pointer can be used for low-level memory operations. /// /// The method returns a void pointer to the unsafe memory location. public void* GetUnsafePtr(); } public unsafe interface IUnsafeCollection : IUnsafeCollection, IEnumerable where T : unmanaged { /// /// Gets the number of elements in a collection. The value is read-only. /// public int Count { get; } /// /// Changes the size of a collection to the specified value. /// /// Specifies the new size to which the collection should be adjusted. public void Resize(int newSize); } public unsafe interface IUnTypedCollection : IUnsafeCollection { /// /// The total size of the buffer in bytes. /// public uint Size { get; } public ref T GetElementAt(uint index) where T : unmanaged; }