using System; using CeresSharp.Native; namespace CeresSharp.Native.SafeHandles; /// /// Safe handle for Ceres GradientChecker. /// internal sealed class GradientCheckerHandle : BaseSafeHandle { private GradientCheckerHandle() : base() { } private GradientCheckerHandle(IntPtr handle, bool ownsHandle) : base(handle, ownsHandle) { } public static GradientCheckerHandle Create(IntPtr handle) { if (handle == IntPtr.Zero) { throw new Exceptions.CeresException(Exceptions.CeresErrorCode.NullPointer, "Gradient checker handle is null"); } return new GradientCheckerHandle(handle, true); } protected override void ReleaseNativeHandle(IntPtr handle) { CeresNative.ceres_wrapper_free_gradient_checker(handle); } }