private static IntPtr Create(IntPtr data, int length, MemoryMode mode, object context, ReleaseDelegate releaseProc) { var del = releaseProc != null && context != null ? new ReleaseDelegate((_) => releaseProc(context)) : releaseProc; var proxy = DelegateProxies.Create(del, DelegateProxies.ReleaseDelegateProxy, out _, out var ctx); return(HarfBuzzApi.hb_blob_create(data, length, mode, ctx, proxy)); }
private static IntPtr Create(IntPtr data, int length, MemoryMode mode, object context, ReleaseDelegate releaseProc) { if (releaseProc == null) { return(HarfBuzzApi.hb_blob_create(data, length, mode, IntPtr.Zero, IntPtr.Zero)); } else { var ctx = new NativeDelegateContext(context, releaseProc); return(HarfBuzzApi.hb_blob_create(data, length, mode, ctx.NativeContext, DestroyFunction.NativePointer)); } }
private static IntPtr Create(IntPtr data, uint length, MemoryMode mode, object user_data, BlobReleaseDelegate releaseProc) { if (releaseProc == null) { return(HarfBuzzApi.hb_blob_create(data, length, mode, IntPtr.Zero, IntPtr.Zero)); } else { var ctx = new NativeDelegateContext(user_data, releaseProc); return(HarfBuzzApi.hb_blob_create(data, length, mode, ctx.NativeContext, destroy_func)); } }
private static IntPtr Create(IntPtr data, int length, MemoryMode mode, ReleaseDelegate releaseProc) { var proxy = DelegateProxies.Create(releaseProc, DelegateProxies.ReleaseDelegateProxy, out _, out var ctx); return(HarfBuzzApi.hb_blob_create(data, length, mode, ctx, proxy)); }