git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
blob 0e64c0e8a244d60e36382a6e442cd2084a65e709 1631 bytes (raw)
name: oidmap.c 	 # note: path name is non-authoritative(*)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
 
#include "cache.h"
#include "oidmap.h"

static int oidmap_neq(const void *hashmap_cmp_fn_data,
		      const struct hashmap_entry *e1,
		      const struct hashmap_entry *e2,
		      const void *keydata)
{
	const struct oidmap_entry *a, *b;

	a = container_of(e1, const struct oidmap_entry, internal_entry);
	b = container_of(e2, const struct oidmap_entry, internal_entry);

	if (keydata)
		return !oideq(&a->oid, (const struct object_id *) keydata);
	return !oideq(&a->oid, &b->oid);
}

void oidmap_init(struct oidmap *map, size_t initial_size)
{
	hashmap_init(&map->map, oidmap_neq, NULL, initial_size);
}

void oidmap_free(struct oidmap *map, int free_entries)
{
	if (!map)
		return;

	if (free_entries)
		hashmap_free_entries(
			&map->map, struct oidmap_entry, internal_entry);
	else
		hashmap_free(&map->map);
}

struct oidmap_entry *oidmap_get(const struct oidmap *map,
		const struct object_id *key)
{
	if (!map->map.cmpfn)
		return NULL;

	return oidmap_entry_from_hashmap_entry(
		hashmap_get_from_hash(&map->map, oidhash(key), key));
}

struct oidmap_entry *oidmap_remove(struct oidmap *map,
		const struct object_id *key)
{
	struct hashmap_entry entry;

	if (!map->map.cmpfn)
		oidmap_init(map, 0);

	hashmap_entry_init(&entry, oidhash(key));
	return oidmap_entry_from_hashmap_entry(
		hashmap_remove(&map->map, &entry, key));
}

struct oidmap_entry *oidmap_put(struct oidmap *map, struct oidmap_entry *entry)
{
	if (!map->map.cmpfn)
		oidmap_init(map, 0);

	hashmap_entry_init(&entry->internal_entry, oidhash(&entry->oid));
	return oidmap_entry_from_hashmap_entry(
		hashmap_put(&map->map, &entry->internal_entry));
}

debug log:

solving 0e64c0e8a2 ...
found 0e64c0e8a2 in https://public-inbox.org/git/20200425025921.1397-3-abhishekkumar8222@gmail.com/
found 44345a8cf2 in https://public-inbox.org/git/20200425025921.1397-1-abhishekkumar8222@gmail.com/
found 423aa014a3 in https://80x24.org/mirrors/git.git
preparing index
index prepared:
100644 423aa014a33eda2c6b695906eb0c349552d9e2b8	oidmap.c

applying [1/2] https://public-inbox.org/git/20200425025921.1397-1-abhishekkumar8222@gmail.com/
diff --git a/oidmap.c b/oidmap.c
index 423aa014a3..44345a8cf2 100644


applying [2/2] https://public-inbox.org/git/20200425025921.1397-3-abhishekkumar8222@gmail.com/
diff --git a/oidmap.c b/oidmap.c
index 44345a8cf2..0e64c0e8a2 100644

Checking patch oidmap.c...
Applied patch oidmap.c cleanly.
Checking patch oidmap.c...
Applied patch oidmap.c cleanly.

index at:
100644 0e64c0e8a244d60e36382a6e442cd2084a65e709	oidmap.c

(*) Git path names are given by the tree(s) the blob belongs to.
    Blobs themselves have no identifier aside from the hash of its contents.^

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).