/** ******************************************************************************* * @file sort_queue.h * @create 2023-08-01 * @author Panchip BLE GROUP * @note * Copyright (c) Shanghai Panchip Microelectronics Co.,Ltd. * ******************************************************************************* */ #ifndef SORT_QUEUE_H_ #define SORT_QUEUE_H_ #include #include #include "os/queue.h" struct sort_queue_item_s{ SLIST_ENTRY(sort_queue_item_s) next; }; typedef struct sort_queue_item_s sort_queue_item_t; typedef bool (*sort_compare_func_t)(sort_queue_item_t *item0, sort_queue_item_t *item1); typedef struct{ SLIST_HEAD(, sort_queue_item_s) list; sort_compare_func_t compare_func; }sort_queue_t; #define SORT_QUEUE_INIT(_name, _compare_func) \ static sort_queue_t _name = { \ .list.slh_first = NULL, \ .compare_func = _compare_func, \ } void sort_queue_add(sort_queue_t *sq, sort_queue_item_t *pitem); void *sort_queue_pop(sort_queue_t *sq); void *sort_queue_peek(sort_queue_t *sq); void sort_queue_remove(sort_queue_t *sq, sort_queue_item_t *pitem); uint32_t sort_queue_cnt(sort_queue_t *sq); #define SORT_QUEUE_TEST_EN 0 #if SORT_QUEUE_TEST_EN void sort_queue_test(void); #endif #endif /* SORT_QUEUE_H_ */