use super::decode_error::DecodeError;
#[derive(Copy, Clone, Eq, PartialEq, Hash, Debug)]
pub enum Tuple {
None,
Fv,
Hv,
Qv,
T1S8,
T1S16,
T1S,
T1F,
T2,
T4,
T8,
Fvm,
Hvm,
Qvm,
OVm,
M128,
Dup,
T14X,
}
#[doc(hidden)]
impl Tuple {
pub(crate) fn from_raw(value: u32) -> Result<Self, DecodeError> {
if value == ffi::_ND_TUPLE::ND_TUPLE_None as u32 {
Ok(Tuple::None)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_FV as u32 {
Ok(Tuple::Fv)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_HV as u32 {
Ok(Tuple::Hv)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_QV as u32 {
Ok(Tuple::Qv)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_T1S8 as u32 {
Ok(Tuple::T1S8)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_T1S16 as u32 {
Ok(Tuple::T1S16)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_T1S as u32 {
Ok(Tuple::T1S)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_T1F as u32 {
Ok(Tuple::T1F)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_T2 as u32 {
Ok(Tuple::T2)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_T4 as u32 {
Ok(Tuple::T4)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_T8 as u32 {
Ok(Tuple::T8)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_FVM as u32 {
Ok(Tuple::Fvm)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_HVM as u32 {
Ok(Tuple::Hvm)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_QVM as u32 {
Ok(Tuple::Qvm)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_OVM as u32 {
Ok(Tuple::OVm)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_M128 as u32 {
Ok(Tuple::M128)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_DUP as u32 {
Ok(Tuple::Dup)
} else if value == ffi::_ND_TUPLE::ND_TUPLE_T1_4X as u32 {
Ok(Tuple::T14X)
} else {
Err(DecodeError::InternalError(value.into()))
}
}
}
#[cfg(test)]
mod tests {
#[test]
fn check_all_tuples() {
match ffi::_ND_TUPLE::ND_TUPLE_None {
ffi::_ND_TUPLE::ND_TUPLE_None => {}
ffi::_ND_TUPLE::ND_TUPLE_FV => {}
ffi::_ND_TUPLE::ND_TUPLE_HV => {}
ffi::_ND_TUPLE::ND_TUPLE_QV => {}
ffi::_ND_TUPLE::ND_TUPLE_T1S8 => {}
ffi::_ND_TUPLE::ND_TUPLE_T1S16 => {}
ffi::_ND_TUPLE::ND_TUPLE_T1S => {}
ffi::_ND_TUPLE::ND_TUPLE_T1F => {}
ffi::_ND_TUPLE::ND_TUPLE_T2 => {}
ffi::_ND_TUPLE::ND_TUPLE_T4 => {}
ffi::_ND_TUPLE::ND_TUPLE_T8 => {}
ffi::_ND_TUPLE::ND_TUPLE_FVM => {}
ffi::_ND_TUPLE::ND_TUPLE_HVM => {}
ffi::_ND_TUPLE::ND_TUPLE_QVM => {}
ffi::_ND_TUPLE::ND_TUPLE_OVM => {}
ffi::_ND_TUPLE::ND_TUPLE_M128 => {}
ffi::_ND_TUPLE::ND_TUPLE_DUP => {}
ffi::_ND_TUPLE::ND_TUPLE_T1_4X => {}
}
}
}