diff options
Diffstat (limited to 'Source/WebCore/bindings/scripts/CodeGenerator.pm')
-rw-r--r-- | Source/WebCore/bindings/scripts/CodeGenerator.pm | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/Source/WebCore/bindings/scripts/CodeGenerator.pm b/Source/WebCore/bindings/scripts/CodeGenerator.pm index 748b4e51e..89bd7f816 100644 --- a/Source/WebCore/bindings/scripts/CodeGenerator.pm +++ b/Source/WebCore/bindings/scripts/CodeGenerator.pm @@ -354,6 +354,23 @@ sub SkipIncludeHeader return 0; } +sub IsArrayType +{ + my $object = shift; + my $type = shift; + # FIXME: Add proper support for T[], T[]?, sequence<T>. + return $type =~ m/\[\]$/; +} + +sub IsConstructorTemplate +{ + my $object = shift; + my $dataNode = shift; + my $template = shift; + + return $dataNode->extendedAttributes->{"ConstructorTemplate"} && $dataNode->extendedAttributes->{"ConstructorTemplate"} eq $template; +} + sub IsNumericType { my $object = shift; @@ -409,6 +426,17 @@ sub IsSVGTypeWithWritablePropertiesNeedingTearOff return 0; } +sub IsTypedArrayType +{ + my $object = shift; + my $type = shift; + return 1 if (($type eq "ArrayBuffer") or ($type eq "ArrayBufferView")); + return 1 if (($type eq "Uint8Array") or ($type eq "Uint8ClampedArray") or ($type eq "Uint16Array") or ($type eq "Uint32Array")); + return 1 if (($type eq "Int8Array") or ($type eq "Int16Array") or ($type eq "Int32Array")); + return 1 if (($type eq "Float32Array") or ($type eq "Float64Array")); + return 0; +} + sub GetSVGTypeNeedingTearOff { my $object = shift; @@ -708,4 +736,22 @@ sub GetVisibleInterfaceName return $interfaceName ? $interfaceName : $dataNode->name; } +sub IsStrictSubtype +{ + my $object = shift; + my $dataNode = shift; + my $interfaceName = shift; + my $found = 0; + + $object->ForAllParents($dataNode, sub { + my $interface = shift; + if ($object->StripModule($interface->name) eq $interfaceName) { + $found = 1; + } + return "prune" if $found; + }, 0, 1); + + return $found; +} + 1; |