cb_queue.h 879 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*
  2. * SPDX-License-Identifier: Apache-2.0
  3. *
  4. * Change Logs:
  5. * Date Author Notes
  6. * 2023-04-08 tyx first implementation
  7. */
  8. #include "cb_list.h"
  9. #ifndef CB_QUEUE_H_
  10. #define CB_QUEUE_H_
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14. typedef struct cb_queue
  15. {
  16. cb_list_t head;
  17. }cb_queue_t;
  18. typedef struct cb_queue_item
  19. {
  20. cb_list_t node;
  21. }cb_queue_item_t;
  22. cb_queue_t *cb_queue_init(cb_queue_t *object);
  23. void cb_queue_put(cb_queue_t *object, cb_queue_item_t *item);
  24. cb_queue_item_t *cb_queue_get(cb_queue_t *object);
  25. cb_queue_item_t *cb_queue_pick(cb_queue_t *object);
  26. void cb_queue_insert(cb_queue_t *object, cb_queue_item_t *item, int index);
  27. cb_inline cb_queue_item_t *cb_queue_item_init(cb_queue_item_t *item)
  28. {
  29. cb_list_init(&item->node);
  30. return item;
  31. }
  32. #ifdef __cplusplus
  33. }
  34. #endif
  35. #endif