| OLD | NEW |
| 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 366 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 | 377 |
| 378 def generated_iterator_method(name): | 378 def generated_iterator_method(name): |
| 379 return generated_method( | 379 return generated_method( |
| 380 return_type=IdlType('Iterator'), | 380 return_type=IdlType('Iterator'), |
| 381 name=name, | 381 name=name, |
| 382 extended_attributes=used_extended_attributes) | 382 extended_attributes=used_extended_attributes) |
| 383 | 383 |
| 384 iterator_method = generated_iterator_method('iterator') | 384 iterator_method = generated_iterator_method('iterator') |
| 385 | 385 |
| 386 if interface.iterable or interface.maplike or interface.setlike: | 386 if interface.iterable or interface.maplike or interface.setlike: |
| 387 methods.extend([ | 387 implicit_methods = [ |
| 388 generated_iterator_method('keys'), | 388 generated_iterator_method('keys'), |
| 389 generated_iterator_method('values'), | 389 generated_iterator_method('values'), |
| 390 generated_iterator_method('entries'), | 390 generated_iterator_method('entries'), |
| 391 | 391 |
| 392 # void forEach(Function callback, [Default=Undefined] optional a
ny thisArg) | 392 # void forEach(Function callback, [Default=Undefined] optional a
ny thisArg) |
| 393 generated_method(IdlType('void'), 'forEach', | 393 generated_method(IdlType('void'), 'forEach', |
| 394 arguments=[generated_argument(IdlType('Function
'), 'callback'), | 394 arguments=[generated_argument(IdlType('Function
'), 'callback'), |
| 395 generated_argument(IdlType('any'), '
thisArg', | 395 generated_argument(IdlType('any'), '
thisArg', |
| 396 is_optional=True, | 396 is_optional=True, |
| 397 extended_attribut
es={'Default': 'Undefined'})], | 397 extended_attribut
es={'Default': 'Undefined'})], |
| 398 extended_attributes=forEach_extended_attributes
), | 398 extended_attributes=forEach_extended_attributes
), |
| 399 ]) | 399 ] |
| 400 |
| 401 methods_by_name = {} |
| 402 for method in methods: |
| 403 methods_by_name.setdefault(method['name'], []).append(method) |
| 404 |
| 405 for implicit_method in implicit_methods: |
| 406 if implicit_method['name'] in methods_by_name: |
| 407 # FIXME: Check that the existing method is compatible. |
| 408 continue |
| 409 methods.append(implicit_method) |
| 400 | 410 |
| 401 # FIXME: maplike<> and setlike<> should also imply the presence of a | 411 # FIXME: maplike<> and setlike<> should also imply the presence of a |
| 402 # subset of keys(), values(), entries(), forEach(), has(), get(), add(), | 412 # subset of keys(), values(), entries(), forEach(), has(), get(), add(), |
| 403 # set(), delete() and clear(), and a 'size' attribute. | 413 # set(), delete() and clear(), and a 'size' attribute. |
| 404 | 414 |
| 405 # Stringifier | 415 # Stringifier |
| 406 if interface.stringifier: | 416 if interface.stringifier: |
| 407 stringifier = interface.stringifier | 417 stringifier = interface.stringifier |
| 408 stringifier_ext_attrs = stringifier.extended_attributes.copy() | 418 stringifier_ext_attrs = stringifier.extended_attributes.copy() |
| 409 if stringifier.attribute: | 419 if stringifier.attribute: |
| (...skipping 825 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1235 if str(idl_type) != 'boolean': | 1245 if str(idl_type) != 'boolean': |
| 1236 raise Exception( | 1246 raise Exception( |
| 1237 'Only deleters with boolean type are allowed, but type is "%s"' % | 1247 'Only deleters with boolean type are allowed, but type is "%s"' % |
| 1238 idl_type) | 1248 idl_type) |
| 1239 extended_attributes = deleter.extended_attributes | 1249 extended_attributes = deleter.extended_attributes |
| 1240 return { | 1250 return { |
| 1241 'is_custom': 'Custom' in extended_attributes, | 1251 'is_custom': 'Custom' in extended_attributes, |
| 1242 'is_raises_exception': 'RaisesException' in extended_attributes, | 1252 'is_raises_exception': 'RaisesException' in extended_attributes, |
| 1243 'name': cpp_name(deleter), | 1253 'name': cpp_name(deleter), |
| 1244 } | 1254 } |
| OLD | NEW |