#ifndef HB_ITER_HH
#define HB_ITER_HH
#include "hb.hh"
#include "hb-algs.hh"
#include "hb-meta.hh"
template <typename iter_t, typename Item = typename iter_t::__item_t__>
struct hb_iter_t
{ … };
#define HB_ITER_USING(Name) …
hb_iter_type;
hb_item_type;
template <typename> struct hb_array_t;
template <typename> struct hb_sorted_array_t;
struct
{ … }
HB_FUNCOBJ(…);
struct
{ … }
HB_FUNCOBJ(…);
template <typename iter_t, typename item_t = typename iter_t::__item_t__>
struct hb_iter_fallback_mixin_t
{ … };
template <typename iter_t, typename item_t = typename iter_t::__item_t__>
struct hb_iter_with_fallback_t :
hb_iter_t<iter_t, item_t>,
hb_iter_fallback_mixin_t<iter_t, item_t>
{ … };
template<typename Iter, typename Item>
struct hb_is_iterator_of
{ … };
#define hb_is_iterator_of(Iter, Item) …
#define hb_is_iterator(Iter) …
#define hb_is_sorted_iterator_of(Iter, Item) …
#define hb_is_sorted_iterator(Iter) …
template <typename T>
struct hb_is_iterable
{ … };
#define hb_is_iterable(Iterable) …
template<typename Iter, typename Item>
struct hb_is_source_of
{ … };
#define hb_is_source_of(Iter, Item) …
template<typename Iter, typename Item>
struct hb_is_sink_of
{ … };
#define hb_is_sink_of(Iter, Item) …
#define hb_is_sorted_source_of(Iter, Item) …
template <typename Iterable,
hb_requires (hb_is_iterable (Iterable))>
static inline auto begin (Iterable&& iterable) HB_AUTO_RETURN (hb_iter (iterable).begin ())
template <typename Iterable,
hb_requires (hb_is_iterable (Iterable))>
static inline auto end (Iterable&& iterable) HB_AUTO_RETURN (hb_iter (iterable).end ())
OT
template <typename Lhs, typename Rhs,
hb_requires (hb_is_iterator (Lhs))>
static inline auto
operator | (Lhs&& lhs, Rhs&& rhs) HB_AUTO_RETURN (std::forward<Rhs> (rhs) (std::forward<Lhs> (lhs)))
enum class hb_function_sortedness_t { … };
template <typename Iter, typename Proj, hb_function_sortedness_t Sorted,
hb_requires (hb_is_iterator (Iter))>
struct hb_map_iter_t :
hb_iter_t<hb_map_iter_t<Iter, Proj, Sorted>,
decltype (hb_get (hb_declval (Proj), *hb_declval (Iter)))>
{ … };
template <typename Proj, hb_function_sortedness_t Sorted>
struct hb_map_iter_factory_t
{ … };
struct
{ … }
HB_FUNCOBJ(…);
struct
{ … }
HB_FUNCOBJ(…);
struct
{ … }
HB_FUNCOBJ(…);
template <typename Iter, typename Pred, typename Proj,
hb_requires (hb_is_iterator (Iter))>
struct hb_filter_iter_t :
hb_iter_with_fallback_t<hb_filter_iter_t<Iter, Pred, Proj>,
typename Iter::item_t>
{ … };
template <typename Pred, typename Proj>
struct hb_filter_iter_factory_t
{ … };
struct
{ … }
HB_FUNCOBJ(…);
template <typename Redu, typename InitT>
struct hb_reduce_t
{ … };
struct
{ … }
HB_FUNCOBJ(…);
template <typename A, typename B>
struct hb_zip_iter_t :
hb_iter_t<hb_zip_iter_t<A, B>,
hb_pair_t<typename A::item_t, typename B::item_t>>
{ … };
struct
{ … }
HB_FUNCOBJ(…);
template <typename A, typename B>
struct hb_concat_iter_t :
hb_iter_t<hb_concat_iter_t<A, B>, typename A::item_t>
{ … };
struct
{ … }
HB_FUNCOBJ(…);
template <typename Appl>
struct hb_apply_t
{ … };
struct
{ … }
HB_FUNCOBJ(…);
template <typename T, typename S>
struct hb_range_iter_t :
hb_iter_t<hb_range_iter_t<T, S>, T>
{ … };
struct
{ … }
HB_FUNCOBJ(…);
template <typename T, typename S>
struct hb_iota_iter_t :
hb_iter_with_fallback_t<hb_iota_iter_t<T, S>, T>
{ … };
struct
{ … }
HB_FUNCOBJ(…);
template <typename T>
struct hb_repeat_iter_t :
hb_iter_t<hb_repeat_iter_t<T>, T>
{ … };
struct
{ … }
HB_FUNCOBJ(…);
struct
{ … }
HB_FUNCOBJ(…);
struct
{ … }
HB_FUNCOBJ(…);
struct
{ … }
HB_FUNCOBJ(…);
template <typename Sink>
struct hb_sink_t
{ … };
struct
{ … }
HB_FUNCOBJ(…);
struct
{ … }
HB_FUNCOBJ(…);
template <typename Sink1, typename Sink2>
struct hb_unzip_t
{ … };
struct
{ … }
HB_FUNCOBJ(…);
struct
{ … }
HB_FUNCOBJ(…);
struct
{ … }
HB_FUNCOBJ(…);
struct
{ … }
HB_FUNCOBJ(…);
template <typename C, typename V,
hb_requires (hb_is_iterable (C))>
inline void
hb_fill (C&& c, const V &v)
{ … }
template <typename S, typename D>
inline void
hb_copy (S&& is, D&& id)
{ … }
#endif