Drop stale () -> u8 mapping (now) used in Rust-only code
[ldk-c-bindings] / c-bindings-gen / src / types.rs
index 96ec894f3ee114b91b45ce88ed4e2dc586f8444c..57678669a19ef1b6197ccfaf0f996bee3cd5465b 100644 (file)
@@ -558,7 +558,6 @@ impl<'mod_lifetime, 'crate_lft: 'mod_lifetime> ImportResolver<'mod_lifetime, 'cr
        pub fn resolve_imported_refs(&self, mut ty: syn::Type) -> syn::Type {
                match &mut ty {
                        syn::Type::Path(p) => {
-eprintln!("rir {:?}", p);
                                if p.path.segments.len() != 1 { unimplemented!(); }
                                let mut args = p.path.segments[0].arguments.clone();
                                if let syn::PathArguments::AngleBracketed(ref mut generics) = &mut args {
@@ -782,6 +781,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                match ty {
                        "()" => true,
                        "crate::c_types::Signature" => true,
+                       "crate::c_types::RecoverableSignature" => true,
                        "crate::c_types::TxOut" => true,
                        _ => false,
                }
@@ -812,6 +812,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "String" if is_ref => Some("crate::c_types::Str"),
 
                        "std::time::Duration" => Some("u64"),
+                       "std::time::SystemTime" => Some("u64"),
                        "std::io::Error" => Some("crate::c_types::IOError"),
 
                        "bech32::u5" => Some("crate::c_types::u5"),
@@ -819,6 +820,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "bitcoin::secp256k1::key::PublicKey"|"bitcoin::secp256k1::PublicKey"|"secp256k1::key::PublicKey"
                                => Some("crate::c_types::PublicKey"),
                        "bitcoin::secp256k1::Signature" => Some("crate::c_types::Signature"),
+                       "bitcoin::secp256k1::recovery::RecoverableSignature" => Some("crate::c_types::RecoverableSignature"),
                        "bitcoin::secp256k1::key::SecretKey"|"bitcoin::secp256k1::SecretKey"
                                if is_ref  => Some("*const [u8; 32]"),
                        "bitcoin::secp256k1::key::SecretKey"|"bitcoin::secp256k1::SecretKey"
@@ -840,12 +842,12 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "bitcoin::hash_types::Txid"|"bitcoin::hash_types::BlockHash"|"bitcoin_hashes::sha256::Hash"
                                if !is_ref => Some("crate::c_types::ThirtyTwoBytes"),
                        "bitcoin::secp256k1::Message" if !is_ref => Some("crate::c_types::ThirtyTwoBytes"),
-                       "lightning::ln::channelmanager::PaymentHash" if is_ref => Some("*const [u8; 32]"),
-                       "lightning::ln::channelmanager::PaymentHash" if !is_ref => Some("crate::c_types::ThirtyTwoBytes"),
-                       "lightning::ln::channelmanager::PaymentPreimage" if is_ref => Some("*const [u8; 32]"),
-                       "lightning::ln::channelmanager::PaymentPreimage" if !is_ref => Some("crate::c_types::ThirtyTwoBytes"),
-                       "lightning::ln::channelmanager::PaymentSecret" if is_ref => Some("crate::c_types::ThirtyTwoBytes"),
-                       "lightning::ln::channelmanager::PaymentSecret" if !is_ref => Some("crate::c_types::ThirtyTwoBytes"),
+                       "lightning::ln::PaymentHash" if is_ref => Some("*const [u8; 32]"),
+                       "lightning::ln::PaymentHash" if !is_ref => Some("crate::c_types::ThirtyTwoBytes"),
+                       "lightning::ln::PaymentPreimage" if is_ref => Some("*const [u8; 32]"),
+                       "lightning::ln::PaymentPreimage" if !is_ref => Some("crate::c_types::ThirtyTwoBytes"),
+                       "lightning::ln::PaymentSecret" if is_ref => Some("crate::c_types::ThirtyTwoBytes"),
+                       "lightning::ln::PaymentSecret" if !is_ref => Some("crate::c_types::ThirtyTwoBytes"),
 
                        // Override the default since Records contain an fmt with a lifetime:
                        "lightning::util::logger::Record" => Some("*const std::os::raw::c_char"),
@@ -884,6 +886,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        // cannot create a &String.
 
                        "std::time::Duration" => Some("std::time::Duration::from_secs("),
+                       "std::time::SystemTime" => Some("(::std::time::SystemTime::UNIX_EPOCH + std::time::Duration::from_secs("),
 
                        "bech32::u5" => Some(""),
 
@@ -893,6 +896,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                                => Some(""),
                        "bitcoin::secp256k1::Signature" if is_ref => Some("&"),
                        "bitcoin::secp256k1::Signature" => Some(""),
+                       "bitcoin::secp256k1::recovery::RecoverableSignature" => Some(""),
                        "bitcoin::secp256k1::key::SecretKey"|"bitcoin::secp256k1::SecretKey"
                                if is_ref => Some("&::bitcoin::secp256k1::key::SecretKey::from_slice(&unsafe { *"),
                        "bitcoin::secp256k1::key::SecretKey"|"bitcoin::secp256k1::SecretKey"
@@ -910,11 +914,11 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "bitcoin::hash_types::Txid" if is_ref => Some("&::bitcoin::hash_types::Txid::from_slice(&unsafe { &*"),
                        "bitcoin::hash_types::Txid" if !is_ref => Some("::bitcoin::hash_types::Txid::from_slice(&"),
                        "bitcoin::hash_types::BlockHash" => Some("::bitcoin::hash_types::BlockHash::from_slice(&"),
-                       "lightning::ln::channelmanager::PaymentHash" if !is_ref => Some("::lightning::ln::channelmanager::PaymentHash("),
-                       "lightning::ln::channelmanager::PaymentHash" if is_ref => Some("&::lightning::ln::channelmanager::PaymentHash(unsafe { *"),
-                       "lightning::ln::channelmanager::PaymentPreimage" if !is_ref => Some("::lightning::ln::channelmanager::PaymentPreimage("),
-                       "lightning::ln::channelmanager::PaymentPreimage" if is_ref => Some("&::lightning::ln::channelmanager::PaymentPreimage(unsafe { *"),
-                       "lightning::ln::channelmanager::PaymentSecret" => Some("::lightning::ln::channelmanager::PaymentSecret("),
+                       "lightning::ln::PaymentHash" if !is_ref => Some("::lightning::ln::PaymentHash("),
+                       "lightning::ln::PaymentHash" if is_ref => Some("&::lightning::ln::PaymentHash(unsafe { *"),
+                       "lightning::ln::PaymentPreimage" if !is_ref => Some("::lightning::ln::PaymentPreimage("),
+                       "lightning::ln::PaymentPreimage" if is_ref => Some("&::lightning::ln::PaymentPreimage(unsafe { *"),
+                       "lightning::ln::PaymentSecret" => Some("::lightning::ln::PaymentSecret("),
 
                        // List of traits we map (possibly during processing of other files):
                        "crate::util::logger::Logger" => Some(""),
@@ -946,12 +950,14 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "String" if !is_ref => Some(".into_rust()).unwrap()"),
 
                        "std::time::Duration" => Some(")"),
+                       "std::time::SystemTime" => Some("))"),
 
                        "bech32::u5" => Some(".into()"),
 
                        "bitcoin::secp256k1::key::PublicKey"|"bitcoin::secp256k1::PublicKey"|"secp256k1::key::PublicKey"
                                => Some(".into_rust()"),
                        "bitcoin::secp256k1::Signature" => Some(".into_rust()"),
+                       "bitcoin::secp256k1::recovery::RecoverableSignature" => Some(".into_rust()"),
                        "bitcoin::secp256k1::key::SecretKey"|"bitcoin::secp256k1::SecretKey"
                                if !is_ref => Some(".into_rust()"),
                        "bitcoin::secp256k1::key::SecretKey"|"bitcoin::secp256k1::SecretKey"
@@ -968,11 +974,11 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "bitcoin::hash_types::Txid" if is_ref => Some(" }[..]).unwrap()"),
                        "bitcoin::hash_types::Txid" => Some(".data[..]).unwrap()"),
                        "bitcoin::hash_types::BlockHash" if !is_ref => Some(".data[..]).unwrap()"),
-                       "lightning::ln::channelmanager::PaymentHash" if !is_ref => Some(".data)"),
-                       "lightning::ln::channelmanager::PaymentHash" if is_ref => Some(" })"),
-                       "lightning::ln::channelmanager::PaymentPreimage" if !is_ref => Some(".data)"),
-                       "lightning::ln::channelmanager::PaymentPreimage" if is_ref => Some(" })"),
-                       "lightning::ln::channelmanager::PaymentSecret" => Some(".data)"),
+                       "lightning::ln::PaymentHash" if !is_ref => Some(".data)"),
+                       "lightning::ln::PaymentHash" if is_ref => Some(" })"),
+                       "lightning::ln::PaymentPreimage" if !is_ref => Some(".data)"),
+                       "lightning::ln::PaymentPreimage" if is_ref => Some(" })"),
+                       "lightning::ln::PaymentSecret" => Some(".data)"),
 
                        // List of traits we map (possibly during processing of other files):
                        "crate::util::logger::Logger" => Some(""),
@@ -1023,6 +1029,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "String" => Some(""),
 
                        "std::time::Duration" => Some(""),
+                       "std::time::SystemTime" => Some(""),
                        "std::io::Error" if !is_ref => Some("crate::c_types::IOError::from_rust("),
 
                        "bech32::u5" => Some(""),
@@ -1030,6 +1037,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "bitcoin::secp256k1::key::PublicKey"|"bitcoin::secp256k1::PublicKey"|"secp256k1::key::PublicKey"
                                => Some("crate::c_types::PublicKey::from_rust(&"),
                        "bitcoin::secp256k1::Signature" => Some("crate::c_types::Signature::from_rust(&"),
+                       "bitcoin::secp256k1::recovery::RecoverableSignature" => Some("crate::c_types::RecoverableSignature::from_rust(&"),
                        "bitcoin::secp256k1::key::SecretKey"|"bitcoin::secp256k1::SecretKey"
                                if is_ref => Some(""),
                        "bitcoin::secp256k1::key::SecretKey"|"bitcoin::secp256k1::SecretKey"
@@ -1054,11 +1062,11 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "bitcoin::hash_types::Txid"|"bitcoin::hash_types::BlockHash"|"bitcoin_hashes::sha256::Hash"
                                if !is_ref => Some("crate::c_types::ThirtyTwoBytes { data: "),
                        "bitcoin::secp256k1::Message" if !is_ref => Some("crate::c_types::ThirtyTwoBytes { data: "),
-                       "lightning::ln::channelmanager::PaymentHash" if is_ref => Some("&"),
-                       "lightning::ln::channelmanager::PaymentHash" if !is_ref => Some("crate::c_types::ThirtyTwoBytes { data: "),
-                       "lightning::ln::channelmanager::PaymentPreimage" if is_ref => Some("&"),
-                       "lightning::ln::channelmanager::PaymentPreimage" => Some("crate::c_types::ThirtyTwoBytes { data: "),
-                       "lightning::ln::channelmanager::PaymentSecret" if !is_ref => Some("crate::c_types::ThirtyTwoBytes { data: "),
+                       "lightning::ln::PaymentHash" if is_ref => Some("&"),
+                       "lightning::ln::PaymentHash" if !is_ref => Some("crate::c_types::ThirtyTwoBytes { data: "),
+                       "lightning::ln::PaymentPreimage" if is_ref => Some("&"),
+                       "lightning::ln::PaymentPreimage" => Some("crate::c_types::ThirtyTwoBytes { data: "),
+                       "lightning::ln::PaymentSecret" if !is_ref => Some("crate::c_types::ThirtyTwoBytes { data: "),
 
                        // Override the default since Records contain an fmt with a lifetime:
                        "lightning::util::logger::Record" => Some("local_"),
@@ -1091,6 +1099,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "String" if is_ref => Some(".as_str().into()"),
 
                        "std::time::Duration" => Some(".as_secs()"),
+                       "std::time::SystemTime" => Some(".duration_since(::std::time::SystemTime::UNIX_EPOCH).expect(\"Times must be post-1970\").as_secs()"),
                        "std::io::Error" if !is_ref => Some(")"),
 
                        "bech32::u5" => Some(".into()"),
@@ -1098,6 +1107,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "bitcoin::secp256k1::key::PublicKey"|"bitcoin::secp256k1::PublicKey"|"secp256k1::key::PublicKey"
                                => Some(")"),
                        "bitcoin::secp256k1::Signature" => Some(")"),
+                       "bitcoin::secp256k1::recovery::RecoverableSignature" => Some(")"),
                        "bitcoin::secp256k1::key::SecretKey"|"bitcoin::secp256k1::SecretKey"
                                if !is_ref => Some(")"),
                        "bitcoin::secp256k1::key::SecretKey"|"bitcoin::secp256k1::SecretKey"
@@ -1121,11 +1131,11 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "bitcoin::hash_types::Txid"|"bitcoin::hash_types::BlockHash"|"bitcoin_hashes::sha256::Hash"
                                if !is_ref => Some(".into_inner() }"),
                        "bitcoin::secp256k1::Message" if !is_ref => Some(".as_ref().clone() }"),
-                       "lightning::ln::channelmanager::PaymentHash" if is_ref => Some(".0"),
-                       "lightning::ln::channelmanager::PaymentHash" => Some(".0 }"),
-                       "lightning::ln::channelmanager::PaymentPreimage" if is_ref => Some(".0"),
-                       "lightning::ln::channelmanager::PaymentPreimage" => Some(".0 }"),
-                       "lightning::ln::channelmanager::PaymentSecret" if !is_ref => Some(".0 }"),
+                       "lightning::ln::PaymentHash" if is_ref => Some(".0"),
+                       "lightning::ln::PaymentHash" => Some(".0 }"),
+                       "lightning::ln::PaymentPreimage" if is_ref => Some(".0"),
+                       "lightning::ln::PaymentPreimage" => Some(".0 }"),
+                       "lightning::ln::PaymentSecret" if !is_ref => Some(".0 }"),
 
                        // Override the default since Records contain an fmt with a lifetime:
                        "lightning::util::logger::Record" => Some(".as_ptr()"),
@@ -1136,7 +1146,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
 
        fn empty_val_check_suffix_from_path(&self, full_path: &str) -> Option<&str> {
                match full_path {
-                       "lightning::ln::channelmanager::PaymentSecret" => Some(".data == [0; 32]"),
+                       "lightning::ln::PaymentSecret" => Some(".data == [0; 32]"),
                        "secp256k1::key::PublicKey"|"bitcoin::secp256k1::key::PublicKey" => Some(".is_null()"),
                        "bitcoin::secp256k1::Signature" => Some(".is_null()"),
                        _ => None
@@ -1732,7 +1742,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
        }
 
        fn write_to_c_conversion_inline_prefix_inner<W: std::io::Write>(&self, w: &mut W, t: &syn::Type, generics: Option<&GenericTypes>, is_ref: bool, ptr_for_ref: bool, from_ptr: bool) {
-               self.write_conversion_inline_intern(w, t, generics, is_ref, false, ptr_for_ref, "0u8 /*", true, |_, _| "local_".to_owned(),
+               self.write_conversion_inline_intern(w, t, generics, is_ref, false, ptr_for_ref, "() /*", true, |_, _| "local_".to_owned(),
                                |a, b, c| self.to_c_conversion_inline_prefix_from_path(a, b, c),
                                |w, decl_type, decl_path, is_ref, _is_mut| {
                                        match decl_type {