Behdad Esfahbod
6521d5b201
[iter] Export operator << / >>
2019-01-29 13:44:39 -08:00
Behdad Esfahbod
84a25d79c6
[iter] Rename
2019-01-29 13:39:19 -08:00
Behdad Esfahbod
e75b22039f
Move hb_addressof() to hb-meta.hh
2019-01-28 21:26:23 -05:00
Behdad Esfahbod
71157a4520
[meta] Remove _ft struct names
...
Using decltype() instead.
2019-01-28 21:20:12 -05:00
Behdad Esfahbod
57795bc8dd
[iter] Add operator>> and operator<<
2019-01-28 16:23:12 -05:00
Behdad Esfahbod
8bd96be994
[iter] Use auto c = C.iter() internally
2019-01-28 16:17:36 -05:00
Behdad Esfahbod
0363ce650b
[iter] Accept C arrays in hb_iter()
2019-01-27 01:06:32 +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
313d63e240
[meta] Back to using _ft suffix for function-object types
...
Seprate namespace, cleaner, more clear.
2019-01-26 22:58:26 +01:00
Behdad Esfahbod
509353357c
[iter] Use hb_declval() instead of Null() to get instance
...
I had used Null to make one of the bots happy before. Not going
to bend to such demands anymore..
2019-01-26 22:47:35 +01:00
Behdad Esfahbod
6b6783e158
[iter/meta] Fix build on newer clang
...
The mystery failure had to do with SFINAE failure because the template
function involved was accessing ::iter_t of a type that was also named iter_t.
In this context, apparently:
warning: ISO C++ specifies that qualified reference to 'iter_t' is a
constructor name rather than a type in this context, despite preceding 'typename' keyword
[-Winjected-class-name]
We use a new macro, also called hb_iter_t(), to get iterator type of
a type. This uses declval/hb_decltype, and has the added benefit
that it returns correct type for const vs non-const objects, if they
have different iterators.
2019-01-26 22:44:09 +01:00
Behdad Esfahbod
5adb113baf
[meta] Mark function-objects as const
2019-01-26 22:15:59 +01:00
Behdad Esfahbod
090fe56dc6
Merge branch 'master' into iter
2019-01-25 16:06:52 +01:00
Behdad Esfahbod
70a52d6bd8
Convert all other enum class consts to static constexpr
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/1553
2019-01-22 12:17:26 +01:00
Behdad Esfahbod
83cecd80d9
[iter] Default projection to identity
2019-01-20 20:12:12 -05:00
Behdad Esfahbod
471e96e55d
[iter] Use forwarding references
2019-01-20 20:12:12 -05:00
Behdad Esfahbod
343f5a4bfc
[iter] Misc fixes to get piping almost work
2019-01-20 20:12:12 -05:00
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