#![allow(bad_style)]
use crate::shim::*;
pub use crate::classid::ClassID;
pub type mxClassID = ::std::os::raw::c_uint;
pub type mxComplexity = ::std::os::raw::c_uint;
pub type mwIndex = usize;
pub type mwSize = usize;
pub type mwSignedIndex = isize;
pub const mxClassID_mxUNKNOWN_CLASS: mxClassID = 0;
pub const mxClassID_mxCELL_CLASS: mxClassID = 1;
pub const mxClassID_mxSTRUCT_CLASS: mxClassID = 2;
pub const mxClassID_mxLOGICAL_CLASS: mxClassID = 3;
pub const mxClassID_mxCHAR_CLASS: mxClassID = 4;
pub const mxClassID_mxVOID_CLASS: mxClassID = 5;
pub const mxClassID_mxDOUBLE_CLASS: mxClassID = 6;
pub const mxClassID_mxSINGLE_CLASS: mxClassID = 7;
pub const mxClassID_mxINT8_CLASS: mxClassID = 8;
pub const mxClassID_mxUINT8_CLASS: mxClassID = 9;
pub const mxClassID_mxINT16_CLASS: mxClassID = 10;
pub const mxClassID_mxUINT16_CLASS: mxClassID = 11;
pub const mxClassID_mxINT32_CLASS: mxClassID = 12;
pub const mxClassID_mxUINT32_CLASS: mxClassID = 13;
pub const mxClassID_mxINT64_CLASS: mxClassID = 14;
pub const mxClassID_mxUINT64_CLASS: mxClassID = 15;
pub const mxClassID_mxFUNCTION_CLASS: mxClassID = 16;
pub const mxClassID_mxINDEX_CLASS: mxClassID = 15;
pub const mxClassID_mxOPAQUE_CLASS: mxClassID = 17;
pub const mxClassID_mxOBJECT_CLASS: mxClassID = 18;
pub const mxComplexity_mxREAL: mxComplexity = 0;
pub const mxComplexity_mxCOMPLEX: mxComplexity = 1;
#[allow(non_camel_case_types)]
pub type mxArray = mxArray_tag;
#[repr(C)]
#[allow(non_camel_case_types)]
#[derive(Debug)]
pub struct mxArray_tag {
_unused: [u8; 0],
}
impl mxArray {
pub fn dimensions(&self) -> &[usize] {
unsafe {
std::slice::from_raw_parts(
rustmex_get_dimensions(self),
rustmex_get_number_of_dimensions(self)
)
}
}
pub fn numel(&self) -> usize {
unsafe { rustmex_numel(self) }
}
pub fn raw_class_id(&self) -> mxClassID {
unsafe { rustmex_get_class_id(self) }
}
pub fn class_id(&self) -> Result<ClassID, mxClassID> {
self.raw_class_id().try_into()
}
pub fn is_complex(&self) -> bool {
unsafe { rustmex_is_complex(self) }
}
pub fn is_sparse(&self) -> bool {
unsafe { rustmex_is_sparse(self) }
}
pub fn is_struct(&self) -> bool {
unsafe { rustmex_is_struct(self) }
}
pub fn is_empty(&self) -> bool {
self.numel() == 0
}
pub fn is_scalar(&self) -> bool {
self.numel() == 1
}
}