// Find any element at or after the index that admits to the key.
// Update index and return item.
-void *HashVector_next(HashVector *hv,VectorIndex *index,void *key) {
- unsigned long i = index? *index : 0;
- for ( ; i < hv->table.size; i++ ) {
- void **p = Vector_next_used( &hv->table, &i );
+void *HashVector_next(HashVector *hv,VectorIndex *index) {
+ for ( ; (*index) < hv->table.size; (*index)++ ) {
+ void **p = Vector_next_used( &hv->table, index );
if ( p == 0 ) {
break;
}
if ( *p && *p != HV_HOLE ) {
- if ( key && hv->type->haskey( hv->type, *p, key ) == 0 ) {
- continue;
- }
- if ( index ) {
- (*index) = i;
- }
return *p;
}
}
- if ( index ) {
- (*index) = hv->table.size;
- }
+ (*index) = hv->table.size;
return 0;
}
VectorIndex i;
VectorIndex j = 0;
for ( i = 0; i < v->size; i++, j++ ) {
- Vector_set( v, i, HashVector_next( hv, &j, 0 ) );
+ Vector_set( v, i, HashVector_next( hv, &j ) );
}
return v;
}