summaryrefslogtreecommitdiff
path: root/src/codegen/mod.rs
diff options
context:
space:
mode:
authorDominik Boehi <dominik.boehi@gmail.com>2017-04-08 00:25:11 +0200
committerDominik Boehi <dominik.boehi@gmail.com>2017-04-08 00:25:11 +0200
commit89ef8c242666f28b124955431cbe6bb04013f8c3 (patch)
tree25167ee3cfe118d222e35a9ca2fea6cb53df75a9 /src/codegen/mod.rs
parentaac2f84ea76b6fe321440596a2a5fd93251a3021 (diff)
Move check for field size outside loop
Diffstat (limited to 'src/codegen/mod.rs')
-rw-r--r--src/codegen/mod.rs15
1 files changed, 8 insertions, 7 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index 8151a676..c203795a 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -913,19 +913,20 @@ fn flush_bitfields<'a, I>(ctx: &BindgenContext,
.pub_()
.build_ty(field_ty.clone());
+ let field_int_ty = match field_layout.size {
+ 8 => quote_ty!(ctx.ext_cx(), u64),
+ 4 => quote_ty!(ctx.ext_cx(), u32),
+ 2 => quote_ty!(ctx.ext_cx(), u16),
+ 1 => quote_ty!(ctx.ext_cx(), u8),
+ _ => return field
+ };
+
for (name, offset, width, bitfield_ty, bitfield_layout) in bitfields {
let prefix = ctx.trait_prefix();
let getter_name = bitfield_getter_name(ctx, parent, name);
let setter_name = bitfield_setter_name(ctx, parent, name);
let field_ident = ctx.ext_cx().ident_of(field_name);
- let field_int_ty = match field_layout.size {
- 8 => quote_ty!(ctx.ext_cx(), u64),
- 4 => quote_ty!(ctx.ext_cx(), u32),
- 2 => quote_ty!(ctx.ext_cx(), u16),
- 1 => quote_ty!(ctx.ext_cx(), u8),
- _ => return field
- };
let bitfield_int_ty = BlobTyBuilder::new(bitfield_layout).build();
let mask: usize = ((1usize << width) - 1usize) << offset;