mod pattern_index;
mod sequence_storage;
mod pattern_locate; mod debug;
pub mod extensions;
pub use pattern_index::PatternIndex;
pub use sequence_storage::SequenceStorage;
pub use crate::core::{PatternLocation, SequenceBuffer};
#[derive(Debug)]
pub struct Reference<I, S> where
I: PatternIndex,
S: SequenceStorage,
{
target_boundaries: Vec<u32>,
pattern_index: I,
sequence_storage: S,
}
impl<I, S> Reference<I, S> where
I: PatternIndex,
S: SequenceStorage,
{
pub fn new(
sequence_storage: S,
pattern_index_option: I::Option,
) -> Result<Self, I::BuildError> {
let (concatenated_sequence, target_boundaries) = sequence_storage.get_concatenated_sequence_with_boundaries_of_targets();
let pattern_index = I::new(concatenated_sequence, pattern_index_option)?;
Ok(Self {
target_boundaries,
pattern_index,
sequence_storage,
})
}
pub fn get_sequence_storage(&self) -> &S {
&self.sequence_storage
}
pub fn get_pattern_index(&self) -> &I {
&self.pattern_index
}
}