OLD | NEW |
1 #!/usr/bin/python | 1 #!/usr/bin/python |
2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file |
3 # for details. All rights reserved. Use of this source code is governed by a | 3 # for details. All rights reserved. Use of this source code is governed by a |
4 # BSD-style license that can be found in the LICENSE file. | 4 # BSD-style license that can be found in the LICENSE file. |
5 | 5 |
6 import sys | 6 import sys |
7 | 7 |
8 | 8 |
9 class IDLNode(object): | 9 class IDLNode(object): |
10 """Base class for all IDL elements. | 10 """Base class for all IDL elements. |
(...skipping 333 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 self._convert_ext_attrs(ast) | 344 self._convert_ext_attrs(ast) |
345 self._convert_annotations(ast) | 345 self._convert_annotations(ast) |
346 self.parents = self._convert_all(ast, 'ParentInterface', | 346 self.parents = self._convert_all(ast, 'ParentInterface', |
347 IDLParentInterface) | 347 IDLParentInterface) |
348 self.operations = self._convert_all(ast, 'Operation', IDLOperation) | 348 self.operations = self._convert_all(ast, 'Operation', IDLOperation) |
349 self.attributes = self._convert_all(ast, 'Attribute', IDLAttribute) | 349 self.attributes = self._convert_all(ast, 'Attribute', IDLAttribute) |
350 self.constants = self._convert_all(ast, 'Const', IDLConstant) | 350 self.constants = self._convert_all(ast, 'Const', IDLConstant) |
351 self.is_supplemental = 'Supplemental' in self.ext_attrs | 351 self.is_supplemental = 'Supplemental' in self.ext_attrs |
352 self.is_no_interface_object = 'NoInterfaceObject' in self.ext_attrs | 352 self.is_no_interface_object = 'NoInterfaceObject' in self.ext_attrs |
353 self.is_fc_suppressed = 'Suppressed' in self.ext_attrs | 353 self.is_fc_suppressed = 'Suppressed' in self.ext_attrs |
| 354 self.javascript_binding_name = self.id |
354 | 355 |
| 356 def has_attribute(self, candidate): |
| 357 for attribute in self.attributes: |
| 358 if attribute.id == candidate.id and attribute.is_fc_getter == candidate.is
_fc_getter and attribute.is_fc_setter == candidate.is_fc_setter: |
| 359 return True |
| 360 return False |
| 361 |
| 362 def merge(self, other): |
| 363 self.operations.extend(other.operations) |
| 364 for attribute in other.attributes: |
| 365 if not self.has_attribute(attribute): |
| 366 self.attributes.append(attribute) |
| 367 |
| 368 self.constants.extend(other.constants) |
355 | 369 |
356 class IDLParentInterface(IDLNode): | 370 class IDLParentInterface(IDLNode): |
357 """This IDLNode specialization is for 'Interface Child : Parent {}' | 371 """This IDLNode specialization is for 'Interface Child : Parent {}' |
358 declarations.""" | 372 declarations.""" |
359 def __init__(self, ast): | 373 def __init__(self, ast): |
360 IDLNode.__init__(self, ast) | 374 IDLNode.__init__(self, ast) |
361 self._convert_annotations(ast) | 375 self._convert_annotations(ast) |
362 self.type = self._convert_first(ast, 'InterfaceType', IDLType) | 376 self.type = self._convert_first(ast, 'InterfaceType', IDLType) |
363 | 377 |
364 | 378 |
(...skipping 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
454 """IDLDictNode specialization for one annotation.""" | 468 """IDLDictNode specialization for one annotation.""" |
455 def __init__(self, ast=None): | 469 def __init__(self, ast=None): |
456 IDLDictNode.__init__(self, ast) | 470 IDLDictNode.__init__(self, ast) |
457 self.id = None | 471 self.id = None |
458 if not ast: | 472 if not ast: |
459 return | 473 return |
460 for arg in self._find_all(ast, 'AnnotationArg'): | 474 for arg in self._find_all(ast, 'AnnotationArg'): |
461 name = self._find_first(arg, 'Id') | 475 name = self._find_first(arg, 'Id') |
462 value = self._find_first(arg, 'AnnotationArgValue') | 476 value = self._find_first(arg, 'AnnotationArgValue') |
463 self[name] = value | 477 self[name] = value |
OLD | NEW |