// SPDX-License-Identifier: GPL-2.0 /* * Copyright (c) 2020 Rockchip Electronics Co. Ltd. * * Author: Zorro Liu */ #ifndef _BUF_LIST_H_ #define _BUF_LIST_H_ #define BUF_LIST_MAX_NUMBER 100 typedef struct buf_list_s { /** number of elements */ int nb_elt; /** list node */ int **array_elements; int maxelements; } buf_list_t; /** @brief initializes the list struct * * @param *li - pointer to list struct * @returns 0 on success, 1 on error */ int buf_list_init(buf_list_t **li, int maxelements); /** @brief uninitializes the list struct * * @param *li - the list * @returns 0 on success, 1 on error */ int buf_list_uninit(buf_list_t *li); /** @brief query if i'nth element exists * * @param *li - the list * @param i - position * @returns 0 on success, 1 on error */ int buf_list_eol(buf_list_t *li, int i); /** @brief return the element at position * * @param *li - the list * @param pos - position * @returns pointer to element on success, NULL on error. */ int *buf_list_get(buf_list_t *li, int pos); /** @brief removes the element at position * * @param *li - the list * @param pos - position * @returns - on success, 1 on error */ int buf_list_remove(buf_list_t *li, int pos); /** @brief adds the element at position * * @param *li - the list * @param *el - element * @param pos - position (-1 means the end) * @returns - on success, 1 on error */ int buf_list_add(buf_list_t *li, int *el, int pos); /** @brief search the node at list, with the given compare function * * @param *list - the list * @param *node - node to be matched * @param cmp_func - compare function. compare function must return -1, 0, 1 for less than, equal to, and greater than * @returns - on success, 1 on error */ int *buf_list_find(buf_list_t *list, int *node, int (*cmp_func)(int *, int *)); /** @brief return the position of node * * @param *list - the list * @param *node - element * @returns - position on success, -1 on error */ int buf_list_get_pos(buf_list_t *list, int *node); /** @brief set the node element at a specified position * * @param *list - the list * @param *el - element * @pos pos - position * @returns - 1 on success, -1 on error */ int buf_list_set(buf_list_t *li, int *el, int pos); #endif