Behdad Esfahbod
fe14a4000a
Adjust hb_all/any/none
2019-05-08 09:32:19 -07:00
Behdad Esfahbod
bdbfdc92b5
[iter] Add value and projection to hb_all/any/none
...
Allows for eg, checking all values equal 2: hb_all (it, 2).
2019-05-07 23:02:44 -07:00
Behdad Esfahbod
cf61acb9ea
[iter] Accept rvalues to hb_enumerate()
2019-05-07 22:45:01 -07:00
Behdad Esfahbod
af571dbffc
[meta] Replace most hb_enable_if with hb_requires
...
They do absolutely same thing. hb_requires is to encode constraints,
whereas hb_enable_if is for more conditional enabling.
2019-05-07 21:39:20 -07:00
Behdad Esfahbod
41248cce0e
Remove MIN/MAX in favor of hb_min/hb_max
2019-05-07 20:54:31 -07:00
Behdad Esfahbod
7654ebe3a5
Whitespace
2019-05-07 16:53:03 -07:00
Behdad Esfahbod
c09d6c58e9
[iter] Require lvalue in operators that return reference
2019-05-07 14:09:00 -07:00
Behdad Esfahbod
8903040fcd
Actually make it work
2019-05-07 00:13:11 -07:00
Behdad Esfahbod
025eaa3c81
[iter] Make filter/map copyable
2019-05-07 00:05:37 -07:00
Behdad Esfahbod
0b1ca5a13b
[iter] Adjust hb_filter
2019-05-06 23:04:32 -07:00
Behdad Esfahbod
4c2fd05ca5
[iter] Implement range-based for loops
...
Part of https://github.com/harfbuzz/harfbuzz/issues/1648
2019-05-06 19:57:35 -07:00
Ebrahim Byagowi
92588782d7
Remove space between right angle brackets now that we have C++11 ( #1689 )
2019-04-30 13:05:10 -07:00
Behdad Esfahbod
73c82f2301
[iter] Fix hb_is_iterator_of() to actually check item type
2019-04-26 13:16:48 -07:00
Behdad Esfahbod
714307cc43
[iter] Remove fixed TODO
2019-04-24 10:56:12 -04:00
Behdad Esfahbod
ae8da4b61b
Minor
2019-04-22 15:25:11 -04:00
Behdad Esfahbod
6916b77863
One more auto return type
2019-04-16 18:33:51 -04:00
Behdad Esfahbod
54ece299bc
Use type aliasing for meta-functions, ie. those returning a type
2019-04-16 16:45:53 -04:00
Behdad Esfahbod
b8e763fd71
[meta] Add hb_invoke()
2019-04-16 10:54:24 -04:00
Behdad Esfahbod
a3fcb9a370
[meta] Add HB_AUTO_RETURN_EXPR, HB_VOID_RETURN_EXPR, hb_priority, hb_has(), hb_get()
...
The first three based on range-v3.
2019-04-16 10:45:57 -04:00
Behdad Esfahbod
89fea21697
Fix copyright
2019-04-15 17:36:09 -04:00
Behdad Esfahbod
02d864aa26
Add HB_FUNCOBJ()
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1651
2019-04-15 15:39:30 -04:00
Behdad Esfahbod
a98e4068e7
Revert "Hide symbols in hb-iter"
...
This reverts commit 98f14c4cdb
.
Same as previous commit.
2019-04-12 22:42:44 -04:00
Behdad Esfahbod
98f14c4cdb
Hide symbols in hb-iter
...
Painful. All template methods need to be explicitly hidden :(.
Maybe we should switch to -fvisibility=hidden pragma.
A LOT more to go.
2019-04-12 18:12:06 -04:00
Behdad Esfahbod
2bd2750234
[iter] Tweak SFINAE again
...
Don't think we need hb_is_same().
2019-04-03 15:31:53 -07:00
Behdad Esfahbod
d419a9a437
[iter] Use different SFINAE scheme to make MSVC happy
...
From Orvid King: TLDR; MSVC has some issues using sizeof(declval<T>()) for
SFINAE of templated types, so I just used SFINAE in a different context where
MSVC doesn't have the issue.
2019-04-03 14:18:19 -07: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
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
8a8d45b924
[iter] Adjust hb_copy() and use it
...
Untested.
2019-03-31 19:00:09 -07:00
Behdad Esfahbod
e530692799
[iter] Fix bug in hb_any() and hb_none()
2019-03-29 23:31:39 -07:00
Behdad Esfahbod
d51452500f
[iter] Remove more wrong &&'s
...
Sigh...
2019-03-29 22:48:12 -07:00
Behdad Esfahbod
6237b47f0c
[iter] Add hb_unzip()
2019-03-29 21:36:49 -07:00
Behdad Esfahbod
8e34cb251a
[iter] Remove unneeded &&
...
Next commit needs this. I never fully get this, sigh.
2019-03-29 21:14:20 -07:00
Behdad Esfahbod
4c38a9f601
Remove hb_assign()
...
Not needed anymore. We just use operator= now.
2019-03-29 20:23:07 -07:00
Behdad Esfahbod
3f36c89f2e
Inline explicit_operator macro
...
Now that we require C++11, no need to macro.
2019-03-29 15:22:46 -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
72dd5e34e0
[iter] Make hb_iter() into function-object
2019-02-15 16:15:50 -08:00
Behdad Esfahbod
98be7bd77a
[iter] Make hb_map into function-object
2019-02-15 16:09:29 -08:00
Behdad Esfahbod
b8b3b3e38b
[iter] Add hb_enumerate() and use it
2019-02-15 16:05:36 -08:00
Behdad Esfahbod
5b99c92d4c
[iter] Use more
2019-02-14 17:10:04 -08:00
Behdad Esfahbod
fa35d3fd81
[iter] Add hb_drain
2019-02-14 14:04:05 -08:00
Behdad Esfahbod
0670e1a6f5
[iter] Remove excess use of universal references
...
Every time I have to study these to understand why a change is right..
2019-02-14 11:53:40 -08:00
Behdad Esfahbod
773d75637c
[iter] Add hb_apply()
2019-02-14 11:40:22 -08:00
Behdad Esfahbod
00db94095d
[iter] Make hb_filter() a function-object
2019-02-14 11:10:13 -08:00
Behdad Esfahbod
aa4c321262
[iter] Make hb_zip() a function-object
2019-02-14 11:07:12 -08:00
Behdad Esfahbod
f8fcfb263e
[iter] Accept pointers to hb_sink()
2019-02-14 11:03:29 -08:00