summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/codegen/mod.rs11
-rw-r--r--tests/expectations/tests/bitfield-method-same-name.rs9
-rw-r--r--tests/expectations/tests/bitfield_align.rs241
-rw-r--r--tests/expectations/tests/bitfield_method_mangling.rs16
-rw-r--r--tests/expectations/tests/jsval_layout_opaque.rs19
-rw-r--r--tests/expectations/tests/layout_align.rs26
-rw-r--r--tests/expectations/tests/layout_eth_conf.rs174
-rw-r--r--tests/expectations/tests/layout_mbuf.rs152
-rw-r--r--tests/expectations/tests/only_bitfields.rs14
-rw-r--r--tests/expectations/tests/struct_with_bitfields.rs44
-rw-r--r--tests/expectations/tests/union_with_anon_struct_bitfield.rs14
-rw-r--r--tests/expectations/tests/weird_bitfields.rs74
12 files changed, 206 insertions, 588 deletions
diff --git a/src/codegen/mod.rs b/src/codegen/mod.rs
index 2f8ad805..17738426 100644
--- a/src/codegen/mod.rs
+++ b/src/codegen/mod.rs
@@ -1106,19 +1106,16 @@ impl Bitfield {
quote_tokens!(ctx.ext_cx(), pub fn)
};
+ // Don't use variables or blocks because const function does not allow them.
quote_item!(
ctx.ext_cx(),
impl XxxUnused {
#[inline]
$fn_prefix $ctor_name($params $param_name : $bitfield_ty)
-> $unit_field_int_ty {
- let bitfield_unit_val = $body;
- let $param_name = $param_name
- as $bitfield_int_ty
- as $unit_field_int_ty;
- let mask = $mask as $unit_field_int_ty;
- let $param_name = ($param_name << $offset) & mask;
- bitfield_unit_val | $param_name
+ ($body |
+ (($param_name as $bitfield_int_ty as $unit_field_int_ty) << $offset) &
+ ($mask as $unit_field_int_ty))
}
}
).unwrap()
diff --git a/tests/expectations/tests/bitfield-method-same-name.rs b/tests/expectations/tests/bitfield-method-same-name.rs
index f7d158bc..2ad9b8bb 100644
--- a/tests/expectations/tests/bitfield-method-same-name.rs
+++ b/tests/expectations/tests/bitfield-method-same-name.rs
@@ -55,12 +55,9 @@ impl Foo {
#[inline]
pub fn new_bitfield_1(type__bindgen_bitfield: ::std::os::raw::c_char)
-> u8 {
- let bitfield_unit_val = { 0 };
- let type__bindgen_bitfield = type__bindgen_bitfield as u8 as u8;
- let mask = 7usize as u8;
- let type__bindgen_bitfield =
- (type__bindgen_bitfield << 0usize) & mask;
- bitfield_unit_val | type__bindgen_bitfield
+ ({ 0 } |
+ ((type__bindgen_bitfield as u8 as u8) << 0usize) &
+ (7usize as u8))
}
#[inline]
pub unsafe fn type_(&mut self) -> ::std::os::raw::c_char {
diff --git a/tests/expectations/tests/bitfield_align.rs b/tests/expectations/tests/bitfield_align.rs
index 794b0717..08344342 100644
--- a/tests/expectations/tests/bitfield_align.rs
+++ b/tests/expectations/tests/bitfield_align.rs
@@ -222,122 +222,39 @@ impl A {
b8: ::std::os::raw::c_uint,
b9: ::std::os::raw::c_uint,
b10: ::std::os::raw::c_uint) -> u16 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- 0
- };
- let b1 =
- b1
- as
- u32
- as
- u16;
- let mask =
- 1usize
- as
- u16;
- let b1 =
- (b1
- <<
- 0usize)
- &
- mask;
- bitfield_unit_val
- |
- b1
- };
- let b2 =
- b2
- as
- u32
- as
- u16;
- let mask =
- 2usize
- as
- u16;
- let b2 =
- (b2
- <<
- 1usize)
- &
- mask;
- bitfield_unit_val
- |
- b2
- };
- let b3 =
- b3 as u32
- as
- u16;
- let mask =
- 4usize as
- u16;
- let b3 =
- (b3 <<
- 2usize)
- &
- mask;
- bitfield_unit_val
- | b3
- };
- let b4 =
- b4 as u32 as u16;
- let mask =
- 8usize as u16;
- let b4 =
- (b4 << 3usize) &
- mask;
- bitfield_unit_val | b4
- };
- let b5 = b5 as u32 as u16;
- let mask = 16usize as u16;
- let b5 =
- (b5 << 4usize) & mask;
- bitfield_unit_val | b5
- };
- let b6 = b6 as u32 as u16;
- let mask = 32usize as u16;
- let b6 = (b6 << 5usize) & mask;
- bitfield_unit_val | b6
- };
- let b7 = b7 as u32 as u16;
- let mask = 64usize as u16;
- let b7 = (b7 << 6usize) & mask;
- bitfield_unit_val | b7
- };
- let b8 = b8 as u32 as u16;
- let mask = 128usize as u16;
- let b8 = (b8 << 7usize) & mask;
- bitfield_unit_val | b8
- };
- let b9 = b9 as u32 as u16;
- let mask = 256usize as u16;
- let b9 = (b9 << 8usize) & mask;
- bitfield_unit_val | b9
- };
- let b10 = b10 as u32 as u16;
- let mask = 512usize as u16;
- let b10 = (b10 << 9usize) & mask;
- bitfield_unit_val | b10
+ ({
+ ({
+ ({
+ ({
+ ({
+ ({
+ ({
+ ({
+ ({
+ ({ 0 } |
+ ((b1 as u32 as u16)
+ << 0usize) &
+ (1usize as u16))
+ } |
+ ((b2 as u32 as u16) <<
+ 1usize) &
+ (2usize as u16))
+ } |
+ ((b3 as u32 as u16) << 2usize)
+ & (4usize as u16))
+ } |
+ ((b4 as u32 as u16) << 3usize) &
+ (8usize as u16))
+ } |
+ ((b5 as u32 as u16) << 4usize) &
+ (16usize as u16))
+ } |
+ ((b6 as u32 as u16) << 5usize) &
+ (32usize as u16))
+ } | ((b7 as u32 as u16) << 6usize) & (64usize as u16))
+ } | ((b8 as u32 as u16) << 7usize) & (128usize as u16))
+ } | ((b9 as u32 as u16) << 8usize) & (256usize as u16))
+ } | ((b10 as u32 as u16) << 9usize) & (512usize as u16))
}
}
#[repr(C)]
@@ -396,18 +313,10 @@ impl B {
#[inline]
pub fn new_bitfield_1(foo: ::std::os::raw::c_uint,
bar: ::std::os::raw::c_uchar) -> u32 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let foo = foo as u32 as u32;
- let mask = 2147483647usize as u32;
- let foo = (foo << 0usize) & mask;
- bitfield_unit_val | foo
- };
- let bar = bar as u8 as u32;
- let mask = 2147483648usize as u32;
- let bar = (bar << 31usize) & mask;
- bitfield_unit_val | bar
+ ({
+ ({ 0 } |
+ ((foo as u32 as u32) << 0usize) & (2147483647usize as u32))
+ } | ((bar as u8 as u32) << 31usize) & (2147483648usize as u32))
}
}
#[repr(C)]
@@ -476,18 +385,8 @@ impl C {
#[inline]
pub fn new_bitfield_1(b1: ::std::os::raw::c_uint,
b2: ::std::os::raw::c_uint) -> u8 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let b1 = b1 as u32 as u8;
- let mask = 1usize as u8;
- let b1 = (b1 << 0usize) & mask;
- bitfield_unit_val | b1
- };
- let b2 = b2 as u32 as u8;
- let mask = 2usize as u8;
- let b2 = (b2 << 1usize) & mask;
- bitfield_unit_val | b2
+ ({ ({ 0 } | ((b1 as u32 as u8) << 0usize) & (1usize as u8)) } |
+ ((b2 as u32 as u8) << 1usize) & (2usize as u8))
}
}
#[repr(C)]
@@ -567,25 +466,12 @@ impl Date1 {
pub fn new_bitfield_1(nWeekDay: ::std::os::raw::c_ushort,
nMonthDay: ::std::os::raw::c_ushort,
nMonth: ::std::os::raw::c_ushort) -> u16 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let nWeekDay = nWeekDay as u16 as u16;
- let mask = 7usize as u16;
- let nWeekDay = (nWeekDay << 0usize) & mask;
- bitfield_unit_val | nWeekDay
- };
- let nMonthDay = nMonthDay as u16 as u16;
- let mask = 504usize as u16;
- let nMonthDay = (nMonthDay << 3usize) & mask;
- bitfield_unit_val | nMonthDay
- };
- let nMonth = nMonth as u16 as u16;
- let mask = 15872usize as u16;
- let nMonth = (nMonth << 9usize) & mask;
- bitfield_unit_val | nMonth
+ ({
+ ({
+ ({ 0 } |
+ ((nWeekDay as u16 as u16) << 0usize) & (7usize as u16))
+ } | ((nMonthDay as u16 as u16) << 3usize) & (504usize as u16))
+ } | ((nMonth as u16 as u16) << 9usize) & (15872usize as u16))
}
#[inline]
pub fn nYear(&self) -> ::std::os::raw::c_ushort {
@@ -607,11 +493,7 @@ impl Date1 {
}
#[inline]
pub fn new_bitfield_2(nYear: ::std::os::raw::c_ushort) -> u8 {
- let bitfield_unit_val = { 0 };
- let nYear = nYear as u16 as u8;
- let mask = 255usize as u8;
- let nYear = (nYear << 0usize) & mask;
- bitfield_unit_val | nYear
+ ({ 0 } | ((nYear as u16 as u8) << 0usize) & (255usize as u8))
}
}
#[repr(C)]
@@ -696,25 +578,12 @@ impl Date2 {
pub fn new_bitfield_1(nWeekDay: ::std::os::raw::c_ushort,
nMonthDay: ::std::os::raw::c_ushort,
nMonth: ::std::os::raw::c_ushort) -> u16 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let nWeekDay = nWeekDay as u16 as u16;
- let mask = 7usize as u16;
- let nWeekDay = (nWeekDay << 0usize) & mask;
- bitfield_unit_val | nWeekDay
- };
- let nMonthDay = nMonthDay as u16 as u16;
- let mask = 504usize as u16;
- let nMonthDay = (nMonthDay << 3usize) & mask;
- bitfield_unit_val | nMonthDay
- };
- let nMonth = nMonth as u16 as u16;
- let mask = 15872usize as u16;
- let nMonth = (nMonth << 9usize) & mask;
- bitfield_unit_val | nMonth
+ ({
+ ({
+ ({ 0 } |
+ ((nWeekDay as u16 as u16) << 0usize) & (7usize as u16))
+ } | ((nMonthDay as u16 as u16) << 3usize) & (504usize as u16))
+ } | ((nMonth as u16 as u16) << 9usize) & (15872usize as u16))
}
#[inline]
pub fn nYear(&self) -> ::std::os::raw::c_ushort {
@@ -736,10 +605,6 @@ impl Date2 {
}
#[inline]
pub fn new_bitfield_2(nYear: ::std::os::raw::c_ushort) -> u8 {
- let bitfield_unit_val = { 0 };
- let nYear = nYear as u16 as u8;
- let mask = 255usize as u8;
- let nYear = (nYear << 0usize) & mask;
- bitfield_unit_val | nYear
+ ({ 0 } | ((nYear as u16 as u8) << 0usize) & (255usize as u8))
}
}
diff --git a/tests/expectations/tests/bitfield_method_mangling.rs b/tests/expectations/tests/bitfield_method_mangling.rs
index fc5921f8..26f20081 100644
--- a/tests/expectations/tests/bitfield_method_mangling.rs
+++ b/tests/expectations/tests/bitfield_method_mangling.rs
@@ -63,17 +63,9 @@ impl mach_msg_type_descriptor_t {
#[inline]
pub fn new_bitfield_1(pad3: ::std::os::raw::c_uint,
type_: ::std::os::raw::c_uint) -> u32 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let pad3 = pad3 as u32 as u32;
- let mask = 16777215usize as u32;
- let pad3 = (pad3 << 0usize) & mask;
- bitfield_unit_val | pad3
- };
- let type_ = type_ as u32 as u32;
- let mask = 4278190080usize as u32;
- let type_ = (type_ << 24usize) & mask;
- bitfield_unit_val | type_
+ ({
+ ({ 0 } |
+ ((pad3 as u32 as u32) << 0usize) & (16777215usize as u32))
+ } | ((type_ as u32 as u32) << 24usize) & (4278190080usize as u32))
}
}
diff --git a/tests/expectations/tests/jsval_layout_opaque.rs b/tests/expectations/tests/jsval_layout_opaque.rs
index 56c6188a..d1e94081 100644
--- a/tests/expectations/tests/jsval_layout_opaque.rs
+++ b/tests/expectations/tests/jsval_layout_opaque.rs
@@ -168,18 +168,13 @@ impl jsval_layout__bindgen_ty_1 {
}
#[inline]
pub fn new_bitfield_1(payload47: u64, tag: JSValueTag) -> u64 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let payload47 = payload47 as u64 as u64;
- let mask = 140737488355327usize as u64;
- let payload47 = (payload47 << 0usize) & mask;
- bitfield_unit_val | payload47
- };
- let tag = tag as u32 as u64;
- let mask = 18446603336221196288usize as u64;
- let tag = (tag << 47usize) & mask;
- bitfield_unit_val | tag
+ ({
+ ({ 0 } |
+ ((payload47 as u64 as u64) << 0usize) &
+ (140737488355327usize as u64))
+ } |
+ ((tag as u32 as u64) << 47usize) &
+ (18446603336221196288usize as u64))
}
}
#[repr(C)]
diff --git a/tests/expectations/tests/layout_align.rs b/tests/expectations/tests/layout_align.rs
index 24861441..2202b9d0 100644
--- a/tests/expectations/tests/layout_align.rs
+++ b/tests/expectations/tests/layout_align.rs
@@ -147,24 +147,12 @@ impl rte_eth_link {
#[inline]
pub fn new_bitfield_1(link_duplex: u16, link_autoneg: u16,
link_status: u16) -> u8 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let link_duplex = link_duplex as u16 as u8;
- let mask = 1usize as u8;
- let link_duplex = (link_duplex << 0usize) & mask;
- bitfield_unit_val | link_duplex
- };
- let link_autoneg = link_autoneg as u16 as u8;
- let mask = 2usize as u8;
- let link_autoneg = (link_autoneg << 1usize) & mask;
- bitfield_unit_val | link_autoneg
- };
- let link_status = link_status as u16 as u8;
- let mask = 4usize as u8;
- let link_status = (link_status << 2usize) & mask;
- bitfield_unit_val | link_status
+ ({
+ ({
+ ({ 0 } |
+ ((link_duplex as u16 as u8) << 0usize) &
+ (1usize as u8))
+ } | ((link_autoneg as u16 as u8) << 1usize) & (2usize as u8))
+ } | ((link_status as u16 as u8) << 2usize) & (4usize as u8))
}
}
diff --git a/tests/expectations/tests/layout_eth_conf.rs b/tests/expectations/tests/layout_eth_conf.rs
index 0fd1392e..3f79d7b0 100644
--- a/tests/expectations/tests/layout_eth_conf.rs
+++ b/tests/expectations/tests/layout_eth_conf.rs
@@ -287,113 +287,41 @@ impl rte_eth_rxmode {
hw_vlan_extend: u16, jumbo_frame: u16,
hw_strip_crc: u16, enable_scatter: u16,
enable_lro: u16) -> u16 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- 0
- };
- let header_split =
- header_split
- as
- u16
- as
- u16;
- let mask =
- 1usize
- as
- u16;
- let header_split =
- (header_split
- <<
- 0usize)
- &
- mask;
- bitfield_unit_val
- |
- header_split
- };
- let hw_ip_checksum =
- hw_ip_checksum
- as u16
- as
- u16;
- let mask =
- 2usize as
- u16;
- let hw_ip_checksum =
- (hw_ip_checksum
- <<
- 1usize)
- &
- mask;
- bitfield_unit_val
- |
- hw_ip_checksum
- };
- let hw_vlan_filter =
- hw_vlan_filter as
- u16 as u16;
- let mask =
- 4usize as u16;
- let hw_vlan_filter =
- (hw_vlan_filter <<
- 2usize) &
- mask;
- bitfield_unit_val |
- hw_vlan_filter
- };
- let hw_vlan_strip =
- hw_vlan_strip as u16 as
- u16;
- let mask = 8usize as u16;
- let hw_vlan_strip =
- (hw_vlan_strip << 3usize)
- & mask;
- bitfield_unit_val |
- hw_vlan_strip
- };
- let hw_vlan_extend =
- hw_vlan_extend as u16 as u16;
- let mask = 16usize as u16;
- let hw_vlan_extend =
- (hw_vlan_extend << 4usize) & mask;
- bitfield_unit_val | hw_vlan_extend
- };
- let jumbo_frame = jumbo_frame as u16 as u16;
- let mask = 32usize as u16;
- let jumbo_frame =
- (jumbo_frame << 5usize) & mask;
- bitfield_unit_val | jumbo_frame
- };
- let hw_strip_crc = hw_strip_crc as u16 as u16;
- let mask = 64usize as u16;
- let hw_strip_crc = (hw_strip_crc << 6usize) & mask;
- bitfield_unit_val | hw_strip_crc
- };
- let enable_scatter = enable_scatter as u16 as u16;
- let mask = 128usize as u16;
- let enable_scatter = (enable_scatter << 7usize) & mask;
- bitfield_unit_val | enable_scatter
- };
- let enable_lro = enable_lro as u16 as u16;
- let mask = 256usize as u16;
- let enable_lro = (enable_lro << 8usize) & mask;
- bitfield_unit_val | enable_lro
+ ({
+ ({
+ ({
+ ({
+ ({
+ ({
+ ({
+ ({
+ ({ 0 } |
+ ((header_split as u16 as
+ u16) << 0usize) &
+ (1usize as u16))
+ } |
+ ((hw_ip_checksum as u16 as
+ u16) << 1usize) &
+ (2usize as u16))
+ } |
+ ((hw_vlan_filter as u16 as u16) <<
+ 2usize) & (4usize as u16))
+ } |
+ ((hw_vlan_strip as u16 as u16) <<
+ 3usize) & (8usize as u16))
+ } |
+ ((hw_vlan_extend as u16 as u16) << 4usize) &
+ (16usize as u16))
+ } |
+ ((jumbo_frame as u16 as u16) << 5usize) &
+ (32usize as u16))
+ } |
+ ((hw_strip_crc as u16 as u16) << 6usize) &
+ (64usize as u16))
+ } |
+ ((enable_scatter as u16 as u16) << 7usize) &
+ (128usize as u16))
+ } | ((enable_lro as u16 as u16) << 8usize) & (256usize as u16))
}
}
#[repr(u32)]
@@ -502,29 +430,15 @@ impl rte_eth_txmode {
pub fn new_bitfield_1(hw_vlan_reject_tagged: u8,
hw_vlan_reject_untagged: u8,
hw_vlan_insert_pvid: u8) -> u8 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let hw_vlan_reject_tagged =
- hw_vlan_reject_tagged as u8 as u8;
- let mask = 1usize as u8;
- let hw_vlan_reject_tagged =
- (hw_vlan_reject_tagged << 0usize) & mask;
- bitfield_unit_val | hw_vlan_reject_tagged
- };
- let hw_vlan_reject_untagged =
- hw_vlan_reject_untagged as u8 as u8;
- let mask = 2usize as u8;
- let hw_vlan_reject_untagged =
- (hw_vlan_reject_untagged << 1usize) & mask;
- bitfield_unit_val | hw_vlan_reject_untagged
- };
- let hw_vlan_insert_pvid = hw_vlan_insert_pvid as u8 as u8;
- let mask = 4usize as u8;
- let hw_vlan_insert_pvid = (hw_vlan_insert_pvid << 2usize) & mask;
- bitfield_unit_val | hw_vlan_insert_pvid
+ ({
+ ({
+ ({ 0 } |
+ ((hw_vlan_reject_tagged as u8 as u8) << 0usize) &
+ (1usize as u8))
+ } |
+ ((hw_vlan_reject_untagged as u8 as u8) << 1usize) &
+ (2usize as u8))
+ } | ((hw_vlan_insert_pvid as u8 as u8) << 2usize) & (4usize as u8))
}
}
/**
diff --git a/tests/expectations/tests/layout_mbuf.rs b/tests/expectations/tests/layout_mbuf.rs
index d35464d6..f4b3dc26 100644
--- a/tests/expectations/tests/layout_mbuf.rs
+++ b/tests/expectations/tests/layout_mbuf.rs
@@ -306,65 +306,33 @@ impl rte_mbuf__bindgen_ty_2__bindgen_ty_1 {
pub fn new_bitfield_1(l2_type: u32, l3_type: u32, l4_type: u32,
tun_type: u32, inner_l2_type: u32,
inner_l3_type: u32, inner_l4_type: u32) -> u32 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- { 0 };
- let l2_type =
- l2_type as u32 as
- u32;
- let mask =
- 15usize as u32;
- let l2_type =
- (l2_type <<
- 0usize) &
- mask;
- bitfield_unit_val |
- l2_type
- };
- let l3_type =
- l3_type as u32 as u32;
- let mask = 240usize as u32;
- let l3_type =
- (l3_type << 4usize) &
- mask;
- bitfield_unit_val | l3_type
- };
- let l4_type = l4_type as u32 as u32;
- let mask = 3840usize as u32;
- let l4_type =
- (l4_type << 8usize) & mask;
- bitfield_unit_val | l4_type
- };
- let tun_type = tun_type as u32 as u32;
- let mask = 61440usize as u32;
- let tun_type = (tun_type << 12usize) & mask;
- bitfield_unit_val | tun_type
- };
- let inner_l2_type = inner_l2_type as u32 as u32;
- let mask = 983040usize as u32;
- let inner_l2_type = (inner_l2_type << 16usize) & mask;
- bitfield_unit_val | inner_l2_type
- };
- let inner_l3_type = inner_l3_type as u32 as u32;
- let mask = 15728640usize as u32;
- let inner_l3_type = (inner_l3_type << 20usize) & mask;
- bitfield_unit_val | inner_l3_type
- };
- let inner_l4_type = inner_l4_type as u32 as u32;
- let mask = 251658240usize as u32;
- let inner_l4_type = (inner_l4_type << 24usize) & mask;
- bitfield_unit_val | inner_l4_type
+ ({
+ ({
+ ({
+ ({
+ ({
+ ({
+ ({ 0 } |
+ ((l2_type as u32 as u32) << 0usize)
+ & (15usize as u32))
+ } |
+ ((l3_type as u32 as u32) << 4usize) &
+ (240usize as u32))
+ } |
+ ((l4_type as u32 as u32) << 8usize) &
+ (3840usize as u32))
+ } |
+ ((tun_type as u32 as u32) << 12usize) &
+ (61440usize as u32))
+ } |
+ ((inner_l2_type as u32 as u32) << 16usize) &
+ (983040usize as u32))
+ } |
+ ((inner_l3_type as u32 as u32) << 20usize) &
+ (15728640usize as u32))
+ } |
+ ((inner_l4_type as u32 as u32) << 24usize) &
+ (251658240usize as u32))
}
}
#[test]
@@ -730,49 +698,29 @@ impl rte_mbuf__bindgen_ty_5__bindgen_ty_1 {
pub fn new_bitfield_1(l2_len: u64, l3_len: u64, l4_len: u64,
tso_segsz: u64, outer_l3_len: u64,
outer_l2_len: u64) -> u64 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let l2_len =
- l2_len as u64 as u64;
- let mask = 127usize as u64;
- let l2_len =
- (l2_len << 0usize) & mask;
- bitfield_unit_val | l2_len
- };
- let l3_len = l3_len as u64 as u64;
- let mask = 65408usize as u64;
- let l3_len =
- (l3_len << 7usize) & mask;
- bitfield_unit_val | l3_len
- };
- let l4_len = l4_len as u64 as u64;
- let mask = 16711680usize as u64;
- let l4_len = (l4_len << 16usize) & mask;
- bitfield_unit_val | l4_len
- };
- let tso_segsz = tso_segsz as u64 as u64;
- let mask = 1099494850560usize as u64;
- let tso_segsz = (tso_segsz << 24usize) & mask;
- bitfield_unit_val | tso_segsz
- };
- let outer_l3_len = outer_l3_len as u64 as u64;
- let mask = 561850441793536usize as u64;
- let outer_l3_len = (outer_l3_len << 40usize) & mask;
- bitfield_unit_val | outer_l3_len
- };
- let outer_l2_len = outer_l2_len as u64 as u64;
- let mask = 71494644084506624usize as u64;
- let outer_l2_len = (outer_l2_len << 49usize) & mask;
- bitfield_unit_val | outer_l2_len
+ ({
+ ({
+ ({
+ ({
+ ({
+ ({ 0 } |
+ ((l2_len as u64 as u64) << 0usize) &
+ (127usize as u64))
+ } |
+ ((l3_len as u64 as u64) << 7usize) &
+ (65408usize as u64))
+ } |
+ ((l4_len as u64 as u64) << 16usize) &
+ (16711680usize as u64))
+ } |
+ ((tso_segsz as u64 as u64) << 24usize) &
+ (1099494850560usize as u64))
+ } |
+ ((outer_l3_len as u64 as u64) << 40usize) &
+ (561850441793536usize as u64))
+ } |
+ ((outer_l2_len as u64 as u64) << 49usize) &
+ (71494644084506624usize as u64))
}
}
#[test]
diff --git a/tests/expectations/tests/only_bitfields.rs b/tests/expectations/tests/only_bitfields.rs
index 238c0eaf..f30d218f 100644
--- a/tests/expectations/tests/only_bitfields.rs
+++ b/tests/expectations/tests/only_bitfields.rs
@@ -59,17 +59,7 @@ impl C {
}
#[inline]
pub fn new_bitfield_1(a: bool, b: bool) -> u8 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let a = a as u8 as u8;
- let mask = 1usize as u8;
- let a = (a << 0usize) & mask;
- bitfield_unit_val | a
- };
- let b = b as u8 as u8;
- let mask = 254usize as u8;
- let b = (b << 1usize) & mask;
- bitfield_unit_val | b
+ ({ ({ 0 } | ((a as u8 as u8) << 0usize) & (1usize as u8)) } |
+ ((b as u8 as u8) << 1usize) & (254usize as u8))
}
}
diff --git a/tests/expectations/tests/struct_with_bitfields.rs b/tests/expectations/tests/struct_with_bitfields.rs
index 24edb34b..dc26bd06 100644
--- a/tests/expectations/tests/struct_with_bitfields.rs
+++ b/tests/expectations/tests/struct_with_bitfields.rs
@@ -105,32 +105,12 @@ impl bitfield {
b: ::std::os::raw::c_ushort,
c: ::std::os::raw::c_ushort,
d: ::std::os::raw::c_ushort) -> u8 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let a = a as u16 as u8;
- let mask = 1usize as u8;
- let a = (a << 0usize) & mask;
- bitfield_unit_val | a
- };
- let b = b as u16 as u8;
- let mask = 2usize as u8;
- let b = (b << 1usize) & mask;
- bitfield_unit_val | b
- };
- let c = c as u16 as u8;
- let mask = 4usize as u8;
- let c = (c << 2usize) & mask;
- bitfield_unit_val | c
- };
- let d = d as u16 as u8;
- let mask = 192usize as u8;
- let d = (d << 6usize) & mask;
- bitfield_unit_val | d
+ ({
+ ({
+ ({ ({ 0 } | ((a as u16 as u8) << 0usize) & (1usize as u8)) }
+ | ((b as u16 as u8) << 1usize) & (2usize as u8))
+ } | ((c as u16 as u8) << 2usize) & (4usize as u8))
+ } | ((d as u16 as u8) << 6usize) & (192usize as u8))
}
#[inline]
pub fn f(&self) -> ::std::os::raw::c_uint {
@@ -152,11 +132,7 @@ impl bitfield {
}
#[inline]
pub fn new_bitfield_2(f: ::std::os::raw::c_uint) -> u8 {
- let bitfield_unit_val = { 0 };
- let f = f as u32 as u8;
- let mask = 3usize as u8;
- let f = (f << 0usize) & mask;
- bitfield_unit_val | f
+ ({ 0 } | ((f as u32 as u8) << 0usize) & (3usize as u8))
}
#[inline]
pub fn g(&self) -> ::std::os::raw::c_uint {
@@ -178,10 +154,6 @@ impl bitfield {
}
#[inline]
pub fn new_bitfield_3(g: ::std::os::raw::c_uint) -> u32 {
- let bitfield_unit_val = { 0 };
- let g = g as u32 as u32;
- let mask = 4294967295usize as u32;
- let g = (g << 0usize) & mask;
- bitfield_unit_val | g
+ ({ 0 } | ((g as u32 as u32) << 0usize) & (4294967295usize as u32))
}
}
diff --git a/tests/expectations/tests/union_with_anon_struct_bitfield.rs b/tests/expectations/tests/union_with_anon_struct_bitfield.rs
index b5abd47f..c9bf8ed1 100644
--- a/tests/expectations/tests/union_with_anon_struct_bitfield.rs
+++ b/tests/expectations/tests/union_with_anon_struct_bitfield.rs
@@ -91,18 +91,8 @@ impl foo__bindgen_ty_1 {
#[inline]
pub fn new_bitfield_1(b: ::std::os::raw::c_int, c: ::std::os::raw::c_int)
-> u32 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let b = b as u32 as u32;
- let mask = 127usize as u32;
- let b = (b << 0usize) & mask;
- bitfield_unit_val | b
- };
- let c = c as u32 as u32;
- let mask = 4294967168usize as u32;
- let c = (c << 7usize) & mask;
- bitfield_unit_val | c
+ ({ ({ 0 } | ((b as u32 as u32) << 0usize) & (127usize as u32)) } |
+ ((c as u32 as u32) << 7usize) & (4294967168usize as u32))
}
}
#[test]
diff --git a/tests/expectations/tests/weird_bitfields.rs b/tests/expectations/tests/weird_bitfields.rs
index 060d400b..0bf90dda 100644
--- a/tests/expectations/tests/weird_bitfields.rs
+++ b/tests/expectations/tests/weird_bitfields.rs
@@ -144,18 +144,10 @@ impl Weird {
#[inline]
pub fn new_bitfield_1(bitTest: ::std::os::raw::c_uint,
bitTest2: ::std::os::raw::c_uint) -> u32 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let bitTest = bitTest as u32 as u32;
- let mask = 65535usize as u32;
- let bitTest = (bitTest << 0usize) & mask;
- bitfield_unit_val | bitTest
- };
- let bitTest2 = bitTest2 as u32 as u32;
- let mask = 2147418112usize as u32;
- let bitTest2 = (bitTest2 << 16usize) & mask;
- bitfield_unit_val | bitTest2
+ ({
+ ({ 0 } |
+ ((bitTest as u32 as u32) << 0usize) & (65535usize as u32))
+ } | ((bitTest2 as u32 as u32) << 16usize) & (2147418112usize as u32))
}
#[inline]
pub fn mFillOpacitySource(&self) -> nsStyleSVGOpacitySource {
@@ -234,40 +226,21 @@ impl Weird {
mStrokeOpacitySource: nsStyleSVGOpacitySource,
mStrokeDasharrayFromObject: bool,
mStrokeDashoffsetFromObject: bool) -> u8 {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val =
- {
- let bitfield_unit_val = { 0 };
- let mFillOpacitySource =
- mFillOpacitySource as u32 as u8;
- let mask = 7usize as u8;
- let mFillOpacitySource =
- (mFillOpacitySource << 0usize) & mask;
- bitfield_unit_val | mFillOpacitySource
- };
- let mStrokeOpacitySource =
- mStrokeOpacitySource as u32 as u8;
- let mask = 56usize as u8;
- let mStrokeOpacitySource =
- (mStrokeOpacitySource << 3usize) & mask;
- bitfield_unit_val | mStrokeOpacitySource
- };
- let mStrokeDasharrayFromObject =
- mStrokeDasharrayFromObject as u8 as u8;
- let mask = 64usize as u8;
- let mStrokeDasharrayFromObject =
- (mStrokeDasharrayFromObject << 6usize) & mask;
- bitfield_unit_val | mStrokeDasharrayFromObject
- };
- let mStrokeDashoffsetFromObject =
- mStrokeDashoffsetFromObject as u8 as u8;
- let mask = 128usize as u8;
- let mStrokeDashoffsetFromObject =
- (mStrokeDashoffsetFromObject << 7usize) & mask;
- bitfield_unit_val | mStrokeDashoffsetFromObject
+ ({
+ ({
+ ({
+ ({ 0 } |
+ ((mFillOpacitySource as u32 as u8) << 0usize) &
+ (7usize as u8))
+ } |
+ ((mStrokeOpacitySource as u32 as u8) << 3usize) &
+ (56usize as u8))
+ } |
+ ((mStrokeDasharrayFromObject as u8 as u8) << 6usize) &
+ (64usize as u8))
+ } |
+ ((mStrokeDashoffsetFromObject as u8 as u8) << 7usize) &
+ (128usize as u8))
}
#[inline]
pub fn mStrokeWidthFromObject(&self) -> bool {
@@ -289,11 +262,8 @@ impl Weird {
}
#[inline]
pub fn new_bitfield_3(mStrokeWidthFromObject: bool) -> u8 {
- let bitfield_unit_val = { 0 };
- let mStrokeWidthFromObject = mStrokeWidthFromObject as u8 as u8;
- let mask = 1usize as u8;
- let mStrokeWidthFromObject =
- (mStrokeWidthFromObject << 0usize) & mask;
- bitfield_unit_val | mStrokeWidthFromObject
+ ({ 0 } |
+ ((mStrokeWidthFromObject as u8 as u8) << 0usize) &
+ (1usize as u8))
}
}