diff options
author | Anthony Ramine <n.oxyde@gmail.com> | 2015-10-06 17:21:44 +0200 |
---|---|---|
committer | Anthony Ramine <n.oxyde@gmail.com> | 2015-10-21 11:37:16 +0200 |
commit | 13ea3ac413c511872784ccde416956217746553c (patch) | |
tree | 732335bbc9a5e4b42f93a0b629c76ad41cd8aa3f /components/script/dom/virtualmethods.rs | |
parent | bd363b009db8e5e233cd862aef5c8d497495a10e (diff) | |
download | servo-13ea3ac413c511872784ccde416956217746553c.tar.gz servo-13ea3ac413c511872784ccde416956217746553c.zip |
Introduce trait Castable
This trait is used to hold onto the downcast and upcast functions of all
castable IDL interfaces. A castable IDL interface is one which either derives
from or is derived by other interfaces.
The deriving relation is represented by implementations of marker trait
DerivedFrom<T: Castable> generated in InheritTypes.
/^[ ]*use dom::bindings::codegen::InheritTypes::.*(Base|Cast|Derived)/ {
/::[a-zA-Z]+(Base|Cast|Derived);/d
s/([{ ])[a-zA-Z]+(Base|Cast|Derived), /\1/g
s/([{ ])[a-zA-Z]+(Base|Cast|Derived), /\1/g
s/, [a-zA-Z]+(Base|Cast|Derived)([},])/\2/g
s/, [a-zA-Z]+(Base|Cast|Derived)([},])/\2/g
/\{([a-zA-Z]+(Base|Cast|Derived))?\};$/d
s/\{([a-zA-Z_]+)\};$/\1;/
}
s/([a-zA-Z]+)Cast::from_ref\(\&?\**([a-zA-Z_]+)(\.r\(\))?\)/\2.upcast::<\1>()/g
s/([a-zA-Z]+)Cast::from_ref\(\&?\**([a-zA-Z_]+)(\.[a-zA-Z_]+\(\))?\)/\2\3.upcast::<\1>()/g
s/\(([a-zA-Z]+)Cast::from_ref\)/\(Castable::upcast::<\1>\)/g
s/([a-zA-Z]+)Cast::from_root/Root::upcast::<\1>/g
s/([a-zA-Z]+)Cast::from_layout_js\(\&([a-zA-Z_.]+)\)/\2.upcast::<\1>()/g
s/([a-zA-Z]+)Cast::to_ref\(\&?\**([a-zA-Z_]+)(\.r\(\))?\)/\2.downcast::<\1>()/g
s/([a-zA-Z]+)Cast::to_ref\(\&?\**([a-zA-Z_]+)(\.[a-zA-Z_]+\(\))?\)/\2\3.downcast::<\1>()/g
s/\(([a-zA-Z]+)Cast::to_ref\)/\(Castable::downcast::<\1>\)/g
s/([a-zA-Z]+)Cast::to_root/Root::downcast::<\1>/g
s/([a-zA-Z]+)Cast::to_layout_js\(&?([a-zA-Z_.]+(\(\))?)\)/\2.downcast::<\1>()/g
s/\.is_document\(\)/.is::<Document>()/g
s/\.is_htmlanchorelement\(\)/.is::<HTMLAnchorElement>()/g
s/\.is_htmlappletelement\(\)/.is::<HTMLAppletElement>()/g
s/\.is_htmlareaelement\(\)/.is::<HTMLAreaElement>()/g
s/\.is_htmlbodyelement\(\)/.is::<HTMLBodyElement>()/g
s/\.is_htmlembedelement\(\)/.is::<HTMLEmbedElement>()/g
s/\.is_htmlfieldsetelement\(\)/.is::<HTMLFieldSetElement>()/g
s/\.is_htmlformelement\(\)/.is::<HTMLFormElement>()/g
s/\.is_htmlframesetelement\(\)/.is::<HTMLFrameSetElement>()/g
s/\.is_htmlhtmlelement\(\)/.is::<HTMLHtmlElement>()/g
s/\.is_htmlimageelement\(\)/.is::<HTMLImageElement>()/g
s/\.is_htmllegendelement\(\)/.is::<HTMLLegendElement>()/g
s/\.is_htmloptgroupelement\(\)/.is::<HTMLOptGroupElement>()/g
s/\.is_htmloptionelement\(\)/.is::<HTMLOptionElement>()/g
s/\.is_htmlscriptelement\(\)/.is::<HTMLScriptElement>()/g
s/\.is_htmltabledatacellelement\(\)/.is::<HTMLTableDataCellElement>()/g
s/\.is_htmltableheadercellelement\(\)/.is::<HTMLTableHeaderCellElement>()/g
s/\.is_htmltablerowelement\(\)/.is::<HTMLTableRowElement>()/g
s/\.is_htmltablesectionelement\(\)/.is::<HTMLTableSectionElement>()/g
s/\.is_htmltitleelement\(\)/.is::<HTMLTitleElement>()/g
Diffstat (limited to 'components/script/dom/virtualmethods.rs')
-rw-r--r-- | components/script/dom/virtualmethods.rs | 126 |
1 files changed, 63 insertions, 63 deletions
diff --git a/components/script/dom/virtualmethods.rs b/components/script/dom/virtualmethods.rs index 5c990e8a1de..95a40df6f6c 100644 --- a/components/script/dom/virtualmethods.rs +++ b/components/script/dom/virtualmethods.rs @@ -3,43 +3,43 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ use dom::attr::{Attr, AttrValue}; -use dom::bindings::codegen::InheritTypes::ElementCast; use dom::bindings::codegen::InheritTypes::ElementTypeId; -use dom::bindings::codegen::InheritTypes::HTMLAnchorElementCast; -use dom::bindings::codegen::InheritTypes::HTMLAppletElementCast; -use dom::bindings::codegen::InheritTypes::HTMLAreaElementCast; -use dom::bindings::codegen::InheritTypes::HTMLBaseElementCast; -use dom::bindings::codegen::InheritTypes::HTMLBodyElementCast; -use dom::bindings::codegen::InheritTypes::HTMLButtonElementCast; -use dom::bindings::codegen::InheritTypes::HTMLCanvasElementCast; -use dom::bindings::codegen::InheritTypes::HTMLElementCast; use dom::bindings::codegen::InheritTypes::HTMLElementTypeId; -use dom::bindings::codegen::InheritTypes::HTMLFieldSetElementCast; -use dom::bindings::codegen::InheritTypes::HTMLFontElementCast; -use dom::bindings::codegen::InheritTypes::HTMLFormElementCast; -use dom::bindings::codegen::InheritTypes::HTMLHeadElementCast; -use dom::bindings::codegen::InheritTypes::HTMLIFrameElementCast; -use dom::bindings::codegen::InheritTypes::HTMLImageElementCast; -use dom::bindings::codegen::InheritTypes::HTMLInputElementCast; -use dom::bindings::codegen::InheritTypes::HTMLLinkElementCast; -use dom::bindings::codegen::InheritTypes::HTMLMetaElementCast; -use dom::bindings::codegen::InheritTypes::HTMLObjectElementCast; -use dom::bindings::codegen::InheritTypes::HTMLOptGroupElementCast; -use dom::bindings::codegen::InheritTypes::HTMLOptionElementCast; -use dom::bindings::codegen::InheritTypes::HTMLScriptElementCast; -use dom::bindings::codegen::InheritTypes::HTMLSelectElementCast; -use dom::bindings::codegen::InheritTypes::HTMLStyleElementCast; -use dom::bindings::codegen::InheritTypes::HTMLTableCellElementCast; -use dom::bindings::codegen::InheritTypes::HTMLTableElementCast; -use dom::bindings::codegen::InheritTypes::HTMLTableRowElementCast; -use dom::bindings::codegen::InheritTypes::HTMLTableSectionElementCast; -use dom::bindings::codegen::InheritTypes::HTMLTemplateElementCast; -use dom::bindings::codegen::InheritTypes::HTMLTextAreaElementCast; -use dom::bindings::codegen::InheritTypes::HTMLTitleElementCast; use dom::bindings::codegen::InheritTypes::NodeTypeId; +use dom::bindings::conversions::Castable; use dom::document::Document; -use dom::element::AttributeMutation; +use dom::element::{AttributeMutation, Element}; use dom::event::Event; +use dom::htmlanchorelement::HTMLAnchorElement; +use dom::htmlappletelement::HTMLAppletElement; +use dom::htmlareaelement::HTMLAreaElement; +use dom::htmlbaseelement::HTMLBaseElement; +use dom::htmlbodyelement::HTMLBodyElement; +use dom::htmlbuttonelement::HTMLButtonElement; +use dom::htmlcanvaselement::HTMLCanvasElement; +use dom::htmlelement::HTMLElement; +use dom::htmlfieldsetelement::HTMLFieldSetElement; +use dom::htmlfontelement::HTMLFontElement; +use dom::htmlformelement::HTMLFormElement; +use dom::htmlheadelement::HTMLHeadElement; +use dom::htmliframeelement::HTMLIFrameElement; +use dom::htmlimageelement::HTMLImageElement; +use dom::htmlinputelement::HTMLInputElement; +use dom::htmllinkelement::HTMLLinkElement; +use dom::htmlmetaelement::HTMLMetaElement; +use dom::htmlobjectelement::HTMLObjectElement; +use dom::htmloptgroupelement::HTMLOptGroupElement; +use dom::htmloptionelement::HTMLOptionElement; +use dom::htmlscriptelement::HTMLScriptElement; +use dom::htmlselectelement::HTMLSelectElement; +use dom::htmlstyleelement::HTMLStyleElement; +use dom::htmltablecellelement::HTMLTableCellElement; +use dom::htmltableelement::HTMLTableElement; +use dom::htmltablerowelement::HTMLTableRowElement; +use dom::htmltablesectionelement::HTMLTableSectionElement; +use dom::htmltemplateelement::HTMLTemplateElement; +use dom::htmltextareaelement::HTMLTextAreaElement; +use dom::htmltitleelement::HTMLTitleElement; use dom::node::{ChildrenMutation, CloneChildrenFlag, Node}; use string_cache::Atom; use util::str::DOMString; @@ -123,130 +123,130 @@ pub trait VirtualMethods { pub fn vtable_for(node: &Node) -> &VirtualMethods { match node.type_id() { NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAnchorElement)) => { - let element = HTMLAnchorElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLAnchorElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAppletElement)) => { - HTMLAppletElementCast::to_ref(node).unwrap() as &VirtualMethods + node.downcast::<HTMLAppletElement>().unwrap() as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLAreaElement)) => { - let element = HTMLAreaElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLAreaElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLBaseElement)) => { - let element = HTMLBaseElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLBaseElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLBodyElement)) => { - let element = HTMLBodyElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLBodyElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLButtonElement)) => { - let element = HTMLButtonElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLButtonElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLCanvasElement)) => { - let element = HTMLCanvasElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLCanvasElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFieldSetElement)) => { - let element = HTMLFieldSetElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLFieldSetElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFontElement)) => { - let element = HTMLFontElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLFontElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLFormElement)) => { - let element = HTMLFormElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLFormElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLHeadElement)) => { - let element = HTMLHeadElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLHeadElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLImageElement)) => { - let element = HTMLImageElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLImageElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLIFrameElement)) => { - let element = HTMLIFrameElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLIFrameElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLInputElement)) => { - let element = HTMLInputElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLInputElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLLinkElement)) => { - let element = HTMLLinkElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLLinkElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLMetaElement)) => { - let element = HTMLMetaElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLMetaElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLObjectElement)) => { - let element = HTMLObjectElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLObjectElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLOptGroupElement)) => { - let element = HTMLOptGroupElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLOptGroupElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLOptionElement)) => { - let element = HTMLOptionElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLOptionElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLScriptElement)) => { - let element = HTMLScriptElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLScriptElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLSelectElement)) => { - let element = HTMLSelectElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLSelectElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLStyleElement)) => { - let element = HTMLStyleElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLStyleElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableElement)) => { let element = - HTMLTableElementCast::to_ref(node).unwrap(); + node.downcast::<HTMLTableElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableCellElement(_))) => { let element = - HTMLTableCellElementCast::to_ref(node).unwrap(); + node.downcast::<HTMLTableCellElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableRowElement)) => { let element = - HTMLTableRowElementCast::to_ref(node).unwrap(); + node.downcast::<HTMLTableRowElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTableSectionElement)) => { let element = - HTMLTableSectionElementCast::to_ref(node).unwrap(); + node.downcast::<HTMLTableSectionElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTemplateElement)) => { - HTMLTemplateElementCast::to_ref(node).unwrap() as &VirtualMethods + node.downcast::<HTMLTemplateElement>().unwrap() as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTextAreaElement)) => { - let element = HTMLTextAreaElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLTextAreaElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::HTMLElement(HTMLElementTypeId::HTMLTitleElement)) => { let element = - HTMLTitleElementCast::to_ref(node).unwrap(); + node.downcast::<HTMLTitleElement>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(ElementTypeId::Element) => { - let element = ElementCast::to_ref(node).unwrap(); + let element = node.downcast::<Element>().unwrap(); element as &VirtualMethods } NodeTypeId::Element(_) => { - let element = HTMLElementCast::to_ref(node).unwrap(); + let element = node.downcast::<HTMLElement>().unwrap(); element as &VirtualMethods } _ => { |