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

Side by Side Diff: mojo/public/tools/bindings/generators/mojom_cpp_generator.py

Issue 273233002: Mojo cpp bindings: add support for validating incoming messages. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: sync and rebase Created 6 years, 7 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 # Copyright 2013 The Chromium Authors. All rights reserved. 1 # Copyright 2013 The Chromium Authors. All rights reserved.
2 # Use of this source code is governed by a BSD-style license that can be 2 # Use of this source code is governed by a BSD-style license that can be
3 # found in the LICENSE file. 3 # found in the LICENSE file.
4 4
5 """Generates C++ source files from a mojom.Module.""" 5 """Generates C++ source files from a mojom.Module."""
6 6
7 import mojom.generate.generator as generator 7 import mojom.generate.generator as generator
8 import mojom.generate.module as mojom 8 import mojom.generate.module as mojom
9 import mojom.generate.pack as pack 9 import mojom.generate.pack as pack
10 from mojom.generate.template_expander import UseJinja 10 from mojom.generate.template_expander import UseJinja
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
164 name.append(token.name) 164 name.append(token.name)
165 return "::".join(name) 165 return "::".join(name)
166 return token 166 return token
167 167
168 def ExpressionToText(value, module): 168 def ExpressionToText(value, module):
169 if value[0] != "EXPRESSION": 169 if value[0] != "EXPRESSION":
170 raise Exception("Expected EXPRESSION, got" + value) 170 raise Exception("Expected EXPRESSION, got" + value)
171 return "".join(generator.ExpressionMapper(value, 171 return "".join(generator.ExpressionMapper(value,
172 lambda token: TranslateConstants(token, module))) 172 lambda token: TranslateConstants(token, module)))
173 173
174 def HasCallbacks(interface):
175 for method in interface.methods:
176 if method.response_parameters != None:
177 return True
178 return False
179
174 _HEADER_SIZE = 8 180 _HEADER_SIZE = 8
175 181
176 class Generator(generator.Generator): 182 class Generator(generator.Generator):
177 183
178 cpp_filters = { 184 cpp_filters = {
179 "cpp_const_wrapper_type": GetCppConstWrapperType, 185 "cpp_const_wrapper_type": GetCppConstWrapperType,
180 "cpp_field_type": GetCppFieldType, 186 "cpp_field_type": GetCppFieldType,
181 "cpp_pod_type": GetCppPodType, 187 "cpp_pod_type": GetCppPodType,
182 "cpp_result_type": GetCppResultWrapperType, 188 "cpp_result_type": GetCppResultWrapperType,
183 "cpp_type": GetCppType, 189 "cpp_type": GetCppType,
184 "cpp_wrapper_type": GetCppWrapperType, 190 "cpp_wrapper_type": GetCppWrapperType,
185 "expression_to_text": ExpressionToText, 191 "expression_to_text": ExpressionToText,
186 "get_pad": pack.GetPad, 192 "get_pad": pack.GetPad,
193 "has_callbacks": HasCallbacks,
187 "is_enum_kind": generator.IsEnumKind, 194 "is_enum_kind": generator.IsEnumKind,
188 "is_handle_kind": generator.IsHandleKind, 195 "is_handle_kind": generator.IsHandleKind,
189 "is_interface_kind": generator.IsInterfaceKind, 196 "is_interface_kind": generator.IsInterfaceKind,
190 "is_object_kind": generator.IsObjectKind, 197 "is_object_kind": generator.IsObjectKind,
191 "is_string_kind": generator.IsStringKind, 198 "is_string_kind": generator.IsStringKind,
192 "is_array_kind": lambda kind: isinstance(kind, mojom.Array), 199 "is_array_kind": lambda kind: isinstance(kind, mojom.Array),
193 "is_struct_with_handles": IsStructWithHandles, 200 "is_struct_with_handles": IsStructWithHandles,
194 "struct_size": lambda ps: ps.GetTotalSize() + _HEADER_SIZE, 201 "struct_size": lambda ps: ps.GetTotalSize() + _HEADER_SIZE,
195 "struct_from_method": generator.GetStructFromMethod, 202 "struct_from_method": generator.GetStructFromMethod,
196 "response_struct_from_method": generator.GetResponseStructFromMethod, 203 "response_struct_from_method": generator.GetResponseStructFromMethod,
(...skipping 23 matching lines...) Expand all
220 227
221 @UseJinja("cpp_templates/module.cc.tmpl", filters=cpp_filters) 228 @UseJinja("cpp_templates/module.cc.tmpl", filters=cpp_filters)
222 def GenerateModuleSource(self): 229 def GenerateModuleSource(self):
223 return self.GetJinjaExports() 230 return self.GetJinjaExports()
224 231
225 def GenerateFiles(self, args): 232 def GenerateFiles(self, args):
226 self.Write(self.GenerateModuleHeader(), "%s.h" % self.module.name) 233 self.Write(self.GenerateModuleHeader(), "%s.h" % self.module.name)
227 self.Write(self.GenerateModuleInternalHeader(), 234 self.Write(self.GenerateModuleInternalHeader(),
228 "%s-internal.h" % self.module.name) 235 "%s-internal.h" % self.module.name)
229 self.Write(self.GenerateModuleSource(), "%s.cc" % self.module.name) 236 self.Write(self.GenerateModuleSource(), "%s.cc" % self.module.name)
OLDNEW
« no previous file with comments | « mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl ('k') | mojo/public/tools/bindings/mojom.gni » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698