HashSlotMap

A SlotMap built on a linked hash map. It costs more than EmbeddedSlotMap, mostly because each slot sits inside another object, but it copes far better with a lot of hash collisions, so it takes over once an object has many properties.

Constructors

Link copied to clipboard
constructor()
constructor(oldMap: SlotMap)
constructor(oldMap: SlotMap, newSlot: Slot)

Functions

Link copied to clipboard
open override fun add(owner: SlotMapOwner?, newSlot: Slot)

Puts a slot straight in. Both its name and its index hash have to be set already. ScriptableObject normally goes through modify instead.

Link copied to clipboard
open override fun <S : Slot> compute(owner: SlotMapOwner?, mutableMap: CompoundOperationMap, key: Any?, index: Int, compute: SlotMap.SlotComputer<S>): S?

open fun <S : Slot> compute(owner: SlotMapOwner, key: Any?, index: Int, compute: SlotMap.SlotComputer<S>): S?

Replaces what key maps to with whatever compute returns: null removes the mapping, and anything else replaces or creates it. If compute throws, nothing changes.

Link copied to clipboard
open fun dirtySize(): Int

The size before any pending compound operation is folded back in.

Link copied to clipboard
open override fun isEmpty(): Boolean

Whether there are no slots at all.

Link copied to clipboard
open operator override fun iterator(): Iterator<Slot>
Link copied to clipboard
open override fun modify(owner: SlotMapOwner?, key: Any?, index: Int, attributes: Int): Slot

The slot for key, or for index when key is null, creating one if it is not there yet.

Link copied to clipboard
open override fun query(key: Any?, index: Int): Slot?

The slot for key, or for index when key is null, or null if there is none.

Link copied to clipboard
open override fun size(): Int

How many slots there are.

Link copied to clipboard

Opens a compound operation over this map.