pen_ffi/
type_information.rs

1use 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 {}