| 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 import util_cc_helper | 9 import util_cc_helper |
| 10 from cpp_namespace_environment import CppNamespaceEnvironment | 10 from cpp_namespace_environment import CppNamespaceEnvironment |
| (...skipping 402 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 413 | 413 |
| 414 def _GenerateChoiceTypeToValue(self, cpp_namespace, type_): | 414 def _GenerateChoiceTypeToValue(self, cpp_namespace, type_): |
| 415 """Generates a function that serializes a choice-representing type | 415 """Generates a function that serializes a choice-representing type |
| 416 into a base::Value. | 416 into a base::Value. |
| 417 """ | 417 """ |
| 418 c = Code() | 418 c = Code() |
| 419 c.Sblock('scoped_ptr<base::Value> %s::ToValue() const {' % cpp_namespace) | 419 c.Sblock('scoped_ptr<base::Value> %s::ToValue() const {' % cpp_namespace) |
| 420 c.Append('scoped_ptr<base::Value> result;') | 420 c.Append('scoped_ptr<base::Value> result;') |
| 421 for choice in type_.choices: | 421 for choice in type_.choices: |
| 422 choice_var = 'as_%s' % choice.unix_name | 422 choice_var = 'as_%s' % choice.unix_name |
| 423 # Enums cannot be wrapped with scoped_ptr, but the XXX_NONE enum value |
| 424 # is equal to 0. |
| 423 (c.Sblock('if (%s) {' % choice_var) | 425 (c.Sblock('if (%s) {' % choice_var) |
| 424 .Append('DCHECK(!result) << "Cannot set multiple choices for %s";' % | 426 .Append('DCHECK(!result) << "Cannot set multiple choices for %s";' % |
| 425 type_.unix_name) | 427 type_.unix_name) |
| 426 .Cblock(self._CreateValueFromType('result.reset(%s);', | 428 .Cblock(self._CreateValueFromType('result.reset(%s);', |
| 427 choice.name, | 429 choice.name, |
| 428 choice, | 430 choice, |
| 429 '*%s' % choice_var)) | 431 choice_var, |
| 432 True)) |
| 430 .Eblock('}') | 433 .Eblock('}') |
| 431 ) | 434 ) |
| 432 (c.Append('DCHECK(result) << "Must set at least one choice for %s";' % | 435 (c.Append('DCHECK(result) << "Must set at least one choice for %s";' % |
| 433 type_.unix_name) | 436 type_.unix_name) |
| 434 .Append('return result.Pass();') | 437 .Append('return result.Pass();') |
| 435 .Eblock('}') | 438 .Eblock('}') |
| 436 ) | 439 ) |
| 437 return c | 440 return c |
| 438 | 441 |
| 439 def _GenerateFunction(self, function): | 442 def _GenerateFunction(self, function): |
| (...skipping 630 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1070 if self._generate_error_messages: | 1073 if self._generate_error_messages: |
| 1071 params = list(params) + ['base::string16* error'] | 1074 params = list(params) + ['base::string16* error'] |
| 1072 return ', '.join(str(p) for p in params) | 1075 return ', '.join(str(p) for p in params) |
| 1073 | 1076 |
| 1074 def _GenerateArgs(self, args): | 1077 def _GenerateArgs(self, args): |
| 1075 """Builds the argument list for a function, given an array of arguments. | 1078 """Builds the argument list for a function, given an array of arguments. |
| 1076 """ | 1079 """ |
| 1077 if self._generate_error_messages: | 1080 if self._generate_error_messages: |
| 1078 args = list(args) + ['error'] | 1081 args = list(args) + ['error'] |
| 1079 return ', '.join(str(a) for a in args) | 1082 return ', '.join(str(a) for a in args) |
| OLD | NEW |