45#include <config_auto.h>
48#include "allheaders.h"
77 return (
L_DNAHASH *)ERROR_PTR(
"negative hash size", __func__, NULL);
78 lept_isPrime(nbuckets, &is_prime, NULL);
80 findNextLargerPrime(nbuckets, &newsize);
85 if ((dahash->
dna = (
L_DNA **)LEPT_CALLOC(nbuckets,
sizeof(
L_DNA *)))
88 return (
L_DNAHASH *)ERROR_PTR(
"dna ptr array not made", __func__, NULL);
91 dahash->nbuckets = nbuckets;
109 if (pdahash == NULL) {
110 L_WARNING(
"ptr address is NULL!\n", __func__);
114 if ((dahash = *pdahash) == NULL)
117 for (i = 0; i < dahash->nbuckets; i++)
118 l_dnaDestroy(&dahash->
dna[i]);
119 LEPT_FREE(dahash->
dna);
145 return (
L_DNA *)ERROR_PTR(
"dahash not defined", __func__, NULL);
146 bucket = key % dahash->nbuckets;
147 da = dahash->
dna[bucket];
151 else if (copyflag ==
L_COPY)
152 return l_dnaCopy(da);
154 return l_dnaClone(da);
178 return ERROR_INT(
"dahash not defined", __func__, 1);
179 bucket = key % dahash->nbuckets;
180 da = dahash->
dna[bucket];
182 if ((da = l_dnaCreate(dahash->
initsize)) == NULL)
183 return ERROR_INT(
"da not made", __func__, 1);
184 dahash->
dna[bucket] = da;
186 l_dnaAddNumber(da, value);
L_DNAHASH * l_dnaHashCreate(l_int32 nbuckets, l_int32 initsize)
l_dnaHashCreate()
void l_dnaHashDestroy(L_DNAHASH **pdahash)
l_dnaHashDestroy()
L_DNA * l_dnaHashGetDna(L_DNAHASH *dahash, l_uint64 key, l_int32 copyflag)
l_dnaHashGetDna()
l_ok l_dnaHashAdd(L_DNAHASH *dahash, l_uint64 key, l_float64 value)
l_dnaHashAdd()