Merge branch 'jk/ref-array-push'

API clean-up aournd ref-filter code.

* jk/ref-array-push:
  ref-filter: factor ref_array pushing into its own function
  ref-filter: make ref_array_item allocation more consistent
  ref-filter: use "struct object_id" consistently
This commit is contained in:
Junio C Hamano
2018-04-25 13:28:59 +09:00
4 changed files with 36 additions and 14 deletions

View File

@ -1828,15 +1828,30 @@ static const struct object_id *match_points_at(struct oid_array *points_at,
return NULL;
}
/* Allocate space for a new ref_array_item and copy the objectname and flag to it */
/*
* Allocate space for a new ref_array_item and copy the name and oid to it.
*
* Callers can then fill in other struct members at their leisure.
*/
static struct ref_array_item *new_ref_array_item(const char *refname,
const unsigned char *objectname,
int flag)
const struct object_id *oid)
{
struct ref_array_item *ref;
FLEX_ALLOC_STR(ref, refname, refname);
hashcpy(ref->objectname.hash, objectname);
ref->flag = flag;
oidcpy(&ref->objectname, oid);
return ref;
}
struct ref_array_item *ref_array_push(struct ref_array *array,
const char *refname,
const struct object_id *oid)
{
struct ref_array_item *ref = new_ref_array_item(refname, oid);
ALLOC_GROW(array->items, array->nr + 1, array->alloc);
array->items[array->nr++] = ref;
return ref;
}
@ -1931,12 +1946,11 @@ static int ref_filter_handler(const char *refname, const struct object_id *oid,
* to do its job and the resulting list may yet to be pruned
* by maxcount logic.
*/
ref = new_ref_array_item(refname, oid->hash, flag);
ref = ref_array_push(ref_cbdata->array, refname, oid);
ref->commit = commit;
REALLOC_ARRAY(ref_cbdata->array->items, ref_cbdata->array->nr + 1);
ref_cbdata->array->items[ref_cbdata->array->nr++] = ref;
ref->flag = flag;
ref->kind = kind;
return 0;
}
@ -2169,11 +2183,11 @@ void show_ref_array_item(struct ref_array_item *info,
putchar('\n');
}
void pretty_print_ref(const char *name, const unsigned char *sha1,
void pretty_print_ref(const char *name, const struct object_id *oid,
const struct ref_format *format)
{
struct ref_array_item *ref_item;
ref_item = new_ref_array_item(name, sha1, 0);
ref_item = new_ref_array_item(name, oid);
ref_item->kind = ref_kind_from_refname(name);
show_ref_array_item(ref_item, format);
free_array_item(ref_item);