#ifndef _sllist_ #define _sllist_ #include "jval.h" typedef struct sllist { struct sllist *link; Jval val; } *Sllist; extern Sllist new_sllist(); extern free_sllist(Sllist); extern Sllist sll_prepend(Sllist, Jval); extern Sllist sll_insert_after(Sllist, Jval); extern Sllist sll_first(Sllist); extern Sllist sll_next(Sllist); extern Sllist sll_nil(Sllist); extern int sll_empty(Sllist); #define sll_traverse(tmpnode, list) for (tmpnode = sll_first(list); \ tmpnode != sll_nil(list); \ tmpnode = sll_next(tmpnode)) #endif