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 194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 'v8_set_return_value_for_main_world': v8_set_return_value_statement(for_
main_world=True), | 205 'v8_set_return_value_for_main_world': v8_set_return_value_statement(for_
main_world=True), |
206 'v8_set_return_value': v8_set_return_value_statement(), | 206 'v8_set_return_value': v8_set_return_value_statement(), |
207 }) | 207 }) |
208 | 208 |
209 | 209 |
210 def getter_expression(interface, attribute, contents): | 210 def getter_expression(interface, attribute, contents): |
211 arguments = [] | 211 arguments = [] |
212 this_getter_base_name = getter_base_name(interface, attribute, arguments) | 212 this_getter_base_name = getter_base_name(interface, attribute, arguments) |
213 getter_name = scoped_name(interface, attribute, this_getter_base_name) | 213 getter_name = scoped_name(interface, attribute, this_getter_base_name) |
214 | 214 |
215 arguments.extend(v8_utilities.call_with_arguments(attribute)) | 215 arguments.extend(v8_utilities.call_with_arguments( |
| 216 attribute.extended_attributes.get('CallWith'))) |
216 # Members of IDL partial interface definitions are implemented in C++ as | 217 # Members of IDL partial interface definitions are implemented in C++ as |
217 # static member functions, which for instance members (non-static members) | 218 # static member functions, which for instance members (non-static members) |
218 # take *impl as their first argument | 219 # take *impl as their first argument |
219 if ('PartialInterfaceImplementedAs' in attribute.extended_attributes and | 220 if ('PartialInterfaceImplementedAs' in attribute.extended_attributes and |
220 not attribute.is_static): | 221 not attribute.is_static): |
221 arguments.append('*impl') | 222 arguments.append('*impl') |
222 if attribute.idl_type.is_nullable and not contents['has_type_checking_nullab
le']: | 223 if attribute.idl_type.is_nullable and not contents['has_type_checking_nullab
le']: |
223 arguments.append('isNull') | 224 arguments.append('isNull') |
224 if contents['is_getter_raises_exception']: | 225 if contents['is_getter_raises_exception']: |
225 arguments.append('exceptionState') | 226 arguments.append('exceptionState') |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 attribute = target_attribute() | 301 attribute = target_attribute() |
301 | 302 |
302 contents.update({ | 303 contents.update({ |
303 'cpp_setter': setter_expression(interface, attribute, contents), | 304 'cpp_setter': setter_expression(interface, attribute, contents), |
304 'v8_value_to_local_cpp_value': attribute.idl_type.v8_value_to_local_cpp_
value(extended_attributes, 'v8Value', 'cppValue'), | 305 'v8_value_to_local_cpp_value': attribute.idl_type.v8_value_to_local_cpp_
value(extended_attributes, 'v8Value', 'cppValue'), |
305 }) | 306 }) |
306 | 307 |
307 | 308 |
308 def setter_expression(interface, attribute, contents): | 309 def setter_expression(interface, attribute, contents): |
309 extended_attributes = attribute.extended_attributes | 310 extended_attributes = attribute.extended_attributes |
310 arguments = v8_utilities.call_with_arguments(attribute, extended_attributes.
get('SetterCallWith')) | 311 arguments = v8_utilities.call_with_arguments( |
| 312 extended_attributes.get('SetterCallWith') or |
| 313 extended_attributes.get('CallWith')) |
311 | 314 |
312 this_setter_base_name = setter_base_name(interface, attribute, arguments) | 315 this_setter_base_name = setter_base_name(interface, attribute, arguments) |
313 setter_name = scoped_name(interface, attribute, this_setter_base_name) | 316 setter_name = scoped_name(interface, attribute, this_setter_base_name) |
314 | 317 |
315 # Members of IDL partial interface definitions are implemented in C++ as | 318 # Members of IDL partial interface definitions are implemented in C++ as |
316 # static member functions, which for instance members (non-static members) | 319 # static member functions, which for instance members (non-static members) |
317 # take *impl as their first argument | 320 # take *impl as their first argument |
318 if ('PartialInterfaceImplementedAs' in extended_attributes and | 321 if ('PartialInterfaceImplementedAs' in extended_attributes and |
319 not attribute.is_static): | 322 not attribute.is_static): |
320 arguments.append('*impl') | 323 arguments.append('*impl') |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
422 lambda self: strip_suffix(self.base_type, 'Constructor')) | 425 lambda self: strip_suffix(self.base_type, 'Constructor')) |
423 | 426 |
424 | 427 |
425 def is_constructor_attribute(attribute): | 428 def is_constructor_attribute(attribute): |
426 # FIXME: replace this with [ConstructorAttribute] extended attribute | 429 # FIXME: replace this with [ConstructorAttribute] extended attribute |
427 return attribute.idl_type.base_type.endswith('Constructor') | 430 return attribute.idl_type.base_type.endswith('Constructor') |
428 | 431 |
429 | 432 |
430 def generate_constructor_getter(interface, attribute, contents): | 433 def generate_constructor_getter(interface, attribute, contents): |
431 contents['needs_constructor_getter_callback'] = contents['measure_as'] or co
ntents['deprecate_as'] | 434 contents['needs_constructor_getter_callback'] = contents['measure_as'] or co
ntents['deprecate_as'] |
OLD | NEW |