| 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 837 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 848 extends_str += ' /*%s %s */' % (comment, ', '.join(suppressed_extends)) | 848 extends_str += ' /*%s %s */' % (comment, ', '.join(suppressed_extends)) |
| 849 | 849 |
| 850 factory_provider = None | 850 factory_provider = None |
| 851 if typename in interface_factories: | 851 if typename in interface_factories: |
| 852 factory_provider = interface_factories[typename] | 852 factory_provider = interface_factories[typename] |
| 853 | 853 |
| 854 constructors = [] | 854 constructors = [] |
| 855 constructor_info = AnalyzeConstructor(self._interface) | 855 constructor_info = AnalyzeConstructor(self._interface) |
| 856 if constructor_info: | 856 if constructor_info: |
| 857 constructors.append(constructor_info) | 857 constructors.append(constructor_info) |
| 858 factory_provider = '_' + typename + 'FactoryProvider'; | 858 factory_provider = '_' + typename + 'FactoryProvider' |
| 859 | 859 |
| 860 infos = HtmlElementConstructorInfos(typename) | 860 infos = HtmlElementConstructorInfos(typename) |
| 861 for info in infos: | 861 for info in infos: |
| 862 constructors.append(info.ConstructorInfo(typename)) | 862 constructors.append(info.ConstructorInfo(typename)) |
| 863 if factory_provider: | 863 if factory_provider: |
| 864 assert factory_provider == info.factory_provider_name | 864 assert factory_provider == info.factory_provider_name |
| 865 else: | 865 else: |
| 866 factory_provider = info.factory_provider_name | 866 factory_provider = info.factory_provider_name |
| 867 | 867 |
| 868 if factory_provider: | 868 if factory_provider: |
| 869 extends_str += ' default ' + factory_provider | 869 extends_str += ' default ' + factory_provider |
| 870 | 870 |
| 871 # TODO(vsm): Add appropriate package / namespace syntax. | 871 # TODO(vsm): Add appropriate package / namespace syntax. |
| 872 (self._type_comment_emitter, | 872 (self._type_comment_emitter, |
| 873 self._members_emitter, | 873 self._members_emitter, |
| 874 self._top_level_emitter) = self._interface_emitter.Emit( | 874 self._top_level_emitter) = self._interface_emitter.Emit( |
| 875 interface_template + '$!TOP_LEVEL', | 875 interface_template + '$!TOP_LEVEL', |
| 876 ID=typename, | 876 ID=typename, |
| 877 EXTENDS=extends_str) | 877 EXTENDS=extends_str) |
| 878 | 878 |
| 879 self._type_comment_emitter.Emit("/// @domName $DOMNAME", | 879 self._type_comment_emitter.Emit("/// @domName $DOMNAME", |
| 880 DOMNAME=self._interface.doc_js_name) | 880 DOMNAME=self._interface.doc_js_name) |
| 881 | 881 |
| 882 for constructor_info in constructors: | 882 for constructor_info in constructors: |
| 883 self._members_emitter.Emit( | 883 self._members_emitter.Emit( |
| 884 '\n' | 884 '\n' |
| 885 ' $CTOR($PARAMS);\n', | 885 ' $CTOR($PARAMS);\n', |
| 886 CTOR=self._shared.DartType(constructor_info.ConstructorFullName()), | 886 CTOR=self._shared.DartType(constructor_info.ConstructorFullName()), |
| 887 PARAMS=constructor_info.ParametersInterfaceDeclaration( | 887 PARAMS=constructor_info.ParametersInterfaceDeclaration( |
| 888 self._shared.DartType)); | 888 self._shared.DartType)) |
| 889 | 889 |
| 890 if infos: | 890 if infos: |
| 891 EmitHtmlElementFactoryConstructors( | 891 EmitHtmlElementFactoryConstructors( |
| 892 self._system._backend._EmitterForFactoryProviderBody( | 892 self._system._backend._EmitterForFactoryProviderBody( |
| 893 infos[0].factory_provider_name), | 893 infos[0].factory_provider_name), |
| 894 infos, | 894 infos, |
| 895 self._html_interface_name, | 895 self._html_interface_name, |
| 896 self._backend.ImplementationClassName()) | 896 self._backend.ImplementationClassName()) |
| 897 | 897 |
| 898 element_type = MaybeTypedArrayElementTypeInHierarchy( | 898 element_type = MaybeTypedArrayElementTypeInHierarchy( |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 948 if html_getter_name and html_setter_name: | 948 if html_getter_name and html_setter_name: |
| 949 assert html_getter_name == html_setter_name | 949 assert html_getter_name == html_setter_name |
| 950 | 950 |
| 951 self._members_emitter.Emit('\n /** @domName $DOMINTERFACE.$DOMNAME */', | 951 self._members_emitter.Emit('\n /** @domName $DOMINTERFACE.$DOMNAME */', |
| 952 DOMINTERFACE=getter.doc_js_interface_name, | 952 DOMINTERFACE=getter.doc_js_interface_name, |
| 953 DOMNAME=dom_name) | 953 DOMNAME=dom_name) |
| 954 if (getter and setter and | 954 if (getter and setter and |
| 955 getter.type.id == setter.type.id): | 955 getter.type.id == setter.type.id): |
| 956 self._members_emitter.Emit('\n $TYPE $NAME;\n', | 956 self._members_emitter.Emit('\n $TYPE $NAME;\n', |
| 957 NAME=html_getter_name, | 957 NAME=html_getter_name, |
| 958 TYPE=self._shared.DartType(getter.type.id)); | 958 TYPE=self._shared.DartType(getter.type.id)) |
| 959 return | 959 return |
| 960 if getter and not setter: | 960 if getter and not setter: |
| 961 self._members_emitter.Emit('\n final $TYPE $NAME;\n', | 961 self._members_emitter.Emit('\n final $TYPE $NAME;\n', |
| 962 NAME=html_getter_name, | 962 NAME=html_getter_name, |
| 963 TYPE=self._shared.DartType(getter.type.id)); | 963 TYPE=self._shared.DartType(getter.type.id)) |
| 964 return | 964 return |
| 965 raise Exception('Unexpected getter/setter combination %s %s' % | 965 raise Exception('Unexpected getter/setter combination %s %s' % |
| 966 (getter, setter)) | 966 (getter, setter)) |
| 967 | 967 |
| 968 def AddOperation(self, info): | 968 def AddOperation(self, info): |
| 969 """ | 969 """ |
| 970 Arguments: | 970 Arguments: |
| 971 operations - contains the overloads, one or more operations with the same | 971 operations - contains the overloads, one or more operations with the same |
| 972 name. | 972 name. |
| 973 """ | 973 """ |
| (...skipping 436 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1410 Collect(database.GetInterface(parent.type.id), | 1410 Collect(database.GetInterface(parent.type.id), |
| 1411 seen, collected) | 1411 seen, collected) |
| 1412 | 1412 |
| 1413 inheritance_closure = {} | 1413 inheritance_closure = {} |
| 1414 for interface in database.GetInterfaces(): | 1414 for interface in database.GetInterfaces(): |
| 1415 seen = set() | 1415 seen = set() |
| 1416 collected = [] | 1416 collected = [] |
| 1417 Collect(interface, seen, collected) | 1417 Collect(interface, seen, collected) |
| 1418 inheritance_closure[interface.id] = collected | 1418 inheritance_closure[interface.id] = collected |
| 1419 return inheritance_closure | 1419 return inheritance_closure |
| OLD | NEW |