You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

58 lines
2.3 KiB

28 years ago
20 years ago
28 years ago
25 years ago
27 years ago
25 years ago
27 years ago
28 years ago
27 years ago
28 years ago
28 years ago
28 years ago
28 years ago
28 years ago
  1. /*
  2. +----------------------------------------------------------------------+
  3. | Zend Engine |
  4. +----------------------------------------------------------------------+
  5. | Copyright (c) 1998-2007 Zend Technologies Ltd. (http://www.zend.com) |
  6. +----------------------------------------------------------------------+
  7. | This source file is subject to version 2.00 of the Zend license, |
  8. | that is bundled with this package in the file LICENSE, and is |
  9. | available through the world-wide-web at the following url: |
  10. | http://www.zend.com/license/2_00.txt. |
  11. | If you did not receive a copy of the Zend license and are unable to |
  12. | obtain it through the world-wide-web, please send a note to |
  13. | license@zend.com so we can mail you a copy immediately. |
  14. +----------------------------------------------------------------------+
  15. | Authors: Andi Gutmans <andi@zend.com> |
  16. | Zeev Suraski <zeev@zend.com> |
  17. +----------------------------------------------------------------------+
  18. */
  19. /* $Id$ */
  20. #ifndef ZEND_STACK_H
  21. #define ZEND_STACK_H
  22. typedef struct _zend_stack {
  23. int top, max;
  24. void **elements;
  25. } zend_stack;
  26. #define STACK_BLOCK_SIZE 64
  27. BEGIN_EXTERN_C()
  28. ZEND_API int zend_stack_init(zend_stack *stack);
  29. ZEND_API int zend_stack_push(zend_stack *stack, void *element, int size);
  30. ZEND_API int zend_stack_top(zend_stack *stack, void **element);
  31. ZEND_API int zend_stack_del_top(zend_stack *stack);
  32. ZEND_API int zend_stack_int_top(zend_stack *stack);
  33. ZEND_API int zend_stack_is_empty(zend_stack *stack);
  34. ZEND_API int zend_stack_destroy(zend_stack *stack);
  35. ZEND_API void **zend_stack_base(zend_stack *stack);
  36. ZEND_API int zend_stack_count(zend_stack *stack);
  37. ZEND_API void zend_stack_apply(zend_stack *stack, int type, int (*apply_function)(void *element));
  38. ZEND_API void zend_stack_apply_with_argument(zend_stack *stack, int type, int (*apply_function)(void *element, void *arg), void *arg);
  39. END_EXTERN_C()
  40. #define ZEND_STACK_APPLY_TOPDOWN 1
  41. #define ZEND_STACK_APPLY_BOTTOMUP 2
  42. #endif /* ZEND_STACK_H */
  43. /*
  44. * Local variables:
  45. * tab-width: 4
  46. * c-basic-offset: 4
  47. * indent-tabs-mode: t
  48. * End:
  49. */