diff options
author | Josh Matthews <josh@joshmatthews.net> | 2013-07-31 19:25:13 -0400 |
---|---|---|
committer | Josh Matthews <josh@joshmatthews.net> | 2013-08-05 11:29:12 -0400 |
commit | e2468160b5a9ca792a54c1a1c66c6943a57d6cb0 (patch) | |
tree | bdd222296644702e2df7f48016cf3980f0530566 /src/components/script/dom/bindings/node.rs | |
parent | 9a545b13c385a73c63e5eda59ba8bda6842955c0 (diff) | |
download | servo-e2468160b5a9ca792a54c1a1c66c6943a57d6cb0.tar.gz servo-e2468160b5a9ca792a54c1a1c66c6943a57d6cb0.zip |
Generate HTMLHtmlElement bindings.
Diffstat (limited to 'src/components/script/dom/bindings/node.rs')
-rw-r--r-- | src/components/script/dom/bindings/node.rs | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/src/components/script/dom/bindings/node.rs b/src/components/script/dom/bindings/node.rs index 6ca2e61d6aa..a8e5b78e7e8 100644 --- a/src/components/script/dom/bindings/node.rs +++ b/src/components/script/dom/bindings/node.rs @@ -6,7 +6,8 @@ use dom::bindings::element; use dom::bindings::text; use dom::bindings::utils; use dom::bindings::utils::{CacheableWrapper, WrapperCache, DerivedWrapper}; -use dom::element::{HTMLHeadElementTypeId, HTMLHeadElement}; +use dom::element::{HTMLHeadElementTypeId, HTMLHtmlElementTypeId}; +use dom::element::{HTMLHeadElement, HTMLHtmlElement}; use dom::node::{AbstractNode, Node, ElementNodeTypeId, TextNodeTypeId, CommentNodeTypeId}; use dom::node::{DoctypeNodeTypeId, ScriptView, Text}; @@ -62,13 +63,18 @@ pub fn init(compartment: @mut Compartment) { } } +macro_rules! generate_element( + ($name: ident) => ({ + let node: @mut $name = unsafe { cast::transmute(node.raw_object()) }; + node.wrap_object_shared(cx, ptr::null()) + }) +) + #[allow(non_implicitly_copyable_typarams)] pub fn create(cx: *JSContext, node: &mut AbstractNode<ScriptView>) -> *JSObject { match node.type_id() { - ElementNodeTypeId(HTMLHeadElementTypeId) => { - let node: @mut HTMLHeadElement = unsafe { cast::transmute(node.raw_object()) }; - node.wrap_object_shared(cx, ptr::null()) - } + ElementNodeTypeId(HTMLHeadElementTypeId) => generate_element!(HTMLHeadElement), + ElementNodeTypeId(HTMLHtmlElementTypeId) => generate_element!(HTMLHtmlElement), ElementNodeTypeId(_) => element::create(cx, node).ptr, CommentNodeTypeId | DoctypeNodeTypeId => text::create(cx, node).ptr, |