64 if (ht->
array == NULL)
74 if (ht->
array != NULL)
92 while (hashbucket != NULL) {
97 hashbucket = next_hashbucket;
102 if (ht->
array != NULL)
110 printf(
"\n----------- Hash Table Stats ------------\n");
111 printf(
"Buckets: %" PRIu32
"\n", ht->
array_size);
112 printf(
"Hash function pointer: %p\n", ht->
Hash);
113 printf(
"-----------------------------------------\n");
118 if (ht == NULL || data == NULL)
121 uint32_t hash = ht->
Hash(ht, data, datalen);
135 if (ht->
array[hash] == NULL) {
136 ht->
array[hash] = hb;
139 ht->
array[hash] = hb;
159 uint32_t hash = ht->
Hash(ht, data, datalen);
163 if (ht->
array[hash] == NULL) {
185 if (ht->
Free != NULL)
189 ht->
array[hash] = NULL;
200 if (ht->
Compare(hashbucket->
data,hashbucket->
size,data,datalen) == 1) {
214 if (prev_hashbucket == NULL) {
223 if (ht->
Free != NULL)
229 prev_hashbucket = hashbucket;
231 }
while (hashbucket != NULL);
242 if (
SCMemcmp(data1,data2,len1) != 0)
256 uint32_t hash = ht->
Hash(ht, data, datalen);
258 if (ht->
array[hash] == NULL) {
265 return hashbucket->
data;
268 }
while (hashbucket != NULL);
275 uint8_t *d = (uint8_t *)data;
279 for (i = 0; i < datalen; i++) {
280 if (i == 0) hash += (((uint32_t)*d++));
281 else if (i == 1) hash += (((uint32_t)*d++) * datalen);
282 else hash *= (((uint32_t)*d++) * i) + datalen + i;
300 static int HashListTableTestInit01 (
void)
311 static int HashListTableTestInit02 (
void)
321 static int HashListTableTestInit03 (
void)
335 static int HashListTableTestInit04 (
void)
345 static int HashListTableTestAdd01 (
void)
363 static int HashListTableTestAdd02 (
void)
381 static int HashListTableTestAdd03 (
void)
393 printf(
"ht->listhead == NULL: ");
398 printf(
"ht->listtail == NULL: ");
409 static int HashListTableTestAdd04 (
void)
426 printf(
"htb == NULL: ");
432 printf(
"rp2 == NULL: ");
437 printf(
"rp != rp2: ");
448 static int HashListTableTestFull01 (
void)
474 static int HashListTableTestFull02 (
void)
504 UtRegisterTest(
"HashListTableTestInit01", HashListTableTestInit01);
505 UtRegisterTest(
"HashListTableTestInit02", HashListTableTestInit02);
506 UtRegisterTest(
"HashListTableTestInit03", HashListTableTestInit03);
507 UtRegisterTest(
"HashListTableTestInit04", HashListTableTestInit04);
514 UtRegisterTest(
"HashListTableTestFull01", HashListTableTestFull01);
515 UtRegisterTest(
"HashListTableTestFull02", HashListTableTestFull02);