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

Unified Diff: lib/dom/scripts/generator.py

Issue 10116025: Introduce CompositeIDLTypeInfo and clean up the code that deals with sequences. (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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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))
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698