[PATCH v6 00/15] Add struct strmap and associated utility functions
- From
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com>
- Date
- Nov 11, 2020, 20:02 UTC
- Message-ID
- <pull.835.v6.git.git.1605124942.gitgitgadget@gmail.com>
- In-Reply-To
- <pull.835.v5.git.git.1604622298.gitgitgadget@gmail.com>
Here I introduce new strmap, strintmap, and strset types.
Changes since v5:
* Fixed a typo in forward declaration of struct mem_pool, spotted by Phillip. (Usage via pointers meant gcc & clang wouldn't complain.)
[1] https://lore.kernel.org/git/20180906191203.GA26184@sigill.intra.peff.net/
Elijah Newren (15): hashmap: add usage documentation explaining hashmap_free[_entries]() hashmap: adjust spacing to fix argument alignment hashmap: allow re-use after hashmap_free() hashmap: introduce a new hashmap_partial_clear() hashmap: provide deallocation function names strmap: new utility functions strmap: add more utility functions strmap: enable faster clearing and reusing of strmaps strmap: add functions facilitating use as a string->int map strmap: split create_entry() out of strmap_put() strmap: add a strset sub-type strmap: enable allocations to come from a mem_pool strmap: take advantage of FLEXPTR_ALLOC_STR when relevant Use new HASHMAP_INIT macro to simplify hashmap initialization shortlog: use strset from strmap.h
Makefile | 1 + add-interactive.c | 2 +- attr.c | 26 ++-- blame.c | 2 +- bloom.c | 5 +- builtin/difftool.c | 9 +- builtin/fetch.c | 6 +- builtin/shortlog.c | 61 +-------- config.c | 2 +- diff.c | 4 +- diffcore-rename.c | 2 +- dir.c | 8 +- hashmap.c | 74 +++++++---- hashmap.h | 91 +++++++++++--- merge-recursive.c | 6 +- name-hash.c | 4 +- object.c | 2 +- oidmap.c | 2 +- patch-ids.c | 2 +- range-diff.c | 6 +- ref-filter.c | 2 +- revision.c | 11 +- sequencer.c | 4 +- strmap.c | 178 ++++++++++++++++++++++++++ strmap.h | 268 ++++++++++++++++++++++++++++++++++++++++ submodule-config.c | 4 +- t/helper/test-hashmap.c | 9 +- 27 files changed, 621 insertions(+), 170 deletions(-) create mode 100644 strmap.c create mode 100644 strmap.h
base-commit: d4a392452e292ff924e79ec8458611c0f679d6d4 Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-835%2Fnewren%2Fstrmap-v6 Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-835/newren/strmap-v6 Pull-Request: https://github.com/git/git/pull/835
Range-diff vs v5:
1: af6b6fcb46 = 1: af6b6fcb46 hashmap: add usage documentation explaining hashmap_free[_entries]()
2: 591161fd78 = 2: 591161fd78 hashmap: adjust spacing to fix argument alignment
3: f2718d036d = 3: f2718d036d hashmap: allow re-use after hashmap_free()
4: 61f1da3c51 = 4: 61f1da3c51 hashmap: introduce a new hashmap_partial_clear()
5: 861e8d65ae = 5: 861e8d65ae hashmap: provide deallocation function names
6: 448d3b219f = 6: 448d3b219f strmap: new utility functions
7: 5e8004c728 = 7: 5e8004c728 strmap: add more utility functions
8: fd96e9fc8d = 8: fd96e9fc8d strmap: enable faster clearing and reusing of strmaps
9: f499934f54 = 9: f499934f54 strmap: add functions facilitating use as a string->int map
10: 3bcceb8cdb = 10: 3bcceb8cdb strmap: split create_entry() out of strmap_put()
11: e128a71fec = 11: e128a71fec strmap: add a strset sub-type
12: 34f542d9dd ! 12: 3926c4c97b strmap: enable allocations to come from a mem_pool
@@ strmap.h
#include "hashmap.h"
-+struct mempool;
++struct mem_pool;
struct strmap {
struct hashmap map;
+ struct mem_pool *pool;
13: 39ec2fa411 = 13: 562595224b strmap: take advantage of FLEXPTR_ALLOC_STR when relevant
14: d3713d88f2 = 14: 058e7a6b76 Use new HASHMAP_INIT macro to simplify hashmap initialization
15: 24e5ce60f5 = 15: 9b494c26c1 shortlog: use strset from strmap.h-- gitgitgadget