list.h 682 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /**
  2. *** :: List ::
  3. ***
  4. *** Dynamically expandable array
  5. *** like std::vector but for pointers
  6. ***
  7. **/
  8. #ifndef list_h
  9. #define list_h
  10. #include "cengine.h"
  11. typedef struct {
  12. int num_items;
  13. int num_slots;
  14. void** items;
  15. } list;
  16. list* list_new();
  17. void list_push_back(list* l, void* item);
  18. void* list_pop_back(list* l);
  19. void* list_pop_at(list* l, int index);
  20. void list_remove(list* l, void* item);
  21. void* list_get(list* l, int index);
  22. void list_set(list* l, int index, void* item);
  23. bool list_is_empty(list* l);
  24. void list_delete(list* l);
  25. void list_clear(list* l);
  26. void list_delete_with(list* l, void func(void*));
  27. void list_clear_with(list* l, void func(void*));
  28. #endif