Refactored and reorganized the codebase to improve readability, performance, and maintainability. Introduced new interfaces and structs for better resource management, updated project configuration files, and refactored shader and graphics pipeline management. Improved error handling, code formatting, and removed unused code and namespaces. Updated DLL references and method signatures for consistency and maintainability.
78 lines
1.8 KiB
C#
78 lines
1.8 KiB
C#
namespace Ghost.Core;
|
|
|
|
public readonly struct Result
|
|
{
|
|
public readonly bool success;
|
|
|
|
public readonly string? message;
|
|
|
|
public Result(bool success, string? message = null)
|
|
{
|
|
this.success = success;
|
|
this.message = message;
|
|
}
|
|
|
|
public static Result Success()
|
|
{
|
|
return new Result(true);
|
|
}
|
|
|
|
public static Result Fail(string? message)
|
|
{
|
|
return new Result(false, message);
|
|
}
|
|
|
|
public override string ToString() => success ? "OK" : $"Error: {message}";
|
|
|
|
public static implicit operator Result(bool success) => success ? Success() : Fail(null);
|
|
}
|
|
|
|
public readonly struct Result<T>
|
|
{
|
|
public readonly bool success;
|
|
public readonly T value;
|
|
|
|
public readonly string? message;
|
|
|
|
public Result(bool success, T data, string? message = null)
|
|
{
|
|
this.success = success;
|
|
this.value = data;
|
|
this.message = message;
|
|
}
|
|
|
|
public static Result<T> Success(T data)
|
|
{
|
|
return new Result<T>(true, data);
|
|
}
|
|
|
|
public static Result<T> Fail(string? message)
|
|
{
|
|
return new Result<T>(false, default!, message);
|
|
}
|
|
|
|
public override string ToString() => success ? $"OK: {value}" : $"Error: {message}";
|
|
|
|
public static implicit operator Result<T>(T? data) => data is not null ? Success(data) : Fail(null);
|
|
}
|
|
|
|
public static class ResultExtensions
|
|
{
|
|
public static void ThrowIfFailed(this Result result)
|
|
{
|
|
if (!result.success)
|
|
{
|
|
throw new InvalidOperationException($"Operation failed: {result.message}");
|
|
}
|
|
}
|
|
|
|
public static T GetValueOrThrow<T>(this Result<T> result)
|
|
{
|
|
if (!result.success)
|
|
{
|
|
throw new InvalidOperationException($"Operation failed: {result.message}");
|
|
}
|
|
|
|
return result.value;
|
|
}
|
|
} |