Skip to content

Commit 0362972

Browse files
committed
[bindings] Expose a _clone fn for every enum
This somewhat assumes that every public enum implements clone in some way, but that is currently the case.
1 parent 29b209c commit 0362972

File tree

1 file changed

+4
-0
lines changed

1 file changed

+4
-0
lines changed

c-bindings-gen/src/main.rs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -995,6 +995,10 @@ fn writeln_enum<'a, 'b, W: std::io::Write>(w: &mut W, e: &'a syn::ItemEnum, type
995995
if needs_free {
996996
writeln!(w, "#[no_mangle]\npub extern \"C\" fn {}_free(this_ptr: {}) {{ }}", e.ident, e.ident).unwrap();
997997
}
998+
writeln!(w, "#[no_mangle]").unwrap();
999+
writeln!(w, "pub extern \"C\" fn {}_clone(orig: &{}) -> {} {{", e.ident, e.ident, e.ident).unwrap();
1000+
writeln!(w, "\torig.clone()").unwrap();
1001+
writeln!(w, "}}").unwrap();
9981002
write_cpp_wrapper(cpp_headers, &format!("{}", e.ident), needs_free);
9991003
}
10001004

0 commit comments

Comments
 (0)