Behdad Esfahbod
811f80a701
[algs] Use std::move instead of hb_move()
2021-11-02 00:17:54 -06:00
Behdad Esfahbod
4c6fd7cdb2
[map] Try moving items when resizing
2021-11-01 23:13:34 -06:00
Behdad Esfahbod
a28ea8d7f3
Simplify swap()
2021-11-01 22:50:54 -06:00
Behdad Esfahbod
94158316d9
[map] Add iterable constructor
2021-11-01 22:47:26 -06:00
Behdad Esfahbod
a03b9b14c9
[map] Add initializer_list and swap()
2021-11-01 22:45:11 -06:00
Behdad Esfahbod
c30f6834d0
[map] Add 5 methods
2021-11-01 22:29:14 -06:00
Behdad Esfahbod
d3e09bf465
[set] Make all operators null-safe again
...
Changed my mind.
Also for hb_map_clear().
Part of https://github.com/harfbuzz/harfbuzz/pull/3162
2021-08-24 10:31:49 -06:00
Garret Rieger
c08f1b8903
[map] fix incorrect population count in hash map.
...
If the same key was set twice the population was being incorrectly incremented.
2021-08-10 14:00:55 -06:00
Behdad Esfahbod
2337f0d047
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
2021-07-08 10:54:09 -07:00
Behdad Esfahbod
a8f9f85a91
[map] Return success from ->set()
2021-03-29 18:13:22 -06:00
Behdad Esfahbod
2fbd34f89a
m[set/map] Add operator bool()
...
Probably should use in places..
2021-02-19 18:40:48 -07:00
Behdad Esfahbod
2d39031f7b
[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).
.
2021-02-19 18:40:48 -07:00
Behdad Esfahbod
6a45df0a54
Fix -Wambiguous-reversed-operator warning
...
Fixes https://github.com/harfbuzz/harfbuzz/issues/2554
2020-07-08 18:17:40 -05:00
Ebrahim Byagowi
e541fb474c
minor, replace single hb_apply daggers with foreach
2020-06-21 10:31:39 +04:30
Behdad Esfahbod
a7df5a7bda
[hashmap] Minor
2020-04-24 08:16:03 -07:00
Ebrahim Byagowi
2dda6dd744
minor, tweak spacing
...
turn 8 spaces to tab, add space before Null/Crap
2020-04-20 16:18:29 +04:30
Garret Rieger
be5cdcdfa2
Store the hash value of a key in item_t in hb_map to reduce the number of hash computations.
2019-10-22 13:33:41 -07:00
Behdad Esfahbod
e0315b4aad
[meta] is_integer -> is_integral
2019-05-10 19:48:02 -07:00
Garret Rieger
971020eca7
Add sink support for hb_hashmap_t and a reverse call to hb_pair_t.
2019-05-09 14:52:01 -07:00
Behdad Esfahbod
c9b287a867
Add hb_lidentity(), and rename hb_rvalue() to hb_ridentity()
2019-05-09 12:43:57 -07:00
Behdad Esfahbod
27b2093009
[map] Return rvalues from keys()/values()
2019-05-08 15:32:57 -07:00
Behdad Esfahbod
372c5b97bf
[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); }
^
2019-05-08 15:28:39 -07:00
Behdad Esfahbod
a304827184
[map] Add .values() iterator
2019-05-08 15:08:33 -07:00
Behdad Esfahbod
3c69505b3a
[map] Fix iter
2019-05-08 15:08:33 -07:00
Behdad Esfahbod
f5705d7656
Whitespace
2019-05-08 15:08:33 -07:00
rsheeter
b827181ba1
[map] tweak test-iter.cc
2019-05-08 15:08:33 -07:00
rsheeter
492af0f1bf
[map] add keys()
2019-05-08 15:08:33 -07:00
rsheeter
ba60512813
[map] add a test for iteration
2019-05-08 15:08:33 -07:00
rsheeter
183b8094b5
[map] add iteration
2019-05-08 15:08:33 -07:00
Behdad Esfahbod
bad1606639
[map] Make .has() optionally return value
2019-05-08 12:11:52 -07:00
Behdad Esfahbod
240f57e58d
Rename hb_deref_pointer() to hb_deref()
2019-05-06 23:17:39 -07:00
Behdad Esfahbod
22da12318a
[map] Fix TODO
2019-04-24 10:53:47 -04:00
Behdad Esfahbod
0268db1196
[map] Use hb_invoke() with pointer-to-method
2019-04-24 10:53:39 -04:00
Behdad Esfahbod
824fd342d5
Rename a few macros
2019-04-11 11:16:01 -04:00
Behdad Esfahbod
31c1a83899
[map] Protect more against pointer deref
2019-04-02 20:17:27 -07:00
Behdad Esfahbod
5bffa9e375
More
2019-04-02 20:13:16 -07:00
Behdad Esfahbod
5b66b033fd
[serialize] Fix hb_hashmap_t<> for pointers and use in packed_map
2019-04-02 19:30:22 -07:00
Behdad Esfahbod
10f062234e
[map] Shuffle fini code
2019-03-30 18:44:01 -07:00
Behdad Esfahbod
a43290192b
[serialize] Add packed_map
2019-03-30 17:57:33 -07:00
Behdad Esfahbod
38d57b9a66
[map] Add another TODO item
2019-03-30 16:38:06 -07:00
Behdad Esfahbod
7fd940f899
[map] Add TODO
2019-03-30 16:29:19 -07:00
Behdad Esfahbod
ef33b5d1f6
[map] Deref pointers before equality check
2019-03-30 14:39:21 -07:00
Behdad Esfahbod
c98f51da71
[map] Templatize hb_map_t
...
Template name is hb_hashmap_t<K,V>.
2019-03-30 14:32:52 -07:00
Behdad Esfahbod
bdd5a9c48d
Add hb_hash()
...
I don't like the hb_remove_reference() hack, but necessary.
2019-03-28 21:58:07 -07:00
Behdad Esfahbod
a030ce4ff8
Merge branch 'master' into iter
2019-03-28 21:26:50 -07:00
Michiharu Ariza
93739242e1
minor edit
2019-02-20 13:23:12 -08:00
Michiharu Ariza
eebc21c8de
fix crash in hb_map_t::clear()
...
in case called immediately after init()
2019-02-20 12:43:18 -08:00
Behdad Esfahbod
d438e61042
[iter] Fix operator() impls
2019-01-28 16:34:04 -05:00
Behdad Esfahbod
090fe56dc6
Merge branch 'master' into iter
2019-01-25 16:06:52 +01:00
Behdad Esfahbod
c1cbbb9459
Use static constexpr for large class constants
2019-01-22 10:51:20 +01:00
Behdad Esfahbod
a7de144df3
Implement uniform map interface
...
Coverage, ClassDef, hb_set_t, and hb_map_t implement.
2019-01-20 20:12:12 -05:00
Behdad Esfahbod
bd1318b8cc
Use static constexpr for large class constants
2019-01-20 19:47:52 -05:00
Behdad Esfahbod
043b610fa6
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; }
2019-01-19 09:21:33 -05:00
Behdad Esfahbod
9aebfb4182
[serialize] Streamline error propagation
2018-12-18 13:22:17 -05:00
Ebrahim Byagowi
e412008599
Remove redundant void from C++ sources ( #1486 )
2018-12-17 13:01:01 -05:00
Ebrahim Byagowi
b2ebaa9afa
Remove redundant 'inline' from methods ( #1483 )
2018-12-16 14:08:10 -05:00
Ebrahim Byagowi
7ee5c52345
minor style fix, use void in methods on no argument
2018-12-12 15:14:37 +03:30
Behdad Esfahbod
9e4138c825
Convert misc "static const" constants to enum
2018-11-29 15:01:10 -05:00
Behdad Esfahbod
b186274362
[set/map] Fix uninitialized memory
...
I keep forgetting that primitive types are NOT initialized during construction. :|
2018-10-29 23:21:14 -07:00
Behdad Esfahbod
67a22f377d
[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.
2018-10-29 22:23:22 -07:00
Ebrahim Byagowi
114f66dda6
Fix hb_map_is_empty logic
...
This needs reviewing
2018-10-19 20:23:36 +03:30
Behdad Esfahbod
c77ae40852
Rename hb-*private.hh to hb-*.hh
...
Sorry for the noise, downstream custom builders. Please adjust.
2018-08-25 22:36:36 -07:00