DoxigAlpha

putAssumeCapacityNoClobberContext

Function parameters

Parameters

#
self:*Self
key:K
value:V
ctx:Context

Type definitions in this namespace

Types

#

Functions in this namespace

Functions

#
StringHashMap
Builtin hashmap for strings as keys.
StringHashMapUnmanaged
Key memory is managed by the caller.
HashMap
General purpose hash table.
HashMapUnmanaged
A HashMap based on open addressing and linear probing.

= 80

Values

#

Source

Implementation

#
pub fn putAssumeCapacityNoClobberContext(self: *Self, key: K, value: V, ctx: Context) void {
    assert(!self.containsContext(key, ctx));

    const hash: Hash = ctx.hash(key);
    const mask = self.capacity() - 1;
    var idx: usize = @truncate(hash & mask);

    var metadata = self.metadata.? + idx;
    while (metadata[0].isUsed()) {
        idx = (idx + 1) & mask;
        metadata = self.metadata.? + idx;
    }

    assert(self.available > 0);
    self.available -= 1;

    const fingerprint = Metadata.takeFingerprint(hash);
    metadata[0].fill(fingerprint);
    self.keys()[idx] = key;
    self.values()[idx] = value;

    self.size += 1;
}