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 95329c3f548614603df6fd0849879f852c57c086..2a19fcdde5f3b9fde58b62a4e46574c68b9a4494 100644 |
--- a/tools/json_schema_compiler/cpp_type_generator.py |
+++ b/tools/json_schema_compiler/cpp_type_generator.py |
@@ -6,6 +6,7 @@ from code import Code |
from model import PropertyType |
import any_helper |
import cpp_util |
+import operator |
import schema_util |
class CppTypeGenerator(object): |
@@ -209,7 +210,7 @@ class CppTypeGenerator(object): |
c = Code() |
namespace_type_dependencies = self._NamespaceTypeDependencies() |
for namespace in sorted(namespace_type_dependencies.keys(), |
- key=lambda ns: ns.name): |
+ key=operator.attrgetter('name')): |
c.Append('namespace %s {' % namespace.name) |
for type_ in sorted(namespace_type_dependencies[namespace], |
key=schema_util.StripSchemaNamespace): |
@@ -222,7 +223,8 @@ class CppTypeGenerator(object): |
'name': type_name, |
'item_type': self.GetType(namespace.types[type_].item_type, |
wrap_optional=True)}) |
- else: |
+ # Enums cannot be forward declared. |
+ elif namespace.types[type_].type_ != PropertyType.ENUM: |
c.Append('struct %s;' % type_name) |
c.Append('}') |
c.Concat(self.GetNamespaceStart()) |