Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(35)

Side by Side Diff: Source/bindings/scripts/v8_interface.py

Issue 345393004: IDL: Support 'stringifier' keyword (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: move handling of unnamed operations Created 6 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 # Copyright (C) 2013 Google Inc. All rights reserved. 1 # Copyright (C) 2013 Google Inc. All rights reserved.
2 # coding=utf-8 2 # coding=utf-8
3 # 3 #
4 # Redistribution and use in source and binary forms, with or without 4 # Redistribution and use in source and binary forms, with or without
5 # modification, are permitted provided that the following conditions are 5 # modification, are permitted provided that the following conditions are
6 # met: 6 # met:
7 # 7 #
8 # * Redistributions of source code must retain the above copyright 8 # * Redistributions of source code must retain the above copyright
9 # notice, this list of conditions and the following disclaimer. 9 # notice, this list of conditions and the following disclaimer.
10 # * Redistributions in binary form must reproduce the above 10 # * Redistributions in binary form must reproduce the above
(...skipping 18 matching lines...) Expand all
29 29
30 """Generate template values for an interface. 30 """Generate template values for an interface.
31 31
32 Design doc: http://www.chromium.org/developers/design-documents/idl-compiler 32 Design doc: http://www.chromium.org/developers/design-documents/idl-compiler
33 """ 33 """
34 34
35 from collections import defaultdict 35 from collections import defaultdict
36 import itertools 36 import itertools
37 from operator import itemgetter 37 from operator import itemgetter
38 38
39 import idl_definitions
40 from idl_definitions import IdlOperation
39 import idl_types 41 import idl_types
40 from idl_types import IdlType, inherits_interface 42 from idl_types import IdlType, inherits_interface
41 import v8_attributes 43 import v8_attributes
42 from v8_globals import includes 44 from v8_globals import includes
43 import v8_methods 45 import v8_methods
44 import v8_types 46 import v8_types
45 from v8_types import cpp_ptr_type, cpp_template_type 47 from v8_types import cpp_ptr_type, cpp_template_type
46 import v8_utilities 48 import v8_utilities
47 from v8_utilities import capitalize, conditional_string, cpp_name, gc_type, has_ extended_attribute_value, runtime_enabled_function_name 49 from v8_utilities import capitalize, conditional_string, cpp_name, gc_type, has_ extended_attribute_value, runtime_enabled_function_name
48 50
(...skipping 196 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 'has_per_context_enabled_attributes': any(attribute['per_context_enabled _function'] for attribute in attributes), 247 'has_per_context_enabled_attributes': any(attribute['per_context_enabled _function'] for attribute in attributes),
246 'has_replaceable_attributes': any(attribute['is_replaceable'] for attrib ute in attributes), 248 'has_replaceable_attributes': any(attribute['is_replaceable'] for attrib ute in attributes),
247 }) 249 })
248 250
249 # Methods 251 # Methods
250 methods = [v8_methods.method_context(interface, method) 252 methods = [v8_methods.method_context(interface, method)
251 for method in interface.operations 253 for method in interface.operations
252 if method.name] # Skip anonymous special operations (methods) 254 if method.name] # Skip anonymous special operations (methods)
253 compute_method_overloads_context(methods) 255 compute_method_overloads_context(methods)
254 256
257 # Stringifier
258 if interface.stringifier:
259 stringifier = interface.stringifier
260 method = IdlOperation()
261 method.name = 'toString'
262 method.idl_type = IdlType('DOMString')
263 method.extended_attributes.update(stringifier.extended_attributes)
264 if stringifier.attribute:
265 method.extended_attributes['ImplementedAs'] = stringifier.attribute. name
266 elif stringifier.operation:
267 method.extended_attributes['ImplementedAs'] = stringifier.operation. name
268 methods.append(v8_methods.method_context(interface, method))
269
255 per_context_enabled_methods = [] 270 per_context_enabled_methods = []
256 custom_registration_methods = [] 271 custom_registration_methods = []
257 method_configuration_methods = [] 272 method_configuration_methods = []
258 273
259 for method in methods: 274 for method in methods:
260 # Skip all but one method in each set of overloaded methods. 275 # Skip all but one method in each set of overloaded methods.
261 if 'overload_index' in method and 'overloads' not in method: 276 if 'overload_index' in method and 'overloads' not in method:
262 continue 277 continue
263 278
264 if 'overloads' in method: 279 if 'overloads' in method:
(...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after
1076 deleter = next( 1091 deleter = next(
1077 method 1092 method
1078 for method in interface.operations 1093 for method in interface.operations
1079 if ('deleter' in method.specials and 1094 if ('deleter' in method.specials and
1080 len(method.arguments) == 1 and 1095 len(method.arguments) == 1 and
1081 str(method.arguments[0].idl_type) == 'DOMString')) 1096 str(method.arguments[0].idl_type) == 'DOMString'))
1082 except StopIteration: 1097 except StopIteration:
1083 return None 1098 return None
1084 1099
1085 return property_deleter(deleter) 1100 return property_deleter(deleter)
OLDNEW
« no previous file with comments | « Source/bindings/scripts/idl_definitions.py ('k') | Source/bindings/tests/idls/TestInterface.idl » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698