| OLD | NEW |
| 1 #!/usr/bin/python | 1 #!/usr/bin/python |
| 2 # Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file | 2 # Copyright (c) 2012, 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 """This module provides shared functionality for systems to generate | 6 """This module provides shared functionality for systems to generate |
| 7 Dart APIs from the IDL database.""" | 7 Dart APIs from the IDL database.""" |
| 8 | 8 |
| 9 import re | 9 import re |
| 10 import string | 10 import string |
| (...skipping 409 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 420 # name | 420 # name |
| 421 def TypeName(type_ids, interface): | 421 def TypeName(type_ids, interface): |
| 422 # Dynamically type this field for now. | 422 # Dynamically type this field for now. |
| 423 return 'Dynamic' | 423 return 'Dynamic' |
| 424 | 424 |
| 425 # ------------------------------------------------------------------------------ | 425 # ------------------------------------------------------------------------------ |
| 426 | 426 |
| 427 class IDLTypeInfo(object): | 427 class IDLTypeInfo(object): |
| 428 def __init__(self, idl_type, dart_type=None, | 428 def __init__(self, idl_type, dart_type=None, |
| 429 native_type=None, ref_counted=True, | 429 native_type=None, ref_counted=True, |
| 430 has_dart_wrapper=True, | 430 custom_to_native=False, |
| 431 custom_to_dart=False, conversion_includes=[]): | 431 custom_to_dart=False, conversion_includes=[]): |
| 432 self._idl_type = idl_type | 432 self._idl_type = idl_type |
| 433 self._dart_type = dart_type | 433 self._dart_type = dart_type |
| 434 self._native_type = native_type | 434 self._native_type = native_type |
| 435 self._ref_counted = ref_counted | 435 self._ref_counted = ref_counted |
| 436 self._has_dart_wrapper = has_dart_wrapper | 436 self._custom_to_native = custom_to_native |
| 437 self._custom_to_dart = custom_to_dart | 437 self._custom_to_dart = custom_to_dart |
| 438 self._conversion_includes = conversion_includes + [idl_type] | 438 self._conversion_includes = conversion_includes + [idl_type] |
| 439 | 439 |
| 440 def idl_type(self): | 440 def idl_type(self): |
| 441 return self._idl_type | 441 return self._idl_type |
| 442 | 442 |
| 443 def dart_type(self): | 443 def dart_type(self): |
| 444 return self._dart_type or self._idl_type | 444 return self._dart_type or self._idl_type |
| 445 | 445 |
| 446 def native_type(self): | 446 def native_type(self): |
| 447 return self._native_type or self._idl_type | 447 return self._native_type or self._idl_type |
| 448 | 448 |
| 449 def parameter_adapter_info(self): | 449 def parameter_adapter_info(self): |
| 450 native_type = self.native_type() | 450 native_type = self.native_type() |
| 451 if self._ref_counted: | 451 if self._ref_counted: |
| 452 native_type = 'RefPtr< %s >' % native_type | 452 native_type = 'RefPtr< %s >' % native_type |
| 453 if self._has_dart_wrapper: | 453 wrapper_type = 'Dart%s' % self.idl_type() |
| 454 wrapper_type = 'Dart%s' % self.idl_type() | 454 adapter_type = 'ParameterAdapter<%s, %s>' % (native_type, wrapper_type) |
| 455 adapter_type = 'ParameterAdapter<%s, %s>' % (native_type, wrapper_type) | 455 return (adapter_type, '"%s.h"' % wrapper_type) |
| 456 return (adapter_type, '"%s.h"' % wrapper_type) | 456 |
| 457 return ('ParameterAdapter< %s >' % native_type, '"%s.h"' % self._idl_type) | 457 def custom_to_native(self): |
| 458 return self._custom_to_native |
| 458 | 459 |
| 459 def parameter_type(self): | 460 def parameter_type(self): |
| 460 return '%s*' % self.native_type() | 461 return '%s*' % self.native_type() |
| 461 | 462 |
| 462 def webcore_includes(self): | 463 def webcore_includes(self): |
| 463 WTF_INCLUDES = [ | 464 WTF_INCLUDES = [ |
| 464 'ArrayBuffer', | 465 'ArrayBuffer', |
| 465 'ArrayBufferView', | 466 'ArrayBufferView', |
| 466 'Float32Array', | 467 'Float32Array', |
| 467 'Float64Array', | 468 'Float64Array', |
| (...skipping 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 635 | 636 |
| 636 'DOMStringList': PrimitiveIDLTypeInfo('DOMStringList', dart_type='List<Strin
g>'), | 637 'DOMStringList': PrimitiveIDLTypeInfo('DOMStringList', dart_type='List<Strin
g>'), |
| 637 'sequence': PrimitiveIDLTypeInfo('sequence', dart_type='List'), | 638 'sequence': PrimitiveIDLTypeInfo('sequence', dart_type='List'), |
| 638 'void': PrimitiveIDLTypeInfo('void', dart_type='void'), | 639 'void': PrimitiveIDLTypeInfo('void', dart_type='void'), |
| 639 | 640 |
| 640 'CSSRule': IDLTypeInfo('CSSRule', conversion_includes=['CSSImportRule']), | 641 'CSSRule': IDLTypeInfo('CSSRule', conversion_includes=['CSSImportRule']), |
| 641 'DOMException': IDLTypeInfo('DOMCoreException', dart_type='DOMException'), | 642 'DOMException': IDLTypeInfo('DOMCoreException', dart_type='DOMException'), |
| 642 'DOMStringMap': IDLTypeInfo('DOMStringMap', dart_type='Map<String, String>')
, | 643 'DOMStringMap': IDLTypeInfo('DOMStringMap', dart_type='Map<String, String>')
, |
| 643 'DOMWindow': IDLTypeInfo('DOMWindow', custom_to_dart=True), | 644 'DOMWindow': IDLTypeInfo('DOMWindow', custom_to_dart=True), |
| 644 'Element': IDLTypeInfo('Element', custom_to_dart=True), | 645 'Element': IDLTypeInfo('Element', custom_to_dart=True), |
| 645 'EventListener': IDLTypeInfo('EventListener', has_dart_wrapper=False), | 646 'EventListener': IDLTypeInfo('EventListener', custom_to_native=True), |
| 646 'EventTarget': IDLTypeInfo('EventTarget', has_dart_wrapper=False), | 647 'EventTarget': IDLTypeInfo('EventTarget', custom_to_native=True), |
| 647 'HTMLElement': IDLTypeInfo('HTMLElement', custom_to_dart=True), | 648 'HTMLElement': IDLTypeInfo('HTMLElement', custom_to_dart=True), |
| 648 'IDBAny': IDLTypeInfo('IDBAny', dart_type='Dynamic', has_dart_wrapper=False)
, | 649 'IDBAny': IDLTypeInfo('IDBAny', dart_type='Dynamic', custom_to_native=True), |
| 649 'IDBKey': IDLTypeInfo('IDBKey', dart_type='Dynamic', has_dart_wrapper=False)
, | 650 'IDBKey': IDLTypeInfo('IDBKey', dart_type='Dynamic', custom_to_native=True), |
| 650 'MediaQueryListListener': IDLTypeInfo('MediaQueryListListener', has_dart_wra
pper=False), | 651 'MediaQueryListListener': IDLTypeInfo('MediaQueryListListener', custom_to_na
tive=True), |
| 651 'OptionsObject': IDLTypeInfo('OptionsObject', has_dart_wrapper=False), | 652 'OptionsObject': IDLTypeInfo('OptionsObject', custom_to_native=True), |
| 652 'StyleSheet': IDLTypeInfo('StyleSheet', conversion_includes=['CSSStyleSheet'
]), | 653 'StyleSheet': IDLTypeInfo('StyleSheet', conversion_includes=['CSSStyleSheet'
]), |
| 653 'SVGElement': IDLTypeInfo('SVGElement', custom_to_dart=True), | 654 'SVGElement': IDLTypeInfo('SVGElement', custom_to_dart=True), |
| 654 | 655 |
| 655 'SVGAngle': SVGTearOffIDLTypeInfo('SVGAngle'), | 656 'SVGAngle': SVGTearOffIDLTypeInfo('SVGAngle'), |
| 656 'SVGLength': SVGTearOffIDLTypeInfo('SVGLength'), | 657 'SVGLength': SVGTearOffIDLTypeInfo('SVGLength'), |
| 657 'SVGLengthList': SVGTearOffIDLTypeInfo('SVGLengthList', ref_counted=False), | 658 'SVGLengthList': SVGTearOffIDLTypeInfo('SVGLengthList', ref_counted=False), |
| 658 'SVGMatrix': SVGTearOffIDLTypeInfo('SVGMatrix'), | 659 'SVGMatrix': SVGTearOffIDLTypeInfo('SVGMatrix'), |
| 659 'SVGNumber': SVGTearOffIDLTypeInfo('SVGNumber', native_type='SVGPropertyTear
Off<float>'), | 660 'SVGNumber': SVGTearOffIDLTypeInfo('SVGNumber', native_type='SVGPropertyTear
Off<float>'), |
| 660 'SVGNumberList': SVGTearOffIDLTypeInfo('SVGNumberList', ref_counted=False), | 661 'SVGNumberList': SVGTearOffIDLTypeInfo('SVGNumberList', ref_counted=False), |
| 661 'SVGPathSegList': SVGTearOffIDLTypeInfo('SVGPathSegList', native_type='SVGPa
thSegListPropertyTearOff', ref_counted=False), | 662 'SVGPathSegList': SVGTearOffIDLTypeInfo('SVGPathSegList', native_type='SVGPa
thSegListPropertyTearOff', ref_counted=False), |
| (...skipping 13 matching lines...) Expand all Loading... |
| 675 '"SVGAnimatedListPropertyTearOff.h"', | 676 '"SVGAnimatedListPropertyTearOff.h"', |
| 676 '"SVGTransformListPropertyTearOff.h"', | 677 '"SVGTransformListPropertyTearOff.h"', |
| 677 '"SVGPathSegListPropertyTearOff.h"', | 678 '"SVGPathSegListPropertyTearOff.h"', |
| 678 ] | 679 ] |
| 679 | 680 |
| 680 def GetIDLTypeInfo(idl_type_name): | 681 def GetIDLTypeInfo(idl_type_name): |
| 681 match = re.match(r'sequence<(\w+)>$', idl_type_name) | 682 match = re.match(r'sequence<(\w+)>$', idl_type_name) |
| 682 if match: | 683 if match: |
| 683 return SequenceIDLTypeInfo(idl_type_name, GetIDLTypeInfo(match.group(1))) | 684 return SequenceIDLTypeInfo(idl_type_name, GetIDLTypeInfo(match.group(1))) |
| 684 return _idl_type_registry.get(idl_type_name, IDLTypeInfo(idl_type_name)) | 685 return _idl_type_registry.get(idl_type_name, IDLTypeInfo(idl_type_name)) |
| OLD | NEW |