93
94
95
static int xdl_classify_record(unsigned int pass, xdlclassifier_t *cf, xrecord_t *rec) {
96
- long hi;
96
+ size_t hi;
97
xdlclass_t *rcrec;
98
99
- hi = (long) XDL_HASHLONG(rec->ha, cf->hbits);
99
+ hi = XDL_HASHLONG(rec->line_hash, cf->hbits);
100
for (rcrec = cf->rchash[hi]; rcrec; rcrec = rcrec->next)
101
- if (rcrec->rec.ha == rec->ha &&
101
+ if (rcrec->rec.line_hash == rec->line_hash &&
102
xdl_recmatch((const char *)rcrec->rec.ptr, (long)rcrec->rec.size,
103
(const char *)rec->ptr, (long)rec->size, cf->flags))
104
break;
120
121
(pass == 1) ? rcrec->len1++ : rcrec->len2++;
122
123
- rec->ha = (unsigned long) rcrec->idx;
123
+ rec->minimal_perfect_hash = (size_t)rcrec->idx;
124
125
return 0;
126
}
158
crec = &xdf->recs[xdf->nrec++];
159
crec->ptr = prev;
160
crec->size = cur - prev;
161
- crec->ha = hav;
161
+ crec->line_hash = hav;
162
if (xdl_classify_record(pass, cf, crec) < 0)
163
goto abort;
164
}
290
if ((mlim = xdl_bogosqrt(xdf1->nrec)) > XDL_MAX_EQLIMIT)
291
mlim = XDL_MAX_EQLIMIT;
292
for (i = xdf1->dstart, recs = &xdf1->recs[xdf1->dstart]; i <= xdf1->dend; i++, recs++) {
293
- rcrec = cf->rcrecs[recs->ha];
293
+ rcrec = cf->rcrecs[recs->minimal_perfect_hash];
294
nm = rcrec ? rcrec->len2 : 0;
295
action1[i] = (nm == 0) ? DISCARD: (nm >= mlim && !need_min) ? INVESTIGATE: KEEP;
296
}
298
if ((mlim = xdl_bogosqrt(xdf2->nrec)) > XDL_MAX_EQLIMIT)
299
mlim = XDL_MAX_EQLIMIT;
300
for (i = xdf2->dstart, recs = &xdf2->recs[xdf2->dstart]; i <= xdf2->dend; i++, recs++) {
301
- rcrec = cf->rcrecs[recs->ha];
301
+ rcrec = cf->rcrecs[recs->minimal_perfect_hash];
302
nm = rcrec ? rcrec->len1 : 0;
303
action2[i] = (nm == 0) ? DISCARD: (nm >= mlim && !need_min) ? INVESTIGATE: KEEP;
304
}
350
recs2 = xdf2->recs;
351
for (i = 0, lim = XDL_MIN(xdf1->nrec, xdf2->nrec); i < lim;
352
i++, recs1++, recs2++)
353
- if (recs1->ha != recs2->ha)
353
+ if (recs1->minimal_perfect_hash != recs2->minimal_perfect_hash)
354
break;
355
356
xdf1->dstart = xdf2->dstart = i;
358
recs1 = xdf1->recs + xdf1->nrec - 1;
359
recs2 = xdf2->recs + xdf2->nrec - 1;
360
for (lim -= i, i = 0; i < lim; i++, recs1--, recs2--)
361
- if (recs1->ha != recs2->ha)
361
+ if (recs1->minimal_perfect_hash != recs2->minimal_perfect_hash)
362
break;
363
364
xdf1->dend = xdf1->nrec - i - 1;