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..c73589e5124423c4af582c1d659f12294a6eb956 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,20 @@ 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 |
+ return self._ResolveTypeNamespace(prop.ref_type).types.get(prop.ref_type, |
+ 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. |