Update auto-generated bindings with new upstream.
[ldk-java] / ts / structs / ChannelMonitor.ts
index 9c3bc931c38090ebffef8134e28289e1e7064a48..0d9ad3966158dc22cb2955ad1256e9387bbd4636 100644 (file)
@@ -18,6 +18,13 @@ import * as bindings from '../bindings' // TODO: figure out location
                         bindings.ChannelMonitor_free(this.ptr);
                     }
                 }
+       public ChannelMonitor clone() {
+               number ret = bindings.ChannelMonitor_clone(this.ptr);
+               const ret_hu_conv: ChannelMonitor = new ChannelMonitor(null, ret);
+               ret_hu_conv.ptrs_to.add(this);
+               return ret_hu_conv;
+       }
+
        public Uint8Array write() {
                Uint8Array ret = bindings.ChannelMonitor_write(this.ptr);
                return ret;
@@ -41,9 +48,13 @@ import * as bindings from '../bindings' // TODO: figure out location
        public TwoTuple<OutPoint, Uint8Array> get_funding_txo() {
                number ret = bindings.ChannelMonitor_get_funding_txo(this.ptr);
                number ret_a = bindings.LDKC2Tuple_OutPointScriptZ_get_a(ret);
-               const ret_a_hu_conv: OutPoint = new OutPoint(null, ret_a);;
+               const ret_a_hu_conv: OutPoint = new OutPoint(null, ret_a);
+               ret_a_hu_conv.ptrs_to.add(this);;
                Uint8Array ret_b = bindings.LDKC2Tuple_OutPointScriptZ_get_b(ret);
-               TwoTuple<OutPoint, Uint8Array> ret_conv = new TwoTuple<OutPoint, Uint8Array>(ret_a_hu_conv, ret_b);
+               TwoTuple<OutPoint, Uint8Array> ret_conv = new TwoTuple<OutPoint, Uint8Array>(ret_a_hu_conv, ret_b, () -> {
+                       bindings.C2Tuple_OutPointScriptZ_free(ret);
+               });
+               ret_a_hu_conv.ptrs_to.add(ret_conv);
                return ret_conv;
        }
 
@@ -53,6 +64,7 @@ import * as bindings from '../bindings' // TODO: figure out location
                for (int o = 0; o < ret.length; o++) {
                        number arr_conv_14 = ret[o];
                        const arr_conv_14_hu_conv: MonitorEvent = new MonitorEvent(null, arr_conv_14);
+                       arr_conv_14_hu_conv.ptrs_to.add(this);
                        arr_conv_14_arr[o] = arr_conv_14_hu_conv;
                }
                return arr_conv_14_arr;
@@ -77,7 +89,7 @@ import * as bindings from '../bindings' // TODO: figure out location
        }
 
        public TwoTuple<Uint8Array, TwoTuple<Number, TxOut>[]>[] block_connected(Uint8Array header, TwoTuple<Number, Uint8Array>[] txdata, number height, BroadcasterInterface broadcaster, FeeEstimator fee_estimator, Logger logger) {
-               number[] ret = bindings.ChannelMonitor_block_connected(this.ptr, header, (number[])Arrays.stream(txdata).map(arr_conv_30 -> bindings.C2Tuple_usizeTransactionZ_new(arr_conv_30.a, arr_conv_30.b)).toArray(), height, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
+               number[] ret = bindings.ChannelMonitor_block_connected(this.ptr, header, Arrays.stream(txdata).map(arr_conv_30 -> bindings.C2Tuple_usizeTransactionZ_new(arr_conv_30.a, arr_conv_30.b)).toArray(number[]::new), height, broadcaster == null ? 0 : broadcaster.ptr, fee_estimator == null ? 0 : fee_estimator.ptr, logger == null ? 0 : logger.ptr);
                TwoTuple<Uint8Array, TwoTuple<Number, TxOut>[]>[] arr_conv_49_arr = new TwoTuple[ret.length];
                for (int x = 0; x < ret.length; x++) {
                        number arr_conv_49 = ret[x];
@@ -87,12 +99,16 @@ import * as bindings from '../bindings' // TODO: figure out location
                        for (int z = 0; z < arr_conv_49_b.length; z++) {
                                number arr_conv_25 = arr_conv_49_b[z];
                                number arr_conv_25_a = bindings.LDKC2Tuple_u32TxOutZ_get_a(arr_conv_25);
-                               number arr_conv_25_b = bindings.LDKC2Tuple_u32TxOutZ_get_b(arr_conv_25);
+                               number arr_conv_25_b = bindings.TxOut_clone(bindings.LDKC2Tuple_u32TxOutZ_get_b(arr_conv_25));
                                TxOut arr_conv_25_b_conv = new TxOut(null, arr_conv_25_b);;
-                               TwoTuple<Number, TxOut> arr_conv_25_conv = new TwoTuple<Number, TxOut>(arr_conv_25_a, arr_conv_25_b_conv);
+                               TwoTuple<Number, TxOut> arr_conv_25_conv = new TwoTuple<Number, TxOut>(arr_conv_25_a, arr_conv_25_b_conv, () -> {
+                                       bindings.C2Tuple_u32TxOutZ_free(arr_conv_25);
+                               });
+                               arr_conv_25_b_conv.ptrs_to.add(arr_conv_25_conv);
                                arr_conv_25_arr[z] = arr_conv_25_conv;
                        };
                        TwoTuple<Uint8Array, TwoTuple<Number, TxOut>[]> arr_conv_49_conv = new TwoTuple<Uint8Array, TwoTuple<Number, TxOut>[]>(arr_conv_49_a, arr_conv_25_arr);
+                       // Warning: We may not free the C tuple object!
                        arr_conv_49_arr[x] = arr_conv_49_conv;
                }
                /* TODO 2 TwoTuple<Number, Uint8Array>  */;