unsigned int bits;
} ipslot;
-static int voidp_hashcode(void *key) {
- unsigned char *p = (unsigned char *) key;
- int value = 5381;
- int i = 0;
- for ( ; i < sizeof( ipslot ); i++ ) {
- value += ( value << 5 ) + *(p++);
- }
- return value;
+static unsigned long voidp_hashcode(void *key) {
+ return hashvector_hashcode( key, sizeof( ipslot ) );
}
static void* voidp_itemkey(void *item) {
static struct {
hashvector hv;
- int fill;
+ long fill;
} table = {
.hv = {
.table = { 12000, 0 },
for ( i = 1; i < argc; i++ ) {
load_file( argv[ i ] );
}
+ fprintf( stdout, "---- hashvector after filling it %ld/%ld/%ld\n",
+ table.hv.fill, table.hv.holes, table.hv.table.size );
pvector_dump( &table.hv.table, dump_ipslot );
- fprintf( stdout, "--------------\n" );
- if ( hashvector_pack( &table.hv, &test ) < 0 ) {
+ if ( hashvector_contents( &table.hv, &test ) < 0 ) {
fprintf( stdout, "test is not empty\n" );
}
+ fprintf( stdout, "---- hashvector contents in hash order\n" );
pvector_dump( &test, dump_ipslot );
- fprintf( stdout, "--------------\n" );
pvector_qsort( &test, compare_ipslot );
+ fprintf( stdout, "---- contents after sorting\n" );
pvector_dump( &test, dump_ipslot );
return 0;
}