Store independent rust name and c++ name for extern functions
diff --git a/gen/src/write.rs b/gen/src/write.rs
index 9e6a297..5d47c63 100644
--- a/gen/src/write.rs
+++ b/gen/src/write.rs
@@ -370,7 +370,7 @@
for method in methods {
write!(out, " ");
let sig = &method.sig;
- let local_name = method.ident.to_string();
+ let local_name = method.ident.cxx.to_string();
write_rust_function_shim_decl(out, &local_name, sig, false);
writeln!(out, ";");
}
@@ -517,8 +517,8 @@
write!(out, " ");
write_return_type(out, &efn.ret);
match &efn.receiver {
- None => write!(out, "(*{}$)(", efn.ident),
- Some(receiver) => write!(out, "({}::*{}$)(", receiver.ty, efn.ident),
+ None => write!(out, "(*{}$)(", efn.ident.rust),
+ Some(receiver) => write!(out, "({}::*{}$)(", receiver.ty, efn.ident.rust),
}
for (i, arg) in efn.args.iter().enumerate() {
if i > 0 {
@@ -534,8 +534,8 @@
}
write!(out, " = ");
match &efn.receiver {
- None => write!(out, "{}", efn.ident),
- Some(receiver) => write!(out, "&{}::{}", receiver.ty, efn.ident),
+ None => write!(out, "{}", efn.ident.cxx),
+ Some(receiver) => write!(out, "&{}::{}", receiver.ty, efn.ident.cxx),
}
writeln!(out, ";");
write!(out, " ");
@@ -562,8 +562,8 @@
_ => {}
}
match &efn.receiver {
- None => write!(out, "{}$(", efn.ident),
- Some(_) => write!(out, "(self.*{}$)(", efn.ident),
+ None => write!(out, "{}$(", efn.ident.rust),
+ Some(_) => write!(out, "(self.*{}$)(", efn.ident.rust),
}
for (i, arg) in efn.args.iter().enumerate() {
if i > 0 {
@@ -697,8 +697,8 @@
writeln!(out, "//{}", line);
}
let local_name = match &efn.sig.receiver {
- None => efn.ident.to_string(),
- Some(receiver) => format!("{}::{}", receiver.ty, efn.ident),
+ None => efn.ident.cxx.to_string(),
+ Some(receiver) => format!("{}::{}", receiver.ty, efn.ident.cxx),
};
let invoke = mangle::extern_fn(&out.namespace, efn);
let indirect_call = false;