X-Git-Url: https://git.saurik.com/redis.git/blobdiff_plain/c0ba9ebe13865189a3b21f7be8a910e349b59fda..7d3ee4172f52bf94185960799c1d12c16ed96ff7:/src/dict.h?ds=sidebyside diff --git a/src/dict.h b/src/dict.h index af485e2c..5f856953 100644 --- a/src/dict.h +++ b/src/dict.h @@ -49,7 +49,7 @@ typedef struct dictEntry { union { void *val; uint64_t u64; - int64_t i64; + int64_t s64; } v; struct dictEntry *next; } dictEntry; @@ -105,6 +105,12 @@ typedef struct dictIterator { entry->v.val = (_val_); \ } while(0) +#define dictSetSignedIntegerVal(entry, _val_) \ + do { entry->v.s64 = _val_; } while(0) + +#define dictSetUnsignedIntegerVal(entry, _val_) \ + do { entry->v.u64 = _val_; } while(0) + #define dictFreeKey(d, entry) \ if ((d)->type->keyDestructor) \ (d)->type->keyDestructor((d)->privdata, (entry)->key) @@ -124,6 +130,8 @@ typedef struct dictIterator { #define dictHashKey(d, key) (d)->type->hashFunction(key) #define dictGetKey(he) ((he)->key) #define dictGetVal(he) ((he)->v.val) +#define dictGetSignedIntegerVal(he) ((he)->v.s64) +#define dictGetUnsignedIntegerVal(he) ((he)->v.u64) #define dictSlots(d) ((d)->ht[0].size+(d)->ht[1].size) #define dictSize(d) ((d)->ht[0].used+(d)->ht[1].used) #define dictIsRehashing(ht) ((ht)->rehashidx != -1) @@ -154,6 +162,8 @@ void dictEnableResize(void); void dictDisableResize(void); int dictRehash(dict *d, int n); int dictRehashMilliseconds(dict *d, int ms); +void dictSetHashFunctionSeed(unsigned int initval); +unsigned int dictGetHashFunctionSeed(void); /* Hash table types */ extern dictType dictTypeHeapStringCopyKey;