Joe expansion

This commit is contained in:
Mid 2025-10-15 14:11:41 +03:00
parent 9d975eeceb
commit 8c4754b563

View File

@ -46,8 +46,28 @@ MapDQCOaLDhS_try_add: [K, V, S]u1(MapDQCOaLDhS[K, V, S]* this, K* key, V* value)
};
MapDQCOaLDhS_expand: [K, V, S]u1(MapDQCOaLDhS[K, V, S]* this) -> {
/* Unimplemented. */
return 0;
S capacity = this.capacity;
KVPair[K, V][?]* old_data = this.data;
u8[?]* old_occupied = this.occupied;
S new_capacity = capacity * 2;
this.capacity = new_capacity;
this.data = calloc(new_capacity, @sizeof KVPair[K, V]);
this.occupied = calloc(new_capacity, @sizeof((*this.occupied)[0]));
S i = 0;
loop {
if(i == capacity) {
break;
}
if((*old_occupied)[i] != 0) {
KVPair[K, V]* pair = &((*old_data)[i]);
MapDQCOaLDhS_try_add[K, V, S](this, &pair.key, &pair.value);
}
i = i + 1;
}
return 1;
};
MapDQCOaLDhS_add: [K, V, S]u1(MapDQCOaLDhS[K, V, S]* this, K* key, V* value) -> {