Commit Graph

70 Commits

Author SHA1 Message Date
Behdad Esfahbod 59a8fa5353 [iter] Add tests for casting to hb_iter_t<> base class for hb_sorted_array_t<>
Something's phishy about hb_sorted_array_t<>.  Can't get it work nicely with
change I'm making.  Ugh..
2019-04-24 12:49:58 -04:00
Behdad Esfahbod 12017db0bf Move test code around 2019-04-24 09:24:38 -04:00
Ebrahim Byagowi 64ca2ffa4c
Fix clang's -Wmain complain (#1678) 2019-04-23 01:10:46 -07:00
Behdad Esfahbod 25dd88efc6 Err, fix hb_invoke() variadic 2019-04-22 17:47:07 -04:00
Behdad Esfahbod 42ab32cbba [iter] Remove passing pointer to hb_iter()
While doable with hb_deref_pointer() as well, we also would then
need to do it in a ton of places.  Not worth it / messy.
2019-04-02 18:42:51 -07:00
Behdad Esfahbod b6f29bf141 [iter] Accept pointers in hb_iter()
No idea how to avoid dupicating code.  Was hoping hb_deref_pointer()
would do it, but looks like a pointer can't bind to a universal
reference T&&.  Humm.
2019-04-02 18:12:01 -07:00
Ebrahim Byagowi edad6b2c45
[test][iter] minor, fix double promotion warning 2019-04-03 00:48:59 +04:30
Ebrahim Byagowi 062f5d6e7a
[test] minor, c style comments 2019-04-02 20:27:00 +04:30
Ebrahim Byagowi afdbf960d6
[iter][test] Add another test for hb_reduce
Different initial and accumulator types
2019-04-02 20:25:06 +04:30
Ebrahim Byagowi b8642087e6 [iter] hb_reduce, accumulator with a different type 2019-04-01 16:56:29 -07:00
Ebrahim Byagowi e526414c75 [iter] Implement hb_reduce 2019-04-01 16:56:29 -07:00
Behdad Esfahbod 78fc43f293 [iter] Fix up build, ouch
Yeah, some things not very clear...
2019-03-31 19:17:07 -07:00
Behdad Esfahbod e530692799 [iter] Fix bug in hb_any() and hb_none() 2019-03-29 23:31:39 -07:00
Behdad Esfahbod 443db2a246 [iter] Remove hb_len()
Not planning on using it.  So remove.  Can add later if needed.
2019-03-29 10:47:13 -07:00
Behdad Esfahbod f639b9a8ea [iter] Add hb_len() function-object 2019-03-28 21:34:47 -07:00
Behdad Esfahbod 77060bcda2 [iter] Add hb_all, hb_any, hb_none 2019-02-15 16:55:08 -08:00
Behdad Esfahbod fa35d3fd81 [iter] Add hb_drain 2019-02-14 14:04:05 -08:00
Behdad Esfahbod 773d75637c [iter] Add hb_apply() 2019-02-14 11:40:22 -08:00
Behdad Esfahbod 5fa52e62b1 [iter] Accept iterator, not iterable, in hb_sink()() 2019-02-14 10:51:02 -08:00
Behdad Esfahbod 849a0f1758 [iter] Add hb_iter_with_fallback_t instead 2019-01-29 17:10:19 -08:00
Behdad Esfahbod 4d40ed9d1a [iter] Add hb_iter_with_mixin_t<> 2019-01-29 13:55:23 -08:00
Behdad Esfahbod 84a25d79c6 [iter] Rename 2019-01-29 13:39:19 -08:00
Behdad Esfahbod 57795bc8dd [iter] Add operator>> and operator<< 2019-01-28 16:23:12 -05:00
Behdad Esfahbod 0363ce650b [iter] Accept C arrays in hb_iter() 2019-01-27 01:06:32 +01:00
Behdad Esfahbod b62e7f9223 [test] Test unary operator+
"Test" as in compiles..
2019-01-27 00:51:57 +01:00
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