Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 # Copyright (C) 2013 Google Inc. All rights reserved. | 1 # Copyright (C) 2013 Google Inc. All rights reserved. |
| 2 # | 2 # |
| 3 # Redistribution and use in source and binary forms, with or without | 3 # Redistribution and use in source and binary forms, with or without |
| 4 # modification, are permitted provided that the following conditions are | 4 # modification, are permitted provided that the following conditions are |
| 5 # met: | 5 # met: |
| 6 # | 6 # |
| 7 # * Redistributions of source code must retain the above copyright | 7 # * Redistributions of source code must retain the above copyright |
| 8 # notice, this list of conditions and the following disclaimer. | 8 # notice, this list of conditions and the following disclaimer. |
| 9 # * Redistributions in binary form must reproduce the above | 9 # * Redistributions in binary form must reproduce the above |
| 10 # copyright notice, this list of conditions and the following disclaimer | 10 # copyright notice, this list of conditions and the following disclaimer |
| (...skipping 277 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 288 # Interfaces and Exceptions | 288 # Interfaces and Exceptions |
| 289 ################################################################################ | 289 ################################################################################ |
| 290 | 290 |
| 291 class IdlInterface(object): | 291 class IdlInterface(object): |
| 292 def __init__(self, idl_name, node=None): | 292 def __init__(self, idl_name, node=None): |
| 293 self.attributes = [] | 293 self.attributes = [] |
| 294 self.constants = [] | 294 self.constants = [] |
| 295 self.constructors = [] | 295 self.constructors = [] |
| 296 self.custom_constructors = [] | 296 self.custom_constructors = [] |
| 297 self.extended_attributes = {} | 297 self.extended_attributes = {} |
| 298 self.html_constructors = [] | |
| 298 self.operations = [] | 299 self.operations = [] |
| 299 self.parent = None | 300 self.parent = None |
| 300 self.serializer = None | 301 self.serializer = None |
| 301 self.stringifier = None | 302 self.stringifier = None |
| 302 self.iterable = None | 303 self.iterable = None |
| 303 self.has_indexed_elements = False | 304 self.has_indexed_elements = False |
| 304 self.maplike = None | 305 self.maplike = None |
| 305 self.setlike = None | 306 self.setlike = None |
| 306 self.original_interface = None | 307 self.original_interface = None |
| 307 self.partial_interfaces = [] | 308 self.partial_interfaces = [] |
| (...skipping 16 matching lines...) Expand all Loading... | |
| 324 child_class = child.GetClass() | 325 child_class = child.GetClass() |
| 325 if child_class == 'Attribute': | 326 if child_class == 'Attribute': |
| 326 attr = IdlAttribute(idl_name, child) | 327 attr = IdlAttribute(idl_name, child) |
| 327 if attr.idl_type.is_integer_type and attr.name == 'length': | 328 if attr.idl_type.is_integer_type and attr.name == 'length': |
| 328 has_integer_typed_length = True | 329 has_integer_typed_length = True |
| 329 self.attributes.append(attr) | 330 self.attributes.append(attr) |
| 330 elif child_class == 'Const': | 331 elif child_class == 'Const': |
| 331 self.constants.append(IdlConstant(idl_name, child)) | 332 self.constants.append(IdlConstant(idl_name, child)) |
| 332 elif child_class == 'ExtAttributes': | 333 elif child_class == 'ExtAttributes': |
| 333 extended_attributes = ext_attributes_node_to_extended_attributes (idl_name, child) | 334 extended_attributes = ext_attributes_node_to_extended_attributes (idl_name, child) |
| 334 self.constructors, self.custom_constructors = ( | 335 self.constructors, self.custom_constructors, self.html_construct ors = ( |
| 335 extended_attributes_to_constructors(idl_name, extended_attri butes)) | 336 extended_attributes_to_constructors(idl_name, extended_attri butes)) |
| 336 clear_constructor_attributes(extended_attributes) | 337 clear_constructor_attributes(extended_attributes) |
| 337 self.extended_attributes = extended_attributes | 338 self.extended_attributes = extended_attributes |
| 338 elif child_class == 'Operation': | 339 elif child_class == 'Operation': |
| 339 op = IdlOperation(idl_name, child) | 340 op = IdlOperation(idl_name, child) |
| 340 if 'getter' in op.specials and str(op.arguments[0].idl_type) == 'unsigned long': | 341 if 'getter' in op.specials and str(op.arguments[0].idl_type) == 'unsigned long': |
| 341 has_indexed_property_getter = True | 342 has_indexed_property_getter = True |
| 342 self.operations.append(op) | 343 self.operations.append(op) |
| 343 elif child_class == 'Inherit': | 344 elif child_class == 'Inherit': |
| 344 self.parent = child.GetName() | 345 self.parent = child.GetName() |
| (...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 427 children = node.GetChildren() | 428 children = node.GetChildren() |
| 428 for child in children: | 429 for child in children: |
| 429 child_class = child.GetClass() | 430 child_class = child.GetClass() |
| 430 if child_class == 'Attribute': | 431 if child_class == 'Attribute': |
| 431 attribute = IdlAttribute(idl_name, child) | 432 attribute = IdlAttribute(idl_name, child) |
| 432 self.attributes.append(attribute) | 433 self.attributes.append(attribute) |
| 433 elif child_class == 'Const': | 434 elif child_class == 'Const': |
| 434 self.constants.append(IdlConstant(idl_name, child)) | 435 self.constants.append(IdlConstant(idl_name, child)) |
| 435 elif child_class == 'ExtAttributes': | 436 elif child_class == 'ExtAttributes': |
| 436 extended_attributes = ext_attributes_node_to_extended_attributes (idl_name, child) | 437 extended_attributes = ext_attributes_node_to_extended_attributes (idl_name, child) |
| 437 self.constructors, self.custom_constructors = ( | 438 self.constructors, self.custom_constructors, self.html_construct ors = ( |
| 438 extended_attributes_to_constructors(idl_name, extended_attri butes)) | 439 extended_attributes_to_constructors(idl_name, extended_attri butes)) |
| 439 clear_constructor_attributes(extended_attributes) | 440 clear_constructor_attributes(extended_attributes) |
| 440 self.extended_attributes = extended_attributes | 441 self.extended_attributes = extended_attributes |
| 441 elif child_class == 'ExceptionOperation': | 442 elif child_class == 'ExceptionOperation': |
| 442 self.operations.append(IdlOperation.from_exception_operation_nod e(idl_name, child)) | 443 self.operations.append(IdlOperation.from_exception_operation_nod e(idl_name, child)) |
| 443 else: | 444 else: |
| 444 raise ValueError('Unrecognized node class: %s' % child_class) | 445 raise ValueError('Unrecognized node class: %s' % child_class) |
| 445 | 446 |
| 446 | 447 |
| 447 ################################################################################ | 448 ################################################################################ |
| (...skipping 513 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 961 constructor_list = extended_attributes.get('Constructors', []) | 962 constructor_list = extended_attributes.get('Constructors', []) |
| 962 constructors = [ | 963 constructors = [ |
| 963 IdlOperation.constructor_from_arguments_node('Constructor', idl_name, ar guments_node) | 964 IdlOperation.constructor_from_arguments_node('Constructor', idl_name, ar guments_node) |
| 964 for arguments_node in constructor_list] | 965 for arguments_node in constructor_list] |
| 965 | 966 |
| 966 custom_constructor_list = extended_attributes.get('CustomConstructors', []) | 967 custom_constructor_list = extended_attributes.get('CustomConstructors', []) |
| 967 custom_constructors = [ | 968 custom_constructors = [ |
| 968 IdlOperation.constructor_from_arguments_node('CustomConstructor', idl_na me, arguments_node) | 969 IdlOperation.constructor_from_arguments_node('CustomConstructor', idl_na me, arguments_node) |
| 969 for arguments_node in custom_constructor_list] | 970 for arguments_node in custom_constructor_list] |
| 970 | 971 |
| 972 if 'HTMLConstructor' in extended_attributes: | |
| 973 html_constructors = [IdlOperation.constructor_from_arguments_node('HTMLC onstructor', idl_name, None)] | |
|
bashi
2016/10/04 05:53:51
Could you help me understand why we need to use a
| |
| 974 else: | |
| 975 html_constructors = [] | |
| 976 | |
| 971 if 'NamedConstructor' in extended_attributes: | 977 if 'NamedConstructor' in extended_attributes: |
| 972 # FIXME: support overloaded named constructors, and make homogeneous | 978 # FIXME: support overloaded named constructors, and make homogeneous |
| 973 name = 'NamedConstructor' | 979 name = 'NamedConstructor' |
| 974 call_node = extended_attributes['NamedConstructor'] | 980 call_node = extended_attributes['NamedConstructor'] |
| 975 extended_attributes['NamedConstructor'] = call_node.GetName() | 981 extended_attributes['NamedConstructor'] = call_node.GetName() |
| 976 children = call_node.GetChildren() | 982 children = call_node.GetChildren() |
| 977 if len(children) != 1: | 983 if len(children) != 1: |
| 978 raise ValueError('NamedConstructor node expects 1 child, got %s.' % len(children)) | 984 raise ValueError('NamedConstructor node expects 1 child, got %s.' % len(children)) |
| 979 arguments_node = children[0] | 985 arguments_node = children[0] |
| 980 named_constructor = IdlOperation.constructor_from_arguments_node('NamedC onstructor', idl_name, arguments_node) | 986 named_constructor = IdlOperation.constructor_from_arguments_node('NamedC onstructor', idl_name, arguments_node) |
| 981 # FIXME: should return named_constructor separately; appended for Perl | 987 # FIXME: should return named_constructor separately; appended for Perl |
| 982 constructors.append(named_constructor) | 988 constructors.append(named_constructor) |
| 983 | 989 |
| 984 return constructors, custom_constructors | 990 return constructors, custom_constructors, html_constructors |
| 985 | 991 |
| 986 | 992 |
| 987 def clear_constructor_attributes(extended_attributes): | 993 def clear_constructor_attributes(extended_attributes): |
| 988 # Deletes Constructor*s* (plural), sets Constructor (singular) | 994 # Deletes Constructor*s* (plural), sets Constructor (singular) |
| 989 if 'Constructors' in extended_attributes: | 995 if 'Constructors' in extended_attributes: |
| 990 del extended_attributes['Constructors'] | 996 del extended_attributes['Constructors'] |
| 991 extended_attributes['Constructor'] = None | 997 extended_attributes['Constructor'] = None |
| 992 if 'CustomConstructors' in extended_attributes: | 998 if 'CustomConstructors' in extended_attributes: |
| 993 del extended_attributes['CustomConstructors'] | 999 del extended_attributes['CustomConstructors'] |
| 994 extended_attributes['CustomConstructor'] = None | 1000 extended_attributes['CustomConstructor'] = None |
| (...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1126 self.visit_typed_object(argument) | 1132 self.visit_typed_object(argument) |
| 1127 | 1133 |
| 1128 def visit_iterable(self, iterable): | 1134 def visit_iterable(self, iterable): |
| 1129 self.visit_typed_object(iterable) | 1135 self.visit_typed_object(iterable) |
| 1130 | 1136 |
| 1131 def visit_maplike(self, maplike): | 1137 def visit_maplike(self, maplike): |
| 1132 self.visit_typed_object(maplike) | 1138 self.visit_typed_object(maplike) |
| 1133 | 1139 |
| 1134 def visit_setlike(self, setlike): | 1140 def visit_setlike(self, setlike): |
| 1135 self.visit_typed_object(setlike) | 1141 self.visit_typed_object(setlike) |
| OLD | NEW |