sview_fmindex/
lib.rs

1// Core types
2mod text_length;
3pub use text_length::Position;
4// Header & View to compose FmIndex
5mod components;
6pub use components::{TextEncoder, text_encoders, Block, blocks};
7// Builder for FmIndex
8mod builder;
9pub use builder::{FmIndexBuilder, BuildError, build_config};
10
11/// FM-index
12///
13/// FM-index is a data structure to locate all occurrences of a pattern in a text.
14#[derive(Clone, PartialEq, Eq)]
15pub struct FmIndex<'a, P: Position, B: Block, E: TextEncoder> {
16    // source blob data
17    source_blob: &'a [u8],
18    // headers
19    magic_number: components::MagicNumber,
20    text_encoder: E,
21    count_array_header: components::CountArrayHeader,
22    suffix_array_header: components::SuffixArrayHeader,
23    bwm_header: components::BwmHeader,
24    // views
25    count_array_view: components::CountArrayView<'a, P>,
26    suffix_array_view: components::SuffixArrayView<'a, P>,
27    bwm_view: components::BwmView<'a, P, B>,
28}
29
30// Methods of FmIndex
31//  - Load from blob
32mod load_from_blob;
33pub use load_from_blob::LoadError;
34//  - Count & locate pattern
35mod locate;
36//  - Reference to source blob data
37mod reference_to_source_blob;
38//  - Get debug info
39// mod debug;
40
41#[cfg(test)]
42mod tests;