summaryrefslogtreecommitdiffstats
path: root/WebCore/bindings/scripts/CodeGeneratorCPP.pm
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/bindings/scripts/CodeGeneratorCPP.pm')
-rw-r--r--WebCore/bindings/scripts/CodeGeneratorCPP.pm60
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");
}