Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1077)

Side by Side Diff: tools/json_schema_compiler/cc_generator.py

Issue 2539363004: Make base::Value::TYPE a scoped enum. (Closed)
Patch Set: Rebase Created 4 years ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « tools/ipc_fuzzer/fuzzer/fuzzer.cc ('k') | tools/json_schema_compiler/cpp_util.py » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 289 matching lines...) Expand 10 before | Expand all | Expand 10 after
300 is_ptr=True)) 300 is_ptr=True))
301 .Append('return true;') 301 .Append('return true;')
302 .Eblock('}') 302 .Eblock('}')
303 ) 303 )
304 (c.Concat(self._GenerateError( 304 (c.Concat(self._GenerateError(
305 '"expected %s, got " + %s' % 305 '"expected %s, got " + %s' %
306 (" or ".join(choice.name for choice in type_.choices), 306 (" or ".join(choice.name for choice in type_.choices),
307 self._util_cc_helper.GetValueTypeString('value')))) 307 self._util_cc_helper.GetValueTypeString('value'))))
308 .Append('return false;')) 308 .Append('return false;'))
309 elif type_.property_type == PropertyType.OBJECT: 309 elif type_.property_type == PropertyType.OBJECT:
310 (c.Sblock('if (!value.IsType(base::Value::TYPE_DICTIONARY)) {') 310 (c.Sblock('if (!value.IsType(base::Value::Type::DICTIONARY)) {')
311 .Concat(self._GenerateError( 311 .Concat(self._GenerateError(
312 '"expected dictionary, got " + ' + 312 '"expected dictionary, got " + ' +
313 self._util_cc_helper.GetValueTypeString('value'))) 313 self._util_cc_helper.GetValueTypeString('value')))
314 .Append('return false;') 314 .Append('return false;')
315 .Eblock('}')) 315 .Eblock('}'))
316 316
317 if type_.properties or type_.additional_properties is not None: 317 if type_.properties or type_.additional_properties is not None:
318 c.Append('const base::DictionaryValue* dict = ' 318 c.Append('const base::DictionaryValue* dict = '
319 'static_cast<const base::DictionaryValue*>(&value);') 319 'static_cast<const base::DictionaryValue*>(&value);')
320 if self._generate_error_messages: 320 if self._generate_error_messages:
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after
706 for i, param in enumerate(function.params): 706 for i, param in enumerate(function.params):
707 # Any failure will cause this function to return. If any argument is 707 # Any failure will cause this function to return. If any argument is
708 # incorrect or missing, those following it are not processed. Note that 708 # incorrect or missing, those following it are not processed. Note that
709 # for optional arguments, we allow missing arguments and proceed because 709 # for optional arguments, we allow missing arguments and proceed because
710 # there may be other arguments following it. 710 # there may be other arguments following it.
711 failure_value = 'std::unique_ptr<Params>()' 711 failure_value = 'std::unique_ptr<Params>()'
712 c.Append() 712 c.Append()
713 value_var = param.unix_name + '_value' 713 value_var = param.unix_name + '_value'
714 (c.Append('const base::Value* %(value_var)s = NULL;') 714 (c.Append('const base::Value* %(value_var)s = NULL;')
715 .Append('if (args.Get(%(i)s, &%(value_var)s) &&') 715 .Append('if (args.Get(%(i)s, &%(value_var)s) &&')
716 .Sblock(' !%(value_var)s->IsType(base::Value::TYPE_NULL)) {') 716 .Sblock(' !%(value_var)s->IsType(base::Value::Type::NONE)) {')
717 .Concat(self._GeneratePopulatePropertyFromValue( 717 .Concat(self._GeneratePopulatePropertyFromValue(
718 param, value_var, 'params', failure_value)) 718 param, value_var, 'params', failure_value))
719 .Eblock('}') 719 .Eblock('}')
720 ) 720 )
721 if not param.optional: 721 if not param.optional:
722 (c.Sblock('else {') 722 (c.Sblock('else {')
723 .Concat(self._GenerateError('"\'%%(key)s\' is required"')) 723 .Concat(self._GenerateError('"\'%%(key)s\' is required"'))
724 .Append('return %s;' % failure_value) 724 .Append('return %s;' % failure_value)
725 .Eblock('}')) 725 .Eblock('}'))
726 c.Substitute({'value_var': value_var, 'i': i, 'key': param.name}) 726 c.Substitute({'value_var': value_var, 'i': i, 'key': param.name})
(...skipping 154 matching lines...) Expand 10 before | Expand all | Expand 10 after
881 (c.Append('if (!%%(cpp_type)s::Populate(%s))' % self._GenerateArgs( 881 (c.Append('if (!%%(cpp_type)s::Populate(%s))' % self._GenerateArgs(
882 ('*%(src_var)s', '&%(dst_var)s'))) 882 ('*%(src_var)s', '&%(dst_var)s')))
883 .Append(' return %(failure_value)s;')) 883 .Append(' return %(failure_value)s;'))
884 elif underlying_type.property_type == PropertyType.ENUM: 884 elif underlying_type.property_type == PropertyType.ENUM:
885 c.Concat(self._GenerateStringToEnumConversion(underlying_type, 885 c.Concat(self._GenerateStringToEnumConversion(underlying_type,
886 src_var, 886 src_var,
887 dst_var, 887 dst_var,
888 failure_value)) 888 failure_value))
889 elif underlying_type.property_type == PropertyType.BINARY: 889 elif underlying_type.property_type == PropertyType.BINARY:
890 (c.Append('const base::BinaryValue* binary_value = NULL;') 890 (c.Append('const base::BinaryValue* binary_value = NULL;')
891 .Sblock('if (!%(src_var)s->IsType(base::Value::TYPE_BINARY)) {') 891 .Sblock('if (!%(src_var)s->IsType(base::Value::Type::BINARY)) {')
892 .Concat(self._GenerateError( 892 .Concat(self._GenerateError(
893 '"\'%%(key)s\': expected binary, got " + ' + 893 '"\'%%(key)s\': expected binary, got " + ' +
894 self._util_cc_helper.GetValueTypeString('%%(src_var)s', True))) 894 self._util_cc_helper.GetValueTypeString('%%(src_var)s', True)))
895 ) 895 )
896 if not self._generate_error_messages: 896 if not self._generate_error_messages:
897 c.Append('return %(failure_value)s;') 897 c.Append('return %(failure_value)s;')
898 (c.Eblock('}') 898 (c.Eblock('}')
899 .Sblock('else {') 899 .Sblock('else {')
900 .Append(' binary_value =') 900 .Append(' binary_value =')
901 .Append(' static_cast<const base::BinaryValue*>(%(src_var)s);') 901 .Append(' static_cast<const base::BinaryValue*>(%(src_var)s);')
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
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)
OLDNEW
« no previous file with comments | « tools/ipc_fuzzer/fuzzer/fuzzer.cc ('k') | tools/json_schema_compiler/cpp_util.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698