Emit all data structures before all functions
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 0369ef5..8a4133c 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -20,7 +20,8 @@
let apis_by_namespace = NamespaceEntries::new(apis);
write_namespace_forward_declarations(out, &apis_by_namespace);
- write_namespace_contents(out, &apis_by_namespace);
+ write_namespace_data_structures(out, &apis_by_namespace);
+ write_namespace_functions(out, &apis_by_namespace);
if !header {
out.next_section();
@@ -53,7 +54,10 @@
}
}
-fn write_namespace_contents<'a>(out: &mut OutFile<'a>, ns_entries: &'a NamespaceEntries<'a>) {
+fn write_namespace_data_structures<'a>(
+ out: &mut OutFile<'a>,
+ ns_entries: &'a NamespaceEntries<'a>,
+) {
let apis = ns_entries.direct_content();
let mut methods_for_type = HashMap::new();
@@ -103,6 +107,14 @@
}
}
+ for (_, nested_ns_entries) in ns_entries.nested_content() {
+ write_namespace_data_structures(out, nested_ns_entries);
+ }
+}
+
+fn write_namespace_functions<'a>(out: &mut OutFile<'a>, ns_entries: &'a NamespaceEntries<'a>) {
+ let apis = ns_entries.direct_content();
+
if !out.header {
for api in apis {
match api {
@@ -121,7 +133,7 @@
}
for (_, nested_ns_entries) in ns_entries.nested_content() {
- write_namespace_contents(out, nested_ns_entries);
+ write_namespace_functions(out, nested_ns_entries);
}
}