mirror of
https://github.com/servo/servo.git
synced 2025-08-05 13:40:08 +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): ````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 --> |
||
---|---|---|
.. | ||
cef | ||
geckolib | ||
glutin | ||
gonk |