CompoundOperationMap

A sequence of operations run against one map. It does as little as possible: no locking, just a note of whether the map was changed, so the map underneath knows when to hand work off.

Upstream also has a locking variant for thread-safe objects. This port has none (D-3).

Constructors

Link copied to clipboard
constructor(owner: SlotMapOwner)

Properties

Link copied to clipboard

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 close()

Nothing to undo without locks.

Link copied to clipboard
open override 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.

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