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

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

Issue 10022005: Let json schema compiler handle using arrays as types (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Small style changes Created 8 years, 8 months 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
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 model import PropertyType 5 from model import PropertyType
6 import code 6 import code
7 import cpp_util 7 import cpp_util
8 import model 8 import model
9 import os 9 import os
10 10
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
153 # additionalProperties. 153 # additionalProperties.
154 if type_.properties: 154 if type_.properties:
155 raise NotImplementedError('\n'.join(model.GetModelHierarchy(type_)) + 155 raise NotImplementedError('\n'.join(model.GetModelHierarchy(type_)) +
156 '\nCannot generate both functions and properties on a type') 156 '\nCannot generate both functions and properties on a type')
157 c.Sblock('namespace %(classname)s {') 157 c.Sblock('namespace %(classname)s {')
158 for function in type_.functions.values(): 158 for function in type_.functions.values():
159 (c.Concat(self._GenerateFunction(function)) 159 (c.Concat(self._GenerateFunction(function))
160 .Append() 160 .Append()
161 ) 161 )
162 c.Eblock('}') 162 c.Eblock('}')
163 elif type_.type_ == PropertyType.ARRAY:
164 if type_.description:
165 c.Comment(type_.description)
166 c.Append('typedef std::vector<%(item_type)s> %(classname)s;')
167 c.Substitute({'classname': classname, 'item_type':
168 self._cpp_type_generator.GetType(type_.item_type,
169 wrap_optional=True)})
163 else: 170 else:
164 if type_.description: 171 if type_.description:
165 c.Comment(type_.description) 172 c.Comment(type_.description)
166 (c.Sblock('struct %(classname)s {') 173 (c.Sblock('struct %(classname)s {')
167 .Append('~%(classname)s();') 174 .Append('~%(classname)s();')
168 .Append('%(classname)s();') 175 .Append('%(classname)s();')
169 .Append() 176 .Append()
170 .Concat(self._GeneratePropertyStructures(type_.properties.values())) 177 .Concat(self._GeneratePropertyStructures(type_.properties.values()))
171 .Concat(self._GenerateFields(type_.properties.values())) 178 .Concat(self._GenerateFields(type_.properties.values()))
172 ) 179 )
(...skipping 104 matching lines...) Expand 10 before | Expand all | Expand 10 after
277 c.Comment(param.description) 284 c.Comment(param.description)
278 if param.type_ == PropertyType.ANY: 285 if param.type_ == PropertyType.ANY:
279 c.Comment("Value* Result::Create(Value*) not generated " 286 c.Comment("Value* Result::Create(Value*) not generated "
280 "because it's redundant.") 287 "because it's redundant.")
281 continue 288 continue
282 c.Append('Value* Create(const %s);' % cpp_util.GetParameterDeclaration( 289 c.Append('Value* Create(const %s);' % cpp_util.GetParameterDeclaration(
283 param, self._cpp_type_generator.GetType(param))) 290 param, self._cpp_type_generator.GetType(param)))
284 c.Eblock('};') 291 c.Eblock('};')
285 292
286 return c 293 return c
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698