ZEND_API void zend_ptr_stack_push_from_memory(zend_ptr_stack *stack, int count, void **pointers) { ZEND_PTR_STACK_RESIZE_IF_NEEDED(stack, count); memcpy(stack->top_element, pointers, count * sizeof(void *)); stack->top_element += count; stack->top += count; }
ZEND_API void zend_ptr_stack_n_push(zend_ptr_stack *stack, int count, ...) { va_list ptr; void *elem; ZEND_PTR_STACK_RESIZE_IF_NEEDED(stack, count) va_start(ptr, count); while (count>0) { elem = va_arg(ptr, void *); stack->top++; *(stack->top_element++) = elem; count--; } va_end(ptr); }
php_http_message_parser_state_t php_http_message_parser_state_push(php_http_message_parser_t *parser, unsigned argc, ...) { php_http_message_parser_state_t state = PHP_HTTP_MESSAGE_PARSER_STATE_FAILURE; va_list va_args; unsigned i; if (argc > 0) { /* short circuit */ ZEND_PTR_STACK_RESIZE_IF_NEEDED((&parser->stack), argc); va_start(va_args, argc); for (i = 0; i < argc; ++i) { state = va_arg(va_args, php_http_message_parser_state_t); zend_ptr_stack_push(&parser->stack, (void *) state); } va_end(va_args); } return state; }