list.h 968 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. #pragma once
  2. #include <furi.h>
  3. struct ListItem;
  4. typedef struct ListItem {
  5. void *data;
  6. struct ListItem *next;
  7. struct ListItem *prev;
  8. } ListItem;
  9. typedef struct {
  10. ListItem *head;
  11. ListItem *tail;
  12. size_t count;
  13. } List;
  14. List *list_make();
  15. //frees everything
  16. void list_free(List *list);
  17. //clears the list, but not data
  18. void list_clear(List *list);
  19. //clears the list, and data
  20. void list_free_data(List *list);
  21. void list_push_back(void *data, List *list);
  22. void list_push_front(void *data, List *list);
  23. void *list_pop_back(List *list);
  24. void *list_pop_front(List *list);
  25. void *list_pop_at(size_t index, List *list);
  26. void list_remove_item(void *data, List *list);
  27. void list_remove_at(size_t index, List *list);
  28. List *list_splice(size_t index, size_t count, List *list);
  29. void *list_peek_front(List *list);
  30. void *list_peek_index(List *list, size_t index);
  31. ListItem *list_get_index(List *list, size_t index);
  32. void *list_peek_back(List *list);