X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=ts%2Fbindings.c;h=83006a946f294ddeaeb9790c3e5eb996047e2261;hb=f51e303f0ebe8fa1c9dcbd57324aab6266b5fd79;hp=c2a8c4058c29ce1d867b217d5a741139cb7bca16;hpb=54be51eba6c3395c3c8c815df6d344db0dc965aa;p=ldk-java diff --git a/ts/bindings.c b/ts/bindings.c index c2a8c405..83006a94 100644 --- a/ts/bindings.c +++ b/ts/bindings.c @@ -2476,6 +2476,73 @@ uint32_t __attribute__((export_name("TS_CResult_ProbabilisticScoringParametersD return ret_ref; } +static inline struct LDKProbabilisticScoringParameters C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_get_a(LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ *NONNULL_PTR owner){ + return ProbabilisticScoringParameters_clone(&owner->a); +} +uint32_t __attribute__((export_name("TS_C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_get_a"))) TS_C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_get_a(uint32_t owner) { + LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ* owner_conv = (LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ*)(owner & ~1); + LDKProbabilisticScoringParameters ret_var = C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_get_a(owner_conv); + uint32_t ret_ref = 0; + CHECK((((uintptr_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((uintptr_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var); + ret_ref = (uintptr_t)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +static inline struct LDKNetworkGraph C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_get_b(LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ *NONNULL_PTR owner){ + return NetworkGraph_clone(&owner->b); +} +uint32_t __attribute__((export_name("TS_C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_get_b"))) TS_C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_get_b(uint32_t owner) { + LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ* owner_conv = (LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ*)(owner & ~1); + LDKNetworkGraph ret_var = C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_get_b(owner_conv); + uint32_t ret_ref = 0; + CHECK((((uintptr_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((uintptr_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var); + ret_ref = (uintptr_t)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + +static inline struct LDKProbabilisticScorer *CResult_ProbabilisticScorerDecodeErrorZ_get_ok(LDKCResult_ProbabilisticScorerDecodeErrorZ *NONNULL_PTR owner){ +CHECK(owner->result_ok); + return &*owner->contents.result; +} +uint32_t __attribute__((export_name("TS_CResult_ProbabilisticScorerDecodeErrorZ_get_ok"))) TS_CResult_ProbabilisticScorerDecodeErrorZ_get_ok(uint32_t owner) { + LDKCResult_ProbabilisticScorerDecodeErrorZ* owner_conv = (LDKCResult_ProbabilisticScorerDecodeErrorZ*)(owner & ~1); + LDKProbabilisticScorer ret_var = *CResult_ProbabilisticScorerDecodeErrorZ_get_ok(owner_conv); + uint32_t ret_ref = 0; + CHECK((((uintptr_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((uintptr_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var); + ret_ref = (uintptr_t)ret_var.inner & ~1; + return ret_ref; +} + +static inline struct LDKDecodeError CResult_ProbabilisticScorerDecodeErrorZ_get_err(LDKCResult_ProbabilisticScorerDecodeErrorZ *NONNULL_PTR owner){ +CHECK(!owner->result_ok); + return DecodeError_clone(&*owner->contents.err); +} +uint32_t __attribute__((export_name("TS_CResult_ProbabilisticScorerDecodeErrorZ_get_err"))) TS_CResult_ProbabilisticScorerDecodeErrorZ_get_err(uint32_t owner) { + LDKCResult_ProbabilisticScorerDecodeErrorZ* owner_conv = (LDKCResult_ProbabilisticScorerDecodeErrorZ*)(owner & ~1); + LDKDecodeError ret_var = CResult_ProbabilisticScorerDecodeErrorZ_get_err(owner_conv); + uint32_t ret_ref = 0; + CHECK((((uintptr_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((uintptr_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var); + ret_ref = (uintptr_t)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + static inline struct LDKInitFeatures CResult_InitFeaturesDecodeErrorZ_get_ok(LDKCResult_InitFeaturesDecodeErrorZ *NONNULL_PTR owner){ CHECK(owner->result_ok); return InitFeatures_clone(&*owner->contents.result); @@ -2923,7 +2990,7 @@ LDKCResult_NoneNoneZ validate_holder_commitment_LDKBaseSign_jcall(const void* th LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg; LDKHolderCommitmentTransaction holder_tx_var = *holder_tx; uint32_t holder_tx_ref = 0; - holder_tx_var = HolderCommitmentTransaction_clone(holder_tx); + holder_tx_var = HolderCommitmentTransaction_clone(&holder_tx_var); CHECK((((uintptr_t)holder_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&holder_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(holder_tx_var); @@ -2961,7 +3028,7 @@ LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_counterparty_commitment_L LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg; LDKCommitmentTransaction commitment_tx_var = *commitment_tx; uint32_t commitment_tx_ref = 0; - commitment_tx_var = CommitmentTransaction_clone(commitment_tx); + commitment_tx_var = CommitmentTransaction_clone(&commitment_tx_var); CHECK((((uintptr_t)commitment_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&commitment_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_var); @@ -3002,7 +3069,7 @@ LDKCResult_C2Tuple_SignatureCVec_SignatureZZNoneZ sign_holder_commitment_and_htl LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg; LDKHolderCommitmentTransaction commitment_tx_var = *commitment_tx; uint32_t commitment_tx_ref = 0; - commitment_tx_var = HolderCommitmentTransaction_clone(commitment_tx); + commitment_tx_var = HolderCommitmentTransaction_clone(&commitment_tx_var); CHECK((((uintptr_t)commitment_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&commitment_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(commitment_tx_var); @@ -3042,7 +3109,7 @@ LDKCResult_SignatureNoneZ sign_justice_revoked_htlc_LDKBaseSign_jcall(const void memcpy(per_commitment_key_arr->elems, *per_commitment_key, 32); LDKHTLCOutputInCommitment htlc_var = *htlc; uint32_t htlc_ref = 0; - htlc_var = HTLCOutputInCommitment_clone(htlc); + htlc_var = HTLCOutputInCommitment_clone(&htlc_var); CHECK((((uintptr_t)htlc_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&htlc_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_var); @@ -3067,7 +3134,7 @@ LDKCResult_SignatureNoneZ sign_counterparty_htlc_transaction_LDKBaseSign_jcall(c memcpy(per_commitment_point_arr->elems, per_commitment_point.compressed_form, 33); LDKHTLCOutputInCommitment htlc_var = *htlc; uint32_t htlc_ref = 0; - htlc_var = HTLCOutputInCommitment_clone(htlc); + htlc_var = HTLCOutputInCommitment_clone(&htlc_var); CHECK((((uintptr_t)htlc_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&htlc_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(htlc_var); @@ -3086,7 +3153,7 @@ LDKCResult_SignatureNoneZ sign_closing_transaction_LDKBaseSign_jcall(const void* LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg; LDKClosingTransaction closing_tx_var = *closing_tx; uint32_t closing_tx_ref = 0; - closing_tx_var = ClosingTransaction_clone(closing_tx); + closing_tx_var = ClosingTransaction_clone(&closing_tx_var); CHECK((((uintptr_t)closing_tx_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&closing_tx_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(closing_tx_var); @@ -3105,7 +3172,7 @@ LDKCResult_C2Tuple_SignatureSignatureZNoneZ sign_channel_announcement_LDKBaseSig LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg; LDKUnsignedChannelAnnouncement msg_var = *msg; uint32_t msg_ref = 0; - msg_var = UnsignedChannelAnnouncement_clone(msg); + msg_var = UnsignedChannelAnnouncement_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -3124,7 +3191,7 @@ void ready_channel_LDKBaseSign_jcall(void* this_arg, const LDKChannelTransaction LDKBaseSign_JCalls *j_calls = (LDKBaseSign_JCalls*) this_arg; LDKChannelTransactionParameters channel_parameters_var = *channel_parameters; uint32_t channel_parameters_ref = 0; - channel_parameters_var = ChannelTransactionParameters_clone(channel_parameters); + channel_parameters_var = ChannelTransactionParameters_clone(&channel_parameters_var); CHECK((((uintptr_t)channel_parameters_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&channel_parameters_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(channel_parameters_var); @@ -4759,7 +4826,7 @@ void log_LDKLogger_jcall(const void* this_arg, const LDKRecord * record) { LDKLogger_JCalls *j_calls = (LDKLogger_JCalls*) this_arg; LDKRecord record_var = *record; uint32_t record_ref = 0; - record_var = Record_clone(record); + record_var = Record_clone(&record_var); CHECK((((uintptr_t)record_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&record_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(record_var); @@ -8224,7 +8291,7 @@ LDKCResult_NoneChannelMonitorUpdateErrZ persist_new_channel_LDKPersist_jcall(con } LDKChannelMonitor data_var = *data; uint32_t data_ref = 0; - data_var = ChannelMonitor_clone(data); + data_var = ChannelMonitor_clone(&data_var); CHECK((((uintptr_t)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(data_var); @@ -8262,7 +8329,7 @@ LDKCResult_NoneChannelMonitorUpdateErrZ update_persisted_channel_LDKPersist_jcal LDKChannelMonitorUpdate update_var = *update; uint32_t update_ref = 0; if ((uintptr_t)update_var.inner > 4096) { - update_var = ChannelMonitorUpdate_clone(update); + update_var = ChannelMonitorUpdate_clone(&update_var); CHECK((((uintptr_t)update_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&update_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(update_var); @@ -8273,7 +8340,7 @@ LDKCResult_NoneChannelMonitorUpdateErrZ update_persisted_channel_LDKPersist_jcal } LDKChannelMonitor data_var = *data; uint32_t data_ref = 0; - data_var = ChannelMonitor_clone(data); + data_var = ChannelMonitor_clone(&data_var); CHECK((((uintptr_t)data_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&data_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(data_var); @@ -8395,7 +8462,7 @@ void handle_open_channel_LDKChannelMessageHandler_jcall(const void* this_arg, LD } LDKOpenChannel msg_var = *msg; uint32_t msg_ref = 0; - msg_var = OpenChannel_clone(msg); + msg_var = OpenChannel_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8420,7 +8487,7 @@ void handle_accept_channel_LDKChannelMessageHandler_jcall(const void* this_arg, } LDKAcceptChannel msg_var = *msg; uint32_t msg_ref = 0; - msg_var = AcceptChannel_clone(msg); + msg_var = AcceptChannel_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8436,7 +8503,7 @@ void handle_funding_created_LDKChannelMessageHandler_jcall(const void* this_arg, memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKFundingCreated msg_var = *msg; uint32_t msg_ref = 0; - msg_var = FundingCreated_clone(msg); + msg_var = FundingCreated_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8452,7 +8519,7 @@ void handle_funding_signed_LDKChannelMessageHandler_jcall(const void* this_arg, memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKFundingSigned msg_var = *msg; uint32_t msg_ref = 0; - msg_var = FundingSigned_clone(msg); + msg_var = FundingSigned_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8468,7 +8535,7 @@ void handle_funding_locked_LDKChannelMessageHandler_jcall(const void* this_arg, memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKFundingLocked msg_var = *msg; uint32_t msg_ref = 0; - msg_var = FundingLocked_clone(msg); + msg_var = FundingLocked_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8484,7 +8551,7 @@ void handle_shutdown_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPub memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKInitFeatures their_features_var = *their_features; uint32_t their_features_ref = 0; - their_features_var = InitFeatures_clone(their_features); + their_features_var = InitFeatures_clone(&their_features_var); CHECK((((uintptr_t)their_features_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&their_features_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(their_features_var); @@ -8494,7 +8561,7 @@ void handle_shutdown_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPub } LDKShutdown msg_var = *msg; uint32_t msg_ref = 0; - msg_var = Shutdown_clone(msg); + msg_var = Shutdown_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8510,7 +8577,7 @@ void handle_closing_signed_LDKChannelMessageHandler_jcall(const void* this_arg, memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKClosingSigned msg_var = *msg; uint32_t msg_ref = 0; - msg_var = ClosingSigned_clone(msg); + msg_var = ClosingSigned_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8526,7 +8593,7 @@ void handle_update_add_htlc_LDKChannelMessageHandler_jcall(const void* this_arg, memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKUpdateAddHTLC msg_var = *msg; uint32_t msg_ref = 0; - msg_var = UpdateAddHTLC_clone(msg); + msg_var = UpdateAddHTLC_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8542,7 +8609,7 @@ void handle_update_fulfill_htlc_LDKChannelMessageHandler_jcall(const void* this_ memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKUpdateFulfillHTLC msg_var = *msg; uint32_t msg_ref = 0; - msg_var = UpdateFulfillHTLC_clone(msg); + msg_var = UpdateFulfillHTLC_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8558,7 +8625,7 @@ void handle_update_fail_htlc_LDKChannelMessageHandler_jcall(const void* this_arg memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKUpdateFailHTLC msg_var = *msg; uint32_t msg_ref = 0; - msg_var = UpdateFailHTLC_clone(msg); + msg_var = UpdateFailHTLC_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8574,7 +8641,7 @@ void handle_update_fail_malformed_htlc_LDKChannelMessageHandler_jcall(const void memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKUpdateFailMalformedHTLC msg_var = *msg; uint32_t msg_ref = 0; - msg_var = UpdateFailMalformedHTLC_clone(msg); + msg_var = UpdateFailMalformedHTLC_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8590,7 +8657,7 @@ void handle_commitment_signed_LDKChannelMessageHandler_jcall(const void* this_ar memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKCommitmentSigned msg_var = *msg; uint32_t msg_ref = 0; - msg_var = CommitmentSigned_clone(msg); + msg_var = CommitmentSigned_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8606,7 +8673,7 @@ void handle_revoke_and_ack_LDKChannelMessageHandler_jcall(const void* this_arg, memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKRevokeAndACK msg_var = *msg; uint32_t msg_ref = 0; - msg_var = RevokeAndACK_clone(msg); + msg_var = RevokeAndACK_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8622,7 +8689,7 @@ void handle_update_fee_LDKChannelMessageHandler_jcall(const void* this_arg, LDKP memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKUpdateFee msg_var = *msg; uint32_t msg_ref = 0; - msg_var = UpdateFee_clone(msg); + msg_var = UpdateFee_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8638,7 +8705,7 @@ void handle_announcement_signatures_LDKChannelMessageHandler_jcall(const void* t memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKAnnouncementSignatures msg_var = *msg; uint32_t msg_ref = 0; - msg_var = AnnouncementSignatures_clone(msg); + msg_var = AnnouncementSignatures_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8660,7 +8727,7 @@ void peer_connected_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPubl memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKInit msg_var = *msg; uint32_t msg_ref = 0; - msg_var = Init_clone(msg); + msg_var = Init_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8676,7 +8743,7 @@ void handle_channel_reestablish_LDKChannelMessageHandler_jcall(const void* this_ memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKChannelReestablish msg_var = *msg; uint32_t msg_ref = 0; - msg_var = ChannelReestablish_clone(msg); + msg_var = ChannelReestablish_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8692,7 +8759,7 @@ void handle_channel_update_LDKChannelMessageHandler_jcall(const void* this_arg, memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKChannelUpdate msg_var = *msg; uint32_t msg_ref = 0; - msg_var = ChannelUpdate_clone(msg); + msg_var = ChannelUpdate_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -8708,7 +8775,7 @@ void handle_error_LDKChannelMessageHandler_jcall(const void* this_arg, LDKPublic memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKErrorMessage msg_var = *msg; uint32_t msg_ref = 0; - msg_var = ErrorMessage_clone(msg); + msg_var = ErrorMessage_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -9066,7 +9133,7 @@ LDKCResult_boolLightningErrorZ handle_node_announcement_LDKRoutingMessageHandler LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; LDKNodeAnnouncement msg_var = *msg; uint32_t msg_ref = 0; - msg_var = NodeAnnouncement_clone(msg); + msg_var = NodeAnnouncement_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -9085,7 +9152,7 @@ LDKCResult_boolLightningErrorZ handle_channel_announcement_LDKRoutingMessageHand LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; LDKChannelAnnouncement msg_var = *msg; uint32_t msg_ref = 0; - msg_var = ChannelAnnouncement_clone(msg); + msg_var = ChannelAnnouncement_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -9104,7 +9171,7 @@ LDKCResult_boolLightningErrorZ handle_channel_update_LDKRoutingMessageHandler_jc LDKRoutingMessageHandler_JCalls *j_calls = (LDKRoutingMessageHandler_JCalls*) this_arg; LDKChannelUpdate msg_var = *msg; uint32_t msg_ref = 0; - msg_var = ChannelUpdate_clone(msg); + msg_var = ChannelUpdate_clone(&msg_var); CHECK((((uintptr_t)msg_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&msg_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(msg_var); @@ -9167,7 +9234,7 @@ void sync_routing_table_LDKRoutingMessageHandler_jcall(const void* this_arg, LDK memcpy(their_node_id_arr->elems, their_node_id.compressed_form, 33); LDKInit init_var = *init; uint32_t init_ref = 0; - init_var = Init_clone(init); + init_var = Init_clone(&init_var); CHECK((((uintptr_t)init_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&init_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(init_var); @@ -9736,7 +9803,7 @@ uint64_t channel_penalty_msat_LDKScore_jcall(const void* this_arg, uint64_t shor LDKScore_JCalls *j_calls = (LDKScore_JCalls*) this_arg; LDKNodeId source_var = *source; uint32_t source_ref = 0; - source_var = NodeId_clone(source); + source_var = NodeId_clone(&source_var); CHECK((((uintptr_t)source_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&source_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(source_var); @@ -9746,7 +9813,7 @@ uint64_t channel_penalty_msat_LDKScore_jcall(const void* this_arg, uint64_t shor } LDKNodeId target_var = *target; uint32_t target_ref = 0; - target_var = NodeId_clone(target); + target_var = NodeId_clone(&target_var); CHECK((((uintptr_t)target_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&target_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(target_var); @@ -10034,7 +10101,7 @@ LDKCResult_PaymentIdPaymentSendFailureZ send_payment_LDKPayer_jcall(const void* LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg; LDKRoute route_var = *route; uint32_t route_ref = 0; - route_var = Route_clone(route); + route_var = Route_clone(&route_var); CHECK((((uintptr_t)route_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&route_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(route_var); @@ -10057,7 +10124,7 @@ LDKCResult_PaymentIdPaymentSendFailureZ send_spontaneous_payment_LDKPayer_jcall( LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg; LDKRoute route_var = *route; uint32_t route_ref = 0; - route_var = Route_clone(route); + route_var = Route_clone(&route_var); CHECK((((uintptr_t)route_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&route_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(route_var); @@ -10078,7 +10145,7 @@ LDKCResult_NonePaymentSendFailureZ retry_payment_LDKPayer_jcall(const void* this LDKPayer_JCalls *j_calls = (LDKPayer_JCalls*) this_arg; LDKRoute route_var = *route; uint32_t route_ref = 0; - route_var = Route_clone(route); + route_var = Route_clone(&route_var); CHECK((((uintptr_t)route_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&route_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(route_var); @@ -10238,7 +10305,7 @@ LDKCResult_RouteLightningErrorZ find_route_LDKRouter_jcall(const void* this_arg, memcpy(payer_arr->elems, payer.compressed_form, 33); LDKRouteParameters route_params_var = *route_params; uint32_t route_params_ref = 0; - route_params_var = RouteParameters_clone(route_params); + route_params_var = RouteParameters_clone(&route_params_var); CHECK((((uintptr_t)route_params_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. CHECK((((uintptr_t)&route_params_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. CHECK_INNER_FIELD_ACCESS_OR_NULL(route_params_var); @@ -12664,6 +12731,85 @@ uint32_t __attribute__((export_name("TS_CResult_ProbabilisticScoringParametersD return (uint32_t)ret_conv; } +static inline uintptr_t C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_clone_ptr(LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ *NONNULL_PTR arg) { + LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ), "LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ"); + *ret_conv = C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_clone(arg); + return ((uint32_t)ret_conv); +} +uint32_t __attribute__((export_name("TS_C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_clone_ptr"))) TS_C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_clone_ptr(uint32_t arg) { + LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ* arg_conv = (LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ*)(arg & ~1); + uint32_t ret_val = C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_clone_ptr(arg_conv); + return ret_val; +} + +uint32_t __attribute__((export_name("TS_C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_clone"))) TS_C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_clone(uint32_t orig) { + LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ* orig_conv = (LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ*)(orig & ~1); + LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ), "LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ"); + *ret_conv = C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_clone(orig_conv); + return ((uint32_t)ret_conv); +} + +uint32_t __attribute__((export_name("TS_C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_new"))) TS_C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_new(uint32_t a, uint32_t b) { + LDKProbabilisticScoringParameters a_conv; + a_conv.inner = (void*)(a & (~1)); + a_conv.is_owned = (a & 1) || (a == 0); + CHECK_INNER_FIELD_ACCESS_OR_NULL(a_conv); + a_conv = ProbabilisticScoringParameters_clone(&a_conv); + LDKNetworkGraph b_conv; + b_conv.inner = (void*)(b & (~1)); + b_conv.is_owned = false; + CHECK_INNER_FIELD_ACCESS_OR_NULL(b_conv); + LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ* ret_conv = MALLOC(sizeof(LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ), "LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ"); + *ret_conv = C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_new(a_conv, &b_conv); + return ((uint32_t)ret_conv); +} + +void __attribute__((export_name("TS_C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_free"))) TS_C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + void* _res_ptr = (void*)(((uintptr_t)_res) & ~1); + CHECK_ACCESS(_res_ptr); + LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ _res_conv = *(LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ*)(_res_ptr); + FREE((void*)_res); + C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_free(_res_conv); +} + +uint32_t __attribute__((export_name("TS_CResult_ProbabilisticScorerDecodeErrorZ_ok"))) TS_CResult_ProbabilisticScorerDecodeErrorZ_ok(uint32_t o) { + LDKProbabilisticScorer o_conv; + o_conv.inner = (void*)(o & (~1)); + o_conv.is_owned = (o & 1) || (o == 0); + CHECK_INNER_FIELD_ACCESS_OR_NULL(o_conv); + // WARNING: we need a move here but no clone is available for LDKProbabilisticScorer + LDKCResult_ProbabilisticScorerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ), "LDKCResult_ProbabilisticScorerDecodeErrorZ"); + *ret_conv = CResult_ProbabilisticScorerDecodeErrorZ_ok(o_conv); + return (uint32_t)ret_conv; +} + +uint32_t __attribute__((export_name("TS_CResult_ProbabilisticScorerDecodeErrorZ_err"))) TS_CResult_ProbabilisticScorerDecodeErrorZ_err(uint32_t e) { + LDKDecodeError e_conv; + e_conv.inner = (void*)(e & (~1)); + e_conv.is_owned = (e & 1) || (e == 0); + CHECK_INNER_FIELD_ACCESS_OR_NULL(e_conv); + e_conv = DecodeError_clone(&e_conv); + LDKCResult_ProbabilisticScorerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ), "LDKCResult_ProbabilisticScorerDecodeErrorZ"); + *ret_conv = CResult_ProbabilisticScorerDecodeErrorZ_err(e_conv); + return (uint32_t)ret_conv; +} + +jboolean __attribute__((export_name("TS_CResult_ProbabilisticScorerDecodeErrorZ_is_ok"))) TS_CResult_ProbabilisticScorerDecodeErrorZ_is_ok(uint32_t o) { + LDKCResult_ProbabilisticScorerDecodeErrorZ* o_conv = (LDKCResult_ProbabilisticScorerDecodeErrorZ*)(o & ~1); + jboolean ret_val = CResult_ProbabilisticScorerDecodeErrorZ_is_ok(o_conv); + return ret_val; +} + +void __attribute__((export_name("TS_CResult_ProbabilisticScorerDecodeErrorZ_free"))) TS_CResult_ProbabilisticScorerDecodeErrorZ_free(uint32_t _res) { + if ((_res & 1) != 0) return; + void* _res_ptr = (void*)(((uintptr_t)_res) & ~1); + CHECK_ACCESS(_res_ptr); + LDKCResult_ProbabilisticScorerDecodeErrorZ _res_conv = *(LDKCResult_ProbabilisticScorerDecodeErrorZ*)(_res_ptr); + FREE((void*)_res); + CResult_ProbabilisticScorerDecodeErrorZ_free(_res_conv); +} + uint32_t __attribute__((export_name("TS_CResult_InitFeaturesDecodeErrorZ_ok"))) TS_CResult_InitFeaturesDecodeErrorZ_ok(uint32_t o) { LDKInitFeatures o_conv; o_conv.inner = (void*)(o & (~1)); @@ -38773,6 +38919,14 @@ uint32_t __attribute__((export_name("TS_Scorer_read"))) TS_Scorer_read(int8_tAr return (uint32_t)ret_conv; } +void __attribute__((export_name("TS_ProbabilisticScorer_free"))) TS_ProbabilisticScorer_free(uint32_t this_obj) { + LDKProbabilisticScorer this_obj_conv; + this_obj_conv.inner = (void*)(this_obj & (~1)); + this_obj_conv.is_owned = (this_obj & 1) || (this_obj == 0); + CHECK_INNER_FIELD_ACCESS_OR_NULL(this_obj_conv); + ProbabilisticScorer_free(this_obj_conv); +} + void __attribute__((export_name("TS_ProbabilisticScoringParameters_free"))) TS_ProbabilisticScoringParameters_free(uint32_t this_obj) { LDKProbabilisticScoringParameters this_obj_conv; this_obj_conv.inner = (void*)(this_obj & (~1)); @@ -38887,6 +39041,28 @@ uint32_t __attribute__((export_name("TS_ProbabilisticScoringParameters_read"))) return (uint32_t)ret_conv; } +uint32_t __attribute__((export_name("TS_ProbabilisticScorer_new"))) TS_ProbabilisticScorer_new(uint32_t params, uint32_t network_graph) { + LDKProbabilisticScoringParameters params_conv; + params_conv.inner = (void*)(params & (~1)); + params_conv.is_owned = (params & 1) || (params == 0); + CHECK_INNER_FIELD_ACCESS_OR_NULL(params_conv); + params_conv = ProbabilisticScoringParameters_clone(¶ms_conv); + LDKNetworkGraph network_graph_conv; + network_graph_conv.inner = (void*)(network_graph & (~1)); + network_graph_conv.is_owned = false; + CHECK_INNER_FIELD_ACCESS_OR_NULL(network_graph_conv); + LDKProbabilisticScorer ret_var = ProbabilisticScorer_new(params_conv, &network_graph_conv); + uint32_t ret_ref = 0; + CHECK((((uintptr_t)ret_var.inner) & 1) == 0); // We rely on a free low bit, malloc guarantees this. + CHECK((((uintptr_t)&ret_var) & 1) == 0); // We rely on a free low bit, pointer alignment guarantees this. + CHECK_INNER_FIELD_ACCESS_OR_NULL(ret_var); + ret_ref = (uintptr_t)ret_var.inner; + if (ret_var.is_owned) { + ret_ref |= 1; + } + return ret_ref; +} + uint32_t __attribute__((export_name("TS_ProbabilisticScoringParameters_default"))) TS_ProbabilisticScoringParameters_default() { LDKProbabilisticScoringParameters ret_var = ProbabilisticScoringParameters_default(); uint32_t ret_ref = 0; @@ -38900,6 +39076,41 @@ uint32_t __attribute__((export_name("TS_ProbabilisticScoringParameters_default" return ret_ref; } +uint32_t __attribute__((export_name("TS_ProbabilisticScorer_as_Score"))) TS_ProbabilisticScorer_as_Score(uint32_t this_arg) { + LDKProbabilisticScorer this_arg_conv; + this_arg_conv.inner = (void*)(this_arg & (~1)); + this_arg_conv.is_owned = false; + CHECK_INNER_FIELD_ACCESS_OR_NULL(this_arg_conv); + LDKScore* ret_ret = MALLOC(sizeof(LDKScore), "LDKScore"); + *ret_ret = ProbabilisticScorer_as_Score(&this_arg_conv); + return (uint32_t)ret_ret; +} + +int8_tArray __attribute__((export_name("TS_ProbabilisticScorer_write"))) TS_ProbabilisticScorer_write(uint32_t obj) { + LDKProbabilisticScorer obj_conv; + obj_conv.inner = (void*)(obj & (~1)); + obj_conv.is_owned = false; + CHECK_INNER_FIELD_ACCESS_OR_NULL(obj_conv); + LDKCVec_u8Z ret_var = ProbabilisticScorer_write(&obj_conv); + int8_tArray ret_arr = init_int8_tArray(ret_var.datalen, __LINE__); + memcpy(ret_arr->elems, ret_var.data, ret_var.datalen); + CVec_u8Z_free(ret_var); + return ret_arr; +} + +uint32_t __attribute__((export_name("TS_ProbabilisticScorer_read"))) TS_ProbabilisticScorer_read(int8_tArray ser, uint32_t arg) { + LDKu8slice ser_ref; + ser_ref.datalen = ser->arr_len; + ser_ref.data = ser->elems /* XXX ser leaks */; + void* arg_ptr = (void*)(((uintptr_t)arg) & ~1); + CHECK_ACCESS(arg_ptr); + LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ arg_conv = *(LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ*)(arg_ptr); + arg_conv = C2Tuple_ProbabilisticScoringParametersNetworkGraphZ_clone((LDKC2Tuple_ProbabilisticScoringParametersNetworkGraphZ*)(((uintptr_t)arg) & ~1)); + LDKCResult_ProbabilisticScorerDecodeErrorZ* ret_conv = MALLOC(sizeof(LDKCResult_ProbabilisticScorerDecodeErrorZ), "LDKCResult_ProbabilisticScorerDecodeErrorZ"); + *ret_conv = ProbabilisticScorer_read(ser_ref, arg_conv); + return (uint32_t)ret_conv; +} + void __attribute__((export_name("TS_Invoice_free"))) TS_Invoice_free(uint32_t this_obj) { LDKInvoice this_obj_conv; this_obj_conv.inner = (void*)(this_obj & (~1));