mirror of
https://github.com/git/git.git
synced 2025-12-12 20:36:24 +01:00
Merge branch 'ew/hashmap'
Code clean-up of the hashmap API, both users and implementation.
* ew/hashmap:
hashmap_entry: remove first member requirement from docs
hashmap: remove type arg from hashmap_{get,put,remove}_entry
OFFSETOF_VAR macro to simplify hashmap iterators
hashmap: introduce hashmap_free_entries
hashmap: hashmap_{put,remove} return hashmap_entry *
hashmap: use *_entry APIs for iteration
hashmap_cmp_fn takes hashmap_entry params
hashmap_get{,_from_hash} return "struct hashmap_entry *"
hashmap: use *_entry APIs to wrap container_of
hashmap_get_next returns "struct hashmap_entry *"
introduce container_of macro
hashmap_put takes "struct hashmap_entry *"
hashmap_remove takes "const struct hashmap_entry *"
hashmap_get takes "const struct hashmap_entry *"
hashmap_add takes "struct hashmap_entry *"
hashmap_get_next takes "const struct hashmap_entry *"
hashmap_entry_init takes "struct hashmap_entry *"
packfile: use hashmap_entry in delta_base_cache_entry
coccicheck: detect hashmap_entry.hash assignment
diff: use hashmap_entry_init on moved_entry.ent
This commit is contained in:
@@ -274,18 +274,17 @@ static int find_identical_files(struct hashmap *srcs,
|
||||
struct diff_options *options)
|
||||
{
|
||||
int renames = 0;
|
||||
|
||||
struct diff_filespec *target = rename_dst[dst_index].two;
|
||||
struct file_similarity *p, *best = NULL;
|
||||
int i = 100, best_score = -1;
|
||||
unsigned int hash = hash_filespec(options->repo, target);
|
||||
|
||||
/*
|
||||
* Find the best source match for specified destination.
|
||||
*/
|
||||
p = hashmap_get_from_hash(srcs,
|
||||
hash_filespec(options->repo, target),
|
||||
NULL);
|
||||
for (; p; p = hashmap_get_next(srcs, p)) {
|
||||
p = hashmap_get_entry_from_hash(srcs, hash, NULL,
|
||||
struct file_similarity, entry);
|
||||
hashmap_for_each_entry_from(srcs, p, entry) {
|
||||
int score;
|
||||
struct diff_filespec *source = p->filespec;
|
||||
|
||||
@@ -329,8 +328,8 @@ static void insert_file_table(struct repository *r,
|
||||
entry->index = index;
|
||||
entry->filespec = filespec;
|
||||
|
||||
hashmap_entry_init(entry, hash_filespec(r, filespec));
|
||||
hashmap_add(table, entry);
|
||||
hashmap_entry_init(&entry->entry, hash_filespec(r, filespec));
|
||||
hashmap_add(table, &entry->entry);
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -359,7 +358,7 @@ static int find_exact_renames(struct diff_options *options)
|
||||
renames += find_identical_files(&file_table, i, options);
|
||||
|
||||
/* Free the hash data structure and entries */
|
||||
hashmap_free(&file_table, 1);
|
||||
hashmap_free_entries(&file_table, struct file_similarity, entry);
|
||||
|
||||
return renames;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user