From 45ee13b942b26925b33d827bda2856e1ed0af0b7 Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 28 Jan 2021 01:19:42 -0500 Subject: hash_pos(): convert to oid_pos() All of our callers are actually looking up an object_id, not a bare hash. Likewise, the arrays they are looking in are actual arrays of object_id (not just raw bytes of hashes, as we might find in a pack .idx; those are handled by bsearch_hash()). Using an object_id gives us more type safety, and makes the callers slightly shorter. It also gets rid of the word "sha1" from several access functions, though we could obviously also rename those with s/sha1/hash/. Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- commit-graph.c | 28 ++++++++++++++-------------- 1 file changed, 14 insertions(+), 14 deletions(-) (limited to 'commit-graph.c') diff --git a/commit-graph.c b/commit-graph.c index f3486ec18f..248f1efb73 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -1012,10 +1012,10 @@ static int write_graph_chunk_oids(struct hashfile *f, return 0; } -static const unsigned char *commit_to_sha1(size_t index, void *table) +static const struct object_id *commit_to_oid(size_t index, void *table) { struct commit **commits = table; - return commits[index]->object.oid.hash; + return &commits[index]->object.oid; } static int write_graph_chunk_data(struct hashfile *f, @@ -1043,10 +1043,10 @@ static int write_graph_chunk_data(struct hashfile *f, if (!parent) edge_value = GRAPH_PARENT_NONE; else { - edge_value = hash_pos(parent->item->object.oid.hash, - ctx->commits.list, - ctx->commits.nr, - commit_to_sha1); + edge_value = oid_pos(&parent->item->object.oid, + ctx->commits.list, + ctx->commits.nr, + commit_to_oid); if (edge_value >= 0) edge_value += ctx->new_num_commits_in_base; @@ -1074,10 +1074,10 @@ static int write_graph_chunk_data(struct hashfile *f, else if (parent->next) edge_value = GRAPH_EXTRA_EDGES_NEEDED | num_extra_edges; else { - edge_value = hash_pos(parent->item->object.oid.hash, - ctx->commits.list, - ctx->commits.nr, - commit_to_sha1); + edge_value = oid_pos(&parent->item->object.oid, + ctx->commits.list, + ctx->commits.nr, + commit_to_oid); if (edge_value >= 0) edge_value += ctx->new_num_commits_in_base; @@ -1143,10 +1143,10 @@ static int write_graph_chunk_extra_edges(struct hashfile *f, /* Since num_parents > 2, this initializer is safe. */ for (parent = (*list)->parents->next; parent; parent = parent->next) { - int edge_value = hash_pos(parent->item->object.oid.hash, - ctx->commits.list, - ctx->commits.nr, - commit_to_sha1); + int edge_value = oid_pos(&parent->item->object.oid, + ctx->commits.list, + ctx->commits.nr, + commit_to_oid); if (edge_value >= 0) edge_value += ctx->new_num_commits_in_base; -- cgit v1.2.3 From 8380dcd700e80cd22745bcffb3625f90f943950c Mon Sep 17 00:00:00 2001 From: Jeff King Date: Thu, 28 Jan 2021 01:20:23 -0500 Subject: oid_pos(): access table through const pointers When we are looking up an oid in an array, we obviously don't need to write to the array. Let's mark it as const in the function interfaces, as well as in the local variables we use to derference the void pointer (note a few cases use pointers-to-pointers, so we mark everything const). Signed-off-by: Jeff King Signed-off-by: Junio C Hamano --- builtin/name-rev.c | 4 ++-- commit-graph.c | 4 ++-- commit.c | 4 ++-- hash-lookup.c | 2 +- hash-lookup.h | 4 ++-- oid-array.c | 4 ++-- pack-bitmap-write.c | 4 ++-- 7 files changed, 13 insertions(+), 13 deletions(-) (limited to 'commit-graph.c') diff --git a/builtin/name-rev.c b/builtin/name-rev.c index 27138fdce4..b221d30014 100644 --- a/builtin/name-rev.c +++ b/builtin/name-rev.c @@ -390,9 +390,9 @@ static void name_tips(void) } } -static const struct object_id *nth_tip_table_ent(size_t ix, void *table_) +static const struct object_id *nth_tip_table_ent(size_t ix, const void *table_) { - struct tip_table_entry *table = table_; + const struct tip_table_entry *table = table_; return &table[ix].oid; } diff --git a/commit-graph.c b/commit-graph.c index 248f1efb73..b09fce5f57 100644 --- a/commit-graph.c +++ b/commit-graph.c @@ -1012,9 +1012,9 @@ static int write_graph_chunk_oids(struct hashfile *f, return 0; } -static const struct object_id *commit_to_oid(size_t index, void *table) +static const struct object_id *commit_to_oid(size_t index, const void *table) { - struct commit **commits = table; + const struct commit * const *commits = table; return &commits[index]->object.oid; } diff --git a/commit.c b/commit.c index 39eab5b36b..fd2831dad3 100644 --- a/commit.c +++ b/commit.c @@ -105,9 +105,9 @@ static timestamp_t parse_commit_date(const char *buf, const char *tail) return parse_timestamp(dateptr, NULL, 10); } -static const struct object_id *commit_graft_oid_access(size_t index, void *table) +static const struct object_id *commit_graft_oid_access(size_t index, const void *table) { - struct commit_graft **commit_graft_table = table; + const struct commit_graft * const *commit_graft_table = table; return &commit_graft_table[index]->oid; } diff --git a/hash-lookup.c b/hash-lookup.c index d15bb34574..b98ed5e11e 100644 --- a/hash-lookup.c +++ b/hash-lookup.c @@ -50,7 +50,7 @@ static uint32_t take2(const struct object_id *oid, size_t ofs) * The oid of element i (between 0 and nr - 1) should be returned * by "fn(i, table)". */ -int oid_pos(const struct object_id *oid, void *table, size_t nr, +int oid_pos(const struct object_id *oid, const void *table, size_t nr, oid_access_fn fn) { size_t hi = nr; diff --git a/hash-lookup.h b/hash-lookup.h index 7b3ecad1f0..dbd71ebaf7 100644 --- a/hash-lookup.h +++ b/hash-lookup.h @@ -1,10 +1,10 @@ #ifndef HASH_LOOKUP_H #define HASH_LOOKUP_H -typedef const struct object_id *oid_access_fn(size_t index, void *table); +typedef const struct object_id *oid_access_fn(size_t index, const void *table); int oid_pos(const struct object_id *oid, - void *table, + const void *table, size_t nr, oid_access_fn fn); diff --git a/oid-array.c b/oid-array.c index a19235afbf..73ba76e9e9 100644 --- a/oid-array.c +++ b/oid-array.c @@ -22,9 +22,9 @@ void oid_array_sort(struct oid_array *array) array->sorted = 1; } -static const struct object_id *oid_access(size_t index, void *table) +static const struct object_id *oid_access(size_t index, const void *table) { - struct object_id *array = table; + const struct object_id *array = table; return &array[index]; } diff --git a/pack-bitmap-write.c b/pack-bitmap-write.c index f21259dfc8..88d9e696a5 100644 --- a/pack-bitmap-write.c +++ b/pack-bitmap-write.c @@ -610,9 +610,9 @@ static inline void dump_bitmap(struct hashfile *f, struct ewah_bitmap *bitmap) die("Failed to write bitmap index"); } -static const struct object_id *oid_access(size_t pos, void *table) +static const struct object_id *oid_access(size_t pos, const void *table) { - struct pack_idx_entry **index = table; + const struct pack_idx_entry * const *index = table; return &index[pos]->oid; } -- cgit v1.2.3