diff options
Diffstat (limited to 'WebCore/bindings/scripts/CodeGeneratorCPP.pm')
-rw-r--r-- | WebCore/bindings/scripts/CodeGeneratorCPP.pm | 60 |
1 files changed, 14 insertions, 46 deletions
diff --git a/WebCore/bindings/scripts/CodeGeneratorCPP.pm b/WebCore/bindings/scripts/CodeGeneratorCPP.pm index f441b0e..7df91ca 100644 --- a/WebCore/bindings/scripts/CodeGeneratorCPP.pm +++ b/WebCore/bindings/scripts/CodeGeneratorCPP.pm @@ -145,7 +145,6 @@ sub GetClassName # special cases return "WebDOMString" if $codeGenerator->IsStringType($name) or $name eq "SerializedScriptValue"; - return "WebDOMAbstractView" if $name eq "DOMWindow"; return "WebDOMObject" if $name eq "DOMObject"; return "bool" if $name eq "boolean"; return $name if $codeGenerator->IsPrimitiveType($name); @@ -155,10 +154,7 @@ sub GetClassName sub GetImplClassName { - my $name = $codeGenerator->StripModule(shift); - - return "DOMWindow" if $name eq "AbstractView"; - return $name; + return $codeGenerator->StripModule(shift); } sub GetParentImplClassName @@ -203,7 +199,8 @@ sub ShouldSkipTypeInImplementation return 1 if $typeInfo->signature->extendedAttributes->{"CustomArgumentHandling"} or $typeInfo->signature->extendedAttributes->{"CustomGetter"} - or $typeInfo->signature->extendedAttributes->{"NeedsUserGestureCheck"}; + or $typeInfo->signature->extendedAttributes->{"NeedsUserGestureCheck"} + or $typeInfo->signature->extendedAttributes->{"CPPCustom"}; # FIXME: We don't generate bindings for SVG related interfaces yet return 1 if $typeInfo->signature->name =~ /getSVGDocument/; @@ -297,12 +294,6 @@ sub AddIncludesForType return; } - if ($type eq "DOMWindow") { - $implIncludes{"DOMWindow.h"} = 1; - $implIncludes{"WebDOMAbstractView.h"} = 1; - return; - } - if ($type eq "EventListener") { $implIncludes{"WebNativeEventListener.h"} = 1; return; @@ -388,12 +379,12 @@ sub GenerateHeader push(@headerContent, " explicit $className($implClassNameWithNamespace*);\n"); # Copy constructor on classes which have the d-ptr - if (@{$dataNode->parents} eq 0) { + if ($parentName eq "WebDOMObject") { push(@headerContent, " $className(const $className&);\n"); } # Destructor - if (@{$dataNode->parents} eq 0) { + if ($parentName eq "WebDOMObject") { push(@headerContent, " ~$className();\n"); } @@ -505,7 +496,7 @@ sub GenerateHeader push(@headerContent, "\n"); push(@headerContent, " $implClassNameWithNamespace* impl() const;\n"); - if (@{$dataNode->parents} eq 0) { + if ($parentName eq "WebDOMObject") { push(@headerContent, "\nprotected:\n"); push(@headerContent, " struct ${className}Private;\n"); push(@headerContent, " ${className}Private* m_impl;\n"); @@ -607,7 +598,7 @@ sub GenerateImplementation push(@implContent, "#include <wtf/RefPtr.h>\n\n"); # Private datastructure, encapsulating WebCore types - if (@{$dataNode->parents} eq 0) { + if ($baseClass eq "WebDOMObject") { push(@implContent, "struct ${className}::${className}Private {\n"); push(@implContent, " ${className}Private($implClassNameWithNamespace* object = 0)\n"); push(@implContent, " : impl(object)\n"); @@ -620,12 +611,12 @@ sub GenerateImplementation # Constructor push(@implContent, "${className}::$className()\n"); push(@implContent, " : ${baseClass}()\n"); - push(@implContent, " , m_impl(0)\n") if (@{$dataNode->parents} eq 0); + push(@implContent, " , m_impl(0)\n") if ($baseClass eq "WebDOMObject"); push(@implContent, "{\n"); push(@implContent, "}\n\n"); push(@implContent, "${className}::$className($implClassNameWithNamespace* impl)\n"); - if (@{$dataNode->parents} eq 0) { + if ($baseClass eq "WebDOMObject") { push(@implContent, " : ${baseClass}()\n"); push(@implContent, " , m_impl(new ${className}Private(impl))\n"); push(@implContent, "{\n"); @@ -679,18 +670,7 @@ sub GenerateImplementation # - GETTER my $getterSig = "$attributeType $className\:\:$attributeName() const\n"; my $hasGetterException = @{$attribute->getterExceptions}; - my $getterContentHead; - my $reflect = $attribute->signature->extendedAttributes->{"Reflect"}; - my $reflectURL = $attribute->signature->extendedAttributes->{"ReflectURL"}; - if ($reflect || $reflectURL) { - my $contentAttributeName = (($reflect || $reflectURL) eq "1") ? $attributeName : ($reflect || $reflectURL); - my $namespace = $codeGenerator->NamespaceForAttributeName($interfaceName, $contentAttributeName); - $implIncludes{"${namespace}.h"} = 1; - my $getAttributeFunctionName = $reflectURL ? "getURLAttribute" : "getAttribute"; - $getterContentHead = "impl()->${getAttributeFunctionName}(WebCore::${namespace}::${contentAttributeName}Attr"; - } else { - $getterContentHead = "impl()->" . $codeGenerator->WK_lcfirst($attributeName) . "("; - } + my $getterContentHead = "impl()->" . $codeGenerator->GetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute); my $getterContentTail = ")"; # Special cases @@ -698,8 +678,6 @@ sub GenerateImplementation if ($attribute->signature->extendedAttributes->{"ConvertToString"}) { $getterContentHead = "WebCore::String::number(" . $getterContentHead; $getterContentTail .= ")"; - } elsif ($attribute->signature->extendedAttributes->{"ConvertFromString"}) { - $getterContentTail .= ".toInt()"; } elsif ($attribute->signature->type eq "SerializedScriptValue") { $getterContentHead = "$getterContentHead"; $getterContentTail .= "->toString()"; @@ -750,10 +728,8 @@ sub GenerateImplementation my $argName = "new" . ucfirst($attributeName); my $arg = GetCPPTypeGetter($argName, $idlType); - # The definition of ConvertFromString and ConvertToString is flipped for the setter - if ($attribute->signature->extendedAttributes->{"ConvertFromString"}) { - $arg = "WebCore::String::number($arg)"; - } elsif ($attribute->signature->extendedAttributes->{"ConvertToString"}) { + # The definition of ConvertToString is flipped for the setter + if ($attribute->signature->extendedAttributes->{"ConvertToString"}) { $arg = "WebCore::String($arg).toInt()"; } @@ -762,18 +738,10 @@ sub GenerateImplementation push(@implContent, "{\n"); push(@implContent, AddEarlyReturnStatement()); - my $reflect = $attribute->signature->extendedAttributes->{"Reflect"}; - my $reflectURL = $attribute->signature->extendedAttributes->{"ReflectURL"}; push(@implContent, " $exceptionInit\n") if $hasSetterException; my $ec = $hasSetterException ? ", ec" : ""; - if ($reflect || $reflectURL) { - my $contentAttributeName = (($reflect || $reflectURL) eq "1") ? $attributeName : ($reflect || $reflectURL); - my $namespace = $codeGenerator->NamespaceForAttributeName($interfaceName, $contentAttributeName); - $implIncludes{"${namespace}.h"} = 1; - push(@implContent, " impl()->setAttribute(WebCore::${namespace}::${contentAttributeName}Attr, $arg$ec);\n"); - } else { - push(@implContent, " impl()->$coreSetterName($arg$ec);\n"); - } + my $setterExpressionPrefix = $codeGenerator->SetterExpressionPrefix(\%implIncludes, $interfaceName, $attribute); + push(@implContent, " impl()->$setterExpressionPrefix$arg$ec);\n"); push(@implContent, " $exceptionRaiseOnError\n") if $hasSetterException; push(@implContent, "}\n\n"); } |