servo: Merge #2325 - Use default methods to reduce code duplication for TestBinding (from Ms2ger:testbinding-default); r=jdm

Source-Repo: https://github.com/servo/servo
Source-Revision: b14b2eca372ea91dc40af66b1f8a9cd510c37abf
This commit is contained in:
Ms2ger 2014-05-05 15:58:10 -04:00
Родитель 24d211ff8e
Коммит 3e4cec4ec3
1 изменённых файлов: 13 добавлений и 188 удалений

Просмотреть файл

@ -23,186 +23,6 @@ pub struct TestBinding {
}
pub trait TestBindingMethods {
fn BooleanAttribute(&self) -> bool;
fn SetBooleanAttribute(&self, _: bool);
fn ByteAttribute(&self) -> i8;
fn SetByteAttribute(&self, _: i8);
fn OctetAttribute(&self) -> u8;
fn SetOctetAttribute(&self, _: u8);
fn ShortAttribute(&self) -> i16;
fn SetShortAttribute(&self, _: i16);
fn UnsignedShortAttribute(&self) -> u16;
fn SetUnsignedShortAttribute(&self, _: u16);
fn LongAttribute(&self) -> i32;
fn SetLongAttribute(&self, _: i32);
fn UnsignedLongAttribute(&self) -> u32;
fn SetUnsignedLongAttribute(&self, _: u32);
fn LongLongAttribute(&self) -> i64;
fn SetLongLongAttribute(&self, _: i64);
fn UnsignedLongLongAttribute(&self) -> u64;
fn SetUnsignedLongLongAttribute(&self, _: u64);
fn FloatAttribute(&self) -> f32;
fn SetFloatAttribute(&self, _: f32);
fn DoubleAttribute(&self) -> f64;
fn SetDoubleAttribute(&self, _: f64);
fn StringAttribute(&self) -> DOMString;
fn SetStringAttribute(&self, _: DOMString);
fn ByteStringAttribute(&self) -> ByteString;
fn SetByteStringAttribute(&self, _: ByteString);
fn EnumAttribute(&self) -> TestEnum;
fn SetEnumAttribute(&self, _: TestEnum);
fn InterfaceAttribute(&self) -> Temporary<Blob>;
fn SetInterfaceAttribute(&self, _: &JSRef<Blob>);
fn AnyAttribute(&self, _: *JSContext) -> JSVal;
fn SetAnyAttribute(&self, _: *JSContext, _: JSVal);
fn GetBooleanAttributeNullable(&self) -> Option<bool>;
fn SetBooleanAttributeNullable(&self, _: Option<bool>);
fn GetByteAttributeNullable(&self) -> Option<i8>;
fn SetByteAttributeNullable(&self, _: Option<i8>);
fn GetOctetAttributeNullable(&self) -> Option<u8>;
fn SetOctetAttributeNullable(&self, _: Option<u8>);
fn GetShortAttributeNullable(&self) -> Option<i16>;
fn SetShortAttributeNullable(&self, _: Option<i16>);
fn GetUnsignedShortAttributeNullable(&self) -> Option<u16>;
fn SetUnsignedShortAttributeNullable(&self, _: Option<u16>);
fn GetLongAttributeNullable(&self) -> Option<i32>;
fn SetLongAttributeNullable(&self, _: Option<i32>);
fn GetUnsignedLongAttributeNullable(&self) -> Option<u32>;
fn SetUnsignedLongAttributeNullable(&self, _: Option<u32>);
fn GetLongLongAttributeNullable(&self) -> Option<i64>;
fn SetLongLongAttributeNullable(&self, _: Option<i64>);
fn GetUnsignedLongLongAttributeNullable(&self) -> Option<u64>;
fn SetUnsignedLongLongAttributeNullable(&self, _: Option<u64>);
fn GetFloatAttributeNullable(&self) -> Option<f32>;
fn SetFloatAttributeNullable(&self, _: Option<f32>);
fn GetDoubleAttributeNullable(&self) -> Option<f64>;
fn SetDoubleAttributeNullable(&self, _: Option<f64>);
fn GetByteStringAttributeNullable(&self) -> Option<ByteString>;
fn SetByteStringAttributeNullable(&self, _: Option<ByteString>);
fn GetStringAttributeNullable(&self) -> Option<DOMString>;
fn SetStringAttributeNullable(&self, _: Option<DOMString>);
fn GetEnumAttributeNullable(&self) -> Option<TestEnum>;
fn GetInterfaceAttributeNullable(&self) -> Option<Temporary<Blob>>;
fn SetInterfaceAttributeNullable(&self, _: Option<JSRef<Blob>>);
fn PassBoolean(&self, _: bool);
fn PassByte(&self, _: i8);
fn PassOctet(&self, _: u8);
fn PassShort(&self, _: i16);
fn PassUnsignedShort(&self, _: u16);
fn PassLong(&self, _: i32);
fn PassUnsignedLong(&self, _: u32);
fn PassLongLong(&self, _: i64);
fn PassUnsignedLongLong(&self, _: u64);
fn PassFloat(&self, _: f32);
fn PassDouble(&self, _: f64);
fn PassString(&self, _: DOMString);
fn PassByteString(&self, _: ByteString);
fn PassEnum(&self, _: TestEnum);
fn PassInterface(&self, _: &JSRef<Blob>);
fn PassUnion(&self, _: HTMLElementOrLong);
fn PassAny(&self, _: *JSContext, _: JSVal);
fn PassNullableBoolean(&self, _: Option<bool>);
fn PassNullableByte(&self, _: Option<i8>);
fn PassNullableOctet(&self, _: Option<u8>);
fn PassNullableShort(&self, _: Option<i16>);
fn PassNullableUnsignedShort(&self, _: Option<u16>);
fn PassNullableLong(&self, _: Option<i32>);
fn PassNullableUnsignedLong(&self, _: Option<u32>);
fn PassNullableLongLong(&self, _: Option<i64>);
fn PassNullableUnsignedLongLong(&self, _: Option<u64>);
fn PassNullableFloat(&self, _: Option<f32>);
fn PassNullableDouble(&self, _: Option<f64>);
fn PassNullableString(&self, _: Option<DOMString>);
fn PassNullableByteString(&self, _: Option<ByteString>) {}
// fn PassNullableEnum(&self, _: Option<TestEnum>);
fn PassNullableInterface(&self, _: Option<JSRef<Blob>>);
fn PassNullableUnion(&self, _: Option<HTMLElementOrLong>);
fn PassNullableAny(&self, _: *JSContext, _: Option<JSVal>);
fn PassOptionalBoolean(&self, _: Option<bool>);
fn PassOptionalByte(&self, _: Option<i8>);
fn PassOptionalOctet(&self, _: Option<u8>);
fn PassOptionalShort(&self, _: Option<i16>);
fn PassOptionalUnsignedShort(&self, _: Option<u16>);
fn PassOptionalLong(&self, _: Option<i32>);
fn PassOptionalUnsignedLong(&self, _: Option<u32>);
fn PassOptionalLongLong(&self, _: Option<i64>);
fn PassOptionalUnsignedLongLong(&self, _: Option<u64>);
fn PassOptionalFloat(&self, _: Option<f32>);
fn PassOptionalDouble(&self, _: Option<f64>);
fn PassOptionalString(&self, _: Option<DOMString>);
fn PassOptionalByteString(&self, _: Option<ByteString>) {}
fn PassOptionalEnum(&self, _: Option<TestEnum>);
fn PassOptionalInterface(&self, _: Option<JSRef<Blob>>);
fn PassOptionalUnion(&self, _: Option<HTMLElementOrLong>);
fn PassOptionalAny(&self, _: *JSContext, _: Option<JSVal>);
fn PassOptionalNullableBoolean(&self, _: Option<Option<bool>>);
fn PassOptionalNullableByte(&self, _: Option<Option<i8>>);
fn PassOptionalNullableOctet(&self, _: Option<Option<u8>>);
fn PassOptionalNullableShort(&self, _: Option<Option<i16>>);
fn PassOptionalNullableUnsignedShort(&self, _: Option<Option<u16>>);
fn PassOptionalNullableLong(&self, _: Option<Option<i32>>);
fn PassOptionalNullableUnsignedLong(&self, _: Option<Option<u32>>);
fn PassOptionalNullableLongLong(&self, _: Option<Option<i64>>);
fn PassOptionalNullableUnsignedLongLong(&self, _: Option<Option<u64>>);
fn PassOptionalNullableFloat(&self, _: Option<Option<f32>>);
fn PassOptionalNullableDouble(&self, _: Option<Option<f64>>);
fn PassOptionalNullableString(&self, _: Option<Option<DOMString>>);
fn PassOptionalNullableByteString(&self, _: Option<Option<ByteString>>) {}
// fn PassOptionalNullableEnum(&self, _: Option<Option<TestEnum>>);
fn PassOptionalNullableInterface(&self, _: Option<Option<JSRef<Blob>>>);
fn PassOptionalNullableUnion(&self, _: Option<Option<HTMLElementOrLong>>);
fn PassOptionalBooleanWithDefault(&self, _: bool);
fn PassOptionalByteWithDefault(&self, _: i8);
fn PassOptionalOctetWithDefault(&self, _: u8);
fn PassOptionalShortWithDefault(&self, _: i16);
fn PassOptionalUnsignedShortWithDefault(&self, _: u16);
fn PassOptionalLongWithDefault(&self, _: i32);
fn PassOptionalUnsignedLongWithDefault(&self, _: u32);
fn PassOptionalLongLongWithDefault(&self, _: i64);
fn PassOptionalUnsignedLongLongWithDefault(&self, _: u64);
fn PassOptionalStringWithDefault(&self, _: DOMString);
fn PassOptionalEnumWithDefault(&self, _: TestEnum);
fn PassOptionalNullableBooleanWithDefault(&self, _: Option<bool>);
fn PassOptionalNullableByteWithDefault(&self, _: Option<i8>);
fn PassOptionalNullableOctetWithDefault(&self, _: Option<u8>);
fn PassOptionalNullableShortWithDefault(&self, _: Option<i16>);
fn PassOptionalNullableUnsignedShortWithDefault(&self, _: Option<u16>);
fn PassOptionalNullableLongWithDefault(&self, _: Option<i32>);
fn PassOptionalNullableUnsignedLongWithDefault(&self, _: Option<u32>);
fn PassOptionalNullableLongLongWithDefault(&self, _: Option<i64>);
fn PassOptionalNullableUnsignedLongLongWithDefault(&self, _: Option<u64>);
fn PassOptionalNullableFloatWithDefault(&self, _: Option<f32>);
fn PassOptionalNullableDoubleWithDefault(&self, _: Option<f64>);
fn PassOptionalNullableStringWithDefault(&self, _: Option<DOMString>);
fn PassOptionalNullableByteStringWithDefault(&self, _: Option<ByteString>) {}
// fn PassOptionalNullableEnumWithDefault(&self, _: Option<TestEnum>);
fn PassOptionalNullableInterfaceWithDefault(&self, _: Option<JSRef<Blob>>);
fn PassOptionalNullableUnionWithDefault(&self, _: Option<HTMLElementOrLong>);
fn PassOptionalAnyWithDefault(&self, _: *JSContext, _: JSVal);
fn PassOptionalNullableBooleanWithNonNullDefault(&self, _: Option<bool>);
fn PassOptionalNullableByteWithNonNullDefault(&self, _: Option<i8>);
fn PassOptionalNullableOctetWithNonNullDefault(&self, _: Option<u8>);
fn PassOptionalNullableShortWithNonNullDefault(&self, _: Option<i16>);
fn PassOptionalNullableUnsignedShortWithNonNullDefault(&self, _: Option<u16>);
fn PassOptionalNullableLongWithNonNullDefault(&self, _: Option<i32>);
fn PassOptionalNullableUnsignedLongWithNonNullDefault(&self, _: Option<u32>);
fn PassOptionalNullableLongLongWithNonNullDefault(&self, _: Option<i64>);
fn PassOptionalNullableUnsignedLongLongWithNonNullDefault(&self, _: Option<u64>);
// fn PassOptionalNullableFloatWithNonNullDefault(&self, _: Option<f32>);
// fn PassOptionalNullableDoubleWithNonNullDefault(&self, _: Option<f64>);
fn PassOptionalNullableStringWithNonNullDefault(&self, _: Option<DOMString>);
// fn PassOptionalNullableEnumWithNonNullDefault(&self, _: Option<TestEnum>);
}
impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn BooleanAttribute(&self) -> bool { false }
fn SetBooleanAttribute(&self, _: bool) {}
fn ByteAttribute(&self) -> i8 { 0 }
@ -231,10 +51,7 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn SetByteStringAttribute(&self, _: ByteString) {}
fn EnumAttribute(&self) -> TestEnum { _empty }
fn SetEnumAttribute(&self, _: TestEnum) {}
fn InterfaceAttribute(&self) -> Temporary<Blob> {
let window = self.window.root();
Blob::new(&*window)
}
fn InterfaceAttribute(&self) -> Temporary<Blob>;
fn SetInterfaceAttribute(&self, _: &JSRef<Blob>) {}
fn AnyAttribute(&self, _: *JSContext) -> JSVal { NullValue() }
fn SetAnyAttribute(&self, _: *JSContext, _: JSVal) {}
@ -266,10 +83,7 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn GetStringAttributeNullable(&self) -> Option<DOMString> { Some("".to_owned()) }
fn SetStringAttributeNullable(&self, _: Option<DOMString>) {}
fn GetEnumAttributeNullable(&self) -> Option<TestEnum> { Some(_empty) }
fn GetInterfaceAttributeNullable(&self) -> Option<Temporary<Blob>> {
let window = self.window.root();
Some(Blob::new(&*window))
}
fn GetInterfaceAttributeNullable(&self) -> Option<Temporary<Blob>>;
fn SetInterfaceAttributeNullable(&self, _: Option<JSRef<Blob>>) {}
fn PassBoolean(&self, _: bool) {}
@ -388,6 +202,17 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
// fn PassOptionalNullableEnumWithNonNullDefault(&self, _: Option<TestEnum>) {}
}
impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn InterfaceAttribute(&self) -> Temporary<Blob> {
let window = self.window.root();
Blob::new(&*window)
}
fn GetInterfaceAttributeNullable(&self) -> Option<Temporary<Blob>> {
let window = self.window.root();
Some(Blob::new(&*window))
}
}
impl Reflectable for TestBinding {
fn reflector<'a>(&'a self) -> &'a Reflector {
&self.reflector