Behdad Esfahbod
778c96b8d7
[iter] Fix hb_iter()
2019-01-27 00:50:54 +01:00
Behdad Esfahbod
2f5b1a9104
[iter] Add unary operator+ that returns a copy
2019-01-27 00:49:37 +01:00
Behdad Esfahbod
fbab07f9b3
[iter] Add hb_bool() and make hb_filter default to it for predicate
2019-01-27 00:44:45 +01:00
Behdad Esfahbod
2aff6d9625
[iter] Test that default-constructed iterators are empty
2019-01-26 22:54:25 +01:00
Behdad Esfahbod
090fe56dc6
Merge branch 'master' into iter
2019-01-25 16:06:52 +01: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
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
3fc03e42ce
[iter] Use static_assert with hb_is_random_access_iterator()
...
Both, checks constexpr'ness, and fixes build with cra**y implementations
of assert() macro:
test-iter.cc:108:11: error: too many arguments provided to function-like macro invocation
assert (hb_is_random_access_iterator (array_iter_t<int>));
^
./hb-iter.hh:186:42: note: expanded from macro 'hb_is_random_access_iterator'
hb_is_random_access_iterator_of (Iter, typename Iter::item_t)
^
/usr/include/x86_64-linux-gnu/sys/cdefs.h:89:9: note: macro '__STRING' defined here
\#define __STRING(x) #x
^
test-iter.cc:108:3: error: use of undeclared identifier '__STRING'
assert (hb_is_random_access_iterator (array_iter_t<int>));
^
/usr/include/assert.h:91:21: note: expanded from macro 'assert'
: __assert_fail (__STRING(expr), __FILE__, __LINE__, __ASSERT_FUNCTION))
^
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
ca6adcd1ad
[iter] Test hb_is_iterable / hb_is_iterator
2019-01-20 20:12:12 -05:00
Behdad Esfahbod
47333c8a30
[iter] Fix operator->
2019-01-20 20:12:12 -05:00
Behdad Esfahbod
85969e357a
[iter] Fix test
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
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
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
2cbf5bf3a9
[iter] Test OT::Coverage iter
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
3dea9affda
[iter] Test default-constructability
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
2ea79e0340
[iter] Minor
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
d3976b7e63
[iter] Make them work, mostly
2019-01-20 20:12:12 -05:00
Behdad Esfahbod
e4355b1ca1
[set] Add iter_t as alias to const_iter_t
2018-12-23 20:34:24 -05:00
Behdad Esfahbod
2a33ab0560
[iter] Change __more__ to fallback to __len__
2018-12-21 18:53:01 -05:00
Behdad Esfahbod
474a12058d
[array/vector] Rename len to length
2018-12-21 18:53:01 -05:00
Behdad Esfahbod
2fc1860a5b
[iter] Split hb_iter_t<> into hb_iter_t<> and hb_iter_mixin_t<>
2018-12-21 18:09:45 -05:00
Behdad Esfahbod
865deeb3be
Adjust internal header dependencies
2018-12-21 17:46:10 -05:00
Behdad Esfahbod
7557e34872
[iter] Move hb_fill() and hb_copy() to hb-iter.hh
2018-12-21 17:21:19 -05:00
Behdad Esfahbod
65e8bd56ad
[iter] Fix hb_copy() return value
2018-12-21 16:20:30 -05:00
Behdad Esfahbod
aaddfaa57a
[iter] Make hb_fill() take collection type, not iter
...
Starting to get the hang of when take which.
2018-12-21 16:04:38 -05:00
Behdad Esfahbod
3dbe1e364c
[iter] Add .random_access()
2018-12-21 15:53:09 -05:00
Behdad Esfahbod
bdb6da7226
[iter] Fix test again
2018-12-21 11:20:27 -05:00
Behdad Esfahbod
e952075248
Minor
2018-12-21 11:15:16 -05:00
Behdad Esfahbod
35503d7d73
[iter] More prototyping
2018-12-21 03:03:46 -05:00
Behdad Esfahbod
73c7a896d1
[iter] Make hb_fill() and hb_copy() take iterators
...
I'm still going back and force...
2018-12-21 02:48:28 -05:00
Behdad Esfahbod
12e506fda4
[iter] Add hb_fill()
2018-12-21 02:47:04 -05:00
Behdad Esfahbod
ad3ed58de5
[iter] Start prototyping hb_copy()
2018-12-21 02:25:58 -05:00
Behdad Esfahbod
44af738d19
[iter] Showcase implicit casts
2018-12-21 01:59:37 -05:00
Behdad Esfahbod
8001e00a47
[iter] First sample use
2018-12-21 01:53:27 -05:00
Behdad Esfahbod
314d8698d0
[iter] Sketch new iterator design
2018-12-21 01:15:49 -05:00
Behdad Esfahbod
f6d5f1e91c
[iter] Add empty test
2018-12-21 00:23:46 -05:00