59 template <
bool is_collection = false, detail::SdslIndex sdsl_index_type_ = default_sdsl_index_type>
102 using size_type =
typename sdsl_index_type::size_type;
117 template <
typename fm_index_t>
138 template <std::ranges::Range text_t>
164 template <std::ranges::Range text_t>
172 static_assert(dimension_v<text_t> == 1,
"The input cannot be a text collection.");
186 template <std::ranges::Range text_t>
194 "The elements of the text collection must model BidirectionalRange.");
196 static_assert(dimension_v<text_t> == 2,
"The input must be a text collection.");
270 return !(*
this == rhs);
335 template <CerealArchive archive_t>
336 void CEREAL_SERIALIZE_FUNCTION_NAME(archive_t & archive)
347 template <std::ranges::Range text_t>
349 bi_fm_index(text_t &&) -> bi_fm_index<dimension_v<text_t> != 1>;
~bi_fm_index()=default
Destructor.
typename sdsl_index_type::alphabet_type::sigma_type sdsl_sigma_type
The type of the alphabet size of the underlying SDSL index.
Definition: bi_fm_index.hpp:83
bool empty() const noexcept
Checks whether the index is empty.
Definition: bi_fm_index.hpp:236
size_type size() const noexcept
Returns the length of the indexed text including sentinel characters.
Definition: fm_index.hpp:368
typename sdsl_index_type::alphabet_type::char_type sdsl_char_type
The type of the reduced alphabet type. (The reduced alphabet might be smaller than the original alpha...
Definition: bi_fm_index.hpp:80
constexpr auto reverse
A range adaptor that presents the underlying range in reverse order.
Definition: ranges:721
size_t sigma
The alphabet size of the text.
Definition: fm_index.hpp:132
The main SeqAn3 namespace.
cursor_type begin() const noexcept
Returns a seqan3::bi_fm_index_cursor on the index that can be used for searching. ...
Definition: bi_fm_index.hpp:287
bi_fm_index(text_t &&) -> bi_fm_index< dimension_v< text_t > !=1 >
Deduces the dimensions of the text.
size_type size() const noexcept
Returns the length of the indexed text including sentinel characters.
Definition: bi_fm_index.hpp:220
sdsl_index_type_ rev_sdsl_index_type
The type of the underlying SDSL index for the reversed text.
Definition: bi_fm_index.hpp:75
Specifies requirements of a Range type for which begin returns a type that models std::BidirectionalI...
void construct(text_t &&text)
Constructs the index given a range. The range cannot be an rvalue (i.e. a temporary object) and has t...
Definition: fm_index.hpp:223
Adaptations of concepts from the Ranges TS.
typename innermost_value_type< t >::type innermost_value_type_t
Shortcut for seqan3::innermost_value_type (TransformationTrait shortcut).
Definition: range.hpp:191
::ranges::begin begin
Alias for ranges::begin. Returns an iterator to the beginning of a range.
Definition: ranges:174
fm_index_type fwd_fm
Underlying FM index for the original text.
Definition: bi_fm_index.hpp:93
void construct(text_t &&text)
Constructs the index given a range. The range cannot be an rvalue (i.e. a temporary object) and has t...
Definition: bi_fm_index.hpp:168
static constexpr bool is_collection_
Indicates whether index is built over a collection.
Definition: bi_fm_index.hpp:66
fwd_cursor_type fwd_begin() const noexcept
Returns a unidirectional seqan3::fm_index_cursor on the original text of the bidirectional index that...
Definition: bi_fm_index.hpp:304
rev_cursor_type rev_begin() const noexcept
Returns a unidirectional seqan3::fm_index_cursor on the reversed text of the bidirectional index that...
Definition: bi_fm_index.hpp:323
bi_fm_index()=default
Default constructor.
The SeqAn Bidirectional FM Index Cursor.
Definition: bi_fm_index_cursor.hpp:54
rev_fm_index_type rev_fm
Underlying FM index for the reversed text.
Definition: bi_fm_index.hpp:96
sdsl_index_type_ sdsl_index_type
The type of the underlying SDSL index for the original text.
Definition: bi_fm_index.hpp:72
typename sdsl_index_type::size_type size_type
Type for representing positions in the indexed text.
Definition: bi_fm_index.hpp:103
Provides seqan3::view::persist.
size_t sigma
The alphabet size of the text.
Definition: bi_fm_index.hpp:64
Provides various transformation traits used by the range module.
typename reference< t >::type reference_t
Shortcut for seqan3::reference (TransformationTrait shortcut).
Definition: pre.hpp:77
bool operator==(bi_fm_index const &rhs) const noexcept
Compares two indices.
Definition: bi_fm_index.hpp:252
The SeqAn Bidirectional FM Index.
Definition: bi_fm_index.hpp:60
Provides the unidirectional seqan3::fm_index.
bi_fm_index(text_t &&text)
Constructor that immediately constructs the index given a range. The range cannot be empty...
Definition: bi_fm_index.hpp:139
constexpr auto alphabet_size
A type trait that holds the size of a (semi-)alphabet.
Definition: concept.hpp:678
bool operator!=(bi_fm_index const &rhs) const noexcept
Compares two indices.
Definition: bi_fm_index.hpp:268
bi_fm_index & operator=(bi_fm_index const &)=default
Copy assignment.
::ranges::end end
Alias for ranges::end. Returns an iterator to the end of a range.
Definition: ranges:179
The SeqAn FM Index Cursor.
Definition: fm_index_cursor.hpp:64
This header includes C++17 filesystem support and imports it into namespace seqan3::filesystem (indep...
Provides the seqan3::bi_fm_index_cursor for searching in the bidirectional seqan3::bi_fm_index.