src/hb-algs.hh


Log

Author Commit Date CI Message
David Corbett b207eab8 2020-04-30T11:53:21 Round-trip OpenType tags through BCP 47
Ebrahim Byagowi 818f109b 2020-04-16T21:25:32 Use float in avar calculation instead ints and checking their overflows
Ebrahim Byagowi 9ffa50fe 2020-04-16T21:25:32 Add an appropriate fallback to hb_int_mul_overflows
Ebrahim Byagowi 96d792ae 2020-03-24T14:05:47 [avar] Prevent mul overflow Fixes https://crbug.com/oss-fuzz/21350
Ebrahim Byagowi b398748d 2020-03-04T11:18:19 [algs] Add hb_clamp Similar to stl and glsl's clamp
Behdad Esfahbod fa7edf87 2019-12-07T22:01:13 [bsearch] Massage API some more
Behdad Esfahbod 70aa5071 2019-12-07T22:35:34 [algs] Adjust return value of hb_ctz(0) to be 32 instead of 0
Behdad Esfahbod 48eef272 2019-12-06T05:04:11 [algs/array] Consolidate the last two bsearch implementations! Yay! Seems to work.
Behdad Esfahbod ed35dea8 2019-12-06T04:37:11 Fourth try... sighs
Behdad Esfahbod 34f5cc2c 2019-12-06T04:09:33 Second try at fixing build
Behdad Esfahbod 14ce5ab0 2019-12-06T03:54:46 First try at fixing build errors
Behdad Esfahbod 2274270c 2019-12-06T03:42:21 [algs] Streamline bsearch some more
Behdad Esfahbod bd55d4b4 2019-12-06T03:35:24 [algs] Streamline bsearch() API more towards hb_array_t::bsearch_impl() Preparing to merge the two finally!
Ebrahim Byagowi 670fec23 2019-10-10T09:21:08 Minor, add a zero length tolerant memset, hb_memset
Ebrahim Byagowi 65690b5a 2019-09-03T23:09:47 [number] Add whole buffer check and test it
Ebrahim Byagowi 3661eb61 2019-09-03T19:43:14 Don't check null terminaion of source in hb_codepoint_parse This isn't what intended originally, just checking if consumed all the buffer is enough.
Ebrahim Byagowi b5e6805e 2019-09-03T15:23:40 [number] Minor tweak on parser related codes
Ebrahim Byagowi a77bb7eb 2019-09-03T14:49:14 Move hb_codepoint_parse to hb_parse_uint
Behdad Esfahbod 3bc86fb2 2019-08-30T16:39:52 [algs] Fix hb_inc/dec signature
Behdad Esfahbod 2d5643ae 2019-08-30T09:51:22 [algs] Add hb_inc() and hb_dec())
Behdad Esfahbod 4cb180d2 2019-07-02T19:44:18 Revert "Use constexpr to replace passthru_ bools" This reverts commit c4aa10ebc8dc28b1f9c90af2ca2092a7535f8395. Broke several compilers... Sigh. The version without constexpr didn't fully optimize out the unreachable code on clang. So, revert it is...
Behdad Esfahbod c4aa10eb 2019-07-02T19:15:03 Use constexpr to replace passthru_ bools
Behdad Esfahbod 2e48fd07 2019-07-02T17:55:58 Sprinkle constexpr around Being conservative. Also not sure it makes any real difference in our codebase.
Behdad Esfahbod ec8e635e 2019-06-24T12:37:23 [ucd] Use custom encoding to shrink composition data Saves another 2.5kb. Part of https://github.com/harfbuzz/harfbuzz/issues/1652
Behdad Esfahbod 60653a7a 2019-06-18T13:01:11 Remove HB_VECTOR_SIZE It was cumbersome to get it to work reliably, for dubious performance gain, mostly in the subsetter maybe... Life is easier without. It was disabled forever anyway.
Behdad Esfahbod 24060d3a 2019-06-18T12:50:42 Add hb_bitwise_neg
Behdad Esfahbod 7cf91690 2019-06-18T12:44:03 Remove accidentally left cruft
Behdad Esfahbod ff9b9b1c 2019-06-10T12:48:25 Simplify HB_PARTIALIZE impl +this works on gcc 4.8 as well as default code path.
Behdad Esfahbod 451edbd4 2019-06-10T12:46:54 Revert "Test new solution for HB_PARTIALIZE" This reverts commit a0c4900799c26e4ff34180842a5ff21048fe31a0.
Behdad Esfahbod a0c49007 2019-06-10T12:33:23 Test new solution for HB_PARTIALIZE Just testing bots. Will finish based on results.
Ebrahim Byagowi 9407ef8d 2019-06-10T15:17:43 minor, add HB_USE_INTERNAL_QSORT The only thing I need for a working wasm in a minimum libc, otherwise I have to provide the very same qsort inside that libc
Ebrahim Byagowi c4669fda 2019-06-09T11:50:36 [algs] minor
Ebrahim Byagowi eff579f7 2019-06-07T12:58:09 Update and use internal qsort everywhere
Behdad Esfahbod 973699c4 2019-06-07T12:49:06 Disable clang gcc impersonator
Behdad Esfahbod e4e518f3 2019-06-07T12:41:09 Fix build on gcc 4.8 Fixes https://github.com/harfbuzz/harfbuzz/issues/1724
Eli Zaretskii d5e5f378 2019-06-05T22:20:03 This makes minor changes to allow building HarfBuzz with mingw.org's MinGW. src/hb-algs.hh: Don't compile _BitScanForward and _BitScanReverse for GCC >= 4. mingw.org's MinGW doesn't have these functions. src/hb-atomic.hh: MemoryBarrier does exist in mingw.org's MinGW, but it is not a macro, it is an inline function. __MINGW32_VERSION is a macro that exists only in mingw.org's MinGW, so conditioning on it should not affect MinGW64, where MemoryBarrier is a macro. src/hb-uniscribe.cc: Define E_NOT_SUFFICIENT_BUFFER if it is not defined (mingw.org's MinGW doesn't). src/hb.hh: Don't include intrin.h for mingw.org's MinGW, since that header is not available; instead, include windows.h. Conditioned on __MINGW32_VERSION to avoid affecting MinGW64.
Ebrahim Byagowi 760eb1bf 2019-06-03T05:48:04 Reapply possible bsearch overflow fix Originally introduced in 21ede86 (#1314) but as it wasn't applied to hb_bsearch accidentally removed while merging hb_bsearch_r to it.
Ebrahim Byagowi 8278ff7d 2019-06-02T00:36:30 minor
Ebrahim Byagowi 33d38e79 2019-06-02T00:19:57 Use a unified bsearch (#1741) A part of #593
Behdad Esfahbod 619f5f1e 2019-05-31T22:31:35 Fourth try at building VS bots Based on https://github.com/harfbuzz/harfbuzz/issues/1730#issuecomment-497151210
Behdad Esfahbod aba3888d 2019-05-31T22:11:27 Third try at fixing VS build https://github.com/harfbuzz/harfbuzz/issues/1730
Behdad Esfahbod 8aaecbb5 2019-05-31T21:41:40 Second VS fix try https://github.com/harfbuzz/harfbuzz/issues/1730
Behdad Esfahbod 5a1b5c0a 2019-05-31T21:08:39 Try fixing VS builds Hopefully fixes https://github.com/harfbuzz/harfbuzz/issues/1730
Behdad Esfahbod 92fde3de 2019-05-31T20:16:25 Whitespace
Behdad Esfahbod 65392b73 2019-05-22T16:21:21 [ucdn] Replace UCDN with a new UCD implementation UCDN was ~120kb of data. New implementatoin is 69kb in default builds, and 49kb if built with HB_OPTIMIZE_SIZE or __OPTIMIZE_SIZE__. The latter automatically enabled if built with -Os or -Oz. There's room to shave off another 10kb or 20kb. That will follow later. Fixes https://github.com/harfbuzz/harfbuzz/issues/1652
Behdad Esfahbod b7be5931 2019-05-16T13:32:56 Fix msan issue The fact that HB_AUTO_RETURN will return rvalue-references for rvalues is very disturbing. Even apart from that, I'm totally lost re any hb_move needs or hb_forward'ing to functions/templates where the type is fixed by explicitly specifying template parameters. ==1==ERROR: AddressSanitizer: stack-use-after-return on address 0x7f6ad65e51e0 at pc 0x0000005da240 bp 0x7ffc104ab670 sp 0x7ffc104ab668 READ of size 4 at 0x7f6ad65e51e0 thread T0 SCARINESS: 55 (4-byte-read-stack-use-after-return) #0 0x5da23f in bool OT::Coverage::serialize<hb_map_iter_t<hb_map_iter_t<hb_filter_iter_t<OT::Coverage::iter_t, hb_set_t const&, $_7&, (void*)0>, OT::SingleSubstFormat1::subset(hb_subset_context_t*) const::'lambda'(unsigned int), (hb_function_sortedness_t)1, (void*)0>, $_20&, (hb_function_sortedness_t)1, (void*)0>, (void*)0>(hb_serialize_context_t*, hb_map_iter_t<hb_map_iter_t<hb_filter_iter_t<OT::Coverage::iter_t, hb_set_t const&, $_7&, (void*)0>, OT::SingleSubstFormat1::subset(hb_subset_context_t*) const::'lambda'(unsigned int), (hb_function_sortedness_t)1, (void*)0>, $_20&, (hb_function_sortedness_t)1, (void*)0>) harfbuzz/src/hb-ot-layout-common.hh:1055:16 #1 0x5d88f9 in bool OT::SingleSubstFormat1::serialize<hb_map_iter_t<hb_map_iter_t<hb_filter_iter_t<OT::Coverage::iter_t, hb_set_t const&, $_7&, (void*)0>, OT::SingleSubstFormat1::subset(hb_subset_context_t*) const::'lambda'(unsigned int), (hb_function_sortedness_t)1, (void*)0>, $_20&, (hb_function_sortedness_t)1, (void*)0>, (void*)0>(hb_serialize_context_t*, hb_map_iter_t<hb_map_iter_t<hb_filter_iter_t<OT::Coverage::iter_t, hb_set_t const&, $_7&, (void*)0>, OT::SingleSubstFormat1::subset(hb_subset_context_t*) const::'lambda'(unsigned int), (hb_function_sortedness_t)1, (void*)0>, $_20&, (hb_function_sortedness_t)1, (void*)0>, unsigned int) harfbuzz/src/hb-ot-layout-gsub-table.hh:98:9
Behdad Esfahbod 6f51e555 2019-05-15T21:41:12 [algs] Rename hb_bind to hb_partial Since our API is the invers of what std::bind is, and closer to Python functools.partial().
Behdad Esfahbod 0888e7bc 2019-05-15T21:36:42 [algs] Change hb_bind parameter number to be from one To match std:;bind, even though our interfaces are very different.
Behdad Esfahbod a06a2368 2019-05-15T21:12:22 [algs] Partialize all operators
Behdad Esfahbod edc69ec9 2019-05-15T21:09:56 [algs] Rewrite bind API And add a partialization API use example to hb_add()
Behdad Esfahbod 16a3540e 2019-05-15T20:48:20 [algs] Add hb_bind0 and hb_bind1
Behdad Esfahbod 243a5a6a 2019-05-15T19:03:59 [algs] Remove pair copy constructor Use default.
Behdad Esfahbod 5da8a3a9 2019-05-15T17:11:18 Remove variadic form of hb_min/hb_max Unused, and why here and not in other functions...
Behdad Esfahbod e5cfe9d5 2019-05-15T16:59:36 Add arithmetic operators
Behdad Esfahbod f7a45851 2019-05-15T16:49:35 Add hb_bitwise_* ops
Behdad Esfahbod d3e1d504 2019-05-15T14:25:54 Add all pair_t comparison operators
Behdad Esfahbod e0315b4a 2019-05-10T19:48:02 [meta] is_integer -> is_integral
Behdad Esfahbod 790315e0 2019-05-09T15:31:24 [algs] Implement implicit casting between compatible pair types
Garret Rieger 5e3cbed0 2019-05-08T16:33:03 [subset] Switch building of glyph maps in subset plan to use iterators.
Garret Rieger 971020ec 2019-05-08T16:31:52 Add sink support for hb_hashmap_t and a reverse call to hb_pair_t.
Behdad Esfahbod 98eec3dd 2019-05-09T13:15:36 Add hb_pair_t(,) macro as alternative to hb_pair_t<,> Just so it's easier to use it in other macros.
Behdad Esfahbod c9b287a8 2019-05-09T12:43:57 Add hb_lidentity(), and rename hb_rvalue() to hb_ridentity()
Behdad Esfahbod 4c94bc63 2019-05-08T15:57:33 Move hb_invoke() back to hb-algs.hh
Behdad Esfahbod 27b20930 2019-05-08T15:32:57 [map] Return rvalues from keys()/values()
Behdad Esfahbod 5ceaafa5 2019-05-08T14:59:25 [algs] Fix identity return type
Behdad Esfahbod 4a101d8f 2019-05-08T09:16:33 Add hb_match
Behdad Esfahbod 26adefd9 2019-05-08T09:14:44 [algs] Try f[v] in hb_get() as last resort
Behdad Esfahbod 56d2d029 2019-05-07T23:08:49 [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 & ]
Behdad Esfahbod e8bd5fc3 2019-05-07T22:29:40 [meta] Move hb_invoke from algs to meta
Behdad Esfahbod 6fa1f380 2019-05-07T21:33:26 [algs] Accept varargs in hb_min/max
Behdad Esfahbod 1ad07080 2019-05-07T21:00:23 Rename
Behdad Esfahbod 83e3eabd 2019-05-07T20:58:43 Whitespace
Behdad Esfahbod 2b9402a8 2019-05-07T20:55:33 Use universal references in hb_min/max
Behdad Esfahbod 41248cce 2019-05-07T20:54:31 Remove MIN/MAX in favor of hb_min/hb_max
Behdad Esfahbod 7654ebe3 2019-05-07T16:53:03 Whitespace
Behdad Esfahbod 240f57e5 2019-05-06T23:17:39 Rename hb_deref_pointer() to hb_deref()
Behdad Esfahbod bf22338f 2019-05-02T13:51:52 Remove dead code
Behdad Esfahbod 0268db11 2019-04-24T10:43:40 [map] Use hb_invoke() with pointer-to-method
Behdad Esfahbod 8f79a575 2019-04-24T10:32:49 [algs] Add more hb_forward<>()'s
Behdad Esfahbod 25dd88ef 2019-04-22T17:45:23 Err, fix hb_invoke() variadic
Behdad Esfahbod c862a532 2019-04-22T17:32:19 Add variadic arguments to hb_invoke()
Behdad Esfahbod c67a0d58 2019-04-17T10:20:02 Add HB_RETURN
Behdad Esfahbod 5b33427f 2019-04-16T18:28:17 Rename HB_AUTO_RETURN_EXPR to HB_AUTO_RETURN
Behdad Esfahbod da293b0e 2019-04-16T18:27:25 Use HB_AUTO_RETURN_EXPR in hb_min/max
Behdad Esfahbod 0241a40f 2019-04-16T18:26:30 Use auto return type for hb_first/hb_second
Behdad Esfahbod fe30fcd2 2019-04-16T17:34:06 Use hb_deref_pointer() to reduce number of overloads
Behdad Esfahbod c918a670 2019-04-16T17:28:18 Properly prioritize hb_hash()
Behdad Esfahbod 75fd845a 2019-04-16T17:22:29 Move around
Behdad Esfahbod 97371717 2019-04-16T16:50:07 Fix priorities
Behdad Esfahbod 54ece299 2019-04-16T16:45:53 Use type aliasing for meta-functions, ie. those returning a type
Behdad Esfahbod 4fc2d2d7 2019-04-16T11:24:42 [meta] Flesh out hb_invoke()
Behdad Esfahbod e03d9395 2019-04-16T11:20:16 Comment
Behdad Esfahbod b8e763fd 2019-04-16T10:50:22 [meta] Add hb_invoke()
Behdad Esfahbod a3fcb9a3 2019-04-16T10:45:20 [meta] Add HB_AUTO_RETURN_EXPR, HB_VOID_RETURN_EXPR, hb_priority, hb_has(), hb_get() The first three based on range-v3.
Behdad Esfahbod 02d864aa 2019-04-15T15:39:03 Add HB_FUNCOBJ() Fixes https://github.com/harfbuzz/harfbuzz/issues/1651
Behdad Esfahbod 38b1d0b9 2019-04-15T12:44:31 Move static const to post-struct for a function object Just sending this to bots to see if all happy, then turn it into macro and apply everywhere. Part of https://github.com/harfbuzz/harfbuzz/issues/1651
Behdad Esfahbod ecabdffc 2019-04-03T16:06:34 [algs] Add hb_min() and hb_max()
Behdad Esfahbod b189bbc4 2019-03-30T19:41:48 Implement hashing of objects Should be improved for hb_bytes_t.
Behdad Esfahbod d6b28057 2019-03-30T19:31:51 Fix hb_hash(pointer)
Behdad Esfahbod 7fd82283 2019-03-30T19:16:20 [serialize] Towards maintaining hashmap