| 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 549 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 560 .Append('} // namespace %s' % event_namespace) | 560 .Append('} // namespace %s' % event_namespace) |
| 561 ) | 561 ) |
| 562 return c | 562 return c |
| 563 | 563 |
| 564 def _CreateValueFromType(self, code, prop_name, type_, var, is_ptr=False): | 564 def _CreateValueFromType(self, code, prop_name, type_, var, is_ptr=False): |
| 565 """Creates a base::Value given a type. Generated code passes ownership | 565 """Creates a base::Value given a type. Generated code passes ownership |
| 566 to caller via std::unique_ptr. | 566 to caller via std::unique_ptr. |
| 567 | 567 |
| 568 var: variable or variable* | 568 var: variable or variable* |
| 569 | 569 |
| 570 E.g for std::string, generate new base::StringValue(var) | 570 E.g for std::string, generate new base::Value(var) |
| 571 """ | 571 """ |
| 572 c = Code() | 572 c = Code() |
| 573 underlying_type = self._type_helper.FollowRef(type_) | 573 underlying_type = self._type_helper.FollowRef(type_) |
| 574 if underlying_type.property_type == PropertyType.ARRAY: | 574 if underlying_type.property_type == PropertyType.ARRAY: |
| 575 # Enums are treated specially because C++ templating thinks that they're | 575 # Enums are treated specially because C++ templating thinks that they're |
| 576 # ints, but really they're strings. So we create a vector of strings and | 576 # ints, but really they're strings. So we create a vector of strings and |
| 577 # populate it with the names of the enum in the array. The |ToString| | 577 # populate it with the names of the enum in the array. The |ToString| |
| 578 # function of the enum can be in another namespace when the enum is | 578 # function of the enum can be in another namespace when the enum is |
| 579 # referenced. Templates can not be used here because C++ templating does | 579 # referenced. Templates can not be used here because C++ templating does |
| 580 # not support passing a namespace as an argument. | 580 # not support passing a namespace as an argument. |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 624 underlying_type.property_type == PropertyType.FUNCTION): | 624 underlying_type.property_type == PropertyType.FUNCTION): |
| 625 if is_ptr: | 625 if is_ptr: |
| 626 vardot = '(%s)->' % var | 626 vardot = '(%s)->' % var |
| 627 else: | 627 else: |
| 628 vardot = '(%s).' % var | 628 vardot = '(%s).' % var |
| 629 return '%sCreateDeepCopy()' % vardot | 629 return '%sCreateDeepCopy()' % vardot |
| 630 elif underlying_type.property_type == PropertyType.ENUM: | 630 elif underlying_type.property_type == PropertyType.ENUM: |
| 631 maybe_namespace = '' | 631 maybe_namespace = '' |
| 632 if type_.property_type == PropertyType.REF: | 632 if type_.property_type == PropertyType.REF: |
| 633 maybe_namespace = '%s::' % underlying_type.namespace.unix_name | 633 maybe_namespace = '%s::' % underlying_type.namespace.unix_name |
| 634 return 'base::MakeUnique<base::StringValue>(%sToString(%s))' % ( | 634 return 'base::MakeUnique<base::Value>(%sToString(%s))' % ( |
| 635 maybe_namespace, var) | 635 maybe_namespace, var) |
| 636 elif underlying_type.property_type == PropertyType.BINARY: | 636 elif underlying_type.property_type == PropertyType.BINARY: |
| 637 if is_ptr: | 637 if is_ptr: |
| 638 vardot = var + '->' | 638 vardot = var + '->' |
| 639 else: | 639 else: |
| 640 vardot = var + '.' | 640 vardot = var + '.' |
| 641 return ('base::BinaryValue::CreateWithCopiedBuffer(' | 641 return ('base::BinaryValue::CreateWithCopiedBuffer(' |
| 642 '%sdata(), %ssize())' % (vardot, vardot)) | 642 '%sdata(), %ssize())' % (vardot, vardot)) |
| 643 elif underlying_type.property_type == PropertyType.ARRAY: | 643 elif underlying_type.property_type == PropertyType.ARRAY: |
| 644 return '%s' % self._util_cc_helper.CreateValueFromArray( | 644 return '%s' % self._util_cc_helper.CreateValueFromArray( |
| 645 var, | 645 var, |
| 646 is_ptr) | 646 is_ptr) |
| 647 elif underlying_type.property_type.is_fundamental: | 647 elif underlying_type.property_type.is_fundamental: |
| 648 if is_ptr: | 648 if is_ptr: |
| 649 var = '*%s' % var | 649 var = '*%s' % var |
| 650 if underlying_type.property_type == PropertyType.STRING: | 650 if underlying_type.property_type == PropertyType.STRING: |
| 651 return 'base::MakeUnique<base::StringValue>(%s)' % var | 651 return 'base::MakeUnique<base::Value>(%s)' % var |
| 652 else: | 652 else: |
| 653 return 'base::MakeUnique<base::Value>(%s)' % var | 653 return 'base::MakeUnique<base::Value>(%s)' % var |
| 654 else: | 654 else: |
| 655 raise NotImplementedError('Conversion of %s to base::Value not ' | 655 raise NotImplementedError('Conversion of %s to base::Value not ' |
| 656 'implemented' % repr(type_.type_)) | 656 'implemented' % repr(type_.type_)) |
| 657 | 657 |
| 658 def _GenerateParamsCheck(self, function, var): | 658 def _GenerateParamsCheck(self, function, var): |
| 659 """Generates a check for the correct number of arguments when creating | 659 """Generates a check for the correct number of arguments when creating |
| 660 Params. | 660 Params. |
| 661 """ | 661 """ |
| (...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1150 if self._generate_error_messages: | 1150 if self._generate_error_messages: |
| 1151 params = list(params) + ['base::string16* error'] | 1151 params = list(params) + ['base::string16* error'] |
| 1152 return ', '.join(str(p) for p in params) | 1152 return ', '.join(str(p) for p in params) |
| 1153 | 1153 |
| 1154 def _GenerateArgs(self, args): | 1154 def _GenerateArgs(self, args): |
| 1155 """Builds the argument list for a function, given an array of arguments. | 1155 """Builds the argument list for a function, given an array of arguments. |
| 1156 """ | 1156 """ |
| 1157 if self._generate_error_messages: | 1157 if self._generate_error_messages: |
| 1158 args = list(args) + ['error'] | 1158 args = list(args) + ['error'] |
| 1159 return ', '.join(str(a) for a in args) | 1159 return ', '.join(str(a) for a in args) |
| OLD | NEW |