#ifndef INCLUDE_cache_h__
#define INCLUDE_cache_h__

#include "git2/common.h"
#include "git2/oid.h"
#include "git2/odb.h"

#include "thread-utils.h"

typedef void (*git_cached_obj_freeptr)(void *);

typedef struct {
	git_oid oid;
	unsigned int refcount;
} git_cached_obj;

typedef struct {
	git_cached_obj *ptr;
	git_mutex lock;
	unsigned int lru;
} cache_node;

typedef struct {
	cache_node *nodes;

	unsigned int lru_count;
	size_t size_mask;
	git_cached_obj_freeptr free_obj;
} git_cache;


void git_cache_init(git_cache *cache, size_t size, git_cached_obj_freeptr free_ptr);
void git_cache_free(git_cache *cache);

void *git_cache_try_store(git_cache *cache, void *entry);
void *git_cache_get(git_cache *cache, const git_oid *oid);

#endif
