-// Find the keyed element, and assign the x pointer, or assign 0.
-// Returns 1 if element is found and 0 otherwise.
-int hashvector_find(hashvector *hv,void *key,void **x) {
- unsigned long i;
- void **p = hashvector_find_slot( hv, key, &i, 0 );
- if ( p && *p && *p != HV_HOLE ) {
- if ( x ) {
- *x = *p;
+// Find the keyed element at or after the index. Update index and
+// return item.
+void *hashvector_next(hashvector *hv,vector_index *index,void *key) {
+ unsigned long i = index? *index : 0;
+ for ( ; i < hv->table.size; i++ ) {
+ void **p = vector_next_used( &hv->table, &i );
+ if ( p == 0 ) {
+ break;