diff options
Diffstat (limited to 'xpp/xtalk/xlist.h')
-rw-r--r-- | xpp/xtalk/xlist.h | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/xpp/xtalk/xlist.h b/xpp/xtalk/xlist.h new file mode 100644 index 0000000..4f7f818 --- /dev/null +++ b/xpp/xtalk/xlist.h @@ -0,0 +1,29 @@ +#ifndef XLIST_H +#define XLIST_H + +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +struct xlist_node { + void *data; + struct xlist_node *next; + struct xlist_node *prev; +}; + +typedef void (*xlist_destructor_t)(void *data); + +struct xlist_node *xlist_new(void *data); +void xlist_destroy(struct xlist_node *list, xlist_destructor_t destructor); +void xlist_append_item(struct xlist_node *list, struct xlist_node *item); +void xlist_remove_item(struct xlist_node *item); +struct xlist_node *xlist_shift(struct xlist_node *list); +int xlist_empty(const struct xlist_node *list); +size_t xlist_length(const struct xlist_node *list); + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* XLIST_H */ |