mirror of
https://github.com/servo/servo.git
synced 2025-08-06 06:00:15 +01:00
Unify macros which generate binding codes.
This commit is contained in:
parent
02ef301770
commit
f08f44f8c6
1 changed files with 35 additions and 100 deletions
|
@ -11,89 +11,43 @@ use js::jsapi::{JSContext, JSObject, JSTracer};
|
||||||
// generate_cacheable_wrapper
|
// generate_cacheable_wrapper
|
||||||
macro_rules! generate_cacheable_wrapper(
|
macro_rules! generate_cacheable_wrapper(
|
||||||
($name: path, $wrap: path) => (
|
($name: path, $wrap: path) => (
|
||||||
impl Reflectable for $name {
|
generate_cacheable_wrapper_base!($name, $wrap, element)
|
||||||
fn reflector<'a>(&'a self) -> &'a Reflector {
|
|
||||||
self.element.reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
|
||||||
self.element.mut_reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
|
||||||
let mut unused = false;
|
|
||||||
$wrap(cx, scope, self, &mut unused)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_cacheable_wrapper_htmlelement(
|
macro_rules! generate_cacheable_wrapper_htmlelement(
|
||||||
($name: path, $wrap: path) => (
|
($name: path, $wrap: path) => (
|
||||||
impl Reflectable for $name {
|
generate_cacheable_wrapper_base!($name, $wrap, htmlelement)
|
||||||
fn reflector<'a>(&'a self) -> &'a Reflector {
|
|
||||||
self.htmlelement.reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
|
||||||
self.htmlelement.mut_reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
|
||||||
let mut unused = false;
|
|
||||||
$wrap(cx, scope, self, &mut unused)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_cacheable_wrapper_htmlmediaelement(
|
macro_rules! generate_cacheable_wrapper_htmlmediaelement(
|
||||||
($name: path, $wrap: path) => (
|
($name: path, $wrap: path) => (
|
||||||
impl Reflectable for $name {
|
generate_cacheable_wrapper_base!($name, $wrap, htmlmediaelement)
|
||||||
fn reflector<'a>(&'a self) -> &'a Reflector {
|
|
||||||
self.htmlmediaelement.reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
|
||||||
self.htmlmediaelement.mut_reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
|
||||||
let mut unused = false;
|
|
||||||
$wrap(cx, scope, self, &mut unused)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_cacheable_wrapper_htmltablecellelement(
|
macro_rules! generate_cacheable_wrapper_htmltablecellelement(
|
||||||
($name: path, $wrap: path) => (
|
($name: path, $wrap: path) => (
|
||||||
impl Reflectable for $name {
|
generate_cacheable_wrapper_base!($name, $wrap, htmltablecellelement)
|
||||||
fn reflector<'a>(&'a self) -> &'a Reflector {
|
|
||||||
self.htmltablecellelement.reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
|
||||||
self.htmltablecellelement.mut_reflector()
|
|
||||||
}
|
|
||||||
|
|
||||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
|
||||||
let mut unused = false;
|
|
||||||
$wrap(cx, scope, self, &mut unused)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_cacheable_wrapper_node(
|
macro_rules! generate_cacheable_wrapper_node(
|
||||||
($name: path, $wrap: path) => (
|
($name: path, $wrap: path) => (
|
||||||
|
generate_cacheable_wrapper_base!($name, $wrap, node)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
macro_rules! generate_cacheable_wrapper_base(
|
||||||
|
($name: path, $wrap: path, $parent: ident) => (
|
||||||
impl Reflectable for $name {
|
impl Reflectable for $name {
|
||||||
fn reflector<'a>(&'a self) -> &'a Reflector {
|
fn reflector<'a>(&'a self) -> &'a Reflector {
|
||||||
self.node.reflector()
|
self.$parent.reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
fn mut_reflector<'a>(&'a mut self) -> &'a mut Reflector {
|
||||||
self.node.mut_reflector()
|
self.$parent.mut_reflector()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
fn wrap_object_shared(@mut self, cx: *JSContext, scope: *JSObject) -> *JSObject {
|
||||||
|
@ -108,49 +62,39 @@ macro_rules! generate_cacheable_wrapper_node(
|
||||||
// generate_binding_object
|
// generate_binding_object
|
||||||
macro_rules! generate_binding_object(
|
macro_rules! generate_binding_object(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl BindingObject for $name {
|
generate_binding_base!($name, element)
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.element.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_binding_object_htmlelement(
|
macro_rules! generate_binding_object_htmlelement(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl BindingObject for $name {
|
generate_binding_base!($name, htmlelement)
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.htmlelement.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_binding_object_htmlmediaelement(
|
macro_rules! generate_binding_object_htmlmediaelement(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl BindingObject for $name {
|
generate_binding_base!($name, htmlmediaelement)
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.htmlmediaelement.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_binding_object_htmltablecellelement(
|
macro_rules! generate_binding_object_htmltablecellelement(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl BindingObject for $name {
|
generate_binding_base!($name, htmltablecellelement)
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
|
||||||
self.htmltablecellelement.GetParentObject(cx)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_binding_object_node(
|
macro_rules! generate_binding_object_node(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
|
generate_binding_base!($name, node)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
macro_rules! generate_binding_base(
|
||||||
|
($name: path, $parent: ident) => (
|
||||||
impl BindingObject for $name {
|
impl BindingObject for $name {
|
||||||
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
fn GetParentObject(&self, cx: *JSContext) -> Option<@mut Reflectable> {
|
||||||
self.node.GetParentObject(cx)
|
self.$parent.GetParentObject(cx)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
|
@ -160,54 +104,45 @@ macro_rules! generate_binding_object_node(
|
||||||
// generate_traceable
|
// generate_traceable
|
||||||
macro_rules! generate_traceable(
|
macro_rules! generate_traceable(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl Traceable for $name {
|
generate_traceable_base!($name, element)
|
||||||
fn trace(&self, trc: *mut JSTracer) {
|
|
||||||
self.element.trace(trc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_traceable_htmlelement(
|
macro_rules! generate_traceable_htmlelement(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl Traceable for $name {
|
generate_traceable_base!($name, htmlelement)
|
||||||
fn trace(&self, trc: *mut JSTracer) {
|
|
||||||
self.htmlelement.trace(trc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_traceable_htmlmediaelement(
|
macro_rules! generate_traceable_htmlmediaelement(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl Traceable for $name {
|
generate_traceable_base!($name, htmlmediaelement)
|
||||||
fn trace(&self, trc: *mut JSTracer) {
|
|
||||||
self.htmlmediaelement.trace(trc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_traceable_htmltablecellelement(
|
macro_rules! generate_traceable_htmltablecellelement(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
impl Traceable for $name {
|
generate_traceable_base!($name, htmltablecellelement)
|
||||||
fn trace(&self, trc: *mut JSTracer) {
|
|
||||||
self.htmltablecellelement.trace(trc);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
macro_rules! generate_traceable_node(
|
macro_rules! generate_traceable_node(
|
||||||
($name: path) => (
|
($name: path) => (
|
||||||
|
generate_traceable_base!($name, node)
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
macro_rules! generate_traceable_base(
|
||||||
|
($name: path, $parent: ident) => (
|
||||||
impl Traceable for $name {
|
impl Traceable for $name {
|
||||||
fn trace(&self, trc: *mut JSTracer) {
|
fn trace(&self, trc: *mut JSTracer) {
|
||||||
self.node.trace(trc);
|
self.$parent.trace(trc);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
generate_cacheable_wrapper!(Comment, CommentBinding::Wrap)
|
generate_cacheable_wrapper!(Comment, CommentBinding::Wrap)
|
||||||
generate_binding_object!(Comment)
|
generate_binding_object!(Comment)
|
||||||
generate_traceable!(Comment)
|
generate_traceable!(Comment)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue