use super::prelude::*;
pub mod integer_flags {
use super::*;
pub const PACK_MSWORD_FIRST: c_int = 0x01;
pub const PACK_LSWORD_FIRST: c_int = 0x02;
pub const PACK_MSBYTE_FIRST: c_int = 0x10;
pub const PACK_LSBYTE_FIRST: c_int = 0x20;
pub const PACK_NATIVE_BYTE_ORDER: c_int = 0x40;
pub const PACK_2COMP: c_int = 0x80; pub const PACK_FORCE_GENERIC_IMPLEMENTATION: c_int = 0x400;
pub const PACK_FORCE_BIGNUM: c_int = 0x100;
pub const PACK_NEGATIVE: c_int = 0x200;
pub const PACK_LITTLE_ENDIAN: c_int = PACK_LSWORD_FIRST | PACK_LSBYTE_FIRST;
pub const PACK_BIG_ENDIAN: c_int = PACK_MSWORD_FIRST | PACK_MSBYTE_FIRST;
}
extern "C" {
pub fn rb_uint2inum(n: usize) -> VALUE;
pub fn rb_int2inum(n: isize) -> VALUE;
pub fn rb_big2dbl(x: VALUE) -> f64;
pub fn rb_big2str(x: VALUE, base: c_int) -> VALUE;
pub fn rb_bigzero_p(x: VALUE) -> c_int;
pub fn rb_integer_pack(
val: VALUE,
words: *mut c_void,
numwords: usize,
wordsize: usize,
nails: usize,
flags: c_int,
) -> c_int;
pub fn rb_integer_unpack(
words: *const c_void,
numwords: usize,
wordsize: usize,
nails: usize,
flags: c_int,
) -> VALUE;
pub fn rb_big_eq(x: VALUE, y: VALUE) -> VALUE;
pub fn rb_big_sign(x: VALUE) -> c_int;
pub fn rb_absint_singlebit_p(val: VALUE) -> c_int;
pub fn rb_absint_size(val: VALUE, nlz_bits_ret: *mut c_int) -> usize;
pub fn rb_absint_numwords(
val: VALUE,
word_numbits: usize,
nlz_bits_ret: *mut usize,
) -> usize;
pub fn rb_big_cmp(x: VALUE, y: VALUE) -> VALUE;
pub fn rb_big_and(x: VALUE, y: VALUE) -> VALUE;
pub fn rb_big_or(x: VALUE, y: VALUE) -> VALUE;
pub fn rb_big_xor(x: VALUE, y: VALUE) -> VALUE;
}