Add bindings support for unrestricted float/double values.

This commit is contained in:
Tetsuharu OHZEKI 2015-03-01 16:31:42 +09:00
parent 1f0291c4db
commit 2bf2c0020b
4 changed files with 62 additions and 3 deletions

View file

@ -80,7 +80,9 @@ builtinNames = {
IDLType.Tags.uint16: 'u16',
IDLType.Tags.uint32: 'u32',
IDLType.Tags.uint64: 'u64',
IDLType.Tags.unrestricted_float: 'f32',
IDLType.Tags.float: 'f32',
IDLType.Tags.unrestricted_double: 'f64',
IDLType.Tags.double: 'f64'
}
@ -89,7 +91,8 @@ numericTags = [
IDLType.Tags.int16, IDLType.Tags.uint16,
IDLType.Tags.int32, IDLType.Tags.uint32,
IDLType.Tags.int64, IDLType.Tags.uint64,
IDLType.Tags.float, IDLType.Tags.double
IDLType.Tags.unrestricted_float, IDLType.Tags.float,
IDLType.Tags.unrestricted_double, IDLType.Tags.double
]
class CastableObjectUnwrapper():
@ -962,7 +965,8 @@ def convertConstIDLValueToJSVal(value):
return "DoubleVal(%s)" % (value.value)
if tag == IDLType.Tags.bool:
return "BoolVal(true)" if value.value else "BoolVal(false)"
if tag in [IDLType.Tags.float, IDLType.Tags.double]:
if tag in [IDLType.Tags.unrestricted_float, IDLType.Tags.float,
IDLType.Tags.unrestricted_double, IDLType.Tags.double]:
return "DoubleVal(%s)" % (value.value)
raise TypeError("Const value of unhandled type: " + value.type)
@ -2880,7 +2884,8 @@ def convertConstIDLValueToRust(value):
IDLType.Tags.int16, IDLType.Tags.uint16,
IDLType.Tags.int32, IDLType.Tags.uint32,
IDLType.Tags.int64, IDLType.Tags.uint64,
IDLType.Tags.float, IDLType.Tags.double]:
IDLType.Tags.unrestricted_float, IDLType.Tags.float,
IDLType.Tags.unrestricted_double, IDLType.Tags.double]:
return str(value.value)
if tag == IDLType.Tags.bool:

View file

@ -16,7 +16,9 @@
//! | unsigned long | `u32` |
//! | long long | `i64` |
//! | unsigned long long | `u64` |
//! | unrestricted float | `f32` |
//! | float | `f32` |
//! | unrestricted double | `f64` |
//! | double | `f64` |
//! | DOMString | `DOMString` |
//! | USVString | `USVString` |

View file

