X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=ts%2Fstructs%2FResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts;h=e3878992dc82fd7e5f5d340957d2da3b15ad45ab;hb=b0c50b891cbca28d3bd1d86276c132ff5221d8e4;hp=e9feca6e0b8cc36cb834a716df15c1335fc42f3c;hpb=acecce750cf1159a51f9d1a4dbfd717520739e92;p=ldk-java diff --git a/ts/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts b/ts/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts index e9feca6e..e3878992 100644 --- a/ts/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts +++ b/ts/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.ts @@ -22,13 +22,14 @@ public class Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ extends CommonB 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);; - TwoTuple res_conv = new TwoTuple(res_a, res_b_hu_conv); + 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 { @@ -37,11 +38,31 @@ public class Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ extends CommonB super(_dummy, ptr); 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; + } + }