formalize typename(), and add its reverse type_from_string()
Sometime typename() is used, sometimes type_names[] is accessed directly. Let's enforce typename() all the time which allows for validating the type. Also let's add a function to go from a name to a type and use it instead of manual memcpy() when appropriate. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:

committed by
Junio C Hamano

parent
9ba630318f
commit
df8436622f
26
object.c
26
object.c
@ -18,11 +18,31 @@ struct object *get_indexed_object(unsigned int idx)
|
||||
return obj_hash[idx];
|
||||
}
|
||||
|
||||
const char *type_names[] = {
|
||||
"none", "commit", "tree", "blob", "tag",
|
||||
"bad type 5", "bad type 6", "delta", "bad",
|
||||
static const char *object_type_strings[] = {
|
||||
NULL, /* OBJ_NONE = 0 */
|
||||
"commit", /* OBJ_COMMIT = 1 */
|
||||
"tree", /* OBJ_TREE = 2 */
|
||||
"blob", /* OBJ_BLOB = 3 */
|
||||
"tag", /* OBJ_TAG = 4 */
|
||||
};
|
||||
|
||||
const char *typename(unsigned int type)
|
||||
{
|
||||
if (type >= ARRAY_SIZE(object_type_strings))
|
||||
return NULL;
|
||||
return object_type_strings[type];
|
||||
}
|
||||
|
||||
int type_from_string(const char *str)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 1; i < ARRAY_SIZE(object_type_strings); i++)
|
||||
if (!strcmp(str, object_type_strings[i]))
|
||||
return i;
|
||||
die("invalid object type \"%s\"", str);
|
||||
}
|
||||
|
||||
static unsigned int hash_obj(struct object *obj, unsigned int n)
|
||||
{
|
||||
unsigned int hash = *(unsigned int *)obj->sha1;
|
||||
|
Reference in New Issue
Block a user