#[allow(unused)]
use log::{debug, error, info, trace, warn};
use nom::number::complete::{be_u16, be_u32, le_u16, le_u32};
use crate::error::NomRes;
pub(crate) fn both_endian16(i: &[u8]) -> NomRes<&[u8], u16> {
let (i, little_endian) = le_u16(i)?;
let (i, big_endian) = be_u16(i)?;
if little_endian != big_endian {
warn!("16-bit endian mismatch, little={little_endian}, big={big_endian}");
}
cfg_if::cfg_if! {
if #[cfg(feature = "big-endian")] {
Ok((i, big_endian))
} else {
Ok((i, little_endian))
}
}
}
pub(crate) fn both_endian32(i: &[u8]) -> NomRes<&[u8], u32> {
let (i, little_endian) = le_u32(i)?;
let (i, big_endian) = be_u32(i)?;
if little_endian != big_endian {
warn!("32-bit endian mismatch, little={little_endian}, big={big_endian}");
}
cfg_if::cfg_if! {
if #[cfg(feature = "big-endian")] {
Ok((i, big_endian))
} else {
Ok((i, little_endian))
}
}
}