aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/macros.rs
diff options
context:
space:
mode:
authorAnthony Ramine <n.oxyde@gmail.com>2016-12-06 12:40:46 -1000
committerAnthony Ramine <n.oxyde@gmail.com>2016-12-06 13:15:18 -1000
commit535765907d667466636e0fcaa9a7c6a078cf397d (patch)
treea19db00687e3187a49e4e811f6148cee7ea799c5 /components/script/dom/macros.rs
parentf20361179ddf2bd008e6ba29196a07663434018c (diff)
downloadservo-535765907d667466636e0fcaa9a7c6a078cf397d.tar.gz
servo-535765907d667466636e0fcaa9a7c6a078cf397d.zip
Introduce jsmanaged_array
Diffstat (limited to 'components/script/dom/macros.rs')
-rw-r--r--components/script/dom/macros.rs25
1 files changed, 16 insertions, 9 deletions
diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs
index 2eab30d3fd0..99b06bae39d 100644
--- a/components/script/dom/macros.rs
+++ b/components/script/dom/macros.rs
@@ -303,15 +303,6 @@ macro_rules! make_nonzero_dimension_setter(
/// For use on non-jsmanaged types
/// Use #[derive(JSTraceable)] on JS managed types
macro_rules! unsafe_no_jsmanaged_fields(
- ([$ty:ident; $count:expr]) => (
- #[allow(unsafe_code)]
- unsafe impl $crate::dom::bindings::trace::JSTraceable for [$ty; $count] {
- #[inline]
- unsafe fn trace(&self, _: *mut ::js::jsapi::JSTracer) {
- // Do nothing
- }
- }
- );
($($ty:ident),+) => (
$(
#[allow(unsafe_code)]
@@ -325,6 +316,22 @@ macro_rules! unsafe_no_jsmanaged_fields(
);
);
+macro_rules! jsmanaged_array(
+ ($count:expr) => (
+ #[allow(unsafe_code)]
+ unsafe impl<T> $crate::dom::bindings::trace::JSTraceable for [T; $count]
+ where T: $crate::dom::bindings::trace::JSTraceable
+ {
+ #[inline]
+ unsafe fn trace(&self, tracer: *mut ::js::jsapi::JSTracer) {
+ for v in self.iter() {
+ v.trace(tracer);
+ }
+ }
+ }
+ );
+);
+
/// These are used to generate a event handler which has no special case.
macro_rules! define_event_handler(
($handler: ident, $event_type: ident, $getter: ident, $setter: ident, $setter_fn: ident) => (