X-Git-Url: https://git.rrq.au/?a=blobdiff_plain;f=pvector%2Fexample-hashvector.c;h=f75242655f6431b83f1f9ce46433d3042965f386;hb=4d7f93d07b12ad58f42e41f3e8ecd5550f3bd9c8;hp=214738f30e4695a2908af1c134e57917e947d4ef;hpb=efd06144cd7b5ab1720ef2cda59bd7568f31d034;p=rrq%2Frrqmisc.git diff --git a/pvector/example-hashvector.c b/pvector/example-hashvector.c index 214738f..f752426 100644 --- a/pvector/example-hashvector.c +++ b/pvector/example-hashvector.c @@ -15,14 +15,8 @@ typedef struct _ipslot { 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) { @@ -35,7 +29,7 @@ static int voidp_haskey(void *item,void *key) { static struct { hashvector hv; - int fill; + long fill; } table = { .hv = { .table = { 12000, 0 }, @@ -218,14 +212,16 @@ int main(int argc,char **argv) { 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; }