@ -49,8 +49,12 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn SetLongLongAttribute(self, _: i64) {}
fn UnsignedLongLongAttribute(self) -> u64 { 0 }
fn SetUnsignedLongLongAttribute(self, _: u64) {}
fn UnrestrictedFloatAttribute(self) -> f32 { 0. }
fn SetUnrestrictedFloatAttribute(self, _: f32) {}
fn FloatAttribute(self) -> f32 { 0. }
fn SetFloatAttribute(self, _: f32) {}
fn UnrestrictedDoubleAttribute(self) -> f64 { 0. }
fn SetUnrestrictedDoubleAttribute(self, _: f64) {}
fn DoubleAttribute(self) -> f64 { 0. }
fn SetDoubleAttribute(self, _: f64) {}
fn StringAttribute(self) -> DOMString { "".to_owned() }
@ -92,8 +96,12 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn SetLongLongAttributeNullable(self, _: Option<i64>) {}
fn GetUnsignedLongLongAttributeNullable(self) -> Option<u64> { Some(0) }
fn SetUnsignedLongLongAttributeNullable(self, _: Option<u64>) {}
fn GetUnrestrictedFloatAttributeNullable(self) -> Option<f32> { Some(0.) }
fn SetUnrestrictedFloatAttributeNullable(self, _: Option<f32>) {}
fn GetFloatAttributeNullable(self) -> Option<f32> { Some(0.) }
fn SetFloatAttributeNullable(self, _: Option<f32>) {}
fn GetUnrestrictedDoubleAttributeNullable(self) -> Option<f64> { Some(0.) }
fn SetUnrestrictedDoubleAttributeNullable(self, _: Option<f64>) {}
fn GetDoubleAttributeNullable(self) -> Option<f64> { Some(0.) }
fn SetDoubleAttributeNullable(self, _: Option<f64>) {}
fn GetByteStringAttributeNullable(self) -> Option<ByteString> { Some(ByteString::new(vec!())) }
@ -125,7 +133,9 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn ReceiveUnsignedLong(self) -> u32 { 0 }
fn ReceiveLongLong(self) -> i64 { 0 }
fn ReceiveUnsignedLongLong(self) -> u64 { 0 }
fn ReceiveUnrestrictedFloat(self) -> f32 { 0. }
fn ReceiveFloat(self) -> f32 { 0. }
fn ReceiveUnrestrictedDouble(self) -> f64 { 0. }
fn ReceiveDouble(self) -> f64 { 0. }
fn ReceiveString(self) -> DOMString { "".to_owned() }
fn ReceiveUsvstring(self) -> USVString { USVString("".to_owned()) }
@ -148,7 +158,9 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn ReceiveNullableUnsignedLong(self) -> Option<u32> { Some(0) }
fn ReceiveNullableLongLong(self) -> Option<i64> { Some(0) }
fn ReceiveNullableUnsignedLongLong(self) -> Option<u64> { Some(0) }
fn ReceiveNullableUnrestrictedFloat(self) -> Option<f32> { Some(0.) }
fn ReceiveNullableFloat(self) -> Option<f32> { Some(0.) }
fn ReceiveNullableUnrestrictedDouble(self) -> Option<f64> { Some(0.) }
fn ReceiveNullableDouble(self) -> Option<f64> { Some(0.) }
fn ReceiveNullableString(self) -> Option<DOMString> { Some("".to_owned()) }
fn ReceiveNullableUsvstring(self) -> Option<USVString> { Some(USVString("".to_owned())) }
@ -170,7 +182,9 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn PassUnsignedLong(self, _: u32) {}
fn PassLongLong(self, _: i64) {}
fn PassUnsignedLongLong(self, _: u64) {}
fn PassUnrestrictedFloat(self, _: f32) {}
fn PassFloat(self, _: f32) {}
fn PassUnrestrictedDouble(self, _: f64) {}
fn PassDouble(self, _: f64) {}
fn PassString(self, _: DOMString) {}
fn PassUsvstring(self, _: USVString) {}
@ -193,7 +207,9 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn PassNullableUnsignedLong(self, _: Option<u32>) {}
fn PassNullableLongLong(self, _: Option<i64>) {}
fn PassNullableUnsignedLongLong(self, _: Option<u64>) {}
fn PassNullableUnrestrictedFloat(self, _: Option<f32>) {}
fn PassNullableFloat(self, _: Option<f32>) {}
fn PassNullableUnrestrictedDouble(self, _: Option<f64>) {}
fn PassNullableDouble(self, _: Option<f64>) {}
fn PassNullableString(self, _: Option<DOMString>) {}
fn PassNullableUsvstring(self, _: Option<USVString>) {}
@ -214,7 +230,9 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn PassOptionalUnsignedLong(self, _: Option<u32>) {}
fn PassOptionalLongLong(self, _: Option<i64>) {}
fn PassOptionalUnsignedLongLong(self, _: Option<u64>) {}
fn PassOptionalUnrestrictedFloat(self, _: Option<f32>) {}
fn PassOptionalFloat(self, _: Option<f32>) {}
fn PassOptionalUnrestrictedDouble(self, _: Option<f64>) {}
fn PassOptionalDouble(self, _: Option<f64>) {}
fn PassOptionalString(self, _: Option<DOMString>) {}
fn PassOptionalUsvstring(self, _: Option<USVString>) {}
@ -236,7 +254,9 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn PassOptionalNullableUnsignedLong(self, _: Option<Option<u32>>) {}
fn PassOptionalNullableLongLong(self, _: Option<Option<i64>>) {}
fn PassOptionalNullableUnsignedLongLong(self, _: Option<Option<u64>>) {}
fn PassOptionalNullableUnrestrictedFloat(self, _: Option<Option<f32>>) {}
fn PassOptionalNullableFloat(self, _: Option<Option<f32>>) {}
fn PassOptionalNullableUnrestrictedDouble(self, _: Option<Option<f64>>) {}
fn PassOptionalNullableDouble(self, _: Option<Option<f64>>) {}
fn PassOptionalNullableString(self, _: Option<Option<DOMString>>) {}
fn PassOptionalNullableUsvstring(self, _: Option<Option<USVString>>) {}
@ -270,7 +290,9 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn PassOptionalNullableUnsignedLongWithDefault(self, _: Option<u32>) {}
fn PassOptionalNullableLongLongWithDefault(self, _: Option<i64>) {}
fn PassOptionalNullableUnsignedLongLongWithDefault(self, _: Option<u64>) {}
// fn PassOptionalNullableUnrestrictedFloatWithDefault(self, _: Option<f32>) {}
// fn PassOptionalNullableFloatWithDefault(self, _: Option<f32>) {}
// fn PassOptionalNullableUnrestrictedDoubleWithDefault(self, _: Option<f64>) {}
// fn PassOptionalNullableDoubleWithDefault(self, _: Option<f64>) {}
fn PassOptionalNullableStringWithDefault(self, _: Option<DOMString>) {}
fn PassOptionalNullableUsvstringWithDefault(self, _: Option<USVString>) {}
@ -292,7 +314,9 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn PassOptionalNullableUnsignedLongWithNonNullDefault(self, _: Option<u32>) {}
fn PassOptionalNullableLongLongWithNonNullDefault(self, _: Option<i64>) {}
fn PassOptionalNullableUnsignedLongLongWithNonNullDefault(self, _: Option<u64>) {}
// fn PassOptionalNullableUnrestrictedFloatWithNonNullDefault(self, _: Option<f32>) {}
// fn PassOptionalNullableFloatWithNonNullDefault(self, _: Option<f32>) {}
// fn PassOptionalNullableUnrestrictedDoubleWithNonNullDefault(self, _: Option<f64>) {}
// fn PassOptionalNullableDoubleWithNonNullDefault(self, _: Option<f64>) {}
fn PassOptionalNullableStringWithNonNullDefault(self, _: Option<DOMString>) {}
fn PassOptionalNullableUsvstringWithNonNullDefault(self, _: Option<USVString>) {}
@ -307,7 +331,9 @@ impl<'a> TestBindingMethods for JSRef<'a, TestBinding> {
fn PassVariadicUnsignedLong(self, _: Vec<u32>) {}
fn PassVariadicLongLong(self, _: Vec<i64>) {}
fn PassVariadicUnsignedLongLong(self, _: Vec<u64>) {}
fn PassVariadicUnrestrictedFloat(self, _: Vec<f32>) {}
fn PassVariadicFloat(self, _: Vec<f32>) {}
fn PassVariadicUnrestrictedDouble(self, _: Vec<f64>) {}
fn PassVariadicDouble(self, _: Vec<f64>) {}
fn PassVariadicString(self, _: Vec<DOMString>) {}
fn PassVariadicUsvstring(self, _: Vec<USVString>) {}

View file

@ -14,7 +14,9 @@ dictionary TestDictionary {
unsigned long unsignedLongValue;
long long longLongValue;
unsigned long long unsignedLongLongValue;
unrestricted float unrestrictedFloatValue;
float floatValue;
unrestricted double unrestrictedDoubleValue;
double doubleValue;
DOMString stringValue;
USVString usvstringValue;
@ -33,7 +35,9 @@ dictionary TestDictionaryDefaults {
unsigned long unsignedLongValue = 7;
long long longLongValue = 7;
unsigned long long unsignedLongLongValue = 7;
// unrestricted float unrestrictedFloatValue = 7.0;
// float floatValue = 7.0;
// unrestricted double UnrestrictedDoubleValue = 7.0;
// double doubleValue = 7.0;
DOMString stringValue = "foo";
USVString usvstringValue = "foo";
@ -49,7 +53,9 @@ dictionary TestDictionaryDefaults {
unsigned long? nullableUnsignedLongValue = 7;
long long? nullableLongLongValue = 7;
unsigned long long? nullableUnsignedLongLongValue = 7;
// unrestricted float? nullableUnrestrictedFloatValue = 7.0;
// float? nullableFloatValue = 7.0;
// unrestricted double? nullableUnrestrictedDoubleValue = 7.0;
// double? nullableDoubleValue = 7.0;
DOMString? nullableStringValue = "foo";
USVString? nullableUsvstringValue = "foo";
@ -66,7 +72,9 @@ interface TestBinding {
attribute unsigned long unsignedLongAttribute;
attribute long long longLongAttribute;
attribute unsigned long long unsignedLongLongAttribute;
attribute unrestricted float unrestrictedFloatAttribute;
attribute float floatAttribute;
attribute unrestricted double unrestrictedDoubleAttribute;
attribute double doubleAttribute;
attribute DOMString stringAttribute;
attribute USVString usvstringAttribute;
@ -87,7 +95,9 @@ interface TestBinding {
attribute unsigned long? unsignedLongAttributeNullable;
attribute long long? longLongAttributeNullable;
attribute unsigned long long? unsignedLongLongAttributeNullable;
attribute unrestricted float? unrestrictedFloatAttributeNullable;
attribute float? floatAttributeNullable;
attribute unrestricted double? unrestrictedDoubleAttributeNullable;
attribute double? doubleAttributeNullable;
attribute DOMString? stringAttributeNullable;
attribute USVString? usvstringAttributeNullable;
@ -109,7 +119,9 @@ interface TestBinding {
unsigned long receiveUnsignedLong();
long long receiveLongLong();
unsigned long long receiveUnsignedLongLong();
unrestricted float receiveUnrestrictedFloat();
float receiveFloat();
unrestricted double receiveUnrestrictedDouble();
double receiveDouble();
DOMString receiveString();
USVString receiveUsvstring();
@ -129,7 +141,9 @@ interface TestBinding {
unsigned long? receiveNullableUnsignedLong();
long long? receiveNullableLongLong();
unsigned long long? receiveNullableUnsignedLongLong();
unrestricted float? receiveNullableUnrestrictedFloat();
float? receiveNullableFloat();
unrestricted double? receiveNullableUnrestrictedDouble();
double? receiveNullableDouble();
DOMString? receiveNullableString();
USVString? receiveNullableUsvstring();
@ -148,7 +162,9 @@ interface TestBinding {
void passUnsignedLong(unsigned long arg);
void passLongLong(long long arg);
void passUnsignedLongLong(unsigned long long arg);
void passUnrestrictedFloat(unrestricted float arg);
void passFloat(float arg);
void passUnrestrictedDouble(unrestricted double arg);
void passDouble(double arg);
void passString(DOMString arg);
void passUsvstring(USVString arg);
@ -171,7 +187,9 @@ interface TestBinding {
void passNullableUnsignedLong(unsigned long? arg);
void passNullableLongLong(long long? arg);
void passNullableUnsignedLongLong(unsigned long long? arg);
void passNullableUnrestrictedFloat(unrestricted float? arg);
void passNullableFloat(float? arg);
void passNullableUnrestrictedDouble(unrestricted double? arg);
void passNullableDouble(double? arg);
void passNullableString(DOMString? arg);
void passNullableUsvstring(USVString? arg);
@ -192,7 +210,9 @@ interface TestBinding {
void passOptionalUnsignedLong(optional unsigned long arg);
void passOptionalLongLong(optional long long arg);
void passOptionalUnsignedLongLong(optional unsigned long long arg);
void passOptionalUnrestrictedFloat(optional unrestricted float arg);
void passOptionalFloat(optional float arg);
void passOptionalUnrestrictedDouble(optional unrestricted double arg);
void passOptionalDouble(optional double arg);
void passOptionalString(optional DOMString arg);
void passOptionalUsvstring(optional USVString arg);
@ -214,7 +234,9 @@ interface TestBinding {
void passOptionalNullableUnsignedLong(optional unsigned long? arg);
void passOptionalNullableLongLong(optional long long? arg);
void passOptionalNullableUnsignedLongLong(optional unsigned long long? arg);
void passOptionalNullableUnrestrictedFloat(optional unrestricted float? arg);
void passOptionalNullableFloat(optional float? arg);
void passOptionalNullableUnrestrictedDouble(optional unrestricted double? arg);
void passOptionalNullableDouble(optional double? arg);
void passOptionalNullableString(optional DOMString? arg);
void passOptionalNullableUsvstring(optional USVString? arg);
@ -270,7 +292,9 @@ interface TestBinding {
void passOptionalNullableUnsignedLongWithNonNullDefault(optional unsigned long? arg = 7);
void passOptionalNullableLongLongWithNonNullDefault(optional long long? arg = 7);
void passOptionalNullableUnsignedLongLongWithNonNullDefault(optional unsigned long long? arg = 7);
// void passOptionalNullableUnrestrictedFloatWithNonNullDefault(optional unrestricted float? arg = 0.0);
// void passOptionalNullableFloatWithNonNullDefault(optional float? arg = 0.0);
// void passOptionalNullableUnrestrictedDoubleWithNonNullDefault(optional unrestricted double? arg = 0.0);
// void passOptionalNullableDoubleWithNonNullDefault(optional double? arg = 0.0);
void passOptionalNullableStringWithNonNullDefault(optional DOMString? arg = "x");
void passOptionalNullableUsvstringWithNonNullDefault(optional USVString? arg = "x");
@ -287,7 +311,9 @@ interface TestBinding {
void passVariadicUnsignedLong(unsigned long... args);
void passVariadicLongLong(long long... args);
void passVariadicUnsignedLongLong(unsigned long long... args);
void passVariadicUnrestrictedFloat(unrestricted float... args);
void passVariadicFloat(float... args);
void passVariadicUnrestrictedDouble(unrestricted double... args);
void passVariadicDouble(double... args);
void passVariadicString(DOMString... args);
void passVariadicUsvstring(USVString... args);