src/hb-map.hh


Log

Author Commit Date CI Message
Behdad Esfahbod 7fa580bc 2022-05-12T13:05:32 [map] Fix map copy/move constructors to actually work Ouch!
Garret Rieger e30511a8 2022-01-14T16:20:31 [map] Correct previous commit, if (...) was reversed.
Garret Rieger ff4e8c7e 2022-01-14T16:20:31 [map] Fix bad memory access if hb_map.fini() was called twice.
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 956e0a4d 2022-01-13T15:06:58 [map] Destruct objects
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 5a91db11 2022-01-13T12:44:48 [map] Remove constexpr invalid items These were non-workable in the general case, eg std::string.
Behdad Esfahbod 114046dc 2022-01-13T12:38:26 [map] Construct objects
Behdad Esfahbod ca4f56bd 2022-01-13T11:48:34 [map] Massage some more Towards being able to store arbitrary types.
Behdad Esfahbod 74811c50 2022-01-10T14:57:38 [map] Map == / != use correct types
Behdad Esfahbod ce7f19a2 2022-01-10T14:40:27 Revert "[map] Actually use k/v invalid types for declaration!" This reverts commit 6f559346ac70fd188cb22d41f4b03ec227feee25. Err. My bad.
Behdad Esfahbod 6f559346 2022-01-10T14:29:36 [map] Actually use k/v invalid types for declaration!
Behdad Esfahbod 394f7729 2021-11-19T11:49:23 [map] Allow storing classes in the hashmap Fixes https://github.com/harfbuzz/harfbuzz/issues/3293 The trick was to change the type of the invalid key/value to be non-class.
Behdad Esfahbod b1cd0dce 2021-11-02T17:56:11 [map] Add INVALID_KEY and INVALID_VALUE
Behdad Esfahbod 59d8f6c8 2021-11-02T10:33:53 [map] Fix copy assignment operator
Behdad Esfahbod 943921cf 2021-11-02T00:26:46 [meta] Use more std type_traits
Behdad Esfahbod 811f80a7 2021-11-02T00:14:34 [algs] Use std::move instead of hb_move()
Behdad Esfahbod 4c6fd7cd 2021-11-01T23:13:34 [map] Try moving items when resizing
Behdad Esfahbod a28ea8d7 2021-11-01T22:50:54 Simplify swap()
Behdad Esfahbod 94158316 2021-11-01T22:47:26 [map] Add iterable constructor
Behdad Esfahbod a03b9b14 2021-11-01T22:45:11 [map] Add initializer_list and swap()
Behdad Esfahbod c30f6834 2021-11-01T22:29:14 [map] Add 5 methods
Behdad Esfahbod d3e09bf4 2021-08-24T10:31:49 [set] Make all operators null-safe again Changed my mind. Also for hb_map_clear(). Part of https://github.com/harfbuzz/harfbuzz/pull/3162
Garret Rieger c08f1b89 2021-08-10T12:29:32 [map] fix incorrect population count in hash map. If the same key was set twice the population was being incorrectly incremented.
Behdad Esfahbod 2337f0d0 2021-07-08T10:58:50 Internally use hb_malloc/.../hb_free instead of malloc/.../free Redefining those stock names as macros was conflicting with gcc 10 headers. Fixes https://github.com/harfbuzz/harfbuzz/issues/3044
Behdad Esfahbod a8f9f85a 2021-03-29T18:12:05 [map] Return success from ->set()
Behdad Esfahbod 2fbd34f8 2020-06-28T22:41:09 m[set/map] Add operator bool() Probably should use in places..
Behdad Esfahbod 2d39031f 2020-06-28T20:48:48 [buffer/set/map] Move immutable check only to C API boundary The immutable objects are a concept only enforced by the C API. So move checks only to that region. This does assume that the rest of the code is careful not getting into these internal methods on immutable objects, which something we do, but have no way of enforcing (currently). .
Behdad Esfahbod 6a45df0a 2020-07-08T18:17:40 Fix -Wambiguous-reversed-operator warning Fixes https://github.com/harfbuzz/harfbuzz/issues/2554
Ebrahim Byagowi e541fb47 2020-06-21T09:49:48 minor, replace single hb_apply daggers with foreach
Behdad Esfahbod a7df5a7b 2020-04-23T10:50:02 [hashmap] Minor
Ebrahim Byagowi 2dda6dd7 2020-04-20T14:12:45 minor, tweak spacing turn 8 spaces to tab, add space before Null/Crap
Garret Rieger be5cdcdf 2019-10-22T11:55:04 Store the hash value of a key in item_t in hb_map to reduce the number of hash computations.
Behdad Esfahbod e0315b4a 2019-05-10T19:48:02 [meta] is_integer -> is_integral
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 c9b287a8 2019-05-09T12:43:57 Add hb_lidentity(), and rename hb_rvalue() to hb_ridentity()
Behdad Esfahbod 27b20930 2019-05-08T15:32:57 [map] Return rvalues from keys()/values()
Behdad Esfahbod 372c5b97 2019-05-08T15:28:39 [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); } ^
Behdad Esfahbod a3048271 2019-05-08T15:08:10 [map] Add .values() iterator
Behdad Esfahbod 3c69505b 2019-05-08T15:05:10 [map] Fix iter
Behdad Esfahbod f5705d76 2019-05-08T14:46:55 Whitespace
rsheeter b827181b 2019-05-08T13:51:11 [map] tweak test-iter.cc
rsheeter 492af0f1 2019-05-08T12:47:18 [map] add keys()
rsheeter ba605128 2019-05-08T12:09:10 [map] add a test for iteration
rsheeter 183b8094 2019-05-08T11:40:31 [map] add iteration
Behdad Esfahbod bad16066 2019-05-08T12:11:52 [map] Make .has() optionally return value
Behdad Esfahbod 240f57e5 2019-05-06T23:17:39 Rename hb_deref_pointer() to hb_deref()
Behdad Esfahbod 22da1231 2019-04-24T10:53:16 [map] Fix TODO
Behdad Esfahbod 0268db11 2019-04-24T10:43:40 [map] Use hb_invoke() with pointer-to-method
Behdad Esfahbod 824fd342 2019-04-11T11:16:01 Rename a few macros
Behdad Esfahbod 31c1a838 2019-04-02T20:17:27 [map] Protect more against pointer deref
Behdad Esfahbod 5bffa9e3 2019-04-02T20:13:16 More
Behdad Esfahbod 5b66b033 2019-04-02T19:27:02 [serialize] Fix hb_hashmap_t<> for pointers and use in packed_map
Behdad Esfahbod 10f06223 2019-03-30T18:44:01 [map] Shuffle fini code
Behdad Esfahbod a4329019 2019-03-30T17:51:26 [serialize] Add packed_map
Behdad Esfahbod 38d57b9a 2019-03-30T16:38:06 [map] Add another TODO item
Behdad Esfahbod 7fd940f8 2019-03-30T16:29:19 [map] Add TODO
Behdad Esfahbod ef33b5d1 2019-03-30T14:39:21 [map] Deref pointers before equality check
Behdad Esfahbod c98f51da 2019-03-30T14:30:22 [map] Templatize hb_map_t Template name is hb_hashmap_t<K,V>.
Behdad Esfahbod bdd5a9c4 2019-03-28T21:58:07 Add hb_hash() I don't like the hb_remove_reference() hack, but necessary.
Behdad Esfahbod a030ce4f 2019-03-28T21:26:50 Merge branch 'master' into iter
Michiharu Ariza 93739242 2019-02-20T13:23:12 minor edit
Michiharu Ariza eebc21c8 2019-02-20T12:43:18 fix crash in hb_map_t::clear() in case called immediately after init()
Behdad Esfahbod d438e610 2019-01-28T16:34:04 [iter] Fix operator() impls
Behdad Esfahbod 090fe56d 2019-01-25T15:34:03 Merge branch 'master' into iter
Behdad Esfahbod c1cbbb94 2019-01-20T19:47:52 Use static constexpr for large class constants
Behdad Esfahbod a7de144d 2019-01-09T08:39:25 Implement uniform map interface Coverage, ClassDef, hb_set_t, and hb_map_t implement.
Behdad Esfahbod bd1318b8 2019-01-20T19:47:52 Use static constexpr for large class constants
Behdad Esfahbod 043b610f 2019-01-19T09:20:46 Fix sign compare warnings ../../third_party/harfbuzz-ng/src/src/hb-map.hh(56,45): warning: comparison of integers of different signs: 'const hb_codepoint_t' (aka 'const unsigned int') and 'hb_map_t::(anonymous enum at ../../third_party/harfbuzz-ng/src/src/hb-map.hh:169:3)' [-Wsign-compare] bool is_unused () const { return key == INVALID; }
Behdad Esfahbod 9aebfb41 2018-12-18T13:22:17 [serialize] Streamline error propagation
Ebrahim Byagowi e4120085 2018-12-17T21:31:01 Remove redundant void from C++ sources (#1486)
Ebrahim Byagowi b2ebaa9a 2018-12-16T22:38:10 Remove redundant 'inline' from methods (#1483)
Ebrahim Byagowi 7ee5c523 2018-12-12T15:14:37 minor style fix, use void in methods on no argument
Behdad Esfahbod 9e4138c8 2018-11-29T15:01:10 Convert misc "static const" constants to enum
Behdad Esfahbod b1862743 2018-10-29T23:21:14 [set/map] Fix uninitialized memory I keep forgetting that primitive types are NOT initialized during construction. :|
Behdad Esfahbod 67a22f37 2018-10-29T17:37:41 [set/map/vector] Make constructable, but not copy or assignable Disable copy/assign on them, as they shouldn't. Make constructor / destructor call init_shallow/fini_shallow, and make those idempotent. So, these three can be constructed on stack now and no init/fini call is needed. As such, hb_auto_t<> is not needed anymore. I'll remove that separately.
Ebrahim Byagowi 114f66dd 2018-10-19T12:05:26 Fix hb_map_is_empty logic This needs reviewing
Behdad Esfahbod c77ae408 2018-08-25T22:36:36 Rename hb-*private.hh to hb-*.hh Sorry for the noise, downstream custom builders. Please adjust.