SeqAn3  3.1.0-rc.1
The Modern C++ library for sequence analysis.
seqan3::detail::reverse_fm_index< alphabet_t, text_layout_mode, sdsl_index_type > Class Template Reference

An FM Index specialisation that handles reversing the given text. More...

#include <seqan3/search/fm_index/fm_index.hpp>

+ Inheritance diagram for seqan3::detail::reverse_fm_index< alphabet_t, text_layout_mode, sdsl_index_type >:

Public Member Functions

template<std::ranges::bidirectional_range text_t>
 reverse_fm_index (text_t &&text)
 Constructor that immediately constructs the index given a range. The range cannot be empty. More...
 
- Public Member Functions inherited from seqan3::fm_index< alphabet_t, text_layout_mode, default_sdsl_index_type >
cursor_type cursor () const noexcept
 Returns a seqan3::fm_index_cursor on the index that can be used for searching. Cursor is pointing to the root node of the implicit suffix tree. More...
 
bool empty () const noexcept
 Checks whether the index is empty. More...
 
bool operator!= (fm_index const &rhs) const noexcept
 Compares two indices. More...
 
bool operator== (fm_index const &rhs) const noexcept
 Compares two indices. More...
 
void serialize (archive_t &archive)
 Serialisation support function. More...
 
size_type size () const noexcept
 Returns the length of the indexed text including sentinel characters. More...
 
 fm_index ()=default
 Defaulted.
 
 fm_index (fm_index const &rhs)
 When copy constructing, also update internal data structures.
 
 fm_index (fm_index &&rhs)
 When move constructing, also update internal data structures.
 
 fm_index (text_t &&text)
 Constructor that immediately constructs the index given a range. The range cannot be empty. More...
 
fm_indexoperator= (fm_index rhs)
 When copy/move assigning, also update internal data structures.
 
 ~fm_index ()=default
 Defaulted.
 

Private Member Functions

template<std::ranges::range text_t>
void construct_ (text_t &&text)
 Constructs the index given a range. The range cannot be an rvalue (i.e. a temporary object) and has to be non-empty. More...
 

Additional Inherited Members

- Public Types inherited from seqan3::fm_index< alphabet_t, text_layout_mode, default_sdsl_index_type >
using alphabet_type = alphabet_t
 The type of the underlying character of the indexed text.
 
using size_type = typename sdsl_index_type::size_type
 Type for representing positions in the indexed text.
 
using cursor_type = fm_index_cursor< fm_index >
 The type of the (unidirectional) cursor.
 
- Static Public Attributes inherited from seqan3::fm_index< alphabet_t, text_layout_mode, default_sdsl_index_type >
static constexpr text_layout text_layout_mode
 Indicates whether index is built over a collection.
 

Detailed Description

template<semialphabet alphabet_t, text_layout text_layout_mode, detail::sdsl_index sdsl_index_type = default_sdsl_index_type>
class seqan3::detail::reverse_fm_index< alphabet_t, text_layout_mode, sdsl_index_type >

An FM Index specialisation that handles reversing the given text.

Template Parameters
alphabet_tThe alphabet type; must model seqan3::semialphabet.
text_layout_modeIndicates whether this index works on a text collection or a single text. See seqan3::text_layout.
sdsl_index_typeThe type of the underlying SDSL index, must model seqan3::sdsl_index.

This FM Index reverses the given text before constructing the seqan3::fm_index. This type is used by the seqan3::bi_fm_index.

Constructor & Destructor Documentation

◆ reverse_fm_index()

template<semialphabet alphabet_t, text_layout text_layout_mode, detail::sdsl_index sdsl_index_type = default_sdsl_index_type>
template<std::ranges::bidirectional_range text_t>
seqan3::detail::reverse_fm_index< alphabet_t, text_layout_mode, sdsl_index_type >::reverse_fm_index ( text_t &&  text)
inlineexplicit

Constructor that immediately constructs the index given a range. The range cannot be empty.

Template Parameters
text_tThe type of range to construct from; must model std::ranges::bidirectional_range.
Parameters
[in]textThe text to construct from.

Complexity

Todo:
At least linear.

Member Function Documentation

◆ construct_()

template<semialphabet alphabet_t, text_layout text_layout_mode, detail::sdsl_index sdsl_index_type = default_sdsl_index_type>
template<std::ranges::range text_t>
void seqan3::detail::reverse_fm_index< alphabet_t, text_layout_mode, sdsl_index_type >::construct_ ( text_t &&  text)
inlineprivate

Constructs the index given a range. The range cannot be an rvalue (i.e. a temporary object) and has to be non-empty.

Template Parameters
text_tThe type of range to construct from; must model std::ranges::bidirectional_range.
Parameters
[in]textThe text to construct from.
Todo:
This has to be better implemented with regard to the memory peak due to not matching interfaces with the SDSL.

Complexity

Todo:
At least linear.

Exceptions

No guarantee.

Todo:
Ensure strong exception guarantee.

The documentation for this class was generated from the following file: