Index: mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl |
diff --git a/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl b/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl |
index 03120024fda3dda88c0df3f02b8b85892323b5a4..503e19decb942e889348a60bc0f6ea18a2eb4bb3 100644 |
--- a/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl |
+++ b/mojo/public/tools/bindings/generators/cpp_templates/module.h.tmpl |
@@ -63,6 +63,12 @@ typedef mojo::StructPtr<{{union.name}}> {{union.name}}Ptr; |
{% endif %} |
{%- endfor %} |
+{#--- Unions must be declared first because they can be members of structs #} |
+{#--- Unions #} |
+{% for union in unions %} |
+{% include "wrapper_union_class_declaration.tmpl" %} |
+{%- endfor %} |
+ |
{#--- NOTE: Non-inlined structs may have pointers to inlined structs, so we #} |
{#--- need to fully define inlined structs ahead of the others. #} |
@@ -80,11 +86,6 @@ typedef mojo::StructPtr<{{union.name}}> {{union.name}}Ptr; |
{% endif %} |
{%- endfor %} |
-{#--- Unions #} |
-{% for union in unions %} |
-{% include "wrapper_union_class_declaration.tmpl" %} |
-{%- endfor %} |
- |
{#--- Interfaces -#} |
{% for interface in interfaces %} |
{% include "interface_declaration.tmpl" %} |
@@ -110,18 +111,17 @@ typedef mojo::StructPtr<{{union.name}}> {{union.name}}Ptr; |
{% include "interface_response_validator_declaration.tmpl" %} |
{%- endfor %} |
-{%- import "serialization_macros.tmpl" as serialization_macros %} |
{#--- Struct Serialization Helpers -#} |
{% if structs %} |
{% for struct in structs %} |
-{{ serialization_macros.declare_serialization(struct.name) }} |
+{% include "struct_serialization_declaration.tmpl" %} |
{%- endfor %} |
{%- endif %} |
{#--- Union Serialization Helpers -#} |
{% if unions %} |
{% for union in unions %} |
-{{ serialization_macros.declare_serialization(union.name) }} |
+{% include "union_serialization_declaration.tmpl" %} |
{%- endfor %} |
{%- endif %} |