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 backend = self._backend | |
|
Anton Muhin
2012/07/04 20:03:17
nit: backend -> old_backend
podivilov
2012/07/05 09:13:43
Done.
| |
| 936 self._backend = backend.MergedMembersGenerator() | |
| 935 for merged_interface in _merged_html_interfaces: | 937 for merged_interface in _merged_html_interfaces: |
| 936 if _merged_html_interfaces[merged_interface] == self._interface.id: | 938 if _merged_html_interfaces[merged_interface] == self._interface.id: |
| 937 merged_interface = self._database.GetInterface(merged_interface) | 939 merged_interface = self._database.GetInterface(merged_interface) |
| 938 self.AddMembers(merged_interface) | 940 self.AddMembers(merged_interface) |
| 939 self._backend.AddMergedMembers(merged_interface) | 941 self._backend = backend |
|
Anton Muhin
2012/07/04 20:03:17
I am slightly uneasy that you mutate internal stat
podivilov
2012/07/05 09:13:43
Why HtmlDartInterfaceGenerator shouldn't mutate it
| |
| 940 | 942 |
| 941 self._backend.AddMembers(self._interface) | 943 def AddIndexer(self, element_type): |
| 942 self._backend.AddSecondaryMembers(self._interface) | 944 self._backend.AddIndexer(element_type) |
| 943 self._backend.FinishInterface() | 945 |
| 946 def AmendIndexer(self, element_type): | |
| 947 self._backend.AmendIndexer(element_type) | |
| 944 | 948 |
| 945 def AddAttribute(self, attribute): | 949 def AddAttribute(self, attribute): |
| 950 self._backend.AddAttribute(attribute) | |
| 951 | |
| 946 getter = attribute | 952 getter = attribute |
| 947 setter = attribute if not IsReadOnly(attribute) else None | 953 setter = attribute if not IsReadOnly(attribute) else None |
| 948 dom_name = DartDomNameOfAttribute(getter) | 954 dom_name = DartDomNameOfAttribute(getter) |
| 949 html_getter_name = self._shared.RenameInHtmlLibrary( | 955 html_getter_name = self._shared.RenameInHtmlLibrary( |
| 950 self._interface.id, dom_name, 'get:') | 956 self._interface.id, dom_name, 'get:') |
| 951 html_setter_name = self._shared.RenameInHtmlLibrary( | 957 html_setter_name = self._shared.RenameInHtmlLibrary( |
| 952 self._interface.id, dom_name, 'set:') | 958 self._interface.id, dom_name, 'set:') |
| 953 | 959 |
| 954 if not html_getter_name or self._shared.IsPrivate(html_getter_name): | 960 if not html_getter_name or self._shared.IsPrivate(html_getter_name): |
| 955 getter = None | 961 getter = None |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 991 self._members_emitter.Emit('\n /** @domName $DOMINTERFACE.$DOMNAME */', | 997 self._members_emitter.Emit('\n /** @domName $DOMINTERFACE.$DOMNAME */', |
| 992 DOMINTERFACE=info.overloads[0].doc_js_interface_name, | 998 DOMINTERFACE=info.overloads[0].doc_js_interface_name, |
| 993 DOMNAME=info.name) | 999 DOMNAME=info.name) |
| 994 | 1000 |
| 995 self._members_emitter.Emit('\n' | 1001 self._members_emitter.Emit('\n' |
| 996 ' $TYPE $NAME($PARAMS);\n', | 1002 ' $TYPE $NAME($PARAMS);\n', |
| 997 TYPE=self._shared.DartType(info.type_name), | 1003 TYPE=self._shared.DartType(info.type_name), |
| 998 NAME=html_name, | 1004 NAME=html_name, |
| 999 PARAMS=info.ParametersInterfaceDeclaration( | 1005 PARAMS=info.ParametersInterfaceDeclaration( |
| 1000 self._shared.DartType)) | 1006 self._shared.DartType)) |
| 1007 self._backend.AddOperation(info) | |
| 1008 | |
| 1009 def AddStaticOperation(self, info): | |
| 1010 self._backend.AddStaticOperation(info) | |
| 1001 | 1011 |
| 1002 def FinishInterface(self): | 1012 def FinishInterface(self): |
| 1003 pass | 1013 self._backend.AddSecondaryMembers(self._interface) |
| 1014 self._backend.FinishInterface() | |
| 1004 | 1015 |
| 1005 def AddConstant(self, constant): | 1016 def AddConstant(self, constant): |
| 1006 type = TypeOrNothing(DartType(constant.type.id), constant.type.id) | 1017 type = TypeOrNothing(DartType(constant.type.id), constant.type.id) |
| 1007 self._members_emitter.Emit('\n static final $TYPE$NAME = $VALUE;\n', | 1018 self._members_emitter.Emit('\n static final $TYPE$NAME = $VALUE;\n', |
| 1008 NAME=constant.id, | 1019 NAME=constant.id, |
| 1009 TYPE=type, | 1020 TYPE=type, |
| 1010 VALUE=constant.value) | 1021 VALUE=constant.value) |
| 1022 self._backend.AddConstant(constant) | |
| 1011 | 1023 |
| 1012 def _GenerateEvents(self): | 1024 def _GenerateEvents(self): |
| 1013 emit_events, event_attrs = self._shared.GetEventAttributes(self._interface) | 1025 emit_events, event_attrs = self._shared.GetEventAttributes(self._interface) |
| 1014 if not emit_events: | 1026 if not emit_events: |
| 1015 return | 1027 return |
| 1016 | 1028 |
| 1017 self._shared._event_classes.add(self._interface.id) | 1029 self._shared._event_classes.add(self._interface.id) |
| 1018 events_interface = self._html_interface_name + 'Events' | 1030 events_interface = self._html_interface_name + 'Events' |
| 1019 events_class = '_%sImpl' % events_interface | 1031 events_class = '_%sImpl' % events_interface |
| 1020 parent_events_interface = self._shared.GetParentEventsClass(self._interface) | 1032 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', | 1112 return os.path.join(self._system._output_dir, 'html', 'frog', |
| 1101 '_%sFactoryProvider.dart' % self._html_interface_name) | 1113 '_%sFactoryProvider.dart' % self._html_interface_name) |
| 1102 | 1114 |
| 1103 def FilePathForDartElementsFactoryProviderImplementation(self): | 1115 def FilePathForDartElementsFactoryProviderImplementation(self): |
| 1104 return os.path.join(self._system._output_dir, 'html', 'frog', | 1116 return os.path.join(self._system._output_dir, 'html', 'frog', |
| 1105 '_Elements.dart') | 1117 '_Elements.dart') |
| 1106 | 1118 |
| 1107 def SetImplementationEmitter(self, implementation_emitter): | 1119 def SetImplementationEmitter(self, implementation_emitter): |
| 1108 self._dart_code = implementation_emitter | 1120 self._dart_code = implementation_emitter |
| 1109 | 1121 |
| 1110 def AddMergedMembers(self, merged_interface): | 1122 def MergedMembersGenerator(self): |
| 1111 self.AddMembers(merged_interface) | 1123 return self |
| 1112 | 1124 |
| 1113 def _ImplClassName(self, type_name): | 1125 def _ImplClassName(self, type_name): |
| 1114 return self._shared._ImplClassName(type_name) | 1126 return self._shared._ImplClassName(type_name) |
| 1115 | 1127 |
| 1116 def _NarrowToImplementationType(self, type_name): | 1128 def _NarrowToImplementationType(self, type_name): |
| 1117 if self._ShouldNarrowToImplementationType(type_name): | 1129 if self._ShouldNarrowToImplementationType(type_name): |
| 1118 return self._ImplClassName(self._shared.DartType(type_name)) | 1130 return self._ImplClassName(self._shared.DartType(type_name)) |
| 1119 return self._shared.DartType(type_name) | 1131 return self._shared.DartType(type_name) |
| 1120 | 1132 |
| 1121 def StartInterface(self): | 1133 def StartInterface(self): |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1401 Collect(database.GetInterface(parent.type.id), | 1413 Collect(database.GetInterface(parent.type.id), |
| 1402 seen, collected) | 1414 seen, collected) |
| 1403 | 1415 |
| 1404 inheritance_closure = {} | 1416 inheritance_closure = {} |
| 1405 for interface in database.GetInterfaces(): | 1417 for interface in database.GetInterfaces(): |
| 1406 seen = set() | 1418 seen = set() |
| 1407 collected = [] | 1419 collected = [] |
| 1408 Collect(interface, seen, collected) | 1420 Collect(interface, seen, collected) |
| 1409 inheritance_closure[interface.id] = collected | 1421 inheritance_closure[interface.id] = collected |
| 1410 return inheritance_closure | 1422 return inheritance_closure |
| OLD | NEW |