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

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

Issue 1869503004: Convert //tools to use std::unique_ptr (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase, change iwyu fixes for converted directories to include <memory> Created 4 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 import os 5 import os
6 6
7 from code import Code 7 from code import Code
8 from model import PropertyType 8 from model import PropertyType
9 import cpp_util 9 import cpp_util
10 import schema_util 10 import schema_util
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
46 # other cases, generate soft dependencies so that they can include 46 # other cases, generate soft dependencies so that they can include
47 # non-optional types from other namespaces. 47 # non-optional types from other namespaces.
48 include_soft = self._namespace.name not in ('tabs', 'windows') 48 include_soft = self._namespace.name not in ('tabs', 'windows')
49 49
50 (c.Append('#ifndef %s' % ifndef_name) 50 (c.Append('#ifndef %s' % ifndef_name)
51 .Append('#define %s' % ifndef_name) 51 .Append('#define %s' % ifndef_name)
52 .Append() 52 .Append()
53 .Append('#include <stdint.h>') 53 .Append('#include <stdint.h>')
54 .Append() 54 .Append()
55 .Append('#include <map>') 55 .Append('#include <map>')
56 .Append('#include <memory>')
56 .Append('#include <string>') 57 .Append('#include <string>')
57 .Append('#include <vector>') 58 .Append('#include <vector>')
58 .Append() 59 .Append()
59 .Append('#include "base/logging.h"') 60 .Append('#include "base/logging.h"')
60 .Append('#include "base/memory/scoped_ptr.h"')
61 .Append('#include "base/values.h"') 61 .Append('#include "base/values.h"')
62 .Cblock(self._type_helper.GenerateIncludes(include_soft=include_soft)) 62 .Cblock(self._type_helper.GenerateIncludes(include_soft=include_soft))
63 .Append() 63 .Append()
64 ) 64 )
65 65
66 # Hack: we're not generating soft includes for tabs and windows, so we need 66 # Hack: we're not generating soft includes for tabs and windows, so we need
67 # to generate forward declarations for them. 67 # to generate forward declarations for them.
68 if not include_soft: 68 if not include_soft:
69 c.Cblock(self._type_helper.GenerateForwardDeclarations()) 69 c.Cblock(self._type_helper.GenerateForwardDeclarations())
70 70
(...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 (c.Append() 234 (c.Append()
235 .Comment('Populates a %s object from a base::Value. Returns' 235 .Comment('Populates a %s object from a base::Value. Returns'
236 ' whether |out| was successfully populated.' % classname) 236 ' whether |out| was successfully populated.' % classname)
237 .Append('static bool Populate(%s);' % self._GenerateParams( 237 .Append('static bool Populate(%s);' % self._GenerateParams(
238 ('const base::Value& value', '%s* out' % classname))) 238 ('const base::Value& value', '%s* out' % classname)))
239 ) 239 )
240 if is_toplevel: 240 if is_toplevel:
241 (c.Append() 241 (c.Append()
242 .Comment('Creates a %s object from a base::Value, or NULL on ' 242 .Comment('Creates a %s object from a base::Value, or NULL on '
243 'failure.' % classname) 243 'failure.' % classname)
244 .Append('static scoped_ptr<%s> FromValue(%s);' % ( 244 .Append('static std::unique_ptr<%s> FromValue(%s);' % (
245 classname, self._GenerateParams(('const base::Value& value',)))) 245 classname, self._GenerateParams(('const base::Value& value',))))
246 ) 246 )
247 if type_.origin.from_client: 247 if type_.origin.from_client:
248 value_type = ('base::Value' 248 value_type = ('base::Value'
249 if type_.property_type is PropertyType.CHOICES else 249 if type_.property_type is PropertyType.CHOICES else
250 'base::DictionaryValue') 250 'base::DictionaryValue')
251 (c.Append() 251 (c.Append()
252 .Comment('Returns a new %s representing the serialized form of this ' 252 .Comment('Returns a new %s representing the serialized form of this '
253 '%s object.' % (value_type, classname)) 253 '%s object.' % (value_type, classname))
254 .Append('scoped_ptr<%s> ToValue() const;' % value_type) 254 .Append('std::unique_ptr<%s> ToValue() const;' % value_type)
255 ) 255 )
256 if type_.property_type == PropertyType.CHOICES: 256 if type_.property_type == PropertyType.CHOICES:
257 # Choices are modelled with optional fields for each choice. Exactly one 257 # Choices are modelled with optional fields for each choice. Exactly one
258 # field of the choice is guaranteed to be set by the compiler. 258 # field of the choice is guaranteed to be set by the compiler.
259 c.Cblock(self._GenerateTypes(type_.choices)) 259 c.Cblock(self._GenerateTypes(type_.choices))
260 c.Append('// Choices:') 260 c.Append('// Choices:')
261 for choice_type in type_.choices: 261 for choice_type in type_.choices:
262 c.Append('%s as_%s;' % ( 262 c.Append('%s as_%s;' % (
263 self._type_helper.GetCppType(choice_type, is_ptr=True), 263 self._type_helper.GetCppType(choice_type, is_ptr=True),
264 choice_type.unix_name)) 264 choice_type.unix_name))
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
321 return c 321 return c
322 322
323 def _GenerateFunctionParams(self, function): 323 def _GenerateFunctionParams(self, function):
324 """Generates the struct for passing parameters from JSON to a function. 324 """Generates the struct for passing parameters from JSON to a function.
325 """ 325 """
326 if not function.params: 326 if not function.params:
327 return Code() 327 return Code()
328 328
329 c = Code() 329 c = Code()
330 (c.Sblock('struct Params {') 330 (c.Sblock('struct Params {')
331 .Append('static scoped_ptr<Params> Create(%s);' % self._GenerateParams( 331 .Append('static std::unique_ptr<Params> Create(%s);' %
332 ('const base::ListValue& args',))) 332 self._GenerateParams(('const base::ListValue& args',)))
333 .Append('~Params();') 333 .Append('~Params();')
334 .Append() 334 .Append()
335 .Cblock(self._GenerateTypes(p.type_ for p in function.params)) 335 .Cblock(self._GenerateTypes(p.type_ for p in function.params))
336 .Cblock(self._GenerateFields(function.params)) 336 .Cblock(self._GenerateFields(function.params))
337 .Eblock() 337 .Eblock()
338 .Append() 338 .Append()
339 .Sblock(' private:') 339 .Sblock(' private:')
340 .Append('Params();') 340 .Append('Params();')
341 .Append() 341 .Append()
342 .Append('DISALLOW_COPY_AND_ASSIGN(Params);') 342 .Append('DISALLOW_COPY_AND_ASSIGN(Params);')
(...skipping 18 matching lines...) Expand all
361 c = Code() 361 c = Code()
362 params = function.params 362 params = function.params
363 c.Cblock(self._GenerateTypes((p.type_ for p in params), is_toplevel=True)) 363 c.Cblock(self._GenerateTypes((p.type_ for p in params), is_toplevel=True))
364 364
365 declaration_list = [] 365 declaration_list = []
366 for param in params: 366 for param in params:
367 if param.description: 367 if param.description:
368 c.Comment(param.description) 368 c.Comment(param.description)
369 declaration_list.append(cpp_util.GetParameterDeclaration( 369 declaration_list.append(cpp_util.GetParameterDeclaration(
370 param, self._type_helper.GetCppType(param.type_))) 370 param, self._type_helper.GetCppType(param.type_)))
371 c.Append('scoped_ptr<base::ListValue> Create(%s);' % 371 c.Append('std::unique_ptr<base::ListValue> Create(%s);' %
372 ', '.join(declaration_list)) 372 ', '.join(declaration_list))
373 return c 373 return c
374 374
375 def _GenerateEventNameConstant(self, event): 375 def _GenerateEventNameConstant(self, event):
376 """Generates a constant string array for the event name. 376 """Generates a constant string array for the event name.
377 """ 377 """
378 c = Code() 378 c = Code()
379 c.Append('extern const char kEventName[]; // "%s.%s"' % ( 379 c.Append('extern const char kEventName[]; // "%s.%s"' % (
380 self._namespace.name, event.name)) 380 self._namespace.name, event.name))
381 c.Append() 381 c.Append()
(...skipping 14 matching lines...) Expand all
396 """Builds the parameter list for a function, given an array of parameters. 396 """Builds the parameter list for a function, given an array of parameters.
397 """ 397 """
398 # |error| is populated with warnings and/or errors found during parsing. 398 # |error| is populated with warnings and/or errors found during parsing.
399 # |error| being set does not necessarily imply failure and may be 399 # |error| being set does not necessarily imply failure and may be
400 # recoverable. 400 # recoverable.
401 # For example, optional properties may have failed to parse, but the 401 # For example, optional properties may have failed to parse, but the
402 # parser was able to continue. 402 # parser was able to continue.
403 if self._generate_error_messages: 403 if self._generate_error_messages:
404 params += ('base::string16* error',) 404 params += ('base::string16* error',)
405 return ', '.join(str(p) for p in params) 405 return ', '.join(str(p) for p in params)
OLDNEW
« no previous file with comments | « tools/json_schema_compiler/cpp_type_generator.py ('k') | tools/json_schema_compiler/test/additional_properties_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698