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, Type | 6 from model import PropertyType, Type |
7 import cpp_util | 7 import cpp_util |
8 import schema_util | 8 import schema_util |
9 | 9 |
10 class HGenerator(object): | 10 class HGenerator(object): |
| 11 def __init__(self, type_generator): |
| 12 self._type_generator = type_generator |
| 13 |
| 14 def Generate(self, namespace): |
| 15 return _Generator(namespace, self._type_generator).Generate() |
| 16 |
| 17 class _Generator(object): |
11 """A .h generator for a namespace. | 18 """A .h generator for a namespace. |
12 """ | 19 """ |
13 def __init__(self, namespace, cpp_type_generator): | 20 def __init__(self, namespace, cpp_type_generator): |
14 self._type_helper = cpp_type_generator | 21 self._type_helper = cpp_type_generator |
15 self._namespace = namespace | 22 self._namespace = namespace |
16 self._target_namespace = ( | 23 self._target_namespace = ( |
17 self._type_helper.GetCppNamespaceName(self._namespace)) | 24 self._type_helper.GetCppNamespaceName(self._namespace)) |
18 | 25 |
19 def Generate(self): | 26 def Generate(self): |
20 """Generates a Code object with the .h for a single namespace. | 27 """Generates a Code object with the .h for a single namespace. |
(...skipping 214 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
235 if type_.additional_properties.property_type == PropertyType.ANY: | 242 if type_.additional_properties.property_type == PropertyType.ANY: |
236 c.Append('base::DictionaryValue additional_properties;') | 243 c.Append('base::DictionaryValue additional_properties;') |
237 else: | 244 else: |
238 (c.Cblock(self._GenerateType(type_.additional_properties)) | 245 (c.Cblock(self._GenerateType(type_.additional_properties)) |
239 .Append('std::map<std::string, %s> additional_properties;' % | 246 .Append('std::map<std::string, %s> additional_properties;' % |
240 cpp_util.PadForGenerics( | 247 cpp_util.PadForGenerics( |
241 self._type_helper.GetCppType(type_.additional_properties, | 248 self._type_helper.GetCppType(type_.additional_properties, |
242 is_in_container=True))) | 249 is_in_container=True))) |
243 ) | 250 ) |
244 (c.Eblock() | 251 (c.Eblock() |
| 252 .Append() |
245 .Sblock(' private:') | 253 .Sblock(' private:') |
246 .Append('DISALLOW_COPY_AND_ASSIGN(%(classname)s);') | 254 .Append('DISALLOW_COPY_AND_ASSIGN(%(classname)s);') |
247 .Eblock('};') | 255 .Eblock('};') |
248 ) | 256 ) |
249 elif type_.property_type == PropertyType.CHOICES: | 257 elif type_.property_type == PropertyType.CHOICES: |
250 if type_.description: | 258 if type_.description: |
251 c.Comment(type_.description) | 259 c.Comment(type_.description) |
252 # Choices are modelled with optional fields for each choice. Exactly one | 260 # Choices are modelled with optional fields for each choice. Exactly one |
253 # field of the choice is guaranteed to be set by the compiler. | 261 # field of the choice is guaranteed to be set by the compiler. |
254 (c.Sblock('struct %(classname)s {') | 262 (c.Sblock('struct %(classname)s {') |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
313 return Code() | 321 return Code() |
314 | 322 |
315 c = Code() | 323 c = Code() |
316 (c.Sblock('struct Params {') | 324 (c.Sblock('struct Params {') |
317 .Append('static scoped_ptr<Params> Create(const base::ListValue& args);') | 325 .Append('static scoped_ptr<Params> Create(const base::ListValue& args);') |
318 .Append('~Params();') | 326 .Append('~Params();') |
319 .Append() | 327 .Append() |
320 .Cblock(self._GenerateTypes(p.type_ for p in function.params)) | 328 .Cblock(self._GenerateTypes(p.type_ for p in function.params)) |
321 .Cblock(self._GenerateFields(function.params)) | 329 .Cblock(self._GenerateFields(function.params)) |
322 .Eblock() | 330 .Eblock() |
| 331 .Append() |
323 .Sblock(' private:') | 332 .Sblock(' private:') |
324 .Append('Params();') | 333 .Append('Params();') |
325 .Append() | 334 .Append() |
326 .Append('DISALLOW_COPY_AND_ASSIGN(Params);') | 335 .Append('DISALLOW_COPY_AND_ASSIGN(Params);') |
327 .Eblock('};') | 336 .Eblock('};') |
328 ) | 337 ) |
329 return c | 338 return c |
330 | 339 |
331 def _GenerateTypes(self, types, is_toplevel=False, generate_typedefs=False): | 340 def _GenerateTypes(self, types, is_toplevel=False, generate_typedefs=False): |
332 """Generate the structures required by a property such as OBJECT classes | 341 """Generate the structures required by a property such as OBJECT classes |
(...skipping 26 matching lines...) Expand all Loading... |
359 def _GenerateFunctionResults(self, callback): | 368 def _GenerateFunctionResults(self, callback): |
360 """Generates namespace for passing a function's result back. | 369 """Generates namespace for passing a function's result back. |
361 """ | 370 """ |
362 c = Code() | 371 c = Code() |
363 (c.Append('namespace Results {') | 372 (c.Append('namespace Results {') |
364 .Append() | 373 .Append() |
365 .Concat(self._GenerateCreateCallbackArguments(callback)) | 374 .Concat(self._GenerateCreateCallbackArguments(callback)) |
366 .Append('} // namespace Results') | 375 .Append('} // namespace Results') |
367 ) | 376 ) |
368 return c | 377 return c |
OLD | NEW |