1 #[cxx::bridge(namespace = "tests")]
2 pub mod ffi {
3     struct Job {
4         raw: u32,
5     }
6 
7     unsafe extern "C++" {
8         include!("tests/ffi/tests.h");
9 
10         type C = crate::ffi::C;
11 
c_take_unique_ptrnull12         fn c_take_unique_ptr(c: UniquePtr<C>);
13     }
14 
15     impl Vec<Job> {}
16 }
17 
18 #[cxx::bridge(namespace = "tests")]
19 pub mod ffi2 {
20     unsafe extern "C++" {
21         include!("tests/ffi/tests.h");
22 
23         type D = crate::other::D;
24         type E = crate::other::E;
25         #[namespace = "F"]
26         type F = crate::other::f::F;
27         #[namespace = "G"]
28         type G = crate::other::G;
29 
30         #[namespace = "H"]
31         type H;
32 
c_take_trivial_ptrnull33         fn c_take_trivial_ptr(d: UniquePtr<D>);
c_take_trivial_refnull34         fn c_take_trivial_ref(d: &D);
c_take_trivial_mut_refnull35         fn c_take_trivial_mut_ref(d: &mut D);
c_take_trivial_pin_refnull36         fn c_take_trivial_pin_ref(d: Pin<&D>);
c_take_trivial_pin_mut_refnull37         fn c_take_trivial_pin_mut_ref(d: Pin<&mut D>);
c_take_trivial_ref_methodnull38         fn c_take_trivial_ref_method(self: &D);
c_take_trivial_mut_ref_methodnull39         fn c_take_trivial_mut_ref_method(self: &mut D);
c_take_trivialnull40         fn c_take_trivial(d: D);
c_take_trivial_ns_ptrnull41         fn c_take_trivial_ns_ptr(g: UniquePtr<G>);
c_take_trivial_ns_refnull42         fn c_take_trivial_ns_ref(g: &G);
c_take_trivial_nsnull43         fn c_take_trivial_ns(g: G);
c_take_opaque_ptrnull44         fn c_take_opaque_ptr(e: UniquePtr<E>);
c_take_opaque_refnull45         fn c_take_opaque_ref(e: &E);
c_take_opaque_ref_methodnull46         fn c_take_opaque_ref_method(self: &E);
c_take_opaque_mut_ref_methodnull47         fn c_take_opaque_mut_ref_method(self: Pin<&mut E>);
c_take_opaque_ns_ptrnull48         fn c_take_opaque_ns_ptr(e: UniquePtr<F>);
c_take_opaque_ns_refnull49         fn c_take_opaque_ns_ref(e: &F);
c_return_trivial_ptrnull50         fn c_return_trivial_ptr() -> UniquePtr<D>;
c_return_trivialnull51         fn c_return_trivial() -> D;
c_return_trivial_ns_ptrnull52         fn c_return_trivial_ns_ptr() -> UniquePtr<G>;
c_return_trivial_nsnull53         fn c_return_trivial_ns() -> G;
c_return_opaque_ptrnull54         fn c_return_opaque_ptr() -> UniquePtr<E>;
c_return_opaque_mut_pinnull55         fn c_return_opaque_mut_pin(e: Pin<&mut E>) -> Pin<&mut E>;
c_return_ns_opaque_ptrnull56         fn c_return_ns_opaque_ptr() -> UniquePtr<F>;
c_return_ns_unique_ptrnull57         fn c_return_ns_unique_ptr() -> UniquePtr<H>;
c_take_ref_ns_cnull58         fn c_take_ref_ns_c(h: &H);
59 
60         #[namespace = "other"]
ns_c_take_trivialnull61         fn ns_c_take_trivial(d: D);
62         #[namespace = "other"]
ns_c_return_trivialnull63         fn ns_c_return_trivial() -> D;
64 
65         #[namespace = "I"]
66         type I;
67 
getnull68         fn get(self: &I) -> u32;
69 
70         #[namespace = "I"]
ns_c_return_unique_ptr_nsnull71         fn ns_c_return_unique_ptr_ns() -> UniquePtr<I>;
72     }
73 
74     impl UniquePtr<D> {}
75     impl UniquePtr<E> {}
76     impl UniquePtr<F> {}
77     impl UniquePtr<G> {}
78 }
79