| 274 | |
| 275 | |
| 276 | void hashenumerate( struct hash * hp, void (* f)( void *, void * ), void * data |
| 277 | ) |
| 278 | { |
| 279 | int i; |
| 280 | for ( i = 0; i <= hp->items.list; ++i ) |
| 281 | { |
| 282 | char * next = hp->items.lists[ i ].base; |
| 283 | int nel = hp->items.lists[ i ].nel; |
| 284 | if ( i == hp->items.list ) |
| 285 | nel -= hp->items.more; |
| 286 | |
| 287 | for ( ; nel--; next += hp->items.size ) |
| 288 | { |
| 289 | ITEM * const i = (ITEM *)next; |
| 290 | if ( hash_item_key( i ) != 0 ) /* Do not enumerate freed items. */ |
| 291 | f( hash_item_data( i ), data ); |
| 292 | } |
| 293 | } |
| 294 | } |
| 295 | |
| 296 | |
| 297 | /* |
no test coverage detected