list.h 993 Bytes

typedef struct _list *fd_list;
typedef struct node *fd_list_iterator;

fd_list fd_list_new(void);
int fd_list_empty(fd_list);
int fd_list_insert(fd_list, void *);
int fd_list_append(fd_list, void *);
int fd_list_sorted_insert(fd_list, void *, int (*)(void *, void *));
void *fd_list_remove(fd_list);
void *fd_list_head(fd_list);
void *fd_list_tail(fd_list);

void fd_list_iterate(fd_list);
int fd_list_has_next(fd_list);
void *fd_list_next_element(fd_list);

fd_list_iterator fd_list_iterate2(fd_list);
int fd_list_has_next2(fd_list_iterator);
void *fd_list_next_element2(fd_list_iterator *);

void fd_list_dispose(fd_list);
void fd_list_dispose_deep(fd_list, void (*)(void *));
void fd_list_empty_list(fd_list);
void fd_list_empty_list_deep(fd_list, void (*)(void *));

int fd_list_length(fd_list list); // XXX

#if 0
// XXX
typedef struct node *node;

struct _list {
  node head, tail;
  node state; // allows one iterator per list
};

struct node {
  void *element;
  node next;
};
#endif