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

Side by Side Diff: Source/bindings/scripts/idl_definitions_builder.py

Issue 185303013: Remove Perl cruft from IDL compiler front end (mostly JSON export) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 9 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 | « Source/bindings/scripts/idl_definitions.py ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 # Copyright (C) 2013 Google Inc. All rights reserved. 1 # Copyright (C) 2013 Google Inc. All rights reserved.
2 # 2 #
3 # Redistribution and use in source and binary forms, with or without 3 # Redistribution and use in source and binary forms, with or without
4 # modification, are permitted provided that the following conditions are 4 # modification, are permitted provided that the following conditions are
5 # met: 5 # met:
6 # 6 #
7 # * Redistributions of source code must retain the above copyright 7 # * Redistributions of source code must retain the above copyright
8 # notice, this list of conditions and the following disclaimer. 8 # notice, this list of conditions and the following disclaimer.
9 # * Redistributions in binary form must reproduce the above 9 # * Redistributions in binary form must reproduce the above
10 # copyright notice, this list of conditions and the following disclaimer 10 # copyright notice, this list of conditions and the following disclaimer
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
47 raise ValueError('Unrecognized node class: %s' % node_class) 47 raise ValueError('Unrecognized node class: %s' % node_class)
48 return file_node_to_idl_definitions(node) 48 return file_node_to_idl_definitions(node)
49 49
50 50
51 def file_node_to_idl_definitions(node): 51 def file_node_to_idl_definitions(node):
52 callback_functions = {} 52 callback_functions = {}
53 enumerations = {} 53 enumerations = {}
54 interfaces = {} 54 interfaces = {}
55 typedefs = STANDARD_TYPEDEFS 55 typedefs = STANDARD_TYPEDEFS
56 56
57 # FIXME: only needed for Perl, remove later
58 file_name = os.path.abspath(node.GetName())
59
60 children = node.GetChildren() 57 children = node.GetChildren()
61 for child in children: 58 for child in children:
62 child_class = child.GetClass() 59 child_class = child.GetClass()
63 if child_class == 'Interface': 60 if child_class == 'Interface':
64 interface = interface_node_to_idl_interface(child) 61 interface = interface_node_to_idl_interface(child)
65 interfaces[interface.name] = interface 62 interfaces[interface.name] = interface
66 elif child_class == 'Exception': 63 elif child_class == 'Exception':
67 exception = exception_node_to_idl_exception(child) 64 exception = exception_node_to_idl_exception(child)
68 # For simplicity, treat exceptions as interfaces 65 # For simplicity, treat exceptions as interfaces
69 interfaces[exception.name] = exception 66 interfaces[exception.name] = exception
70 elif child_class == 'Typedef': 67 elif child_class == 'Typedef':
71 type_name = child.GetName() 68 type_name = child.GetName()
72 typedefs[type_name] = typedef_node_to_type(child) 69 typedefs[type_name] = typedef_node_to_type(child)
73 elif child_class == 'Enum': 70 elif child_class == 'Enum':
74 enumeration = enum_node_to_idl_enum(child) 71 enumeration = enum_node_to_idl_enum(child)
75 enumerations[enumeration.name] = enumeration 72 enumerations[enumeration.name] = enumeration
76 elif child_class == 'Callback': 73 elif child_class == 'Callback':
77 callback_function = callback_node_to_idl_callback_function(child) 74 callback_function = callback_node_to_idl_callback_function(child)
78 callback_functions[callback_function.name] = callback_function 75 callback_functions[callback_function.name] = callback_function
79 elif child_class == 'Implements': 76 elif child_class == 'Implements':
80 # Implements is handled at the interface merging step 77 # Implements is handled at the interface merging step
81 pass 78 pass
82 else: 79 else:
83 raise ValueError('Unrecognized node class: %s' % child_class) 80 raise ValueError('Unrecognized node class: %s' % child_class)
84 81
85 return IdlDefinitions(callback_functions=callback_functions, enumerations=en umerations, file_name=file_name, interfaces=interfaces, typedefs=typedefs) 82 return IdlDefinitions(callback_functions=callback_functions, enumerations=en umerations, interfaces=interfaces, typedefs=typedefs)
86 83
87 # Constructors for Interface definitions and interface members 84 # Constructors for Interface definitions and interface members
88 85
89 86
90 def interface_node_to_idl_interface(node): 87 def interface_node_to_idl_interface(node):
91 attributes = [] 88 attributes = []
92 constants = [] 89 constants = []
93 constructors = None 90 constructors = None
94 custom_constructors = None 91 custom_constructors = None
95 extended_attributes = None 92 extended_attributes = None
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 for argument_node in argument_node_list: 210 for argument_node in argument_node_list:
214 arguments.append(argument_node_to_idl_argument(argument_node)) 211 arguments.append(argument_node_to_idl_argument(argument_node))
215 return arguments 212 return arguments
216 213
217 214
218 def argument_node_to_idl_argument(node): 215 def argument_node_to_idl_argument(node):
219 name = node.GetName() 216 name = node.GetName()
220 217
221 idl_type = None 218 idl_type = None
222 extended_attributes = {} 219 extended_attributes = {}
223 # FIXME: Boolean values are inconsistent due to Perl compatibility.
224 # Make all default to False once Perl removed.
225 is_nullable = False 220 is_nullable = False
226 is_optional = node.GetProperty('OPTIONAL') 221 is_optional = node.GetProperty('OPTIONAL')
227 is_variadic = None 222 is_variadic = False
228 children = node.GetChildren() 223 children = node.GetChildren()
229 for child in children: 224 for child in children:
230 child_class = child.GetClass() 225 child_class = child.GetClass()
231 if child_class == 'Type': 226 if child_class == 'Type':
232 idl_type = type_node_to_type(child) 227 idl_type = type_node_to_type(child)
233 # FIXME: Doesn't handle nullable arrays (Foo[]?), and arrays of 228 # FIXME: Doesn't handle nullable arrays (Foo[]?), and arrays of
234 # nullable (Foo?[]) are treated as nullable arrays. No actual use. 229 # nullable (Foo?[]) are treated as nullable arrays. No actual use.
235 is_nullable = child.GetProperty('NULLABLE') 230 is_nullable = child.GetProperty('NULLABLE')
236 elif child_class == 'ExtAttributes': 231 elif child_class == 'ExtAttributes':
237 extended_attributes = ext_attributes_node_to_extended_attributes(chi ld) 232 extended_attributes = ext_attributes_node_to_extended_attributes(chi ld)
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
510 sequence_type = type_node_to_type(sequence_child) 505 sequence_type = type_node_to_type(sequence_child)
511 return 'sequence<%s>' % sequence_type 506 return 'sequence<%s>' % sequence_type
512 507
513 508
514 def union_type_node_to_idl_union_type(node): 509 def union_type_node_to_idl_union_type(node):
515 union_member_types = [] 510 union_member_types = []
516 for member_type_node in node.GetChildren(): 511 for member_type_node in node.GetChildren():
517 member_type = type_node_to_type(member_type_node) 512 member_type = type_node_to_type(member_type_node)
518 union_member_types.append(member_type) 513 union_member_types.append(member_type)
519 return IdlUnionType(union_member_types=union_member_types) 514 return IdlUnionType(union_member_types=union_member_types)
OLDNEW
« no previous file with comments | « Source/bindings/scripts/idl_definitions.py ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698