diff options
-rw-r--r-- | Zend/zend_hash.c | 15 | ||||
-rw-r--r-- | Zend/zend_hash.h | 5 |
2 files changed, 20 insertions, 0 deletions
diff --git a/Zend/zend_hash.c b/Zend/zend_hash.c index 6372aadb13..2fb21f00c1 100644 --- a/Zend/zend_hash.c +++ b/Zend/zend_hash.c @@ -1025,6 +1025,21 @@ ZEND_API int zend_hash_get_current_key(HashTable *ht, char **str_index, ulong *n } +ZEND_API int zend_hash_get_current_key_type(HashTable *ht) +{ + Bucket *p = ht->pInternalPointer; + + if (p) { + if (p->nKeyLength) { + return HASH_KEY_IS_STRING; + } else { + return HASH_KEY_IS_LONG; + } + } + return HASH_KEY_NON_EXISTANT; +} + + ZEND_API int zend_hash_get_current_data(HashTable *ht, void **pData) { Bucket *p = ht->pInternalPointer; diff --git a/Zend/zend_hash.h b/Zend/zend_hash.h index 0eb8436702..fb4d59579d 100644 --- a/Zend/zend_hash.h +++ b/Zend/zend_hash.h @@ -61,6 +61,8 @@ typedef struct hashtable { } HashTable; +BEGIN_EXTERN_C() + /* startup/shutdown */ ZEND_API int zend_hash_init(HashTable *ht, uint nSize, ulong(*pHashFunction) (char *arKey, uint nKeyLength), void (*pDestructor) (void *pData), int persistent); ZEND_API void zend_hash_destroy(HashTable *ht); @@ -129,6 +131,7 @@ ZEND_API ulong zend_hash_next_free_element(HashTable *ht); ZEND_API void zend_hash_move_forward(HashTable *ht); ZEND_API void zend_hash_move_backwards(HashTable *ht); ZEND_API int zend_hash_get_current_key(HashTable *ht, char **str_index, ulong *num_index); +ZEND_API int zend_hash_get_current_key_type(HashTable *ht); ZEND_API int zend_hash_get_current_data(HashTable *ht, void **pData); ZEND_API void zend_hash_internal_pointer_reset(HashTable *ht); ZEND_API void zend_hash_internal_pointer_end(HashTable *ht); @@ -150,4 +153,6 @@ void zend_hash_display_pListTail(HashTable *ht); void zend_hash_display(HashTable *ht); #endif +END_EXTERN_C() + #endif /* _HASH_ */ |