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 from generate import mojom | 7 from generate import mojom |
8 from generate import mojom_pack | 8 from generate import mojom_pack |
9 from generate import mojom_generator | 9 from generate import mojom_generator |
10 | 10 |
(...skipping 115 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
126 "is_string_kind": mojom_generator.IsStringKind, | 126 "is_string_kind": mojom_generator.IsStringKind, |
127 "is_array_kind": lambda kind: isinstance(kind, mojom.Array), | 127 "is_array_kind": lambda kind: isinstance(kind, mojom.Array), |
128 "is_struct_with_handles": IsStructWithHandles, | 128 "is_struct_with_handles": IsStructWithHandles, |
129 "struct_size": lambda ps: ps.GetTotalSize() + _HEADER_SIZE, | 129 "struct_size": lambda ps: ps.GetTotalSize() + _HEADER_SIZE, |
130 "struct_from_method": mojom_generator.GetStructFromMethod, | 130 "struct_from_method": mojom_generator.GetStructFromMethod, |
131 "stylize_method": mojom_generator.StudlyCapsToCamel, | 131 "stylize_method": mojom_generator.StudlyCapsToCamel, |
132 "substitute_namespace": SubstituteNamespace, | 132 "substitute_namespace": SubstituteNamespace, |
133 "verify_token_type": mojom_generator.VerifyTokenType, | 133 "verify_token_type": mojom_generator.VerifyTokenType, |
134 } | 134 } |
135 | 135 |
136 @UseJinja("cpp_templates/module.h.tmpl", filters=cpp_filters) | 136 def GetJinjaExports(self): |
137 def GenerateModuleHeader(self): | |
138 return { | 137 return { |
139 "module_name": self.module.name, | 138 "module_name": self.module.name, |
140 "namespace": self.module.namespace, | 139 "namespace": self.module.namespace, |
141 "imports": self.module.imports, | 140 "imports": self.module.imports, |
142 "kinds": self.module.kinds, | 141 "kinds": self.module.kinds, |
143 "enums": self.module.enums, | 142 "enums": self.module.enums, |
144 "structs": self.GetStructs(), | 143 "structs": self.GetStructs(), |
145 "interfaces": self.module.interfaces, | 144 "interfaces": self.module.interfaces, |
146 "include_prefix": self.GetIncludePrefix(), | 145 "include_prefix": self.GetIncludePrefix(), |
147 } | 146 } |
148 | 147 |
| 148 @UseJinja("cpp_templates/module.h.tmpl", filters=cpp_filters) |
| 149 def GenerateModuleHeader(self): |
| 150 return self.GetJinjaExports() |
| 151 |
149 @UseJinja("cpp_templates/module_internal.h.tmpl", filters=cpp_filters) | 152 @UseJinja("cpp_templates/module_internal.h.tmpl", filters=cpp_filters) |
150 def GenerateModuleInternalHeader(self): | 153 def GenerateModuleInternalHeader(self): |
151 return { | 154 return self.GetJinjaExports() |
152 "module_name": self.module.name, | |
153 "namespace": self.module.namespace, | |
154 "imports": self.module.imports, | |
155 "kinds": self.module.kinds, | |
156 "enums": self.module.enums, | |
157 "structs": self.GetStructs(), | |
158 "interfaces": self.module.interfaces, | |
159 "include_prefix": self.GetIncludePrefix(), | |
160 } | |
161 | 155 |
162 @UseJinja("cpp_templates/module.cc.tmpl", filters=cpp_filters) | 156 @UseJinja("cpp_templates/module.cc.tmpl", filters=cpp_filters) |
163 def GenerateModuleSource(self): | 157 def GenerateModuleSource(self): |
164 return { | 158 return self.GetJinjaExports() |
165 "module_name": self.module.name, | |
166 "namespace": self.module.namespace, | |
167 "imports": self.module.imports, | |
168 "kinds": self.module.kinds, | |
169 "enums": self.module.enums, | |
170 "structs": self.GetStructs(), | |
171 "interfaces": self.module.interfaces, | |
172 "include_prefix": self.GetIncludePrefix(), | |
173 } | |
174 | 159 |
175 def GenerateFiles(self): | 160 def GenerateFiles(self): |
176 self.Write(self.GenerateModuleHeader(), "%s.h" % self.module.name) | 161 self.Write(self.GenerateModuleHeader(), "%s.h" % self.module.name) |
177 self.Write(self.GenerateModuleInternalHeader(), | 162 self.Write(self.GenerateModuleInternalHeader(), |
178 "%s_internal.h" % self.module.name) | 163 "%s_internal.h" % self.module.name) |
179 self.Write(self.GenerateModuleSource(), "%s.cc" % self.module.name) | 164 self.Write(self.GenerateModuleSource(), "%s.cc" % self.module.name) |
180 | 165 |
181 def GetIncludePrefix(self): | 166 def GetIncludePrefix(self): |
182 if not self.header_dir: | 167 if not self.header_dir: |
183 return "" | 168 return "" |
184 if self.header_dir[-1] == "/": | 169 if self.header_dir[-1] == "/": |
185 return self.header_dir | 170 return self.header_dir |
186 return self.header_dir + "/" | 171 return self.header_dir + "/" |
OLD | NEW |