ruby_sys/
typed_data.rs

1use types::{c_char, c_void, size_t, Value};
2
3extern "C" {
4    pub fn rb_check_typeddata(object: Value, data_type: *const RbDataType) -> *mut c_void;
5
6    pub fn rb_data_typed_object_wrap(klass: Value,
7                                     data: *mut c_void,
8                                     data_type: *const RbDataType)
9                                     -> Value;
10}
11
12#[repr(C)]
13pub struct RbDataTypeFunction {
14    pub dmark: Option<extern "C" fn(*mut c_void)>,
15    pub dfree: Option<extern "C" fn(*mut c_void)>,
16    pub dsize: Option<extern "C" fn(*const c_void) -> size_t>,
17    pub reserved: [*mut c_void; 2],
18}
19
20#[repr(C)]
21pub struct RbDataType {
22    pub wrap_struct_name: *const c_char,
23    pub function: RbDataTypeFunction,
24    pub parent: *const RbDataType,
25    pub data: *mut c_void,
26    pub flags: Value,
27}