diff options
Diffstat (limited to 'object.h')
-rw-r--r-- | object.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/object.h b/object.h new file mode 100644 index 0000000000..6accda33d8 --- /dev/null +++ b/object.h @@ -0,0 +1,52 @@ +#ifndef OBJECT_H +#define OBJECT_H + +struct object_list { + struct object *item; + struct object_list *next; + const char *name; +}; + +struct object { + unsigned parsed : 1; + unsigned used : 1; + unsigned int flags; + unsigned char sha1[20]; + const char *type; + struct object_list *refs; + void *util; +}; + +extern int track_object_refs; +extern int nr_objs; +extern struct object **objs; + +/** Internal only **/ +struct object *lookup_object(const unsigned char *sha1); + +/** Returns the object, having looked it up as being the given type. **/ +struct object *lookup_object_type(const unsigned char *sha1, const char *type); + +void created_object(const unsigned char *sha1, struct object *obj); + +/** Returns the object, having parsed it to find out what it is. **/ +struct object *parse_object(const unsigned char *sha1); + +/** Returns the object, with potentially excess memory allocated. **/ +struct object *lookup_unknown_object(const unsigned char *sha1); + +void add_ref(struct object *refer, struct object *target); + +void mark_reachable(struct object *obj, unsigned int mask); + +struct object_list *object_list_insert(struct object *item, + struct object_list **list_p); + +void object_list_append(struct object *item, + struct object_list **list_p); + +unsigned object_list_length(struct object_list *list); + +int object_list_contains(struct object_list *list, struct object *obj); + +#endif /* OBJECT_H */ |