/* automatically generated by rust-bindgen */

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct __BindgenBitfieldUnit<Storage, Align>
where
    Storage: AsRef<[u8]> + AsMut<[u8]>,
{
    storage: Storage,
    align: [Align; 0],
}
impl<Storage, Align> __BindgenBitfieldUnit<Storage, Align>
where
    Storage: AsRef<[u8]> + AsMut<[u8]>,
{
    #[inline]
    pub fn new(storage: Storage) -> Self {
        Self { storage, align: [] }
    }
    #[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 fn new() -> Self {
        __IncompleteArrayField(::std::marker::PhantomData, [])
    }
    #[inline]
    pub unsafe fn as_ptr(&self) -> *const T {
        ::std::mem::transmute(self)
    }
    #[inline]
    pub unsafe fn as_mut_ptr(&mut self) -> *mut T {
        ::std::mem::transmute(self)
    }
    #[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")
    }
}
impl<T> ::std::clone::Clone for __IncompleteArrayField<T> {
    #[inline]
    fn clone(&self) -> Self {
        Self::new()
    }
}
pub const MRB_INT_BIT: u32 = 64;
pub const MRB_PRIo: &'static [u8; 4usize] = b"llo\0";
pub const MRB_PRId: &'static [u8; 4usize] = b"lld\0";
pub const MRB_PRIx: &'static [u8; 4usize] = b"llx\0";
pub const MRB_FL_OBJ_IS_FROZEN: u32 = 1048576;
pub const MRB_FIXNUM_SHIFT: u32 = 0;
pub const MRB_SYMBOL_MAX: u32 = 4294967295;
pub const MRB_EACH_OBJ_OK: u32 = 0;
pub const MRB_EACH_OBJ_BREAK: u32 = 1;
pub const MRB_GC_ARENA_SIZE: u32 = 100;
pub const MRUBY_RUBY_VERSION: &'static [u8; 4usize] = b"2.0\0";
pub const MRUBY_RUBY_ENGINE: &'static [u8; 6usize] = b"mruby\0";
pub const MRUBY_RELEASE_MAJOR: u32 = 2;
pub const MRUBY_RELEASE_MINOR: u32 = 0;
pub const MRUBY_RELEASE_TEENY: u32 = 1;
pub const MRUBY_RELEASE_NO: u32 = 20001;
pub const MRUBY_RELEASE_YEAR: u32 = 2019;
pub const MRUBY_RELEASE_MONTH: u32 = 4;
pub const MRUBY_RELEASE_DAY: u32 = 4;
pub const MRUBY_BIRTH_YEAR: u32 = 2010;
pub const MRUBY_AUTHOR: &'static [u8; 17usize] = b"mruby developers\0";
pub const MRB_FIXED_STATE_ATEXIT_STACK_SIZE: u32 = 5;
pub const MRB_METHOD_CACHE_SIZE: u32 = 128;
pub const MRB_ARY_EMBED_MASK: u32 = 7;
pub const MRB_ARY_SHARED: u32 = 256;
pub const MRB_FL_CLASS_IS_PREPENDED: u32 = 524288;
pub const MRB_FL_CLASS_IS_ORIGIN: u32 = 262144;
pub const MRB_FL_CLASS_IS_INHERITED: u32 = 131072;
pub const MRB_INSTANCE_TT_MASK: u32 = 255;
pub const MRB_PARSER_TOKBUF_MAX: u32 = 65536;
pub const MRB_PARSER_TOKBUF_SIZE: u32 = 256;
pub const MRB_ISEQ_NO_FREE: u32 = 1;
pub const MRB_DUMP_OK: u32 = 0;
pub const MRB_DUMP_GENERAL_FAILURE: i32 = -1;
pub const MRB_DUMP_WRITE_FAULT: i32 = -2;
pub const MRB_DUMP_READ_FAULT: i32 = -3;
pub const MRB_DUMP_CRC_ERROR: i32 = -4;
pub const MRB_DUMP_INVALID_FILE_HEADER: i32 = -5;
pub const MRB_DUMP_INVALID_IREP: i32 = -6;
pub const MRB_DUMP_INVALID_ARGUMENT: i32 = -7;
pub const MRB_DUMP_NULL_SYM_LEN: u32 = 65535;
pub const MRB_DUMP_DEFAULT_STR_LEN: u32 = 128;
pub const MRB_HASH_DEFAULT: u32 = 1;
pub const MRB_HASH_PROC_DEFAULT: u32 = 2;
pub const MRB_ENV_STACK_UNSHARED: u32 = 1048576;
pub const MRB_PROC_CFUNC_FL: u32 = 128;
pub const MRB_PROC_STRICT: u32 = 256;
pub const MRB_PROC_ORPHAN: u32 = 512;
pub const MRB_PROC_ENVSET: u32 = 1024;
pub const MRB_PROC_SCOPE: u32 = 2048;
pub const REGEXP_CLASS: &'static [u8; 7usize] = b"Regexp\0";
pub const MRB_STR_SHARED: u32 = 1;
pub const MRB_STR_FSHARED: u32 = 2;
pub const MRB_STR_NOFREE: u32 = 4;
pub const MRB_STR_POOL: u32 = 8;
pub const MRB_STR_NO_UTF: u32 = 16;
pub const MRB_STR_EMBED: u32 = 32;
pub const MRB_STR_EMBED_LEN_MASK: u32 = 1984;
pub const MRB_STR_EMBED_LEN_SHIFT: u32 = 6;
pub type va_list = __builtin_va_list;
pub type mrb_sym = u32;
pub type mrb_bool = u8;
pub type mrb_int = i64;
extern "C" {
    #[link_name = "\u{1}_mrb_float_read"]
    pub fn mrb_float_read(
        arg1: *const ::std::os::raw::c_char,
        arg2: *mut *mut ::std::os::raw::c_char,
    ) -> f64;
}
pub type mrb_float = f64;
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum mrb_vtype {
    MRB_TT_FALSE = 0,
    MRB_TT_FREE = 1,
    MRB_TT_TRUE = 2,
    MRB_TT_FIXNUM = 3,
    MRB_TT_SYMBOL = 4,
    MRB_TT_UNDEF = 5,
    MRB_TT_FLOAT = 6,
    MRB_TT_CPTR = 7,
    MRB_TT_OBJECT = 8,
    MRB_TT_CLASS = 9,
    MRB_TT_MODULE = 10,
    MRB_TT_ICLASS = 11,
    MRB_TT_SCLASS = 12,
    MRB_TT_PROC = 13,
    MRB_TT_ARRAY = 14,
    MRB_TT_HASH = 15,
    MRB_TT_STRING = 16,
    MRB_TT_RANGE = 17,
    MRB_TT_EXCEPTION = 18,
    MRB_TT_FILE = 19,
    MRB_TT_ENV = 20,
    MRB_TT_DATA = 21,
    MRB_TT_FIBER = 22,
    MRB_TT_ISTRUCT = 23,
    MRB_TT_BREAK = 24,
    MRB_TT_MAXDEFINE = 25,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct RBasic {
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u32>,
    pub c: *mut RClass,
    pub gcnext: *mut RBasic,
}
impl RBasic {
    #[inline]
    pub fn tt(&self) -> mrb_vtype {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 8u8) as u32) }
    }
    #[inline]
    pub fn set_tt(&mut self, val: mrb_vtype) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn color(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 3u8) as u32) }
    }
    #[inline]
    pub fn set_color(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn flags(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 21u8) as u32) }
    }
    #[inline]
    pub fn set_flags(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(11usize, 21u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        tt: mrb_vtype,
        color: u32,
        flags: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize], u32> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u32> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 8u8, {
            let tt: u32 = unsafe { ::std::mem::transmute(tt) };
            tt as u64
        });
        __bindgen_bitfield_unit.set(8usize, 3u8, {
            let color: u32 = unsafe { ::std::mem::transmute(color) };
            color as u64
        });
        __bindgen_bitfield_unit.set(11usize, 21u8, {
            let flags: u32 = unsafe { ::std::mem::transmute(flags) };
            flags as u64
        });
        __bindgen_bitfield_unit
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct RObject {
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u32>,
    pub c: *mut RClass,
    pub gcnext: *mut RBasic,
    pub iv: *mut iv_tbl,
}
impl RObject {
    #[inline]
    pub fn tt(&self) -> mrb_vtype {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 8u8) as u32) }
    }
    #[inline]
    pub fn set_tt(&mut self, val: mrb_vtype) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn color(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 3u8) as u32) }
    }
    #[inline]
    pub fn set_color(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn flags(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 21u8) as u32) }
    }
    #[inline]
    pub fn set_flags(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(11usize, 21u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        tt: mrb_vtype,
        color: u32,
        flags: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize], u32> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u32> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 8u8, {
            let tt: u32 = unsafe { ::std::mem::transmute(tt) };
            tt as u64
        });
        __bindgen_bitfield_unit.set(8usize, 3u8, {
            let color: u32 = unsafe { ::std::mem::transmute(color) };
            color as u64
        });
        __bindgen_bitfield_unit.set(11usize, 21u8, {
            let flags: u32 = unsafe { ::std::mem::transmute(flags) };
            flags as u64
        });
        __bindgen_bitfield_unit
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct RFiber {
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u32>,
    pub c: *mut RClass,
    pub gcnext: *mut RBasic,
    pub cxt: *mut mrb_context,
}
impl RFiber {
    #[inline]
    pub fn tt(&self) -> mrb_vtype {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 8u8) as u32) }
    }
    #[inline]
    pub fn set_tt(&mut self, val: mrb_vtype) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn color(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 3u8) as u32) }
    }
    #[inline]
    pub fn set_color(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn flags(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 21u8) as u32) }
    }
    #[inline]
    pub fn set_flags(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(11usize, 21u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        tt: mrb_vtype,
        color: u32,
        flags: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize], u32> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u32> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 8u8, {
            let tt: u32 = unsafe { ::std::mem::transmute(tt) };
            tt as u64
        });
        __bindgen_bitfield_unit.set(8usize, 3u8, {
            let color: u32 = unsafe { ::std::mem::transmute(color) };
            color as u64
        });
        __bindgen_bitfield_unit.set(11usize, 21u8, {
            let flags: u32 = unsafe { ::std::mem::transmute(flags) };
            flags as u64
        });
        __bindgen_bitfield_unit
    }
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct mrb_value {
    pub value: mrb_value__bindgen_ty_1,
    pub tt: mrb_vtype,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union mrb_value__bindgen_ty_1 {
    pub f: mrb_float,
    pub p: *mut ::std::os::raw::c_void,
    pub i: mrb_int,
    pub sym: mrb_sym,
    _bindgen_union_align: u64,
}
pub type mrb_each_object_callback = ::std::option::Option<
    unsafe extern "C" fn(
        mrb: *mut mrb_state,
        obj: *mut RBasic,
        data: *mut ::std::os::raw::c_void,
    ) -> ::std::os::raw::c_int,
>;
extern "C" {
    #[link_name = "\u{1}_mrb_objspace_each_objects"]
    pub fn mrb_objspace_each_objects(
        mrb: *mut mrb_state,
        callback: mrb_each_object_callback,
        data: *mut ::std::os::raw::c_void,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_free_context"]
    pub fn mrb_free_context(mrb: *mut mrb_state, c: *mut mrb_context);
}
pub const mrb_gc_state_MRB_GC_STATE_ROOT: mrb_gc_state = 0;
pub const mrb_gc_state_MRB_GC_STATE_MARK: mrb_gc_state = 1;
pub const mrb_gc_state_MRB_GC_STATE_SWEEP: mrb_gc_state = 2;
pub type mrb_gc_state = u32;
#[repr(C)]
#[derive(Debug)]
pub struct mrb_heap_page {
    pub freelist: *mut RBasic,
    pub prev: *mut mrb_heap_page,
    pub next: *mut mrb_heap_page,
    pub free_next: *mut mrb_heap_page,
    pub free_prev: *mut mrb_heap_page,
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,
    pub objects: __IncompleteArrayField<*mut ::std::os::raw::c_void>,
    pub __bindgen_padding_0: [u8; 7usize],
}
impl mrb_heap_page {
    #[inline]
    pub fn old(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_old(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(old: mrb_bool) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let old: u8 = unsafe { ::std::mem::transmute(old) };
            old as u64
        });
        __bindgen_bitfield_unit
    }
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_gc {
    pub heaps: *mut mrb_heap_page,
    pub sweeps: *mut mrb_heap_page,
    pub free_heaps: *mut mrb_heap_page,
    pub live: usize,
    pub arena: *mut *mut RBasic,
    pub arena_capa: ::std::os::raw::c_int,
    pub arena_idx: ::std::os::raw::c_int,
    pub state: mrb_gc_state,
    pub current_white_part: ::std::os::raw::c_int,
    pub gray_list: *mut RBasic,
    pub atomic_gray_list: *mut RBasic,
    pub live_after_mark: usize,
    pub threshold: usize,
    pub interval_ratio: ::std::os::raw::c_int,
    pub step_ratio: ::std::os::raw::c_int,
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,
    pub majorgc_old_threshold: usize,
}
impl mrb_gc {
    #[inline]
    pub fn iterating(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_iterating(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn disabled(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_disabled(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(1usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn full(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_full(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(2usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn generational(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_generational(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(3usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn out_of_memory(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_out_of_memory(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(4usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        iterating: mrb_bool,
        disabled: mrb_bool,
        full: mrb_bool,
        generational: mrb_bool,
        out_of_memory: mrb_bool,
    ) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let iterating: u8 = unsafe { ::std::mem::transmute(iterating) };
            iterating as u64
        });
        __bindgen_bitfield_unit.set(1usize, 1u8, {
            let disabled: u8 = unsafe { ::std::mem::transmute(disabled) };
            disabled as u64
        });
        __bindgen_bitfield_unit.set(2usize, 1u8, {
            let full: u8 = unsafe { ::std::mem::transmute(full) };
            full as u64
        });
        __bindgen_bitfield_unit.set(3usize, 1u8, {
            let generational: u8 = unsafe { ::std::mem::transmute(generational) };
            generational as u64
        });
        __bindgen_bitfield_unit.set(4usize, 1u8, {
            let out_of_memory: u8 = unsafe { ::std::mem::transmute(out_of_memory) };
            out_of_memory as u64
        });
        __bindgen_bitfield_unit
    }
}
extern "C" {
    #[link_name = "\u{1}_mrb_object_dead_p"]
    pub fn mrb_object_dead_p(mrb: *mut mrb_state, object: *mut RBasic) -> mrb_bool;
}
pub type mrb_code = u8;
pub type mrb_aspec = u32;
pub type mrb_allocf = ::std::option::Option<
    unsafe extern "C" fn(
        mrb: *mut mrb_state,
        arg1: *mut ::std::os::raw::c_void,
        arg2: usize,
        ud: *mut ::std::os::raw::c_void,
    ) -> *mut ::std::os::raw::c_void,
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_callinfo {
    pub mid: mrb_sym,
    pub proc_: *mut RProc,
    pub stackent: *mut mrb_value,
    pub ridx: u16,
    pub epos: u16,
    pub env: *mut REnv,
    pub pc: *mut mrb_code,
    pub err: *mut mrb_code,
    pub argc: ::std::os::raw::c_int,
    pub acc: ::std::os::raw::c_int,
    pub target_class: *mut RClass,
}
pub const mrb_fiber_state_MRB_FIBER_CREATED: mrb_fiber_state = 0;
pub const mrb_fiber_state_MRB_FIBER_RUNNING: mrb_fiber_state = 1;
pub const mrb_fiber_state_MRB_FIBER_RESUMED: mrb_fiber_state = 2;
pub const mrb_fiber_state_MRB_FIBER_SUSPENDED: mrb_fiber_state = 3;
pub const mrb_fiber_state_MRB_FIBER_TRANSFERRED: mrb_fiber_state = 4;
pub const mrb_fiber_state_MRB_FIBER_TERMINATED: mrb_fiber_state = 5;
pub type mrb_fiber_state = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_context {
    pub prev: *mut mrb_context,
    pub stack: *mut mrb_value,
    pub stbase: *mut mrb_value,
    pub stend: *mut mrb_value,
    pub ci: *mut mrb_callinfo,
    pub cibase: *mut mrb_callinfo,
    pub ciend: *mut mrb_callinfo,
    pub rescue: *mut u16,
    pub rsize: u16,
    pub ensure: *mut *mut RProc,
    pub esize: u16,
    pub eidx: u16,
    pub status: mrb_fiber_state,
    pub vmexec: mrb_bool,
    pub fib: *mut RFiber,
}
pub type mrb_func_t =
    ::std::option::Option<unsafe extern "C" fn(mrb: *mut mrb_state, arg1: mrb_value) -> mrb_value>;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct mrb_method_t {
    pub func_p: mrb_bool,
    pub __bindgen_anon_1: mrb_method_t__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union mrb_method_t__bindgen_ty_1 {
    pub proc_: *mut RProc,
    pub func: mrb_func_t,
    _bindgen_union_align: u64,
}
pub type mrb_atexit_func = ::std::option::Option<unsafe extern "C" fn(arg1: *mut mrb_state)>;
#[repr(C)]
#[derive(Copy, Clone)]
pub struct mrb_state {
    pub jmp: *mut mrb_jmpbuf,
    pub allocf: mrb_allocf,
    pub allocf_ud: *mut ::std::os::raw::c_void,
    pub c: *mut mrb_context,
    pub root_c: *mut mrb_context,
    pub globals: *mut iv_tbl,
    pub exc: *mut RObject,
    pub top_self: *mut RObject,
    pub object_class: *mut RClass,
    pub class_class: *mut RClass,
    pub module_class: *mut RClass,
    pub proc_class: *mut RClass,
    pub string_class: *mut RClass,
    pub array_class: *mut RClass,
    pub hash_class: *mut RClass,
    pub range_class: *mut RClass,
    pub float_class: *mut RClass,
    pub fixnum_class: *mut RClass,
    pub true_class: *mut RClass,
    pub false_class: *mut RClass,
    pub nil_class: *mut RClass,
    pub symbol_class: *mut RClass,
    pub kernel_module: *mut RClass,
    pub mems: *mut alloca_header,
    pub gc: mrb_gc,
    pub symidx: mrb_sym,
    pub symtbl: *mut symbol_name,
    pub symhash: [mrb_sym; 256usize],
    pub symcapa: usize,
    pub symbuf: [::std::os::raw::c_char; 8usize],
    pub eException_class: *mut RClass,
    pub eStandardError_class: *mut RClass,
    pub nomem_err: *mut RObject,
    pub stack_err: *mut RObject,
    pub ud: *mut ::std::os::raw::c_void,
    pub atexit_stack: *mut mrb_atexit_func,
    pub atexit_stack_len: u16,
    pub ecall_nest: u16,
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_class"]
    pub fn mrb_define_class(
        mrb: *mut mrb_state,
        name: *const ::std::os::raw::c_char,
        super_: *mut RClass,
    ) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_module"]
    pub fn mrb_define_module(
        arg1: *mut mrb_state,
        arg2: *const ::std::os::raw::c_char,
    ) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_singleton_class"]
    pub fn mrb_singleton_class(arg1: *mut mrb_state, arg2: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_include_module"]
    pub fn mrb_include_module(arg1: *mut mrb_state, arg2: *mut RClass, arg3: *mut RClass);
}
extern "C" {
    #[link_name = "\u{1}_mrb_prepend_module"]
    pub fn mrb_prepend_module(arg1: *mut mrb_state, arg2: *mut RClass, arg3: *mut RClass);
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_method"]
    pub fn mrb_define_method(
        mrb: *mut mrb_state,
        cla: *mut RClass,
        name: *const ::std::os::raw::c_char,
        func: mrb_func_t,
        aspec: mrb_aspec,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_class_method"]
    pub fn mrb_define_class_method(
        arg1: *mut mrb_state,
        arg2: *mut RClass,
        arg3: *const ::std::os::raw::c_char,
        arg4: mrb_func_t,
        arg5: mrb_aspec,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_singleton_method"]
    pub fn mrb_define_singleton_method(
        arg1: *mut mrb_state,
        arg2: *mut RObject,
        arg3: *const ::std::os::raw::c_char,
        arg4: mrb_func_t,
        arg5: mrb_aspec,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_module_function"]
    pub fn mrb_define_module_function(
        arg1: *mut mrb_state,
        arg2: *mut RClass,
        arg3: *const ::std::os::raw::c_char,
        arg4: mrb_func_t,
        arg5: mrb_aspec,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_const"]
    pub fn mrb_define_const(
        arg1: *mut mrb_state,
        arg2: *mut RClass,
        name: *const ::std::os::raw::c_char,
        arg3: mrb_value,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_undef_method"]
    pub fn mrb_undef_method(
        arg1: *mut mrb_state,
        arg2: *mut RClass,
        arg3: *const ::std::os::raw::c_char,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_undef_method_id"]
    pub fn mrb_undef_method_id(arg1: *mut mrb_state, arg2: *mut RClass, arg3: mrb_sym);
}
extern "C" {
    #[link_name = "\u{1}_mrb_undef_class_method"]
    pub fn mrb_undef_class_method(
        arg1: *mut mrb_state,
        arg2: *mut RClass,
        arg3: *const ::std::os::raw::c_char,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_new"]
    pub fn mrb_obj_new(
        mrb: *mut mrb_state,
        c: *mut RClass,
        argc: mrb_int,
        argv: *const mrb_value,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_class_new"]
    pub fn mrb_class_new(mrb: *mut mrb_state, super_: *mut RClass) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_module_new"]
    pub fn mrb_module_new(mrb: *mut mrb_state) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_class_defined"]
    pub fn mrb_class_defined(mrb: *mut mrb_state, name: *const ::std::os::raw::c_char) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_class_get"]
    pub fn mrb_class_get(mrb: *mut mrb_state, name: *const ::std::os::raw::c_char) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_exc_get"]
    pub fn mrb_exc_get(mrb: *mut mrb_state, name: *const ::std::os::raw::c_char) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_class_defined_under"]
    pub fn mrb_class_defined_under(
        mrb: *mut mrb_state,
        outer: *mut RClass,
        name: *const ::std::os::raw::c_char,
    ) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_class_get_under"]
    pub fn mrb_class_get_under(
        mrb: *mut mrb_state,
        outer: *mut RClass,
        name: *const ::std::os::raw::c_char,
    ) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_module_get"]
    pub fn mrb_module_get(mrb: *mut mrb_state, name: *const ::std::os::raw::c_char) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_module_get_under"]
    pub fn mrb_module_get_under(
        mrb: *mut mrb_state,
        outer: *mut RClass,
        name: *const ::std::os::raw::c_char,
    ) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_notimplement"]
    pub fn mrb_notimplement(arg1: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_notimplement_m"]
    pub fn mrb_notimplement_m(arg1: *mut mrb_state, arg2: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_dup"]
    pub fn mrb_obj_dup(mrb: *mut mrb_state, obj: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_respond_to"]
    pub fn mrb_obj_respond_to(mrb: *mut mrb_state, c: *mut RClass, mid: mrb_sym) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_class_under"]
    pub fn mrb_define_class_under(
        mrb: *mut mrb_state,
        outer: *mut RClass,
        name: *const ::std::os::raw::c_char,
        super_: *mut RClass,
    ) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_module_under"]
    pub fn mrb_define_module_under(
        mrb: *mut mrb_state,
        outer: *mut RClass,
        name: *const ::std::os::raw::c_char,
    ) -> *mut RClass;
}
pub type mrb_args_format = *const ::std::os::raw::c_char;
extern "C" {
    #[link_name = "\u{1}_mrb_get_args"]
    pub fn mrb_get_args(mrb: *mut mrb_state, format: mrb_args_format, ...) -> mrb_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_get_argc"]
    pub fn mrb_get_argc(mrb: *mut mrb_state) -> mrb_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_get_argv"]
    pub fn mrb_get_argv(mrb: *mut mrb_state) -> *mut mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_funcall"]
    pub fn mrb_funcall(
        arg1: *mut mrb_state,
        arg2: mrb_value,
        arg3: *const ::std::os::raw::c_char,
        arg4: mrb_int,
        ...
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_funcall_argv"]
    pub fn mrb_funcall_argv(
        arg1: *mut mrb_state,
        arg2: mrb_value,
        arg3: mrb_sym,
        arg4: mrb_int,
        arg5: *const mrb_value,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_funcall_with_block"]
    pub fn mrb_funcall_with_block(
        arg1: *mut mrb_state,
        arg2: mrb_value,
        arg3: mrb_sym,
        arg4: mrb_int,
        arg5: *const mrb_value,
        arg6: mrb_value,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_intern_cstr"]
    pub fn mrb_intern_cstr(arg1: *mut mrb_state, arg2: *const ::std::os::raw::c_char) -> mrb_sym;
}
extern "C" {
    #[link_name = "\u{1}_mrb_intern"]
    pub fn mrb_intern(
        arg1: *mut mrb_state,
        arg2: *const ::std::os::raw::c_char,
        arg3: usize,
    ) -> mrb_sym;
}
extern "C" {
    #[link_name = "\u{1}_mrb_intern_static"]
    pub fn mrb_intern_static(
        arg1: *mut mrb_state,
        arg2: *const ::std::os::raw::c_char,
        arg3: usize,
    ) -> mrb_sym;
}
extern "C" {
    #[link_name = "\u{1}_mrb_intern_str"]
    pub fn mrb_intern_str(arg1: *mut mrb_state, arg2: mrb_value) -> mrb_sym;
}
extern "C" {
    #[link_name = "\u{1}_mrb_check_intern_cstr"]
    pub fn mrb_check_intern_cstr(
        arg1: *mut mrb_state,
        arg2: *const ::std::os::raw::c_char,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_check_intern"]
    pub fn mrb_check_intern(
        arg1: *mut mrb_state,
        arg2: *const ::std::os::raw::c_char,
        arg3: usize,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_check_intern_str"]
    pub fn mrb_check_intern_str(arg1: *mut mrb_state, arg2: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sym2name"]
    pub fn mrb_sym2name(arg1: *mut mrb_state, arg2: mrb_sym) -> *const ::std::os::raw::c_char;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sym2name_len"]
    pub fn mrb_sym2name_len(
        arg1: *mut mrb_state,
        arg2: mrb_sym,
        arg3: *mut mrb_int,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sym2str"]
    pub fn mrb_sym2str(arg1: *mut mrb_state, arg2: mrb_sym) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_malloc"]
    pub fn mrb_malloc(arg1: *mut mrb_state, arg2: usize) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    #[link_name = "\u{1}_mrb_calloc"]
    pub fn mrb_calloc(
        arg1: *mut mrb_state,
        arg2: usize,
        arg3: usize,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    #[link_name = "\u{1}_mrb_realloc"]
    pub fn mrb_realloc(
        arg1: *mut mrb_state,
        arg2: *mut ::std::os::raw::c_void,
        arg3: usize,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    #[link_name = "\u{1}_mrb_realloc_simple"]
    pub fn mrb_realloc_simple(
        arg1: *mut mrb_state,
        arg2: *mut ::std::os::raw::c_void,
        arg3: usize,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    #[link_name = "\u{1}_mrb_malloc_simple"]
    pub fn mrb_malloc_simple(arg1: *mut mrb_state, arg2: usize) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_alloc"]
    pub fn mrb_obj_alloc(arg1: *mut mrb_state, arg2: mrb_vtype, arg3: *mut RClass) -> *mut RBasic;
}
extern "C" {
    #[link_name = "\u{1}_mrb_free"]
    pub fn mrb_free(arg1: *mut mrb_state, arg2: *mut ::std::os::raw::c_void);
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_new"]
    pub fn mrb_str_new(
        mrb: *mut mrb_state,
        p: *const ::std::os::raw::c_char,
        len: usize,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_new_cstr"]
    pub fn mrb_str_new_cstr(arg1: *mut mrb_state, arg2: *const ::std::os::raw::c_char)
        -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_new_static"]
    pub fn mrb_str_new_static(
        mrb: *mut mrb_state,
        p: *const ::std::os::raw::c_char,
        len: usize,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_open"]
    pub fn mrb_open() -> *mut mrb_state;
}
extern "C" {
    #[link_name = "\u{1}_mrb_open_allocf"]
    pub fn mrb_open_allocf(f: mrb_allocf, ud: *mut ::std::os::raw::c_void) -> *mut mrb_state;
}
extern "C" {
    #[link_name = "\u{1}_mrb_open_core"]
    pub fn mrb_open_core(f: mrb_allocf, ud: *mut ::std::os::raw::c_void) -> *mut mrb_state;
}
extern "C" {
    #[link_name = "\u{1}_mrb_close"]
    pub fn mrb_close(mrb: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_default_allocf"]
    pub fn mrb_default_allocf(
        arg1: *mut mrb_state,
        arg2: *mut ::std::os::raw::c_void,
        arg3: usize,
        arg4: *mut ::std::os::raw::c_void,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    #[link_name = "\u{1}_mrb_top_self"]
    pub fn mrb_top_self(arg1: *mut mrb_state) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_run"]
    pub fn mrb_run(arg1: *mut mrb_state, arg2: *mut RProc, arg3: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_top_run"]
    pub fn mrb_top_run(
        arg1: *mut mrb_state,
        arg2: *mut RProc,
        arg3: mrb_value,
        arg4: ::std::os::raw::c_uint,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_vm_run"]
    pub fn mrb_vm_run(
        arg1: *mut mrb_state,
        arg2: *mut RProc,
        arg3: mrb_value,
        arg4: ::std::os::raw::c_uint,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_vm_exec"]
    pub fn mrb_vm_exec(arg1: *mut mrb_state, arg2: *mut RProc, arg3: *mut mrb_code) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_p"]
    pub fn mrb_p(arg1: *mut mrb_state, arg2: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_id"]
    pub fn mrb_obj_id(obj: mrb_value) -> mrb_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_to_sym"]
    pub fn mrb_obj_to_sym(mrb: *mut mrb_state, name: mrb_value) -> mrb_sym;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_eq"]
    pub fn mrb_obj_eq(arg1: *mut mrb_state, arg2: mrb_value, arg3: mrb_value) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_equal"]
    pub fn mrb_obj_equal(arg1: *mut mrb_state, arg2: mrb_value, arg3: mrb_value) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_equal"]
    pub fn mrb_equal(mrb: *mut mrb_state, obj1: mrb_value, obj2: mrb_value) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_convert_to_integer"]
    pub fn mrb_convert_to_integer(mrb: *mut mrb_state, val: mrb_value, base: mrb_int) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_Integer"]
    pub fn mrb_Integer(mrb: *mut mrb_state, val: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_Float"]
    pub fn mrb_Float(mrb: *mut mrb_state, val: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_inspect"]
    pub fn mrb_inspect(mrb: *mut mrb_state, obj: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_eql"]
    pub fn mrb_eql(mrb: *mut mrb_state, obj1: mrb_value, obj2: mrb_value) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_garbage_collect"]
    pub fn mrb_garbage_collect(arg1: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_full_gc"]
    pub fn mrb_full_gc(arg1: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_incremental_gc"]
    pub fn mrb_incremental_gc(arg1: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_mark"]
    pub fn mrb_gc_mark(arg1: *mut mrb_state, arg2: *mut RBasic);
}
extern "C" {
    #[link_name = "\u{1}_mrb_field_write_barrier"]
    pub fn mrb_field_write_barrier(arg1: *mut mrb_state, arg2: *mut RBasic, arg3: *mut RBasic);
}
extern "C" {
    #[link_name = "\u{1}_mrb_write_barrier"]
    pub fn mrb_write_barrier(arg1: *mut mrb_state, arg2: *mut RBasic);
}
extern "C" {
    #[link_name = "\u{1}_mrb_check_convert_type"]
    pub fn mrb_check_convert_type(
        mrb: *mut mrb_state,
        val: mrb_value,
        type_: mrb_vtype,
        tname: *const ::std::os::raw::c_char,
        method: *const ::std::os::raw::c_char,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_any_to_s"]
    pub fn mrb_any_to_s(mrb: *mut mrb_state, obj: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_classname"]
    pub fn mrb_obj_classname(mrb: *mut mrb_state, obj: mrb_value) -> *const ::std::os::raw::c_char;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_class"]
    pub fn mrb_obj_class(mrb: *mut mrb_state, obj: mrb_value) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_class_path"]
    pub fn mrb_class_path(mrb: *mut mrb_state, c: *mut RClass) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_convert_type"]
    pub fn mrb_convert_type(
        mrb: *mut mrb_state,
        val: mrb_value,
        type_: mrb_vtype,
        tname: *const ::std::os::raw::c_char,
        method: *const ::std::os::raw::c_char,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_is_kind_of"]
    pub fn mrb_obj_is_kind_of(mrb: *mut mrb_state, obj: mrb_value, c: *mut RClass) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_inspect"]
    pub fn mrb_obj_inspect(mrb: *mut mrb_state, self_: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_clone"]
    pub fn mrb_obj_clone(mrb: *mut mrb_state, self_: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_exc_new"]
    pub fn mrb_exc_new(
        mrb: *mut mrb_state,
        c: *mut RClass,
        ptr: *const ::std::os::raw::c_char,
        len: usize,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_exc_raise"]
    pub fn mrb_exc_raise(mrb: *mut mrb_state, exc: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_raise"]
    pub fn mrb_raise(mrb: *mut mrb_state, c: *mut RClass, msg: *const ::std::os::raw::c_char);
}
extern "C" {
    #[link_name = "\u{1}_mrb_raisef"]
    pub fn mrb_raisef(mrb: *mut mrb_state, c: *mut RClass, fmt: *const ::std::os::raw::c_char, ...);
}
extern "C" {
    #[link_name = "\u{1}_mrb_name_error"]
    pub fn mrb_name_error(
        mrb: *mut mrb_state,
        id: mrb_sym,
        fmt: *const ::std::os::raw::c_char,
        ...
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_frozen_error"]
    pub fn mrb_frozen_error(mrb: *mut mrb_state, frozen_obj: *mut ::std::os::raw::c_void);
}
extern "C" {
    #[link_name = "\u{1}_mrb_warn"]
    pub fn mrb_warn(mrb: *mut mrb_state, fmt: *const ::std::os::raw::c_char, ...);
}
extern "C" {
    #[link_name = "\u{1}_mrb_bug"]
    pub fn mrb_bug(mrb: *mut mrb_state, fmt: *const ::std::os::raw::c_char, ...);
}
extern "C" {
    #[link_name = "\u{1}_mrb_print_backtrace"]
    pub fn mrb_print_backtrace(mrb: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_print_error"]
    pub fn mrb_print_error(mrb: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_vformat"]
    pub fn mrb_vformat(
        mrb: *mut mrb_state,
        format: *const ::std::os::raw::c_char,
        ap: *mut __va_list_tag,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_yield"]
    pub fn mrb_yield(mrb: *mut mrb_state, b: mrb_value, arg: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_yield_argv"]
    pub fn mrb_yield_argv(
        mrb: *mut mrb_state,
        b: mrb_value,
        argc: mrb_int,
        argv: *const mrb_value,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_yield_with_class"]
    pub fn mrb_yield_with_class(
        mrb: *mut mrb_state,
        b: mrb_value,
        argc: mrb_int,
        argv: *const mrb_value,
        self_: mrb_value,
        c: *mut RClass,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_yield_cont"]
    pub fn mrb_yield_cont(
        mrb: *mut mrb_state,
        b: mrb_value,
        self_: mrb_value,
        argc: mrb_int,
        argv: *const mrb_value,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_protect"]
    pub fn mrb_gc_protect(mrb: *mut mrb_state, obj: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_register"]
    pub fn mrb_gc_register(mrb: *mut mrb_state, obj: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_unregister"]
    pub fn mrb_gc_unregister(mrb: *mut mrb_state, obj: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_to_int"]
    pub fn mrb_to_int(mrb: *mut mrb_state, val: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_to_str"]
    pub fn mrb_to_str(mrb: *mut mrb_state, val: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_check_type"]
    pub fn mrb_check_type(mrb: *mut mrb_state, x: mrb_value, t: mrb_vtype);
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_alias"]
    pub fn mrb_define_alias(
        mrb: *mut mrb_state,
        c: *mut RClass,
        a: *const ::std::os::raw::c_char,
        b: *const ::std::os::raw::c_char,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_class_name"]
    pub fn mrb_class_name(mrb: *mut mrb_state, klass: *mut RClass)
        -> *const ::std::os::raw::c_char;
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_global_const"]
    pub fn mrb_define_global_const(
        mrb: *mut mrb_state,
        name: *const ::std::os::raw::c_char,
        val: mrb_value,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_attr_get"]
    pub fn mrb_attr_get(mrb: *mut mrb_state, obj: mrb_value, id: mrb_sym) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_respond_to"]
    pub fn mrb_respond_to(mrb: *mut mrb_state, obj: mrb_value, mid: mrb_sym) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_is_instance_of"]
    pub fn mrb_obj_is_instance_of(mrb: *mut mrb_state, obj: mrb_value, c: *mut RClass) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_func_basic_p"]
    pub fn mrb_func_basic_p(
        mrb: *mut mrb_state,
        obj: mrb_value,
        mid: mrb_sym,
        func: mrb_func_t,
    ) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_fiber_resume"]
    pub fn mrb_fiber_resume(
        mrb: *mut mrb_state,
        fib: mrb_value,
        argc: mrb_int,
        argv: *const mrb_value,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_fiber_yield"]
    pub fn mrb_fiber_yield(mrb: *mut mrb_state, argc: mrb_int, argv: *const mrb_value)
        -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_fiber_alive_p"]
    pub fn mrb_fiber_alive_p(mrb: *mut mrb_state, fib: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_stack_extend"]
    pub fn mrb_stack_extend(arg1: *mut mrb_state, arg2: mrb_int);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_pool {
    _unused: [u8; 0],
}
extern "C" {
    #[link_name = "\u{1}_mrb_pool_open"]
    pub fn mrb_pool_open(arg1: *mut mrb_state) -> *mut mrb_pool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_pool_close"]
    pub fn mrb_pool_close(arg1: *mut mrb_pool);
}
extern "C" {
    #[link_name = "\u{1}_mrb_pool_alloc"]
    pub fn mrb_pool_alloc(arg1: *mut mrb_pool, arg2: usize) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    #[link_name = "\u{1}_mrb_pool_realloc"]
    pub fn mrb_pool_realloc(
        arg1: *mut mrb_pool,
        arg2: *mut ::std::os::raw::c_void,
        oldlen: usize,
        newlen: usize,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    #[link_name = "\u{1}_mrb_pool_can_realloc"]
    pub fn mrb_pool_can_realloc(
        arg1: *mut mrb_pool,
        arg2: *mut ::std::os::raw::c_void,
        arg3: usize,
    ) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_alloca"]
    pub fn mrb_alloca(mrb: *mut mrb_state, arg1: usize) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    #[link_name = "\u{1}_mrb_state_atexit"]
    pub fn mrb_state_atexit(mrb: *mut mrb_state, func: mrb_atexit_func);
}
extern "C" {
    #[link_name = "\u{1}_mrb_show_version"]
    pub fn mrb_show_version(mrb: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_show_copyright"]
    pub fn mrb_show_copyright(mrb: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_format"]
    pub fn mrb_format(mrb: *mut mrb_state, format: *const ::std::os::raw::c_char, ...)
        -> mrb_value;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_shared_array {
    pub refcnt: ::std::os::raw::c_int,
    pub len: mrb_int,
    pub ptr: *mut mrb_value,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct RArray {
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u32>,
    pub c: *mut RClass,
    pub gcnext: *mut RBasic,
    pub as_: RArray__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union RArray__bindgen_ty_1 {
    pub heap: RArray__bindgen_ty_1__bindgen_ty_1,
    _bindgen_union_align: [u64; 3usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct RArray__bindgen_ty_1__bindgen_ty_1 {
    pub len: mrb_int,
    pub aux: RArray__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
    pub ptr: *mut mrb_value,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union RArray__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
    pub capa: mrb_int,
    pub shared: *mut mrb_shared_array,
    _bindgen_union_align: u64,
}
impl RArray {
    #[inline]
    pub fn tt(&self) -> mrb_vtype {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 8u8) as u32) }
    }
    #[inline]
    pub fn set_tt(&mut self, val: mrb_vtype) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn color(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 3u8) as u32) }
    }
    #[inline]
    pub fn set_color(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn flags(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 21u8) as u32) }
    }
    #[inline]
    pub fn set_flags(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(11usize, 21u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        tt: mrb_vtype,
        color: u32,
        flags: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize], u32> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u32> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 8u8, {
            let tt: u32 = unsafe { ::std::mem::transmute(tt) };
            tt as u64
        });
        __bindgen_bitfield_unit.set(8usize, 3u8, {
            let color: u32 = unsafe { ::std::mem::transmute(color) };
            color as u64
        });
        __bindgen_bitfield_unit.set(11usize, 21u8, {
            let flags: u32 = unsafe { ::std::mem::transmute(flags) };
            flags as u64
        });
        __bindgen_bitfield_unit
    }
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_decref"]
    pub fn mrb_ary_decref(arg1: *mut mrb_state, arg2: *mut mrb_shared_array);
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_modify"]
    pub fn mrb_ary_modify(arg1: *mut mrb_state, arg2: *mut RArray);
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_new_capa"]
    pub fn mrb_ary_new_capa(arg1: *mut mrb_state, arg2: mrb_int) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_new"]
    pub fn mrb_ary_new(mrb: *mut mrb_state) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_new_from_values"]
    pub fn mrb_ary_new_from_values(
        mrb: *mut mrb_state,
        size: mrb_int,
        vals: *const mrb_value,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_assoc_new"]
    pub fn mrb_assoc_new(mrb: *mut mrb_state, car: mrb_value, cdr: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_concat"]
    pub fn mrb_ary_concat(mrb: *mut mrb_state, self_: mrb_value, other: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_splat"]
    pub fn mrb_ary_splat(mrb: *mut mrb_state, value: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_push"]
    pub fn mrb_ary_push(mrb: *mut mrb_state, array: mrb_value, value: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_pop"]
    pub fn mrb_ary_pop(mrb: *mut mrb_state, ary: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_ref"]
    pub fn mrb_ary_ref(mrb: *mut mrb_state, ary: mrb_value, n: mrb_int) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_set"]
    pub fn mrb_ary_set(mrb: *mut mrb_state, ary: mrb_value, n: mrb_int, val: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_replace"]
    pub fn mrb_ary_replace(mrb: *mut mrb_state, self_: mrb_value, other: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_ensure_array_type"]
    pub fn mrb_ensure_array_type(mrb: *mut mrb_state, self_: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_check_array_type"]
    pub fn mrb_check_array_type(mrb: *mut mrb_state, self_: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_unshift"]
    pub fn mrb_ary_unshift(mrb: *mut mrb_state, self_: mrb_value, item: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_entry"]
    pub fn mrb_ary_entry(ary: mrb_value, offset: mrb_int) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_splice"]
    pub fn mrb_ary_splice(
        mrb: *mut mrb_state,
        self_: mrb_value,
        head: mrb_int,
        len: mrb_int,
        rpl: mrb_value,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_shift"]
    pub fn mrb_ary_shift(mrb: *mut mrb_state, self_: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_clear"]
    pub fn mrb_ary_clear(mrb: *mut mrb_state, self_: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_join"]
    pub fn mrb_ary_join(mrb: *mut mrb_state, ary: mrb_value, sep: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ary_resize"]
    pub fn mrb_ary_resize(mrb: *mut mrb_state, ary: mrb_value, new_len: mrb_int) -> mrb_value;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct RClass {
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u32>,
    pub c: *mut RClass,
    pub gcnext: *mut RBasic,
    pub iv: *mut iv_tbl,
    pub mt: *mut kh_mt,
    pub super_: *mut RClass,
}
impl RClass {
    #[inline]
    pub fn tt(&self) -> mrb_vtype {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 8u8) as u32) }
    }
    #[inline]
    pub fn set_tt(&mut self, val: mrb_vtype) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn color(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 3u8) as u32) }
    }
    #[inline]
    pub fn set_color(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn flags(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 21u8) as u32) }
    }
    #[inline]
    pub fn set_flags(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(11usize, 21u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        tt: mrb_vtype,
        color: u32,
        flags: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize], u32> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u32> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 8u8, {
            let tt: u32 = unsafe { ::std::mem::transmute(tt) };
            tt as u64
        });
        __bindgen_bitfield_unit.set(8usize, 3u8, {
            let color: u32 = unsafe { ::std::mem::transmute(color) };
            color as u64
        });
        __bindgen_bitfield_unit.set(11usize, 21u8, {
            let flags: u32 = unsafe { ::std::mem::transmute(flags) };
            flags as u64
        });
        __bindgen_bitfield_unit
    }
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_class_id"]
    pub fn mrb_define_class_id(
        arg1: *mut mrb_state,
        arg2: mrb_sym,
        arg3: *mut RClass,
    ) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_module_id"]
    pub fn mrb_define_module_id(arg1: *mut mrb_state, arg2: mrb_sym) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_vm_define_class"]
    pub fn mrb_vm_define_class(
        arg1: *mut mrb_state,
        arg2: mrb_value,
        arg3: mrb_value,
        arg4: mrb_sym,
    ) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_vm_define_module"]
    pub fn mrb_vm_define_module(
        arg1: *mut mrb_state,
        arg2: mrb_value,
        arg3: mrb_sym,
    ) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_method_raw"]
    pub fn mrb_define_method_raw(
        arg1: *mut mrb_state,
        arg2: *mut RClass,
        arg3: mrb_sym,
        arg4: mrb_method_t,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_define_method_id"]
    pub fn mrb_define_method_id(
        mrb: *mut mrb_state,
        c: *mut RClass,
        mid: mrb_sym,
        func: mrb_func_t,
        aspec: mrb_aspec,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_alias_method"]
    pub fn mrb_alias_method(arg1: *mut mrb_state, c: *mut RClass, a: mrb_sym, b: mrb_sym);
}
extern "C" {
    #[link_name = "\u{1}_mrb_method_search_vm"]
    pub fn mrb_method_search_vm(
        arg1: *mut mrb_state,
        arg2: *mut *mut RClass,
        arg3: mrb_sym,
    ) -> mrb_method_t;
}
extern "C" {
    #[link_name = "\u{1}_mrb_method_search"]
    pub fn mrb_method_search(
        arg1: *mut mrb_state,
        arg2: *mut RClass,
        arg3: mrb_sym,
    ) -> mrb_method_t;
}
extern "C" {
    #[link_name = "\u{1}_mrb_class_real"]
    pub fn mrb_class_real(cl: *mut RClass) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_instance_new"]
    pub fn mrb_instance_new(mrb: *mut mrb_state, cv: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_class_name_class"]
    pub fn mrb_class_name_class(
        arg1: *mut mrb_state,
        arg2: *mut RClass,
        arg3: *mut RClass,
        arg4: mrb_sym,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_class_find_path"]
    pub fn mrb_class_find_path(arg1: *mut mrb_state, arg2: *mut RClass) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_mark_mt"]
    pub fn mrb_gc_mark_mt(arg1: *mut mrb_state, arg2: *mut RClass);
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_mark_mt_size"]
    pub fn mrb_gc_mark_mt_size(arg1: *mut mrb_state, arg2: *mut RClass) -> usize;
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_free_mt"]
    pub fn mrb_gc_free_mt(arg1: *mut mrb_state, arg2: *mut RClass);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrbc_context {
    pub syms: *mut mrb_sym,
    pub slen: ::std::os::raw::c_int,
    pub filename: *mut ::std::os::raw::c_char,
    pub lineno: ::std::os::raw::c_short,
    pub partial_hook: ::std::option::Option<
        unsafe extern "C" fn(arg1: *mut mrb_parser_state) -> ::std::os::raw::c_int,
    >,
    pub partial_data: *mut ::std::os::raw::c_void,
    pub target_class: *mut RClass,
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,
    pub parser_nerr: usize,
}
impl mrbc_context {
    #[inline]
    pub fn capture_errors(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_capture_errors(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn dump_result(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_dump_result(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(1usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn no_exec(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(2usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_no_exec(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(2usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn keep_lv(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(3usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_keep_lv(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(3usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn no_optimize(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(4usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_no_optimize(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(4usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn on_eval(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(5usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_on_eval(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(5usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        capture_errors: mrb_bool,
        dump_result: mrb_bool,
        no_exec: mrb_bool,
        keep_lv: mrb_bool,
        no_optimize: mrb_bool,
        on_eval: mrb_bool,
    ) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let capture_errors: u8 = unsafe { ::std::mem::transmute(capture_errors) };
            capture_errors as u64
        });
        __bindgen_bitfield_unit.set(1usize, 1u8, {
            let dump_result: u8 = unsafe { ::std::mem::transmute(dump_result) };
            dump_result as u64
        });
        __bindgen_bitfield_unit.set(2usize, 1u8, {
            let no_exec: u8 = unsafe { ::std::mem::transmute(no_exec) };
            no_exec as u64
        });
        __bindgen_bitfield_unit.set(3usize, 1u8, {
            let keep_lv: u8 = unsafe { ::std::mem::transmute(keep_lv) };
            keep_lv as u64
        });
        __bindgen_bitfield_unit.set(4usize, 1u8, {
            let no_optimize: u8 = unsafe { ::std::mem::transmute(no_optimize) };
            no_optimize as u64
        });
        __bindgen_bitfield_unit.set(5usize, 1u8, {
            let on_eval: u8 = unsafe { ::std::mem::transmute(on_eval) };
            on_eval as u64
        });
        __bindgen_bitfield_unit
    }
}
extern "C" {
    #[link_name = "\u{1}_mrbc_context_new"]
    pub fn mrbc_context_new(mrb: *mut mrb_state) -> *mut mrbc_context;
}
extern "C" {
    #[link_name = "\u{1}_mrbc_context_free"]
    pub fn mrbc_context_free(mrb: *mut mrb_state, cxt: *mut mrbc_context);
}
extern "C" {
    #[link_name = "\u{1}_mrbc_filename"]
    pub fn mrbc_filename(
        mrb: *mut mrb_state,
        c: *mut mrbc_context,
        s: *const ::std::os::raw::c_char,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    #[link_name = "\u{1}_mrbc_partial_hook"]
    pub fn mrbc_partial_hook(
        mrb: *mut mrb_state,
        c: *mut mrbc_context,
        partial_hook: ::std::option::Option<
            unsafe extern "C" fn(arg1: *mut mrb_parser_state) -> ::std::os::raw::c_int,
        >,
        data: *mut ::std::os::raw::c_void,
    );
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_ast_node {
    pub car: *mut mrb_ast_node,
    pub cdr: *mut mrb_ast_node,
    pub lineno: u16,
    pub filename_index: u16,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)]
pub enum mrb_lex_state_enum {
    EXPR_BEG = 0,
    EXPR_END = 1,
    EXPR_ENDARG = 2,
    EXPR_ENDFN = 3,
    EXPR_ARG = 4,
    EXPR_CMDARG = 5,
    EXPR_MID = 6,
    EXPR_FNAME = 7,
    EXPR_DOT = 8,
    EXPR_CLASS = 9,
    EXPR_VALUE = 10,
    EXPR_MAX_STATE = 11,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_parser_message {
    pub lineno: ::std::os::raw::c_int,
    pub column: ::std::os::raw::c_int,
    pub message: *mut ::std::os::raw::c_char,
}
pub const mrb_string_type_str_not_parsing: mrb_string_type = 0;
pub const mrb_string_type_str_squote: mrb_string_type = 1;
pub const mrb_string_type_str_dquote: mrb_string_type = 3;
pub const mrb_string_type_str_regexp: mrb_string_type = 7;
pub const mrb_string_type_str_sword: mrb_string_type = 41;
pub const mrb_string_type_str_dword: mrb_string_type = 43;
pub const mrb_string_type_str_ssym: mrb_string_type = 17;
pub const mrb_string_type_str_ssymbols: mrb_string_type = 49;
pub const mrb_string_type_str_dsymbols: mrb_string_type = 51;
pub const mrb_string_type_str_heredoc: mrb_string_type = 65;
pub const mrb_string_type_str_xquote: mrb_string_type = 131;
pub type mrb_string_type = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_parser_heredoc_info {
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,
    pub type_: mrb_string_type,
    pub term: *const ::std::os::raw::c_char,
    pub term_len: ::std::os::raw::c_int,
    pub doc: *mut mrb_ast_node,
}
impl mrb_parser_heredoc_info {
    #[inline]
    pub fn allow_indent(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_allow_indent(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn line_head(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(1usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_line_head(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(1usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        allow_indent: mrb_bool,
        line_head: mrb_bool,
    ) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let allow_indent: u8 = unsafe { ::std::mem::transmute(allow_indent) };
            allow_indent as u64
        });
        __bindgen_bitfield_unit.set(1usize, 1u8, {
            let line_head: u8 = unsafe { ::std::mem::transmute(line_head) };
            line_head as u64
        });
        __bindgen_bitfield_unit
    }
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct mrb_parser_state {
    pub mrb: *mut mrb_state,
    pub pool: *mut mrb_pool,
    pub cells: *mut mrb_ast_node,
    pub s: *const ::std::os::raw::c_char,
    pub send: *const ::std::os::raw::c_char,
    pub cxt: *mut mrbc_context,
    pub filename_sym: mrb_sym,
    pub lineno: ::std::os::raw::c_int,
    pub column: ::std::os::raw::c_int,
    pub lstate: mrb_lex_state_enum,
    pub lex_strterm: *mut mrb_ast_node,
    pub cond_stack: ::std::os::raw::c_uint,
    pub cmdarg_stack: ::std::os::raw::c_uint,
    pub paren_nest: ::std::os::raw::c_int,
    pub lpar_beg: ::std::os::raw::c_int,
    pub in_def: ::std::os::raw::c_int,
    pub in_single: ::std::os::raw::c_int,
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 1usize], u8>,
    pub locals: *mut mrb_ast_node,
    pub pb: *mut mrb_ast_node,
    pub tokbuf: *mut ::std::os::raw::c_char,
    pub buf: [::std::os::raw::c_char; 256usize],
    pub tidx: ::std::os::raw::c_int,
    pub tsiz: ::std::os::raw::c_int,
    pub all_heredocs: *mut mrb_ast_node,
    pub heredocs_from_nextline: *mut mrb_ast_node,
    pub parsing_heredoc: *mut mrb_ast_node,
    pub lex_strterm_before_heredoc: *mut mrb_ast_node,
    pub ylval: *mut ::std::os::raw::c_void,
    pub nerr: usize,
    pub nwarn: usize,
    pub tree: *mut mrb_ast_node,
    pub _bitfield_2: __BindgenBitfieldUnit<[u8; 1usize], u8>,
    pub error_buffer: [mrb_parser_message; 10usize],
    pub warn_buffer: [mrb_parser_message; 10usize],
    pub filename_table: *mut mrb_sym,
    pub filename_table_length: u16,
    pub current_filename_index: u16,
    pub jmp: *mut mrb_jmpbuf,
}
impl mrb_parser_state {
    #[inline]
    pub fn cmd_start(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_cmd_start(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(cmd_start: mrb_bool) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let cmd_start: u8 = unsafe { ::std::mem::transmute(cmd_start) };
            cmd_start as u64
        });
        __bindgen_bitfield_unit
    }
    #[inline]
    pub fn no_optimize(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_2.get(0usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_no_optimize(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_2.set(0usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn on_eval(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_2.get(1usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_on_eval(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_2.set(1usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn capture_errors(&self) -> mrb_bool {
        unsafe { ::std::mem::transmute(self._bitfield_2.get(2usize, 1u8) as u8) }
    }
    #[inline]
    pub fn set_capture_errors(&mut self, val: mrb_bool) {
        unsafe {
            let val: u8 = ::std::mem::transmute(val);
            self._bitfield_2.set(2usize, 1u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_2(
        no_optimize: mrb_bool,
        on_eval: mrb_bool,
        capture_errors: mrb_bool,
    ) -> __BindgenBitfieldUnit<[u8; 1usize], u8> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 1usize], u8> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 1u8, {
            let no_optimize: u8 = unsafe { ::std::mem::transmute(no_optimize) };
            no_optimize as u64
        });
        __bindgen_bitfield_unit.set(1usize, 1u8, {
            let on_eval: u8 = unsafe { ::std::mem::transmute(on_eval) };
            on_eval as u64
        });
        __bindgen_bitfield_unit.set(2usize, 1u8, {
            let capture_errors: u8 = unsafe { ::std::mem::transmute(capture_errors) };
            capture_errors as u64
        });
        __bindgen_bitfield_unit
    }
}
extern "C" {
    #[link_name = "\u{1}_mrb_parser_new"]
    pub fn mrb_parser_new(arg1: *mut mrb_state) -> *mut mrb_parser_state;
}
extern "C" {
    #[link_name = "\u{1}_mrb_parser_free"]
    pub fn mrb_parser_free(arg1: *mut mrb_parser_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_parser_parse"]
    pub fn mrb_parser_parse(arg1: *mut mrb_parser_state, arg2: *mut mrbc_context);
}
extern "C" {
    #[link_name = "\u{1}_mrb_parser_set_filename"]
    pub fn mrb_parser_set_filename(
        arg1: *mut mrb_parser_state,
        arg2: *const ::std::os::raw::c_char,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_parser_get_filename"]
    pub fn mrb_parser_get_filename(arg1: *mut mrb_parser_state, idx: u16) -> mrb_sym;
}
extern "C" {
    #[link_name = "\u{1}_mrb_parse_string"]
    pub fn mrb_parse_string(
        arg1: *mut mrb_state,
        arg2: *const ::std::os::raw::c_char,
        arg3: *mut mrbc_context,
    ) -> *mut mrb_parser_state;
}
extern "C" {
    #[link_name = "\u{1}_mrb_parse_nstring"]
    pub fn mrb_parse_nstring(
        arg1: *mut mrb_state,
        arg2: *const ::std::os::raw::c_char,
        arg3: usize,
        arg4: *mut mrbc_context,
    ) -> *mut mrb_parser_state;
}
extern "C" {
    #[link_name = "\u{1}_mrb_generate_code"]
    pub fn mrb_generate_code(arg1: *mut mrb_state, arg2: *mut mrb_parser_state) -> *mut RProc;
}
extern "C" {
    #[link_name = "\u{1}_mrb_load_exec"]
    pub fn mrb_load_exec(
        mrb: *mut mrb_state,
        p: *mut mrb_parser_state,
        c: *mut mrbc_context,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_load_string"]
    pub fn mrb_load_string(mrb: *mut mrb_state, s: *const ::std::os::raw::c_char) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_load_nstring"]
    pub fn mrb_load_nstring(
        mrb: *mut mrb_state,
        s: *const ::std::os::raw::c_char,
        len: usize,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_load_string_cxt"]
    pub fn mrb_load_string_cxt(
        mrb: *mut mrb_state,
        s: *const ::std::os::raw::c_char,
        cxt: *mut mrbc_context,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_load_nstring_cxt"]
    pub fn mrb_load_nstring_cxt(
        mrb: *mut mrb_state,
        s: *const ::std::os::raw::c_char,
        len: usize,
        cxt: *mut mrbc_context,
    ) -> mrb_value;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_data_type {
    pub struct_name: *const ::std::os::raw::c_char,
    pub dfree: ::std::option::Option<
        unsafe extern "C" fn(mrb: *mut mrb_state, arg1: *mut ::std::os::raw::c_void),
    >,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct RData {
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u32>,
    pub c: *mut RClass,
    pub gcnext: *mut RBasic,
    pub iv: *mut iv_tbl,
    pub type_: *const mrb_data_type,
    pub data: *mut ::std::os::raw::c_void,
}
impl RData {
    #[inline]
    pub fn tt(&self) -> mrb_vtype {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 8u8) as u32) }
    }
    #[inline]
    pub fn set_tt(&mut self, val: mrb_vtype) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn color(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 3u8) as u32) }
    }
    #[inline]
    pub fn set_color(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn flags(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 21u8) as u32) }
    }
    #[inline]
    pub fn set_flags(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(11usize, 21u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        tt: mrb_vtype,
        color: u32,
        flags: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize], u32> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u32> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 8u8, {
            let tt: u32 = unsafe { ::std::mem::transmute(tt) };
            tt as u64
        });
        __bindgen_bitfield_unit.set(8usize, 3u8, {
            let color: u32 = unsafe { ::std::mem::transmute(color) };
            color as u64
        });
        __bindgen_bitfield_unit.set(11usize, 21u8, {
            let flags: u32 = unsafe { ::std::mem::transmute(flags) };
            flags as u64
        });
        __bindgen_bitfield_unit
    }
}
extern "C" {
    #[link_name = "\u{1}_mrb_data_object_alloc"]
    pub fn mrb_data_object_alloc(
        mrb: *mut mrb_state,
        klass: *mut RClass,
        datap: *mut ::std::os::raw::c_void,
        type_: *const mrb_data_type,
    ) -> *mut RData;
}
extern "C" {
    #[link_name = "\u{1}_mrb_data_check_type"]
    pub fn mrb_data_check_type(mrb: *mut mrb_state, arg1: mrb_value, arg2: *const mrb_data_type);
}
extern "C" {
    #[link_name = "\u{1}_mrb_data_get_ptr"]
    pub fn mrb_data_get_ptr(
        mrb: *mut mrb_state,
        arg1: mrb_value,
        arg2: *const mrb_data_type,
    ) -> *mut ::std::os::raw::c_void;
}
extern "C" {
    #[link_name = "\u{1}_mrb_data_check_get_ptr"]
    pub fn mrb_data_check_get_ptr(
        mrb: *mut mrb_state,
        arg1: mrb_value,
        arg2: *const mrb_data_type,
    ) -> *mut ::std::os::raw::c_void;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_locals {
    pub name: mrb_sym,
    pub r: u16,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_irep {
    pub nlocals: u16,
    pub nregs: u16,
    pub flags: u8,
    pub iseq: *mut mrb_code,
    pub pool: *mut mrb_value,
    pub syms: *mut mrb_sym,
    pub reps: *mut *mut mrb_irep,
    pub lv: *mut mrb_locals,
    pub debug_info: *mut mrb_irep_debug_info,
    pub ilen: u16,
    pub plen: u16,
    pub slen: u16,
    pub rlen: u16,
    pub refcnt: u32,
}
extern "C" {
    #[link_name = "\u{1}_mrb_add_irep"]
    pub fn mrb_add_irep(mrb: *mut mrb_state) -> *mut mrb_irep;
}
extern "C" {
    #[link_name = "\u{1}_mrb_load_irep"]
    pub fn mrb_load_irep(arg1: *mut mrb_state, arg2: *const u8) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_load_irep_cxt"]
    pub fn mrb_load_irep_cxt(
        arg1: *mut mrb_state,
        arg2: *const u8,
        arg3: *mut mrbc_context,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_irep_free"]
    pub fn mrb_irep_free(arg1: *mut mrb_state, arg2: *mut mrb_irep);
}
extern "C" {
    #[link_name = "\u{1}_mrb_irep_incref"]
    pub fn mrb_irep_incref(arg1: *mut mrb_state, arg2: *mut mrb_irep);
}
extern "C" {
    #[link_name = "\u{1}_mrb_irep_decref"]
    pub fn mrb_irep_decref(arg1: *mut mrb_state, arg2: *mut mrb_irep);
}
extern "C" {
    #[link_name = "\u{1}_mrb_irep_cutref"]
    pub fn mrb_irep_cutref(arg1: *mut mrb_state, arg2: *mut mrb_irep);
}
extern "C" {
    #[link_name = "\u{1}_mrb_irep_remove_lv"]
    pub fn mrb_irep_remove_lv(mrb: *mut mrb_state, irep: *mut mrb_irep);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_insn_data {
    pub insn: u8,
    pub a: u16,
    pub b: u16,
    pub c: u8,
}
extern "C" {
    #[link_name = "\u{1}_mrb_decode_insn"]
    pub fn mrb_decode_insn(pc: *mut mrb_code) -> mrb_insn_data;
}
extern "C" {
    #[link_name = "\u{1}_mrb_dump_irep"]
    pub fn mrb_dump_irep(
        mrb: *mut mrb_state,
        irep: *mut mrb_irep,
        flags: u8,
        bin: *mut *mut u8,
        bin_size: *mut usize,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_read_irep"]
    pub fn mrb_read_irep(arg1: *mut mrb_state, arg2: *const u8) -> *mut mrb_irep;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_fail"]
    pub fn mrb_sys_fail(mrb: *mut mrb_state, mesg: *const ::std::os::raw::c_char);
}
extern "C" {
    #[link_name = "\u{1}_mrb_exc_new_str"]
    pub fn mrb_exc_new_str(mrb: *mut mrb_state, c: *mut RClass, str: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_make_exception"]
    pub fn mrb_make_exception(
        mrb: *mut mrb_state,
        argc: mrb_int,
        argv: *const mrb_value,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_exc_backtrace"]
    pub fn mrb_exc_backtrace(mrb: *mut mrb_state, exc: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_get_backtrace"]
    pub fn mrb_get_backtrace(mrb: *mut mrb_state) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_no_method_error"]
    pub fn mrb_no_method_error(
        mrb: *mut mrb_state,
        id: mrb_sym,
        args: mrb_value,
        fmt: *const ::std::os::raw::c_char,
        ...
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_f_raise"]
    pub fn mrb_f_raise(arg1: *mut mrb_state, arg2: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_protect"]
    pub fn mrb_protect(
        mrb: *mut mrb_state,
        body: mrb_func_t,
        data: mrb_value,
        state: *mut mrb_bool,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ensure"]
    pub fn mrb_ensure(
        mrb: *mut mrb_state,
        body: mrb_func_t,
        b_data: mrb_value,
        ensure: mrb_func_t,
        e_data: mrb_value,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_rescue"]
    pub fn mrb_rescue(
        mrb: *mut mrb_state,
        body: mrb_func_t,
        b_data: mrb_value,
        rescue: mrb_func_t,
        r_data: mrb_value,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_rescue_exceptions"]
    pub fn mrb_rescue_exceptions(
        mrb: *mut mrb_state,
        body: mrb_func_t,
        b_data: mrb_value,
        rescue: mrb_func_t,
        r_data: mrb_value,
        len: mrb_int,
        classes: *mut *mut RClass,
    ) -> mrb_value;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct RHash {
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u32>,
    pub c: *mut RClass,
    pub gcnext: *mut RBasic,
    pub iv: *mut iv_tbl,
    pub ht: *mut htable,
}
impl RHash {
    #[inline]
    pub fn tt(&self) -> mrb_vtype {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 8u8) as u32) }
    }
    #[inline]
    pub fn set_tt(&mut self, val: mrb_vtype) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn color(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 3u8) as u32) }
    }
    #[inline]
    pub fn set_color(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn flags(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 21u8) as u32) }
    }
    #[inline]
    pub fn set_flags(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(11usize, 21u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        tt: mrb_vtype,
        color: u32,
        flags: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize], u32> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u32> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 8u8, {
            let tt: u32 = unsafe { ::std::mem::transmute(tt) };
            tt as u64
        });
        __bindgen_bitfield_unit.set(8usize, 3u8, {
            let color: u32 = unsafe { ::std::mem::transmute(color) };
            color as u64
        });
        __bindgen_bitfield_unit.set(11usize, 21u8, {
            let flags: u32 = unsafe { ::std::mem::transmute(flags) };
            flags as u64
        });
        __bindgen_bitfield_unit
    }
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_new_capa"]
    pub fn mrb_hash_new_capa(arg1: *mut mrb_state, arg2: mrb_int) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ensure_hash_type"]
    pub fn mrb_ensure_hash_type(mrb: *mut mrb_state, hash: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_check_hash_type"]
    pub fn mrb_check_hash_type(mrb: *mut mrb_state, hash: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_new"]
    pub fn mrb_hash_new(mrb: *mut mrb_state) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_set"]
    pub fn mrb_hash_set(mrb: *mut mrb_state, hash: mrb_value, key: mrb_value, val: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_get"]
    pub fn mrb_hash_get(mrb: *mut mrb_state, hash: mrb_value, key: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_fetch"]
    pub fn mrb_hash_fetch(
        mrb: *mut mrb_state,
        hash: mrb_value,
        key: mrb_value,
        def: mrb_value,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_delete_key"]
    pub fn mrb_hash_delete_key(mrb: *mut mrb_state, hash: mrb_value, key: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_keys"]
    pub fn mrb_hash_keys(mrb: *mut mrb_state, hash: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_key_p"]
    pub fn mrb_hash_key_p(mrb: *mut mrb_state, hash: mrb_value, key: mrb_value) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_empty_p"]
    pub fn mrb_hash_empty_p(mrb: *mut mrb_state, self_: mrb_value) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_values"]
    pub fn mrb_hash_values(mrb: *mut mrb_state, hash: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_clear"]
    pub fn mrb_hash_clear(mrb: *mut mrb_state, hash: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_size"]
    pub fn mrb_hash_size(mrb: *mut mrb_state, hash: mrb_value) -> mrb_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_dup"]
    pub fn mrb_hash_dup(mrb: *mut mrb_state, hash: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_hash_merge"]
    pub fn mrb_hash_merge(mrb: *mut mrb_state, hash1: mrb_value, hash2: mrb_value);
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct mrb_hash_value {
    pub v: mrb_value,
    pub n: mrb_int,
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_mark_hash"]
    pub fn mrb_gc_mark_hash(arg1: *mut mrb_state, arg2: *mut RHash);
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_mark_hash_size"]
    pub fn mrb_gc_mark_hash_size(arg1: *mut mrb_state, arg2: *mut RHash) -> usize;
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_free_hash"]
    pub fn mrb_gc_free_hash(arg1: *mut mrb_state, arg2: *mut RHash);
}
pub type mrb_hash_foreach_func = ::std::option::Option<
    unsafe extern "C" fn(
        mrb: *mut mrb_state,
        key: mrb_value,
        val: mrb_value,
        data: *mut ::std::os::raw::c_void,
    ) -> ::std::os::raw::c_int,
>;
extern "C" {
    #[link_name = "\u{1}_mrb_hash_foreach"]
    pub fn mrb_hash_foreach(
        mrb: *mut mrb_state,
        hash: *mut RHash,
        func: mrb_hash_foreach_func,
        p: *mut ::std::os::raw::c_void,
    );
}
pub type khint_t = u32;
extern "C" {
    #[link_name = "\u{1}_mrb_flo_to_fixnum"]
    pub fn mrb_flo_to_fixnum(mrb: *mut mrb_state, val: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_fixnum_to_str"]
    pub fn mrb_fixnum_to_str(mrb: *mut mrb_state, x: mrb_value, base: mrb_int) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_float_to_str"]
    pub fn mrb_float_to_str(
        mrb: *mut mrb_state,
        x: mrb_value,
        fmt: *const ::std::os::raw::c_char,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_to_flo"]
    pub fn mrb_to_flo(mrb: *mut mrb_state, x: mrb_value) -> mrb_float;
}
extern "C" {
    #[link_name = "\u{1}_mrb_fixnum_plus"]
    pub fn mrb_fixnum_plus(mrb: *mut mrb_state, x: mrb_value, y: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_fixnum_minus"]
    pub fn mrb_fixnum_minus(mrb: *mut mrb_state, x: mrb_value, y: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_fixnum_mul"]
    pub fn mrb_fixnum_mul(mrb: *mut mrb_state, x: mrb_value, y: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_num_div"]
    pub fn mrb_num_div(mrb: *mut mrb_state, x: mrb_value, y: mrb_value) -> mrb_value;
}
pub const mrb_insn_OP_NOP: mrb_insn = 0;
pub const mrb_insn_OP_MOVE: mrb_insn = 1;
pub const mrb_insn_OP_LOADL: mrb_insn = 2;
pub const mrb_insn_OP_LOADI: mrb_insn = 3;
pub const mrb_insn_OP_LOADINEG: mrb_insn = 4;
pub const mrb_insn_OP_LOADI__1: mrb_insn = 5;
pub const mrb_insn_OP_LOADI_0: mrb_insn = 6;
pub const mrb_insn_OP_LOADI_1: mrb_insn = 7;
pub const mrb_insn_OP_LOADI_2: mrb_insn = 8;
pub const mrb_insn_OP_LOADI_3: mrb_insn = 9;
pub const mrb_insn_OP_LOADI_4: mrb_insn = 10;
pub const mrb_insn_OP_LOADI_5: mrb_insn = 11;
pub const mrb_insn_OP_LOADI_6: mrb_insn = 12;
pub const mrb_insn_OP_LOADI_7: mrb_insn = 13;
pub const mrb_insn_OP_LOADSYM: mrb_insn = 14;
pub const mrb_insn_OP_LOADNIL: mrb_insn = 15;
pub const mrb_insn_OP_LOADSELF: mrb_insn = 16;
pub const mrb_insn_OP_LOADT: mrb_insn = 17;
pub const mrb_insn_OP_LOADF: mrb_insn = 18;
pub const mrb_insn_OP_GETGV: mrb_insn = 19;
pub const mrb_insn_OP_SETGV: mrb_insn = 20;
pub const mrb_insn_OP_GETSV: mrb_insn = 21;
pub const mrb_insn_OP_SETSV: mrb_insn = 22;
pub const mrb_insn_OP_GETIV: mrb_insn = 23;
pub const mrb_insn_OP_SETIV: mrb_insn = 24;
pub const mrb_insn_OP_GETCV: mrb_insn = 25;
pub const mrb_insn_OP_SETCV: mrb_insn = 26;
pub const mrb_insn_OP_GETCONST: mrb_insn = 27;
pub const mrb_insn_OP_SETCONST: mrb_insn = 28;
pub const mrb_insn_OP_GETMCNST: mrb_insn = 29;
pub const mrb_insn_OP_SETMCNST: mrb_insn = 30;
pub const mrb_insn_OP_GETUPVAR: mrb_insn = 31;
pub const mrb_insn_OP_SETUPVAR: mrb_insn = 32;
pub const mrb_insn_OP_JMP: mrb_insn = 33;
pub const mrb_insn_OP_JMPIF: mrb_insn = 34;
pub const mrb_insn_OP_JMPNOT: mrb_insn = 35;
pub const mrb_insn_OP_JMPNIL: mrb_insn = 36;
pub const mrb_insn_OP_ONERR: mrb_insn = 37;
pub const mrb_insn_OP_EXCEPT: mrb_insn = 38;
pub const mrb_insn_OP_RESCUE: mrb_insn = 39;
pub const mrb_insn_OP_POPERR: mrb_insn = 40;
pub const mrb_insn_OP_RAISE: mrb_insn = 41;
pub const mrb_insn_OP_EPUSH: mrb_insn = 42;
pub const mrb_insn_OP_EPOP: mrb_insn = 43;
pub const mrb_insn_OP_SENDV: mrb_insn = 44;
pub const mrb_insn_OP_SENDVB: mrb_insn = 45;
pub const mrb_insn_OP_SEND: mrb_insn = 46;
pub const mrb_insn_OP_SENDB: mrb_insn = 47;
pub const mrb_insn_OP_CALL: mrb_insn = 48;
pub const mrb_insn_OP_SUPER: mrb_insn = 49;
pub const mrb_insn_OP_ARGARY: mrb_insn = 50;
pub const mrb_insn_OP_ENTER: mrb_insn = 51;
pub const mrb_insn_OP_KEY_P: mrb_insn = 52;
pub const mrb_insn_OP_KEYEND: mrb_insn = 53;
pub const mrb_insn_OP_KARG: mrb_insn = 54;
pub const mrb_insn_OP_RETURN: mrb_insn = 55;
pub const mrb_insn_OP_RETURN_BLK: mrb_insn = 56;
pub const mrb_insn_OP_BREAK: mrb_insn = 57;
pub const mrb_insn_OP_BLKPUSH: mrb_insn = 58;
pub const mrb_insn_OP_ADD: mrb_insn = 59;
pub const mrb_insn_OP_ADDI: mrb_insn = 60;
pub const mrb_insn_OP_SUB: mrb_insn = 61;
pub const mrb_insn_OP_SUBI: mrb_insn = 62;
pub const mrb_insn_OP_MUL: mrb_insn = 63;
pub const mrb_insn_OP_DIV: mrb_insn = 64;
pub const mrb_insn_OP_EQ: mrb_insn = 65;
pub const mrb_insn_OP_LT: mrb_insn = 66;
pub const mrb_insn_OP_LE: mrb_insn = 67;
pub const mrb_insn_OP_GT: mrb_insn = 68;
pub const mrb_insn_OP_GE: mrb_insn = 69;
pub const mrb_insn_OP_ARRAY: mrb_insn = 70;
pub const mrb_insn_OP_ARRAY2: mrb_insn = 71;
pub const mrb_insn_OP_ARYCAT: mrb_insn = 72;
pub const mrb_insn_OP_ARYPUSH: mrb_insn = 73;
pub const mrb_insn_OP_ARYDUP: mrb_insn = 74;
pub const mrb_insn_OP_AREF: mrb_insn = 75;
pub const mrb_insn_OP_ASET: mrb_insn = 76;
pub const mrb_insn_OP_APOST: mrb_insn = 77;
pub const mrb_insn_OP_INTERN: mrb_insn = 78;
pub const mrb_insn_OP_STRING: mrb_insn = 79;
pub const mrb_insn_OP_STRCAT: mrb_insn = 80;
pub const mrb_insn_OP_HASH: mrb_insn = 81;
pub const mrb_insn_OP_HASHADD: mrb_insn = 82;
pub const mrb_insn_OP_HASHCAT: mrb_insn = 83;
pub const mrb_insn_OP_LAMBDA: mrb_insn = 84;
pub const mrb_insn_OP_BLOCK: mrb_insn = 85;
pub const mrb_insn_OP_METHOD: mrb_insn = 86;
pub const mrb_insn_OP_RANGE_INC: mrb_insn = 87;
pub const mrb_insn_OP_RANGE_EXC: mrb_insn = 88;
pub const mrb_insn_OP_OCLASS: mrb_insn = 89;
pub const mrb_insn_OP_CLASS: mrb_insn = 90;
pub const mrb_insn_OP_MODULE: mrb_insn = 91;
pub const mrb_insn_OP_EXEC: mrb_insn = 92;
pub const mrb_insn_OP_DEF: mrb_insn = 93;
pub const mrb_insn_OP_ALIAS: mrb_insn = 94;
pub const mrb_insn_OP_UNDEF: mrb_insn = 95;
pub const mrb_insn_OP_SCLASS: mrb_insn = 96;
pub const mrb_insn_OP_TCLASS: mrb_insn = 97;
pub const mrb_insn_OP_DEBUG: mrb_insn = 98;
pub const mrb_insn_OP_ERR: mrb_insn = 99;
pub const mrb_insn_OP_EXT1: mrb_insn = 100;
pub const mrb_insn_OP_EXT2: mrb_insn = 101;
pub const mrb_insn_OP_EXT3: mrb_insn = 102;
pub const mrb_insn_OP_STOP: mrb_insn = 103;
pub type mrb_insn = u32;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct REnv {
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u32>,
    pub c: *mut RClass,
    pub gcnext: *mut RBasic,
    pub stack: *mut mrb_value,
    pub cxt: *mut mrb_context,
    pub mid: mrb_sym,
}
impl REnv {
    #[inline]
    pub fn tt(&self) -> mrb_vtype {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 8u8) as u32) }
    }
    #[inline]
    pub fn set_tt(&mut self, val: mrb_vtype) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn color(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 3u8) as u32) }
    }
    #[inline]
    pub fn set_color(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn flags(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 21u8) as u32) }
    }
    #[inline]
    pub fn set_flags(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(11usize, 21u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        tt: mrb_vtype,
        color: u32,
        flags: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize], u32> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u32> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 8u8, {
            let tt: u32 = unsafe { ::std::mem::transmute(tt) };
            tt as u64
        });
        __bindgen_bitfield_unit.set(8usize, 3u8, {
            let color: u32 = unsafe { ::std::mem::transmute(color) };
            color as u64
        });
        __bindgen_bitfield_unit.set(11usize, 21u8, {
            let flags: u32 = unsafe { ::std::mem::transmute(flags) };
            flags as u64
        });
        __bindgen_bitfield_unit
    }
}
extern "C" {
    #[link_name = "\u{1}_mrb_env_unshare"]
    pub fn mrb_env_unshare(arg1: *mut mrb_state, arg2: *mut REnv);
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct RProc {
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u32>,
    pub c: *mut RClass,
    pub gcnext: *mut RBasic,
    pub body: RProc__bindgen_ty_1,
    pub upper: *mut RProc,
    pub e: RProc__bindgen_ty_2,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union RProc__bindgen_ty_1 {
    pub irep: *mut mrb_irep,
    pub func: mrb_func_t,
    _bindgen_union_align: u64,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union RProc__bindgen_ty_2 {
    pub target_class: *mut RClass,
    pub env: *mut REnv,
    _bindgen_union_align: u64,
}
impl RProc {
    #[inline]
    pub fn tt(&self) -> mrb_vtype {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 8u8) as u32) }
    }
    #[inline]
    pub fn set_tt(&mut self, val: mrb_vtype) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn color(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 3u8) as u32) }
    }
    #[inline]
    pub fn set_color(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn flags(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 21u8) as u32) }
    }
    #[inline]
    pub fn set_flags(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(11usize, 21u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        tt: mrb_vtype,
        color: u32,
        flags: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize], u32> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u32> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 8u8, {
            let tt: u32 = unsafe { ::std::mem::transmute(tt) };
            tt as u64
        });
        __bindgen_bitfield_unit.set(8usize, 3u8, {
            let color: u32 = unsafe { ::std::mem::transmute(color) };
            color as u64
        });
        __bindgen_bitfield_unit.set(11usize, 21u8, {
            let flags: u32 = unsafe { ::std::mem::transmute(flags) };
            flags as u64
        });
        __bindgen_bitfield_unit
    }
}
extern "C" {
    #[link_name = "\u{1}_mrb_proc_new"]
    pub fn mrb_proc_new(arg1: *mut mrb_state, arg2: *mut mrb_irep) -> *mut RProc;
}
extern "C" {
    #[link_name = "\u{1}_mrb_closure_new"]
    pub fn mrb_closure_new(arg1: *mut mrb_state, arg2: *mut mrb_irep) -> *mut RProc;
}
extern "C" {
    #[link_name = "\u{1}_mrb_proc_new_cfunc"]
    pub fn mrb_proc_new_cfunc(arg1: *mut mrb_state, arg2: mrb_func_t) -> *mut RProc;
}
extern "C" {
    #[link_name = "\u{1}_mrb_closure_new_cfunc"]
    pub fn mrb_closure_new_cfunc(
        mrb: *mut mrb_state,
        func: mrb_func_t,
        nlocals: ::std::os::raw::c_int,
    ) -> *mut RProc;
}
extern "C" {
    #[link_name = "\u{1}_mrb_proc_copy"]
    pub fn mrb_proc_copy(a: *mut RProc, b: *mut RProc);
}
extern "C" {
    #[link_name = "\u{1}_mrb_proc_arity"]
    pub fn mrb_proc_arity(p: *const RProc) -> mrb_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_f_send"]
    pub fn mrb_f_send(mrb: *mut mrb_state, self_: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_proc_new_cfunc_with_env"]
    pub fn mrb_proc_new_cfunc_with_env(
        arg1: *mut mrb_state,
        arg2: mrb_func_t,
        arg3: mrb_int,
        arg4: *const mrb_value,
    ) -> *mut RProc;
}
extern "C" {
    #[link_name = "\u{1}_mrb_proc_cfunc_env_get"]
    pub fn mrb_proc_cfunc_env_get(arg1: *mut mrb_state, arg2: mrb_int) -> mrb_value;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct kh_mt {
    pub n_buckets: khint_t,
    pub size: khint_t,
    pub n_occupied: khint_t,
    pub ed_flags: *mut u8,
    pub keys: *mut mrb_sym,
    pub vals: *mut mrb_method_t,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct mrb_range_edges {
    pub beg: mrb_value,
    pub end: mrb_value,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct RRange {
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u32>,
    pub c: *mut RClass,
    pub gcnext: *mut RBasic,
    pub edges: *mut mrb_range_edges,
    pub excl: mrb_bool,
}
impl RRange {
    #[inline]
    pub fn tt(&self) -> mrb_vtype {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 8u8) as u32) }
    }
    #[inline]
    pub fn set_tt(&mut self, val: mrb_vtype) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn color(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 3u8) as u32) }
    }
    #[inline]
    pub fn set_color(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn flags(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 21u8) as u32) }
    }
    #[inline]
    pub fn set_flags(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(11usize, 21u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        tt: mrb_vtype,
        color: u32,
        flags: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize], u32> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u32> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 8u8, {
            let tt: u32 = unsafe { ::std::mem::transmute(tt) };
            tt as u64
        });
        __bindgen_bitfield_unit.set(8usize, 3u8, {
            let color: u32 = unsafe { ::std::mem::transmute(color) };
            color as u64
        });
        __bindgen_bitfield_unit.set(11usize, 21u8, {
            let flags: u32 = unsafe { ::std::mem::transmute(flags) };
            flags as u64
        });
        __bindgen_bitfield_unit
    }
}
extern "C" {
    #[link_name = "\u{1}_mrb_range_ptr"]
    pub fn mrb_range_ptr(mrb: *mut mrb_state, range: mrb_value) -> *mut RRange;
}
extern "C" {
    #[link_name = "\u{1}_mrb_range_new"]
    pub fn mrb_range_new(
        mrb: *mut mrb_state,
        start: mrb_value,
        end: mrb_value,
        exclude: mrb_bool,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_range_beg_len"]
    pub fn mrb_range_beg_len(
        mrb: *mut mrb_state,
        range: mrb_value,
        begp: *mut mrb_int,
        lenp: *mut mrb_int,
        len: mrb_int,
        trunc: mrb_bool,
    ) -> mrb_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_get_values_at"]
    pub fn mrb_get_values_at(
        mrb: *mut mrb_state,
        obj: mrb_value,
        olen: mrb_int,
        argc: mrb_int,
        argv: *const mrb_value,
        func: ::std::option::Option<
            unsafe extern "C" fn(arg1: *mut mrb_state, arg2: mrb_value, arg3: mrb_int) -> mrb_value,
        >,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_mark_range"]
    pub fn mrb_gc_mark_range(mrb: *mut mrb_state, r: *mut RRange);
}
extern "C" {
    #[link_name = "\u{1}_mrb_digitmap"]
    pub static mut mrb_digitmap: [::std::os::raw::c_char; 0usize];
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct RString {
    pub _bitfield_1: __BindgenBitfieldUnit<[u8; 4usize], u32>,
    pub c: *mut RClass,
    pub gcnext: *mut RBasic,
    pub as_: RString__bindgen_ty_1,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union RString__bindgen_ty_1 {
    pub heap: RString__bindgen_ty_1__bindgen_ty_1,
    pub ary: [::std::os::raw::c_char; 24usize],
    _bindgen_union_align: [u64; 3usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct RString__bindgen_ty_1__bindgen_ty_1 {
    pub len: mrb_int,
    pub aux: RString__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1,
    pub ptr: *mut ::std::os::raw::c_char,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union RString__bindgen_ty_1__bindgen_ty_1__bindgen_ty_1 {
    pub capa: mrb_int,
    pub shared: *mut mrb_shared_string,
    pub fshared: *mut RString,
    _bindgen_union_align: u64,
}
impl RString {
    #[inline]
    pub fn tt(&self) -> mrb_vtype {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(0usize, 8u8) as u32) }
    }
    #[inline]
    pub fn set_tt(&mut self, val: mrb_vtype) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(0usize, 8u8, val as u64)
        }
    }
    #[inline]
    pub fn color(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(8usize, 3u8) as u32) }
    }
    #[inline]
    pub fn set_color(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(8usize, 3u8, val as u64)
        }
    }
    #[inline]
    pub fn flags(&self) -> u32 {
        unsafe { ::std::mem::transmute(self._bitfield_1.get(11usize, 21u8) as u32) }
    }
    #[inline]
    pub fn set_flags(&mut self, val: u32) {
        unsafe {
            let val: u32 = ::std::mem::transmute(val);
            self._bitfield_1.set(11usize, 21u8, val as u64)
        }
    }
    #[inline]
    pub fn new_bitfield_1(
        tt: mrb_vtype,
        color: u32,
        flags: u32,
    ) -> __BindgenBitfieldUnit<[u8; 4usize], u32> {
        let mut __bindgen_bitfield_unit: __BindgenBitfieldUnit<[u8; 4usize], u32> =
            Default::default();
        __bindgen_bitfield_unit.set(0usize, 8u8, {
            let tt: u32 = unsafe { ::std::mem::transmute(tt) };
            tt as u64
        });
        __bindgen_bitfield_unit.set(8usize, 3u8, {
            let color: u32 = unsafe { ::std::mem::transmute(color) };
            color as u64
        });
        __bindgen_bitfield_unit.set(11usize, 21u8, {
            let flags: u32 = unsafe { ::std::mem::transmute(flags) };
            flags as u64
        });
        __bindgen_bitfield_unit
    }
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_strlen"]
    pub fn mrb_str_strlen(arg1: *mut mrb_state, arg2: *mut RString) -> mrb_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_free_str"]
    pub fn mrb_gc_free_str(arg1: *mut mrb_state, arg2: *mut RString);
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_modify"]
    pub fn mrb_str_modify(arg1: *mut mrb_state, arg2: *mut RString);
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_index"]
    pub fn mrb_str_index(
        arg1: *mut mrb_state,
        arg2: mrb_value,
        arg3: *const ::std::os::raw::c_char,
        arg4: mrb_int,
        arg5: mrb_int,
    ) -> mrb_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_concat"]
    pub fn mrb_str_concat(arg1: *mut mrb_state, arg2: mrb_value, arg3: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_plus"]
    pub fn mrb_str_plus(arg1: *mut mrb_state, arg2: mrb_value, arg3: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ptr_to_str"]
    pub fn mrb_ptr_to_str(arg1: *mut mrb_state, arg2: *mut ::std::os::raw::c_void) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_as_string"]
    pub fn mrb_obj_as_string(mrb: *mut mrb_state, obj: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_resize"]
    pub fn mrb_str_resize(mrb: *mut mrb_state, str: mrb_value, len: mrb_int) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_substr"]
    pub fn mrb_str_substr(
        mrb: *mut mrb_state,
        str: mrb_value,
        beg: mrb_int,
        len: mrb_int,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ensure_string_type"]
    pub fn mrb_ensure_string_type(mrb: *mut mrb_state, str: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_check_string_type"]
    pub fn mrb_check_string_type(mrb: *mut mrb_state, str: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_string_type"]
    pub fn mrb_string_type(mrb: *mut mrb_state, str: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_new_capa"]
    pub fn mrb_str_new_capa(mrb: *mut mrb_state, capa: usize) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_buf_new"]
    pub fn mrb_str_buf_new(mrb: *mut mrb_state, capa: usize) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_string_value_cstr"]
    pub fn mrb_string_value_cstr(
        mrb: *mut mrb_state,
        ptr: *mut mrb_value,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    #[link_name = "\u{1}_mrb_string_value_ptr"]
    pub fn mrb_string_value_ptr(
        mrb: *mut mrb_state,
        str: mrb_value,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    #[link_name = "\u{1}_mrb_string_value_len"]
    pub fn mrb_string_value_len(mrb: *mut mrb_state, str: mrb_value) -> mrb_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_dup"]
    pub fn mrb_str_dup(mrb: *mut mrb_state, str: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_intern"]
    pub fn mrb_str_intern(mrb: *mut mrb_state, self_: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_to_inum"]
    pub fn mrb_str_to_inum(
        mrb: *mut mrb_state,
        str: mrb_value,
        base: mrb_int,
        badcheck: mrb_bool,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_cstr_to_inum"]
    pub fn mrb_cstr_to_inum(
        mrb: *mut mrb_state,
        s: *const ::std::os::raw::c_char,
        base: mrb_int,
        badcheck: mrb_bool,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_to_dbl"]
    pub fn mrb_str_to_dbl(mrb: *mut mrb_state, str: mrb_value, badcheck: mrb_bool) -> f64;
}
extern "C" {
    #[link_name = "\u{1}_mrb_cstr_to_dbl"]
    pub fn mrb_cstr_to_dbl(
        mrb: *mut mrb_state,
        s: *const ::std::os::raw::c_char,
        badcheck: mrb_bool,
    ) -> f64;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_to_str"]
    pub fn mrb_str_to_str(mrb: *mut mrb_state, str: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_equal"]
    pub fn mrb_str_equal(mrb: *mut mrb_state, str1: mrb_value, str2: mrb_value) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_cat"]
    pub fn mrb_str_cat(
        mrb: *mut mrb_state,
        str: mrb_value,
        ptr: *const ::std::os::raw::c_char,
        len: usize,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_cat_cstr"]
    pub fn mrb_str_cat_cstr(
        mrb: *mut mrb_state,
        str: mrb_value,
        ptr: *const ::std::os::raw::c_char,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_cat_str"]
    pub fn mrb_str_cat_str(mrb: *mut mrb_state, str: mrb_value, str2: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_append"]
    pub fn mrb_str_append(mrb: *mut mrb_state, str: mrb_value, str2: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_cmp"]
    pub fn mrb_str_cmp(
        mrb: *mut mrb_state,
        str1: mrb_value,
        str2: mrb_value,
    ) -> ::std::os::raw::c_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_to_cstr"]
    pub fn mrb_str_to_cstr(mrb: *mut mrb_state, str: mrb_value) -> *mut ::std::os::raw::c_char;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_pool"]
    pub fn mrb_str_pool(mrb: *mut mrb_state, str: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_hash"]
    pub fn mrb_str_hash(mrb: *mut mrb_state, str: mrb_value) -> u32;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_dump"]
    pub fn mrb_str_dump(mrb: *mut mrb_state, str: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_str_inspect"]
    pub fn mrb_str_inspect(mrb: *mut mrb_state, str: mrb_value) -> mrb_value;
}
pub type jmp_buf = [::std::os::raw::c_int; 37usize];
#[repr(C)]
#[derive(Copy, Clone)]
pub struct mrb_jmpbuf {
    pub impl_: jmp_buf,
}
extern "C" {
    #[link_name = "\u{1}_mrb_vm_special_get"]
    pub fn mrb_vm_special_get(arg1: *mut mrb_state, arg2: mrb_sym) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_vm_special_set"]
    pub fn mrb_vm_special_set(arg1: *mut mrb_state, arg2: mrb_sym, arg3: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_vm_cv_get"]
    pub fn mrb_vm_cv_get(arg1: *mut mrb_state, arg2: mrb_sym) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_vm_cv_set"]
    pub fn mrb_vm_cv_set(arg1: *mut mrb_state, arg2: mrb_sym, arg3: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_vm_const_get"]
    pub fn mrb_vm_const_get(arg1: *mut mrb_state, arg2: mrb_sym) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_vm_const_set"]
    pub fn mrb_vm_const_set(arg1: *mut mrb_state, arg2: mrb_sym, arg3: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_const_get"]
    pub fn mrb_const_get(arg1: *mut mrb_state, arg2: mrb_value, arg3: mrb_sym) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_const_set"]
    pub fn mrb_const_set(arg1: *mut mrb_state, arg2: mrb_value, arg3: mrb_sym, arg4: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_const_defined"]
    pub fn mrb_const_defined(arg1: *mut mrb_state, arg2: mrb_value, arg3: mrb_sym) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_const_remove"]
    pub fn mrb_const_remove(arg1: *mut mrb_state, arg2: mrb_value, arg3: mrb_sym);
}
extern "C" {
    #[link_name = "\u{1}_mrb_iv_name_sym_p"]
    pub fn mrb_iv_name_sym_p(mrb: *mut mrb_state, sym: mrb_sym) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_iv_name_sym_check"]
    pub fn mrb_iv_name_sym_check(mrb: *mut mrb_state, sym: mrb_sym);
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_iv_get"]
    pub fn mrb_obj_iv_get(mrb: *mut mrb_state, obj: *mut RObject, sym: mrb_sym) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_iv_set"]
    pub fn mrb_obj_iv_set(mrb: *mut mrb_state, obj: *mut RObject, sym: mrb_sym, v: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_iv_defined"]
    pub fn mrb_obj_iv_defined(mrb: *mut mrb_state, obj: *mut RObject, sym: mrb_sym) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_iv_get"]
    pub fn mrb_iv_get(mrb: *mut mrb_state, obj: mrb_value, sym: mrb_sym) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_iv_set"]
    pub fn mrb_iv_set(mrb: *mut mrb_state, obj: mrb_value, sym: mrb_sym, v: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_iv_defined"]
    pub fn mrb_iv_defined(arg1: *mut mrb_state, arg2: mrb_value, arg3: mrb_sym) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_iv_remove"]
    pub fn mrb_iv_remove(mrb: *mut mrb_state, obj: mrb_value, sym: mrb_sym) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_iv_copy"]
    pub fn mrb_iv_copy(mrb: *mut mrb_state, dst: mrb_value, src: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_const_defined_at"]
    pub fn mrb_const_defined_at(mrb: *mut mrb_state, mod_: mrb_value, id: mrb_sym) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_gv_get"]
    pub fn mrb_gv_get(mrb: *mut mrb_state, sym: mrb_sym) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_gv_set"]
    pub fn mrb_gv_set(mrb: *mut mrb_state, sym: mrb_sym, val: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_gv_remove"]
    pub fn mrb_gv_remove(mrb: *mut mrb_state, sym: mrb_sym);
}
extern "C" {
    #[link_name = "\u{1}_mrb_cv_get"]
    pub fn mrb_cv_get(mrb: *mut mrb_state, mod_: mrb_value, sym: mrb_sym) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_mod_cv_set"]
    pub fn mrb_mod_cv_set(mrb: *mut mrb_state, c: *mut RClass, sym: mrb_sym, v: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_cv_set"]
    pub fn mrb_cv_set(mrb: *mut mrb_state, mod_: mrb_value, sym: mrb_sym, v: mrb_value);
}
extern "C" {
    #[link_name = "\u{1}_mrb_cv_defined"]
    pub fn mrb_cv_defined(mrb: *mut mrb_state, mod_: mrb_value, sym: mrb_sym) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_iv_inspect"]
    pub fn mrb_obj_iv_inspect(arg1: *mut mrb_state, arg2: *mut RObject) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_mod_constants"]
    pub fn mrb_mod_constants(mrb: *mut mrb_state, mod_: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_f_global_variables"]
    pub fn mrb_f_global_variables(mrb: *mut mrb_state, self_: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_obj_instance_variables"]
    pub fn mrb_obj_instance_variables(arg1: *mut mrb_state, arg2: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_mod_class_variables"]
    pub fn mrb_mod_class_variables(arg1: *mut mrb_state, arg2: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_mod_cv_get"]
    pub fn mrb_mod_cv_get(mrb: *mut mrb_state, c: *mut RClass, sym: mrb_sym) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_mod_cv_defined"]
    pub fn mrb_mod_cv_defined(mrb: *mut mrb_state, c: *mut RClass, sym: mrb_sym) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_ident_p"]
    pub fn mrb_ident_p(s: *const ::std::os::raw::c_char, len: mrb_int) -> mrb_bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_mark_gv"]
    pub fn mrb_gc_mark_gv(arg1: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_free_gv"]
    pub fn mrb_gc_free_gv(arg1: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_mark_iv"]
    pub fn mrb_gc_mark_iv(arg1: *mut mrb_state, arg2: *mut RObject);
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_mark_iv_size"]
    pub fn mrb_gc_mark_iv_size(arg1: *mut mrb_state, arg2: *mut RObject) -> usize;
}
extern "C" {
    #[link_name = "\u{1}_mrb_gc_free_iv"]
    pub fn mrb_gc_free_iv(arg1: *mut mrb_state, arg2: *mut RObject);
}
pub type mrb_iv_foreach_func = ::std::option::Option<
    unsafe extern "C" fn(
        arg1: *mut mrb_state,
        arg2: mrb_sym,
        arg3: mrb_value,
        arg4: *mut ::std::os::raw::c_void,
    ) -> ::std::os::raw::c_int,
>;
extern "C" {
    #[link_name = "\u{1}_mrb_iv_foreach"]
    pub fn mrb_iv_foreach(
        mrb: *mut mrb_state,
        obj: mrb_value,
        func: mrb_iv_foreach_func,
        p: *mut ::std::os::raw::c_void,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_value_is_nil"]
    pub fn mrb_sys_value_is_nil(value: mrb_value) -> bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_value_is_false"]
    pub fn mrb_sys_value_is_false(value: mrb_value) -> bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_value_is_true"]
    pub fn mrb_sys_value_is_true(value: mrb_value) -> bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_fixnum_to_cint"]
    pub fn mrb_sys_fixnum_to_cint(value: mrb_value) -> mrb_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_float_to_cdouble"]
    pub fn mrb_sys_float_to_cdouble(value: mrb_value) -> mrb_float;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_basic_ptr"]
    pub fn mrb_sys_basic_ptr(value: mrb_value) -> *mut RBasic;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_obj_ptr"]
    pub fn mrb_sys_obj_ptr(value: mrb_value) -> *mut RObject;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_proc_ptr"]
    pub fn mrb_sys_proc_ptr(value: mrb_value) -> *mut RProc;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_class_ptr"]
    pub fn mrb_sys_class_ptr(value: mrb_value) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_class_to_rclass"]
    pub fn mrb_sys_class_to_rclass(value: mrb_value) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_class_of_value"]
    pub fn mrb_sys_class_of_value(mrb: *mut mrb_state, value: mrb_value) -> *mut RClass;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_nil_value"]
    pub fn mrb_sys_nil_value() -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_false_value"]
    pub fn mrb_sys_false_value() -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_true_value"]
    pub fn mrb_sys_true_value() -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_fixnum_value"]
    pub fn mrb_sys_fixnum_value(value: mrb_int) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_float_value"]
    pub fn mrb_sys_float_value(mrb: *mut mrb_state, value: mrb_float) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_obj_value"]
    pub fn mrb_sys_obj_value(p: *mut ::std::os::raw::c_void) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_class_value"]
    pub fn mrb_sys_class_value(klass: *mut RClass) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_module_value"]
    pub fn mrb_sys_module_value(module: *mut RClass) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_data_value"]
    pub fn mrb_sys_data_value(data: *mut RData) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_proc_value"]
    pub fn mrb_sys_proc_value(mrb: *mut mrb_state, proc_: *mut RProc) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_symbol_name"]
    pub fn mrb_sys_symbol_name(
        mrb: *mut mrb_state,
        value: mrb_value,
    ) -> *const ::std::os::raw::c_char;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_new_symbol"]
    pub fn mrb_sys_new_symbol(
        mrb: *mut mrb_state,
        string: *const ::std::os::raw::c_char,
        len: usize,
    ) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_set_instance_tt"]
    pub fn mrb_sys_set_instance_tt(class: *mut RClass, type_: mrb_vtype);
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_data_init"]
    pub fn mrb_sys_data_init(
        value: *mut mrb_value,
        ptr: *mut ::std::os::raw::c_void,
        type_: *const mrb_data_type,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_raise"]
    pub fn mrb_sys_raise(
        mrb: *mut mrb_state,
        eclass: *const ::std::os::raw::c_char,
        msg: *const ::std::os::raw::c_char,
    );
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_raise_current_exception"]
    pub fn mrb_sys_raise_current_exception(mrb: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_value_debug_str"]
    pub fn mrb_sys_value_debug_str(mrb: *mut mrb_state, value: mrb_value) -> mrb_value;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_ary_len"]
    pub fn mrb_sys_ary_len(value: mrb_value) -> mrb_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_gc_arena_save"]
    pub fn mrb_sys_gc_arena_save(mrb: *mut mrb_state) -> ::std::os::raw::c_int;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_gc_arena_restore"]
    pub fn mrb_sys_gc_arena_restore(mrb: *mut mrb_state, arena_index: ::std::os::raw::c_int);
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_gc_disable"]
    pub fn mrb_sys_gc_disable(mrb: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_gc_enable"]
    pub fn mrb_sys_gc_enable(mrb: *mut mrb_state);
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_value_is_dead"]
    pub fn mrb_sys_value_is_dead(_mrb: *mut mrb_state, value: mrb_value) -> bool;
}
extern "C" {
    #[link_name = "\u{1}_mrb_sys_gc_live_objects"]
    pub fn mrb_sys_gc_live_objects(mrb: *mut mrb_state) -> ::std::os::raw::c_int;
}
pub type __builtin_va_list = [__va_list_tag; 1usize];
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct __va_list_tag {
    pub gp_offset: ::std::os::raw::c_uint,
    pub fp_offset: ::std::os::raw::c_uint,
    pub overflow_arg_area: *mut ::std::os::raw::c_void,
    pub reg_save_area: *mut ::std::os::raw::c_void,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct iv_tbl {
    pub _address: u8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct alloca_header {
    pub _address: u8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct symbol_name {
    pub _address: u8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_irep_debug_info {
    pub _address: u8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct htable {
    pub _address: u8,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct mrb_shared_string {
    pub _address: u8,
}
