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

Side by Side Diff: lib/dom/scripts/generator.py

Issue 10155027: Support custom to native conversions. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: . Created 8 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « no previous file | lib/dom/scripts/systemnative.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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
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
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
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))
OLDNEW
« no previous file with comments | « no previous file | lib/dom/scripts/systemnative.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698