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

Side by Side Diff: lib/dom/scripts/systemhtml.py

Issue 10697080: Split backend.AddMembers call into series of backend.AddAtribute/backend.AddOperation calls. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: . Created 8 years, 5 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 | « no previous file | lib/dom/scripts/systemnative.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 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
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
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
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
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
OLDNEW
« no previous file with comments | « no previous file | lib/dom/scripts/systemnative.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698