Skip to main content

jl_sys/
types.rs

1#![allow(non_camel_case_types)]
2
3use std::{
4    cell::Cell,
5    ffi::{c_int, c_void},
6    marker::{PhantomData, PhantomPinned},
7    ptr::null_mut,
8};
9
10#[repr(C)]
11#[derive(Copy, Clone, Debug)]
12pub struct jl_array_t {
13    _unused: [u8; 0],
14    _marker: PhantomData<(*mut u8, PhantomPinned)>,
15}
16
17#[repr(C)]
18#[derive(Copy, Clone, Debug)]
19pub struct jl_datatype_layout_t {
20    _unused: [u8; 0],
21    _marker: PhantomData<(*mut u8, PhantomPinned)>,
22}
23
24#[repr(C)]
25#[derive(Copy, Clone, Debug)]
26pub struct jl_datatype_t {
27    _unused: [u8; 0],
28    _marker: PhantomData<(*mut u8, PhantomPinned)>,
29}
30
31#[repr(C)]
32#[derive(Copy, Clone, Debug)]
33pub struct jl_expr_t {
34    _unused: [u8; 0],
35    _marker: PhantomData<(*mut u8, PhantomPinned)>,
36}
37
38#[repr(u32)]
39#[derive(Copy, Clone, Debug)]
40pub enum jl_gc_collection_t {
41    Auto = 0,
42    Full = 1,
43    Incremental = 2,
44}
45
46pub type GcCollection = jl_gc_collection_t;
47
48#[repr(C)]
49#[derive(Debug)]
50pub struct jl_gcframe_t {
51    pub n_roots: usize,
52    pub prev: Cell<*mut c_void>,
53    _marker: PhantomData<(*mut u8, PhantomPinned)>,
54}
55
56impl jl_gcframe_t {
57    #[inline]
58    pub const fn new<const N: usize>() -> Self {
59        jl_gcframe_t {
60            n_roots: N << 2,
61            prev: Cell::new(null_mut()),
62            _marker: PhantomData,
63        }
64    }
65
66    #[inline]
67    pub const fn new_split(m: usize, n: usize) -> Self {
68        jl_gcframe_t {
69            n_roots: (m + n) << 2,
70            prev: Cell::new(null_mut()),
71            _marker: PhantomData,
72        }
73    }
74}
75
76#[repr(C)]
77#[derive(Copy, Clone, Debug)]
78#[cfg(not(julia_1_10))]
79pub struct jl_genericmemory_t {
80    _unused: [u8; 0],
81    _marker: PhantomData<(*mut u8, PhantomPinned)>,
82}
83
84pub type jl_markfunc_t =
85    unsafe extern "C" fn(ptls: *mut jl_tls_states_t, obj: *mut jl_value_t) -> usize;
86
87pub type jl_sweepfunc_t = unsafe extern "C" fn(obj: *mut jl_value_t);
88
89pub type jl_gc_cb_root_scanner_t = unsafe extern "C" fn(c_int);
90
91#[repr(C)]
92#[derive(Copy, Clone, Debug)]
93pub struct jl_module_t {
94    _unused: [u8; 0],
95    _marker: PhantomData<(*mut u8, PhantomPinned)>,
96}
97
98#[repr(C)]
99#[derive(Copy, Clone, Debug)]
100pub struct JL_STREAM {
101    _unused: [u8; 0],
102    _marker: PhantomData<(*mut u8, PhantomPinned)>,
103}
104
105#[repr(C)]
106#[derive(Copy, Clone, Debug)]
107pub struct jl_svec_t {
108    _unused: [u8; 0],
109    _marker: PhantomData<(*mut u8, PhantomPinned)>,
110}
111
112#[repr(C)]
113#[derive(Copy, Clone, Debug)]
114pub struct jl_sym_t {
115    _unused: [u8; 0],
116    _marker: PhantomData<(*mut u8, PhantomPinned)>,
117}
118
119#[repr(C)]
120#[derive(Copy, Clone, Debug)]
121pub struct jl_task_t {
122    _unused: [u8; 0],
123    _marker: PhantomData<(*mut u8, PhantomPinned)>,
124}
125
126#[repr(C)]
127#[derive(Copy, Clone, Debug)]
128pub struct jl_tls_states_t {
129    _unused: [u8; 0],
130    _marker: PhantomData<(*mut u8, PhantomPinned)>,
131}
132
133#[repr(C)]
134#[derive(Copy, Clone, Debug)]
135pub struct jl_tvar_t {
136    _unused: [u8; 0],
137    _marker: PhantomData<(*mut u8, PhantomPinned)>,
138}
139
140#[repr(C)]
141#[derive(Copy, Clone, Debug)]
142pub struct jl_typename_t {
143    _unused: [u8; 0],
144    _marker: PhantomData<(*mut u8, PhantomPinned)>,
145}
146
147#[repr(C)]
148#[derive(Copy, Clone, Debug)]
149pub struct jl_unionall_t {
150    _unused: [u8; 0],
151    _marker: PhantomData<(*mut u8, PhantomPinned)>,
152}
153
154#[repr(C)]
155#[derive(Copy, Clone, Debug)]
156pub struct jl_uniontype_t {
157    _unused: [u8; 0],
158    _marker: PhantomData<(*mut u8, PhantomPinned)>,
159}
160
161#[repr(C)]
162#[derive(Copy, Clone, Debug)]
163pub struct jl_value_t {
164    _unused: [u8; 0],
165    _marker: PhantomData<(*mut u8, PhantomPinned)>,
166}
167
168#[repr(C)]
169#[derive(Copy, Clone, Debug)]
170pub struct jl_binding_partition_t {
171    _unused: [u8; 0],
172    _marker: PhantomData<(*mut u8, PhantomPinned)>,
173}
174
175#[repr(C)]
176#[derive(Copy, Clone, Debug)]
177pub struct jl_binding_t {
178    _unused: [u8; 0],
179    _marker: PhantomData<(*mut u8, PhantomPinned)>,
180}