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 | 6 from model import PropertyType |
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): |
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
128 for type_ in self._namespace.types.values(): | 128 for type_ in self._namespace.types.values(): |
129 ExpandType([], type_) | 129 ExpandType([], type_) |
130 return dependency_order | 130 return dependency_order |
131 | 131 |
132 def _GenerateEnumDeclaration(self, enum_name, prop, values): | 132 def _GenerateEnumDeclaration(self, enum_name, prop, values): |
133 """Generate the declaration of a C++ enum for the given property and | 133 """Generate the declaration of a C++ enum for the given property and |
134 values. | 134 values. |
135 """ | 135 """ |
136 c = Code() | 136 c = Code() |
137 c.Sblock('enum %s {' % enum_name) | 137 c.Sblock('enum %s {' % enum_name) |
138 if prop.optional: | 138 c.Append(self._cpp_type_generator.GetEnumNoneValue(prop) + ',') |
139 c.Append(self._cpp_type_generator.GetEnumNoneValue(prop) + ',') | |
140 for value in values: | 139 for value in values: |
141 c.Append(self._cpp_type_generator.GetEnumValue(prop, value) + ',') | 140 c.Append(self._cpp_type_generator.GetEnumValue(prop, value) + ',') |
142 (c.Eblock('};') | 141 (c.Eblock('};') |
143 .Append() | 142 .Append() |
144 ) | 143 ) |
145 return c | 144 return c |
146 | 145 |
147 def _GenerateFields(self, props): | 146 def _GenerateFields(self, props): |
148 """Generates the field declarations when declaring a type. | 147 """Generates the field declarations when declaring a type. |
149 """ | 148 """ |
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
186 self._cpp_type_generator.GetCompiledType(type_.item_type, | 185 self._cpp_type_generator.GetCompiledType(type_.item_type, |
187 wrap_optional=True)}) | 186 wrap_optional=True)}) |
188 elif type_.type_ == PropertyType.STRING: | 187 elif type_.type_ == PropertyType.STRING: |
189 if type_.description: | 188 if type_.description: |
190 c.Comment(type_.description) | 189 c.Comment(type_.description) |
191 c.Append('typedef std::string %(classname)s;') | 190 c.Append('typedef std::string %(classname)s;') |
192 elif type_.type_ == PropertyType.ENUM: | 191 elif type_.type_ == PropertyType.ENUM: |
193 if type_.description: | 192 if type_.description: |
194 c.Comment(type_.description) | 193 c.Comment(type_.description) |
195 c.Sblock('enum %(classname)s {') | 194 c.Sblock('enum %(classname)s {') |
| 195 c.Append('%s_NONE,' % classname.upper()) |
196 for value in type_.enum_values: | 196 for value in type_.enum_values: |
197 c.Append('%s_%s,' % (classname.upper(), value.upper())) | 197 c.Append('%s_%s,' % (classname.upper(), value.upper())) |
198 (c.Eblock('};') | 198 (c.Eblock('};') |
199 .Append() | 199 .Append() |
200 .Append('scoped_ptr<base::Value> CreateEnumValue(%s %s);' % | 200 .Append('scoped_ptr<base::Value> CreateEnumValue(%s %s);' % |
201 (classname, classname.lower())) | 201 (classname, classname.lower())) |
| 202 .Append('bool GetEnumFromString(const std::string& enum_string,' |
| 203 ' %s* %s);' % (classname, classname.lower())) |
202 ) | 204 ) |
203 else: | 205 else: |
204 if type_.description: | 206 if type_.description: |
205 c.Comment(type_.description) | 207 c.Comment(type_.description) |
206 (c.Sblock('struct %(classname)s {') | 208 (c.Sblock('struct %(classname)s {') |
207 .Append('~%(classname)s();') | 209 .Append('~%(classname)s();') |
208 .Append('%(classname)s();') | 210 .Append('%(classname)s();') |
209 .Append() | 211 .Append() |
210 .Concat(self._GeneratePropertyStructures(type_.properties.values())) | 212 .Concat(self._GeneratePropertyStructures(type_.properties.values())) |
211 .Concat(self._GenerateFields(type_.properties.values())) | 213 .Concat(self._GenerateFields(type_.properties.values())) |
(...skipping 147 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
359 | 361 |
360 def _GenerateFunctionResults(self, callback): | 362 def _GenerateFunctionResults(self, callback): |
361 """Generates namespace for passing a function's result back. | 363 """Generates namespace for passing a function's result back. |
362 """ | 364 """ |
363 c = Code() | 365 c = Code() |
364 (c.Sblock('namespace Results {') | 366 (c.Sblock('namespace Results {') |
365 .Concat(self._GenerateCreateCallbackArguments(callback)) | 367 .Concat(self._GenerateCreateCallbackArguments(callback)) |
366 .Eblock('};') | 368 .Eblock('};') |
367 ) | 369 ) |
368 return c | 370 return c |
OLD | NEW |