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 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 |
11 class HGenerator(object): | 11 class HGenerator(object): |
12 """A .h generator for a namespace. | 12 """A .h generator for a namespace. |
13 """ | 13 """ |
14 def __init__(self, namespace, cpp_type_generator): | 14 def __init__(self, namespace, cpp_type_generator): |
15 self._cpp_type_generator = cpp_type_generator | 15 self._cpp_type_generator = cpp_type_generator |
16 self._namespace = namespace | 16 self._namespace = namespace |
17 self._target_namespace = ( | 17 self._target_namespace = ( |
18 self._cpp_type_generator.GetCppNamespaceName(self._namespace)) | 18 self._cpp_type_generator.GetCppNamespaceName(self._namespace)) |
19 | 19 |
20 def Generate(self): | 20 def Generate(self): |
21 """Generates a code.Code object with the .h for a single namespace. | 21 """Generates a code.Code object with the .h for a single namespace. |
22 """ | 22 """ |
23 c = code.Code() | 23 c = code.Code() |
24 (c.Append(cpp_util.CHROMIUM_LICENSE) | 24 (c.Append(cpp_util.CHROMIUM_LICENSE) |
25 .Append() | 25 .Append() |
26 .Append(cpp_util.GENERATED_FILE_MESSAGE % self._namespace.source_file) | 26 .Append(cpp_util.GENERATED_FILE_MESSAGE % self._namespace.source_file) |
27 .Append() | 27 .Append() |
28 ) | 28 ) |
29 | 29 |
30 ifndef_name = self._GenerateIfndefName() | 30 ifndef_name = cpp_util.GenerateIfndefName(self._namespace.source_file_dir, |
| 31 self._target_namespace) |
31 (c.Append('#ifndef %s' % ifndef_name) | 32 (c.Append('#ifndef %s' % ifndef_name) |
32 .Append('#define %s' % ifndef_name) | 33 .Append('#define %s' % ifndef_name) |
33 .Append('#pragma once') | 34 .Append('#pragma once') |
34 .Append() | 35 .Append() |
35 .Append('#include <string>') | 36 .Append('#include <string>') |
36 .Append('#include <vector>') | 37 .Append('#include <vector>') |
37 .Append() | 38 .Append() |
38 .Append('#include "base/basictypes.h"') | 39 .Append('#include "base/basictypes.h"') |
39 .Append('#include "base/memory/linked_ptr.h"') | 40 .Append('#include "base/memory/linked_ptr.h"') |
40 .Append('#include "base/memory/scoped_ptr.h"') | 41 .Append('#include "base/memory/scoped_ptr.h"') |
(...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
256 c.Comment(param.description) | 257 c.Comment(param.description) |
257 if param.type_ == PropertyType.ANY: | 258 if param.type_ == PropertyType.ANY: |
258 c.Comment("Value* Result::Create(Value*) not generated " | 259 c.Comment("Value* Result::Create(Value*) not generated " |
259 "because it's redundant.") | 260 "because it's redundant.") |
260 continue | 261 continue |
261 c.Append('Value* Create(const %s);' % cpp_util.GetParameterDeclaration( | 262 c.Append('Value* Create(const %s);' % cpp_util.GetParameterDeclaration( |
262 param, self._cpp_type_generator.GetType(param))) | 263 param, self._cpp_type_generator.GetType(param))) |
263 c.Eblock('};') | 264 c.Eblock('};') |
264 | 265 |
265 return c | 266 return c |
266 | |
267 def _GenerateIfndefName(self): | |
268 """Formats a path and filename as a #define name. | |
269 | |
270 e.g chrome/extensions/gen, file.h becomes CHROME_EXTENSIONS_GEN_FILE_H__. | |
271 """ | |
272 return (('%s_%s_H__' % | |
273 (self._namespace.source_file_dir, self._target_namespace)) | |
274 .upper().replace(os.sep, '_')) | |
275 | |
OLD | NEW |