]> git.bitcoin.ninja Git - ldk-c-bindings/blobdiff - lightning-c-bindings/src/lightning/routing/utxo.rs
Add missing `rustc` `metadata` override for `lightning_types`
[ldk-c-bindings] / lightning-c-bindings / src / lightning / routing / utxo.rs
index 6ebae6c13c2b7c2eeafe7cc50c2809d4b50ecf53..517d633b35d5302a3bba16912f96a073c0a02b7a 100644 (file)
@@ -50,7 +50,8 @@ impl UtxoLookupError {
                }
        }
        #[allow(unused)]
                }
        }
        #[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,
                match native {
                        nativeUtxoLookupError::UnknownChain => UtxoLookupError::UnknownChain,
                        nativeUtxoLookupError::UnknownTx => UtxoLookupError::UnknownTx,
@@ -87,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}
 /// 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.
 /// 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.
@@ -147,7 +151,8 @@ impl UtxoResult {
                }
        }
        #[allow(unused)]
                }
        }
        #[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);
                match native {
                        nativeUtxoResult::Sync (ref a, ) => {
                                let mut a_nonref = Clone::clone(a);
@@ -238,8 +243,16 @@ pub(crate) fn UtxoLookup_clone_fields(orig: &UtxoLookup) -> UtxoLookup {
 
 use lightning::routing::utxo::UtxoLookup as rustUtxoLookup;
 impl rustUtxoLookup for UtxoLookup {
 
 use lightning::routing::utxo::UtxoLookup as rustUtxoLookup;
 impl rustUtxoLookup for UtxoLookup {
-       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_bytes(), short_channel_id);
+       fn get_utxo(&self, mut chain_hash: &bitcoin::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()
+       }
+}
+
+pub struct UtxoLookupRef(UtxoLookup);
+impl rustUtxoLookup for UtxoLookupRef {
+       fn get_utxo(&self, mut chain_hash: &bitcoin::constants::ChainHash, mut short_channel_id: u64) -> lightning::routing::utxo::UtxoResult {
+               let mut ret = (self.0.get_utxo)(self.0.this_arg, chain_hash.as_ref(), short_channel_id);
                ret.into_native()
        }
 }
                ret.into_native()
        }
 }
@@ -247,14 +260,14 @@ impl rustUtxoLookup for UtxoLookup {
 // We're essentially a pointer already, or at least a set of pointers, so allow us to be used
 // directly as a Deref trait in higher-level structs:
 impl core::ops::Deref for UtxoLookup {
 // We're essentially a pointer already, or at least a set of pointers, so allow us to be used
 // directly as a Deref trait in higher-level structs:
 impl core::ops::Deref for UtxoLookup {
-       type Target = Self;
-       fn deref(&self) -> &Self {
-               self
+       type Target = UtxoLookupRef;
+       fn deref(&self) -> &Self::Target {
+               unsafe { &*(self as *const _ as *const UtxoLookupRef) }
        }
 }
 impl core::ops::DerefMut for UtxoLookup {
        }
 }
 impl core::ops::DerefMut for UtxoLookup {
-       fn deref_mut(&mut self) -> &mut Self {
-               self
+       fn deref_mut(&mut self) -> &mut UtxoLookupRef {
+               unsafe { &mut *(self as *mut _ as *mut UtxoLookupRef) }
        }
 }
 /// Calls the free function if one is set
        }
 }
 /// Calls the free function if one is set
@@ -289,6 +302,12 @@ pub struct UtxoFuture {
        pub is_owned: bool,
 }
 
        pub is_owned: bool,
 }
 
+impl core::ops::Deref for UtxoFuture {
+       type Target = nativeUtxoFuture;
+       fn deref(&self) -> &Self::Target { unsafe { &*ObjOps::untweak_ptr(self.inner) } }
+}
+unsafe impl core::marker::Send for UtxoFuture { }
+unsafe impl core::marker::Sync for UtxoFuture { }
 impl Drop for UtxoFuture {
        fn drop(&mut self) {
                if self.is_owned && !<*mut nativeUtxoFuture>::is_null(self.inner) {
 impl Drop for UtxoFuture {
        fn drop(&mut self) {
                if self.is_owned && !<*mut nativeUtxoFuture>::is_null(self.inner) {
@@ -319,6 +338,9 @@ impl UtxoFuture {
                self.inner = core::ptr::null_mut();
                ret
        }
                self.inner = core::ptr::null_mut();
                ret
        }
+       pub(crate) fn as_ref_to(&self) -> Self {
+               Self { inner: self.inner, is_owned: false }
+       }
 }
 impl Clone for UtxoFuture {
        fn clone(&self) -> Self {
 }
 impl Clone for UtxoFuture {
        fn clone(&self) -> Self {