#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align> {
storage: Storage,
align: [Align; 0],
}
impl<Storage, Align> __BindgenBitfieldUnit<Storage, Align> {
#[inline]
pub const fn new(storage: Storage) -> Self {
Self { storage, align: [] }
}
}
impl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>
where
Storage: AsRef<[u8]> + AsMut<[u8]>,
{
#[inline]
pub fn get_bit(&self, index: usize) -> bool {
debug_assert!(index / 8 < self.storage.as_ref().len());
let byte_index = index / 8;
let byte = self.storage.as_ref()[byte_index];
let bit_index = if cfg!(target_endian = "big") {
7 - (index % 8)
} else {
index % 8
};
let mask = 1 << bit_index;
byte & mask == mask
}
#[inline]
pub fn set_bit(&mut self, index: usize, val: bool) {
debug_assert!(index / 8 < self.storage.as_ref().len());
let byte_index = index / 8;
let byte = &mut self.storage.as_mut()[byte_index];
let bit_index = if cfg!(target_endian = "big") {
7 - (index % 8)
} else {
index % 8
};
let mask = 1 << bit_index;
if val {
*byte |= mask;
} else {
*byte &= !mask;
}
}
#[inline]
pub fn get(&self, bit_offset: usize, bit_width: u8) -> u64 {
debug_assert!(bit_width <= 64);
debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
let mut val = 0;
for i in 0..(bit_width as usize) {
if self.get_bit(i + bit_offset) {
let index = if cfg!(target_endian = "big") {
bit_width as usize - 1 - i
} else {
i
};
val |= 1 << index;
}
}
val
}
#[inline]
pub fn set(&mut self, bit_offset: usize, bit_width: u8, val: u64) {
debug_assert!(bit_width <= 64);
debug_assert!(bit_offset / 8 < self.storage.as_ref().len());
debug_assert!((bit_offset + (bit_width as usize)) / 8 <= self.storage.as_ref().len());
for i in 0..(bit_width as usize) {
let mask = 1 << i;
let val_bit_is_set = val & mask == mask;
let index = if cfg!(target_endian = "big") {
bit_width as usize - 1 - i
} else {
i
};
self.set_bit(index + bit_offset, val_bit_is_set);
}
}
}
#[repr(C)]
#[derive(Default)]
pub struct __IncompleteArrayField<T>(::std::marker::PhantomData<T>, [T; 0]);
impl<T> __IncompleteArrayField<T> {
#[inline]
pub const fn new() -> Self {
__IncompleteArrayField(::std::marker::PhantomData, [])
}
#[inline]
pub fn as_ptr(&self) -> *const T {
self as *const _ as *const T
}
#[inline]
pub fn as_mut_ptr(&mut self) -> *mut T {
self as *mut _ as *mut T
}
#[inline]
pub unsafe fn as_slice(&self, len: usize) -> &[T] {
::std::slice::from_raw_parts(self.as_ptr(), len)
}
#[inline]
pub unsafe fn as_mut_slice(&mut self, len: usize) -> &mut [T] {
::std::slice::from_raw_parts_mut(self.as_mut_ptr(), len)
}
}
impl<T> ::std::fmt::Debug for __IncompleteArrayField<T> {
fn fmt(&self, fmt: &mut ::std::fmt::Formatter<'_>) -> ::std::fmt::Result {
fmt.write_str("__IncompleteArrayField")
}
}
pub const _STDINT_H: u32 = 1;
pub const _FEATURES_H: u32 = 1;
pub const _DEFAULT_SOURCE: u32 = 1;
pub const __GLIBC_USE_ISOC2X: u32 = 0;
pub const __USE_ISOC11: u32 = 1;
pub const __USE_ISOC99: u32 = 1;
pub const __USE_ISOC95: u32 = 1;
pub const __USE_POSIX_IMPLICITLY: u32 = 1;
pub const _POSIX_SOURCE: u32 = 1;
pub const _POSIX_C_SOURCE: u32 = 200809;
pub const __USE_POSIX: u32 = 1;
pub const __USE_POSIX2: u32 = 1;
pub const __USE_POSIX199309: u32 = 1;
pub const __USE_POSIX199506: u32 = 1;
pub const __USE_XOPEN2K: u32 = 1;
pub const __USE_XOPEN2K8: u32 = 1;
pub const _ATFILE_SOURCE: u32 = 1;
pub const __USE_MISC: u32 = 1;
pub const __USE_ATFILE: u32 = 1;
pub const __USE_FORTIFY_LEVEL: u32 = 0;
pub const __GLIBC_USE_DEPRECATED_GETS: u32 = 0;
pub const __GLIBC_USE_DEPRECATED_SCANF: u32 = 0;
pub const _STDC_PREDEF_H: u32 = 1;
pub const __STDC_IEC_559__: u32 = 1;
pub const __STDC_IEC_559_COMPLEX__: u32 = 1;
pub const __STDC_ISO_10646__: u32 = 201706;
pub const __GNU_LIBRARY__: u32 = 6;
pub const __GLIBC__: u32 = 2;
pub const __GLIBC_MINOR__: u32 = 31;
pub const _SYS_CDEFS_H: u32 = 1;
pub const __glibc_c99_flexarr_available: u32 = 1;
pub const __WORDSIZE: u32 = 64;
pub const __WORDSIZE_TIME64_COMPAT32: u32 = 1;
pub const __SYSCALL_WORDSIZE: u32 = 64;
pub const __LONG_DOUBLE_USES_FLOAT128: u32 = 0;
pub const __HAVE_GENERIC_SELECTION: u32 = 1;
pub const __GLIBC_USE_LIB_EXT2: u32 = 0;
pub const __GLIBC_USE_IEC_60559_BFP_EXT: u32 = 0;
pub const __GLIBC_USE_IEC_60559_BFP_EXT_C2X: u32 = 0;
pub const __GLIBC_USE_IEC_60559_FUNCS_EXT: u32 = 0;
pub const __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X: u32 = 0;
pub const __GLIBC_USE_IEC_60559_TYPES_EXT: u32 = 0;
pub const _BITS_TYPES_H: u32 = 1;
pub const __TIMESIZE: u32 = 64;
pub const _BITS_TYPESIZES_H: u32 = 1;
pub const __OFF_T_MATCHES_OFF64_T: u32 = 1;
pub const __INO_T_MATCHES_INO64_T: u32 = 1;
pub const __RLIM_T_MATCHES_RLIM64_T: u32 = 1;
pub const __STATFS_MATCHES_STATFS64: u32 = 1;
pub const __FD_SETSIZE: u32 = 1024;
pub const _BITS_TIME64_H: u32 = 1;
pub const _BITS_WCHAR_H: u32 = 1;
pub const _BITS_STDINT_INTN_H: u32 = 1;
pub const _BITS_STDINT_UINTN_H: u32 = 1;
pub const INT8_MIN: i32 = -128;
pub const INT16_MIN: i32 = -32768;
pub const INT32_MIN: i32 = -2147483648;
pub const INT8_MAX: u32 = 127;
pub const INT16_MAX: u32 = 32767;
pub const INT32_MAX: u32 = 2147483647;
pub const UINT8_MAX: u32 = 255;
pub const UINT16_MAX: u32 = 65535;
pub const UINT32_MAX: u32 = 4294967295;
pub const INT_LEAST8_MIN: i32 = -128;
pub const INT_LEAST16_MIN: i32 = -32768;
pub const INT_LEAST32_MIN: i32 = -2147483648;
pub const INT_LEAST8_MAX: u32 = 127;
pub const INT_LEAST16_MAX: u32 = 32767;
pub const INT_LEAST32_MAX: u32 = 2147483647;
pub const UINT_LEAST8_MAX: u32 = 255;
pub const UINT_LEAST16_MAX: u32 = 65535;
pub const UINT_LEAST32_MAX: u32 = 4294967295;
pub const INT_FAST8_MIN: i32 = -128;
pub const INT_FAST16_MIN: i64 = -9223372036854775808;
pub const INT_FAST32_MIN: i64 = -9223372036854775808;
pub const INT_FAST8_MAX: u32 = 127;
pub const INT_FAST16_MAX: u64 = 9223372036854775807;
pub const INT_FAST32_MAX: u64 = 9223372036854775807;
pub const UINT_FAST8_MAX: u32 = 255;
pub const UINT_FAST16_MAX: i32 = -1;
pub const UINT_FAST32_MAX: i32 = -1;
pub const INTPTR_MIN: i64 = -9223372036854775808;
pub const INTPTR_MAX: u64 = 9223372036854775807;
pub const UINTPTR_MAX: i32 = -1;
pub const PTRDIFF_MIN: i64 = -9223372036854775808;
pub const PTRDIFF_MAX: u64 = 9223372036854775807;
pub const SIG_ATOMIC_MIN: i32 = -2147483648;
pub const SIG_ATOMIC_MAX: u32 = 2147483647;
pub const SIZE_MAX: i32 = -1;
pub const WINT_MIN: u32 = 0;
pub const WINT_MAX: u32 = 4294967295;
pub const MINIMUM_NK_SIZE: u32 = 128;
pub const ALIGNMENT: u32 = 8;
pub type __u_char = ::std::os::raw::c_uchar;
pub type __u_short = ::std::os::raw::c_ushort;
pub type __u_int = ::std::os::raw::c_uint;
pub type __u_long = ::std::os::raw::c_ulong;
pub type __int8_t = ::std::os::raw::c_schar;
pub type __uint8_t = ::std::os::raw::c_uchar;
pub type __int16_t = ::std::os::raw::c_short;
pub type __uint16_t = ::std::os::raw::c_ushort;
pub type __int32_t = ::std::os::raw::c_int;
pub type __uint32_t = ::std::os::raw::c_uint;
pub type __int64_t = ::std::os::raw::c_long;
pub type __uint64_t = ::std::os::raw::c_ulong;
pub type __int_least8_t = __int8_t;
pub type __uint_least8_t = __uint8_t;
pub type __int_least16_t = __int16_t;
pub type __uint_least16_t = __uint16_t;
pub type __int_least32_t = __int32_t;
pub type __uint_least32_t = __uint32_t;
pub type __int_least64_t = __int64_t;
pub type __uint_least64_t = __uint64_t;
pub type __quad_t = ::std::os::raw::c_long;
pub type __u_quad_t = ::std::os::raw::c_ulong;
pub type __intmax_t = ::std::os::raw::c_long;
pub type __uintmax_t = ::std::os::raw::c_ulong;
pub type __dev_t = ::std::os::raw::c_ulong;
pub type __uid_t = ::std::os::raw::c_uint;
pub type __gid_t = ::std::os::raw::c_uint;
pub type __ino_t = ::std::os::raw::c_ulong;
pub type __ino64_t = ::std::os::raw::c_ulong;
pub type __mode_t = ::std::os::raw::c_uint;
pub type __nlink_t = ::std::os::raw::c_ulong;
pub type __off_t = ::std::os::raw::c_long;
pub type __off64_t = ::std::os::raw::c_long;
pub type __pid_t = ::std::os::raw::c_int;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __fsid_t {
pub __val: [::std::os::raw::c_int; 2usize],
}
#[test]
fn bindgen_test_layout___fsid_t() {
assert_eq!(
::std::mem::size_of::<__fsid_t>(),
8usize,
concat!("Size of: ", stringify!(__fsid_t))
);
assert_eq!(
::std::mem::align_of::<__fsid_t>(),
4usize,
concat!("Alignment of ", stringify!(__fsid_t))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<__fsid_t>())).__val as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(__fsid_t),
"::",
stringify!(__val)
)
);
}
pub type __clock_t = ::std::os::raw::c_long;
pub type __rlim_t = ::std::os::raw::c_ulong;
pub type __rlim64_t = ::std::os::raw::c_ulong;
pub type __id_t = ::std::os::raw::c_uint;
pub type __time_t = ::std::os::raw::c_long;
pub type __useconds_t = ::std::os::raw::c_uint;
pub type __suseconds_t = ::std::os::raw::c_long;
pub type __daddr_t = ::std::os::raw::c_int;
pub type __key_t = ::std::os::raw::c_int;
pub type __clockid_t = ::std::os::raw::c_int;
pub type __timer_t = *mut ::std::os::raw::c_void;
pub type __blksize_t = ::std::os::raw::c_long;
pub type __blkcnt_t = ::std::os::raw::c_long;
pub type __blkcnt64_t = ::std::os::raw::c_long;
pub type __fsblkcnt_t = ::std::os::raw::c_ulong;
pub type __fsblkcnt64_t = ::std::os::raw::c_ulong;
pub type __fsfilcnt_t = ::std::os::raw::c_ulong;
pub type __fsfilcnt64_t = ::std::os::raw::c_ulong;
pub type __fsword_t = ::std::os::raw::c_long;
pub type __ssize_t = ::std::os::raw::c_long;
pub type __syscall_slong_t = ::std::os::raw::c_long;
pub type __syscall_ulong_t = ::std::os::raw::c_ulong;
pub type __loff_t = __off64_t;
pub type __caddr_t = *mut ::std::os::raw::c_char;
pub type __intptr_t = ::std::os::raw::c_long;
pub type __socklen_t = ::std::os::raw::c_uint;
pub type __sig_atomic_t = ::std::os::raw::c_int;
pub type int_least8_t = __int_least8_t;
pub type int_least16_t = __int_least16_t;
pub type int_least32_t = __int_least32_t;
pub type int_least64_t = __int_least64_t;
pub type uint_least8_t = __uint_least8_t;
pub type uint_least16_t = __uint_least16_t;
pub type uint_least32_t = __uint_least32_t;
pub type uint_least64_t = __uint_least64_t;
pub type int_fast8_t = ::std::os::raw::c_schar;
pub type int_fast16_t = ::std::os::raw::c_long;
pub type int_fast32_t = ::std::os::raw::c_long;
pub type int_fast64_t = ::std::os::raw::c_long;
pub type uint_fast8_t = ::std::os::raw::c_uchar;
pub type uint_fast16_t = ::std::os::raw::c_ulong;
pub type uint_fast32_t = ::std::os::raw::c_ulong;
pub type uint_fast64_t = ::std::os::raw::c_ulong;
pub type intmax_t = __intmax_t;
pub type uintmax_t = __uintmax_t;
pub type size_t = ::std::os::raw::c_ulong;
pub type wchar_t = ::std::os::raw::c_int;
#[repr(C)]
#[repr(align(16))]
#[derive(Debug, Copy, Clone)]
pub struct max_align_t {
pub __clang_max_align_nonce1: ::std::os::raw::c_longlong,
pub __bindgen_padding_0: u64,
pub __clang_max_align_nonce2: u128,
}
#[test]
fn bindgen_test_layout_max_align_t() {
assert_eq!(
::std::mem::size_of::<max_align_t>(),
32usize,
concat!("Size of: ", stringify!(max_align_t))
);
assert_eq!(
::std::mem::align_of::<max_align_t>(),
16usize,
concat!("Alignment of ", stringify!(max_align_t))
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<max_align_t>())).__clang_max_align_nonce1 as *const _ as usize
},
0usize,
concat!(
"Offset of field: ",
stringify!(max_align_t),
"::",
stringify!(__clang_max_align_nonce1)
)
);
assert_eq!(
unsafe {
&(*(::std::ptr::null::<max_align_t>())).__clang_max_align_nonce2 as *const _ as usize
},
16usize,
concat!(
"Offset of field: ",
stringify!(max_align_t),
"::",
stringify!(__clang_max_align_nonce2)
)
);
}
pub type VoidP = *mut ::std::os::raw::c_void;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct PairVoidP {
pub fst: VoidP,
pub snd: VoidP,
}
#[test]
fn bindgen_test_layout_PairVoidP() {
assert_eq!(
::std::mem::size_of::<PairVoidP>(),
16usize,
concat!("Size of: ", stringify!(PairVoidP))
);
assert_eq!(
::std::mem::align_of::<PairVoidP>(),
8usize,
concat!("Alignment of ", stringify!(PairVoidP))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<PairVoidP>())).fst as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(PairVoidP),
"::",
stringify!(fst)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<PairVoidP>())).snd as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(PairVoidP),
"::",
stringify!(snd)
)
);
}
pub type NkSz = u16;
pub const NkColor_COLOR_WHITE: NkColor = 0;
pub const NkColor_COLOR_GRAY: NkColor = 1;
pub const NkColor_COLOR_BLACK: NkColor = 2;
pub type NkColor = u32;
#[repr(C, packed)]
#[derive(Debug, Copy, Clone)]
pub struct NkAtomMeta {
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,
}
#[test]
fn bindgen_test_layout_NkAtomMeta() {
assert_eq!(
::std::mem::size_of::<NkAtomMeta>(),
1usize,
concat!("Size of: ", stringify!(NkAtomMeta))
);
assert_eq!(
::std::mem::align_of::<NkAtomMeta>(),
1usize,
concat!("Alignment of ", stringify!(NkAtomMeta))
);
}
impl NkAtomMeta {
#[inline]
pub fn color(&self) -> u8 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 2u8) as u8) }
}
#[inline]
pub fn set_color(&mut self, val: u8) {
unsafe {
let val: u8 = ::std::mem::transmute(val);
self._bitfield_1.set(0usize, 2u8, val as u64)
}
}
#[inline]
pub fn typ(&self) -> u8 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 6u8) as u8) }
}
#[inline]
pub fn set_typ(&mut self, val: u8) {
unsafe {
let val: u8 = ::std::mem::transmute(val);
self._bitfield_1.set(2usize, 6u8, val as u64)
}
}
#[inline]
pub fn new_bitfield_1(color: u8, typ: u8) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
Default::default();
__bindgen_bitfield_unit.set(0usize, 2u8, {
let color: u8 = unsafe { ::std::mem::transmute(color) };
color as u64
});
__bindgen_bitfield_unit.set(2usize, 6u8, {
let typ: u8 = unsafe { ::std::mem::transmute(typ) };
typ as u64
});
__bindgen_bitfield_unit
}
}
#[repr(C)]
#[derive(Debug)]
pub struct NkAtom {
pub sz: NkSz,
pub meta: NkAtomMeta,
pub next: *mut NkAtom,
pub mem: __IncompleteArrayField<::std::os::raw::c_char>,
}
#[test]
fn bindgen_test_layout_NkAtom() {
assert_eq!(
::std::mem::size_of::<NkAtom>(),
16usize,
concat!("Size of: ", stringify!(NkAtom))
);
assert_eq!(
::std::mem::align_of::<NkAtom>(),
8usize,
concat!("Alignment of ", stringify!(NkAtom))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<NkAtom>())).sz as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(NkAtom),
"::",
stringify!(sz)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<NkAtom>())).meta as *const _ as usize },
2usize,
concat!(
"Offset of field: ",
stringify!(NkAtom),
"::",
stringify!(meta)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<NkAtom>())).next as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(NkAtom),
"::",
stringify!(next)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<NkAtom>())).mem as *const _ as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(NkAtom),
"::",
stringify!(mem)
)
);
}
#[repr(C)]
#[derive(Debug)]
pub struct NkRelocArray {
pub capacity: size_t,
pub length: size_t,
pub elems: __IncompleteArrayField<PairVoidP>,
}
#[test]
fn bindgen_test_layout_NkRelocArray() {
assert_eq!(
::std::mem::size_of::<NkRelocArray>(),
16usize,
concat!("Size of: ", stringify!(NkRelocArray))
);
assert_eq!(
::std::mem::align_of::<NkRelocArray>(),
8usize,
concat!("Alignment of ", stringify!(NkRelocArray))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<NkRelocArray>())).capacity as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(NkRelocArray),
"::",
stringify!(capacity)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<NkRelocArray>())).length as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(NkRelocArray),
"::",
stringify!(length)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<NkRelocArray>())).elems as *const _ as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(NkRelocArray),
"::",
stringify!(elems)
)
);
}
#[repr(C)]
#[derive(Debug)]
pub struct Nuke {
pub free: *mut ::std::os::raw::c_char,
pub grow_num: size_t,
pub used: size_t,
pub num_frees: size_t,
pub num_allocs: size_t,
pub num_atoms: size_t,
pub load_factor: f64,
pub load_max: size_t,
pub min_block_sz: NkSz,
pub sz: size_t,
pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,
pub reloc: *mut NkRelocArray,
pub last: *mut NkAtom,
pub mem: __IncompleteArrayField<::std::os::raw::c_char>,
}
#[test]
fn bindgen_test_layout_Nuke() {
assert_eq!(
::std::mem::size_of::<Nuke>(),
104usize,
concat!("Size of: ", stringify!(Nuke))
);
assert_eq!(
::std::mem::align_of::<Nuke>(),
8usize,
concat!("Alignment of ", stringify!(Nuke))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).free as *const _ as usize },
0usize,
concat!(
"Offset of field: ",
stringify!(Nuke),
"::",
stringify!(free)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).grow_num as *const _ as usize },
8usize,
concat!(
"Offset of field: ",
stringify!(Nuke),
"::",
stringify!(grow_num)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).used as *const _ as usize },
16usize,
concat!(
"Offset of field: ",
stringify!(Nuke),
"::",
stringify!(used)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).num_frees as *const _ as usize },
24usize,
concat!(
"Offset of field: ",
stringify!(Nuke),
"::",
stringify!(num_frees)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).num_allocs as *const _ as usize },
32usize,
concat!(
"Offset of field: ",
stringify!(Nuke),
"::",
stringify!(num_allocs)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).num_atoms as *const _ as usize },
40usize,
concat!(
"Offset of field: ",
stringify!(Nuke),
"::",
stringify!(num_atoms)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).load_factor as *const _ as usize },
48usize,
concat!(
"Offset of field: ",
stringify!(Nuke),
"::",
stringify!(load_factor)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).load_max as *const _ as usize },
56usize,
concat!(
"Offset of field: ",
stringify!(Nuke),
"::",
stringify!(load_max)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).min_block_sz as *const _ as usize },
64usize,
concat!(
"Offset of field: ",
stringify!(Nuke),
"::",
stringify!(min_block_sz)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).sz as *const _ as usize },
72usize,
concat!("Offset of field: ", stringify!(Nuke), "::", stringify!(sz))
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).reloc as *const _ as usize },
88usize,
concat!(
"Offset of field: ",
stringify!(Nuke),
"::",
stringify!(reloc)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).last as *const _ as usize },
96usize,
concat!(
"Offset of field: ",
stringify!(Nuke),
"::",
stringify!(last)
)
);
assert_eq!(
unsafe { &(*(::std::ptr::null::<Nuke>())).mem as *const _ as usize },
104usize,
concat!("Offset of field: ", stringify!(Nuke), "::", stringify!(mem))
);
}
impl Nuke {
#[inline]
pub fn has_relocated(&self) -> u8 {
unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
}
#[inline]
pub fn set_has_relocated(&mut self, val: u8) {
unsafe {
let val: u8 = ::std::mem::transmute(val);
self._bitfield_1.set(0usize, 1u8, val as u64)
}
}
#[inline]
pub fn new_bitfield_1(has_relocated: u8) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
Default::default();
__bindgen_bitfield_unit.set(0usize, 1u8, {
let has_relocated: u8 = unsafe { ::std::mem::transmute(has_relocated) };
has_relocated as u64
});
__bindgen_bitfield_unit
}
}
extern "C" {
#[doc = " Create a new nuclear allocator of a certain size."]
#[doc = ""]
#[doc = " @param sz The size of the nk in bytes, and the growth number."]
#[doc = " @param min The minimum size of blocks you intend to allocate."]
#[doc = " @param max The maximum size of blocks you intend to allocate."]
#[doc = " @param load_factor A number in the range [0.0, 1.0] representing the"]
#[doc = " amount of memory that can be in use without"]
#[doc = " performing a re-allocation during compacting."]
#[doc = " @return Newly allocated nk, or NULL iff there was an error."]
pub fn nk_new(sz: size_t, min: NkSz, load_factor: f64) -> *mut Nuke;
}
extern "C" {
#[doc = " Deallocate the entire nk."]
pub fn nk_destroy(nk: *mut Nuke);
}
extern "C" {
#[doc = " Allocate a new block."]
#[doc = ""]
#[doc = " @return The newly allocated block, or NULL iff there is no space left."]
#[doc = ""]
#[doc = " If NULL is returned, do the following:"]
#[doc = " 1. Call nk_make_room(Nuke*)."]
#[doc = " 2. Call check_relocation to retrieve the relocated pointers."]
#[doc = " 3. Update pointers."]
#[doc = " 4. Call confirm_relocation to reset the relocation array."]
pub fn nk_alloc(nk: *mut Nuke, sz: NkSz, ty: u8) -> *mut ::std::os::raw::c_void;
}
extern "C" {
#[doc = " Compact nk memory, such that there are no empty gaps."]
pub fn nk_compact(nk: *mut Nuke);
}
extern "C" {
#[doc = " Get the head from which to start a mark-cycle."]
pub fn nk_gc_cycle_head(nk: *mut Nuke) -> *mut NkAtom;
}
extern "C" {
#[doc = " Get the head block of the nuke."]
pub fn nk_head(nk: *mut Nuke) -> *mut NkAtom;
}
extern "C" {
#[doc = " Format and print human-readable nk layout to stdout."]
pub fn nk_print(nk: *mut Nuke);
}
extern "C" {
#[doc = " Make room for more stuff in the Nuke."]
#[doc = ""]
#[doc = " @return The nuke, or NULL iff there was an error."]
#[doc = ""]
#[doc = " Note: You'll probably want to panic if this function returns NULL."]
pub fn nk_make_room(nk: *mut Nuke, fit: size_t) -> *mut Nuke;
}
extern "C" {
#[doc = " Check if blocks have been relocated (i.e shifted around.)"]
#[doc = ""]
#[doc = " @returns An array of pairs where (fst, snd) = (original pointer, new pointer)"]
pub fn nk_check_relocation(nk: *mut Nuke) -> *const NkRelocArray;
}
extern "C" {
#[doc = " Confirm that the relocation has been handled, by updating pointers"]
#[doc = " to their new values."]
pub fn nk_confirm_relocation(nk: *mut Nuke);
}
extern "C" {
#[doc = " Compact nk memory, such that there are no empty gaps,"]
#[doc = " the compacting process is perfored during a sweep where"]
#[doc = " NkColor::COLOR_WHITE objects are deallocated."]
pub fn nk_sweep_compact(nk: *mut Nuke);
}
extern "C" {
pub fn nk_destroy_atom(p: *mut NkAtom);
}