let full_obj_path;
let mut has_inner = false;
if let syn::Type::Path(ref p) = for_ty {
- if let Some(ident) = p.path.get_ident() {
+ if let Some(ident) = single_ident_generic_path_to_ident(&p.path) {
for_obj = format!("{}", ident);
full_obj_path = for_obj.clone();
has_inner = types.c_type_has_inner_from_path(&types.resolve_path(&p.path, Some(generics)));
///
/// A few non-crate Traits are hard-coded including Default.
fn writeln_impl<W: std::io::Write>(w: &mut W, i: &syn::ItemImpl, types: &mut TypeResolver) {
+ match export_status(&i.attrs) {
+ ExportStatus::Export => {},
+ ExportStatus::NoExport|ExportStatus::TestOnly => return,
+ }
+
if let syn::Type::Tuple(_) = &*i.self_ty {
if types.understood_c_type(&*i.self_ty, None) {
let mut gen_types = GenericTypes::new();
},
"PartialEq" => {},
// If we have no generics, try a manual implementation:
- _ if p.path.get_ident().is_some() => maybe_convert_trait_impl(w, &trait_path.1, &*i.self_ty, types, &gen_types),
- _ => {},
+ _ => maybe_convert_trait_impl(w, &trait_path.1, &*i.self_ty, types, &gen_types),
}
- } else if p.path.get_ident().is_some() {
+ } else {
// If we have no generics, try a manual implementation:
maybe_convert_trait_impl(w, &trait_path.1, &*i.self_ty, types, &gen_types);
}
}
}
+/// (C-not exported) as users never need to call this directly
impl Writeable for Vec<HTLCOutputInCommitment> {
#[inline]
fn write<W: Writer>(&self, w: &mut W) -> Result<(), ::std::io::Error> {
}
}
+/// (C-not exported) as users never need to call this directly
impl Readable for Vec<HTLCOutputInCommitment> {
#[inline]
fn read<R: Read>(r: &mut R) -> Result<Self, DecodeError> {
pub cltv_expiry_delta: u32,
}
+/// (C-not exported)
impl Writeable for Vec<RouteHop> {
fn write<W: ::util::ser::Writer>(&self, writer: &mut W) -> Result<(), ::std::io::Error> {
(self.len() as u8).write(writer)?;
}
}
+/// (C-not exported)
impl Readable for Vec<RouteHop> {
fn read<R: ::std::io::Read>(reader: &mut R) -> Result<Vec<RouteHop>, DecodeError> {
let hops_count: u8 = Readable::read(reader)?;