Share function link name mangling logic
diff --git a/syntax/mangle.rs b/syntax/mangle.rs
new file mode 100644
index 0000000..9e6bb8a
--- /dev/null
+++ b/syntax/mangle.rs
@@ -0,0 +1,10 @@
+use crate::syntax::namespace::Namespace;
+use crate::syntax::ExternFn;
+
+pub fn extern_fn(namespace: &Namespace, efn: &ExternFn) -> String {
+    let receiver_type = match &efn.receiver {
+        Some(receiver) => receiver.ident.to_string(),
+        None => "_".to_string(),
+    };
+    format!("{}cxxbridge02${}${}", namespace, receiver_type, efn.ident)
+}