| 169 | |
| 170 | |
| 171 | static void string_set_resize( string_set * set ) |
| 172 | { |
| 173 | unsigned i; |
| 174 | string_set new_set; |
| 175 | new_set.num = set->num * 2; |
| 176 | new_set.size = set->size; |
| 177 | new_set.data = (struct hash_item * *)BJAM_MALLOC( sizeof( struct hash_item * |
| 178 | ) * new_set.num ); |
| 179 | memset( new_set.data, 0, sizeof( struct hash_item * ) * new_set.num ); |
| 180 | for ( i = 0; i < set->num; ++i ) |
| 181 | { |
| 182 | while ( set->data[ i ] ) |
| 183 | { |
| 184 | struct hash_item * temp = set->data[ i ]; |
| 185 | unsigned pos = temp->header.hash % new_set.num; |
| 186 | set->data[ i ] = temp->header.next; |
| 187 | temp->header.next = new_set.data[ pos ]; |
| 188 | new_set.data[ pos ] = temp; |
| 189 | } |
| 190 | } |
| 191 | BJAM_FREE( set->data ); |
| 192 | *set = new_set; |
| 193 | } |
| 194 | |
| 195 | |
| 196 | static char const * string_set_insert( string_set * set, char const * string, |