summaryrefslogtreecommitdiff
path: root/Zend/zend_ptr_stack.h
diff options
context:
space:
mode:
authorZeev Suraski <zeev@php.net>2001-07-11 17:18:22 +0000
committerZeev Suraski <zeev@php.net>2001-07-11 17:18:22 +0000
commit87e392437963fa32b59095f9d691d635ea322b2c (patch)
tree05ebd3d8fdfd0f0aa3bcfa4bb2efcc6c4c24be5a /Zend/zend_ptr_stack.h
parent66c8b08efa641a3d150c0a5c27f8e540003abea0 (diff)
downloadphp-git-87e392437963fa32b59095f9d691d635ea322b2c.tar.gz
Remove the last couple of bogus inlines
Diffstat (limited to 'Zend/zend_ptr_stack.h')
-rw-r--r--Zend/zend_ptr_stack.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/Zend/zend_ptr_stack.h b/Zend/zend_ptr_stack.h
index 834a1da160..e541aefbdf 100644
--- a/Zend/zend_ptr_stack.h
+++ b/Zend/zend_ptr_stack.h
@@ -31,13 +31,28 @@ typedef struct _zend_ptr_stack {
#define PTR_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_n_push(zend_ptr_stack *stack, int count, ...);
-ZEND_API void *zend_ptr_stack_pop(zend_ptr_stack *stack);
ZEND_API void zend_ptr_stack_n_pop(zend_ptr_stack *stack, int count, ...);
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 *), zend_bool free_elements);
ZEND_API int zend_ptr_stack_num_elements(zend_ptr_stack *stack);
+static inline void zend_ptr_stack_push(zend_ptr_stack *stack, void *ptr)
+{
+ if (stack->top >= stack->max) { /* we need to allocate more memory */
+ stack->elements = (void **) erealloc(stack->elements, (sizeof(void *) * (stack->max *= 2 )));
+ stack->top_element = stack->elements+stack->top;
+ }
+ stack->top++;
+ *(stack->top_element++) = ptr;
+}
+
+static inline void *zend_ptr_stack_pop(zend_ptr_stack *stack)
+{
+ stack->top--;
+ return *(--stack->top_element);
+}
+
+
#endif /* ZEND_PTR_STACK_H */