dict.c: added macros in dict.h to set signed and unsigned 64 bit values directly inside the hash entry without using additional memory.

This commit is contained in:
antirez 2011-11-08 19:41:29 +01:00
parent c0ba9ebe13
commit aa9a61ccd7
2 changed files with 7 additions and 1 deletions

View File

@ -274,7 +274,7 @@ int dictAdd(dict *d, void *key, void *val)
* mainly in order to store non-pointers inside the hash value, example: * mainly in order to store non-pointers inside the hash value, example:
* *
* entry = dictAddRaw(dict,mykey); * entry = dictAddRaw(dict,mykey);
* if (entry != NULL) dictSetValSignedInteger(entry,1000); * if (entry != NULL) dictSetSignedIntegerVal(entry,1000);
* *
* Return values: * Return values:
* *

View File

@ -105,6 +105,12 @@ typedef struct dictIterator {
entry->v.val = (_val_); \ entry->v.val = (_val_); \
} while(0) } while(0)
#define dictSetSignedIntegerVal(d, entry, _val_) \
do { entry->v.i64 = _val_; } while(0)
#define dictSetUnsignedIntegerVal(d, entry, _val_) \
do { entry->v.u64 = _val_; } while(0)
#define dictFreeKey(d, entry) \ #define dictFreeKey(d, entry) \
if ((d)->type->keyDestructor) \ if ((d)->type->keyDestructor) \
(d)->type->keyDestructor((d)->privdata, (entry)->key) (d)->type->keyDestructor((d)->privdata, (entry)->key)