OLD | NEW |
1 #!/usr/bin/env python | 1 #!/usr/bin/env python |
2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 2 # Copyright (c) 2012 The Chromium Authors. All rights reserved. |
3 # Use of this source code is governed by a BSD-style license that can be | 3 # Use of this source code is governed by a BSD-style license that can be |
4 # found in the LICENSE file. | 4 # found in the LICENSE file. |
5 """Generator for C++ structs from api json files. | 5 """Generator for C++ structs from api json files. |
6 | 6 |
7 The purpose of this tool is to remove the need for hand-written code that | 7 The purpose of this tool is to remove the need for hand-written code that |
8 converts to and from base::Value types when receiving javascript api calls. | 8 converts to and from base::Value types when receiving javascript api calls. |
9 Originally written for generating code for extension apis. Reference schemas | 9 Originally written for generating code for extension apis. Reference schemas |
10 are in chrome/common/extensions/api. | 10 are in chrome/common/extensions/api. |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
150 type_generator = CppTypeGenerator(api_model, | 150 type_generator = CppTypeGenerator(api_model, |
151 default_namespace=default_namespace) | 151 default_namespace=default_namespace) |
152 | 152 |
153 if opts.generator == 'cpp-bundle': | 153 if opts.generator == 'cpp-bundle': |
154 cpp_bundle_generator = CppBundleGenerator(opts.root, | 154 cpp_bundle_generator = CppBundleGenerator(opts.root, |
155 api_model, | 155 api_model, |
156 api_defs, | 156 api_defs, |
157 type_generator, | 157 type_generator, |
158 opts.namespace) | 158 opts.namespace) |
159 generators = [ | 159 generators = [ |
| 160 ('generated_api.cc', cpp_bundle_generator.api_cc_generator), |
160 ('generated_api.h', cpp_bundle_generator.api_h_generator), | 161 ('generated_api.h', cpp_bundle_generator.api_h_generator), |
161 ('generated_schemas.cc', cpp_bundle_generator.schemas_cc_generator), | 162 ('generated_schemas.cc', cpp_bundle_generator.schemas_cc_generator), |
162 ('generated_schemas.h', cpp_bundle_generator.schemas_h_generator) | 163 ('generated_schemas.h', cpp_bundle_generator.schemas_h_generator) |
163 ] | 164 ] |
164 elif opts.generator == 'cpp': | 165 elif opts.generator == 'cpp': |
165 cpp_generator = CppGenerator(type_generator, opts.namespace) | 166 cpp_generator = CppGenerator(type_generator, opts.namespace) |
166 generators = [ | 167 generators = [ |
167 ('%s.h' % namespace.unix_name, cpp_generator.h_generator), | 168 ('%s.h' % namespace.unix_name, cpp_generator.h_generator), |
168 ('%s.cc' % namespace.unix_name, cpp_generator.cc_generator) | 169 ('%s.cc' % namespace.unix_name, cpp_generator.cc_generator) |
169 ] | 170 ] |
170 elif opts.generator == 'dart': | 171 elif opts.generator == 'dart': |
171 generators = [ | 172 generators = [ |
172 ('%s.dart' % namespace.unix_name, DartGenerator( | 173 ('%s.dart' % namespace.unix_name, DartGenerator( |
173 opts.dart_overrides_dir)) | 174 opts.dart_overrides_dir)) |
174 ] | 175 ] |
175 else: | 176 else: |
176 raise Exception('Unrecognised generator %s' % opts.generator) | 177 raise Exception('Unrecognised generator %s' % opts.generator) |
177 | 178 |
178 for filename, generator in generators: | 179 for filename, generator in generators: |
179 code = generator.Generate(namespace).Render() | 180 code = generator.Generate(namespace).Render() |
180 if opts.destdir: | 181 if opts.destdir: |
181 with open(os.path.join(opts.destdir, namespace.source_file_dir, | 182 with open(os.path.join(opts.destdir, namespace.source_file_dir, |
182 filename), 'w') as f: | 183 filename), 'w') as f: |
183 f.write(code) | 184 f.write(code) |
184 else: | 185 else: |
185 print filename | 186 print filename |
186 print | 187 print |
187 print code | 188 print code |
188 print | 189 print |
OLD | NEW |