Line | Count | Source |
1 | | #ifndef OIDMAP_H |
2 | | #define OIDMAP_H |
3 | | |
4 | | #include "hash.h" |
5 | | #include "hashmap.h" |
6 | | |
7 | | /* |
8 | | * struct oidmap_entry is a structure representing an entry in the hash table, |
9 | | * which must be used as first member of user data structures. |
10 | | * |
11 | | * Users should set the oid field. oidmap_put() will populate the |
12 | | * internal_entry field. |
13 | | */ |
14 | | struct oidmap_entry { |
15 | | /* For internal use only */ |
16 | | struct hashmap_entry internal_entry; |
17 | | |
18 | | struct object_id oid; |
19 | | }; |
20 | | |
21 | | struct oidmap { |
22 | | struct hashmap map; |
23 | | }; |
24 | | |
25 | 0 | #define OIDMAP_INIT { { NULL } } |
26 | | |
27 | | /* |
28 | | * Initializes an oidmap structure. |
29 | | * |
30 | | * `map` is the oidmap to initialize. |
31 | | * |
32 | | * If the total number of entries is known in advance, the `initial_size` |
33 | | * parameter may be used to preallocate a sufficiently large table and thus |
34 | | * prevent expensive resizing. If 0, the table is dynamically resized. |
35 | | */ |
36 | | void oidmap_init(struct oidmap *map, size_t initial_size); |
37 | | |
38 | | /* |
39 | | * Clear an oidmap, freeing any allocated memory. The map is empty and |
40 | | * can be reused without another explicit init. |
41 | | * |
42 | | * If `free_entries` is true, each oidmap_entry in the map is freed as well |
43 | | * using stdlibs free(). |
44 | | */ |
45 | | void oidmap_clear(struct oidmap *map, int free_entries); |
46 | | |
47 | | /* |
48 | | * Returns the oidmap entry for the specified oid, or NULL if not found. |
49 | | */ |
50 | | void *oidmap_get(const struct oidmap *map, |
51 | | const struct object_id *key); |
52 | | |
53 | | /* |
54 | | * Adds or replaces an oidmap entry. |
55 | | * |
56 | | * ((struct oidmap_entry *) entry)->internal_entry will be populated by this |
57 | | * function. |
58 | | * |
59 | | * Returns the replaced entry, or NULL if not found (i.e. the entry was added). |
60 | | */ |
61 | | void *oidmap_put(struct oidmap *map, void *entry); |
62 | | |
63 | | /* |
64 | | * Removes an oidmap entry matching the specified oid. |
65 | | * |
66 | | * Returns the removed entry, or NULL if not found. |
67 | | */ |
68 | | void *oidmap_remove(struct oidmap *map, const struct object_id *key); |
69 | | |
70 | | static inline unsigned int oidmap_get_size(struct oidmap *map) |
71 | 0 | { |
72 | 0 | return hashmap_get_size(&map->map); |
73 | 0 | } Unexecuted instantiation: run-command.c:oidmap_get_size Unexecuted instantiation: config.c:oidmap_get_size Unexecuted instantiation: dir.c:oidmap_get_size Unexecuted instantiation: mailmap.c:oidmap_get_size Unexecuted instantiation: object-file.c:oidmap_get_size Unexecuted instantiation: object-name.c:oidmap_get_size Unexecuted instantiation: object.c:oidmap_get_size Unexecuted instantiation: odb.c:oidmap_get_size Unexecuted instantiation: streaming.c:oidmap_get_size Unexecuted instantiation: oidmap.c:oidmap_get_size Unexecuted instantiation: pack-write.c:oidmap_get_size Unexecuted instantiation: packfile.c:oidmap_get_size Unexecuted instantiation: path.c:oidmap_get_size Unexecuted instantiation: promisor-remote.c:oidmap_get_size Unexecuted instantiation: read-cache.c:oidmap_get_size Unexecuted instantiation: refs.c:oidmap_get_size Unexecuted instantiation: remote.c:oidmap_get_size Unexecuted instantiation: replace-object.c:oidmap_get_size Unexecuted instantiation: repo-settings.c:oidmap_get_size Unexecuted instantiation: repository.c:oidmap_get_size Unexecuted instantiation: revision.c:oidmap_get_size Unexecuted instantiation: setup.c:oidmap_get_size Unexecuted instantiation: shallow.c:oidmap_get_size Unexecuted instantiation: submodule-config.c:oidmap_get_size Unexecuted instantiation: submodule.c:oidmap_get_size Unexecuted instantiation: tag.c:oidmap_get_size Unexecuted instantiation: tmp-objdir.c:oidmap_get_size Unexecuted instantiation: tree-walk.c:oidmap_get_size Unexecuted instantiation: tree.c:oidmap_get_size Unexecuted instantiation: attr.c:oidmap_get_size Unexecuted instantiation: bisect.c:oidmap_get_size Unexecuted instantiation: bloom.c:oidmap_get_size Unexecuted instantiation: bundle-uri.c:oidmap_get_size Unexecuted instantiation: bundle.c:oidmap_get_size Unexecuted instantiation: cache-tree.c:oidmap_get_size Unexecuted instantiation: combine-diff.c:oidmap_get_size Unexecuted instantiation: commit-graph.c:oidmap_get_size Unexecuted instantiation: commit-reach.c:oidmap_get_size Unexecuted instantiation: commit.c:oidmap_get_size Unexecuted instantiation: connected.c:oidmap_get_size Unexecuted instantiation: convert.c:oidmap_get_size Unexecuted instantiation: diff.c:oidmap_get_size Unexecuted instantiation: diffcore-rename.c:oidmap_get_size Unexecuted instantiation: fetch-pack.c:oidmap_get_size Unexecuted instantiation: fsck.c:oidmap_get_size Unexecuted instantiation: grep.c:oidmap_get_size Unexecuted instantiation: list-objects.c:oidmap_get_size Unexecuted instantiation: log-tree.c:oidmap_get_size Unexecuted instantiation: loose.c:oidmap_get_size Unexecuted instantiation: merge-ort.c:oidmap_get_size Unexecuted instantiation: midx.c:oidmap_get_size Unexecuted instantiation: notes-cache.c:oidmap_get_size Unexecuted instantiation: notes.c:oidmap_get_size Unexecuted instantiation: pack-check.c:oidmap_get_size Unexecuted instantiation: pack-revindex.c:oidmap_get_size Unexecuted instantiation: send-pack.c:oidmap_get_size Unexecuted instantiation: sequencer.c:oidmap_get_size Unexecuted instantiation: transport-helper.c:oidmap_get_size Unexecuted instantiation: unpack-trees.c:oidmap_get_size Unexecuted instantiation: xdiff-interface.c:oidmap_get_size Unexecuted instantiation: apply.c:oidmap_get_size Unexecuted instantiation: entry.c:oidmap_get_size Unexecuted instantiation: list-objects-filter.c:oidmap_get_size Unexecuted instantiation: match-trees.c:oidmap_get_size Unexecuted instantiation: rerere.c:oidmap_get_size Unexecuted instantiation: fuzz-pack-headers.c:oidmap_get_size Unexecuted instantiation: fuzz-commit-graph.c:oidmap_get_size Unexecuted instantiation: fuzz-pack-idx.c:oidmap_get_size |
74 | | |
75 | | struct oidmap_iter { |
76 | | struct hashmap_iter h_iter; |
77 | | }; |
78 | | |
79 | | static inline void oidmap_iter_init(struct oidmap *map, struct oidmap_iter *iter) |
80 | 0 | { |
81 | 0 | hashmap_iter_init(&map->map, &iter->h_iter); |
82 | 0 | } Unexecuted instantiation: run-command.c:oidmap_iter_init Unexecuted instantiation: config.c:oidmap_iter_init Unexecuted instantiation: dir.c:oidmap_iter_init Unexecuted instantiation: mailmap.c:oidmap_iter_init Unexecuted instantiation: object-file.c:oidmap_iter_init Unexecuted instantiation: object-name.c:oidmap_iter_init Unexecuted instantiation: object.c:oidmap_iter_init Unexecuted instantiation: odb.c:oidmap_iter_init Unexecuted instantiation: streaming.c:oidmap_iter_init Unexecuted instantiation: oidmap.c:oidmap_iter_init Unexecuted instantiation: pack-write.c:oidmap_iter_init Unexecuted instantiation: packfile.c:oidmap_iter_init Unexecuted instantiation: path.c:oidmap_iter_init Unexecuted instantiation: promisor-remote.c:oidmap_iter_init Unexecuted instantiation: read-cache.c:oidmap_iter_init Unexecuted instantiation: refs.c:oidmap_iter_init Unexecuted instantiation: remote.c:oidmap_iter_init Unexecuted instantiation: replace-object.c:oidmap_iter_init Unexecuted instantiation: repo-settings.c:oidmap_iter_init Unexecuted instantiation: repository.c:oidmap_iter_init Unexecuted instantiation: revision.c:oidmap_iter_init Unexecuted instantiation: setup.c:oidmap_iter_init Unexecuted instantiation: shallow.c:oidmap_iter_init Unexecuted instantiation: submodule-config.c:oidmap_iter_init Unexecuted instantiation: submodule.c:oidmap_iter_init Unexecuted instantiation: tag.c:oidmap_iter_init Unexecuted instantiation: tmp-objdir.c:oidmap_iter_init Unexecuted instantiation: tree-walk.c:oidmap_iter_init Unexecuted instantiation: tree.c:oidmap_iter_init Unexecuted instantiation: attr.c:oidmap_iter_init Unexecuted instantiation: bisect.c:oidmap_iter_init Unexecuted instantiation: bloom.c:oidmap_iter_init Unexecuted instantiation: bundle-uri.c:oidmap_iter_init Unexecuted instantiation: bundle.c:oidmap_iter_init Unexecuted instantiation: cache-tree.c:oidmap_iter_init Unexecuted instantiation: combine-diff.c:oidmap_iter_init Unexecuted instantiation: commit-graph.c:oidmap_iter_init Unexecuted instantiation: commit-reach.c:oidmap_iter_init Unexecuted instantiation: commit.c:oidmap_iter_init Unexecuted instantiation: connected.c:oidmap_iter_init Unexecuted instantiation: convert.c:oidmap_iter_init Unexecuted instantiation: diff.c:oidmap_iter_init Unexecuted instantiation: diffcore-rename.c:oidmap_iter_init Unexecuted instantiation: fetch-pack.c:oidmap_iter_init Unexecuted instantiation: fsck.c:oidmap_iter_init Unexecuted instantiation: grep.c:oidmap_iter_init Unexecuted instantiation: list-objects.c:oidmap_iter_init Unexecuted instantiation: log-tree.c:oidmap_iter_init Unexecuted instantiation: loose.c:oidmap_iter_init Unexecuted instantiation: merge-ort.c:oidmap_iter_init Unexecuted instantiation: midx.c:oidmap_iter_init Unexecuted instantiation: notes-cache.c:oidmap_iter_init Unexecuted instantiation: notes.c:oidmap_iter_init Unexecuted instantiation: pack-check.c:oidmap_iter_init Unexecuted instantiation: pack-revindex.c:oidmap_iter_init Unexecuted instantiation: send-pack.c:oidmap_iter_init Unexecuted instantiation: sequencer.c:oidmap_iter_init Unexecuted instantiation: transport-helper.c:oidmap_iter_init Unexecuted instantiation: unpack-trees.c:oidmap_iter_init Unexecuted instantiation: xdiff-interface.c:oidmap_iter_init Unexecuted instantiation: apply.c:oidmap_iter_init Unexecuted instantiation: entry.c:oidmap_iter_init Unexecuted instantiation: list-objects-filter.c:oidmap_iter_init Unexecuted instantiation: match-trees.c:oidmap_iter_init Unexecuted instantiation: rerere.c:oidmap_iter_init Unexecuted instantiation: fuzz-pack-headers.c:oidmap_iter_init Unexecuted instantiation: fuzz-commit-graph.c:oidmap_iter_init Unexecuted instantiation: fuzz-pack-idx.c:oidmap_iter_init |
83 | | |
84 | | static inline void *oidmap_iter_next(struct oidmap_iter *iter) |
85 | 0 | { |
86 | 0 | /* TODO: this API could be reworked to do compile-time type checks */ |
87 | 0 | return (void *)hashmap_iter_next(&iter->h_iter); |
88 | 0 | } Unexecuted instantiation: run-command.c:oidmap_iter_next Unexecuted instantiation: config.c:oidmap_iter_next Unexecuted instantiation: dir.c:oidmap_iter_next Unexecuted instantiation: mailmap.c:oidmap_iter_next Unexecuted instantiation: object-file.c:oidmap_iter_next Unexecuted instantiation: object-name.c:oidmap_iter_next Unexecuted instantiation: object.c:oidmap_iter_next Unexecuted instantiation: odb.c:oidmap_iter_next Unexecuted instantiation: streaming.c:oidmap_iter_next Unexecuted instantiation: oidmap.c:oidmap_iter_next Unexecuted instantiation: pack-write.c:oidmap_iter_next Unexecuted instantiation: packfile.c:oidmap_iter_next Unexecuted instantiation: path.c:oidmap_iter_next Unexecuted instantiation: promisor-remote.c:oidmap_iter_next Unexecuted instantiation: read-cache.c:oidmap_iter_next Unexecuted instantiation: refs.c:oidmap_iter_next Unexecuted instantiation: remote.c:oidmap_iter_next Unexecuted instantiation: replace-object.c:oidmap_iter_next Unexecuted instantiation: repo-settings.c:oidmap_iter_next Unexecuted instantiation: repository.c:oidmap_iter_next Unexecuted instantiation: revision.c:oidmap_iter_next Unexecuted instantiation: setup.c:oidmap_iter_next Unexecuted instantiation: shallow.c:oidmap_iter_next Unexecuted instantiation: submodule-config.c:oidmap_iter_next Unexecuted instantiation: submodule.c:oidmap_iter_next Unexecuted instantiation: tag.c:oidmap_iter_next Unexecuted instantiation: tmp-objdir.c:oidmap_iter_next Unexecuted instantiation: tree-walk.c:oidmap_iter_next Unexecuted instantiation: tree.c:oidmap_iter_next Unexecuted instantiation: attr.c:oidmap_iter_next Unexecuted instantiation: bisect.c:oidmap_iter_next Unexecuted instantiation: bloom.c:oidmap_iter_next Unexecuted instantiation: bundle-uri.c:oidmap_iter_next Unexecuted instantiation: bundle.c:oidmap_iter_next Unexecuted instantiation: cache-tree.c:oidmap_iter_next Unexecuted instantiation: combine-diff.c:oidmap_iter_next Unexecuted instantiation: commit-graph.c:oidmap_iter_next Unexecuted instantiation: commit-reach.c:oidmap_iter_next Unexecuted instantiation: commit.c:oidmap_iter_next Unexecuted instantiation: connected.c:oidmap_iter_next Unexecuted instantiation: convert.c:oidmap_iter_next Unexecuted instantiation: diff.c:oidmap_iter_next Unexecuted instantiation: diffcore-rename.c:oidmap_iter_next Unexecuted instantiation: fetch-pack.c:oidmap_iter_next Unexecuted instantiation: fsck.c:oidmap_iter_next Unexecuted instantiation: grep.c:oidmap_iter_next Unexecuted instantiation: list-objects.c:oidmap_iter_next Unexecuted instantiation: log-tree.c:oidmap_iter_next Unexecuted instantiation: loose.c:oidmap_iter_next Unexecuted instantiation: merge-ort.c:oidmap_iter_next Unexecuted instantiation: midx.c:oidmap_iter_next Unexecuted instantiation: notes-cache.c:oidmap_iter_next Unexecuted instantiation: notes.c:oidmap_iter_next Unexecuted instantiation: pack-check.c:oidmap_iter_next Unexecuted instantiation: pack-revindex.c:oidmap_iter_next Unexecuted instantiation: send-pack.c:oidmap_iter_next Unexecuted instantiation: sequencer.c:oidmap_iter_next Unexecuted instantiation: transport-helper.c:oidmap_iter_next Unexecuted instantiation: unpack-trees.c:oidmap_iter_next Unexecuted instantiation: xdiff-interface.c:oidmap_iter_next Unexecuted instantiation: apply.c:oidmap_iter_next Unexecuted instantiation: entry.c:oidmap_iter_next Unexecuted instantiation: list-objects-filter.c:oidmap_iter_next Unexecuted instantiation: match-trees.c:oidmap_iter_next Unexecuted instantiation: rerere.c:oidmap_iter_next Unexecuted instantiation: fuzz-pack-headers.c:oidmap_iter_next Unexecuted instantiation: fuzz-commit-graph.c:oidmap_iter_next Unexecuted instantiation: fuzz-pack-idx.c:oidmap_iter_next |
89 | | |
90 | | static inline void *oidmap_iter_first(struct oidmap *map, |
91 | | struct oidmap_iter *iter) |
92 | 0 | { |
93 | 0 | oidmap_iter_init(map, iter); |
94 | 0 | /* TODO: this API could be reworked to do compile-time type checks */ |
95 | 0 | return (void *)oidmap_iter_next(iter); |
96 | 0 | } Unexecuted instantiation: run-command.c:oidmap_iter_first Unexecuted instantiation: config.c:oidmap_iter_first Unexecuted instantiation: dir.c:oidmap_iter_first Unexecuted instantiation: mailmap.c:oidmap_iter_first Unexecuted instantiation: object-file.c:oidmap_iter_first Unexecuted instantiation: object-name.c:oidmap_iter_first Unexecuted instantiation: object.c:oidmap_iter_first Unexecuted instantiation: odb.c:oidmap_iter_first Unexecuted instantiation: streaming.c:oidmap_iter_first Unexecuted instantiation: oidmap.c:oidmap_iter_first Unexecuted instantiation: pack-write.c:oidmap_iter_first Unexecuted instantiation: packfile.c:oidmap_iter_first Unexecuted instantiation: path.c:oidmap_iter_first Unexecuted instantiation: promisor-remote.c:oidmap_iter_first Unexecuted instantiation: read-cache.c:oidmap_iter_first Unexecuted instantiation: refs.c:oidmap_iter_first Unexecuted instantiation: remote.c:oidmap_iter_first Unexecuted instantiation: replace-object.c:oidmap_iter_first Unexecuted instantiation: repo-settings.c:oidmap_iter_first Unexecuted instantiation: repository.c:oidmap_iter_first Unexecuted instantiation: revision.c:oidmap_iter_first Unexecuted instantiation: setup.c:oidmap_iter_first Unexecuted instantiation: shallow.c:oidmap_iter_first Unexecuted instantiation: submodule-config.c:oidmap_iter_first Unexecuted instantiation: submodule.c:oidmap_iter_first Unexecuted instantiation: tag.c:oidmap_iter_first Unexecuted instantiation: tmp-objdir.c:oidmap_iter_first Unexecuted instantiation: tree-walk.c:oidmap_iter_first Unexecuted instantiation: tree.c:oidmap_iter_first Unexecuted instantiation: attr.c:oidmap_iter_first Unexecuted instantiation: bisect.c:oidmap_iter_first Unexecuted instantiation: bloom.c:oidmap_iter_first Unexecuted instantiation: bundle-uri.c:oidmap_iter_first Unexecuted instantiation: bundle.c:oidmap_iter_first Unexecuted instantiation: cache-tree.c:oidmap_iter_first Unexecuted instantiation: combine-diff.c:oidmap_iter_first Unexecuted instantiation: commit-graph.c:oidmap_iter_first Unexecuted instantiation: commit-reach.c:oidmap_iter_first Unexecuted instantiation: commit.c:oidmap_iter_first Unexecuted instantiation: connected.c:oidmap_iter_first Unexecuted instantiation: convert.c:oidmap_iter_first Unexecuted instantiation: diff.c:oidmap_iter_first Unexecuted instantiation: diffcore-rename.c:oidmap_iter_first Unexecuted instantiation: fetch-pack.c:oidmap_iter_first Unexecuted instantiation: fsck.c:oidmap_iter_first Unexecuted instantiation: grep.c:oidmap_iter_first Unexecuted instantiation: list-objects.c:oidmap_iter_first Unexecuted instantiation: log-tree.c:oidmap_iter_first Unexecuted instantiation: loose.c:oidmap_iter_first Unexecuted instantiation: merge-ort.c:oidmap_iter_first Unexecuted instantiation: midx.c:oidmap_iter_first Unexecuted instantiation: notes-cache.c:oidmap_iter_first Unexecuted instantiation: notes.c:oidmap_iter_first Unexecuted instantiation: pack-check.c:oidmap_iter_first Unexecuted instantiation: pack-revindex.c:oidmap_iter_first Unexecuted instantiation: send-pack.c:oidmap_iter_first Unexecuted instantiation: sequencer.c:oidmap_iter_first Unexecuted instantiation: transport-helper.c:oidmap_iter_first Unexecuted instantiation: unpack-trees.c:oidmap_iter_first Unexecuted instantiation: xdiff-interface.c:oidmap_iter_first Unexecuted instantiation: apply.c:oidmap_iter_first Unexecuted instantiation: entry.c:oidmap_iter_first Unexecuted instantiation: list-objects-filter.c:oidmap_iter_first Unexecuted instantiation: match-trees.c:oidmap_iter_first Unexecuted instantiation: rerere.c:oidmap_iter_first Unexecuted instantiation: fuzz-pack-headers.c:oidmap_iter_first Unexecuted instantiation: fuzz-commit-graph.c:oidmap_iter_first Unexecuted instantiation: fuzz-pack-idx.c:oidmap_iter_first |
97 | | |
98 | | #endif |