mirror of
https://github.com/fluencelabs/redis
synced 2025-04-01 23:31:03 +00:00
Reduce code duplication
This commit is contained in:
parent
e39c8b5047
commit
b1e0bd4b9b
60
src/dict.c
60
src/dict.c
@ -651,7 +651,7 @@ static unsigned int _dictStringCopyHTHashFunction(const void *key)
|
|||||||
return dictGenHashFunction(key, strlen(key));
|
return dictGenHashFunction(key, strlen(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *_dictStringCopyHTKeyDup(void *privdata, const void *key)
|
static void *_dictStringDup(void *privdata, const void *key)
|
||||||
{
|
{
|
||||||
int len = strlen(key);
|
int len = strlen(key);
|
||||||
char *copy = _dictAlloc(len+1);
|
char *copy = _dictAlloc(len+1);
|
||||||
@ -662,17 +662,6 @@ static void *_dictStringCopyHTKeyDup(void *privdata, const void *key)
|
|||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void *_dictStringKeyValCopyHTValDup(void *privdata, const void *val)
|
|
||||||
{
|
|
||||||
int len = strlen(val);
|
|
||||||
char *copy = _dictAlloc(len+1);
|
|
||||||
DICT_NOTUSED(privdata);
|
|
||||||
|
|
||||||
memcpy(copy, val, len);
|
|
||||||
copy[len] = '\0';
|
|
||||||
return copy;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int _dictStringCopyHTKeyCompare(void *privdata, const void *key1,
|
static int _dictStringCopyHTKeyCompare(void *privdata, const void *key1,
|
||||||
const void *key2)
|
const void *key2)
|
||||||
{
|
{
|
||||||
@ -681,47 +670,40 @@ static int _dictStringCopyHTKeyCompare(void *privdata, const void *key1,
|
|||||||
return strcmp(key1, key2) == 0;
|
return strcmp(key1, key2) == 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void _dictStringCopyHTKeyDestructor(void *privdata, void *key)
|
static void _dictStringDestructor(void *privdata, void *key)
|
||||||
{
|
{
|
||||||
DICT_NOTUSED(privdata);
|
DICT_NOTUSED(privdata);
|
||||||
|
|
||||||
_dictFree((void*)key); /* ATTENTION: const cast */
|
_dictFree(key);
|
||||||
}
|
|
||||||
|
|
||||||
static void _dictStringKeyValCopyHTValDestructor(void *privdata, void *val)
|
|
||||||
{
|
|
||||||
DICT_NOTUSED(privdata);
|
|
||||||
|
|
||||||
_dictFree((void*)val); /* ATTENTION: const cast */
|
|
||||||
}
|
}
|
||||||
|
|
||||||
dictType dictTypeHeapStringCopyKey = {
|
dictType dictTypeHeapStringCopyKey = {
|
||||||
_dictStringCopyHTHashFunction, /* hash function */
|
_dictStringCopyHTHashFunction, /* hash function */
|
||||||
_dictStringCopyHTKeyDup, /* key dup */
|
_dictStringDup, /* key dup */
|
||||||
NULL, /* val dup */
|
NULL, /* val dup */
|
||||||
_dictStringCopyHTKeyCompare, /* key compare */
|
_dictStringCopyHTKeyCompare, /* key compare */
|
||||||
_dictStringCopyHTKeyDestructor, /* key destructor */
|
_dictStringDestructor, /* key destructor */
|
||||||
NULL /* val destructor */
|
NULL /* val destructor */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* This is like StringCopy but does not auto-duplicate the key.
|
/* This is like StringCopy but does not auto-duplicate the key.
|
||||||
* It's used for intepreter's shared strings. */
|
* It's used for intepreter's shared strings. */
|
||||||
dictType dictTypeHeapStrings = {
|
dictType dictTypeHeapStrings = {
|
||||||
_dictStringCopyHTHashFunction, /* hash function */
|
_dictStringCopyHTHashFunction, /* hash function */
|
||||||
NULL, /* key dup */
|
NULL, /* key dup */
|
||||||
NULL, /* val dup */
|
NULL, /* val dup */
|
||||||
_dictStringCopyHTKeyCompare, /* key compare */
|
_dictStringCopyHTKeyCompare, /* key compare */
|
||||||
_dictStringCopyHTKeyDestructor, /* key destructor */
|
_dictStringDestructor, /* key destructor */
|
||||||
NULL /* val destructor */
|
NULL /* val destructor */
|
||||||
};
|
};
|
||||||
|
|
||||||
/* This is like StringCopy but also automatically handle dynamic
|
/* This is like StringCopy but also automatically handle dynamic
|
||||||
* allocated C strings as values. */
|
* allocated C strings as values. */
|
||||||
dictType dictTypeHeapStringCopyKeyValue = {
|
dictType dictTypeHeapStringCopyKeyValue = {
|
||||||
_dictStringCopyHTHashFunction, /* hash function */
|
_dictStringCopyHTHashFunction, /* hash function */
|
||||||
_dictStringCopyHTKeyDup, /* key dup */
|
_dictStringDup, /* key dup */
|
||||||
_dictStringKeyValCopyHTValDup, /* val dup */
|
_dictStringDup, /* val dup */
|
||||||
_dictStringCopyHTKeyCompare, /* key compare */
|
_dictStringCopyHTKeyCompare, /* key compare */
|
||||||
_dictStringCopyHTKeyDestructor, /* key destructor */
|
_dictStringDestructor, /* key destructor */
|
||||||
_dictStringKeyValCopyHTValDestructor, /* val destructor */
|
_dictStringDestructor, /* val destructor */
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user