X-Git-Url: http://git.bitcoin.ninja/index.cgi?a=blobdiff_plain;f=lightning-c-bindings%2Fsrc%2Flightning%2Frouting%2Futxo.rs;h=b978317da5e5b63f77d9090a2f21dfb7699cba32;hb=HEAD;hp=187badd8629479e12a50ead78002b053b00bb354;hpb=3e46e1794f14640e35f09cc6da4169c152de34ce;p=ldk-c-bindings diff --git a/lightning-c-bindings/src/lightning/routing/utxo.rs b/lightning-c-bindings/src/lightning/routing/utxo.rs index 187badd..b978317 100644 --- a/lightning-c-bindings/src/lightning/routing/utxo.rs +++ b/lightning-c-bindings/src/lightning/routing/utxo.rs @@ -50,7 +50,8 @@ impl UtxoLookupError { } } #[allow(unused)] - pub(crate) fn from_native(native: &nativeUtxoLookupError) -> Self { + pub(crate) fn from_native(native: &UtxoLookupErrorImport) -> Self { + let native = unsafe { &*(native as *const _ as *const c_void as *const nativeUtxoLookupError) }; match native { nativeUtxoLookupError::UnknownChain => UtxoLookupError::UnknownChain, nativeUtxoLookupError::UnknownTx => UtxoLookupError::UnknownTx, @@ -69,6 +70,16 @@ impl UtxoLookupError { pub extern "C" fn UtxoLookupError_clone(orig: &UtxoLookupError) -> UtxoLookupError { orig.clone() } +#[allow(unused)] +/// Used only if an object of this type is returned as a trait impl by a method +pub(crate) extern "C" fn UtxoLookupError_clone_void(this_ptr: *const c_void) -> *mut c_void { + Box::into_raw(Box::new(unsafe { (*(this_ptr as *const UtxoLookupError)).clone() })) as *mut c_void +} +#[allow(unused)] +/// Used only if an object of this type is returned as a trait impl by a method +pub(crate) extern "C" fn UtxoLookupError_free_void(this_ptr: *mut c_void) { + let _ = unsafe { Box::from_raw(this_ptr as *mut UtxoLookupError) }; +} #[no_mangle] /// Utility method to constructs a new UnknownChain-variant UtxoLookupError pub extern "C" fn UtxoLookupError_unknown_chain() -> UtxoLookupError { @@ -77,6 +88,9 @@ pub extern "C" fn UtxoLookupError_unknown_chain() -> UtxoLookupError { /// Utility method to constructs a new UnknownTx-variant UtxoLookupError pub extern "C" fn UtxoLookupError_unknown_tx() -> UtxoLookupError { UtxoLookupError::UnknownTx} +/// Get a string which allows debug introspection of a UtxoLookupError object +pub extern "C" fn UtxoLookupError_debug_str_void(o: *const c_void) -> Str { + alloc::format!("{:?}", unsafe { o as *const crate::lightning::routing::utxo::UtxoLookupError }).into()} /// The result of a [`UtxoLookup::get_utxo`] call. A call may resolve either synchronously, /// returning the `Sync` variant, or asynchronously, returning an [`UtxoFuture`] in the `Async` /// variant. @@ -137,7 +151,8 @@ impl UtxoResult { } } #[allow(unused)] - pub(crate) fn from_native(native: &nativeUtxoResult) -> Self { + pub(crate) fn from_native(native: &UtxoResultImport) -> Self { + let native = unsafe { &*(native as *const _ as *const c_void as *const nativeUtxoResult) }; match native { nativeUtxoResult::Sync (ref a, ) => { let mut a_nonref = Clone::clone(a); @@ -179,6 +194,16 @@ pub extern "C" fn UtxoResult_free(this_ptr: UtxoResult) { } pub extern "C" fn UtxoResult_clone(orig: &UtxoResult) -> UtxoResult { orig.clone() } +#[allow(unused)] +/// Used only if an object of this type is returned as a trait impl by a method +pub(crate) extern "C" fn UtxoResult_clone_void(this_ptr: *const c_void) -> *mut c_void { + Box::into_raw(Box::new(unsafe { (*(this_ptr as *const UtxoResult)).clone() })) as *mut c_void +} +#[allow(unused)] +/// Used only if an object of this type is returned as a trait impl by a method +pub(crate) extern "C" fn UtxoResult_free_void(this_ptr: *mut c_void) { + let _ = unsafe { Box::from_raw(this_ptr as *mut UtxoResult) }; +} #[no_mangle] /// Utility method to constructs a new Sync-variant UtxoResult pub extern "C" fn UtxoResult_sync(a: crate::c_types::derived::CResult_TxOutUtxoLookupErrorZ) -> UtxoResult { @@ -196,17 +221,18 @@ pub struct UtxoLookup { /// This has no meaning in the LDK, and can be NULL or any other value. pub this_arg: *mut c_void, /// Returns the transaction output of a funding transaction encoded by [`short_channel_id`]. - /// Returns an error if `genesis_hash` is for a different chain or if such a transaction output - /// is unknown. + /// Returns an error if `chain_hash` is for a different chain or if such a transaction output is + /// unknown. /// /// [`short_channel_id`]: https://github.com/lightning/bolts/blob/master/07-routing-gossip.md#definition-of-short_channel_id - pub get_utxo: extern "C" fn (this_arg: *const c_void, genesis_hash: *const [u8; 32], short_channel_id: u64) -> crate::lightning::routing::utxo::UtxoResult, + pub get_utxo: extern "C" fn (this_arg: *const c_void, chain_hash: *const [u8; 32], short_channel_id: u64) -> crate::lightning::routing::utxo::UtxoResult, /// Frees any resources associated with this object given its this_arg pointer. /// Does not need to free the outer struct containing function pointers and may be NULL is no resources need to be freed. pub free: Option, } unsafe impl Send for UtxoLookup {} unsafe impl Sync for UtxoLookup {} +#[allow(unused)] pub(crate) fn UtxoLookup_clone_fields(orig: &UtxoLookup) -> UtxoLookup { UtxoLookup { this_arg: orig.this_arg, @@ -217,8 +243,8 @@ pub(crate) fn UtxoLookup_clone_fields(orig: &UtxoLookup) -> UtxoLookup { use lightning::routing::utxo::UtxoLookup as rustUtxoLookup; impl rustUtxoLookup for UtxoLookup { - fn get_utxo(&self, mut genesis_hash: &bitcoin::BlockHash, mut short_channel_id: u64) -> lightning::routing::utxo::UtxoResult { - let mut ret = (self.get_utxo)(self.this_arg, genesis_hash.as_inner(), short_channel_id); + fn get_utxo(&self, mut chain_hash: &bitcoin::blockdata::constants::ChainHash, mut short_channel_id: u64) -> lightning::routing::utxo::UtxoResult { + let mut ret = (self.get_utxo)(self.this_arg, chain_hash.as_ref(), short_channel_id); ret.into_native() } } @@ -311,7 +337,7 @@ impl Clone for UtxoFuture { #[allow(unused)] /// Used only if an object of this type is returned as a trait impl by a method pub(crate) extern "C" fn UtxoFuture_clone_void(this_ptr: *const c_void) -> *mut c_void { - Box::into_raw(Box::new(unsafe { (*(this_ptr as *mut nativeUtxoFuture)).clone() })) as *mut c_void + Box::into_raw(Box::new(unsafe { (*(this_ptr as *const nativeUtxoFuture)).clone() })) as *mut c_void } #[no_mangle] /// Creates a copy of the UtxoFuture