platform/upstream/libHarfBuzzSharp.git
5 years ago[iter] Make hb_is_iterator_of() check is_convertible
Behdad Esfahbod [Thu, 9 May 2019 21:53:02 +0000 (14:53 -0700)]
[iter] Make hb_is_iterator_of() check is_convertible

Instead of is_cr_convertible.

5 years ago[meta] Add hb_conditional<> and hb_is_convertible()
Behdad Esfahbod [Thu, 9 May 2019 21:35:15 +0000 (14:35 -0700)]
[meta] Add hb_conditional<> and hb_is_convertible()

5 years ago[subset] Switch building of glyph maps in subset plan to use iterators.
Garret Rieger [Wed, 8 May 2019 23:33:03 +0000 (16:33 -0700)]
[subset] Switch building of glyph maps in subset plan to use iterators.

5 years agoAdd sink support for hb_hashmap_t and a reverse call to hb_pair_t.
Garret Rieger [Wed, 8 May 2019 23:31:52 +0000 (16:31 -0700)]
Add sink support for hb_hashmap_t and a reverse call to hb_pair_t.

5 years agoAdd hb_pair_t(,) macro as alternative to hb_pair_t<,>
Behdad Esfahbod [Thu, 9 May 2019 20:15:36 +0000 (13:15 -0700)]
Add hb_pair_t(,) macro as alternative to hb_pair_t<,>

Just so it's easier to use it in other macros.

5 years agoAdd hb_lidentity(), and rename hb_rvalue() to hb_ridentity()
Behdad Esfahbod [Thu, 9 May 2019 19:43:57 +0000 (12:43 -0700)]
Add hb_lidentity(), and rename hb_rvalue() to hb_ridentity()

5 years ago[hdmx] Adjust to hb_iota() behavior change
Behdad Esfahbod [Thu, 9 May 2019 19:14:36 +0000 (12:14 -0700)]
[hdmx] Adjust to hb_iota() behavior change

Use hb_range() instead.

5 years ago[enumerate] Fix hb_enumerate() len for step=0
Behdad Esfahbod [Thu, 9 May 2019 19:07:45 +0000 (12:07 -0700)]
[enumerate] Fix hb_enumerate() len for step=0

5 years ago[iter] Fix hb_zip() end condition
Behdad Esfahbod [Thu, 9 May 2019 18:30:31 +0000 (11:30 -0700)]
[iter] Fix hb_zip() end condition

We should compare-equal to end if either iterator's end reaches,
not if both reach at the same time.  Fixes infinite-loop in test
which was happening after hb_enumerate() switched to using hb_zip().

5 years ago[iter] Minor
Behdad Esfahbod [Thu, 9 May 2019 18:30:27 +0000 (11:30 -0700)]
[iter] Minor

5 years ago[iter] Minor
Behdad Esfahbod [Thu, 9 May 2019 18:25:02 +0000 (11:25 -0700)]
[iter] Minor

5 years ago[test-iter] Don't walk past end
Behdad Esfahbod [Thu, 9 May 2019 18:23:41 +0000 (11:23 -0700)]
[test-iter] Don't walk past end

That's not legal.

5 years ago[iter] Allow negative step in hb_iota()
Behdad Esfahbod [Thu, 9 May 2019 18:20:41 +0000 (11:20 -0700)]
[iter] Allow negative step in hb_iota()

5 years ago[iter] Minor
Behdad Esfahbod [Thu, 9 May 2019 18:14:06 +0000 (11:14 -0700)]
[iter] Minor

5 years ago[iter] Bug fix
Behdad Esfahbod [Thu, 9 May 2019 18:10:31 +0000 (11:10 -0700)]
[iter] Bug fix

5 years ago[iter] Fix
Behdad Esfahbod [Thu, 9 May 2019 18:08:25 +0000 (11:08 -0700)]
[iter] Fix

5 years ago[iter] Take start value in hb_enumerate()
Behdad Esfahbod [Thu, 9 May 2019 18:07:38 +0000 (11:07 -0700)]
[iter] Take start value in hb_enumerate()

