Chromium Code Reviews| Index: lib/dom/scripts/generator.py |
| diff --git a/lib/dom/scripts/generator.py b/lib/dom/scripts/generator.py |
| index 96d9fb0ac58e5fd56d7f007e6978ca92183bc847..8e69d65c1dc206496158eab7376e3ec6a77fb36d 100644 |
| --- a/lib/dom/scripts/generator.py |
| +++ b/lib/dom/scripts/generator.py |
| @@ -443,11 +443,6 @@ class IDLTypeInfo(object): |
| def dart_type(self): |
| if self._dart_type: |
|
Anton Muhin
2012/04/18 14:25:53
return self._dart_type or self._idl_type or it's t
podivilov
2012/04/18 14:56:26
Done.
|
| return self._dart_type |
| - |
| - match = re.match(r'sequence<(\w*)>$', self._idl_type) |
| - if match: |
| - return 'List<%s>' % DartType(match.group(1)) |
| - |
| return self._idl_type |
| def native_type(self): |
| @@ -501,16 +496,9 @@ class IDLTypeInfo(object): |
| return 'receiver->' |
| def conversion_includes(self): |
| - def NeededDartTypes(type_name): |
| - if re.match(r'Dynamic(\/.*)?$', type_name): return [] |
| - match = re.match(r'List<(\w*)>$', type_name) |
| - if match: |
| - return NeededDartTypes(match.group(1)) |
| - return [type_name] |
| - |
| return ['"Dart%s.h"' % include |
| for include in |
| - NeededDartTypes(self.dart_type()) + self._conversion_includes] |
| + [self.idl_type()] + self._conversion_includes] |
|
Anton Muhin
2012/04/18 14:25:53
maybe always add self.idl_type() into self._conver
podivilov
2012/04/18 14:56:26
Done.
|
| def conversion_cast(self, expression): |
| if self._conversion_template: |
| @@ -520,15 +508,30 @@ class IDLTypeInfo(object): |
| def custom_to_dart(self): |
| return self._custom_to_dart |
| + |
| +class CompositeIDLTypeInfo(IDLTypeInfo): |
|
Anton Muhin
2012/04/18 14:25:53
do you want be that generic? do we expect to have
podivilov
2012/04/18 14:56:26
Done.
|
| + def __init__(self, idl_type, collection_info, item_info): |
| + super(CompositeIDLTypeInfo, self).__init__(idl_type) |
| + self._collection_info = collection_info |
| + self._item_info = item_info |
| + |
| + def dart_type(self): |
| + collection_type = self._collection_info.dart_type() |
| + item_type = self._item_info.dart_type() |
| + return '%s<%s>' % (collection_type, item_type) |
| + |
| + def conversion_includes(self): |
| + return self._item_info.conversion_includes() |
| + |
| + |
| class PrimitiveIDLTypeInfo(IDLTypeInfo): |
| def __init__(self, idl_type, dart_type, native_type=None, ref_counted=False, |
| - conversion_template=None, conversion_includes=[], |
| + conversion_template=None, |
| webcore_getter_name='getAttribute', |
| webcore_setter_name='setAttribute'): |
| super(PrimitiveIDLTypeInfo, self).__init__(idl_type, dart_type=dart_type, |
| native_type=native_type, ref_counted=ref_counted, |
| - conversion_template=conversion_template, |
| - conversion_includes=conversion_includes) |
| + conversion_template=conversion_template) |
| self._webcore_getter_name = webcore_getter_name |
| self._webcore_setter_name = webcore_setter_name |
| @@ -544,7 +547,7 @@ class PrimitiveIDLTypeInfo(IDLTypeInfo): |
| return self.native_type() |
| def conversion_includes(self): |
| - return ['"Dart%s.h"' % include for include in self._conversion_includes] |
| + return [] |
| def webcore_getter_name(self): |
| return self._webcore_getter_name |
| @@ -620,26 +623,19 @@ _idl_type_registry = { |
| 'WebKitFlags': PrimitiveIDLTypeInfo('WebKitFlags', dart_type='Object'), |
| 'DOMStringList': PrimitiveIDLTypeInfo('DOMStringList', dart_type='List<String>'), |
| - 'DOMStringMap': PrimitiveIDLTypeInfo('DOMStringMap', dart_type='Map<String, String>', |
| - conversion_includes=['DOMStringMap']), |
| 'sequence': PrimitiveIDLTypeInfo('sequence', dart_type='List'), |
| 'void': PrimitiveIDLTypeInfo('void', dart_type='void'), |
| 'CSSRule': IDLTypeInfo('CSSRule', conversion_includes=['CSSImportRule']), |
| 'DOMException': IDLTypeInfo('DOMCoreException', dart_type='DOMException'), |
| + 'DOMStringMap': IDLTypeInfo('DOMStringMap', dart_type='Map<String, String>'), |
| 'DOMWindow': IDLTypeInfo('DOMWindow', custom_to_dart=True), |
| 'Element': IDLTypeInfo('Element', custom_to_dart=True), |
| 'EventListener': IDLTypeInfo('EventListener', has_dart_wrapper=False), |
| 'EventTarget': IDLTypeInfo('EventTarget', has_dart_wrapper=False), |
| 'HTMLElement': IDLTypeInfo('HTMLElement', custom_to_dart=True), |
| - 'IDBAny': IDLTypeInfo('IDBAny', dart_type='Dynamic', |
| - native_type='IDBAny', |
| - has_dart_wrapper=False, |
| - conversion_includes=['IDBAny']), |
| - 'IDBKey': IDLTypeInfo('IDBKey', dart_type='Dynamic', |
| - native_type='IDBKey', |
| - has_dart_wrapper=False, |
| - conversion_includes=['IDBKey']), |
| + 'IDBAny': IDLTypeInfo('IDBAny', dart_type='Dynamic', has_dart_wrapper=False), |
| + 'IDBKey': IDLTypeInfo('IDBKey', dart_type='Dynamic', has_dart_wrapper=False), |
| 'MediaQueryListListener': IDLTypeInfo('MediaQueryListListener', has_dart_wrapper=False), |
| 'OptionsObject': IDLTypeInfo('OptionsObject', has_dart_wrapper=False), |
| 'StyleSheet': IDLTypeInfo('StyleSheet', conversion_includes=['CSSStyleSheet']), |
| @@ -671,4 +667,9 @@ _svg_supplemental_includes = [ |
| ] |
| def GetIDLTypeInfo(idl_type_name): |
| + match = re.match(r'(\w+)<(\w+)>$', idl_type_name) |
| + if match: |
| + collection_info = GetIDLTypeInfo(match.group(1)) |
| + item_info = GetIDLTypeInfo(match.group(2)) |
| + return CompositeIDLTypeInfo(idl_type_name, collection_info, item_info) |
| return _idl_type_registry.get(idl_type_name, IDLTypeInfo(idl_type_name)) |