diff options
author | Andrei Zmievski <andrei@php.net> | 1999-10-11 21:30:23 +0000 |
---|---|---|
committer | Andrei Zmievski <andrei@php.net> | 1999-10-11 21:30:23 +0000 |
commit | 8864313c4842df20ef21ab2aa39e95bc8fd78377 (patch) | |
tree | edf122f9328d12dc2a84693b6e67805743a77300 /Zend | |
parent | 4d52ee2bc6c139408349d8a893ba9ac82bc9585a (diff) | |
download | php-git-8864313c4842df20ef21ab2aa39e95bc8fd78377.tar.gz |
Modified zend_hash() to accept a pointer to sort function.
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/zend_hash.c | 6 | ||||
-rw-r--r-- | Zend/zend_hash.h | 3 |
2 files changed, 6 insertions, 3 deletions
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 19e45a47ef..54c5855b72 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -1098,7 +1098,9 @@ ZEND_API int zend_hash_get_current_data(HashTable *ht, void **pData) } -ZEND_API int zend_hash_sort(HashTable *ht, int (*compar) (const void *, const void *), int renumber) +ZEND_API int zend_hash_sort(HashTable *ht, + void (*sort_func)(void *, size_t, size_t, compare_func_t), + compare_func_t compar, int renumber) { Bucket **arTmp; Bucket *p; @@ -1119,7 +1121,7 @@ ZEND_API int zend_hash_sort(HashTable *ht, int (*compar) (const void *, const vo i++; } - qsort((void *) arTmp, i, sizeof(Bucket *), compar); + (*sort_func)((void *) arTmp, i, sizeof(Bucket *), compar); HANDLE_BLOCK_INTERRUPTIONS(); ht->pListHead = arTmp[0]; diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h index be643772f0..f5fc569f25 100644 --- a/Zend/zend_hash.h +++ b/Zend/zend_hash.h @@ -62,6 +62,7 @@ typedef struct hashtable { unsigned char persistent; } HashTable; +typedef int (*compare_func_t) (const void *, const void *); BEGIN_EXTERN_C() @@ -154,7 +155,7 @@ ZEND_API void zend_hash_internal_pointer_end(HashTable *ht); /* Copying, merging and sorting */ ZEND_API void zend_hash_copy(HashTable *target, HashTable *source, void (*pCopyConstructor) (void *pData), void *tmp, uint size); ZEND_API void zend_hash_merge(HashTable *target, HashTable *source, void (*pCopyConstructor) (void *pData), void *tmp, uint size, int overwrite); -ZEND_API int zend_hash_sort(HashTable *ht, int (*compar) (const void *, const void *), int renumber); +ZEND_API int zend_hash_sort(HashTable *ht, void (*sort_func)(void *, size_t, size_t, compare_func_t), compare_func_t compar, int renumber); ZEND_API int zend_hash_minmax(HashTable *ht, int (*compar) (const void *, const void *), int flag, void **pData); ZEND_API int zend_hash_num_elements(HashTable *ht); |