36 char (*
Compare)(
void *, uint16_t,
void *, uint16_t),
void (*
Free)(
void *))
68 if (ht->
array == NULL) {
79 if (ht->
array != NULL)
97 while (hashbucket != NULL) {
102 hashbucket = next_hashbucket;
107 if (ht->
array != NULL)
115 if (ht == NULL || data == NULL)
118 uint32_t hash = ht->
Hash(ht, data, datalen);
131 if (ht->
array[hash] == NULL) {
132 ht->
array[hash] = hb;
135 ht->
array[hash] = hb;
155 uint32_t hash = ht->
Hash(ht, data, datalen);
159 if (ht->
array[hash] == NULL) {
181 if (ht->
Free != NULL)
185 ht->
array[hash] = NULL;
196 if (ht->
Compare(hashbucket->
data,hashbucket->
size,data,datalen) == 1) {
210 if (prev_hashbucket == NULL) {
219 if (ht->
Free != NULL)
225 prev_hashbucket = hashbucket;
227 }
while (hashbucket != NULL);
238 if (
SCMemcmp(data1,data2,len1) != 0)
252 uint32_t hash = ht->
Hash(ht, data, datalen);
254 if (ht->
array[hash] == NULL) {
261 return hashbucket->
data;
264 }
while (hashbucket != NULL);
271 uint8_t *d = (uint8_t *)data;
275 for (i = 0; i < datalen; i++) {
276 if (i == 0) hash += (((uint32_t)*d++));
277 else if (i == 1) hash += (((uint32_t)*d++) * datalen);
278 else hash *= (((uint32_t)*d++) * i) + datalen + i;
296 static int HashListTableTestInit01 (
void)
307 static int HashListTableTestInit02 (
void)
317 static int HashListTableTestInit03 (
void)
331 static int HashListTableTestInit04 (
void)
341 static int HashListTableTestAdd01 (
void)
359 static int HashListTableTestAdd02 (
void)
377 static int HashListTableTestAdd03 (
void)
389 printf(
"ht->listhead == NULL: ");
394 printf(
"ht->listtail == NULL: ");
405 static int HashListTableTestAdd04 (
void)
422 printf(
"htb == NULL: ");
428 printf(
"rp2 == NULL: ");
433 printf(
"rp != rp2: ");
444 static int HashListTableTestFull01 (
void)
470 static int HashListTableTestFull02 (
void)
500 UtRegisterTest(
"HashListTableTestInit01", HashListTableTestInit01);
501 UtRegisterTest(
"HashListTableTestInit02", HashListTableTestInit02);
502 UtRegisterTest(
"HashListTableTestInit03", HashListTableTestInit03);
503 UtRegisterTest(
"HashListTableTestInit04", HashListTableTestInit04);
510 UtRegisterTest(
"HashListTableTestFull01", HashListTableTestFull01);
511 UtRegisterTest(
"HashListTableTestFull02", HashListTableTestFull02);