Johannes Altmanninger
4499b26ca4
Fix use after move in HashMap::insert
...
Apparently GCC builds worked fine but Clang builds started failing the
"(hash == hash_value(item_key(item)))" assertion.
2023-11-18 19:07:23 +01:00
Maxime Coste
296ab1a1ff
Improve WordDB performance by precomputing hashes
...
Avoid multiple computation of string hashes by making it possible
to pre-compute and pass hashes to interned strings and hash maps.
2023-11-17 17:01:51 +11:00
Maxime Coste
96884193dd
Remove redundant comparison operators
...
Since C++20 (a != b) get automatically rewritten as !(a == b) if
the != operator does not exist.
2023-10-25 20:40:04 +11:00
Maxime Coste
cf7c638025
Refactor KeymapManager to enfore setting is_executing on key iteration
...
Add an iterator based remove to HashMap as that was missing. Make
KeymapManager responsible for throwing on unmap an executing mapping.
2023-05-29 20:11:06 +10:00
Maxime Coste
c8c8051bd0
Refactor RegionsHighlighter to share regexes
...
Instead of storing regexes in each regions, move them to the core
highlighter in a hash map so that shared regexes between different
regions are only applied once per update instead of once per region
Also change iteration logic to apply all regex together to each
changed lines to improve memory locality on big buffers.
For the big_markdown.md file described in #4685 this reduces
initial display time from 3.55s to 2.41s on my machine.
2022-08-20 11:02:59 +02:00
Maxime Coste
89cd3c52eb
Add HashSet implemented as HashMap with void value type
2022-08-05 20:06:34 +10:00
Maxime Coste
9fb7d90449
Change HashMap not to support multiple identical keys by default
...
We do not seem to have any uses for this remaining, and this is
better opt-in with MultiHashMap
2022-08-05 19:20:00 +10:00
Maxime Coste
fb4cef5b61
Replace std::enable_if with requires
...
Introduce some concepts for enum and flags handling, goodbye and
thanks for all the fish std::enable_if.
2021-11-21 09:44:56 +11:00
Maxime Coste
5df8073c3c
Code style tweaks
2020-07-19 12:54:41 +10:00
Maxime Coste
c9cdae4364
Add HashMap::items to access item list
2018-07-05 07:54:28 +10:00
Maxime Coste
71a1893a5e
Fix some trailing spaces and a tab that sneaked into the code base
2018-04-05 08:52:33 +10:00
Maxime Coste
7c3bc48627
Fix ConstexprVector::resize
2017-11-01 14:05:15 +08:00
Maxime Coste
7062022187
HashMap: Tolerate reserving for 0 elements
...
Fixes #1652
2017-10-27 11:03:43 +08:00
Maxime Coste
7c06667bdf
Make the normal mode keymap a compile time hash map
...
This hash map is now fully constexpr, and ends up stored in the read
only data segment instead of being recomputed at each startup.
2017-10-20 12:21:22 +08:00
Maxime Coste
1688332d12
Revert "Change HashCompatible trait to a variable template"
...
This reverts commit b58f72315c
.
Unfortunately gcc-5.1 handling of variable template partial
specializations is bugged.
2017-08-18 08:17:02 +07:00
Maxime Coste
b58f72315c
Change HashCompatible trait to a variable template
2017-08-14 11:54:38 +07:00
Maxime Coste
d37c3d175d
More uses of standard type traits aliases
2017-07-19 08:49:44 +02:00
Maxime Coste
da206d9323
Try to please clang-3.5
2017-03-07 17:21:55 +00:00
Maxime Coste
a1a566e921
Cleanup hash_map code
2017-03-07 15:48:04 +00:00
Maxime Coste
ba02498576
Expand a bit the hash map profiling code
2017-03-07 14:01:01 +00:00
Maxime Coste
f3fdc24383
Remove temporary stats code from HashMap
2017-03-07 01:15:41 +00:00
Maxime Coste
f0ae0b8410
Replace IdMap with HashMap
2017-03-07 01:12:37 +00:00
Maxime Coste
6373338c50
Replace uses of UnorderedMap with HashMap
2017-03-07 01:03:26 +00:00
Maxime Coste
420373475e
Introduce a custom HashMap implementation along with a quick benchmark
2017-03-06 22:25:08 +00:00