summaryrefslogtreecommitdiff
path: root/src/gen.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/gen.rs')
-rw-r--r--src/gen.rs19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/gen.rs b/src/gen.rs
index 6f2d5372..277a8aa1 100644
--- a/src/gen.rs
+++ b/src/gen.rs
@@ -1242,10 +1242,24 @@ fn cstruct_to_rs(ctx: &mut GenCtx, name: &str, ci: CompInfo) -> Vec<P<ast::Item>
_ => unreachable!()
}
}
- if mangledlist.len() > 0 {
- items.push(mk_extern(ctx, &vec![], mangledlist, Abi::C));
+ if !mangledlist.is_empty() {
+ items.push(mk_extern(ctx, &[], mangledlist, Abi::C));
items.push(mk_impl(ctx, id_ty, unmangledlist));
}
+
+ if !ci.vars.is_empty() {
+ let vars = ci.vars.into_iter().map(|v| {
+ let vi = v.varinfo();
+ let v = vi.borrow_mut();
+ let mut var_name = v.name.clone();
+ if !v.mangled.is_empty() {
+ var_name = format!("{}_consts_{}", name, v.name);
+ }
+ cvar_to_rs(ctx, var_name, v.mangled.clone(), &v.ty, v.is_const)
+ }).collect();
+
+ items.push(mk_extern(ctx, &[], vars, Abi::C));
+ }
items
}
@@ -2301,6 +2315,7 @@ fn gen_union_field_definitions_if_necessary(ctx: &mut GenCtx, mut root_mod: &mut
let union_fields_decl = quote_item!(&ctx.ext_cx,
#[derive(Copy, Debug)]
+ #[repr(C)]
pub struct __BindgenUnionField<T>(::std::marker::PhantomData<T>);
).unwrap();