/// <summary>
/// Releases unmanaged resources
/// </summary>
protected override void DisposeUnmanaged()
{
switch (handleKind)
{
case HandleKind.Scalar:
NativeMethods.HandleException(
NativeMethods.core_InputArray_delete_withScalar(ptr, handle));
break;
case HandleKind.Double:
Marshal.FreeHGlobal(handle);
goto default;
case HandleKind.Vec:
var gch = GCHandle.FromIntPtr(handle);
if (gch.IsAllocated)
{
gch.Free();
}
goto default;
default:
NativeMethods.HandleException(
NativeMethods.core_InputArray_delete(ptr));
break;
}
base.DisposeUnmanaged();
}