Merge pull request #25 from TheBlueMatt/2021-04-bp-inclusion
[ldk-c-bindings] / c-bindings-gen / src / types.rs
index bd0c9c5ceecc8cfcb4aaa8ce175cda800d73ddab..c21572f670a378bbcd21bdd24216584714521563 100644 (file)
@@ -723,6 +723,14 @@ impl FullLibraryAST {
 fn initial_clonable_types() -> HashSet<String> {
        let mut res = HashSet::new();
        res.insert("crate::c_types::u5".to_owned());
+       res.insert("crate::c_types::ThirtyTwoBytes".to_owned());
+       res.insert("crate::c_types::PublicKey".to_owned());
+       res.insert("crate::c_types::Transaction".to_owned());
+       res.insert("crate::c_types::TxOut".to_owned());
+       res.insert("crate::c_types::Signature".to_owned());
+       res.insert("crate::c_types::RecoverableSignature".to_owned());
+       res.insert("crate::c_types::Secp256k1Error".to_owned());
+       res.insert("crate::c_types::IOError".to_owned());
        res
 }
 
@@ -850,9 +858,6 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
                if self.is_primitive(ty) { return true; }
                match ty {
                        "()" => true,
-                       "crate::c_types::Signature" => true,
-                       "crate::c_types::RecoverableSignature" => true,
-                       "crate::c_types::TxOut" => true,
                        _ => false,
                }
        }
@@ -950,6 +955,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
 
                        "str" if is_ref => Some(""),
                        "alloc::string::String"|"String" => Some(""),
+                       "std::io::Error" if !is_ref => Some(""),
                        // Note that we'll panic for String if is_ref, as we only have non-owned memory, we
                        // cannot create a &String.
 
@@ -1016,6 +1022,7 @@ impl<'a, 'c: 'a> TypeResolver<'a, 'c> {
 
                        "str" if is_ref => Some(".into_str()"),
                        "alloc::string::String"|"String" => Some(".into_string()"),
+                       "std::io::Error" if !is_ref => Some(".to_rust()"),
 
                        "std::time::Duration"|"core::time::Duration" => Some(")"),
                        "std::time::SystemTime" => Some("))"),