Add Rust APIs for interacting with Arc<String> (bug 1397971).

This commit is contained in:
Josh Matthews 2017-09-14 23:41:42 -04:00
parent 9dd0513647
commit 1a57bad2a1
5 changed files with 173 additions and 38 deletions

View file

@ -1851,17 +1851,52 @@ pub mod root {
pub vtable_: *const URLValueData__bindgen_vtable,
pub mRefCnt: root::mozilla::ThreadSafeAutoRefCnt,
pub mURI: root::nsMainThreadPtrHandle<root::nsIURI>,
pub mString: ::nsstring::nsStringRepr,
pub mExtraData: root::RefPtr<root::mozilla::URLExtraData>,
pub mURIResolved: bool,
pub mIsLocalRef: [u8; 2usize],
pub mMightHaveRef: [u8; 2usize],
pub mStrings: root::mozilla::css::URLValueData_RustOrGeckoString,
pub mUsingRustString: bool,
}
pub type URLValueData_HasThreadSafeRefCnt =
root::mozilla::TrueType;
#[repr(C)]
#[derive(Debug)]
pub struct URLValueData_RustOrGeckoString {
pub mString: root::__BindgenUnionField<::nsstring::nsStringRepr>,
pub mRustString: root::__BindgenUnionField<::gecko_bindings::structs::ServoRawOffsetArc<root::RustString>>,
pub bindgen_union_field: [u64; 2usize],
}
#[test]
fn bindgen_test_layout_URLValueData_RustOrGeckoString() {
assert_eq!(::std::mem::size_of::<URLValueData_RustOrGeckoString>()
, 16usize , concat ! (
"Size of: " , stringify ! (
URLValueData_RustOrGeckoString ) ));
assert_eq! (::std::mem::align_of::<URLValueData_RustOrGeckoString>()
, 8usize , concat ! (
"Alignment of " , stringify ! (
URLValueData_RustOrGeckoString ) ));
assert_eq! (unsafe {
& (
* ( 0 as * const URLValueData_RustOrGeckoString )
) . mString as * const _ as usize } , 0usize ,
concat ! (
"Alignment of field: " , stringify ! (
URLValueData_RustOrGeckoString ) , "::" ,
stringify ! ( mString ) ));
assert_eq! (unsafe {
& (
* ( 0 as * const URLValueData_RustOrGeckoString )
) . mRustString as * const _ as usize } , 0usize ,
concat ! (
"Alignment of field: " , stringify ! (
URLValueData_RustOrGeckoString ) , "::" ,
stringify ! ( mRustString ) ));
}
#[test]
fn bindgen_test_layout_URLValueData() {
assert_eq!(::std::mem::size_of::<URLValueData>() , 56usize ,
assert_eq!(::std::mem::size_of::<URLValueData>() , 64usize ,
concat ! (
"Size of: " , stringify ! ( URLValueData ) ));
assert_eq! (::std::mem::align_of::<URLValueData>() , 8usize ,
@ -1878,39 +1913,46 @@ pub mod root {
const _ as usize } , 16usize , concat ! (
"Alignment of field: " , stringify ! (
URLValueData ) , "::" , stringify ! ( mURI ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const URLValueData ) ) . mString as
* const _ as usize } , 24usize , concat ! (
"Alignment of field: " , stringify ! (
URLValueData ) , "::" , stringify ! ( mString )
));
assert_eq! (unsafe {
& ( * ( 0 as * const URLValueData ) ) . mExtraData
as * const _ as usize } , 40usize , concat ! (
as * const _ as usize } , 24usize , concat ! (
"Alignment of field: " , stringify ! (
URLValueData ) , "::" , stringify ! ( mExtraData )
));
assert_eq! (unsafe {
& ( * ( 0 as * const URLValueData ) ) .
mURIResolved as * const _ as usize } , 48usize ,
mURIResolved as * const _ as usize } , 32usize ,
concat ! (
"Alignment of field: " , stringify ! (
URLValueData ) , "::" , stringify ! ( mURIResolved
) ));
assert_eq! (unsafe {
& ( * ( 0 as * const URLValueData ) ) .
mIsLocalRef as * const _ as usize } , 49usize ,
mIsLocalRef as * const _ as usize } , 33usize ,
concat ! (
"Alignment of field: " , stringify ! (
URLValueData ) , "::" , stringify ! ( mIsLocalRef
) ));
assert_eq! (unsafe {
& ( * ( 0 as * const URLValueData ) ) .
mMightHaveRef as * const _ as usize } , 51usize ,
mMightHaveRef as * const _ as usize } , 35usize ,
concat ! (
"Alignment of field: " , stringify ! (
URLValueData ) , "::" , stringify ! (
mMightHaveRef ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const URLValueData ) ) . mStrings
as * const _ as usize } , 40usize , concat ! (
"Alignment of field: " , stringify ! (
URLValueData ) , "::" , stringify ! ( mStrings )
));
assert_eq! (unsafe {
& ( * ( 0 as * const URLValueData ) ) .
mUsingRustString as * const _ as usize } , 56usize
, concat ! (
"Alignment of field: " , stringify ! (
URLValueData ) , "::" , stringify ! (
mUsingRustString ) ));
}
#[repr(C)]
#[derive(Debug)]
@ -1919,7 +1961,7 @@ pub mod root {
}
#[test]
fn bindgen_test_layout_URLValue() {
assert_eq!(::std::mem::size_of::<URLValue>() , 56usize ,
assert_eq!(::std::mem::size_of::<URLValue>() , 64usize ,
concat ! ( "Size of: " , stringify ! ( URLValue )
));
assert_eq! (::std::mem::align_of::<URLValue>() , 8usize ,
@ -1935,7 +1977,7 @@ pub mod root {
}
#[test]
fn bindgen_test_layout_ImageValue() {
assert_eq!(::std::mem::size_of::<ImageValue>() , 112usize ,
assert_eq!(::std::mem::size_of::<ImageValue>() , 120usize ,
concat ! ( "Size of: " , stringify ! ( ImageValue )
));
assert_eq! (::std::mem::align_of::<ImageValue>() , 8usize ,
@ -1943,12 +1985,12 @@ pub mod root {
"Alignment of " , stringify ! ( ImageValue ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const ImageValue ) ) . mRequests as
* const _ as usize } , 56usize , concat ! (
* const _ as usize } , 64usize , concat ! (
"Alignment of field: " , stringify ! ( ImageValue
) , "::" , stringify ! ( mRequests ) ));
assert_eq! (unsafe {
& ( * ( 0 as * const ImageValue ) ) . mLoadedImage
as * const _ as usize } , 104usize , concat ! (
as * const _ as usize } , 112usize , concat ! (
"Alignment of field: " , stringify ! ( ImageValue
) , "::" , stringify ! ( mLoadedImage ) ));
}
@ -30038,6 +30080,11 @@ pub mod root {
} | ((mHadDispatch as u8 as u8) << 6usize) & (64u64 as u8))
}
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct RustString {
_unused: [u8; 0],
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum nsCSSUnit {