sigalign 0.4.0-alpha

A Similarity-Guided Alignment Algorithm
Documentation
use crate::core::BufferedPatternSearch;
use super::Reference;
use super::pattern_index::{PatternIndex, PatternLocation};
use super::sequence_storage::SequenceStorage;

impl<I, S> Reference<I, S> where
    I: PatternIndex,
    S: SequenceStorage,
{
    #[inline]
    pub fn locate_pattern(&self, pattern: &[u8]) -> Vec<PatternLocation> {
        self.locate(pattern)
    }
    #[inline]
    pub fn get_sequence_buffer(&self) -> S::Buffer {
        self.sequence_storage.get_buffer()
    }
    #[inline]
    pub fn fill_sequence_buffer(&self, target_index: u32, buffer: &mut S::Buffer) {
        self.sequence_storage.fill_buffer(target_index, buffer)
    }
}

impl<I, S> BufferedPatternSearch for Reference<I, S> where
    I: PatternIndex,
    S: SequenceStorage,
{
    type Buffer = S::Buffer;

    fn locate(&self, pattern: &[u8]) -> Vec<PatternLocation> {
        self.pattern_index.locate(pattern, &self.search_range)
    }
    fn fill_buffer(&self, target_index: u32, buffer: &mut Self::Buffer) {
        self.sequence_storage.fill_buffer(target_index, buffer)
    }
}