OLD | NEW |
1 # Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 # Copyright (c) 2012 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 from code import Code | 5 from code import Code |
6 from model import PropertyType | 6 from model import PropertyType |
7 import cpp_util | 7 import cpp_util |
8 import schema_util | 8 import schema_util |
9 | 9 |
10 class HGenerator(object): | 10 class HGenerator(object): |
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
223 .Eblock('};') | 223 .Eblock('};') |
224 ) | 224 ) |
225 c.Substitute({'classname': classname}) | 225 c.Substitute({'classname': classname}) |
226 return c | 226 return c |
227 | 227 |
228 def _GenerateEvent(self, event): | 228 def _GenerateEvent(self, event): |
229 """Generates the namespaces for an event. | 229 """Generates the namespaces for an event. |
230 """ | 230 """ |
231 c = Code() | 231 c = Code() |
232 (c.Sblock('namespace %s {' % cpp_util.Classname(event.name)) | 232 (c.Sblock('namespace %s {' % cpp_util.Classname(event.name)) |
233 .Concat(self._GenerateCreateCallbackArguments(event)) | 233 .Concat(self._GenerateCreateCallbackArguments(event, |
| 234 generate_to_json=True)) |
234 .Eblock('};') | 235 .Eblock('};') |
235 ) | 236 ) |
236 return c | 237 return c |
237 | 238 |
238 def _GenerateFunction(self, function): | 239 def _GenerateFunction(self, function): |
239 """Generates the namespaces and structs for a function. | 240 """Generates the namespaces and structs for a function. |
240 """ | 241 """ |
241 c = Code() | 242 c = Code() |
242 (c.Sblock('namespace %s {' % cpp_util.Classname(function.name)) | 243 (c.Sblock('namespace %s {' % cpp_util.Classname(function.name)) |
243 .Concat(self._GenerateFunctionParams(function)) | 244 .Concat(self._GenerateFunctionParams(function)) |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
317 if prop.type_ == PropertyType.ARRAY: | 318 if prop.type_ == PropertyType.ARRAY: |
318 c.Concat(self._GeneratePrivatePropertyStructures([prop.item_type])) | 319 c.Concat(self._GeneratePrivatePropertyStructures([prop.item_type])) |
319 c.Append() | 320 c.Append() |
320 elif prop.type_ == PropertyType.CHOICES: | 321 elif prop.type_ == PropertyType.CHOICES: |
321 # We only need GetChoiceValue() if there is a ToValue() method. | 322 # We only need GetChoiceValue() if there is a ToValue() method. |
322 if prop.from_client: | 323 if prop.from_client: |
323 c.Append('scoped_ptr<base::Value> Get%sChoiceValue() const;' % ( | 324 c.Append('scoped_ptr<base::Value> Get%sChoiceValue() const;' % ( |
324 cpp_util.Classname(prop.name))) | 325 cpp_util.Classname(prop.name))) |
325 return c | 326 return c |
326 | 327 |
327 def _GenerateCreateCallbackArguments(self, function): | 328 def _GenerateCreateCallbackArguments(self, function, generate_to_json=False): |
328 """Generates functions for passing paramaters to a callback. | 329 """Generates functions for passing paramaters to a callback. |
329 """ | 330 """ |
330 c = Code() | 331 c = Code() |
331 params = function.params | 332 params = function.params |
332 c.Concat(self._GeneratePropertyStructures(params)) | 333 c.Concat(self._GeneratePropertyStructures(params)) |
333 | 334 |
334 param_lists = self._cpp_type_generator.GetAllPossibleParameterLists(params) | 335 param_lists = self._cpp_type_generator.GetAllPossibleParameterLists(params) |
335 for param_list in param_lists: | 336 for param_list in param_lists: |
336 declaration_list = [] | 337 declaration_list = [] |
337 for param in param_list: | 338 for param in param_list: |
338 if param.description: | 339 if param.description: |
339 c.Comment(param.description) | 340 c.Comment(param.description) |
340 declaration_list.append('const %s' % cpp_util.GetParameterDeclaration( | 341 declaration_list.append('const %s' % cpp_util.GetParameterDeclaration( |
341 param, self._cpp_type_generator.GetType(param))) | 342 param, self._cpp_type_generator.GetType(param))) |
342 c.Append('scoped_ptr<base::ListValue> Create(%s);' % | 343 c.Append('scoped_ptr<base::ListValue> Create(%s);' % |
343 ', '.join(declaration_list)) | 344 ', '.join(declaration_list)) |
| 345 if generate_to_json: |
| 346 c.Append('std::string ToJson(%s);' % ', '.join(declaration_list)) |
344 return c | 347 return c |
345 | 348 |
346 def _GenerateFunctionResults(self, callback): | 349 def _GenerateFunctionResults(self, callback): |
347 """Generates namespace for passing a function's result back. | 350 """Generates namespace for passing a function's result back. |
348 """ | 351 """ |
349 c = Code() | 352 c = Code() |
350 (c.Sblock('namespace Results {') | 353 (c.Sblock('namespace Results {') |
351 .Concat(self._GenerateCreateCallbackArguments(callback)) | 354 .Concat(self._GenerateCreateCallbackArguments(callback)) |
352 .Eblock('};') | 355 .Eblock('};') |
353 ) | 356 ) |
354 return c | 357 return c |
OLD | NEW |