#include "../git-compat-util.h"
#include "../hash.h"
#include "../refs.h"
#include "../repository.h"
#include "refs-internal.h"
#include "ref-cache.h"
#include "../iterator.h"
void add_entry_to_dir(struct ref_dir *dir, struct ref_entry *entry)
{ … }
struct ref_dir *get_ref_dir(struct ref_entry *entry)
{ … }
struct ref_entry *create_ref_entry(const char *refname,
const char *referent,
const struct object_id *oid, int flag)
{ … }
struct ref_cache *create_ref_cache(struct ref_store *refs,
fill_ref_dir_fn *fill_ref_dir)
{ … }
static void clear_ref_dir(struct ref_dir *dir);
static void free_ref_entry(struct ref_entry *entry)
{ … }
void free_ref_cache(struct ref_cache *cache)
{ … }
static void clear_ref_dir(struct ref_dir *dir)
{ … }
struct ref_entry *create_dir_entry(struct ref_cache *cache,
const char *dirname, size_t len)
{ … }
static int ref_entry_cmp(const void *a, const void *b)
{ … }
static void sort_ref_dir(struct ref_dir *dir);
struct string_slice { … };
static int ref_entry_cmp_sslice(const void *key_, const void *ent_)
{ … }
int search_ref_dir(struct ref_dir *dir, const char *refname, size_t len)
{ … }
static struct ref_dir *search_for_subdir(struct ref_dir *dir,
const char *subdirname, size_t len)
{ … }
static struct ref_dir *find_containing_dir(struct ref_dir *dir,
const char *refname)
{ … }
struct ref_entry *find_ref_entry(struct ref_dir *dir, const char *refname)
{ … }
static int is_dup_ref(const struct ref_entry *ref1, const struct ref_entry *ref2)
{ … }
static void sort_ref_dir(struct ref_dir *dir)
{ … }
enum prefix_state { … };
static enum prefix_state overlaps_prefix(const char *dirname,
const char *prefix)
{ … }
static void prime_ref_dir(struct ref_dir *dir, const char *prefix)
{ … }
struct cache_ref_iterator_level { … };
struct cache_ref_iterator { … };
static int cache_ref_iterator_advance(struct ref_iterator *ref_iterator)
{ … }
static int cache_ref_iterator_peel(struct ref_iterator *ref_iterator,
struct object_id *peeled)
{ … }
static int cache_ref_iterator_abort(struct ref_iterator *ref_iterator)
{ … }
static struct ref_iterator_vtable cache_ref_iterator_vtable = …;
struct ref_iterator *cache_ref_iterator_begin(struct ref_cache *cache,
const char *prefix,
struct repository *repo,
int prime_dir)
{ … }