#[cfg(test)]
mod classifier_correctness_tests;
pub mod depth;
pub(crate) mod mask;
pub mod memmem;
pub mod quotes;
pub(crate) mod simd;
pub mod structural;
use std::fmt::Display;
use crate::{debug, input::InputBlockIterator};
use quotes::{QuoteClassifiedBlock, QuoteClassifiedIterator};
pub struct ResumeClassifierState<'i, I, Q, M, const N: usize>
where
I: InputBlockIterator<'i, N>,
{
pub iter: Q,
pub block: Option<ResumeClassifierBlockState<'i, I, M, N>>,
pub are_commas_on: bool,
pub are_colons_on: bool,
}
pub struct ResumeClassifierBlockState<'i, I, M, const N: usize>
where
I: InputBlockIterator<'i, N>,
{
pub block: QuoteClassifiedBlock<I::Block, M, N>,
pub idx: usize,
}
impl<'i, I, Q, M, const N: usize> ResumeClassifierState<'i, I, Q, M, N>
where
I: InputBlockIterator<'i, N>,
Q: QuoteClassifiedIterator<'i, I, M, N>,
{
#[inline(always)]
pub(crate) fn get_idx(&self) -> usize {
debug!(
"iter offset: {}, block idx: {:?}",
self.iter.get_offset(),
self.block.as_ref().map(|b| b.idx)
);
self.iter.get_offset() + self.block.as_ref().map_or(0, |b| b.idx)
}
}
#[doc(hidden)]
#[inline]
#[must_use]
pub fn describe_simd() -> impl Display {
simd::configure()
}