mod ext_bucket;
mod ext_mem;
mod lcp;
mod limits;
mod sample_sort;
pub use ext_mem::{
ExtMemOpts, build_ext_mem, build_ext_mem_for_filter, build_ext_mem_for_filter_with,
build_ext_mem_for_positions, build_ext_mem_for_positions_with, build_ext_mem_with,
build_in_memory_sample_sort, build_in_memory_sample_sort_for_positions,
build_in_memory_sample_sort_for_positions_with, build_in_memory_sample_sort_with,
};
pub use lcp::{LcpDispatch, Symbol, lcp, lcp_scalar, lcp_u8, suffix_cmp};
pub use limits::{LimitProvider, PlainText, SegmentedText};
pub use sample_sort::{
Opts, build_in_memory, build_in_memory_for_positions, build_in_memory_for_positions_with,
build_in_memory_for_positions_with_opts, build_in_memory_with, build_in_memory_with_opts,
};
pub trait Index:
Copy
+ Eq
+ Ord
+ Send
+ Sync
+ std::fmt::Debug
+ std::ops::Add<Output = Self>
+ std::ops::Sub<Output = Self>
{
fn from_usize(v: usize) -> Self;
fn to_usize(self) -> usize;
fn zero() -> Self;
}
macro_rules! impl_index {
($t:ty) => {
impl Index for $t {
#[inline]
fn from_usize(v: usize) -> Self {
v as $t
}
#[inline]
fn to_usize(self) -> usize {
self as usize
}
#[inline]
fn zero() -> Self {
0
}
}
};
}
impl_index!(u32);
impl_index!(u64);
impl_index!(usize);