Chromium Code Reviews| 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 _API_UTIL_NAMESPACE = 'json_schema_compiler::util' | 5 _API_UTIL_NAMESPACE = 'json_schema_compiler::util' |
| 6 | 6 |
| 7 | 7 |
| 8 class UtilCCHelper(object): | 8 class UtilCCHelper(object): |
| 9 """A util class that generates code that uses | 9 """A util class that generates code that uses |
| 10 tools/json_schema_compiler/util.cc. | 10 tools/json_schema_compiler/util.cc. |
| (...skipping 18 matching lines...) Expand all Loading... | |
| 29 sub['type'] = self._type_manager.GetCppType(prop), | 29 sub['type'] = self._type_manager.GetCppType(prop), |
| 30 if array_prop.optional: | 30 if array_prop.optional: |
| 31 val = ('%(namespace)s::PopulateOptionalArrayFromDictionary' | 31 val = ('%(namespace)s::PopulateOptionalArrayFromDictionary' |
| 32 '(*%(src)s, "%(name)s", &%(dst)s)') | 32 '(*%(src)s, "%(name)s", &%(dst)s)') |
| 33 else: | 33 else: |
| 34 val = ('%(namespace)s::PopulateArrayFromDictionary' | 34 val = ('%(namespace)s::PopulateArrayFromDictionary' |
| 35 '(*%(src)s, "%(name)s", &%(dst)s)') | 35 '(*%(src)s, "%(name)s", &%(dst)s)') |
| 36 | 36 |
| 37 return val % sub | 37 return val % sub |
| 38 | 38 |
| 39 def PopulateArrayFromList(self, src, dst, optional): | 39 def PopulateArrayFromList(self, src, dst, optional, items_are_binary): |
|
not at google - send to devlin
2015/01/13 18:15:14
For boolean flags I prefer to make it explicit, li
pneubeck (no reviews)
2015/01/14 10:54:15
Not sure how you could /force/ the caller to use n
| |
| 40 """Generates code to get an array from src into dst. | 40 """Generates code to get an array from src into dst. |
| 41 | 41 |
| 42 src: ListValue* | 42 src: ListValue* |
| 43 dst: std::vector or scoped_ptr<std::vector> | 43 dst: std::vector or scoped_ptr<std::vector> |
| 44 """ | 44 """ |
| 45 | |
| 46 binary_tag = 'ITEMS_ARE_NOT_BINARY'; | |
| 47 if items_are_binary: | |
| 48 binary_tag = 'ITEMS_ARE_BINARY'; | |
| 45 if optional: | 49 if optional: |
| 46 val = '%(namespace)s::PopulateOptionalArrayFromList(*%(src)s, &%(dst)s)' | 50 val = ('%(namespace)s::PopulateOptionalArrayFromList' |
| 51 '(*%(src)s, %(namespace)s::%(binary_tag)s(), &%(dst)s)') | |
| 47 else: | 52 else: |
| 48 val = '%(namespace)s::PopulateArrayFromList(*%(src)s, &%(dst)s)' | 53 val = ('%(namespace)s::PopulateArrayFromList' |
| 54 '(*%(src)s, %(namespace)s::%(binary_tag)s(), &%(dst)s)') | |
|
not at google - send to devlin
2015/01/13 18:15:14
Given there's even more duplication, you should be
pneubeck (no reviews)
2015/01/14 10:54:15
Slight variation of what you proposed because conc
| |
| 49 return val % { | 55 return val % { |
| 56 'binary_tag': binary_tag, | |
| 50 'namespace': _API_UTIL_NAMESPACE, | 57 'namespace': _API_UTIL_NAMESPACE, |
| 51 'src': src, | 58 'src': src, |
| 52 'dst': dst | 59 'dst': dst |
| 53 } | 60 } |
| 54 | 61 |
| 55 def CreateValueFromArray(self, src, optional): | 62 def CreateValueFromArray(self, src, optional): |
| 56 """Generates code to create a scoped_pt<Value> from the array at src. | 63 """Generates code to create a scoped_pt<Value> from the array at src. |
| 57 | 64 |
| 58 |src| The variable to convert, either a vector or scoped_ptr<vector>. | 65 |src| The variable to convert, either a vector or scoped_ptr<vector>. |
| 59 |optional| Whether |type_| was optional. Optional types are pointers so | 66 |optional| Whether |type_| was optional. Optional types are pointers so |
| 60 must be treated differently. | 67 must be treated differently. |
| 61 """ | 68 """ |
| 62 if optional: | 69 if optional: |
| 63 name = 'CreateValueFromOptionalArray' | 70 name = 'CreateValueFromOptionalArray' |
| 64 else: | 71 else: |
| 65 name = 'CreateValueFromArray' | 72 name = 'CreateValueFromArray' |
| 66 return '%s::%s(%s)' % (_API_UTIL_NAMESPACE, name, src) | 73 return '%s::%s(%s)' % (_API_UTIL_NAMESPACE, name, src) |
| 67 | 74 |
| 68 def GetIncludePath(self): | 75 def GetIncludePath(self): |
| 69 return '#include "tools/json_schema_compiler/util.h"' | 76 return '#include "tools/json_schema_compiler/util.h"' |
| 70 | 77 |
| 71 def GetValueTypeString(self, value, is_ptr=False): | 78 def GetValueTypeString(self, value, is_ptr=False): |
| 72 call = '.GetType()' | 79 call = '.GetType()' |
| 73 if is_ptr: | 80 if is_ptr: |
| 74 call = '->GetType()' | 81 call = '->GetType()' |
| 75 return 'json_schema_compiler::util::ValueTypeToString(%s%s)' % (value, call) | 82 return 'json_schema_compiler::util::ValueTypeToString(%s%s)' % (value, call) |
| OLD | NEW |