SeqAn3 3.4.0-rc.1
The Modern C++ library for sequence analysis.
Loading...
Searching...
No Matches
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.
 
- Public Member Functions inherited from seqan3::fm_index< alphabet_t, text_layout_mode_, 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. .
 
bool empty () const noexcept
 Checks whether the index is empty.
 
bool operator!= (fm_index const &rhs) const noexcept
 Compares two indices.
 
bool operator== (fm_index const &rhs) const noexcept
 Compares two indices.
 
template<cereal_archive archive_t>
void serialize (archive_t &archive)
 Serialisation support function.
 
size_type size () const noexcept
 Returns the length of the indexed text including sentinel characters.
 
 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_indexoperator= (fm_index rhs)
 When copy/move assigning, also update internal data structures.
 
 ~fm_index ()=default
 Defaulted.
 
template<std::ranges::bidirectional_range text_t>
 fm_index (text_t &&text)
 Constructor that immediately constructs the index given a range. The range cannot be empty.
 

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.
 

Additional Inherited Members

- Public Types inherited from seqan3::fm_index< alphabet_t, text_layout_mode_, 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_, sdsl_index_type_ >
static constexpr text_layout text_layout_mode = 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:
Hide me