54 lines
1.3 KiB
Rust
54 lines
1.3 KiB
Rust
use cxx::{type_id, ExternType};
|
|
|
|
#[repr(transparent)]
|
|
pub struct QuotedRaw(usize);
|
|
|
|
unsafe impl ExternType for QuotedRaw {
|
|
type Id = type_id!("org::r#box::implementation::QuotedRaw");
|
|
type Kind = cxx::kind::Trivial;
|
|
}
|
|
|
|
#[repr(transparent)]
|
|
pub struct QuotedKeyword(usize);
|
|
|
|
unsafe impl ExternType for QuotedKeyword {
|
|
type Id = type_id!("org::box::implementation::QuotedKeyword");
|
|
type Kind = cxx::kind::Trivial;
|
|
}
|
|
|
|
#[repr(transparent)]
|
|
pub struct UnquotedRaw(usize);
|
|
|
|
unsafe impl ExternType for UnquotedRaw {
|
|
type Id = type_id!(org::r#box::implementation::UnquotedRaw);
|
|
type Kind = cxx::kind::Trivial;
|
|
}
|
|
|
|
#[repr(transparent)]
|
|
pub struct UnquotedKeyword(usize);
|
|
|
|
unsafe impl ExternType for UnquotedKeyword {
|
|
type Id = type_id!(org::box::implementation::UnquotedKeyword);
|
|
type Kind = cxx::kind::Trivial;
|
|
}
|
|
|
|
#[cxx::bridge]
|
|
pub mod ffi {
|
|
extern "C++" {
|
|
#[namespace = "org::r#box::implementation"]
|
|
type QuotedRaw = crate::QuotedRaw;
|
|
|
|
#[namespace = "org::box::implementation"]
|
|
type QuotedKeyword = crate::QuotedKeyword;
|
|
|
|
#[namespace = org::r#box::implementation]
|
|
type UnquotedRaw = crate::UnquotedRaw;
|
|
|
|
// Not allowed by rustc (independent of cxx):
|
|
// #[namespace = org::box::implementation]
|
|
// type UnquotedKeyword = crate::UnquotedKeyword;
|
|
}
|
|
}
|
|
|
|
fn main() {}
|