Expose a 12-byte array instead of 10-byte as OnionV2 has changed
[ldk-c-bindings] / c-bindings-gen / src / types.rs
index 9b0b93a3a38b786fb8e957155186eb4a3108c99e..0b3aaf32ca6a3f2b74a50ff4788709eb667b2dcd 100644 (file)
@@ -415,6 +415,11 @@ impl<'mod_lifetime, 'crate_lft: 'mod_lifetime> ImportResolver<'mod_lifetime, 'cr
                                        for module in super_mod.split("::") {
                                                path.push(syn::PathSegment { ident: syn::Ident::new(module, Span::call_site()), arguments: syn::PathArguments::None });
                                        }
+                               } else if partial_path == "" && format!("{}", $ident) == "self" {
+                                       new_path = format!("{}{}", module_path, $path_suffix);
+                                       for module in module_path.split("::") {
+                                               path.push(syn::PathSegment { ident: syn::Ident::new(module, Span::call_site()), arguments: syn::PathArguments::None });
+                                       }
                                } else if partial_path == "" && format!("{}", $ident) == "crate" {
                                        new_path = format!("{}{}", crate_name, $path_suffix);
                                        let crate_name_ident = format_ident!("{}", crate_name);
@@ -869,7 +874,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "[u8; 32]" if !is_ref => Some("crate::c_types::ThirtyTwoBytes"),
                        "[u8; 20]" if !is_ref => Some("crate::c_types::TwentyBytes"),
                        "[u8; 16]" if !is_ref => Some("crate::c_types::SixteenBytes"),
-                       "[u8; 10]" if !is_ref => Some("crate::c_types::TenBytes"),
+                       "[u8; 12]" if !is_ref => Some("crate::c_types::TwelveBytes"),
                        "[u8; 4]" if !is_ref => Some("crate::c_types::FourBytes"),
                        "[u8; 3]" if !is_ref => Some("crate::c_types::ThreeBytes"), // Used for RGB values
 
@@ -879,6 +884,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "std::time::Duration"|"core::time::Duration" => Some("u64"),
                        "std::time::SystemTime" => Some("u64"),
                        "std::io::Error" => Some("crate::c_types::IOError"),
+                       "core::fmt::Arguments" if is_ref => Some("crate::c_types::Str"),
 
                        "core::convert::Infallible" => Some("crate::c_types::NotConstructable"),
 
@@ -920,9 +926,6 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "lightning::ln::PaymentHash"|"lightning::ln::PaymentPreimage"|"lightning::ln::PaymentSecret"|"lightning::ln::channelmanager::PaymentId"
                                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"),
-
                        "lightning::io::Read" => Some("crate::c_types::u8slice"),
 
                        _ => None,
@@ -946,7 +949,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "[u8; 32]" if !is_ref => Some(""),
                        "[u8; 20]" if !is_ref => Some(""),
                        "[u8; 16]" if !is_ref => Some(""),
-                       "[u8; 10]" if !is_ref => Some(""),
+                       "[u8; 12]" if !is_ref => Some(""),
                        "[u8; 4]" if !is_ref => Some(""),
                        "[u8; 3]" if !is_ref => Some(""),
 
@@ -1010,8 +1013,6 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "lightning::ln::channelmanager::PaymentId" if is_ref=> Some("&::lightning::ln::channelmanager::PaymentId( unsafe { *"),
 
                        // List of traits we map (possibly during processing of other files):
-                       "crate::util::logger::Logger" => Some(""),
-
                        "lightning::io::Read" => Some("&mut "),
 
                        _ => None,
@@ -1030,7 +1031,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "[u8; 32]" if !is_ref => Some(".data"),
                        "[u8; 20]" if !is_ref => Some(".data"),
                        "[u8; 16]" if !is_ref => Some(".data"),
-                       "[u8; 10]" if !is_ref => Some(".data"),
+                       "[u8; 12]" if !is_ref => Some(".data"),
                        "[u8; 4]" if !is_ref => Some(".data"),
                        "[u8; 3]" if !is_ref => Some(".data"),
 
@@ -1080,8 +1081,6 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                                if is_ref => Some(" })"),
 
                        // List of traits we map (possibly during processing of other files):
-                       "crate::util::logger::Logger" => Some(""),
-
                        "lightning::io::Read" => Some(".to_reader()"),
 
                        _ => None,
@@ -1100,9 +1099,6 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "bitcoin::blockdata::block::Block" if is_ref => Some(("::bitcoin::consensus::encode::serialize(", ")")),
                        "bitcoin::hash_types::Txid" => None,
 
-                       // Override the default since Records contain an fmt with a lifetime:
-                       // TODO: We should include the other record fields
-                       "lightning::util::logger::Record" => Some(("std::ffi::CString::new(format!(\"{}\", ", ".args)).unwrap()")),
                        _ => None,
                }.map(|s| s.to_owned())
        }
@@ -1119,7 +1115,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "[u8; 32]" if is_ref => Some(""),
                        "[u8; 20]" if !is_ref => Some("crate::c_types::TwentyBytes { data: "),
                        "[u8; 16]" if !is_ref => Some("crate::c_types::SixteenBytes { data: "),
-                       "[u8; 10]" if !is_ref => Some("crate::c_types::TenBytes { data: "),
+                       "[u8; 12]" if !is_ref => Some("crate::c_types::TwelveBytes { data: "),
                        "[u8; 4]" if !is_ref => Some("crate::c_types::FourBytes { data: "),
                        "[u8; 3]" if is_ref => Some(""),
 
@@ -1132,6 +1128,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "std::time::Duration"|"core::time::Duration" => Some(""),
                        "std::time::SystemTime" => Some(""),
                        "std::io::Error" if !is_ref => Some("crate::c_types::IOError::from_rust("),
+                       "core::fmt::Arguments" => Some("format!(\"{}\", "),
 
                        "core::convert::Infallible" => Some("panic!(\"Cannot construct an Infallible: "),
 
@@ -1170,9 +1167,6 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "lightning::ln::PaymentHash"|"lightning::ln::PaymentPreimage"|"lightning::ln::PaymentSecret"|"lightning::ln::channelmanager::PaymentId"
                                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_"),
-
                        "lightning::io::Read" => Some("crate::c_types::u8slice::from_vec(&crate::c_types::reader_to_vec("),
 
                        _ => None,
@@ -1191,7 +1185,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "[u8; 32]" if is_ref => Some(""),
                        "[u8; 20]" if !is_ref => Some(" }"),
                        "[u8; 16]" if !is_ref => Some(" }"),
-                       "[u8; 10]" if !is_ref => Some(" }"),
+                       "[u8; 12]" if !is_ref => Some(" }"),
                        "[u8; 4]" if !is_ref => Some(" }"),
                        "[u8; 3]" if is_ref => Some(""),
 
@@ -1205,6 +1199,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "std::time::Duration"|"core::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(")"),
+                       "core::fmt::Arguments" => Some(").into()"),
 
                        "core::convert::Infallible" => Some("\")"),
 
@@ -1242,9 +1237,6 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                        "lightning::ln::PaymentHash"|"lightning::ln::PaymentPreimage"|"lightning::ln::PaymentSecret"|"lightning::ln::channelmanager::PaymentId"
                                if !is_ref => Some(".0 }"),
 
-                       // Override the default since Records contain an fmt with a lifetime:
-                       "lightning::util::logger::Record" => Some(".as_ptr()"),
-
                        "lightning::io::Read" => Some("))"),
 
                        _ => None,