Chromium Code Reviews| Index: tools/json_schema_compiler/cpp_type_generator.py |
| diff --git a/tools/json_schema_compiler/cpp_type_generator.py b/tools/json_schema_compiler/cpp_type_generator.py |
| index 04e008051368f5e67974a04463ea715b70428c08..e2506ebd923a725375f2220f4937219c219e3971 100644 |
| --- a/tools/json_schema_compiler/cpp_type_generator.py |
| +++ b/tools/json_schema_compiler/cpp_type_generator.py |
| @@ -173,11 +173,12 @@ class CppTypeGenerator(object): |
| for namespace, types in sorted(self._NamespaceTypeDependencies().items()): |
| c.Append('namespace %s {' % namespace.name) |
| for type_ in types: |
| - c.Append('struct %s;' % type_) |
| + if namespace.types[type_].type_ != PropertyType.ARRAY: |
| + c.Append('struct %s;' % type_) |
| c.Append('}') |
| c.Concat(self.GetNamespaceStart()) |
| for (name, type_) in self._namespace.types.items(): |
| - if not type_.functions: |
| + if not type_.functions and type_.type_ != PropertyType.ARRAY: |
| c.Append('struct %s;' % name) |
| c.Concat(self.GetNamespaceEnd()) |
| return c |
| @@ -192,9 +193,6 @@ class CppTypeGenerator(object): |
| self._cpp_namespaces[dependency])) |
| return c |
| - def _QualifyName(self, namespace, name): |
| - return '.'.join([namespace.name, name]) |
| - |
| def _ResolveTypeNamespace(self, ref_type): |
| """Resolves a type name to its enclosing namespace. |
| @@ -215,6 +213,21 @@ class CppTypeGenerator(object): |
| return None |
| + def GetReferencedProperty(self, prop): |
| + """Returns the property a property of type REF is referring to. |
| + |
| + If the property passed in is not of type PropertyType.REF, it will be |
| + returned unchanged. |
| + """ |
| + if prop.type_ != PropertyType.REF: |
| + return prop |
| + if prop.ref_type in self._ResolveTypeNamespace(prop.ref_type).types.keys(): |
|
Yoyo Zhou
2012/04/12 00:54:57
Use ....types.get(prop.ref_type, None) for all thi
|
| + return self._ResolveTypeNamespace(prop.ref_type).types[prop.ref_type] |
| + return None |
| + |
| + def _QualifyName(self, namespace, name): |
| + return '.'.join([namespace.name, name]) |
| + |
| def _NamespaceTypeDependencies(self): |
| """Returns a dict containing a mapping of model.Namespace to the C++ type |
| of type dependencies for self._namespace. |