Chromium Code Reviews| 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 the system to generate | 6 """This module provides shared functionality for the system to generate |
| 7 Dart:html APIs from the IDL database.""" | 7 Dart:html APIs from the IDL database.""" |
| 8 | 8 |
| 9 import emitter | 9 import emitter |
| 10 | 10 |
| (...skipping 914 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 925 '\n' | 925 '\n' |
| 926 ' $CTOR.fromList(List<$TYPE> list);\n' | 926 ' $CTOR.fromList(List<$TYPE> list);\n' |
| 927 '\n' | 927 '\n' |
| 928 ' $CTOR.fromBuffer(ArrayBuffer buffer,' | 928 ' $CTOR.fromBuffer(ArrayBuffer buffer,' |
| 929 ' [int byteOffset, int length]);\n', | 929 ' [int byteOffset, int length]);\n', |
| 930 CTOR=self._interface.id, | 930 CTOR=self._interface.id, |
| 931 TYPE=self._shared.DartType(element_type)) | 931 TYPE=self._shared.DartType(element_type)) |
| 932 | 932 |
| 933 self._GenerateEvents() | 933 self._GenerateEvents() |
| 934 | 934 |
| 935 self._backend.StartGeneratingMergedMembers() | |
|
Anton Muhin
2012/07/04 16:42:39
I think it's too hacky, esp. this mute all the emi
podivilov
2012/07/04 17:44:05
Done.
| |
| 935 for merged_interface in _merged_html_interfaces: | 936 for merged_interface in _merged_html_interfaces: |
| 936 if _merged_html_interfaces[merged_interface] == self._interface.id: | 937 if _merged_html_interfaces[merged_interface] == self._interface.id: |
| 937 merged_interface = self._database.GetInterface(merged_interface) | 938 merged_interface = self._database.GetInterface(merged_interface) |
| 938 self.AddMembers(merged_interface) | 939 self.AddMembers(merged_interface) |
| 939 self._backend.AddMergedMembers(merged_interface) | 940 self._backend.FinishGeneratingMergedMembers() |
| 940 | 941 |
| 941 self._backend.AddMembers(self._interface) | 942 def AddIndexer(self, element_type): |
| 942 self._backend.AddSecondaryMembers(self._interface) | 943 self._backend.AddIndexer(element_type) |
| 943 self._backend.FinishInterface() | 944 |
| 945 def AmendIndexer(self, element_type): | |
| 946 self._backend.AmendIndexer(element_type) | |
| 944 | 947 |
| 945 def AddAttribute(self, attribute): | 948 def AddAttribute(self, attribute): |
| 949 self._backend.AddAttribute(attribute) | |
|
Anton Muhin
2012/07/04 16:42:39
nit: move to the end of the method, plz
podivilov
2012/07/04 17:44:05
I don't want to mess with early returns in this me
| |
| 950 | |
| 946 getter = attribute | 951 getter = attribute |
| 947 setter = attribute if not IsReadOnly(attribute) else None | 952 setter = attribute if not IsReadOnly(attribute) else None |
| 948 dom_name = DartDomNameOfAttribute(getter) | 953 dom_name = DartDomNameOfAttribute(getter) |
| 949 html_getter_name = self._shared.RenameInHtmlLibrary( | 954 html_getter_name = self._shared.RenameInHtmlLibrary( |
| 950 self._interface.id, dom_name, 'get:') | 955 self._interface.id, dom_name, 'get:') |
| 951 html_setter_name = self._shared.RenameInHtmlLibrary( | 956 html_setter_name = self._shared.RenameInHtmlLibrary( |
| 952 self._interface.id, dom_name, 'set:') | 957 self._interface.id, dom_name, 'set:') |
| 953 | 958 |
| 954 if not html_getter_name or self._shared.IsPrivate(html_getter_name): | 959 if not html_getter_name or self._shared.IsPrivate(html_getter_name): |
| 955 getter = None | 960 getter = None |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 991 self._members_emitter.Emit('\n /** @domName $DOMINTERFACE.$DOMNAME */', | 996 self._members_emitter.Emit('\n /** @domName $DOMINTERFACE.$DOMNAME */', |
| 992 DOMINTERFACE=info.overloads[0].doc_js_interface_name, | 997 DOMINTERFACE=info.overloads[0].doc_js_interface_name, |
| 993 DOMNAME=info.name) | 998 DOMNAME=info.name) |
| 994 | 999 |
| 995 self._members_emitter.Emit('\n' | 1000 self._members_emitter.Emit('\n' |
| 996 ' $TYPE $NAME($PARAMS);\n', | 1001 ' $TYPE $NAME($PARAMS);\n', |
| 997 TYPE=self._shared.DartType(info.type_name), | 1002 TYPE=self._shared.DartType(info.type_name), |
| 998 NAME=html_name, | 1003 NAME=html_name, |
| 999 PARAMS=info.ParametersInterfaceDeclaration( | 1004 PARAMS=info.ParametersInterfaceDeclaration( |
| 1000 self._shared.DartType)) | 1005 self._shared.DartType)) |
| 1006 self._backend.AddOperation(info) | |
| 1007 | |
| 1008 def AddStaticOperation(self, info): | |
| 1009 self._backend.AddStaticOperation(info) | |
| 1001 | 1010 |
| 1002 def FinishInterface(self): | 1011 def FinishInterface(self): |
| 1003 pass | 1012 self._backend.AddSecondaryMembers(self._interface) |
| 1013 self._backend.FinishInterface() | |
| 1004 | 1014 |
| 1005 def AddConstant(self, constant): | 1015 def AddConstant(self, constant): |
| 1006 type = TypeOrNothing(DartType(constant.type.id), constant.type.id) | 1016 type = TypeOrNothing(DartType(constant.type.id), constant.type.id) |
| 1007 self._members_emitter.Emit('\n static final $TYPE$NAME = $VALUE;\n', | 1017 self._members_emitter.Emit('\n static final $TYPE$NAME = $VALUE;\n', |
| 1008 NAME=constant.id, | 1018 NAME=constant.id, |
| 1009 TYPE=type, | 1019 TYPE=type, |
| 1010 VALUE=constant.value) | 1020 VALUE=constant.value) |
| 1021 self._backend.AddConstant(constant) | |
| 1011 | 1022 |
| 1012 def _GenerateEvents(self): | 1023 def _GenerateEvents(self): |
| 1013 emit_events, event_attrs = self._shared.GetEventAttributes(self._interface) | 1024 emit_events, event_attrs = self._shared.GetEventAttributes(self._interface) |
| 1014 if not emit_events: | 1025 if not emit_events: |
| 1015 return | 1026 return |
| 1016 | 1027 |
| 1017 self._shared._event_classes.add(self._interface.id) | 1028 self._shared._event_classes.add(self._interface.id) |
| 1018 events_interface = self._html_interface_name + 'Events' | 1029 events_interface = self._html_interface_name + 'Events' |
| 1019 events_class = '_%sImpl' % events_interface | 1030 events_class = '_%sImpl' % events_interface |
| 1020 parent_events_interface = self._shared.GetParentEventsClass(self._interface) | 1031 parent_events_interface = self._shared.GetParentEventsClass(self._interface) |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1100 return os.path.join(self._system._output_dir, 'html', 'frog', | 1111 return os.path.join(self._system._output_dir, 'html', 'frog', |
| 1101 '_%sFactoryProvider.dart' % self._html_interface_name) | 1112 '_%sFactoryProvider.dart' % self._html_interface_name) |
| 1102 | 1113 |
| 1103 def FilePathForDartElementsFactoryProviderImplementation(self): | 1114 def FilePathForDartElementsFactoryProviderImplementation(self): |
| 1104 return os.path.join(self._system._output_dir, 'html', 'frog', | 1115 return os.path.join(self._system._output_dir, 'html', 'frog', |
| 1105 '_Elements.dart') | 1116 '_Elements.dart') |
| 1106 | 1117 |
| 1107 def SetImplementationEmitter(self, implementation_emitter): | 1118 def SetImplementationEmitter(self, implementation_emitter): |
| 1108 self._dart_code = implementation_emitter | 1119 self._dart_code = implementation_emitter |
| 1109 | 1120 |
| 1110 def AddMergedMembers(self, merged_interface): | 1121 def StartGeneratingMergedMembers(self): |
| 1111 self.AddMembers(merged_interface) | 1122 pass |
| 1123 | |
| 1124 def FinishGeneratingMergedMembers(self): | |
| 1125 pass | |
| 1112 | 1126 |
| 1113 def _ImplClassName(self, type_name): | 1127 def _ImplClassName(self, type_name): |
| 1114 return self._shared._ImplClassName(type_name) | 1128 return self._shared._ImplClassName(type_name) |
| 1115 | 1129 |
| 1116 def _NarrowToImplementationType(self, type_name): | 1130 def _NarrowToImplementationType(self, type_name): |
| 1117 if self._ShouldNarrowToImplementationType(type_name): | 1131 if self._ShouldNarrowToImplementationType(type_name): |
| 1118 return self._ImplClassName(self._shared.DartType(type_name)) | 1132 return self._ImplClassName(self._shared.DartType(type_name)) |
| 1119 return self._shared.DartType(type_name) | 1133 return self._shared.DartType(type_name) |
| 1120 | 1134 |
| 1121 def StartInterface(self): | 1135 def StartInterface(self): |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1401 Collect(database.GetInterface(parent.type.id), | 1415 Collect(database.GetInterface(parent.type.id), |
| 1402 seen, collected) | 1416 seen, collected) |
| 1403 | 1417 |
| 1404 inheritance_closure = {} | 1418 inheritance_closure = {} |
| 1405 for interface in database.GetInterfaces(): | 1419 for interface in database.GetInterfaces(): |
| 1406 seen = set() | 1420 seen = set() |
| 1407 collected = [] | 1421 collected = [] |
| 1408 Collect(interface, seen, collected) | 1422 Collect(interface, seen, collected) |
| 1409 inheritance_closure[interface.id] = collected | 1423 inheritance_closure[interface.id] = collected |
| 1410 return inheritance_closure | 1424 return inheritance_closure |
| OLD | NEW |