pen_ffi/
type_information.rs1use core::ptr::null;
2
3#[repr(C)]
4pub struct TypeInformation {
5 clone_fn: extern "C" fn(u64) -> u64,
6 drop_fn: extern "C" fn(u64),
7 synchronize_fn: extern "C" fn(u64),
8 extra: *const (),
9}
10
11impl TypeInformation {
12 pub const fn new(
13 clone_fn: extern "C" fn(u64) -> u64,
14 drop_fn: extern "C" fn(u64),
15 synchronize_fn: extern "C" fn(u64),
16 ) -> Self {
17 Self {
18 clone_fn,
19 drop_fn,
20 synchronize_fn,
21 extra: null(),
22 }
23 }
24
25 pub fn clone_fn(&self) -> extern "C" fn(u64) -> u64 {
26 self.clone_fn
27 }
28
29 pub fn drop_fn(&self) -> extern "C" fn(u64) {
30 self.drop_fn
31 }
32
33 pub fn synchronize_fn(&self) -> extern "C" fn(u64) {
34 self.synchronize_fn
35 }
36}
37
38unsafe impl Sync for TypeInformation {}