src/hb-algs.hh


Log

Author Commit Date CI Message
Behdad Esfahbod 15fa8afb 2022-05-02T16:46:41 Add fast-path for big-endian 32-bit byteswap Speeds up cmap format-12 decoding by some 40% as measured by the newly added test in perf/benchmark-font!
Behdad Esfahbod 8e900f2c 2022-02-17T13:28:44 Revert "hb-algs.hh: Fix build on Visual Studio 2015" This reverts commit 52c536bb8d90cf0f09e13f5e9e21bf489cc08c23. See https://github.com/harfbuzz/harfbuzz/pull/3448
Behdad Esfahbod 94517850 2022-02-13T13:39:26 [algs] Fix typo in hb_pair_t conversion operator Fixes https://github.com/harfbuzz/harfbuzz/issues/2083
Chun-wei Fan 52c536bb 2022-02-10T16:39:40 hb-algs.hh: Fix build on Visual Studio 2015 The compiler does not recognize the std::hash call on hb_decay<decltype (hb_deref (v)>, so give it a shove so that it is recognized there.
Behdad Esfahbod cd979978 2022-01-19T11:14:25 [vector] Remove old find() method
Behdad Esfahbod 92f17907 2022-01-16T07:51:35 Make hb_coerce static inline That's the pattern we follow. https://github.com/harfbuzz/harfbuzz/commit/985b63b3eeee5be1f5234fc7f13077eacf5e5b94#commitcomment-63973544
Behdad Esfahbod 19793f33 2022-01-16T07:49:40 Better try at previous commit https://github.com/harfbuzz/harfbuzz/commit/985b63b3eeee5be1f5234fc7f13077eacf5e5b94#commitcomment-63973544
Behdad Esfahbod 1173ed1f 2022-01-16T07:48:02 Try fix Mac build https://github.com/harfbuzz/harfbuzz/commit/985b63b3eeee5be1f5234fc7f13077eacf5e5b94#commitcomment-63973544
Behdad Esfahbod c0f57ccc 2022-01-16T06:59:24 [algs] Add default-construtor to hb_pair_t
Behdad Esfahbod 8a69e006 2022-01-13T16:17:34 [meta] Use std::addressof() instead of hb_addressof()
Behdad Esfahbod 47afb3ef 2022-01-13T15:26:07 [meta] Replace hb_is_pointer with std::is_pointer
Behdad Esfahbod 985b63b3 2022-01-13T13:33:07 [map] Allow invalid items to be pointer to static object By derefencing them when necessary. Also, we do not rely on trivially-copyable, so remove that assertion.
Behdad Esfahbod 1e27f95d 2022-01-13T13:10:47 [algs] Add hb_coerce()
Behdad Esfahbod cfe2b661 2022-01-13T11:42:48 [algs] Fix hash chaining to std::hash()
Behdad Esfahbod 53847dba 2022-01-10T15:04:47 [algs] Call std::hash from hb_hash()
Behdad Esfahbod 943921cf 2021-11-02T00:26:46 [meta] Use more std type_traits
Behdad Esfahbod 6d555ce8 2021-11-02T00:18:22 [meta] Use std::forward instead of hb_forward()
Behdad Esfahbod 30c05e8b 2021-11-01T23:57:00 [algs] include <new>
Behdad Esfahbod 3604f5f2 2021-11-01T22:37:42 [algs] Include <initializer_list>
Behdad Esfahbod 8c055699 2021-11-01T17:59:17 [algs] Add hb_swap() ala, and using, std::swap() Use it in vector. Use ADL idiom.
Behdad Esfahbod f09d5ed0 2021-08-19T13:06:10 [algs] Remove hb_bitwise_non()
Behdad Esfahbod b94f24ec 2021-08-19T00:48:00 [bit-set-invertible] Implement set algebra
Behdad Esfahbod 6afefe1d 2021-08-19T00:27:03 [algs] Remove unnecessary struct tag names
Behdad Esfahbod bf2c87bf 2021-07-27T13:10:41 Add hb_memcpy() that does len=0 check
Behdad Esfahbod cc16b26e 2021-02-22T17:55:47 [constexpr] IntType See https://github.com/harfbuzz/harfbuzz/pull/2875
Behdad Esfahbod c55bf551 2020-06-29T02:04:16 Remove HB_CONST_FUNC and HB_PURE_FUNC They are not necessary for inline functions.
Behdad Esfahbod cba9893a 2020-06-29T01:55:57 m[algs] Move roundf() here
Behdad Esfahbod 69464e9d 2021-02-20T15:42:44 [algs] Another try at fixing BEInt constexpr ../src/hb-algs.hh:120:3: error: body of constexpr function ‘constexpr BEInt<Type, 2>::operator Type() const [with Type = short unsigned int]’ not a return-statement
Behdad Esfahbod ff7bf881 2021-02-20T15:39:29 m[algs] Fix BEInt -Wnarrowing errors
Behdad Esfahbod e208f804 2021-02-20T15:31:27 Make constexpr BEInt<Type, 2>::operator Type() C++11-compatible Multiple return values not permitted until C++14
Behdad Esfahbod 47f01c07 2020-06-29T01:25:35 m[algs] Move BEInt here
Behdad Esfahbod e1706ffe 2020-06-29T00:59:06 m [algs] Move flags here
Behdad Esfahbod ed04174a 2021-02-05T13:36:46 Whitespace
Behdad Esfahbod 921b4e46 2021-01-29T20:35:05 [algs] Add hb_equal() Use in hb_array_t::lfind()
Behdad Esfahbod 881ad720 2021-01-21T14:27:45 [algs] Remove passthru declaration Let compiler figure it out.
Behdad Esfahbod 7c241651 2020-11-30T16:38:53 [algs] Don't forward rvalue twice Part of https://github.com/harfbuzz/harfbuzz/issues/2293
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()