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

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

Issue 22357003: MERGE: 152953-155080 (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 7 years, 4 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 | « tools/dom/scripts/dartgenerator.py ('k') | tools/dom/scripts/htmlrenamer.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 copy 9 import copy
10 import json 10 import json
11 import monitored 11 import monitored
12 import os 12 import os
13 import re 13 import re
14 from htmlrenamer import html_interface_renames, typed_array_renames 14 from htmlrenamer import html_interface_renames, typed_array_renames
15 15
16 _pure_interfaces = monitored.Set('generator._pure_interfaces', [ 16 _pure_interfaces = monitored.Set('generator._pure_interfaces', [
17 # TODO(sra): DOMStringMap should be a class implementing Map<String,String>. 17 # TODO(sra): DOMStringMap should be a class implementing Map<String,String>.
18 'DOMStringMap', 18 'DOMStringMap',
19 'ChildNode', 19 'ChildNode',
20 'ElementTimeControl', 20 'ElementTimeControl',
21 'EventListener', 21 'EventListener',
22 'FileException',
22 'MediaQueryListListener', 23 'MediaQueryListListener',
23 'MutationCallback', 24 'MutationCallback',
24 'ParentNode', 25 'ParentNode',
25 'SVGExternalResourcesRequired', 26 'SVGExternalResourcesRequired',
26 'SVGFilterPrimitiveStandardAttributes', 27 'SVGFilterPrimitiveStandardAttributes',
27 'SVGFitToViewBox', 28 'SVGFitToViewBox',
28 'SVGLangSpace', 29 'SVGLangSpace',
29 'SVGLocatable', 30 'SVGLocatable',
30 'SVGTests', 31 'SVGTests',
31 'SVGTransformable', 32 'SVGTransformable',
32 'SVGURIReference', 33 'SVGURIReference',
33 'SVGZoomAndPan', 34 'SVGZoomAndPan',
34 'TimeoutHandler', 35 'TimeoutHandler',
36 'WindowBase64',
35 'WindowTimers', 37 'WindowTimers',
36 'WorkerPerformance',
37 ]) 38 ])
38 39
39 def IsPureInterface(interface_name): 40 def IsPureInterface(interface_name):
40 return interface_name in _pure_interfaces 41 return interface_name in _pure_interfaces
41 42
42 # 43 #
43 # Classes which have native constructors but which we are suppressing because 44 # Classes which have native constructors but which we are suppressing because
44 # they are not cross-platform. 45 # they are not cross-platform.
45 # 46 #
46 _suppressed_native_constructors = monitored.Set( 47 _suppressed_native_constructors = monitored.Set(
(...skipping 640 matching lines...) Expand 10 before | Expand all | Expand 10 after
687 if self._idl_type in WTF_INCLUDES: 688 if self._idl_type in WTF_INCLUDES:
688 return ['<wtf/%s.h>' % self.native_type()] 689 return ['<wtf/%s.h>' % self.native_type()]
689 690
690 # TODO(vsm): Why does this need special casing? 691 # TODO(vsm): Why does this need special casing?
691 if self._idl_type == 'AnalyserNode': 692 if self._idl_type == 'AnalyserNode':
692 return ['"AnalyserNode.h"', '<wtf/Uint8Array.h>'] 693 return ['"AnalyserNode.h"', '<wtf/Uint8Array.h>']
693 694
694 if not self._idl_type.startswith('SVG'): 695 if not self._idl_type.startswith('SVG'):
695 return ['"%s.h"' % self.native_type()] 696 return ['"%s.h"' % self.native_type()]
696 697
697 if self._idl_type in ['SVGNumber', 'SVGPoint']: 698 include = self._idl_type
698 return ['"SVGPropertyTearOff.h"']
699 if self._idl_type.startswith('SVGPathSeg'):
700 include = self._idl_type.replace('Abs', '').replace('Rel', '')
701 else:
702 include = self._idl_type
703 return ['"%s.h"' % include] + _svg_supplemental_includes 699 return ['"%s.h"' % include] + _svg_supplemental_includes
704 700
705 def receiver(self): 701 def receiver(self):
706 return 'receiver->' 702 return 'receiver->'
707 703
708 def conversion_includes(self): 704 def conversion_includes(self):
709 includes = [self._idl_type] + (self._data.conversion_includes or []) 705 includes = [self._idl_type] + (self._data.conversion_includes or [])
710 return ['"Dart%s.h"' % include for include in includes] 706 return ['"Dart%s.h"' % include for include in includes]
711 707
712 def to_dart_conversion(self, value, interface_name=None, attributes=None): 708 def to_dart_conversion(self, value, interface_name=None, attributes=None):
(...skipping 388 matching lines...) Expand 10 before | Expand all | Expand 10 after
1101 'Uint16Array': TypedListTypeData('int'), 1097 'Uint16Array': TypedListTypeData('int'),
1102 'Uint32Array': TypedListTypeData('int'), 1098 'Uint32Array': TypedListTypeData('int'),
1103 1099
1104 'ArrayBufferView': TypeData(clazz='BasicTypedList'), 1100 'ArrayBufferView': TypeData(clazz='BasicTypedList'),
1105 'ArrayBuffer': TypeData(clazz='BasicTypedList'), 1101 'ArrayBuffer': TypeData(clazz='BasicTypedList'),
1106 1102
1107 'SVGAngle': TypeData(clazz='SVGTearOff'), 1103 'SVGAngle': TypeData(clazz='SVGTearOff'),
1108 'SVGLength': TypeData(clazz='SVGTearOff'), 1104 'SVGLength': TypeData(clazz='SVGTearOff'),
1109 'SVGLengthList': TypeData(clazz='SVGTearOff', item_type='SVGLength'), 1105 'SVGLengthList': TypeData(clazz='SVGTearOff', item_type='SVGLength'),
1110 'SVGMatrix': TypeData(clazz='SVGTearOff'), 1106 'SVGMatrix': TypeData(clazz='SVGTearOff'),
1111 'SVGNumber': TypeData(clazz='SVGTearOff', native_type='SVGPropertyTearOff<fl oat>'), 1107 'SVGNumber': TypeData(clazz='SVGTearOff', native_type='SVGPropertyTearOff<SV GNumber>'),
1112 'SVGNumberList': TypeData(clazz='SVGTearOff', item_type='SVGNumber'), 1108 'SVGNumberList': TypeData(clazz='SVGTearOff', item_type='SVGNumber'),
1113 'SVGPathSegList': TypeData(clazz='SVGTearOff', item_type='SVGPathSeg', 1109 'SVGPathSegList': TypeData(clazz='SVGTearOff', item_type='SVGPathSeg',
1114 native_type='SVGPathSegListPropertyTearOff'), 1110 native_type='SVGPathSegListPropertyTearOff'),
1115 'SVGPoint': TypeData(clazz='SVGTearOff', native_type='SVGPropertyTearOff<Flo atPoint>'), 1111 'SVGPoint': TypeData(clazz='SVGTearOff', native_type='SVGPropertyTearOff<Flo atPoint>'),
1116 'SVGPointList': TypeData(clazz='SVGTearOff'), 1112 'SVGPointList': TypeData(clazz='SVGTearOff'),
1117 'SVGPreserveAspectRatio': TypeData(clazz='SVGTearOff'), 1113 'SVGPreserveAspectRatio': TypeData(clazz='SVGTearOff'),
1118 'SVGRect': TypeData(clazz='SVGTearOff', native_type='SVGPropertyTearOff<Floa tRect>'), 1114 'SVGRect': TypeData(clazz='SVGTearOff', native_type='SVGPropertyTearOff<Floa tRect>'),
1119 'SVGStringList': TypeData(clazz='SVGTearOff', item_type='DOMString', 1115 'SVGStringList': TypeData(clazz='SVGTearOff', item_type='DOMString',
1120 native_type='SVGStaticListPropertyTearOff<SVGStringList>'), 1116 native_type='SVGStaticListPropertyTearOff<SVGStringList>'),
1121 'SVGTransform': TypeData(clazz='SVGTearOff'), 1117 'SVGTransform': TypeData(clazz='SVGTearOff'),
(...skipping 21 matching lines...) Expand all
1143 self._cache[type_name] = self._TypeInfo(type_name) 1139 self._cache[type_name] = self._TypeInfo(type_name)
1144 return self._cache[type_name] 1140 return self._cache[type_name]
1145 1141
1146 def DartType(self, type_name): 1142 def DartType(self, type_name):
1147 return self.TypeInfo(type_name).dart_type() 1143 return self.TypeInfo(type_name).dart_type()
1148 1144
1149 def _TypeInfo(self, type_name): 1145 def _TypeInfo(self, type_name):
1150 match = re.match(r'(?:sequence<(\w+)>|(\w+)\[\])$', type_name) 1146 match = re.match(r'(?:sequence<(\w+)>|(\w+)\[\])$', type_name)
1151 if match: 1147 if match:
1152 type_data = TypeData('Sequence') 1148 type_data = TypeData('Sequence')
1153 if type_name == 'DOMString[]':
1154 return DOMStringArrayTypeInfo(type_data, self.TypeInfo('DOMString'))
1155 item_info = self.TypeInfo(match.group(1) or match.group(2)) 1149 item_info = self.TypeInfo(match.group(1) or match.group(2))
1156 # TODO(vsm): Generalize this code. 1150 # TODO(vsm): Generalize this code.
1157 if 'SourceInfo' in type_name: 1151 if 'SourceInfo' in type_name:
1158 type_data.native_type = 'Vector<RefPtr<SourceInfo> >' 1152 type_data.native_type = 'Vector<RefPtr<SourceInfo> >'
1159 return SequenceIDLTypeInfo(type_name, type_data, item_info) 1153 return SequenceIDLTypeInfo(type_name, type_data, item_info)
1160 1154
1161 if not type_name in _idl_type_registry: 1155 if not type_name in _idl_type_registry:
1162 if self._database.HasEnum(type_name): 1156 if self._database.HasEnum(type_name):
1163 return PrimitiveIDLTypeInfo( 1157 return PrimitiveIDLTypeInfo(
1164 type_name, 1158 type_name,
(...skipping 26 matching lines...) Expand all
1191 return SVGTearOffIDLTypeInfo( 1185 return SVGTearOffIDLTypeInfo(
1192 type_name, type_data, dart_interface_name, self) 1186 type_name, type_data, dart_interface_name, self)
1193 1187
1194 if type_data.clazz == 'TypedList': 1188 if type_data.clazz == 'TypedList':
1195 dart_interface_name = self._renamer.RenameInterface( 1189 dart_interface_name = self._renamer.RenameInterface(
1196 self._database.GetInterface(type_name)) 1190 self._database.GetInterface(type_name))
1197 return TypedListIDLTypeInfo( 1191 return TypedListIDLTypeInfo(
1198 type_name, type_data, dart_interface_name, self) 1192 type_name, type_data, dart_interface_name, self)
1199 1193
1200 if type_data.clazz == 'BasicTypedList': 1194 if type_data.clazz == 'BasicTypedList':
1201 dart_interface_name = self._renamer.RenameInterface( 1195 if type_name == 'ArrayBuffer':
1202 self._database.GetInterface(type_name)) 1196 dart_interface_name = 'ByteBuffer'
1197 else:
1198 dart_interface_name = self._renamer.RenameInterface(
1199 self._database.GetInterface(type_name))
1203 return BasicTypedListIDLTypeInfo( 1200 return BasicTypedListIDLTypeInfo(
1204 type_name, type_data, dart_interface_name, self) 1201 type_name, type_data, dart_interface_name, self)
1205 1202
1206 class_name = '%sIDLTypeInfo' % type_data.clazz 1203 class_name = '%sIDLTypeInfo' % type_data.clazz
1207 return globals()[class_name](type_name, type_data) 1204 return globals()[class_name](type_name, type_data)
OLDNEW
« no previous file with comments | « tools/dom/scripts/dartgenerator.py ('k') | tools/dom/scripts/htmlrenamer.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698