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.
///
/// This is to adjust the element count of the collection, not the size of the underlying buffer in memory.
/// 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;
}