mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
geckolib: reupdate bindings to allow easy union modifications
This commit updates the current bindings with a m-c trunk build. This improves quite a few things: * It adds `Debug` support for structs, which should be easy. * It generates unnamed structs definitions. * And... It allows changing union types directly! The way mutating a union works is as follows. Each union field has an unsized field of type `__BindgenUnionField<T>`, where `T` is the type of the field. The field has two unsafe methods, `as_ref` and `as_mut`, that would work as follows (assuming 64 bit pointers): ```` let u = nsStyleUnion { mInt: Default::default(), mFloat: Default::default(), mPointer: Default::default(), _bindgen_data_: 0, }; unsafe { assert_eq!(*u.mInt.as_ref() == 0); *u.mPointer.as_mut() = !0 as *mut _; assert_eq!(*u.mInt.as_ref() == !0); *u.mInt.as_mut() = 0; assert_eq!(*u.mInt.as_ref() == 0); assert_eq!(*u.mPointer.as_ref() == (!0 << 32) as *mut _); } ```
This commit is contained in:
parent
217e45006b
commit
c906d06d4e
1 changed files with 932 additions and 752 deletions
File diff suppressed because it is too large
Load diff
Loading…
Add table
Add a link
Reference in a new issue