#ifndef SP_LIST_H
#define SP_LIST_H

typedef struct sp_node_s {
  struct sp_node_s *next;
  void *data;

} sp_list_node;

sp_list_node *sp_list_sort(sp_list_node *, int (*)(sp_list_node const *const,
                                                   sp_list_node const *const));
sp_list_node *sp_list_insert(sp_list_node *, void *);
sp_list_node *sp_list_prepend(sp_list_node *, void *);
void sp_list_free(sp_list_node *, void (*free_data_func)(void *data));
void sp_list_free2(sp_list_node *node);
size_t sp_list_len(sp_list_node *p);

#endif
