Include type name in UniquePtr function table
diff --git a/macro/src/expand.rs b/macro/src/expand.rs
index e9a4495..67c34e5 100644
--- a/macro/src/expand.rs
+++ b/macro/src/expand.rs
@@ -475,6 +475,7 @@
}
fn expand_unique_ptr(namespace: &Namespace, ident: &Ident, types: &Types) -> TokenStream {
+ let name = ident.to_string();
let prefix = format!("cxxbridge02$unique_ptr${}{}$", namespace, ident);
let link_null = format!("{}null", prefix);
let link_new = format!("{}new", prefix);
@@ -501,6 +502,7 @@
quote! {
unsafe impl ::cxx::private::UniquePtrTarget for #ident {
+ const __NAME: &'static str = #name;
fn __null() -> *mut ::std::ffi::c_void {
extern "C" {
#[link_name = #link_null]
diff --git a/src/unique_ptr.rs b/src/unique_ptr.rs
index ca527d2..c8c5a67 100644
--- a/src/unique_ptr.rs
+++ b/src/unique_ptr.rs
@@ -122,6 +122,8 @@
// codebase.
pub unsafe trait UniquePtrTarget {
#[doc(hidden)]
+ const __NAME: &'static str;
+ #[doc(hidden)]
fn __null() -> *mut c_void;
#[doc(hidden)]
fn __new(value: Self) -> *mut c_void
@@ -157,6 +159,7 @@
}
unsafe impl UniquePtrTarget for CxxString {
+ const __NAME: &'static str = "CxxString";
fn __null() -> *mut c_void {
let mut repr = ptr::null_mut::<c_void>();
unsafe { unique_ptr_std_string_null(&mut repr) }