use crate::ffi;
use crate::arg_type::ArgType;
use crate::ptr::NonNullConst;
extern "C" {
pub fn gfxd_macro_offset() -> ffi::c_int;
pub fn gfxd_macro_packets() -> ffi::c_int;
pub fn gfxd_foreach_pkt(fn_: Option<unsafe extern "C" fn() -> ffi::c_int>) -> ffi::c_int;
pub fn gfxd_macro_data() -> NonNullConst<ffi::c_void>;
pub fn gfxd_macro_id() -> ffi::c_int;
pub fn gfxd_macro_name() -> Option<NonNullConst<ffi::c_char>>;
pub fn gfxd_arg_count() -> ffi::c_int;
pub fn gfxd_arg_type(arg_num: ffi::c_int) -> ffi::c_int;
pub fn gfxd_arg_name(arg_num: ffi::c_int) -> NonNullConst<ffi::c_char>;
pub fn gfxd_arg_fmt(arg_num: ffi::c_int) -> ffi::c_int;
pub fn gfxd_arg_value(arg_num: ffi::c_int) -> NonNullConst<gfxd_value_t>;
pub fn gfxd_value_by_type(
type_: ArgType,
idx: ffi::c_int,
) -> Option<NonNullConst<gfxd_value_t>>;
pub fn gfxd_arg_valid(arg_num: ffi::c_int) -> ffi::c_int;
}
pub const gfxd_argfmt_i: u32 = ArgFmt::gfxd_argfmt_i as u32;
pub const gfxd_argfmt_u: u32 = ArgFmt::gfxd_argfmt_u as u32;
pub const gfxd_argfmt_f: u32 = ArgFmt::gfxd_argfmt_f as u32;
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum ArgFmt {
gfxd_argfmt_i = 0,
gfxd_argfmt_u = 1,
gfxd_argfmt_f = 2,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union gfxd_value_t {
pub i: i32,
pub u: u32,
pub f: f32,
}