alist: Add a way to get the next element

Add a new function which returns the next element after the one
provided, if it exists in the list.

Signed-off-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Simon Glass
2024-10-19 09:21:44 -06:00
parent 6668d860f7
commit 2ce146a3de
3 changed files with 107 additions and 0 deletions

View File

@@ -106,6 +106,27 @@ const void *alist_get_ptr(const struct alist *lst, uint index)
return lst->data + index * lst->obj_size;
}
int alist_calc_index(const struct alist *lst, const void *ptr)
{
uint index;
if (!lst->count || ptr < lst->data)
return -1;
index = (ptr - lst->data) / lst->obj_size;
return index;
}
const void *alist_next_ptrd(const struct alist *lst, const void *ptr)
{
int index = alist_calc_index(lst, ptr);
assert(index != -1);
return alist_get_ptr(lst, index + 1);
}
void *alist_ensure_ptr(struct alist *lst, uint index)
{
uint minsize = index + 1;