diff options
author | Sterling Hughes <sterling@php.net> | 2002-10-09 18:29:45 +0000 |
---|---|---|
committer | Sterling Hughes <sterling@php.net> | 2002-10-09 18:29:45 +0000 |
commit | 2c4aa71d329a315b02781b0b20ea75032b0c1c8c (patch) | |
tree | d55c4a2cebd041fdd11385f0716b34e8e2e4ccd6 /ext/standard/array.c | |
parent | 521a9bdadc789e557688a4087a5d85cca7b6707d (diff) | |
download | php-git-2c4aa71d329a315b02781b0b20ea75032b0c1c8c.tar.gz |
clean these functions up using zend_parse_parameters and nuke the use of
HASH_OF() which is inappropriate in these cases...
Diffstat (limited to 'ext/standard/array.c')
-rw-r--r-- | ext/standard/array.c | 94 |
1 files changed, 37 insertions, 57 deletions
diff --git a/ext/standard/array.c b/ext/standard/array.c index a1637072dd..6e44965073 100644 --- a/ext/standard/array.c +++ b/ext/standard/array.c @@ -705,21 +705,16 @@ PHP_FUNCTION(end) Move array argument's internal pointer to the previous element and return it */ PHP_FUNCTION(prev) { - pval **array, **entry; - HashTable *target_hash; + zval **entry; + zval *array; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) { - WRONG_PARAM_COUNT; - } - target_hash = HASH_OF(*array); - if (!target_hash) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passed variable is not an array or object"); + if (zend_parse_parameters(1 TSRMLS_CC, "a", &array) == FAILURE) { RETURN_FALSE; } - zend_hash_move_backwards(target_hash); + zend_hash_move_backwards(Z_ARRVAL_P(array)); if (return_value_used) { - if (zend_hash_get_current_data(target_hash, (void **) &entry) == FAILURE) { + if (zend_hash_get_current_data(Z_ARRVAL_P(array), (void **) &entry) == FAILURE) { RETURN_FALSE; } @@ -733,21 +728,16 @@ PHP_FUNCTION(prev) Move array argument's internal pointer to the next element and return it */ PHP_FUNCTION(next) { - pval **array, **entry; - HashTable *target_hash; + zval **entry; + zval *array; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) { - WRONG_PARAM_COUNT; - } - target_hash = HASH_OF(*array); - if (!target_hash) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passed variable is not an array or object"); + if (zend_parse_parameters(1 TSRMLS_CC, "a", &array) == FAILURE) { RETURN_FALSE; } - zend_hash_move_forward(target_hash); + zend_hash_move_forward(Z_ARRVAL_P(array)); if (return_value_used) { - if (zend_hash_get_current_data(target_hash, (void **) &entry) == FAILURE) { + if (zend_hash_get_current_data(Z_ARRVAL_P(array), (void **) &entry) == FAILURE) { RETURN_FALSE; } @@ -761,21 +751,16 @@ PHP_FUNCTION(next) Set array argument's internal pointer to the first element and return it */ PHP_FUNCTION(reset) { - pval **array, **entry; - HashTable *target_hash; + zval **entry; + zval *array; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) { - WRONG_PARAM_COUNT; - } - target_hash = HASH_OF(*array); - if (!target_hash) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passed variable is not an array or object"); + if (zend_parse_parameters(1 TSRMLS_CC, "a", &array) == FAILURE) { RETURN_FALSE; } - zend_hash_internal_pointer_reset(target_hash); + zend_hash_internal_pointer_reset(Z_ARRVAL_P(array)); if (return_value_used) { - if (zend_hash_get_current_data(target_hash, (void **) &entry) == FAILURE) { + if (zend_hash_get_current_data(Z_ARRVAL_P(array), (void **) &entry) == FAILURE) { RETURN_FALSE; } @@ -789,20 +774,17 @@ PHP_FUNCTION(reset) Return the element currently pointed to by the internal array pointer */ PHP_FUNCTION(current) { - pval **array, **entry; - HashTable *target_hash; + zval **entry; + zval *array; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) { - WRONG_PARAM_COUNT; - } - target_hash = HASH_OF(*array); - if (!target_hash) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passed variable is not an array or object"); + if (zend_parse_parameters(1 TSRMLS_CC, "a", &array) == FAILURE) { RETURN_FALSE; } - if (zend_hash_get_current_data(target_hash, (void **) &entry) == FAILURE) { + + if (zend_hash_get_current_data(Z_ARRVAL_P(array), (void **) &entry) == FAILURE) { RETURN_FALSE; } + *return_value = **entry; zval_copy_ctor(return_value); } @@ -812,29 +794,27 @@ PHP_FUNCTION(current) Return the key of the element currently pointed to by the internal array pointer */ PHP_FUNCTION(key) { - pval **array; - char *string_key; - uint string_length; - ulong num_key; - HashTable *target_hash; + zval *array; + char *string_key; + uint string_key_length; + ulong num_key = -1; - if (ZEND_NUM_ARGS() != 1 || zend_get_parameters_ex(1, &array) == FAILURE) { - WRONG_PARAM_COUNT; - } - target_hash = HASH_OF(*array); - if (!target_hash) { - php_error_docref(NULL TSRMLS_CC, E_WARNING, "Passed variable is not an array or object"); + if (zend_parse_parameters(1 TSRMLS_CC, "a", &array) == FAILURE) { RETURN_FALSE; } - switch (zend_hash_get_current_key_ex(target_hash, &string_key, &string_length, &num_key, 0, NULL)) { + + switch (zend_hash_get_current_key_ex(Z_ARRVAL_P(array), + &string_key, + &string_key_length, + &num_key, + 0, + NULL)) { case HASH_KEY_IS_STRING: - RETVAL_STRINGL(string_key, string_length - 1, 1); - break; + RETURN_STRINGL(string_key, string_key_length - 1, 1); case HASH_KEY_IS_LONG: - RETVAL_LONG(num_key); - break; - case HASH_KEY_NON_EXISTANT: - return; + RETURN_LONG(num_key); + default: + RETURN_NULL(); } } /* }}} */ |