| Index: Source/bindings/scripts/v8_utilities.py
|
| diff --git a/Source/bindings/scripts/v8_utilities.py b/Source/bindings/scripts/v8_utilities.py
|
| index c4935d79d17f692a3c5eba27ac07d598fc5a8d93..ba5dd6f31290cdc1522d12cf24bfdcf9739192ff 100644
|
| --- a/Source/bindings/scripts/v8_utilities.py
|
| +++ b/Source/bindings/scripts/v8_utilities.py
|
| @@ -37,7 +37,7 @@ import re
|
|
|
| from idl_types import IdlTypeBase
|
| import idl_types
|
| -from idl_definitions import Exposure
|
| +from idl_definitions import Exposure, IdlInterface
|
| from v8_globals import includes
|
| import v8_types
|
|
|
| @@ -397,3 +397,107 @@ def runtime_enabled_function_name(definition_or_member):
|
| return None
|
| feature_name = extended_attributes['RuntimeEnabled']
|
| return 'RuntimeEnabledFeatures::%sEnabled' % uncapitalize(feature_name)
|
| +
|
| +
|
| +################################################################################
|
| +# Indexed properties
|
| +# http://heycam.github.io/webidl/#idl-indexed-properties
|
| +################################################################################
|
| +
|
| +def indexed_property_getter(interface):
|
| + try:
|
| + # Find indexed property getter, if present; has form:
|
| + # getter TYPE [OPTIONAL_IDENTIFIER](unsigned long ARG1)
|
| + return next(
|
| + method
|
| + for method in interface.operations
|
| + if ('getter' in method.specials and
|
| + len(method.arguments) == 1 and
|
| + str(method.arguments[0].idl_type) == 'unsigned long'))
|
| + except StopIteration:
|
| + return None
|
| +
|
| +
|
| +def indexed_property_setter(interface):
|
| + try:
|
| + # Find indexed property setter, if present; has form:
|
| + # setter RETURN_TYPE [OPTIONAL_IDENTIFIER](unsigned long ARG1, ARG_TYPE ARG2)
|
| + return next(
|
| + method
|
| + for method in interface.operations
|
| + if ('setter' in method.specials and
|
| + len(method.arguments) == 2 and
|
| + str(method.arguments[0].idl_type) == 'unsigned long'))
|
| + except StopIteration:
|
| + return None
|
| +
|
| +
|
| +def indexed_property_deleter(interface):
|
| + try:
|
| + # Find indexed property deleter, if present; has form:
|
| + # deleter TYPE [OPTIONAL_IDENTIFIER](unsigned long ARG)
|
| + return next(
|
| + method
|
| + for method in interface.operations
|
| + if ('deleter' in method.specials and
|
| + len(method.arguments) == 1 and
|
| + str(method.arguments[0].idl_type) == 'unsigned long'))
|
| + except StopIteration:
|
| + return None
|
| +
|
| +
|
| +################################################################################
|
| +# Named properties
|
| +# http://heycam.github.io/webidl/#idl-named-properties
|
| +################################################################################
|
| +
|
| +def named_property_getter(interface):
|
| + try:
|
| + # Find named property getter, if present; has form:
|
| + # getter TYPE [OPTIONAL_IDENTIFIER](DOMString ARG1)
|
| + getter = next(
|
| + method
|
| + for method in interface.operations
|
| + if ('getter' in method.specials and
|
| + len(method.arguments) == 1 and
|
| + str(method.arguments[0].idl_type) == 'DOMString'))
|
| + getter.name = getter.name or 'anonymousNamedGetter'
|
| + return getter
|
| + except StopIteration:
|
| + return None
|
| +
|
| +
|
| +def named_property_setter(interface):
|
| + try:
|
| + # Find named property setter, if present; has form:
|
| + # setter RETURN_TYPE [OPTIONAL_IDENTIFIER](DOMString ARG1, ARG_TYPE ARG2)
|
| + return next(
|
| + method
|
| + for method in interface.operations
|
| + if ('setter' in method.specials and
|
| + len(method.arguments) == 2 and
|
| + str(method.arguments[0].idl_type) == 'DOMString'))
|
| + except StopIteration:
|
| + return None
|
| +
|
| +
|
| +def named_property_deleter(interface):
|
| + try:
|
| + # Find named property deleter, if present; has form:
|
| + # deleter TYPE [OPTIONAL_IDENTIFIER](DOMString ARG)
|
| + return next(
|
| + method
|
| + for method in interface.operations
|
| + if ('deleter' in method.specials and
|
| + len(method.arguments) == 1 and
|
| + str(method.arguments[0].idl_type) == 'DOMString'))
|
| + except StopIteration:
|
| + return None
|
| +
|
| +
|
| +IdlInterface.indexed_property_getter = property(indexed_property_getter)
|
| +IdlInterface.indexed_property_setter = property(indexed_property_setter)
|
| +IdlInterface.indexed_property_deleter = property(indexed_property_deleter)
|
| +IdlInterface.named_property_getter = property(named_property_getter)
|
| +IdlInterface.named_property_setter = property(named_property_setter)
|
| +IdlInterface.named_property_deleter = property(named_property_deleter)
|
|
|