Refactor core APIs, fix bugs, and improve safety

- Make image result/info structs readonly; improve error handling and memory safety in image library
- Introduce IJobScheduler interface; move job scheduling docs to interface
- Remove "index 0 invalid" convention from slot/sparse maps; fix Count logic
- Add Owner<T> for disposable value types in low-level utilities
- Improve ObjectPool<T> thread safety and logic
- Change List<T>.RemoveAndSwapBack to return bool
- Remove unsafe methods from generated math types; add debug range checks
- Update benchmarks and enable collection checks in tests
- Improve documentation, comments, and error messages
- Bump assembly versions across all projects
This commit is contained in:
2025-12-21 16:08:10 +09:00
parent a1ad0bd2da
commit 1fee890329
38 changed files with 1967 additions and 350 deletions

View File

@@ -1,15 +1,30 @@
using System.IO;
using System.IO;
namespace Misaki.HighPerformance.Image;
public struct ImageInfo
public readonly struct ImageInfo
{
public int Width;
public int Height;
public ColorComponents ColorComponents;
public int BitsPerChannel;
public int Width
{
get; init;
}
public static unsafe ImageInfo? FromStream(Stream stream)
public int Height
{
get; init;
}
public ColorComponents ColorComponents
{
get; init;
}
public int BitsPerChannel
{
get; init;
}
public static unsafe ImageInfo FromStream(Stream stream)
{
int width, height, comp;
var context = new StbImage.stbi__context(stream);
@@ -21,7 +36,9 @@ public struct ImageInfo
StbImage.stbi__rewind(context);
if (infoResult == 0)
return null;
{
return default;
}
return new ImageInfo
{