list.h 1.3 KB

1234567891011121314151617181920212223242526272829303132333435
  1. #ifndef _lub_list_h
  2. #define _lub_list_h
  3. #include <stddef.h>
  4. #include "lub/c_decl.h"
  5. typedef struct lub_list_node_s lub_list_node_t;
  6. typedef int lub_list_compare_fn(const void *first, const void *second);
  7. typedef struct lub_list_s lub_list_t;
  8. typedef struct lub_list_node_s lub_list_iterator_t;
  9. _BEGIN_C_DECL
  10. lub_list_node_t *lub_list_node_new(void *data);
  11. lub_list_node_t *lub_list_node__get_prev(lub_list_node_t *node);
  12. lub_list_node_t *lub_list_node__get_next(lub_list_node_t *node);
  13. void *lub_list_node__get_data(lub_list_node_t *node);
  14. void lub_list_node_free(lub_list_node_t *node);
  15. void lub_list_node_copy(lub_list_node_t *dst, lub_list_node_t *src);
  16. lub_list_t *lub_list_new(lub_list_compare_fn compareFn);
  17. void lub_list_free(lub_list_t *list);
  18. lub_list_node_t *lub_list__get_head(lub_list_t *list);
  19. lub_list_node_t *lub_list__get_tail(lub_list_t *list);
  20. lub_list_node_t *lub_list_iterator_init(lub_list_t *list);
  21. lub_list_node_t *lub_list_iterator_next(lub_list_node_t *node);
  22. lub_list_node_t *lub_list_iterator_prev(lub_list_node_t *node);
  23. lub_list_node_t *lub_list_add(lub_list_t *list, void *data);
  24. void lub_list_del(lub_list_t *list, lub_list_node_t *node);
  25. lub_list_node_t *lub_list_search(lub_list_t *list, void *data);
  26. unsigned int lub_list_len(lub_list_t *list);
  27. _END_C_DECL
  28. #endif /* _lub_list_h */