@@ -32,6 +32,7 @@ pub(super) fn gen<'a>(apis: &[Api], types: &'a Types, opt: &Opt, header: bool) -
32
32
33
33
let apis_by_namespace = NamespaceEntries :: new ( apis) ;
34
34
35
+ gen_namespace_forward_declarations ( & apis_by_namespace, out) ;
35
36
gen_namespace_contents ( & apis_by_namespace, types, opt, header, out) ;
36
37
37
38
if !header {
@@ -44,13 +45,7 @@ pub(super) fn gen<'a>(apis: &[Api], types: &'a Types, opt: &Opt, header: bool) -
44
45
out_file
45
46
}
46
47
47
- fn gen_namespace_contents (
48
- ns_entries : & NamespaceEntries ,
49
- types : & Types ,
50
- opt : & Opt ,
51
- header : bool ,
52
- out : & mut OutFile ,
53
- ) {
48
+ fn gen_namespace_forward_declarations ( ns_entries : & NamespaceEntries , out : & mut OutFile ) {
54
49
let apis = ns_entries. entries ( ) ;
55
50
56
51
out. next_section ( ) ;
@@ -63,6 +58,24 @@ fn gen_namespace_contents(
63
58
}
64
59
}
65
60
61
+ out. next_section ( ) ;
62
+
63
+ for ( child_ns, child_ns_entries) in ns_entries. children ( ) {
64
+ writeln ! ( out, "namespace {} {{" , child_ns) ;
65
+ gen_namespace_forward_declarations ( & child_ns_entries, out) ;
66
+ writeln ! ( out, "}} // namespace {}" , child_ns) ;
67
+ }
68
+ }
69
+
70
+ fn gen_namespace_contents (
71
+ ns_entries : & NamespaceEntries ,
72
+ types : & Types ,
73
+ opt : & Opt ,
74
+ header : bool ,
75
+ out : & mut OutFile ,
76
+ ) {
77
+ let apis = ns_entries. entries ( ) ;
78
+
66
79
let mut methods_for_type = HashMap :: new ( ) ;
67
80
for api in apis {
68
81
if let Api :: RustFunction ( efn) = api {
0 commit comments