Commit Graph

76 Commits

Author SHA1 Message Date
Behdad Esfahbod f35568d603 [iter] Add hb_filter()
Untested.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod 1733e4702c [iter] Add hb_map()
Untested.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod f7fcc47641 [iter] Make hb_zip() take const references 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 200cdb721b [iter] Rename hb_zip_t to hb_zip_iter_t 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 014c50292b [iter] Move code 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 6e3ad650d1 Rename hb-dsalgs to hb-algs 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 7987095e64 [meta] Remove hb_enable_if_t
It was only used for C++<11 which does not allow default parameters
in function templates.  Looks like we cannot support <11 anyway, so,
start cleaning up.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod 15a6928436 [iter] Implement operator-> unconditionally
The right condition to check for would have been "is_struct", which
we don't have.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod 84e5d00229 [iter] Add hb_zip() 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 636786ecaf [iter] Rename __item_type__ to __item_t__ 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 42bf80e578 [iter] More semicolon 2019-01-20 20:12:12 -05:00
Behdad Esfahbod f78f837ef1 [iter] Use aliasing using for types
Fix ambiguity of hb_sorted_array_t::item_t with gcc.  No idea if that's a gcc bug
or what spec requires, but using aliasing using seems to fix it.  It probably breaks
our non-C++11 bots, in which case I have to condition the change.  Testing.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod 6af9c5f18e [iter] Remove stray semicolons 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 6c548b6657 [iter] Add TODO 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 54c30e949e [iter] Constrain hb_fill() and hb_copy() 2019-01-20 20:12:12 -05:00
Behdad Esfahbod dc0a98cbe7 [iter] Add TODO 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 2658e40ffb [iter] Add hb_is_random_access_iterator() 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 445364d80a [iter] Rename hb_is_[sorted_]iterator() -> hb_is_[sorted_]iterator_of() 2019-01-20 20:12:12 -05:00
Behdad Esfahbod a6c013b1bf [meta] Add hb_declval() macro 2019-01-20 20:12:12 -05:00
Behdad Esfahbod adc5910a63 [iter] Syntax 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 47333c8a30 [iter] Fix operator-> 2019-01-20 20:12:12 -05:00
Behdad Esfahbod da49961836 [iter] Remove comment 2019-01-20 20:12:12 -05:00
Behdad Esfahbod ed4336680d [iter] Handhold hb_is_iterator() type deduction
by partial-instantiating on Iter.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod cb5011d364 Revert "[iter] Add hb_iter_of_t<>"
This reverts commit d6cbe96e2fc7bc8f1c10e631b52b1ef31ff9a6f5.

Isn't useful, as duplicate inheritance of same type results in ambiguity
errors...
2019-01-20 20:12:12 -05:00
Behdad Esfahbod c132cda9d9 [iter] Fix warnings 2019-01-20 20:12:12 -05:00
Behdad Esfahbod c9d8a07e30 [iter] Add hb_iter_of_t<> 2019-01-20 20:12:12 -05:00
Behdad Esfahbod b5d6fe1a45 [iter] Remove hb_sorted_iter_t
Not enforcing it using type hierarchy.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod 183be8f452 [iter] Minor 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 6cd96ba1ac [iter] Make is_random_access_iterator a constant
We cannot rely on constexpr functions...
2019-01-20 20:12:12 -05:00
Behdad Esfahbod 93615b9598 [iter/meta] Add hb_is_sorted_iterator() 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 92f25db1e8 [iter] Remove stale comment 2019-01-20 20:12:12 -05:00
Behdad Esfahbod d552b6818c [meta] Move typename around
We'll see if bots like.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod aa2ab4f061 [iter] WHitespace 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 06a44e2e53 [iter/meta] Match hb_is_iterator<> using SFINAE
By specifying Item type, which is desirable.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod 859a880b08 [iter] Add back operator +
Too ugly to remove..
2019-01-20 20:12:12 -05:00
Behdad Esfahbod 076faf7c18 [iter] Disable operator +
To see if it makes bots happy... This is frustrating.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod 037f735efd [iter] Remove friend operator +, hoping to fix some bots 2019-01-20 20:12:12 -05:00
Behdad Esfahbod cb27918d0a Use Null() instead of declval(), hoping to fix some bots 2019-01-20 20:12:12 -05:00
Behdad Esfahbod df138da2e6 [iter/meta] Implement is_iterator
Removes use of auto type deduction again, which was not supported on many bots.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod 8570da1d74 [meta] Minor 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 8c6cbbdfa3 [iter/meta] Add hb_is_iterable 2019-01-20 20:12:12 -05:00
Behdad Esfahbod e76a3cae0f Add hb-meta.hh for meta-programming 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 5ec11ce13a [iter] Clarify readonly vs lvalue iterators
lvalue iterators must declare __item_type__ as a reference.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod 570473a345 [iter] Make hb_sorted_array_t work as iter
Ugly, but does the job.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod 7788ac14a4 [iter] Remove redundant methods 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 743ff09368 [iter] Implement friend opeator + (int, iter) 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 6dc4a1c9b1 [iter] Remove const_iter 2019-01-20 20:12:12 -05:00
Behdad Esfahbod f2b56af3ef [iter] Remove hack for older compilers 2019-01-20 20:12:12 -05:00
Behdad Esfahbod fb053b6333 [iter] Rename random_access() to constexpr is_random_access() 2019-01-20 20:12:12 -05:00
Behdad Esfahbod 2790aad28c [iter] Add operator -> 2019-01-20 20:12:12 -05:00