|
86a763c6
|
2022-11-21T20:53:44
|
|
[map] Make keys moveable
|
|
cf20d2ec
|
2022-11-21T20:46:01
|
|
[map] Take const key
|
|
3d1c76f7
|
2022-11-21T19:40:32
|
|
[serializer] Don't hash objects twice
|
|
3ff8abf2
|
2022-11-18T19:35:49
|
|
Revert "[map] Allow std::move-ing keys into the map"
This reverts commit f657ef7e57c889309c2d9d37934368ca255f9d5b.
This breaks many compilers with messages like this:
hb-subset-plan.hh:226: undefined reference to `OT::head::tableTag'
I'm out of my depth re how to fix it.
|
|
a3a218ed
|
2022-11-18T19:24:41
|
|
[map] Add a couple more sink interfaces
|
|
f657ef7e
|
2022-11-18T19:17:03
|
|
[map] Allow std::move-ing keys into the map
|
|
a1768ad8
|
2022-11-18T19:08:34
|
|
[map] Fix use of !=
|
|
a9c6a20b
|
2022-11-18T18:29:12
|
|
[map] Support moving value in sink interface
|
|
3ead9863
|
2022-11-18T16:43:47
|
|
[map] Add size()
|
|
42db8be1
|
2022-11-18T16:41:50
|
|
[map] Minor remove if condition
|
|
4ec70698
|
2022-11-18T16:39:30
|
|
[map] Rewrite hash() as dagger
Somehow our daggers instead of for loop save size. I cannot
pinpoint why, other than maybe not inlining.
|
|
025a68cb
|
2022-11-18T16:33:04
|
|
[map] Optimize copy resizing logic
|
|
f1d71687
|
2022-11-18T16:31:27
|
|
[map] Change bucket_for_hash() to item_for_hash()
|
|
d012f9a9
|
2022-11-18T16:29:06
|
|
[map] Change bucket_for() to item_for()
|
|
81a57300
|
2022-11-17T16:59:36
|
|
[map] Optimize storage
|
|
ae080bf2
|
2022-11-17T16:34:58
|
|
[map] Initialize key and value explicitly
If they are of int time they won't be initialized otherwise.
|
|
ff0bb748
|
2022-11-17T16:17:37
|
|
[map] Call item_t constructor/destructor directly
|
|
5c887159
|
2022-11-17T16:14:16
|
|
[map] Add item_t.destruct()
|
|
7f830408
|
2022-11-17T16:10:37
|
|
[map] Simplify (de)construction of item_t
|
|
99103bd9
|
2022-11-17T15:57:06
|
|
[map] Destruct objects when clearing
|
|
e93c01c3
|
2022-11-17T15:50:00
|
|
[map] Rename item clear() to construct()
|
|
89637746
|
2022-11-17T15:25:45
|
|
[map] Don't resize map if not necessary
|
|
7595fa2d
|
2022-11-17T15:19:29
|
|
[map] Fix copy-assignment operator
Ouch!
|
|
41f4bdac
|
2022-11-17T15:16:00
|
|
[map] Fix resize during copy-construction/assignment
|
|
7bd10172
|
2022-11-17T15:01:55
|
|
[map] Minor use hb_iter instead of hb_array
|
|
238fc147
|
2022-11-17T14:58:50
|
|
[map] Simplify iterators
|
|
410c14bf
|
2022-11-17T14:53:00
|
|
[map] Fix equality
Ouch!
|
|
dbb7f47b
|
2022-11-03T11:55:41
|
|
fix bug in hb_hashmap_t has() interface
It was not working when the value type is hb_bytes_t because hb_array_t
overloaded operator &
|
|
bcd59b51
|
2022-07-20T15:57:09
|
|
[set/map] Remove init_shallow/fini_shallow()
|
|
e1b5f2f8
|
2022-07-20T15:03:20
|
|
[object] Call destructor in hb_object_destroy()
|
|
9ea4ab60
|
2022-07-20T14:57:32
|
|
[object] Call constructor
|
|
61c04384
|
2022-07-20T14:43:58
|
|
[map] Allow geting non-const value pointer out with has()
|
|
00cfc5c1
|
2022-07-20T14:38:28
|
|
[map] Don't set out value in has() if not found
|
|
485f0432
|
2022-07-20T14:34:55
|
|
[map] Enable using hashmap with unique_ptr
|
|
2a4773e4
|
2022-06-21T19:29:52
|
|
add option "--instance", store axes_location in subset_plan and drop all
variation tables when all axes are pinned at default
|
|
d8f9d517
|
2022-07-12T13:19:31
|
|
[hashmap] Add keys_ref() and values_ref()
|
|
5da341ce
|
2022-06-27T13:29:22
|
|
[map] Another try at hiding minus1
To fix https://github.com/harfbuzz/harfbuzz/issues/3684
|
|
c72d3104
|
2022-06-27T13:31:05
|
|
[map] Return const reference in operator[]
|
|
69d53f3e
|
2022-06-27T13:17:10
|
|
[map] Make default_value() inline
See if it make fix https://github.com/harfbuzz/harfbuzz/issues/3684
|
|
88f00ecb
|
2022-06-03T01:30:27
|
|
[map] Fix iter_ref () and test it
|
|
25f57230
|
2022-06-03T01:11:22
|
|
[map] Return references from new iter_ref()
|
|
997d9cc4
|
2022-06-02T18:04:12
|
|
[map] Make unique_ptr hashable
|
|
8bb2a332
|
2022-06-02T15:18:23
|
|
[map] Remove unneeded assignment
|
|
e9407a2b
|
2022-06-02T11:29:44
|
|
Use shared_ptr<hb_set_t> in one place
See if valgrind is happy...
|
|
b9230c54
|
2022-06-02T11:18:38
|
|
[map] Fix has()
|
|
97ea10a6
|
2022-06-02T11:14:17
|
|
Remove old nullptr_t hacks
Were used for hashmap before.
|
|
3f78a71c
|
2022-06-02T11:11:35
|
|
[map] Finally! Just can usd hb_hashmap_t<obj_t, obj_t>
Yay!
|
|
0ccab339
|
2022-06-02T10:43:36
|
|
[map] Remove invalid-key template arguments since unused
|
|
3f6a8f69
|
2022-06-02T10:36:07
|
|
[map] Remove invalid-key special-casing
Can override invalid-key value now.
|
|
5328b73f
|
2022-06-02T10:32:56
|
|
[map] Reduce map item size again
|
|
4f58ae60
|
2022-06-02T10:13:55
|
|
[map] Keep is_used, is_tombstone as booleans
|
|
ea2dd54b
|
2022-05-26T11:31:28
|
|
[map] Place item hash between key and value, not after them
This way if only one of key and value is 64bit (eg. pointer), and other is 32bit,
the whole item will fit in 128bit, whereas before it would have been bumped up to
196 if only value was 64bit (a common use-case for us.)
|
|
cbcdf442
|
2022-05-26T11:20:27
|
|
[map] Speed up map's own hash()
|
|
de33ef61
|
2022-05-26T11:07:21
|
|
[map] Add TODO item
|
|
b99efa6c
|
2022-05-28T05:16:34
|
|
[map] Minor: use const reference in has()
|
|
2fdb7616
|
2022-05-19T16:00:43
|
|
[map Further adjust hash function
|
|
01fc90b6
|
2022-05-19T16:00:06
|
|
[map] Adjust hash function
|
|
58f848da
|
2022-05-19T15:42:54
|
|
[set/map] Adjust hash function return type
|
|
561e02fe
|
2022-05-19T13:38:52
|
|
[map] Make hb_map_t hashable
|
|
ad176990
|
2022-05-19T13:36:12
|
|
[map] Add is_equal() / towards making hb_map_t hashable
New API:
+ hb_map_is_equal()
|
|
f82ee17a
|
2022-05-18T12:17:43
|
|
[map] Pre-size map in constructor if we can
|
|
7fa580bc
|
2022-05-12T13:05:32
|
|
[map] Fix map copy/move constructors to actually work
Ouch!
|
|
e30511a8
|
2022-01-14T16:20:31
|
|
[map] Correct previous commit, if (...) was reversed.
|
|
ff4e8c7e
|
2022-01-14T16:20:31
|
|
[map] Fix bad memory access if hb_map.fini() was called twice.
|
|
8a69e006
|
2022-01-13T16:17:34
|
|
[meta] Use std::addressof() instead of hb_addressof()
|
|
47afb3ef
|
2022-01-13T15:26:07
|
|
[meta] Replace hb_is_pointer with std::is_pointer
|
|
956e0a4d
|
2022-01-13T15:06:58
|
|
[map] Destruct objects
|
|
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.
|
|
5a91db11
|
2022-01-13T12:44:48
|
|
[map] Remove constexpr invalid items
These were non-workable in the general case, eg std::string.
|
|
114046dc
|
2022-01-13T12:38:26
|
|
[map] Construct objects
|
|
ca4f56bd
|
2022-01-13T11:48:34
|
|
[map] Massage some more
Towards being able to store arbitrary types.
|
|
74811c50
|
2022-01-10T14:57:38
|
|
[map] Map == / != use correct types
|
|
ce7f19a2
|
2022-01-10T14:40:27
|
|
Revert "[map] Actually use k/v invalid types for declaration!"
This reverts commit 6f559346ac70fd188cb22d41f4b03ec227feee25.
Err. My bad.
|
|
6f559346
|
2022-01-10T14:29:36
|
|
[map] Actually use k/v invalid types for declaration!
|
|
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.
|
|
b1cd0dce
|
2021-11-02T17:56:11
|
|
[map] Add INVALID_KEY and INVALID_VALUE
|
|
59d8f6c8
|
2021-11-02T10:33:53
|
|
[map] Fix copy assignment operator
|
|
943921cf
|
2021-11-02T00:26:46
|
|
[meta] Use more std type_traits
|
|
811f80a7
|
2021-11-02T00:14:34
|
|
[algs] Use std::move instead of hb_move()
|
|
4c6fd7cd
|
2021-11-01T23:13:34
|
|
[map] Try moving items when resizing
|
|
a28ea8d7
|
2021-11-01T22:50:54
|
|
Simplify swap()
|
|
94158316
|
2021-11-01T22:47:26
|
|
[map] Add iterable constructor
|
|
a03b9b14
|
2021-11-01T22:45:11
|
|
[map] Add initializer_list and swap()
|
|
c30f6834
|
2021-11-01T22:29:14
|
|
[map] Add 5 methods
|
|
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
|
|
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.
|
|
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
|
|
a8f9f85a
|
2021-03-29T18:12:05
|
|
[map] Return success from ->set()
|
|
2fbd34f8
|
2020-06-28T22:41:09
|
|
m[set/map] Add operator bool()
Probably should use in places..
|
|
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).
.
|
|
6a45df0a
|
2020-07-08T18:17:40
|
|
Fix -Wambiguous-reversed-operator warning
Fixes https://github.com/harfbuzz/harfbuzz/issues/2554
|
|
e541fb47
|
2020-06-21T09:49:48
|
|
minor, replace single hb_apply daggers with foreach
|
|
a7df5a7b
|
2020-04-23T10:50:02
|
|
[hashmap] Minor
|
|
2dda6dd7
|
2020-04-20T14:12:45
|
|
minor, tweak spacing
turn 8 spaces to tab, add space before Null/Crap
|
|
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.
|
|
e0315b4a
|
2019-05-10T19:48:02
|
|
[meta] is_integer -> is_integral
|
|
971020ec
|
2019-05-08T16:31:52
|
|
Add sink support for hb_hashmap_t and a reverse call to hb_pair_t.
|
|
c9b287a8
|
2019-05-09T12:43:57
|
|
Add hb_lidentity(), and rename hb_rvalue() to hb_ridentity()
|
|
27b20930
|
2019-05-08T15:32:57
|
|
[map] Return rvalues from keys()/values()
|
|
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); }
^
|