mirror of
https://github.com/servo/servo.git
synced 2025-06-29 11:33:39 +01:00
Auto merge of #10484 - emilio:reupdate-stylo-bindings, r=bholley
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): ````rust 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 _); } ``` <!-- Reviewable:start --> --- This change is [<img src="https://reviewable.io/review_button.svg" height="35" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/10484) <!-- Reviewable:end -->
This commit is contained in:
commit
93c41fba69
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