1use cxx::{type_id, ExternType};
2
3#[repr(transparent)]
4pub struct QuotedRaw(usize);
5
6unsafe impl ExternType for QuotedRaw {
7    type Id = type_id!("org::r#box::implementation::QuotedRaw");
8    type Kind = cxx::kind::Trivial;
9}
10
11#[repr(transparent)]
12pub struct QuotedKeyword(usize);
13
14unsafe impl ExternType for QuotedKeyword {
15    type Id = type_id!("org::box::implementation::QuotedKeyword");
16    type Kind = cxx::kind::Trivial;
17}
18
19#[repr(transparent)]
20pub struct UnquotedRaw(usize);
21
22unsafe impl ExternType for UnquotedRaw {
23    type Id = type_id!(org::r#box::implementation::UnquotedRaw);
24    type Kind = cxx::kind::Trivial;
25}
26
27#[repr(transparent)]
28pub struct UnquotedKeyword(usize);
29
30unsafe impl ExternType for UnquotedKeyword {
31    type Id = type_id!(org::box::implementation::UnquotedKeyword);
32    type Kind = cxx::kind::Trivial;
33}
34
35#[cxx::bridge]
36pub mod ffi {
37    extern "C++" {
38        #[namespace = "org::r#box::implementation"]
39        type QuotedRaw = crate::QuotedRaw;
40
41        #[namespace = "org::box::implementation"]
42        type QuotedKeyword = crate::QuotedKeyword;
43
44        #[namespace = org::r#box::implementation]
45        type UnquotedRaw = crate::UnquotedRaw;
46
47        // Not allowed by rustc (independent of cxx):
48        // #[namespace = org::box::implementation]
49        // type UnquotedKeyword = crate::UnquotedKeyword;
50    }
51}
52
53fn main() {}
54