| OLD | NEW |
| 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 148 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 159 name.append(token.name[1]) | 159 name.append(token.name[1]) |
| 160 return "::".join(name) | 160 return "::".join(name) |
| 161 return token | 161 return token |
| 162 | 162 |
| 163 def ExpressionToText(value, module): | 163 def ExpressionToText(value, module): |
| 164 if value[0] != "EXPRESSION": | 164 if value[0] != "EXPRESSION": |
| 165 raise Exception("Expected EXPRESSION, got" + value) | 165 raise Exception("Expected EXPRESSION, got" + value) |
| 166 return "".join(generator.ExpressionMapper(value, | 166 return "".join(generator.ExpressionMapper(value, |
| 167 lambda token: TranslateConstants(token, module))) | 167 lambda token: TranslateConstants(token, module))) |
| 168 | 168 |
| 169 def HasCallbacks(interface): |
| 170 for method in interface.methods: |
| 171 if method.response_parameters != None: |
| 172 return True |
| 173 return False |
| 174 |
| 169 _HEADER_SIZE = 8 | 175 _HEADER_SIZE = 8 |
| 170 | 176 |
| 171 class Generator(generator.Generator): | 177 class Generator(generator.Generator): |
| 172 | 178 |
| 173 cpp_filters = { | 179 cpp_filters = { |
| 174 "cpp_const_wrapper_type": GetCppConstWrapperType, | 180 "cpp_const_wrapper_type": GetCppConstWrapperType, |
| 175 "cpp_field_type": GetCppFieldType, | 181 "cpp_field_type": GetCppFieldType, |
| 176 "cpp_type": GetCppType, | 182 "cpp_type": GetCppType, |
| 177 "cpp_result_type": GetCppResultWrapperType, | 183 "cpp_result_type": GetCppResultWrapperType, |
| 178 "cpp_wrapper_type": GetCppWrapperType, | 184 "cpp_wrapper_type": GetCppWrapperType, |
| 179 "expression_to_text": ExpressionToText, | 185 "expression_to_text": ExpressionToText, |
| 180 "get_pad": pack.GetPad, | 186 "get_pad": pack.GetPad, |
| 187 "has_callbacks": HasCallbacks, |
| 181 "is_enum_kind": generator.IsEnumKind, | 188 "is_enum_kind": generator.IsEnumKind, |
| 182 "is_handle_kind": generator.IsHandleKind, | 189 "is_handle_kind": generator.IsHandleKind, |
| 183 "is_interface_kind": generator.IsInterfaceKind, | 190 "is_interface_kind": generator.IsInterfaceKind, |
| 184 "is_object_kind": generator.IsObjectKind, | 191 "is_object_kind": generator.IsObjectKind, |
| 185 "is_string_kind": generator.IsStringKind, | 192 "is_string_kind": generator.IsStringKind, |
| 186 "is_array_kind": lambda kind: isinstance(kind, mojom.Array), | 193 "is_array_kind": lambda kind: isinstance(kind, mojom.Array), |
| 187 "is_struct_with_handles": IsStructWithHandles, | 194 "is_struct_with_handles": IsStructWithHandles, |
| 188 "struct_size": lambda ps: ps.GetTotalSize() + _HEADER_SIZE, | 195 "struct_size": lambda ps: ps.GetTotalSize() + _HEADER_SIZE, |
| 189 "struct_from_method": generator.GetStructFromMethod, | 196 "struct_from_method": generator.GetStructFromMethod, |
| 190 "response_struct_from_method": generator.GetResponseStructFromMethod, | 197 "response_struct_from_method": generator.GetResponseStructFromMethod, |
| (...skipping 23 matching lines...) Expand all Loading... |
| 214 | 221 |
| 215 @UseJinja("cpp_templates/module.cc.tmpl", filters=cpp_filters) | 222 @UseJinja("cpp_templates/module.cc.tmpl", filters=cpp_filters) |
| 216 def GenerateModuleSource(self): | 223 def GenerateModuleSource(self): |
| 217 return self.GetJinjaExports() | 224 return self.GetJinjaExports() |
| 218 | 225 |
| 219 def GenerateFiles(self): | 226 def GenerateFiles(self): |
| 220 self.Write(self.GenerateModuleHeader(), "%s.h" % self.module.name) | 227 self.Write(self.GenerateModuleHeader(), "%s.h" % self.module.name) |
| 221 self.Write(self.GenerateModuleInternalHeader(), | 228 self.Write(self.GenerateModuleInternalHeader(), |
| 222 "%s-internal.h" % self.module.name) | 229 "%s-internal.h" % self.module.name) |
| 223 self.Write(self.GenerateModuleSource(), "%s.cc" % self.module.name) | 230 self.Write(self.GenerateModuleSource(), "%s.cc" % self.module.name) |
| OLD | NEW |