Package org.htmlunit.corejs.javascript
Class EmbeddedSlotMap
- java.lang.Object
-
- org.htmlunit.corejs.javascript.EmbeddedSlotMap
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description private static classEmbeddedSlotMap.Iter
-
Field Summary
Fields Modifier and Type Field Description private intcountprivate SlotfirstAddedprivate static intINITIAL_SLOT_SIZEprivate SlotlastAddedprivate Slot[]slots
-
Constructor Summary
Constructors Constructor Description EmbeddedSlotMap()
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidadd(Slot newSlot)Insert a new slot to the map.private static voidaddKnownAbsentSlot(Slot[] addSlots, Slot slot)Add slot with keys that are known to absent from the table.private static voidcopyTable(Slot[] oldSlots, Slot[] newSlots)private SlotcreateSlot(java.lang.Object key, int indexOrHash, int attributes)private static intgetSlotIndex(int tableSize, int indexOrHash)private voidinsertNewSlot(Slot newSlot)booleanisEmpty()Return whether the map is empty.java.util.Iterator<Slot>iterator()Slotmodify(java.lang.Object key, int index, int attributes)Locate the slot with given name or index, and create a new one if necessary.Slotquery(java.lang.Object key, int index)Locate the slot with the given name or index.voidremove(java.lang.Object key, int index)Remove the slot at either "key" or "index".voidreplace(Slot oldSlot, Slot newSlot)Replace "slot" with a new slot.intsize()Return the size of the map.
-
-
-
Field Detail
-
slots
private Slot[] slots
-
firstAdded
private Slot firstAdded
-
lastAdded
private Slot lastAdded
-
count
private int count
-
INITIAL_SLOT_SIZE
private static final int INITIAL_SLOT_SIZE
- See Also:
- Constant Field Values
-
-
Method Detail
-
size
public int size()
Description copied from interface:SlotMapReturn the size of the map.
-
isEmpty
public boolean isEmpty()
Description copied from interface:SlotMapReturn whether the map is empty.
-
iterator
public java.util.Iterator<Slot> iterator()
- Specified by:
iteratorin interfacejava.lang.Iterable<Slot>
-
query
public Slot query(java.lang.Object key, int index)
Locate the slot with the given name or index.
-
modify
public Slot modify(java.lang.Object key, int index, int attributes)
Locate the slot with given name or index, and create a new one if necessary.- Specified by:
modifyin interfaceSlotMap- Parameters:
key- either a String or a Symbol object that identifies the propertyindex- index or 0 if slot holds property name.attributes- the attributes to be set on the slot if a new slot is created. Existing slots will not be modified.- Returns:
- a Slot, which will be created anew if no such slot exists.
-
createSlot
private Slot createSlot(java.lang.Object key, int indexOrHash, int attributes)
-
replace
public void replace(Slot oldSlot, Slot newSlot)
Description copied from interface:SlotMapReplace "slot" with a new slot. This is used to change slot types.
-
add
public void add(Slot newSlot)
Description copied from interface:SlotMapInsert a new slot to the map. Both "name" and "indexOrHash" must be populated. Note that ScriptableObject generally adds slots via the "modify" method.
-
insertNewSlot
private void insertNewSlot(Slot newSlot)
-
remove
public void remove(java.lang.Object key, int index)Description copied from interface:SlotMapRemove the slot at either "key" or "index".
-
addKnownAbsentSlot
private static void addKnownAbsentSlot(Slot[] addSlots, Slot slot)
Add slot with keys that are known to absent from the table. This is an optimization to use when inserting into empty table, after table growth or during deserialization.
-
getSlotIndex
private static int getSlotIndex(int tableSize, int indexOrHash)
-
-