Also rewrite it via composition.

5 years ago[iter] Add hb_range()
Behdad Esfahbod [Thu, 9 May 2019 18:02:56 +0000 (11:02 -0700)]
[iter] Add hb_range()

hb_range() is like Python range.  hb_iota() has slightly different API.
Ie. it takes a start, instead of end.

5 years ago[meta] Add hb_int_max()
Behdad Esfahbod [Thu, 9 May 2019 18:00:43 +0000 (11:00 -0700)]
[meta] Add hb_int_max()

5 years ago[iota] end -> end_ to not shadow
Behdad Esfahbod [Thu, 9 May 2019 17:46:49 +0000 (10:46 -0700)]
[iota] end -> end_ to not shadow

5 years agoMerge pull request #1680 from n8willis/usermanual-obj
n8willis [Thu, 9 May 2019 13:39:05 +0000 (14:39 +0100)]
Merge pull request #1680 from n8willis/usermanual-obj

Usermanual: object-model chapter

5 years agoRemove unnecessary template keyword
Behdad Esfahbod [Thu, 9 May 2019 04:14:01 +0000 (21:14 -0700)]
Remove unnecessary template keyword

Should fix MSVC.

5 years agoRemove unused var
Behdad Esfahbod [Wed, 8 May 2019 23:41:39 +0000 (16:41 -0700)]
Remove unused var

5 years ago[array] Add .copy()
Behdad Esfahbod [Wed, 8 May 2019 23:37:38 +0000 (16:37 -0700)]
[array] Add .copy()

5 years agoFix msan issue
Behdad Esfahbod [Wed, 8 May 2019 23:16:43 +0000 (16:16 -0700)]
Fix msan issue

