Abstract out accesses to object hash array

There are a few special places where some programs accessed the object
hash array directly, which bothered me because I wanted to play with some
simple re-organizations.

So this patch makes the object hash array data structures all entirely
local to object.c, and the few users who wanted to look at it now get to
use a function to query how many object index entries there can be, and to
actually access the array.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
Linus Torvalds 2006-06-29 21:38:55 -07:00 committed by Junio C Hamano
parent 8dbbd14ea3
commit fc046a75d5
4 changed files with 27 additions and 13 deletions

View File

@ -60,12 +60,13 @@ static int objwarning(struct object *obj, const char *err, ...)
static void check_connectivity(void)
{
int i;
int i, max;
/* Look up all the requirements, warn about missing objects.. */
for (i = 0; i < obj_allocs; i++) {
max = get_max_object_index();
for (i = 0; i < max; i++) {
const struct object_refs *refs;
struct object *obj = objs[i];
struct object *obj = get_indexed_object(i);
if (!obj)
continue;

View File

@ -234,12 +234,15 @@ int main(int argc, char **argv)
fwrite(p_start, p - p_start, 1, stdout);
}
} else if (all) {
int i;
int i, max;
for (i = 0; i < obj_allocs; i++)
if (objs[i])
printf("%s %s\n", sha1_to_hex(objs[i]->sha1),
get_rev_name(objs[i]));
max = get_max_object_index();
for (i = 0; i < max; i++) {
struct object * obj = get_indexed_object(i);
if (!obj)
continue;
printf("%s %s\n", sha1_to_hex(obj->sha1), get_rev_name(obj));
}
} else {
int i;
for (i = 0; i < revs.nr; i++)

View File

@ -5,9 +5,18 @@
#include "commit.h"
#include "tag.h"
struct object **objs;
static int nr_objs;
int obj_allocs;
static struct object **objs;
static int nr_objs, obj_allocs;
unsigned int get_max_object_index(void)
{
return obj_allocs;
}
struct object *get_indexed_object(unsigned int idx)
{
return objs[idx];
}
const char *type_names[] = {
"none", "blob", "tree", "commit", "bad"

View File

@ -40,10 +40,11 @@ struct object {
};
extern int track_object_refs;
extern int obj_allocs;
extern struct object **objs;
extern const char *type_names[];
extern unsigned int get_max_object_index(void);
extern struct object *get_indexed_object(unsigned int);
static inline const char *typename(unsigned int type)
{
return type_names[type > TYPE_TAG ? TYPE_BAD : type];