Skip to content

Commit 71c6045

Browse files
committed
Handle RawGeckoElement and friends, add support for types which are used in both maybe-null and non-null forms
1 parent a7fe2c7 commit 71c6045

File tree

6 files changed

+260
-256
lines changed

6 files changed

+260
-256
lines changed

components/style/properties/gecko.mako.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use gecko_bindings::bindings::{Gecko_EnsureImageLayersLength, Gecko_CreateGradie
2424
use gecko_bindings::bindings::{Gecko_CopyImageValueFrom, Gecko_CopyFontFamilyFrom};
2525
use gecko_bindings::bindings::{Gecko_FontFamilyList_AppendGeneric, Gecko_FontFamilyList_AppendNamed};
2626
use gecko_bindings::bindings::{Gecko_FontFamilyList_Clear, Gecko_InitializeImageLayer};
27-
use gecko_bindings::bindings::ServoComputedValuesBorrowed;
27+
use gecko_bindings::bindings::ServoComputedValuesMaybeBorrowed;
2828
use gecko_bindings::structs;
2929
use gecko_bindings::sugar::ns_style_coord::{CoordDataValue, CoordData, CoordDataMut};
3030
use gecko_values::{StyleCoordHelpers, GeckoStyleCoordConvertible, convert_nscolor_to_rgba};
@@ -1712,8 +1712,8 @@ fn static_assert() {
17121712
<%def name="define_ffi_struct_accessor(style_struct)">
17131713
#[no_mangle]
17141714
#[allow(non_snake_case, unused_variables)]
1715-
pub extern "C" fn Servo_GetStyle${style_struct.gecko_name}(computed_values: ServoComputedValuesBorrowed)
1716-
-> *const ${style_struct.gecko_ffi_name} {
1715+
pub extern "C" fn Servo_GetStyle${style_struct.gecko_name}(computed_values:
1716+
ServoComputedValuesMaybeBorrowed) -> *const ${style_struct.gecko_ffi_name} {
17171717
computed_values.as_arc::<ComputedValues>().get_${style_struct.name_lower}().get_gecko()
17181718
as *const ${style_struct.gecko_ffi_name}
17191719
}

ports/geckolib/binding_tools/regen.py

Lines changed: 22 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -156,11 +156,15 @@
156156
],
157157
"servo_owned_types": [
158158
"RawServoStyleSet",
159-
"RawGeckoNode",
160159
],
161160
"servo_maybe_owned_types": [
162161
"ServoNodeData",
163162
],
163+
"servo_immutable_borrow_types": [
164+
"RawGeckoNode",
165+
"RawGeckoElement",
166+
"RawGeckoDocument",
167+
],
164168
},
165169

166170
"atoms": {
@@ -329,9 +333,19 @@ def build(objdir, target_name, debug, debugger, kind_name=None,
329333
flags.append("--raw-line")
330334
flags.append("pub type {0}Strong = ::sugar::ownership::Strong<{0}>;".format(ty))
331335
flags.append("--blacklist-type")
336+
flags.append("{}MaybeBorrowed".format(ty))
337+
flags.append("-raw-line")
338+
flags.append("pub type {0}MaybeBorrowed<'a> = ::sugar::ownership::Borrowed<'a, {0}>;".format(ty))
339+
if "servo_immutable_borrow_types" in current_target:
340+
for ty in current_target["servo_immutable_borrow_types"]:
341+
flags.append("-blacklist-type")
332342
flags.append("{}Borrowed".format(ty))
333343
flags.append("--raw-line")
334-
flags.append("pub type {0}Borrowed<'a> = ::sugar::ownership::Borrowed<'a, {0}>;".format(ty))
344+
flags.append("pub type {0}Borrowed<'a> = &'a {0};".format(ty))
345+
flags.append("--blacklist-type")
346+
flags.append("{}MaybeBorrowed".format(ty))
347+
flags.append("--raw-line")
348+
flags.append("pub type {0}MaybeBorrowed<'a> = ::sugar::ownership::Borrowed<'a, {0}>;".format(ty))
335349
if "servo_owned_types" in current_target:
336350
for ty in current_target["servo_owned_types"]:
337351
flags.append("--blacklist-type")
@@ -349,19 +363,19 @@ def build(objdir, target_name, debug, debugger, kind_name=None,
349363
if "servo_maybe_owned_types" in current_target:
350364
for ty in current_target["servo_maybe_owned_types"]:
351365
flags.append("--blacklist-type")
352-
flags.append("{}Borrowed".format(ty))
366+
flags.append("{}MaybeBorrowed".format(ty))
353367
flags.append("--raw-line")
354-
flags.append("pub type {0}Borrowed<'a> = ::sugar::ownership::Borrowed<'a, {0}>;"
368+
flags.append("pub type {0}MaybeBorrowed<'a> = ::sugar::ownership::Borrowed<'a, {0}>;"
355369
.format(ty))
356370
flags.append("--blacklist-type")
357-
flags.append("{}BorrowedMut".format(ty))
371+
flags.append("{}MaybeBorrowedMut".format(ty))
358372
flags.append("--raw-line")
359-
flags.append("pub type {0}BorrowedMut<'a> = ::sugar::ownership::BorrowedMut<'a, {0}>;"
373+
flags.append("pub type {0}MaybeBorrowedMut<'a> = ::sugar::ownership::BorrowedMut<'a, {0}>;"
360374
.format(ty))
361375
flags.append("--blacklist-type")
362-
flags.append("{}Owned".format(ty))
376+
flags.append("{}MaybeOwned".format(ty))
363377
flags.append("--raw-line")
364-
flags.append("pub type {0}Owned = ::sugar::ownership::MaybeOwned<{0}>;".format(ty))
378+
flags.append("pub type {0}MaybeOwned = ::sugar::ownership::MaybeOwned<{0}>;".format(ty))
365379
if "structs_types" in current_target:
366380
for ty in current_target["structs_types"]:
367381
ty_fragments = ty.split("::")

0 commit comments

Comments
 (0)