6 struct object_list
*next
;
12 struct object
*ref
[FLEX_ARRAY
]; /* more */
18 struct object_array_entry
{
28 * The object type is stored in 3 bits.
33 unsigned type
: TYPE_BITS
;
34 unsigned flags
: FLAG_BITS
;
35 unsigned char sha1
[20];
38 extern int track_object_refs
;
39 extern const char *type_names
[9];
41 extern unsigned int get_max_object_index(void);
42 extern struct object
*get_indexed_object(unsigned int);
44 static inline const char *typename(unsigned int type
)
46 return type_names
[type
> OBJ_BAD
? OBJ_BAD
: type
];
49 extern struct object_refs
*lookup_object_refs(struct object
*);
52 struct object
*lookup_object(const unsigned char *sha1
);
54 /** Returns the object, having looked it up as being the given type. **/
55 struct object
*lookup_object_type(const unsigned char *sha1
, const char *type
);
57 void created_object(const unsigned char *sha1
, struct object
*obj
);
59 /** Returns the object, having parsed it to find out what it is. **/
60 struct object
*parse_object(const unsigned char *sha1
);
62 /* Given the result of read_sha1_file(), returns the object after
63 * parsing it. eaten_p indicates if the object has a borrowed copy
64 * of buffer and the caller should not free() it.
66 struct object
*parse_object_buffer(const unsigned char *sha1
, const char *type
, unsigned long size
, void *buffer
, int *eaten_p
);
68 /** Returns the object, with potentially excess memory allocated. **/
69 struct object
*lookup_unknown_object(const unsigned char *sha1
);
71 struct object_refs
*alloc_object_refs(unsigned count
);
72 void set_object_refs(struct object
*obj
, struct object_refs
*refs
);
74 void mark_reachable(struct object
*obj
, unsigned int mask
);
76 struct object_list
*object_list_insert(struct object
*item
,
77 struct object_list
**list_p
);
79 void object_list_append(struct object
*item
,
80 struct object_list
**list_p
);
82 unsigned object_list_length(struct object_list
*list
);
84 int object_list_contains(struct object_list
*list
, struct object
*obj
);
86 /* Object array handling .. */
87 void add_object_array(struct object
*obj
, const char *name
, struct object_array
*array
);