|
template<typename IteratorTag , typename Iterable > |
static void | rangeless::fn::impl::require_iterator_category_at_least (const Iterable &) |
|
template<typename G , typename T > |
auto | rangeless::fn::impl::recycle (G &gen, T &value, pr_high) -> decltype(gen.recycle(value), void()) |
|
template<typename G , typename T > |
void | rangeless::fn::impl::recycle (G &, T &, pr_low) |
|
template<typename NullaryInvokable > |
impl::seq< impl::catch_end< NullaryInvokable > > | rangeless::fn::seq (NullaryInvokable gen_fn) |
| Adapt a generator function as InputRange . More...
|
|
template<typename Iterable > |
impl::seq< impl::refs_gen< Iterable > > | rangeless::fn::refs (Iterable &src) |
| Adapt a reference to Iterable as seq yielding reference-wrappers. More...
|
|
template<typename T > |
int | rangeless::fn::impl::compare (const T &a, const T &b) |
|
template<typename T > |
impl::gt< T > | rangeless::fn::by::decreasing (T x) |
| Wraps the passed value and exposes inverted operator<. More...
|
|
template<typename T > |
impl::gt< const T & > | rangeless::fn::by::decreasing (std::reference_wrapper< T > x) |
|
template<typename F > |
impl::comp< F > | rangeless::fn::by::make_comp (F key_fn) |
| Make binary comparison predicate from a key-function. More...
|
|
template<typename Iterator > |
constexpr view< Iterator > | rangeless::fn::from (Iterator it_beg, Iterator it_end) noexcept |
| Create a range-view from a pair of iterators. More...
|
|
template<typename Iterator > |
constexpr view< Iterator > | rangeless::fn::from (std::pair< Iterator, Iterator > p) noexcept |
| To enable composability of APIs returning a pair of iterators, e.g. std::equal_range. More...
|
|
template<typename Iterable , typename Iterator = typename Iterable::iterator> |
constexpr view< Iterator > | rangeless::fn::from (Iterable &src) noexcept |
| Create a range-view for a container, or an iterable that has begin and end as free functions rather than methods. More...
|
|
template<typename Iterable , typename Iterator = typename Iterable::const_iterator> |
constexpr view< Iterator > | rangeless::fn::from (const Iterable &src) noexcept |
|
template<typename Iterable , typename Iterator = typename Iterable::const_iterator> |
constexpr view< Iterator > | rangeless::fn::cfrom (const Iterable &src) noexcept |
|
template<typename Gen , typename T = typename Gen::value_type> |
any_seq_t< T > | rangeless::fn::make_typerased (impl::seq< Gen > seq) |
| Type-erase a seq . More...
|
|
impl::to_vector | rangeless::fn::to_vector () |
| Move elements of an Iterable to std::vector. More...
|
|
impl::to_seq | rangeless::fn::to_seq () |
| Wrap an Iterable , taken by value, as seq yielding elements by-move. More...
|
|
template<typename Container > |
impl::to< Container > | rangeless::fn::to (Container dest) |
| e.g. auto set_of_ints = fn::seq(...) % ... % fn::to(std::set<int>{}) ; More...
|
|
impl::counts | rangeless::fn::counts () |
| return map: value_type -> size_t More...
|
|
template<typename F > |
impl::adapt< F > | rangeless::fn::adapt (F fn) |
| Create a custom processing-stage function-object. More...
|
|
template<typename F > |
impl::transform< F > | rangeless::fn::transform (F map_fn) |
| Create a seq yielding results of applying the transform functions to input-elements. More...
|
|
template<typename Result , typename Op > |
impl::foldl< Result, Op > | rangeless::fn::foldl (Result init, Op binary_op) |
| Range-based version of c++20 (copy-free) std::accumulate More...
|
|
template<typename Op > |
impl::foldl_d< Op > | rangeless::fn::foldl_d (Op binary_op) |
| Fold-Left-with-Default: this version uses default-initialized value for init. More...
|
|
template<typename Op > |
impl::foldl_1< Op > | rangeless::fn::foldl_1 (Op binary_op) |
| Init-free version of foldl (first element is used as init); requires at least one element. More...
|
|
impl::sliding_window | rangeless::fn::sliding_window (size_t win_size) |
|
template<typename F > |
impl::for_each< F > | rangeless::fn::for_each (F fn) |
|
template<typename F2 > |
impl::for_each_adjacent< F2 > | rangeless::fn::for_each_adjacent (F2 fn2) |
|
template<typename P > |
impl::take_while< P > | rangeless::fn::take_while (P pred) |
| Yield elements until pred evaluates to false. More...
|
|
impl::take_while< impl::call_count_lt > | rangeless::fn::take_first (size_t n=1) |
| Yield first n elements. More...
|
|
impl::take_last | rangeless::fn::take_last (size_t n=1) |
| Yield last n elements. More...
|
|
template<typename P > |
impl::drop_while< P > | rangeless::fn::drop_while (P pred) |
| Drop elements until pred evaluates to false. More...
|
|
impl::drop_while< impl::call_count_lt > | rangeless::fn::drop_first (size_t n=1) |
| Drop first n elements. More...
|
|
impl::drop_last | rangeless::fn::drop_last (size_t n=1) |
| Drop last n elements. More...
|
|
template<typename P > |
impl::where< P > | rangeless::fn::where (P pred) |
| Filter elements. More...
|
|
template<typename SortedForwardRange , typename F > |
impl::where< impl::in_sorted_by< SortedForwardRange, F > > | rangeless::fn::where_in_sorted_by (const SortedForwardRange &r, F key_fn) |
|
template<typename SortedForwardRange > |
impl::where< impl::in_sorted_by< SortedForwardRange, by::identity > > | rangeless::fn::where_in_sorted (const SortedForwardRange &r) |
| Intersect with a sorted range. More...
|
|
template<typename SortedForwardRange , typename F > |
impl::where< impl::in_sorted_by< SortedForwardRange, F > > | rangeless::fn::where_not_in_sorted_by (const SortedForwardRange &r, F key_fn) |
|
template<typename SortedForwardRange > |
impl::where< impl::in_sorted_by< SortedForwardRange, by::identity > > | rangeless::fn::where_not_in_sorted (const SortedForwardRange &r) |
| Subtract a sorted range. More...
|
|
template<typename F > |
impl::where_max_by< F > | rangeless::fn::where_max_by (F key_fn) |
| Filter elements to those having maximum value of fn. More...
|
|
impl::where_max_by< by::identity > | rangeless::fn::where_max () |
|
template<typename F > |
impl::where_max_by< F > | rangeless::fn::where_min_by (F key_fn) |
|
impl::where_max_by< by::identity > | rangeless::fn::where_min () |
|
template<typename Pred > |
impl::exists_where< Pred > | rangeless::fn::exists_where (Pred p) |
|
template<typename F > |
impl::group_all_by< F > | rangeless::fn::group_all_by (F key_fn) |
| Similar to group_adjacent_by , but presorts the elements. More...
|
|
impl::group_all_by< by::identity > | rangeless::fn::group_all () |
|
template<typename F > |
impl::group_adjacent_by< F > | rangeless::fn::group_adjacent_by (F key_fn) |
| Group adjacent elements. More...
|
|
template<typename F > |
impl::group_adjacent_as_subseqs_by< F > | rangeless::fn::group_adjacent_by (F key_fn, impl::to_seq) |
| Group adjacent elements. More...
|
|
impl::group_adjacent_by< by::identity > | rangeless::fn::group_adjacent () |
|
impl::group_adjacent_as_subseqs_by< by::identity > | rangeless::fn::group_adjacent (impl::to_seq) |
|
template<typename BinaryPred > |
impl::group_adjacent_by< fn::by::identity, BinaryPred > | rangeless::fn::group_adjacent_if (BinaryPred pred2) |
| Group adjacent elements if binary predicate holds. More...
|
|
template<typename BinaryPred > |
impl::group_adjacent_as_subseqs_by< fn::by::identity, BinaryPred > | rangeless::fn::group_adjacent_if (BinaryPred pred2, impl::to_seq) |
| Group adjacent elements if binary predicate holds. More...
|
|
impl::group_adjacent_by< impl::chunker > | rangeless::fn::in_groups_of (size_t n) |
| Group adjacent elements into chunks of specified size. More...
|
|
impl::reverse | rangeless::fn::reverse () |
| Reverse the elements in the input container. More...
|
|
template<typename F > |
impl::sort_by< F, impl::stable_sort_tag > | rangeless::fn::sort_by (F key_fn) |
| stable-sort and return the input. More...
|
|
impl::sort_by< by::identity, impl::stable_sort_tag > | rangeless::fn::sort () |
| sort_by with key_fn = by::identity More...
|
|
template<typename F > |
impl::sort_by< F, impl::unstable_sort_tag > | rangeless::fn::unstable_sort_by (F key_fn) |
|
impl::sort_by< by::identity, impl::unstable_sort_tag > | rangeless::fn::unstable_sort () |
|
template<typename F > |
impl::lazy_sort_by< F > | rangeless::fn::lazy_sort_by (F key_fn) |
| Unstable lazy sort. More...
|
|
impl::lazy_sort_by< by::identity > | rangeless::fn::lazy_sort () |
| lazy_sort_by with key_fn = by::identity More...
|
|
template<typename F > |
impl::take_top_n_by< F > | rangeless::fn::take_top_n_by (size_t n, F key_fn) |
| Return top-n elements, sorted by key_fn. More...
|
|
impl::take_top_n_by< by::identity > | rangeless::fn::take_top_n (size_t n) |
| Return top-n elements, sorted by identity. More...
|
|
template<typename F > |
impl::unique_adjacent_by< F > | rangeless::fn::unique_adjacent_by (F key_fn) |
| Keep first element from every adjacently-equal run of elements. More...
|
|
impl::unique_adjacent_by< by::identity > | rangeless::fn::unique_adjacent () |
|
template<typename F > |
impl::unique_all_by< F > | rangeless::fn::unique_all_by (F key_fn) |
| Uniquefy elements globally, as-if unique_adjacent_by pre-sorted by same key. More...
|
|
impl::unique_all_by< by::identity > | rangeless::fn::unique_all () |
|
impl::concat | rangeless::fn::concat () |
| Flatten the result of group_all_by or group_adjacent_by . More...
|
|
template<typename Iterable > |
impl::append< Iterable > | rangeless::fn::append (Iterable next) |
| Yield elements of next after elements of arg. More...
|
|
template<typename Iterable , typename BinaryFn > |
impl::zip_with< Iterable, BinaryFn > | rangeless::fn::zip_with (Iterable second, BinaryFn fn) |
| Yield pairs of elements, (up to end of the shorter range) More...
|
|
template<typename BinaryFn > |
impl::zip_adjacent< BinaryFn > | rangeless::fn::zip_adjacent (BinaryFn fn) |
| Yield invocations of fn over pairs of adjacent inputs. More...
|
|
template<typename Iterable , typename BinaryFn > |
impl::cartesian_product_with< Iterable, BinaryFn > | rangeless::fn::cartesian_product_with (Iterable second, BinaryFn fn) |
|
template<typename Container , typename P > |
auto | rangeless::fn::get_unique (Container &container, P &&pred) -> decltype(*container.begin()) |
| Access unique element matching the predicate. More...
|
|
template<typename Container , typename P , typename Construct > |
auto | rangeless::fn::set_unique (Container &container, P &&pred, Construct &&con) -> decltype(*container.begin()) |
| Similar to get_unique, but end-insert an element if missing. More...
|
|
template<typename Container > |
auto | rangeless::fn::first_or_default (const Container &c) -> typename Container::value_type |
| e.g. const CConstRef<CSeq_align> aln = first_or_default( get_alns_annot(...)->Get() ); More...
|
|
template<typename Container , typename Pred > |
auto | rangeless::fn::first_or_default (const Container &c, Pred &&pred) -> typename Container::value_type |
|
template<typename Container > |
auto | rangeless::fn::last_or_default (const Container &c) -> typename Container::value_type |
|
template<typename Container , typename Pred > |
auto | rangeless::fn::last_or_default (const Container &c, Pred &&pred) -> typename Container::value_type |
|
template<typename F > |
impl::memoizer< F > | rangeless::fn::make_memoized (F fn) |
| Memoizing wrapper for non-recursive non-mutable unary lambdas (not synchronized). More...
|
|
template<typename F > |
impl::scope_guard< F > | rangeless::fn::make_scope_guard (F fn) |
| Basic scope guard - execute some code in guard`s destructor. More...
|
|
template<typename Arg , typename F > |
auto | rangeless::fn::operators::operator % (Arg &&arg, F &&fn) -> decltype(std::forward< F >(fn)(std::forward< Arg >(arg))) |
| return std::forward<F>(fn)(std::forward<Arg>(arg)) More...
|
|
template<typename Arg , typename F > |
auto | rangeless::fn::operators::operator %= (Arg &arg, F &&fn) -> decltype(void(std::forward< F >(fn)(std::move(arg)))) |
| arg = fn::to(Arg{})(std::forward<F>(fn)(std::move(arg))); More...
|
|
template<class Container1 , class Container2 > |
auto | rangeless::fn::operators::operator<<= (Container1 &cont1, Container2 &&cont2) -> decltype(void(cont1.insert(cont1.end(), std::move(*cont2.begin())))) |
| End-insert elements of cont2 into cont1 by-move. More...
|
|
template<class Container1 , class Container2 > |
auto | rangeless::fn::operators::operator<<= (Container1 &cont1, const Container2 &cont2) -> decltype(void(cont1.insert(cont1.end(), *cont2.begin()))) |
|
template<class Container1 , class Gen > |
void | rangeless::fn::operators::operator<<= (Container1 &cont1, impl::seq< Gen > seq) |
|
template<class Container > |
void | rangeless::fn::operators::operator<<= (Container &cont, typename Container::value_type el) |
|
auto | rangeless::tsv::from (std::istream &istr, char delim='\t', params params={}) -> fn::impl::seq< fn::impl::transform< tsv::split_on_delim >::gen< fn::impl::catch_end< tsv::get_next_line > > > |
| Read tab-separated-values from stream. More...
|
|
impl::async_wr | rangeless::fn::to_async (size_t queue_size=16) |
| Wrap generating seq in an async-task. More...
|
|
template<typename F > |
impl::par_transform< F, impl::std_async > | rangeless::fn::transform_in_parallel (F map_fn) |
| Parallelized version of fn::transform More...
|
|
template<typename F , typename Async > |
impl::par_transform< F, Async > | rangeless::fn::transform_in_parallel (F map_fn, Async async) |
| A version of transform_in_parallel that uses a user-provided Async (e.g. backed by a fancy work-stealing thread-pool implementation). More...
|
|