15 #include <type_traits> 17 #include <sdsl/suffix_arrays.hpp> 40 SEQAN3_CONCEPT SdslIndex = requires (t sdsl_index)
42 typename t::size_type;
44 { sdsl_index.size() } ->
typename t::size_type;
46 { sdsl_index.comp2char[0] } -> uint8_t;
47 { sdsl_index.char2comp[0] } -> uint8_t;
51 requires requires (t sdsl_index,
typename t::char_type
const c,
typename t::size_type
const lb,
52 typename t::size_type
const rb, sdsl::int_vector<8>
const text)
54 { sdsl_index.bwt.rank(lb, c) };
55 { sdsl_index.wavelet_tree.lex_count(lb, rb, c) };
56 { sdsl::construct_im(sdsl_index, text, 0) };
94 typename t::size_type;
104 { index.construct(text) } -> void;
107 { index.begin() } ->
typename t::cursor_type;
109 { index.size() } ->
typename t::size_type;
110 { index.empty() } -> bool;
141 template <
typename t>
145 typename t::index_type;
146 typename t::size_type;
148 requires FmIndex<typename t::index_type>;
150 requires requires (
typename t::index_type
const index) { { t(index) } };
157 { cur.extend_right() } -> bool;
158 { cur.extend_right(c) } -> bool;
159 { cur.extend_right(
seq) } -> bool;
160 { cur.cycle_back() } -> bool;
161 { cur.path_label(text) } ->
auto;
164 { cur.last_rank() } ->
typename t::size_type;
165 { cur.query_length() } ->
typename t::size_type;
166 { cur.count() } ->
typename t::size_type;
170 { cur.lazy_locate() } ->
auto;
195 template <
typename t>
197 SEQAN3_CONCEPT BiFmIndex = FmIndex<t> && requires (t index)
199 typename t::cursor_type;
200 typename t::fwd_cursor_type;
201 typename t::rev_cursor_type;
206 { index.fwd_begin() } ->
typename t::fwd_cursor_type;
207 { index.rev_begin() } ->
typename t::rev_cursor_type;
235 template <
typename t>
237 SEQAN3_CONCEPT BiFmIndexCursor = FmIndexCursor<t> && requires (t cur)
239 requires BiFmIndex<typename t::index_type>;
241 requires requires (
typename t::index_type
const index) { { t(index) } };
245 { cur.extend_left() } -> bool;
246 { cur.extend_left(c) } -> bool;
247 { cur.extend_left(
seq) } -> bool;
248 { cur.cycle_front() } -> bool;
constexpr sequenced_policy seq
Global execution policy object for sequenced execution policy.
Definition: execution.hpp:54
The main SeqAn3 namespace.
Additional non-standard concepts for ranges.
Definition: aligned_sequence_concept.hpp:35
Subsumes std::Copyable and std::DefaultConstructible.
Provides various transformation traits used by the range module.
Provides seqan3::dna4, container aliases and string literals.
Adaptations of concepts from the standard library.