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

Side by Side Diff: client/dom/scripts/dartgenerator.py

Issue 9197015: Move templates to their own directory structure. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: shorten file names Created 8 years, 11 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
OLDNEW
1 #!/usr/bin/python 1 #!/usr/bin/python
2 # Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file 2 # Copyright (c) 2011, 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 generates Dart APIs from the IDL database.""" 6 """This module generates Dart APIs from the IDL database."""
7 7
8 import emitter 8 import emitter
9 import idlnode 9 import idlnode
10 import logging 10 import logging
(...skipping 406 matching lines...) Expand 10 before | Expand all | Expand 10 after
417 lib_template -- template file in this directory for generated lib file. 417 lib_template -- template file in this directory for generated lib file.
418 """ 418 """
419 419
420 self._emitters = multiemitter.MultiEmitter() 420 self._emitters = multiemitter.MultiEmitter()
421 self._database = database 421 self._database = database
422 self._output_dir = output_dir 422 self._output_dir = output_dir
423 423
424 self._ComputeInheritanceClosure() 424 self._ComputeInheritanceClosure()
425 425
426 interface_system = WrappingInterfacesSystem( 426 interface_system = WrappingInterfacesSystem(
427 TemplateLoader('../templates', ['dom/interface', 'dom', '']),
427 self._database, self._emitters, self._output_dir) 428 self._database, self._emitters, self._output_dir)
428 429
429 wrapping_system = WrappingImplementationSystem( 430 wrapping_system = WrappingImplementationSystem(
431 TemplateLoader('../templates', ['dom/wrapping', 'dom', '']),
430 self._database, self._emitters, self._output_dir) 432 self._database, self._emitters, self._output_dir)
431 433
432 # Makes wrapper implementations available for listing in interface lib. 434 # Makes wrapper implementations available for listing in interface lib.
433 interface_system._implementation_system = wrapping_system 435 interface_system._implementation_system = wrapping_system
434 436
435 frog_system = FrogSystem( 437 frog_system = FrogSystem(
438 TemplateLoader('../templates', ['dom/frog', 'dom', '']),
436 self._database, self._emitters, self._output_dir) 439 self._database, self._emitters, self._output_dir)
437 440
438 self._systems = [interface_system, 441 self._systems = [interface_system,
439 wrapping_system, 442 wrapping_system,
440 frog_system] 443 frog_system]
441 444
442 # Render all interfaces into Dart and save them in files. 445 # Render all interfaces into Dart and save them in files.
443 for interface in database.GetInterfaces(): 446 for interface in database.GetInterfaces():
444 447
445 super_interface = None 448 super_interface = None
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
678 info.declared_name = operations[0].id 681 info.declared_name = operations[0].id
679 info.name = operations[0].ext_attrs.get('DartName', info.declared_name) 682 info.name = operations[0].ext_attrs.get('DartName', info.declared_name)
680 info.js_name = info.declared_name 683 info.js_name = info.declared_name
681 info.type_name = operations[0].type.id # TODO: widen. 684 info.type_name = operations[0].type.id # TODO: widen.
682 info.arg_interface_declaration = FormatArgs(args, True) 685 info.arg_interface_declaration = FormatArgs(args, True)
683 info.arg_implementation_declaration = FormatArgs(args, False) 686 info.arg_implementation_declaration = FormatArgs(args, False)
684 info.arg_infos = args 687 info.arg_infos = args
685 return info 688 return info
686 689
687 690
688 def GenerateOldLibFile(self, lib_template, lib_file_path, file_paths):
689 """Generates a lib file from a template and a list of files."""
690 # Generate the .lib file.
691 if lib_file_path:
692 # Load template.
693 template = ''.join(open(lib_template).readlines())
694 lib_file_contents = self._emitters.FileEmitter(lib_file_path)
695
696 # Emit the list of path names.
697 list_emitter = lib_file_contents.Emit(template)
698 lib_file_dir = os.path.dirname(lib_file_path)
699 for path in sorted(file_paths):
700 relpath = os.path.relpath(path, lib_file_dir)
701 list_emitter.Emit("\n '$PATH',", PATH=relpath)
702
703 def GenerateLibFile(self, lib_template, lib_file_path, file_paths):
704 """Generates a lib file from a template and a list of files."""
705 # Load template.
706 template = ''.join(open(lib_template).readlines())
707 # Generate the .lib file.
708 lib_file_contents = self._emitters.FileEmitter(lib_file_path)
709
710 # Emit the list of #source directives.
711 list_emitter = lib_file_contents.Emit(template)
712 lib_file_dir = os.path.dirname(lib_file_path)
713 for path in sorted(file_paths):
714 relpath = os.path.relpath(path, lib_file_dir)
715 list_emitter.Emit("#source('$PATH');\n", PATH=relpath)
716
717
718 def Flush(self): 691 def Flush(self):
719 """Write out all pending files.""" 692 """Write out all pending files."""
720 _logger.info('Flush...') 693 _logger.info('Flush...')
721 self._emitters.Flush() 694 self._emitters.Flush()
722 695
723 696
724 def FilePathForDartInterface(self, interface_name): 697 def FilePathForDartInterface(self, interface_name):
725 """Returns the file path of the Dart interface definition.""" 698 """Returns the file path of the Dart interface definition."""
726 return os.path.join(self._output_dir, 'src', 'interface', 699 return os.path.join(self._output_dir, 'src', 'interface',
727 '%s.dart' % interface_name) 700 '%s.dart' % interface_name)
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 """Format lines of text with indent.""" 854 """Format lines of text with indent."""
882 def FormatLine(line): 855 def FormatLine(line):
883 if line.strip(): 856 if line.strip():
884 return '%s%s\n' % (indent, line) 857 return '%s%s\n' % (indent, line)
885 else: 858 else:
886 return '\n' 859 return '\n'
887 return ''.join(FormatLine(line) for line in text.split('\n')) 860 return ''.join(FormatLine(line) for line in text.split('\n'))
888 861
889 # ------------------------------------------------------------------------------ 862 # ------------------------------------------------------------------------------
890 863
864 class TemplateLoader(object):
865 """Loads template files from a path."""
866
867 def __init__(self, root, subpaths):
868 """Initializes loader.
869
870 Args:
871 root - a string, the directory under which the templates are stored.
872 subpaths - a list of strings, subpaths of root in search order.
873 """
874 self._root = root
875 self._subpaths = subpaths
876 self._cache = {}
877
878 def TryLoad(self, name):
879 """Returns content of template file as a string, or None of not found."""
880 if name in self._cache:
881 return self._cache[name]
882
883 for subpath in self._subpaths:
884 template_file = os.path.join(self._root, subpath, name)
885 if os.path.exists(template_file):
886 template = ''.join(open(template_file).readlines())
887 self._cache[name] = template
888 return template
889
890 return None
891
892 def Load(self, name):
893 """Returns contents of template file as a string, or raises an exception."""
894 template = self.TryLoad(name)
895 if template is not None: # Can be empty string
896 return template
897 raise Exception("Could not find template '%s' on %s / %s" % (
898 name, self._root, self._subpaths))
899
900
901 # ------------------------------------------------------------------------------
902
891 class System(object): 903 class System(object):
892 """Generates all the files for one implementation.""" 904 """Generates all the files for one implementation."""
893 905
894 def __init__(self, database, emitters, output_dir): 906 def __init__(self, templates, database, emitters, output_dir):
907 self._templates = templates
895 self._database = database 908 self._database = database
896 self._emitters = emitters 909 self._emitters = emitters
897 self._output_dir = output_dir 910 self._output_dir = output_dir
898 self._dart_callback_file_paths = [] 911 self._dart_callback_file_paths = []
899 912
900 def InterfaceGenerator(self, 913 def InterfaceGenerator(self,
901 interface, 914 interface,
902 common_prefix, 915 common_prefix,
903 super_interface_name, 916 super_interface_name,
904 source_filter): 917 source_filter):
905 """Returns an interface generator for |interface|.""" 918 """Returns an interface generator for |interface|."""
906 return None 919 return None
907 920
908 def ProcessCallback(self, interface, info): 921 def ProcessCallback(self, interface, info):
909 pass 922 pass
910 923
911 def GenerateLibraries(self, lib_dir): 924 def GenerateLibraries(self, lib_dir):
912 pass 925 pass
913 926
914 def Finish(self): 927 def Finish(self):
915 pass 928 pass
916 929
917 930
918 def _ProcessCallback(self, interface, info, file_path): 931 def _ProcessCallback(self, interface, info, file_path):
919 """Generates a typedef for the callback interface.""" 932 """Generates a typedef for the callback interface."""
920 self._dart_callback_file_paths.append(file_path) 933 self._dart_callback_file_paths.append(file_path)
921 code = self._emitters.FileEmitter(file_path) 934 code = self._emitters.FileEmitter(file_path)
922 935
923 template_file = 'template_callback.darttemplate' 936 code.Emit(self._templates.Load('callback.darttemplate'))
924 code.Emit(''.join(open(template_file).readlines()))
925 code.Emit('typedef $TYPE $NAME($ARGS);\n', 937 code.Emit('typedef $TYPE $NAME($ARGS);\n',
926 NAME=interface.id, 938 NAME=interface.id,
927 TYPE=info.type_name, 939 TYPE=info.type_name,
928 ARGS=info.arg_implementation_declaration) 940 ARGS=info.arg_implementation_declaration)
929 941
930 def _GenerateLibFile(self, lib_template, lib_file_path, file_paths): 942 def _GenerateLibFile(self, lib_template, lib_file_path, file_paths):
931 """Generates a lib file from a template and a list of files.""" 943 """Generates a lib file from a template and a list of files."""
932 # Load template. 944 # Load template.
933 template = ''.join(open(lib_template).readlines()) 945 template = self._templates.Load(lib_template)
934 # Generate the .lib file. 946 # Generate the .lib file.
935 lib_file_contents = self._emitters.FileEmitter(lib_file_path) 947 lib_file_contents = self._emitters.FileEmitter(lib_file_path)
936 948
937 # Emit the list of #source directives. 949 # Emit the list of #source directives.
938 list_emitter = lib_file_contents.Emit(template) 950 list_emitter = lib_file_contents.Emit(template)
939 lib_file_dir = os.path.dirname(lib_file_path) 951 lib_file_dir = os.path.dirname(lib_file_path)
940 for path in sorted(file_paths): 952 for path in sorted(file_paths):
941 relpath = os.path.relpath(path, lib_file_dir) 953 relpath = os.path.relpath(path, lib_file_dir)
942 list_emitter.Emit("#source('$PATH');\n", PATH=relpath) 954 list_emitter.Emit("#source('$PATH');\n", PATH=relpath)
943 955
(...skipping 18 matching lines...) Expand all
962 974
963 result = set() 975 result = set()
964 WalkParentChain(interface) 976 WalkParentChain(interface)
965 return result; 977 return result;
966 978
967 979
968 # ------------------------------------------------------------------------------ 980 # ------------------------------------------------------------------------------
969 981
970 class WrappingInterfacesSystem(System): 982 class WrappingInterfacesSystem(System):
971 983
972 def __init__(self, database, emitters, output_dir): 984 def __init__(self, templates, database, emitters, output_dir):
973 super(WrappingInterfacesSystem, self).__init__( 985 super(WrappingInterfacesSystem, self).__init__(
974 database, emitters, output_dir) 986 templates, database, emitters, output_dir)
975 self._dart_interface_file_paths = [] 987 self._dart_interface_file_paths = []
976 988
977 989
978 def InterfaceGenerator(self, 990 def InterfaceGenerator(self,
979 interface, 991 interface,
980 common_prefix, 992 common_prefix,
981 super_interface_name, 993 super_interface_name,
982 source_filter): 994 source_filter):
983 """.""" 995 """."""
984 interface_name = interface.id 996 interface_name = interface.id
985 dart_interface_file_path = self._FilePathForDartInterface(interface_name) 997 dart_interface_file_path = self._FilePathForDartInterface(interface_name)
986 998
987 self._dart_interface_file_paths.append(dart_interface_file_path) 999 self._dart_interface_file_paths.append(dart_interface_file_path)
988 1000
989 dart_interface_code = self._emitters.FileEmitter(dart_interface_file_path) 1001 dart_interface_code = self._emitters.FileEmitter(dart_interface_file_path)
990 1002
991 template_file = 'template_interface_%s.darttemplate' % interface_name 1003 template_file = 'interface_%s.darttemplate' % interface_name
992 if not os.path.exists(template_file): 1004 template = self._templates.TryLoad(template_file)
993 template_file = 'template_interface.darttemplate' 1005 if not template:
994 template = ''.join(open(template_file).readlines()) 1006 template = self._templates.Load('interface.darttemplate')
995 1007
996 return DartInterfaceGenerator( 1008 return DartInterfaceGenerator(
997 interface, dart_interface_code, 1009 interface, dart_interface_code,
998 template, 1010 template,
999 common_prefix, super_interface_name, 1011 common_prefix, super_interface_name,
1000 source_filter) 1012 source_filter)
1001 1013
1002 def ProcessCallback(self, interface, info): 1014 def ProcessCallback(self, interface, info):
1003 """Generates a typedef for the callback interface.""" 1015 """Generates a typedef for the callback interface."""
1004 interface_name = interface.id 1016 interface_name = interface.id
1005 file_path = self._FilePathForDartInterface(interface_name) 1017 file_path = self._FilePathForDartInterface(interface_name)
1006 self._ProcessCallback(interface, info, file_path) 1018 self._ProcessCallback(interface, info, file_path)
1007 1019
1008 def GenerateLibraries(self, lib_dir): 1020 def GenerateLibraries(self, lib_dir):
1009 # Library generated for implementation. 1021 # Library generated for implementation.
1010 self._GenerateLibFile( 1022 self._GenerateLibFile(
1011 'template_wrapping_dom.darttemplate', 1023 'wrapping_dom.darttemplate',
1012 os.path.join(lib_dir, 'wrapping_dom.dart'), 1024 os.path.join(lib_dir, 'wrapping_dom.dart'),
1013 (self._dart_interface_file_paths + 1025 (self._dart_interface_file_paths +
1014 self._dart_callback_file_paths + 1026 self._dart_callback_file_paths +
1015 # FIXME: Move the implementation to a separate 1027 # FIXME: Move the implementation to a separate
1016 # library. 1028 # library.
1017 self._implementation_system._dart_wrapping_file_paths 1029 self._implementation_system._dart_wrapping_file_paths
1018 )) 1030 ))
1019 1031
1020 1032
1021 def _FilePathForDartInterface(self, interface_name): 1033 def _FilePathForDartInterface(self, interface_name):
1022 """Returns the file path of the Dart interface definition.""" 1034 """Returns the file path of the Dart interface definition."""
1023 return os.path.join(self._output_dir, 'src', 'interface', 1035 return os.path.join(self._output_dir, 'src', 'interface',
1024 '%s.dart' % interface_name) 1036 '%s.dart' % interface_name)
1025 1037
1026 1038
1027 # ------------------------------------------------------------------------------ 1039 # ------------------------------------------------------------------------------
1028 1040
1029 class WrappingImplementationSystem(System): 1041 class WrappingImplementationSystem(System):
1030 1042
1031 def __init__(self, database, emitters, output_dir): 1043 def __init__(self, templates, database, emitters, output_dir):
1032 """Prepared for generating wrapping implementation. 1044 """Prepared for generating wrapping implementation.
1033 1045
1034 - Creates emitter for JS code. 1046 - Creates emitter for JS code.
1035 - Creates emitter for Dart code. 1047 - Creates emitter for Dart code.
1036 """ 1048 """
1037 super(WrappingImplementationSystem, self).__init__( 1049 super(WrappingImplementationSystem, self).__init__(
1038 database, emitters, output_dir) 1050 templates, database, emitters, output_dir)
1039 self._dart_wrapping_file_paths = [] 1051 self._dart_wrapping_file_paths = []
1040 1052
1041 js_file_name = os.path.join(output_dir, 'wrapping_dom.js') 1053 js_file_name = os.path.join(output_dir, 'wrapping_dom.js')
1042 code = self._emitters.FileEmitter(js_file_name) 1054 code = self._emitters.FileEmitter(js_file_name)
1043 template = ''.join(open('template_wrapping_dom.js').readlines()) 1055 template = self._templates.Load('wrapping_dom.js')
1044 (self._wrapping_js_natives, 1056 (self._wrapping_js_natives,
1045 self._wrapping_map) = code.Emit(template) 1057 self._wrapping_map) = code.Emit(template)
1046 1058
1047 _logger.info('Started Generating %s' % js_file_name) 1059 _logger.info('Started Generating %s' % js_file_name)
1048 1060
1049 # Set of (interface, name, kind), kind is 'attribute' or 'operation'. 1061 # Set of (interface, name, kind), kind is 'attribute' or 'operation'.
1050 self._wrapping_externs = set() 1062 self._wrapping_externs = set()
1051 1063
1052 1064
1053 def InterfaceGenerator(self, 1065 def InterfaceGenerator(self,
1054 interface, 1066 interface,
1055 common_prefix, 1067 common_prefix,
1056 super_interface_name, 1068 super_interface_name,
1057 source_filter): 1069 source_filter):
1058 """.""" 1070 """."""
1059 interface_name = interface.id 1071 interface_name = interface.id
1060 dart_wrapping_file_path = self._FilePathForDartWrappingImpl(interface_name) 1072 dart_wrapping_file_path = self._FilePathForDartWrappingImpl(interface_name)
1061 1073
1062 self._dart_wrapping_file_paths.append(dart_wrapping_file_path) 1074 self._dart_wrapping_file_paths.append(dart_wrapping_file_path)
1063 1075
1064 dart_code = self._emitters.FileEmitter(dart_wrapping_file_path) 1076 dart_code = self._emitters.FileEmitter(dart_wrapping_file_path)
1065 dart_code.Emit( 1077 dart_code.Emit(self._templates.Load('wrapping_impl.darttemplate'))
1066 ''.join(open('template_wrapping_impl.darttemplate').readlines()))
1067 return WrappingInterfaceGenerator(interface, super_interface_name, 1078 return WrappingInterfaceGenerator(interface, super_interface_name,
1068 dart_code, self._wrapping_js_natives, 1079 dart_code, self._wrapping_js_natives,
1069 self._wrapping_map, 1080 self._wrapping_map,
1070 self._wrapping_externs, 1081 self._wrapping_externs,
1071 self._BaseDefines(interface)) 1082 self._BaseDefines(interface))
1072 1083
1073 def ProcessCallback(self, interface, info): 1084 def ProcessCallback(self, interface, info):
1074 pass 1085 pass
1075 1086
1076 def GenerateLibraries(self, lib_dir): 1087 def GenerateLibraries(self, lib_dir):
(...skipping 11 matching lines...) Expand all
1088 def _GenerateJavaScriptExternsWrapping(self, database, output_dir): 1099 def _GenerateJavaScriptExternsWrapping(self, database, output_dir):
1089 """Generates a JavaScript externs file. 1100 """Generates a JavaScript externs file.
1090 1101
1091 Generates an externs file that is consistent with generated JavaScript code 1102 Generates an externs file that is consistent with generated JavaScript code
1092 and Dart APIs for the wrapping implementation. 1103 and Dart APIs for the wrapping implementation.
1093 """ 1104 """
1094 externs_file_name = os.path.join(output_dir, 'wrapping_dom_externs.js') 1105 externs_file_name = os.path.join(output_dir, 'wrapping_dom_externs.js')
1095 code = self._emitters.FileEmitter(externs_file_name) 1106 code = self._emitters.FileEmitter(externs_file_name)
1096 _logger.info('Started generating %s' % externs_file_name) 1107 _logger.info('Started generating %s' % externs_file_name)
1097 1108
1098 template = ''.join(open('template_wrapping_dom_externs.js').readlines()) 1109 template = self._templates.Load('wrapping_dom_externs.js')
1099 namespace = 'dom_externs' 1110 namespace = 'dom_externs'
1100 members = code.Emit(template, NAMESPACE=namespace) 1111 members = code.Emit(template, NAMESPACE=namespace)
1101 1112
1102 # TODO: Filter out externs that are known to the JavaScript back-end. Some 1113 # TODO: Filter out externs that are known to the JavaScript back-end. Some
1103 # of the known externs have useful declarations like @nosideeffects that 1114 # of the known externs have useful declarations like @nosideeffects that
1104 # might improve back-end analysis. 1115 # might improve back-end analysis.
1105 1116
1106 names = dict() # maps name to (interface, kind) 1117 names = dict() # maps name to (interface, kind)
1107 for (interface, name, kind) in self._wrapping_externs: 1118 for (interface, name, kind) in self._wrapping_externs:
1108 if name not in _javascript_keywords: 1119 if name not in _javascript_keywords:
(...skipping 13 matching lines...) Expand all
1122 for (interface, kind) in sorted(names[name]): 1133 for (interface, kind) in sorted(names[name]):
1123 members.Emit('$SEP $KIND $INTERFACE.$NAME', 1134 members.Emit('$SEP $KIND $INTERFACE.$NAME',
1124 NAME=name, INTERFACE=interface, KIND=kind, SEP=separator) 1135 NAME=name, INTERFACE=interface, KIND=kind, SEP=separator)
1125 separator = ',' 1136 separator = ','
1126 members.Emit('\n') 1137 members.Emit('\n')
1127 1138
1128 # ------------------------------------------------------------------------------ 1139 # ------------------------------------------------------------------------------
1129 1140
1130 class FrogSystem(System): 1141 class FrogSystem(System):
1131 1142
1132 def __init__(self, database, emitters, output_dir): 1143 def __init__(self, templates, database, emitters, output_dir):
1133 super(FrogSystem, self).__init__(database, emitters, output_dir) 1144 super(FrogSystem, self).__init__(
1145 templates, database, emitters, output_dir)
1134 self._dart_frog_file_paths = [] 1146 self._dart_frog_file_paths = []
1135 1147
1136 def InterfaceGenerator(self, 1148 def InterfaceGenerator(self,
1137 interface, 1149 interface,
1138 common_prefix, 1150 common_prefix,
1139 super_interface_name, 1151 super_interface_name,
1140 source_filter): 1152 source_filter):
1141 """.""" 1153 """."""
1142 dart_frog_file_path = self._FilePathForFrogImpl(interface.id) 1154 dart_frog_file_path = self._FilePathForFrogImpl(interface.id)
1143 1155
1144 self._dart_frog_file_paths.append(dart_frog_file_path) 1156 self._dart_frog_file_paths.append(dart_frog_file_path)
1145 1157
1146 dart_code = self._emitters.FileEmitter(dart_frog_file_path) 1158 dart_code = self._emitters.FileEmitter(dart_frog_file_path)
1147 dart_code.Emit( 1159 dart_code.Emit(self._templates.Load('frog_impl.darttemplate'))
1148 ''.join(open('template_frog_impl.darttemplate').readlines()))
1149 return FrogInterfaceGenerator(interface, super_interface_name, 1160 return FrogInterfaceGenerator(interface, super_interface_name,
1150 dart_code) 1161 dart_code)
1151 1162
1152 def ProcessCallback(self, interface, info): 1163 def ProcessCallback(self, interface, info):
1153 """Generates a typedef for the callback interface.""" 1164 """Generates a typedef for the callback interface."""
1154 file_path = self._FilePathForFrogImpl(interface.id) 1165 file_path = self._FilePathForFrogImpl(interface.id)
1155 self._ProcessCallback(interface, info, file_path) 1166 self._ProcessCallback(interface, info, file_path)
1156 1167
1157 def GenerateLibraries(self, lib_dir): 1168 def GenerateLibraries(self, lib_dir):
1158 self._GenerateLibFile( 1169 self._GenerateLibFile(
1159 'template_frog_dom.darttemplate', 1170 'frog_dom.darttemplate',
1160 os.path.join(lib_dir, 'dom_frog.dart'), 1171 os.path.join(lib_dir, 'dom_frog.dart'),
1161 self._dart_frog_file_paths + 1172 self._dart_frog_file_paths +
1162 self._dart_callback_file_paths) 1173 self._dart_callback_file_paths)
1163 1174
1164 def Finish(self): 1175 def Finish(self):
1165 pass 1176 pass
1166 1177
1167 def _FilePathForFrogImpl(self, interface_name): 1178 def _FilePathForFrogImpl(self, interface_name):
1168 """Returns the file path of the Frog implementation.""" 1179 """Returns the file path of the Frog implementation."""
1169 return os.path.join(self._output_dir, 'src', 'frog', 1180 return os.path.join(self._output_dir, 'src', 'frog',
(...skipping 646 matching lines...) Expand 10 before | Expand all | Expand 10 after
1816 '$!FALSE' 1827 '$!FALSE'
1817 '$(INDENT)}\n', 1828 '$(INDENT)}\n',
1818 COND=test, INDENT=indent) 1829 COND=test, INDENT=indent)
1819 fallthrough1 = self.GenerateDispatch( 1830 fallthrough1 = self.GenerateDispatch(
1820 true_code, info, indent + ' ', position + 1, positive) 1831 true_code, info, indent + ' ', position + 1, positive)
1821 fallthrough2 = self.GenerateDispatch( 1832 fallthrough2 = self.GenerateDispatch(
1822 false_code, info, indent + ' ', position, negative) 1833 false_code, info, indent + ' ', position, negative)
1823 return fallthrough1 or fallthrough2 1834 return fallthrough1 or fallthrough2
1824 1835
1825 if negative: 1836 if negative:
1826 raise 'Internal error, must be all positive' 1837 raise Exception('Internal error, must be all positive')
1827 1838
1828 # All overloads require the same test. Do we bother? 1839 # All overloads require the same test. Do we bother?
1829 1840
1830 # If the test is the same as the method's formal parameter then checked mode 1841 # If the test is the same as the method's formal parameter then checked mode
1831 # will have done the test already. (It could be null too but we ignore that 1842 # will have done the test already. (It could be null too but we ignore that
1832 # case since all the overload behave the same and we don't know which types 1843 # case since all the overload behave the same and we don't know which types
1833 # in the IDL are not nullable.) 1844 # in the IDL are not nullable.)
1834 if type == param_type: 1845 if type == param_type:
1835 return self.GenerateDispatch( 1846 return self.GenerateDispatch(
1836 emitter, info, indent, position + 1, positive) 1847 emitter, info, indent, position + 1, positive)
(...skipping 225 matching lines...) Expand 10 before | Expand all | Expand 10 after
2062 Arguments: 2073 Arguments:
2063 info: An OperationInfo object. 2074 info: An OperationInfo object.
2064 """ 2075 """
2065 # TODO(vsm): Handle overloads. 2076 # TODO(vsm): Handle overloads.
2066 self._members_emitter.Emit( 2077 self._members_emitter.Emit(
2067 '\n' 2078 '\n'
2068 ' $TYPE $NAME($ARGS) native;\n', 2079 ' $TYPE $NAME($ARGS) native;\n',
2069 TYPE=info.type_name, 2080 TYPE=info.type_name,
2070 NAME=info.name, 2081 NAME=info.name,
2071 ARGS=info.arg_implementation_declaration) 2082 ARGS=info.arg_implementation_declaration)
OLDNEW
« no previous file with comments | « client/dom/scripts/dartdomgenerator.py ('k') | client/dom/scripts/template_callback.darttemplate » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698