/* +----------------------------------------------------------------------+ | Zend Engine | +----------------------------------------------------------------------+ | Copyright (c) 1998, 1999 Andi Gutmans, Zeev Suraski | +----------------------------------------------------------------------+ | This source file is subject to the Zend license, that is bundled | | with this package in the file LICENSE. If you did not receive a | | copy of the Zend license, please mail us at zend@zend.com so we can | | send you a copy immediately. | +----------------------------------------------------------------------+ | Authors: Andi Gutmans | | Zeev Suraski | +----------------------------------------------------------------------+ */ #ifndef _ZEND_PTR_STACK_H #define _ZEND_PTR_STACK_H typedef struct _zend_ptr_stack { short top, max; void **elements; void **top_element; } zend_ptr_stack; #define STACK_BLOCK_SIZE 64 ZEND_API void zend_ptr_stack_init(zend_ptr_stack *stack); ZEND_API void zend_ptr_stack_push(zend_ptr_stack *stack, void *ptr); ZEND_API void *zend_ptr_stack_pop(zend_ptr_stack *stack); ZEND_API void zend_ptr_stack_destroy(zend_ptr_stack *stack); ZEND_API void zend_ptr_stack_apply(zend_ptr_stack *stack, void (*func)(void *)); ZEND_API void zend_ptr_stack_clean(zend_ptr_stack *stack, void (*func)(void *)); #endif /* _ZEND_PTR_STACK_H */