hb_identity returns rvalue-reference if input is rvalue.  That, can leak
the reference and cause in bad access to temporaries after they are
destructed.  This is unfortunately unfixable given the desired
transparency of hb_identity :(.  Just don't use it with hb_map().

5 years agoMove hb_invoke() back to hb-algs.hh
Behdad Esfahbod [Wed, 8 May 2019 22:57:33 +0000 (15:57 -0700)]
Move hb_invoke() back to hb-algs.hh

5 years ago[hdmx] Touch up
Behdad Esfahbod [Wed, 8 May 2019 22:46:51 +0000 (15:46 -0700)]
[hdmx] Touch up

5 years ago[subset] WIP convert hdmx subsetting to use iterators.
Garret Rieger [Wed, 8 May 2019 00:23:02 +0000 (17:23 -0700)]
[subset] WIP convert hdmx subsetting to use iterators.

5 years ago[subset] Move hdmx to subset2.
Garret Rieger [Tue, 7 May 2019 22:47:38 +0000 (15:47 -0700)]
[subset] Move hdmx to subset2.

5 years ago[map] Return rvalues from keys()/values()
Behdad Esfahbod [Wed, 8 May 2019 22:32:57 +0000 (15:32 -0700)]
[map] Return rvalues from keys()/values()

5 years ago[map] Fix bots
Behdad Esfahbod [Wed, 8 May 2019 22:28:39 +0000 (15:28 -0700)]
[map] Fix bots

Older compilers don't like calling iter() from return-type decltype()

../src/hb-map.hh:226:12: error: cannot call member function 'decltype ((((+ hb_array(((const hb_hashmap_t<K, V, kINVALID, vINVALID>*)this)->hb_hashmap_t<K, V, kINVALID, vINVALID>::items, (((const hb_hashmap_t<K, V, kINVALID, vINVALID>*)this)->hb_hashmap_t<K, V, kINVALID, vINVALID>::mask ? (((const hb_hashmap_t<K, V, kINVALID, vINVALID>*)this)->hb_hashmap_t<K, V, kINVALID, vINVALID>::mask + 1) : 0))) | hb_filter((& hb_hashmap_t<K, V, kINVALID, vINVALID>::item_t:: is_real))) | hb_map((& hb_hashmap_t<K, V, kINVALID, vINVALID>::item_t:: get_pair)))) hb_hashmap_t<K, V, kINVALID, vINVALID>::iter() const [with K = const hb_serialize_context_t::object_t*; V = unsigned int; K kINVALID = 0u; V vINVALID = 0u; decltype ((((+ hb_array(((const hb_hashmap_t<K, V, kINVALID, vINVALID>*)this)->hb_hashmap_t<K, V, kINVALID, vINVALID>::items, (((const hb_hashmap_t<K, V, kINVALID, vINVALID>*)this)->hb_hashmap_t<K, V, kINVALID, vINVALID>::mask ? (((const hb_hashmap_t<K, V, kINVALID, vINVALID>*)this)->hb_hashmap_t<K, V, kINVALID, vINVALID>::mask + 1) : 0))) | hb_filter((& hb_hashmap_t<K, V, kINVALID, vINVALID>::item_t:: is_real))) | hb_map((& hb_hashmap_t<K, V, kINVALID, vINVALID>::item_t:: get_pair)))) = hb_map_iter_t<hb_filter_iter_t<hb_array_t<hb_hashmap_t<const hb_serialize_context_t::object_t*, unsigned int, 0u, 0u>::item_t>, bool (hb_hashmap_t<const hb_serialize_context_t::object_t*, unsigned int, 0u, 0u>::item_t::*)() const, const<anonymous struct>&, 0u>, hb_pair_t<const hb_serialize_context_t::object_t*, unsigned int> (hb_hashmap_t<const hb_serialize_context_t::object_t*, unsigned int, 0u, 0u>::item_t::*)() const, 0u>]' without object
     + iter()
            ^
../src/hb-meta.hh:58:41: note: in definition of macro 'HB_AUTO_RETURN'
 #define HB_AUTO_RETURN(E) -> decltype ((E)) { return (E); }
                                         ^

5 years ago[map] Add .values() iterator
Behdad Esfahbod [Wed, 8 May 2019 22:08:10 +0000 (15:08 -0700)]
[map] Add .values() iterator

5 years ago[map] Fix iter
Behdad Esfahbod [Wed, 8 May 2019 22:05:10 +0000 (15:05 -0700)]
[map] Fix iter

5 years ago[algs] Fix identity return type
Behdad Esfahbod [Wed, 8 May 2019 21:59:25 +0000 (14:59 -0700)]
[algs] Fix identity return type

5 years agoWhitespace
Behdad Esfahbod [Wed, 8 May 2019 21:46:55 +0000 (14:46 -0700)]
Whitespace

5 years ago[meta] Capture rvalue-references in is_reference / remove_reference
Behdad Esfahbod [Wed, 8 May 2019 21:44:11 +0000 (14:44 -0700)]
[meta] Capture rvalue-references in is_reference / remove_reference

5 years agoMinor
Behdad Esfahbod [Wed, 8 May 2019 21:24:57 +0000 (14:24 -0700)]
Minor

5 years ago[map] tweak test-iter.cc
rsheeter [Wed, 8 May 2019 20:51:11 +0000 (13:51 -0700)]
[map] tweak test-iter.cc

5 years ago[map] add keys()
rsheeter [Wed, 8 May 2019 19:47:18 +0000 (12:47 -0700)]
[map] add keys()

5 years ago[map] add a test for iteration
rsheeter [Wed, 8 May 2019 19:09:10 +0000 (12:09 -0700)]
[map] add a test for iteration

5 years ago[map] add iteration
rsheeter [Wed, 8 May 2019 18:40:31 +0000 (11:40 -0700)]
[map] add iteration

5 years ago[test] Add https://crbug.com/oss-fuzz/14641 testcase
Ebrahim Byagowi [Wed, 8 May 2019 21:17:14 +0000 (14:17 -0700)]
[test] Add https://crbug.com/oss-fuzz/14641 testcase

As 503748d fix

5 years agoinitialize return param subr_num in popSubrNum
Michiharu Ariza [Wed, 8 May 2019 20:44:03 +0000 (13:44 -0700)]
initialize return param subr_num in popSubrNum

also snake_cased popSubrtNum and other surrounding function names

5 years ago[name] Sanitize records for reals
Behdad Esfahbod [Wed, 8 May 2019 19:45:02 +0000 (12:45 -0700)]
[name] Sanitize records for reals

Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=14641

5 years ago[iter] Rename hb_iter_t() to hb_iter_type<> and add hb_item_type<>
Behdad Esfahbod [Wed, 8 May 2019 19:25:34 +0000 (12:25 -0700)]
[iter] Rename hb_iter_t() to hb_iter_type<> and add hb_item_type<>

5 years ago[map] Make .has() optionally return value
Behdad Esfahbod [Wed, 8 May 2019 19:11:52 +0000 (12:11 -0700)]
[map] Make .has() optionally return value

5 years agoMake compiler happy with -Og
Behdad Esfahbod [Wed, 8 May 2019 19:01:55 +0000 (12:01 -0700)]
Make compiler happy with -Og

5 years ago[iter] Accept pointer in hb_iter() and hb_iter_t()
Behdad Esfahbod [Wed, 8 May 2019 18:00:18 +0000 (11:00 -0700)]
[iter] Accept pointer in hb_iter() and hb_iter_t()

5 years ago[iter] Accept pointer in hb_map()
Behdad Esfahbod [Wed, 8 May 2019 17:56:09 +0000 (10:56 -0700)]
[iter] Accept pointer in hb_map()

5 years ago[serialize] LangSys subset->copy
Behdad Esfahbod [Wed, 8 May 2019 17:40:39 +0000 (10:40 -0700)]
[serialize] LangSys subset->copy

5 years agoAdd hb_iota()
Behdad Esfahbod [Wed, 8 May 2019 17:35:02 +0000 (10:35 -0700)]
Add hb_iota()

5 years ago[iter] Actually fix previous commit
Behdad Esfahbod [Wed, 8 May 2019 17:02:30 +0000 (10:02 -0700)]
[iter] Actually fix previous commit

The iter objects shouldn't not be const.  D'oh.

5 years ago[iter] For ref-qualified variants
Behdad Esfahbod [Wed, 8 May 2019 16:56:29 +0000 (09:56 -0700)]
[iter] For ref-qualified variants

5 years agoUpdate README.md
rsheeter [Wed, 8 May 2019 16:53:58 +0000 (09:53 -0700)]
Update README.md

5 years agoUpdate README.md
rsheeter [Wed, 8 May 2019 16:53:29 +0000 (09:53 -0700)]
Update README.md

5 years ago[docs] add fuzzer instructions (courtesy of Garret)
rsheeter [Wed, 8 May 2019 16:47:34 +0000 (09:47 -0700)]
[docs] add fuzzer instructions (courtesy of Garret)

5 years ago[docs] add sample commands for test exec
Roderick Sheeter [Wed, 8 May 2019 16:42:35 +0000 (09:42 -0700)]
[docs] add sample commands for test exec

5 years ago[iter] Fix hb_sink() to accept rvalue
Behdad Esfahbod [Wed, 8 May 2019 16:48:55 +0000 (09:48 -0700)]
[iter] Fix hb_sink() to accept rvalue

5 years ago[iter] Default predicates to hb_identity instead of hb_bool
Behdad Esfahbod [Wed, 8 May 2019 16:33:09 +0000 (09:33 -0700)]
[iter] Default predicates to hb_identity instead of hb_bool

The bool conversion happens after predicate is called automatically.

5 years agoAdjust hb_all/any/none
Behdad Esfahbod [Wed, 8 May 2019 16:32:19 +0000 (09:32 -0700)]
Adjust hb_all/any/none

5 years agoAdd hb_match
Behdad Esfahbod [Wed, 8 May 2019 16:16:33 +0000 (09:16 -0700)]
Add hb_match

5 years ago[algs] Try f[v] in hb_get() as last resort
Behdad Esfahbod [Wed, 8 May 2019 16:14:44 +0000 (09:14 -0700)]
[algs] Try f[v] in hb_get() as last resort

5 years agoFix a few more double-pomotion errors
Behdad Esfahbod [Wed, 8 May 2019 14:47:36 +0000 (07:47 -0700)]
Fix a few more double-pomotion errors

5 years agoFix signed comparison on 32bit
Behdad Esfahbod [Wed, 8 May 2019 06:28:22 +0000 (23:28 -0700)]
Fix signed comparison on 32bit

5 years agoFix more double-promotion errors
Behdad Esfahbod [Wed, 8 May 2019 06:26:09 +0000 (23:26 -0700)]
Fix more double-promotion errors

WHy do only some of the clang bots catch this I have no idea :(.

5 years agoFix double-promotion warnings
Behdad Esfahbod [Wed, 8 May 2019 06:13:38 +0000 (23:13 -0700)]
Fix double-promotion warnings

Make it an error.

5 years agoMore tests
Behdad Esfahbod [Wed, 8 May 2019 06:10:59 +0000 (23:10 -0700)]
More tests

5 years ago[algs] Sprinkle hb_min/max with hb-forward salad
Behdad Esfahbod [Wed, 8 May 2019 06:08:49 +0000 (23:08 -0700)]
[algs] Sprinkle hb_min/max with hb-forward salad

Let's see if fixes MSVC fail.  Though, the error doesn't make sense to me.

  hb-blob.cc
c:\projects\harfbuzz\src\hb-algs.hh(166): error C2440: 'return': cannot convert from 'unsigned int' to 'unsigned int &&' [C:\projects\harfbuzz\build\harfbuzz.vcxproj]
  c:\projects\harfbuzz\src\hb-algs.hh(166): note: You cannot bind an lvalue to an rvalue reference
  c:\projects\harfbuzz\src\hb-algs.hh(174): note: see reference to function template instantiation 'T &&<unnamed-type-hb_min>::impl<T,unsigned int&>(T &&,T2) const' being compiled
          with
          [
              T=unsigned int,
              T2=unsigned int &
          ]

5 years ago[iter] Add value and projection to hb_all/any/none
Behdad Esfahbod [Wed, 8 May 2019 05:52:43 +0000 (22:52 -0700)]
[iter] Add value and projection to hb_all/any/none

Allows for eg, checking all values equal 2: hb_all (it, 2).

5 years ago[iter] Accept rvalues to hb_enumerate()
Behdad Esfahbod [Wed, 8 May 2019 05:45:01 +0000 (22:45 -0700)]
[iter] Accept rvalues to hb_enumerate()

5 years ago[meta] Move hb_invoke from algs to meta
Behdad Esfahbod [Wed, 8 May 2019 05:29:40 +0000 (22:29 -0700)]
[meta] Move hb_invoke from algs to meta

5 years ago[meta] Replace most hb_enable_if with hb_requires
Behdad Esfahbod [Wed, 8 May 2019 04:39:20 +0000 (21:39 -0700)]
[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.

5 years ago[algs] Accept varargs in hb_min/max
Behdad Esfahbod [Wed, 8 May 2019 04:33:26 +0000 (21:33 -0700)]
[algs] Accept varargs in hb_min/max

5 years agoRename
Behdad Esfahbod [Wed, 8 May 2019 04:00:23 +0000 (21:00 -0700)]
Rename

5 years agoWhitespace
Behdad Esfahbod [Wed, 8 May 2019 03:58:43 +0000 (20:58 -0700)]
Whitespace

5 years agoUse universal references in hb_min/max
Behdad Esfahbod [Wed, 8 May 2019 03:55:33 +0000 (20:55 -0700)]
Use universal references in hb_min/max

5 years agoRemove MIN/MAX in favor of hb_min/hb_max
Behdad Esfahbod [Wed, 8 May 2019 03:54:31 +0000 (20:54 -0700)]
Remove MIN/MAX in favor of hb_min/hb_max

5 years ago[serializer] Accept pointer & reference in more methods
Behdad Esfahbod [Wed, 8 May 2019 00:23:46 +0000 (17:23 -0700)]
[serializer] Accept pointer & reference in more methods

5 years ago[serializer] Minor
Behdad Esfahbod [Wed, 8 May 2019 00:21:27 +0000 (17:21 -0700)]
[serializer] Minor

5 years ago[meta] Fix addressof()
Behdad Esfahbod [Wed, 8 May 2019 00:21:18 +0000 (17:21 -0700)]
[meta] Fix addressof()

5 years agoWhitespace
Behdad Esfahbod [Tue, 7 May 2019 23:53:03 +0000 (16:53 -0700)]
Whitespace

5 years agoAdd comment
Behdad Esfahbod [Tue, 7 May 2019 22:56:51 +0000 (15:56 -0700)]
Add comment

5 years ago[serialize] FeatureVariations subset->copy
Behdad Esfahbod [Tue, 7 May 2019 22:46:24 +0000 (15:46 -0700)]
[serialize] FeatureVariations subset->copy

5 years agoMinor
Behdad Esfahbod [Tue, 7 May 2019 21:26:03 +0000 (14:26 -0700)]
Minor

5 years ago[iter] Require lvalue in operators that return reference
Behdad Esfahbod [Tue, 7 May 2019 21:09:00 +0000 (14:09 -0700)]
[iter] Require lvalue in operators that return reference

5 years agoMinor
Behdad Esfahbod [Tue, 7 May 2019 20:45:48 +0000 (13:45 -0700)]
Minor

5 years ago[name] Clean up some more
Behdad Esfahbod [Tue, 7 May 2019 20:37:43 +0000 (13:37 -0700)]
[name] Clean up some more

5 years ago[name] Clean up serialize() API
Behdad Esfahbod [Tue, 7 May 2019 20:29:01 +0000 (13:29 -0700)]
[name] Clean up serialize() API

5 years ago[name] Use iterators more
Behdad Esfahbod [Tue, 7 May 2019 20:26:15 +0000 (13:26 -0700)]
[name] Use iterators more

5 years ago[serialize] Minor
Behdad Esfahbod [Tue, 7 May 2019 19:45:38 +0000 (12:45 -0700)]
[serialize] Minor

5 years agoFix signed-comparison error on 32bit
Behdad Esfahbod [Tue, 7 May 2019 18:51:10 +0000 (11:51 -0700)]
Fix signed-comparison error on 32bit

5 years agoComment
Behdad Esfahbod [Tue, 7 May 2019 18:47:02 +0000 (11:47 -0700)]
Comment

5 years ago[doc] Make header search more resilient
Behdad Esfahbod [Tue, 7 May 2019 18:46:11 +0000 (11:46 -0700)]
[doc] Make header search more resilient

How stupid to scan all files... Sigh.

5 years ago[ragel] Regenerate ragel-generated files using ragel 7.0.0.11 May 2018
Behdad Esfahbod [Tue, 7 May 2019 18:39:44 +0000 (11:39 -0700)]
[ragel] Regenerate ragel-generated files using ragel 7.0.0.11 May 2018

5 years ago[subset] Add TODO
Behdad Esfahbod [Tue, 7 May 2019 18:08:08 +0000 (11:08 -0700)]
[subset] Add TODO

5 years ago[serialize] Enable bias assertion
Behdad Esfahbod [Tue, 7 May 2019 18:06:43 +0000 (11:06 -0700)]
[serialize] Enable bias assertion

5 years ago[serialize] Use range-based loop
Behdad Esfahbod [Tue, 7 May 2019 18:05:51 +0000 (11:05 -0700)]
[serialize] Use range-based loop

5 years ago[name] Remove dead code
Behdad Esfahbod [Tue, 7 May 2019 18:01:02 +0000 (11:01 -0700)]
[name] Remove dead code

5 years ago[subset] fix for name table serializing with new serializer machinery
Behdad Esfahbod [Thu, 2 May 2019 23:29:07 +0000 (16:29 -0700)]
[subset] fix for name table serializing with new serializer machinery

5 years ago[WIP] [name] Port to fancy serializer machinery
Behdad Esfahbod [Thu, 2 May 2019 23:29:07 +0000 (16:29 -0700)]
[WIP] [name] Port to fancy serializer machinery