#ifndef LIST_H
#define LIST_H

typedef void (*acceptor)(void*);

struct list
{
    void *data;
    struct list *next;
    acceptor print;
    acceptor free;
};

void push_front(struct list **l, void *data, acceptor p, acceptor f);
void pop_front(struct list **l);
void print_list(struct list *l);
void destroy_list(struct list **l);

#endif /* ! LIST_H */
