ref-cache: introduce a new type, ref_cache
For now, it just wraps a `ref_entry *` that points at the root of the tree. Soon it will hold more information. Add two new functions, `create_ref_cache()` and `free_ref_cache()`. Make `free_ref_entry()` private. Change files-backend to use this type to hold its caches. Signed-off-by: Michael Haggerty <mhagger@alum.mit.edu> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:

committed by
Junio C Hamano

parent
958f964691
commit
7c22bc8a18
@ -63,9 +63,17 @@ struct ref_entry *create_ref_entry(const char *refname,
|
||||
return ref;
|
||||
}
|
||||
|
||||
struct ref_cache *create_ref_cache(struct files_ref_store *refs)
|
||||
{
|
||||
struct ref_cache *ret = xcalloc(1, sizeof(*ret));
|
||||
|
||||
ret->root = create_dir_entry(refs, "", 0, 1);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static void clear_ref_dir(struct ref_dir *dir);
|
||||
|
||||
void free_ref_entry(struct ref_entry *entry)
|
||||
static void free_ref_entry(struct ref_entry *entry)
|
||||
{
|
||||
if (entry->flag & REF_DIR) {
|
||||
/*
|
||||
@ -77,6 +85,12 @@ void free_ref_entry(struct ref_entry *entry)
|
||||
free(entry);
|
||||
}
|
||||
|
||||
void free_ref_cache(struct ref_cache *cache)
|
||||
{
|
||||
free_ref_entry(cache->root);
|
||||
free(cache);
|
||||
}
|
||||
|
||||
/*
|
||||
* Clear and free all entries in dir, recursively.
|
||||
*/
|
||||
|
Reference in New Issue
Block a user