static inline void add_array_to_vector(ds_vector_t *vector, HashTable *array) { zval *value; ds_vector_ensure_capacity(vector, vector->size + array->nNumOfElements); ZEND_HASH_FOREACH_VAL(array, value) { ds_vector_push(vector, value); }
static void php_ds_vector_write_dimension(zval *obj, zval *offset, zval *value) { ds_vector_t *vector = Z_DS_VECTOR_P(obj); /* $v[] = ... */ if (offset == NULL) { ds_vector_push(vector, value); } else { ZVAL_DEREF(offset); if (Z_TYPE_P(offset) != IS_LONG) { INTEGER_INDEX_REQUIRED(offset); } else { ds_vector_set(vector, Z_LVAL_P(offset), value); } } }
void ds_vector_push_va(ds_vector_t *vector, VA_PARAMS) { if (argc == 1) { ds_vector_push(vector, argv); return; } if (argc > 0) { zval *src, *dst, *end; ds_vector_ensure_capacity(vector, vector->size + argc); src = argv; dst = &vector->buffer[vector->size]; end = dst + argc; while (dst != end) { ZVAL_COPY(dst++, src++); } vector->size += argc; } }
static int iterator_add(zend_object_iterator *iterator, void *puser) { ds_vector_push((ds_vector_t *) puser, iterator->funcs->get_current_data(iterator)); return SUCCESS; }