| 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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 $object->GenerateHeader($interface); | 87 $object->GenerateHeader($interface); |
| 88 $object->GenerateImplementation($interface); | 88 $object->GenerateImplementation($interface); |
| 89 } | 89 } |
| 90 } | 90 } |
| 91 | 91 |
| 92 sub AddToImplIncludes | 92 sub AddToImplIncludes |
| 93 { | 93 { |
| 94 my $header = shift; | 94 my $header = shift; |
| 95 my $conditional = shift; | 95 my $conditional = shift; |
| 96 | 96 |
| 97 if ($header eq "Storage.h") { |
| 98 print caller; |
| 99 print "foo\n"; |
| 100 } |
| 101 |
| 97 if (not $conditional) { | 102 if (not $conditional) { |
| 98 $implIncludes{$header} = 1; | 103 $implIncludes{$header} = 1; |
| 99 } elsif (not exists($implIncludes{$header})) { | 104 } elsif (not exists($implIncludes{$header})) { |
| 100 $implIncludes{$header} = $conditional; | 105 $implIncludes{$header} = $conditional; |
| 101 } else { | 106 } else { |
| 102 my $oldValue = $implIncludes{$header}; | 107 my $oldValue = $implIncludes{$header}; |
| 103 if ($oldValue ne 1) { | 108 if ($oldValue ne 1) { |
| 104 my %newValue = (); | 109 my %newValue = (); |
| 105 $newValue{$conditional} = 1; | 110 $newValue{$conditional} = 1; |
| 106 foreach my $condition (split(/\|/, $oldValue)) { | 111 foreach my $condition (split(/\|/, $oldValue)) { |
| 107 $newValue{$condition} = 1; | 112 $newValue{$condition} = 1; |
| 108 } | 113 } |
| 109 $implIncludes{$header} = join("|", sort keys %newValue); | 114 $implIncludes{$header} = join("|", sort keys %newValue); |
| 110 } | 115 } |
| 111 } | 116 } |
| 112 } | 117 } |
| 113 | 118 |
| 119 sub AddInterfaceToImplIncludes |
| 120 { |
| 121 my $interface = shift; |
| 122 my $include = $codeGenerator->HFileForInterface($interface); |
| 123 |
| 124 AddToImplIncludes($include); |
| 125 } |
| 126 |
| 114 sub AddToHeader | 127 sub AddToHeader |
| 115 { | 128 { |
| 116 my $code = shift; | 129 my $code = shift; |
| 117 push(@headerContent, $code); | 130 push(@headerContent, $code); |
| 118 } | 131 } |
| 119 | 132 |
| 120 sub AddToImplContentInternals | 133 sub AddToImplContentInternals |
| 121 { | 134 { |
| 122 my $code = shift; | 135 my $code = shift; |
| 123 push(@implContentInternals, $code); | 136 push(@implContentInternals, $code); |
| (...skipping 550 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 674 # Event listeners on DOM nodes are explicitly supported in the GC controller
. | 687 # Event listeners on DOM nodes are explicitly supported in the GC controller
. |
| 675 if (!$codeGenerator->InheritsInterface($interface, "Node") && | 688 if (!$codeGenerator->InheritsInterface($interface, "Node") && |
| 676 $codeGenerator->InheritsExtendedAttribute($interface, "EventTarget")) { | 689 $codeGenerator->InheritsExtendedAttribute($interface, "EventTarget")) { |
| 677 push(@customInternalFields, "eventListenerCacheIndex"); | 690 push(@customInternalFields, "eventListenerCacheIndex"); |
| 678 } | 691 } |
| 679 return @customInternalFields; | 692 return @customInternalFields; |
| 680 } | 693 } |
| 681 | 694 |
| 682 sub GetHeaderClassInclude | 695 sub GetHeaderClassInclude |
| 683 { | 696 { |
| 684 my $v8InterfaceName = shift; | 697 my $interfaceName = shift; |
| 685 if ($v8InterfaceName =~ /SVGPathSeg/) { | 698 if ($interfaceName =~ /SVGPathSeg/) { |
| 686 $v8InterfaceName =~ s/Abs|Rel//; | 699 $interfaceName =~ s/Abs|Rel//; |
| 700 return "${interfaceName}.h"; |
| 687 } | 701 } |
| 688 return "wtf/${v8InterfaceName}.h" if $codeGenerator->IsTypedArrayType($v8Int
erfaceName); | 702 return "wtf/${interfaceName}.h" if $codeGenerator->IsTypedArrayType($interfa
ceName); |
| 689 return "" if ($codeGenerator->SkipIncludeHeader($v8InterfaceName)); | 703 return "" if ($codeGenerator->SkipIncludeHeader($interfaceName)); |
| 690 return "${v8InterfaceName}.h"; | 704 return $codeGenerator->HFileForInterface($interfaceName); |
| 691 } | 705 } |
| 692 | 706 |
| 693 sub GenerateHeaderCustomInternalFieldIndices | 707 sub GenerateHeaderCustomInternalFieldIndices |
| 694 { | 708 { |
| 695 my $interface = shift; | 709 my $interface = shift; |
| 696 my @customInternalFields = GetInternalFields($interface); | 710 my @customInternalFields = GetInternalFields($interface); |
| 697 my $customFieldCounter = 0; | 711 my $customFieldCounter = 0; |
| 698 foreach my $customInternalField (@customInternalFields) { | 712 foreach my $customInternalField (@customInternalFields) { |
| 699 AddToHeader(<<END); | 713 AddToHeader(<<END); |
| 700 static const int ${customInternalField} = v8DefaultWrapperInternalFieldCount
+ ${customFieldCounter}; | 714 static const int ${customInternalField} = v8DefaultWrapperInternalFieldCount
+ ${customFieldCounter}; |
| (...skipping 456 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1157 | 1171 |
| 1158 my $returnType = $attribute->signature->type; | 1172 my $returnType = $attribute->signature->type; |
| 1159 my $getterString; | 1173 my $getterString; |
| 1160 | 1174 |
| 1161 if ($getterStringUsesImp) { | 1175 if ($getterStringUsesImp) { |
| 1162 my ($functionName, @arguments) = $codeGenerator->GetterExpression(\%impl
Includes, $interfaceName, $attribute); | 1176 my ($functionName, @arguments) = $codeGenerator->GetterExpression(\%impl
Includes, $interfaceName, $attribute); |
| 1163 push(@arguments, "isNull") if $isNullable; | 1177 push(@arguments, "isNull") if $isNullable; |
| 1164 push(@arguments, "ec") if $useExceptions; | 1178 push(@arguments, "ec") if $useExceptions; |
| 1165 if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) { | 1179 if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) { |
| 1166 my $implementedBy = $attribute->signature->extendedAttributes->{"Imp
lementedBy"}; | 1180 my $implementedBy = $attribute->signature->extendedAttributes->{"Imp
lementedBy"}; |
| 1167 AddToImplIncludes("${implementedBy}.h"); | 1181 AddInterfaceToImplIncludes($implementedBy); |
| 1168 unshift(@arguments, "imp") if !$attribute->isStatic; | 1182 unshift(@arguments, "imp") if !$attribute->isStatic; |
| 1169 $functionName = "${implementedBy}::${functionName}"; | 1183 $functionName = "${implementedBy}::${functionName}"; |
| 1170 } elsif ($attribute->isStatic) { | 1184 } elsif ($attribute->isStatic) { |
| 1171 $functionName = "${interfaceName}::${functionName}"; | 1185 $functionName = "${interfaceName}::${functionName}"; |
| 1172 } else { | 1186 } else { |
| 1173 $functionName = "imp->${functionName}"; | 1187 $functionName = "imp->${functionName}"; |
| 1174 } | 1188 } |
| 1175 my ($arg, $subCode) = GenerateCallWith($attribute->signature->extendedAt
tributes->{"CallWith"}, " ", 0); | 1189 my ($arg, $subCode) = GenerateCallWith($attribute->signature->extendedAt
tributes->{"CallWith"}, " ", 0); |
| 1176 $code .= $subCode; | 1190 $code .= $subCode; |
| 1177 unshift(@arguments, @$arg); | 1191 unshift(@arguments, @$arg); |
| (...skipping 403 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1581 $code .= " imp->set$implSetterFunctionName(V8EventListenerLis
t::getEventListener(value, true, ListenerFindOrCreate)"; | 1595 $code .= " imp->set$implSetterFunctionName(V8EventListenerLis
t::getEventListener(value, true, ListenerFindOrCreate)"; |
| 1582 } | 1596 } |
| 1583 $code .= ", ec" if $useExceptions; | 1597 $code .= ", ec" if $useExceptions; |
| 1584 $code .= ");\n"; | 1598 $code .= ");\n"; |
| 1585 } else { | 1599 } else { |
| 1586 my ($functionName, @arguments) = $codeGenerator->SetterExpression(\%
implIncludes, $interfaceName, $attribute); | 1600 my ($functionName, @arguments) = $codeGenerator->SetterExpression(\%
implIncludes, $interfaceName, $attribute); |
| 1587 push(@arguments, $expression); | 1601 push(@arguments, $expression); |
| 1588 push(@arguments, "ec") if $useExceptions; | 1602 push(@arguments, "ec") if $useExceptions; |
| 1589 if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) { | 1603 if ($attribute->signature->extendedAttributes->{"ImplementedBy"}) { |
| 1590 my $implementedBy = $attribute->signature->extendedAttributes->{
"ImplementedBy"}; | 1604 my $implementedBy = $attribute->signature->extendedAttributes->{
"ImplementedBy"}; |
| 1591 AddToImplIncludes("${implementedBy}.h"); | 1605 AddInterfaceToImplIncludes($implementedBy); |
| 1592 unshift(@arguments, "imp") if !$attribute->isStatic; | 1606 unshift(@arguments, "imp") if !$attribute->isStatic; |
| 1593 $functionName = "${implementedBy}::${functionName}"; | 1607 $functionName = "${implementedBy}::${functionName}"; |
| 1594 } elsif ($attribute->isStatic) { | 1608 } elsif ($attribute->isStatic) { |
| 1595 $functionName = "${interfaceName}::${functionName}"; | 1609 $functionName = "${interfaceName}::${functionName}"; |
| 1596 } else { | 1610 } else { |
| 1597 $functionName = "imp->${functionName}"; | 1611 $functionName = "imp->${functionName}"; |
| 1598 } | 1612 } |
| 1599 my ($arg, $subCode) = GenerateCallWith($attribute->signature->extend
edAttributes->{"CallWith"}, " ", 1); | 1613 my ($arg, $subCode) = GenerateCallWith($attribute->signature->extend
edAttributes->{"CallWith"}, " ", 1); |
| 1600 $code .= $subCode; | 1614 $code .= $subCode; |
| 1601 unshift(@arguments, @$arg); | 1615 unshift(@arguments, @$arg); |
| (...skipping 1739 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3341 $has_constants = 1; | 3355 $has_constants = 1; |
| 3342 $code .= "static const V8DOMConfiguration::BatchedConstant ${v8Interface
Name}Consts[] = {\n"; | 3356 $code .= "static const V8DOMConfiguration::BatchedConstant ${v8Interface
Name}Consts[] = {\n"; |
| 3343 } | 3357 } |
| 3344 foreach my $constant (@{$interface->constants}) { | 3358 foreach my $constant (@{$interface->constants}) { |
| 3345 my $name = $constant->name; | 3359 my $name = $constant->name; |
| 3346 my $value = $constant->value; | 3360 my $value = $constant->value; |
| 3347 my $attrExt = $constant->extendedAttributes; | 3361 my $attrExt = $constant->extendedAttributes; |
| 3348 my $conditional = $attrExt->{"Conditional"}; | 3362 my $conditional = $attrExt->{"Conditional"}; |
| 3349 my $implementedBy = $attrExt->{"ImplementedBy"}; | 3363 my $implementedBy = $attrExt->{"ImplementedBy"}; |
| 3350 if ($implementedBy) { | 3364 if ($implementedBy) { |
| 3351 AddToImplIncludes("${implementedBy}.h"); | 3365 AddInterfaceToImplIncludes($implementedBy); |
| 3352 } | 3366 } |
| 3353 if ($attrExt->{"EnabledAtRuntime"}) { | 3367 if ($attrExt->{"EnabledAtRuntime"}) { |
| 3354 push(@constantsEnabledAtRuntime, $constant); | 3368 push(@constantsEnabledAtRuntime, $constant); |
| 3355 } else { | 3369 } else { |
| 3356 if ($conditional) { | 3370 if ($conditional) { |
| 3357 my $conditionalString = $codeGenerator->GenerateConditionalStrin
gFromAttributeValue($conditional); | 3371 my $conditionalString = $codeGenerator->GenerateConditionalStrin
gFromAttributeValue($conditional); |
| 3358 $code .= "#if ${conditionalString}\n"; | 3372 $code .= "#if ${conditionalString}\n"; |
| 3359 } | 3373 } |
| 3360 # If the value we're dealing with is a hex number, preprocess it int
o a signed integer | 3374 # If the value we're dealing with is a hex number, preprocess it int
o a signed integer |
| 3361 # here, rather than running static_cast<signed int> in the generated
code. | 3375 # here, rather than running static_cast<signed int> in the generated
code. |
| (...skipping 417 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3779 my $interfaceName = $interface->name; | 3793 my $interfaceName = $interface->name; |
| 3780 my $v8InterfaceName = "V8$interfaceName"; | 3794 my $v8InterfaceName = "V8$interfaceName"; |
| 3781 | 3795 |
| 3782 | 3796 |
| 3783 # - Add default header template | 3797 # - Add default header template |
| 3784 AddToHeader(GenerateHeaderContentHeader($interface)); | 3798 AddToHeader(GenerateHeaderContentHeader($interface)); |
| 3785 | 3799 |
| 3786 my @unsortedIncludes = (); | 3800 my @unsortedIncludes = (); |
| 3787 push(@unsortedIncludes, "#include \"ActiveDOMCallback.h\""); | 3801 push(@unsortedIncludes, "#include \"ActiveDOMCallback.h\""); |
| 3788 push(@unsortedIncludes, "#include \"DOMWrapperWorld.h\""); | 3802 push(@unsortedIncludes, "#include \"DOMWrapperWorld.h\""); |
| 3789 push(@unsortedIncludes, "#include \"$interfaceName.h\""); | 3803 my $interfaceHeader = $codeGenerator->HFileForInterface($interfaceName); |
| 3804 push(@unsortedIncludes, "#include \"$interfaceHeader\""); |
| 3790 push(@unsortedIncludes, "#include \"ScopedPersistent.h\""); | 3805 push(@unsortedIncludes, "#include \"ScopedPersistent.h\""); |
| 3791 push(@unsortedIncludes, "#include <v8.h>"); | 3806 push(@unsortedIncludes, "#include <v8.h>"); |
| 3792 push(@unsortedIncludes, "#include <wtf/Forward.h>"); | 3807 push(@unsortedIncludes, "#include <wtf/Forward.h>"); |
| 3793 AddToHeader(join("\n", sort @unsortedIncludes)); | 3808 AddToHeader(join("\n", sort @unsortedIncludes)); |
| 3794 | 3809 |
| 3795 AddToHeader("\n\nnamespace WebCore {\n\n"); | 3810 AddToHeader("\n\nnamespace WebCore {\n\n"); |
| 3796 AddToHeader("class ScriptExecutionContext;\n\n"); | 3811 AddToHeader("class ScriptExecutionContext;\n\n"); |
| 3797 AddToHeader("class $v8InterfaceName : public $interfaceName, public ActiveDO
MCallback {\n"); | 3812 AddToHeader("class $v8InterfaceName : public $interfaceName, public ActiveDO
MCallback {\n"); |
| 3798 | 3813 |
| 3799 AddToHeader(<<END); | 3814 AddToHeader(<<END); |
| (...skipping 393 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4193 if ($function->signature->extendedAttributes->{"ImplementedAs"}) { | 4208 if ($function->signature->extendedAttributes->{"ImplementedAs"}) { |
| 4194 $name = $function->signature->extendedAttributes->{"ImplementedAs"}; | 4209 $name = $function->signature->extendedAttributes->{"ImplementedAs"}; |
| 4195 } | 4210 } |
| 4196 | 4211 |
| 4197 my $index = 0; | 4212 my $index = 0; |
| 4198 | 4213 |
| 4199 my @arguments; | 4214 my @arguments; |
| 4200 my $functionName; | 4215 my $functionName; |
| 4201 my $implementedBy = $function->signature->extendedAttributes->{"ImplementedB
y"}; | 4216 my $implementedBy = $function->signature->extendedAttributes->{"ImplementedB
y"}; |
| 4202 if ($implementedBy) { | 4217 if ($implementedBy) { |
| 4203 AddToImplIncludes("${implementedBy}.h"); | 4218 AddInterfaceToImplIncludes($implementedBy); |
| 4204 unshift(@arguments, "imp") if !$function->isStatic; | 4219 unshift(@arguments, "imp") if !$function->isStatic; |
| 4205 $functionName = "${implementedBy}::${name}"; | 4220 $functionName = "${implementedBy}::${name}"; |
| 4206 } elsif ($function->isStatic) { | 4221 } elsif ($function->isStatic) { |
| 4207 $functionName = "${interfaceName}::${name}"; | 4222 $functionName = "${interfaceName}::${name}"; |
| 4208 } else { | 4223 } else { |
| 4209 $functionName = "imp->${name}"; | 4224 $functionName = "imp->${name}"; |
| 4210 } | 4225 } |
| 4211 | 4226 |
| 4212 my $callWith = $function->signature->extendedAttributes->{"CallWith"}; | 4227 my $callWith = $function->signature->extendedAttributes->{"CallWith"}; |
| 4213 my ($callWithArgs, $subCode) = GenerateCallWith($callWith, $indent, 0, $func
tion); | 4228 my ($callWithArgs, $subCode) = GenerateCallWith($callWith, $indent, 0, $func
tion); |
| (...skipping 664 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4878 | 4893 |
| 4879 sub GetPassRefPtrType | 4894 sub GetPassRefPtrType |
| 4880 { | 4895 { |
| 4881 my $v8InterfaceName = shift; | 4896 my $v8InterfaceName = shift; |
| 4882 | 4897 |
| 4883 my $angleBracketSpace = $v8InterfaceName =~ />$/ ? " " : ""; | 4898 my $angleBracketSpace = $v8InterfaceName =~ />$/ ? " " : ""; |
| 4884 return "PassRefPtr<${v8InterfaceName}${angleBracketSpace}>"; | 4899 return "PassRefPtr<${v8InterfaceName}${angleBracketSpace}>"; |
| 4885 } | 4900 } |
| 4886 | 4901 |
| 4887 1; | 4902 1; |
| OLD | NEW |