aboutsummaryrefslogtreecommitdiffstats
path: root/components/script/dom/macros.rs
diff options
context:
space:
mode:
authorTetsuharu OHZEKI <saneyuki.snyk@gmail.com>2014-10-23 02:28:09 +0900
committerTetsuharu OHZEKI <saneyuki.snyk@gmail.com>2014-10-23 13:03:58 +0900
commit0a84c5d479626fa95d8ca497a8150ed299dc73eb (patch)
treedac291a2ec058e92d59abcdc087e16548535379a /components/script/dom/macros.rs
parent22d6aaf36980cdcb0202acc2576dfe742aafe885 (diff)
downloadservo-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.rs26
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)
+ )
+)