#[cfg(test)]
mod codegen;
mod definitions;
mod table;
#[cfg(test)]
pub(crate) use definitions::pack;
pub(crate) use definitions::unpack;
pub use definitions::Action;
pub use definitions::State;
#[inline]
pub const fn state_change(state: State, byte: u8) -> (State, Action) {
let mut change = state_change_(State::Anywhere, byte);
if change == 0 {
change = state_change_(state, byte);
}
unpack(change)
}
#[inline]
const fn state_change_(state: State, byte: u8) -> u8 {
let state_idx = state as usize;
let byte_idx = byte as usize;
table::STATE_CHANGES[state_idx][byte_idx]
}