]> granicus.if.org Git - php/commitdiff
Add quick_exists()
authorZeev Suraski <zeev@php.net>
Wed, 5 Feb 2003 13:19:59 +0000 (13:19 +0000)
committerZeev Suraski <zeev@php.net>
Wed, 5 Feb 2003 13:19:59 +0000 (13:19 +0000)
Zend/zend_hash.c
Zend/zend_hash.h

index d9a72724268840a9a584bf1f38fbf3ea25e3e159..48f2712d0a8ffb1d96ba1e9ceadce2e444fd7ceb 100644 (file)
@@ -938,6 +938,35 @@ ZEND_API int zend_hash_exists(HashTable *ht, char *arKey, uint nKeyLength)
 }
 
 
+ZEND_API int zend_hash_quick_exists(HashTable *ht, char *arKey, uint nKeyLength, ulong h)
+{
+       uint nIndex;
+       Bucket *p;
+
+       if (nKeyLength==0) {
+               return zend_hash_index_exists(ht, h);
+       }
+
+       IS_CONSISTENT(ht);
+
+       HANDLE_NUMERIC(arKey, nKeyLength, zend_hash_index_exists(ht, idx));
+
+       nIndex = h & ht->nTableMask;
+
+       p = ht->arBuckets[nIndex];
+       while (p != NULL) {
+               if ((p->h == h) && (p->nKeyLength == nKeyLength)) {
+                       if (!memcmp(p->arKey, arKey, nKeyLength)) {
+                               return 1;
+                       }
+               }
+               p = p->pNext;
+       }
+       return 0;
+
+}
+
+
 ZEND_API int zend_hash_index_find(HashTable *ht, ulong h, void **pData)
 {
        uint nIndex;
index dc7961e4a713c3b1c0f37acc9c0b7182325519db..29f5d21c0990f99c5c0e26ac68b831528b9b58c2 100644 (file)
@@ -159,6 +159,7 @@ ZEND_API int zend_hash_index_find(HashTable *ht, ulong h, void **pData);
 
 /* Misc */
 ZEND_API int zend_hash_exists(HashTable *ht, char *arKey, uint nKeyLength);
+ZEND_API int zend_hash_quick_exists(HashTable *ht, char *arKey, uint nKeyLength, ulong h);
 ZEND_API int zend_hash_index_exists(HashTable *ht, ulong h);
 ZEND_API ulong zend_hash_next_free_element(HashTable *ht);