X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=ts%2Fstructs%2FResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts;h=e3878992dc82fd7e5f5d340957d2da3b15ad45ab;hb=c3ae2d6897e5a809459c8d9a72a4b3aa0052c8c8;hp=f61389658b1f433caf57bd22792e6ef307a0b296;hpb=822471992c6bf6f9985e531cc5940e4cc35e3e4c;p=ldk-java diff --git a/ts/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts b/ts/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts index f6138965..e3878992 100644 --- a/ts/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts +++ b/ts/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts @@ -16,32 +16,53 @@ public class Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ extends CommonB } } public static final class Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_OK extends Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ { - public final TwoTuple res; + public final TwoTuple res; private Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_OK(Object _dummy, long ptr) { super(_dummy, ptr); - uint32_t res = bindings.LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(ptr); - byte[] res_a = bindings.LDKC2Tuple_BlockHashChannelManagerZ_get_a(res); - uint32_t res_b = bindings.LDKC2Tuple_BlockHashChannelManagerZ_get_b(res); - ChannelManager res_b_hu_conv = new ChannelManager(null, res_b);; - TwoTuple res_conv = new TwoTuple(res_a, res_b_hu_conv); + number res = bindings.LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(ptr); + Uint8Array res_a = bindings.LDKC2Tuple_BlockHashChannelManagerZ_get_a(res); + number res_b = bindings.LDKC2Tuple_BlockHashChannelManagerZ_get_b(res); + const res_b_hu_conv: ChannelManager = new ChannelManager(null, res_b); + res_b_hu_conv.ptrs_to.add(this);; + TwoTuple res_conv = new TwoTuple(res_a, res_b_hu_conv, () -> { + bindings.C2Tuple_BlockHashChannelManagerZ_free(res); + }); + res_b_hu_conv.ptrs_to.add(res_conv); this.res = res_conv; } - public Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_OK(TwoTuple res) { - this(null, bindings.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(bindings.C2Tuple_BlockHashChannelManagerZ_new(res.a, res.b == null ? 0 : res.b.ptr & ~1/*XXX: this.ptrs_to.add(res_b)*/))); - } } public static final class Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_Err extends Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ { public final DecodeError err; private Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_Err(Object _dummy, long ptr) { super(_dummy, ptr); - uint32_t err = bindings.LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(ptr); - DecodeError err_hu_conv = new DecodeError(null, err); + number err = bindings.LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(ptr); + const err_hu_conv: DecodeError = new DecodeError(null, err); + err_hu_conv.ptrs_to.add(this); this.err = err_hu_conv; } - public Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_Err(DecodeError err) { - this(null, bindings.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(err == null ? 0 : err.ptr & ~1)); - this.ptrs_to.add(err); - } } + + public static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ constructor__ok(TwoTuple o) { + number ret = bindings.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_ok(bindings.C2Tuple_BlockHashChannelManagerZ_new(o.a, o.b == null ? 0 : o.b.ptr & ~1)); + Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.constr_from_ptr(ret); + ret_hu_conv.ptrs_to.add(o.b); + // Due to rust's strict-ownership memory model, in some cases we need to "move" + // an object to pass exclusive ownership to the function being called. + // In most cases, we avoid ret_hu_conv being visible in GC'd languages by cloning the object + // at the FFI layer, creating a new object which Rust can claim ownership of + // However, in some cases (eg here), there is no way to clone an object, and thus + // we actually have to pass full ownership to Rust. + // Thus, after ret_hu_conv call, o.b is reset to null and is now a dummy object. + o.b.ptr = 0; + return ret_hu_conv; + } + + public static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ constructor__err(DecodeError e) { + number ret = bindings.CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_err(e == null ? 0 : e.ptr & ~1); + Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ ret_hu_conv = Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.constr_from_ptr(ret); + ret_hu_conv.ptrs_to.add(e); + return ret_hu_conv; + } + }