X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fldk%2Fstructs%2FResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.java;h=9bf23f7c8c5ac2dbcd3ed3ed8c56817319a4d017;hb=502589786542336214b743a101b29e9f69e598c9;hp=fb1b524798e869340d9cfa134b76cb21fb455ed6;hpb=a9b82019e7ffa7d32d44943133bb64e1197bd2f1;p=ldk-java diff --git a/src/main/java/org/ldk/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.java b/src/main/java/org/ldk/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.java index fb1b5247..9bf23f7c 100644 --- a/src/main/java/org/ldk/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.java +++ b/src/main/java/org/ldk/structs/Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ.java @@ -5,7 +5,6 @@ import org.ldk.enums.*; import org.ldk.util.*; import java.util.Arrays; -@SuppressWarnings("unchecked") // We correctly assign various generic arrays public class Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ extends CommonBase { private Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ(Object _dummy, long ptr) { super(ptr); } protected void finalize() throws Throwable { @@ -26,13 +25,14 @@ public class Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ extends CommonB long res = bindings.LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_ok(ptr); byte[] res_a = bindings.LDKC2Tuple_BlockHashChannelManagerZ_get_a(res); long 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); + ChannelManager res_b_hu_conv = 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 { @@ -41,11 +41,37 @@ public class Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ extends CommonB super(_dummy, ptr); long err = bindings.LDKCResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ_get_err(ptr); DecodeError err_hu_conv = 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); - } } + + /** + * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the success state. + */ + public static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ constructor_ok(TwoTuple o) { + long 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; + } + + /** + * Creates a new CResult_C2Tuple_BlockHashChannelManagerZDecodeErrorZ in the error state. + */ + public static Result_C2Tuple_BlockHashChannelManagerZDecodeErrorZ constructor_err(DecodeError e) { + long 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; + } + }