| OLD | NEW |
| 1 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> | 1 # Copyright (C) 2005, 2006 Nikolas Zimmermann <zimmermann@kde.org> |
| 2 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> | 2 # Copyright (C) 2006 Anders Carlsson <andersca@mac.com> |
| 3 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> | 3 # Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com> |
| 4 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> | 4 # Copyright (C) 2006 Alexey Proskuryakov <ap@webkit.org> |
| 5 # Copyright (C) 2006 Apple Computer, Inc. | 5 # Copyright (C) 2006 Apple Computer, Inc. |
| 6 # Copyright (C) 2007, 2008, 2009, 2012 Google Inc. | 6 # Copyright (C) 2007, 2008, 2009, 2012 Google Inc. |
| 7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> | 7 # Copyright (C) 2009 Cameron McCormack <cam@mcc.id.au> |
| 8 # Copyright (C) Research In Motion Limited 2010. All rights reserved. | 8 # Copyright (C) Research In Motion Limited 2010. All rights reserved. |
| 9 # Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) | 9 # Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) |
| 10 # Copyright (C) 2012 Ericsson AB. All rights reserved. | 10 # Copyright (C) 2012 Ericsson AB. All rights reserved. |
| (...skipping 1890 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1901 } | 1901 } |
| 1902 } | 1902 } |
| 1903 | 1903 |
| 1904 my $nativeType = GetNativeType($attribute->type, $attribute->extendedAttribu
tes, "parameter"); | 1904 my $nativeType = GetNativeType($attribute->type, $attribute->extendedAttribu
tes, "parameter"); |
| 1905 if ($attribute->type eq "EventHandler") { | 1905 if ($attribute->type eq "EventHandler") { |
| 1906 if ($interface->name eq "Window") { | 1906 if ($interface->name eq "Window") { |
| 1907 $code .= " if (!imp->document())\n"; | 1907 $code .= " if (!imp->document())\n"; |
| 1908 $code .= " return;\n"; | 1908 $code .= " return;\n"; |
| 1909 } | 1909 } |
| 1910 } else { | 1910 } else { |
| 1911 $code .= JSValueToNativeStatement($attribute->type, $attribute->extended
Attributes, "jsValue", "cppValue", " ", "info.GetIsolate()"); | 1911 my $asSetterValue = 0; |
| 1912 $code .= JSValueToNativeStatement($attribute->type, $attribute->extended
Attributes, $asSetterValue, "jsValue", "cppValue", " ", "info.GetIsolate()"); |
| 1912 } | 1913 } |
| 1913 | 1914 |
| 1914 if (IsEnumType($attrType)) { | 1915 if (IsEnumType($attrType)) { |
| 1915 # setter ignores invalid enumeration values | 1916 # setter ignores invalid enumeration values |
| 1916 my @enumValues = ValidEnumValues($attrType); | 1917 my @enumValues = ValidEnumValues($attrType); |
| 1917 my @validEqualities = (); | 1918 my @validEqualities = (); |
| 1918 foreach my $enumValue (@enumValues) { | 1919 foreach my $enumValue (@enumValues) { |
| 1919 push(@validEqualities, "string == \"$enumValue\""); | 1920 push(@validEqualities, "string == \"$enumValue\""); |
| 1920 } | 1921 } |
| 1921 my $enumValidationExpression = join(" || ", @validEqualities); | 1922 my $enumValidationExpression = join(" || ", @validEqualities); |
| (...skipping 574 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2496 } | 2497 } |
| 2497 } elsif ($nativeType =~ /^V8StringResource/) { | 2498 } elsif ($nativeType =~ /^V8StringResource/) { |
| 2498 my $default = defined $parameter->extendedAttributes->{"Default"} ?
$parameter->extendedAttributes->{"Default"} : ""; | 2499 my $default = defined $parameter->extendedAttributes->{"Default"} ?
$parameter->extendedAttributes->{"Default"} : ""; |
| 2499 my $jsValue = $parameter->isOptional && $default eq "NullString" ? "
argumentOrNull(args, $paramIndex)" : "args[$paramIndex]"; | 2500 my $jsValue = $parameter->isOptional && $default eq "NullString" ? "
argumentOrNull(args, $paramIndex)" : "args[$paramIndex]"; |
| 2500 my $stringResourceParameterName = $parameterName; | 2501 my $stringResourceParameterName = $parameterName; |
| 2501 my $isNullable = $parameter->isNullable && !IsRefPtrType($parameter-
>type); | 2502 my $isNullable = $parameter->isNullable && !IsRefPtrType($parameter-
>type); |
| 2502 if ($isNullable) { | 2503 if ($isNullable) { |
| 2503 $parameterCheckString .= " bool ${parameterName}IsNull = $jsV
alue->IsNull();\n"; | 2504 $parameterCheckString .= " bool ${parameterName}IsNull = $jsV
alue->IsNull();\n"; |
| 2504 $stringResourceParameterName .= "StringResource"; | 2505 $stringResourceParameterName .= "StringResource"; |
| 2505 } | 2506 } |
| 2506 $parameterCheckString .= JSValueToNativeStatement($parameter->type,
$parameter->extendedAttributes, $jsValue, $stringResourceParameterName, " ",
"args.GetIsolate()"); | 2507 $parameterCheckString .= JSValueToNativeStatement($parameter->type,
$parameter->extendedAttributes, $humanFriendlyIndex, $jsValue, $stringResourcePa
rameterName, " ", "args.GetIsolate()"); |
| 2507 $parameterCheckString .= " String $parameterName = $stringResourc
eParameterName;\n" if $isNullable; | 2508 $parameterCheckString .= " String $parameterName = $stringResourc
eParameterName;\n" if $isNullable; |
| 2508 if (IsEnumType($parameter->type)) { | 2509 if (IsEnumType($parameter->type)) { |
| 2509 my @enumValues = ValidEnumValues($parameter->type); | 2510 my @enumValues = ValidEnumValues($parameter->type); |
| 2510 my @validEqualities = (); | 2511 my @validEqualities = (); |
| 2511 foreach my $enumValue (@enumValues) { | 2512 foreach my $enumValue (@enumValues) { |
| 2512 push(@validEqualities, "string == \"$enumValue\""); | 2513 push(@validEqualities, "string == \"$enumValue\""); |
| 2513 } | 2514 } |
| 2514 my $enumValidationExpression = join(" || ", @validEqualities); | 2515 my $enumValidationExpression = join(" || ", @validEqualities); |
| 2515 $parameterCheckString .= " String string = $parameterName;\n
"; | 2516 $parameterCheckString .= " String string = $parameterName;\n
"; |
| 2516 $parameterCheckString .= " if (!($enumValidationExpression))
{\n"; | 2517 $parameterCheckString .= " if (!($enumValidationExpression))
{\n"; |
| (...skipping 15 matching lines...) Expand all Loading... |
| 2532 $parameterCheckString .= " if (args.Length() > $paramInde
x && !isUndefinedOrNull($argValue) && !V8${argType}::HasInstance($argValue, args
.GetIsolate(), worldType(args.GetIsolate()))) {\n"; | 2533 $parameterCheckString .= " if (args.Length() > $paramInde
x && !isUndefinedOrNull($argValue) && !V8${argType}::HasInstance($argValue, args
.GetIsolate(), worldType(args.GetIsolate()))) {\n"; |
| 2533 $parameterCheckString .= " throwTypeError(ExceptionMe
ssages::failedToExecute(\"$functionName\", \"$interfaceName\", \"parameter $huma
nFriendlyIndex is not of type \'$argType\'.\"), args.GetIsolate());\n"; | 2534 $parameterCheckString .= " throwTypeError(ExceptionMe
ssages::failedToExecute(\"$functionName\", \"$interfaceName\", \"parameter $huma
nFriendlyIndex is not of type \'$argType\'.\"), args.GetIsolate());\n"; |
| 2534 $parameterCheckString .= " return;\n"; | 2535 $parameterCheckString .= " return;\n"; |
| 2535 $parameterCheckString .= " }\n"; | 2536 $parameterCheckString .= " }\n"; |
| 2536 } | 2537 } |
| 2537 } | 2538 } |
| 2538 my $default = defined $parameter->extendedAttributes->{"Default"} ?
$parameter->extendedAttributes->{"Default"} : ""; | 2539 my $default = defined $parameter->extendedAttributes->{"Default"} ?
$parameter->extendedAttributes->{"Default"} : ""; |
| 2539 my $jsValue = $parameter->isOptional && $default eq "NullString" ? "
argumentOrNull(args, $paramIndex)" : "args[$paramIndex]"; | 2540 my $jsValue = $parameter->isOptional && $default eq "NullString" ? "
argumentOrNull(args, $paramIndex)" : "args[$paramIndex]"; |
| 2540 my $isNullable = $parameter->isNullable && !IsRefPtrType($parameter-
>type); | 2541 my $isNullable = $parameter->isNullable && !IsRefPtrType($parameter-
>type); |
| 2541 $parameterCheckString .= " bool ${parameterName}IsNull = $jsValue
->IsNull();\n" if $isNullable; | 2542 $parameterCheckString .= " bool ${parameterName}IsNull = $jsValue
->IsNull();\n" if $isNullable; |
| 2542 $parameterCheckString .= JSValueToNativeStatement($parameter->type,
$parameter->extendedAttributes, $jsValue, $parameterName, " ", "args.GetIsola
te()"); | 2543 $parameterCheckString .= JSValueToNativeStatement($parameter->type,
$parameter->extendedAttributes, $humanFriendlyIndex, $jsValue, $parameterName, "
", "args.GetIsolate()"); |
| 2543 if ($nativeType eq 'Dictionary' or $nativeType eq 'ScriptPromise') { | 2544 if ($nativeType eq 'Dictionary' or $nativeType eq 'ScriptPromise') { |
| 2544 $parameterCheckString .= " if (!$parameterName.isUndefinedOrN
ull() && !$parameterName.isObject()) {\n"; | 2545 $parameterCheckString .= " if (!$parameterName.isUndefinedOrN
ull() && !$parameterName.isObject()) {\n"; |
| 2545 if ($functionName eq "Constructor") { | 2546 if ($functionName eq "Constructor") { |
| 2546 $parameterCheckString .= " throwTypeError(ExceptionMe
ssages::failedToConstruct(\"$interfaceName\", \"parameter ${humanFriendlyIndex}
('${parameterName}') is not an object.\"), args.GetIsolate());\n"; | 2547 $parameterCheckString .= " throwTypeError(ExceptionMe
ssages::failedToConstruct(\"$interfaceName\", \"parameter ${humanFriendlyIndex}
('${parameterName}') is not an object.\"), args.GetIsolate());\n"; |
| 2547 } else { | 2548 } else { |
| 2548 $parameterCheckString .= " throwTypeError(ExceptionMe
ssages::failedToExecute(\"$functionName\", \"$interfaceName\", \"parameter ${hum
anFriendlyIndex} ('${parameterName}') is not an object.\"), args.GetIsolate());\
n"; | 2549 $parameterCheckString .= " throwTypeError(ExceptionMe
ssages::failedToExecute(\"$functionName\", \"$interfaceName\", \"parameter ${hum
anFriendlyIndex} ('${parameterName}') is not an object.\"), args.GetIsolate());\
n"; |
| 2549 } | 2550 } |
| 2550 $parameterCheckString .= " return;\n"; | 2551 $parameterCheckString .= " return;\n"; |
| 2551 $parameterCheckString .= " }\n"; | 2552 $parameterCheckString .= " }\n"; |
| 2552 } | 2553 } |
| (...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3492 my $interface = shift; | 3493 my $interface = shift; |
| 3493 my $indexedSetterFunction = shift; | 3494 my $indexedSetterFunction = shift; |
| 3494 my $implClassName = GetImplName($interface); | 3495 my $implClassName = GetImplName($interface); |
| 3495 my $v8ClassName = GetV8ClassName($interface); | 3496 my $v8ClassName = GetV8ClassName($interface); |
| 3496 my $methodName = GetImplName($indexedSetterFunction); | 3497 my $methodName = GetImplName($indexedSetterFunction); |
| 3497 | 3498 |
| 3498 my $type = $indexedSetterFunction->parameters->[1]->type; | 3499 my $type = $indexedSetterFunction->parameters->[1]->type; |
| 3499 my $raisesExceptions = $indexedSetterFunction->extendedAttributes->{"RaisesE
xception"}; | 3500 my $raisesExceptions = $indexedSetterFunction->extendedAttributes->{"RaisesE
xception"}; |
| 3500 my $treatNullAs = $indexedSetterFunction->parameters->[1]->extendedAttribute
s->{"TreatNullAs"}; | 3501 my $treatNullAs = $indexedSetterFunction->parameters->[1]->extendedAttribute
s->{"TreatNullAs"}; |
| 3501 my $treatUndefinedAs = $indexedSetterFunction->parameters->[1]->extendedAttr
ibutes->{"TreatUndefinedAs"}; | 3502 my $treatUndefinedAs = $indexedSetterFunction->parameters->[1]->extendedAttr
ibutes->{"TreatUndefinedAs"}; |
| 3503 my $asSetterValue = 0; |
| 3504 |
| 3502 my $code = "static void indexedPropertySetter(uint32_t index, v8::Local<v8::
Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info)\n"; | 3505 my $code = "static void indexedPropertySetter(uint32_t index, v8::Local<v8::
Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info)\n"; |
| 3503 $code .= "{\n"; | 3506 $code .= "{\n"; |
| 3504 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; | 3507 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; |
| 3505 $code .= JSValueToNativeStatement($indexedSetterFunction->parameters->[1]->t
ype, $indexedSetterFunction->extendedAttributes, "jsValue", "propertyValue", "
", "info.GetIsolate()"); | 3508 $code .= JSValueToNativeStatement($indexedSetterFunction->parameters->[1]->t
ype, $indexedSetterFunction->extendedAttributes, $asSetterValue, "jsValue", "pro
pertyValue", " ", "info.GetIsolate()"); |
| 3506 | 3509 |
| 3507 my $extraArguments = ""; | 3510 my $extraArguments = ""; |
| 3508 if ($raisesExceptions) { | 3511 if ($raisesExceptions) { |
| 3509 $code .= " ExceptionState es(info.GetIsolate());\n"; | 3512 $code .= " ExceptionState es(info.GetIsolate());\n"; |
| 3510 $extraArguments = ", es"; | 3513 $extraArguments = ", es"; |
| 3511 } | 3514 } |
| 3512 my @conditions = (); | 3515 my @conditions = (); |
| 3513 my @statements = (); | 3516 my @statements = (); |
| 3514 if ($treatNullAs && $treatNullAs ne "NullString") { | 3517 if ($treatNullAs && $treatNullAs ne "NullString") { |
| 3515 push @conditions, "jsValue->IsNull()"; | 3518 push @conditions, "jsValue->IsNull()"; |
| (...skipping 278 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3794 { | 3797 { |
| 3795 my $interface = shift; | 3798 my $interface = shift; |
| 3796 my $namedSetterFunction = shift; | 3799 my $namedSetterFunction = shift; |
| 3797 my $implClassName = GetImplName($interface); | 3800 my $implClassName = GetImplName($interface); |
| 3798 my $v8ClassName = GetV8ClassName($interface); | 3801 my $v8ClassName = GetV8ClassName($interface); |
| 3799 my $methodName = GetImplName($namedSetterFunction); | 3802 my $methodName = GetImplName($namedSetterFunction); |
| 3800 | 3803 |
| 3801 my $raisesExceptions = $namedSetterFunction->extendedAttributes->{"RaisesExc
eption"}; | 3804 my $raisesExceptions = $namedSetterFunction->extendedAttributes->{"RaisesExc
eption"}; |
| 3802 my $treatNullAs = $namedSetterFunction->parameters->[1]->extendedAttributes-
>{"TreatNullAs"}; | 3805 my $treatNullAs = $namedSetterFunction->parameters->[1]->extendedAttributes-
>{"TreatNullAs"}; |
| 3803 my $treatUndefinedAs = $namedSetterFunction->parameters->[1]->extendedAttrib
utes->{"TreatUndefinedAs"}; | 3806 my $treatUndefinedAs = $namedSetterFunction->parameters->[1]->extendedAttrib
utes->{"TreatUndefinedAs"}; |
| 3807 my $asSetterValue = 0; |
| 3804 | 3808 |
| 3805 my $code = "static void namedPropertySetter(v8::Local<v8::String> name, v8::
Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info)\n"; | 3809 my $code = "static void namedPropertySetter(v8::Local<v8::String> name, v8::
Local<v8::Value> jsValue, const v8::PropertyCallbackInfo<v8::Value>& info)\n"; |
| 3806 $code .= "{\n"; | 3810 $code .= "{\n"; |
| 3807 if (!$namedSetterFunction->extendedAttributes->{"OverrideBuiltins"}) { | 3811 if (!$namedSetterFunction->extendedAttributes->{"OverrideBuiltins"}) { |
| 3808 $code .= " if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(n
ame).IsEmpty())\n"; | 3812 $code .= " if (!info.Holder()->GetRealNamedPropertyInPrototypeChain(n
ame).IsEmpty())\n"; |
| 3809 $code .= " return;\n"; | 3813 $code .= " return;\n"; |
| 3810 $code .= " if (info.Holder()->HasRealNamedCallbackProperty(name))\n"; | 3814 $code .= " if (info.Holder()->HasRealNamedCallbackProperty(name))\n"; |
| 3811 $code .= " return;\n"; | 3815 $code .= " return;\n"; |
| 3812 $code .= " if (info.Holder()->HasRealNamedProperty(name))\n"; | 3816 $code .= " if (info.Holder()->HasRealNamedProperty(name))\n"; |
| 3813 $code .= " return;\n"; | 3817 $code .= " return;\n"; |
| 3814 } | 3818 } |
| 3815 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; | 3819 $code .= " ${implClassName}* collection = ${v8ClassName}::toNative(info.H
older());\n"; |
| 3816 $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[0]->typ
e, $namedSetterFunction->extendedAttributes, "name", "propertyName", " ", "in
fo.GetIsolate()"); | 3820 $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[0]->typ
e, $namedSetterFunction->extendedAttributes, $asSetterValue, "name", "propertyNa
me", " ", "info.GetIsolate()"); |
| 3817 $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[1]->typ
e, $namedSetterFunction->extendedAttributes, "jsValue", "propertyValue", " ",
"info.GetIsolate()"); | 3821 $code .= JSValueToNativeStatement($namedSetterFunction->parameters->[1]->typ
e, $namedSetterFunction->extendedAttributes, $asSetterValue, "jsValue", "propert
yValue", " ", "info.GetIsolate()"); |
| 3818 my $extraArguments = ""; | 3822 my $extraArguments = ""; |
| 3819 if ($raisesExceptions) { | 3823 if ($raisesExceptions) { |
| 3820 $code .= " ExceptionState es(info.GetIsolate());\n"; | 3824 $code .= " ExceptionState es(info.GetIsolate());\n"; |
| 3821 $extraArguments = ", es"; | 3825 $extraArguments = ", es"; |
| 3822 } | 3826 } |
| 3823 | 3827 |
| 3824 my @conditions = (); | 3828 my @conditions = (); |
| 3825 my @statements = (); | 3829 my @statements = (); |
| 3826 if ($treatNullAs && $treatNullAs ne "NullString") { | 3830 if ($treatNullAs && $treatNullAs ne "NullString") { |
| 3827 push @conditions, "jsValue->IsNull()"; | 3831 push @conditions, "jsValue->IsNull()"; |
| (...skipping 1411 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5239 # Callbacks use raw pointers, so pass isParameter = 1 | 5243 # Callbacks use raw pointers, so pass isParameter = 1 |
| 5240 my $nativeType = GetNativeType($type, {}, "parameter"); | 5244 my $nativeType = GetNativeType($type, {}, "parameter"); |
| 5241 return "const $nativeType&" if $nativeType =~ /^Vector/; | 5245 return "const $nativeType&" if $nativeType =~ /^Vector/; |
| 5242 return $nativeType; | 5246 return $nativeType; |
| 5243 } | 5247 } |
| 5244 | 5248 |
| 5245 sub JSValueToNativeStatement | 5249 sub JSValueToNativeStatement |
| 5246 { | 5250 { |
| 5247 my $type = shift; | 5251 my $type = shift; |
| 5248 my $extendedAttributes = shift; | 5252 my $extendedAttributes = shift; |
| 5253 my $argIndexOrZero = shift; |
| 5249 my $jsValue = shift; | 5254 my $jsValue = shift; |
| 5250 my $variableName = shift; | 5255 my $variableName = shift; |
| 5251 my $indent = shift; | 5256 my $indent = shift; |
| 5252 my $getIsolate = shift; | 5257 my $getIsolate = shift; |
| 5253 | 5258 |
| 5254 my $nativeType = GetNativeType($type, $extendedAttributes, "parameter"); | 5259 my $nativeType = GetNativeType($type, $extendedAttributes, "parameter"); |
| 5255 my $native_value = JSValueToNative($type, $extendedAttributes, $jsValue, $ge
tIsolate); | 5260 my $native_value = JSValueToNative($type, $extendedAttributes, $argIndexOrZe
ro, $jsValue, $getIsolate); |
| 5256 my $code = ""; | 5261 my $code = ""; |
| 5257 if ($type eq "DOMString" || IsEnumType($type)) { | 5262 if ($type eq "DOMString" || IsEnumType($type)) { |
| 5258 die "Wrong native type passed: $nativeType" unless $nativeType =~ /^V8St
ringResource/; | 5263 die "Wrong native type passed: $nativeType" unless $nativeType =~ /^V8St
ringResource/; |
| 5259 if ($type eq "DOMString" or IsEnumType($type)) { | 5264 if ($type eq "DOMString" or IsEnumType($type)) { |
| 5260 $code .= $indent . "V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID($nativeType
, $variableName, $native_value);\n" | 5265 $code .= $indent . "V8TRYCATCH_FOR_V8STRINGRESOURCE_VOID($nativeType
, $variableName, $native_value);\n" |
| 5261 } else { | 5266 } else { |
| 5262 $code .= $indent . "$nativeType $variableName($native_value, true);\
n"; | 5267 $code .= $indent . "$nativeType $variableName($native_value, true);\
n"; |
| 5263 } | 5268 } |
| 5264 } elsif ($extendedAttributes->{"EnforceRange"}) { | 5269 } elsif ($extendedAttributes->{"EnforceRange"}) { |
| 5265 $code .= $indent . "V8TRYCATCH_WITH_TYPECHECK_VOID($nativeType, $variabl
eName, $native_value, $getIsolate);\n"; | 5270 $code .= $indent . "V8TRYCATCH_WITH_TYPECHECK_VOID($nativeType, $variabl
eName, $native_value, $getIsolate);\n"; |
| 5266 } else { | 5271 } else { |
| 5267 $code .= $indent . "V8TRYCATCH_VOID($nativeType, $variableName, $native_
value);\n"; | 5272 $code .= $indent . "V8TRYCATCH_VOID($nativeType, $variableName, $native_
value);\n"; |
| 5268 } | 5273 } |
| 5269 return $code; | 5274 return $code; |
| 5270 } | 5275 } |
| 5271 | 5276 |
| 5272 | 5277 |
| 5273 sub JSValueToNative | 5278 sub JSValueToNative |
| 5274 { | 5279 { |
| 5275 my $type = shift; | 5280 my $type = shift; |
| 5276 my $extendedAttributes = shift; | 5281 my $extendedAttributes = shift; |
| 5282 # Argument position (1-indexed) or 0 if for a setter's value. |
| 5283 my $argIndexOrZero = shift; |
| 5277 my $value = shift; | 5284 my $value = shift; |
| 5278 my $getIsolate = shift; | 5285 my $getIsolate = shift; |
| 5279 | 5286 |
| 5280 my $intConversion = $extendedAttributes->{"EnforceRange"} ? "EnforceRange" :
"NormalConversion"; | 5287 my $intConversion = $extendedAttributes->{"EnforceRange"} ? "EnforceRange" :
"NormalConversion"; |
| 5281 | 5288 |
| 5282 return "$value->BooleanValue()" if $type eq "boolean"; | 5289 return "$value->BooleanValue()" if $type eq "boolean"; |
| 5283 return "static_cast<$type>($value->NumberValue())" if $type eq "float" or $t
ype eq "double"; | 5290 return "static_cast<$type>($value->NumberValue())" if $type eq "float" or $t
ype eq "double"; |
| 5284 | 5291 |
| 5285 if ($intConversion ne "NormalConversion") { | 5292 if ($intConversion ne "NormalConversion") { |
| 5286 return "toInt8($value, $intConversion, ok)" if $type eq "byte"; | 5293 return "toInt8($value, $intConversion, ok)" if $type eq "byte"; |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5345 | 5352 |
| 5346 if ($type eq "XPathNSResolver") { | 5353 if ($type eq "XPathNSResolver") { |
| 5347 return "toXPathNSResolver($value, $getIsolate)"; | 5354 return "toXPathNSResolver($value, $getIsolate)"; |
| 5348 } | 5355 } |
| 5349 | 5356 |
| 5350 my $arrayOrSequenceType = GetArrayOrSequenceType($type); | 5357 my $arrayOrSequenceType = GetArrayOrSequenceType($type); |
| 5351 | 5358 |
| 5352 if ($arrayOrSequenceType) { | 5359 if ($arrayOrSequenceType) { |
| 5353 if (IsRefPtrType($arrayOrSequenceType)) { | 5360 if (IsRefPtrType($arrayOrSequenceType)) { |
| 5354 AddToImplIncludes("V8${arrayOrSequenceType}.h"); | 5361 AddToImplIncludes("V8${arrayOrSequenceType}.h"); |
| 5355 return "(toRefPtrNativeArray<${arrayOrSequenceType}, V8${arrayOrSequ
enceType}>($value, $getIsolate))"; | 5362 return "(toRefPtrNativeArray<${arrayOrSequenceType}, V8${arrayOrSequ
enceType}>($value, $argIndexOrZero, $getIsolate))"; |
| 5356 } | 5363 } |
| 5357 return "toNativeArray<" . GetNativeType($arrayOrSequenceType) . ">($valu
e, $getIsolate)"; | 5364 return "toNativeArray<" . GetNativeType($arrayOrSequenceType) . ">($valu
e, $argIndexOrZero, $getIsolate)"; |
| 5358 } | 5365 } |
| 5359 | 5366 |
| 5360 AddIncludesForType($type); | 5367 AddIncludesForType($type); |
| 5361 | 5368 |
| 5362 AddToImplIncludes("V8${type}.h"); | 5369 AddToImplIncludes("V8${type}.h"); |
| 5363 return "V8${type}::HasInstance($value, $getIsolate, worldType($getIsolate))
? V8${type}::toNative(v8::Handle<v8::Object>::Cast($value)) : 0"; | 5370 return "V8${type}::HasInstance($value, $getIsolate, worldType($getIsolate))
? V8${type}::toNative(v8::Handle<v8::Object>::Cast($value)) : 0"; |
| 5364 } | 5371 } |
| 5365 | 5372 |
| 5366 sub CreateCustomSignature | 5373 sub CreateCustomSignature |
| 5367 { | 5374 { |
| (...skipping 828 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6196 my $interface = shift; | 6203 my $interface = shift; |
| 6197 | 6204 |
| 6198 return 1 if $interface->extendedAttributes->{"CustomToV8"}; | 6205 return 1 if $interface->extendedAttributes->{"CustomToV8"}; |
| 6199 return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; | 6206 return 1 if $interface->extendedAttributes->{"SpecialWrapFor"}; |
| 6200 return 1 if InheritsInterface($interface, "Document"); | 6207 return 1 if InheritsInterface($interface, "Document"); |
| 6201 | 6208 |
| 6202 return 0; | 6209 return 0; |
| 6203 } | 6210 } |
| 6204 | 6211 |
| 6205 1; | 6212 1; |
| OLD | NEW |