diff options
author | Tetsuharu OHZEKI <saneyuki.snyk@gmail.com> | 2014-10-23 02:28:09 +0900 |
---|---|---|
committer | Tetsuharu OHZEKI <saneyuki.snyk@gmail.com> | 2014-10-23 13:03:58 +0900 |
commit | 0a84c5d479626fa95d8ca497a8150ed299dc73eb (patch) | |
tree | dac291a2ec058e92d59abcdc087e16548535379a /components/script/dom/macros.rs | |
parent | 22d6aaf36980cdcb0202acc2576dfe742aafe885 (diff) | |
download | servo-0a84c5d479626fa95d8ca497a8150ed299dc73eb.tar.gz servo-0a84c5d479626fa95d8ca497a8150ed299dc73eb.zip |
Macroize event handler getters and setters.
Diffstat (limited to 'components/script/dom/macros.rs')
-rw-r--r-- | components/script/dom/macros.rs | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/components/script/dom/macros.rs b/components/script/dom/macros.rs index b0aba98c7d6..db2d83246ce 100644 --- a/components/script/dom/macros.rs +++ b/components/script/dom/macros.rs @@ -185,3 +185,29 @@ macro_rules! untraceable( ); ) +/// 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) => ( + fn $getter(self) -> Option<$handler> { + let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self); + eventtarget.get_event_handler_common(stringify!($event_type)) + } + + fn $setter(self, listener: Option<$handler>) { + let eventtarget: JSRef<EventTarget> = EventTargetCast::from_ref(self); + eventtarget.set_event_handler_common(stringify!($event_type), listener) + } + ) +) + +macro_rules! event_handler( + ($event_type: ident, $getter: ident, $setter: ident) => ( + define_event_handler!(EventHandlerNonNull, $event_type, $getter, $setter) + ) +) + +macro_rules! error_event_handler( + ($event_type: ident, $getter: ident, $setter: ident) => ( + define_event_handler!(OnErrorEventHandlerNonNull, $event_type, $getter, $setter) + ) +) |