103 #include "allheaders.h" 127 PROCNAME(
"l_dnaHashCreate");
130 return (
L_DNAHASH *)ERROR_PTR(
"negative hash size", procName, NULL);
132 return (
L_DNAHASH *)ERROR_PTR(
"dahash not made", procName, NULL);
133 if ((dahash->
dna = (
L_DNA **)LEPT_CALLOC(nbuckets,
sizeof(
L_DNA *)))
136 return (
L_DNAHASH *)ERROR_PTR(
"dna ptr array not made", procName, NULL);
139 dahash->nbuckets = nbuckets;
157 PROCNAME(
"l_dnaHashDestroy");
159 if (pdahash == NULL) {
160 L_WARNING(
"ptr address is NULL!\n", procName);
164 if ((dahash = *pdahash) == NULL)
167 for (i = 0; i < dahash->nbuckets; i++)
169 LEPT_FREE(dahash->
dna);
188 PROCNAME(
"l_dnaHashGetCount");
191 return ERROR_INT(
"dahash not defined", procName, 0);
192 return dahash->nbuckets;
208 PROCNAME(
"l_dnaHashGetTotalCount");
211 return ERROR_INT(
"dahash not defined", procName, 0);
213 for (i = 0, n = 0; i < dahash->nbuckets; i++) {
239 PROCNAME(
"l_dnaHashGetDna");
242 return (
L_DNA *)ERROR_PTR(
"dahash not defined", procName, NULL);
243 bucket = key % dahash->nbuckets;
244 da = dahash->
dna[bucket];
248 else if (copyflag ==
L_COPY)
274 PROCNAME(
"l_dnaHashAdd");
277 return ERROR_INT(
"dahash not defined", procName, 1);
278 bucket = key % dahash->nbuckets;
279 da = dahash->
dna[bucket];
282 return ERROR_INT(
"da not made", procName, 1);
283 dahash->
dna[bucket] = da;
314 PROCNAME(
"l_dnaHashCreateFromDna");
317 return (
L_DNAHASH *)ERROR_PTR(
"da not defined", procName, NULL);
323 for (i = 0; i < n; i++) {
354 l_int32 i, n, index, items;
361 PROCNAME(
"l_dnaRemoveDupsByHash");
363 if (pdahash) *pdahash = NULL;
365 return ERROR_INT(
"&dad not defined", procName, 1);
368 return ERROR_INT(
"das not defined", procName, 1);
375 for (i = 0, items = 0; i < n; i++) {
426 l_int32 i, n, nitems, index, count;
433 PROCNAME(
"l_dnaMakeHistoByHash");
435 if (pdahash) *pdahash = NULL;
436 if (pdac) *pdac = NULL;
437 if (pdav) *pdav = NULL;
438 if (!pdahash || !pdac || !pdav)
439 return ERROR_INT(
"&dahash, &dac, &dav not all defined", procName, 1);
441 return ERROR_INT(
"das not defined", procName, 1);
443 return ERROR_INT(
"no data in das", procName, 1);
449 for (i = 0, nitems = 0; i < n; i++) {
488 l_int32 n1, n2, nsmall, nbuckets, i, index1, index2;
493 L_DNA *da_small, *da_big, *dad;
495 PROCNAME(
"l_dnaIntersectionByHash");
498 return (
L_DNA *)ERROR_PTR(
"da1 not defined", procName, NULL);
500 return (
L_DNA *)ERROR_PTR(
"da2 not defined", procName, NULL);
505 da_small = (n1 < n2) ? da1 : da2;
506 da_big = (n1 < n2) ? da2 : da1;
517 for (i = 0; i < nsmall; i++) {
558 l_int32 i, nbuckets, nvals, indexval;
563 PROCNAME(
"l_dnaFindValByHash");
566 return ERROR_INT(
"&index not defined", procName, 1);
569 return ERROR_INT(
"da not defined", procName, 1);
571 return ERROR_INT(
"dahash not defined", procName, 1);
580 for (i = 0; i < nvals; i++) {
l_ok l_dnaRemoveDupsByHash(L_DNA *das, L_DNA **pdad, L_DNAHASH **pdahash)
l_dnaRemoveDupsByHash()
L_DNA * l_dnaHashGetDna(L_DNAHASH *dahash, l_uint64 key, l_int32 copyflag)
l_dnaHashGetDna()
l_int32 l_dnaGetCount(L_DNA *da)
l_dnaGetCount()
void l_dnaDestroy(L_DNA **pda)
l_dnaDestroy()
void l_dnaHashDestroy(L_DNAHASH **pdahash)
l_dnaHashDestroy()
l_int32 l_dnaHashGetTotalCount(L_DNAHASH *dahash)
l_dnaHashGetTotalCount()
l_ok l_hashFloat64ToUint64(l_int32 nbuckets, l_float64 val, l_uint64 *phash)
l_hashFloat64ToUint64()
l_ok l_dnaGetIValue(L_DNA *da, l_int32 index, l_int32 *pival)
l_dnaGetIValue()
l_ok findNextLargerPrime(l_int32 start, l_uint32 *pprime)
findNextLargerPrime()
L_DNA * l_dnaClone(L_DNA *da)
l_dnaClone()
l_ok l_dnaAddNumber(L_DNA *da, l_float64 val)
l_dnaAddNumber()
l_int32 l_dnaHashGetCount(L_DNAHASH *dahash)
l_dnaHashGetCount()
l_ok l_dnaMakeHistoByHash(L_DNA *das, L_DNAHASH **pdahash, L_DNA **pdav, L_DNA **pdac)
l_dnaMakeHistoByHash()
l_ok l_dnaHashAdd(L_DNAHASH *dahash, l_uint64 key, l_float64 value)
l_dnaHashAdd()
l_ok l_dnaFindValByHash(L_DNA *da, L_DNAHASH *dahash, l_float64 val, l_int32 *pindex)
l_dnaFindValByHash()
L_DNAHASH * l_dnaHashCreateFromDna(L_DNA *da)
l_dnaHashCreateFromDna()
l_ok l_dnaGetDValue(L_DNA *da, l_int32 index, l_float64 *pval)
l_dnaGetDValue()
l_ok l_dnaSetValue(L_DNA *da, l_int32 index, l_float64 val)
l_dnaSetValue()
L_DNA * l_dnaCreate(l_int32 n)
l_dnaCreate()
L_DNA * l_dnaIntersectionByHash(L_DNA *da1, L_DNA *da2)
l_dnaIntersectionByHash()
L_DNA * l_dnaCopy(L_DNA *da)
l_dnaCopy()
L_DNAHASH * l_dnaHashCreate(l_int32 nbuckets, l_int32 initsize)
l_dnaHashCreate()