/* stack.h - simple stacking */ #ifndef HOEDOWN_STACK_H #define HOEDOWN_STACK_H #include #ifdef __cplusplus extern "C" { #endif /********* * TYPES * *********/ struct hoedown_stack { void **item; size_t size; size_t asize; }; typedef struct hoedown_stack hoedown_stack; /************* * FUNCTIONS * *************/ /* hoedown_stack_init: initialize a stack */ void hoedown_stack_init(hoedown_stack *st, size_t initial_size); /* hoedown_stack_uninit: free internal data of the stack */ void hoedown_stack_uninit(hoedown_stack *st); /* hoedown_stack_grow: increase the allocated size to the given value */ void hoedown_stack_grow(hoedown_stack *st, size_t neosz); /* hoedown_stack_push: push an item to the top of the stack */ void hoedown_stack_push(hoedown_stack *st, void *item); /* hoedown_stack_pop: retrieve and remove the item at the top of the stack */ void *hoedown_stack_pop(hoedown_stack *st); /* hoedown_stack_top: retrieve the item at the top of the stack */ void *hoedown_stack_top(const hoedown_stack *st); #ifdef __cplusplus } #endif #endif /** HOEDOWN_STACK_H **/