All Downloads are FREE. Search and download functionalities are using the official Maven repository.

nl.weeaboo.lua2.vm.Entry Maven / Gradle / Ivy

package nl.weeaboo.lua2.vm;

import javax.annotation.Nullable;

/**
 * Base class for regular entries.
 * 

* If the key may be an integer, the {@link #arraykey(int)} method must be overridden to handle that case. */ abstract class Entry implements IStrongSlot { @Override public abstract LuaValue key(); @Override public abstract LuaValue value(); @Override public ISlot set(IStrongSlot target, LuaValue value) { return set(value); } abstract Entry set(LuaValue value); @Override public abstract boolean keyeq(LuaValue key); @Override public abstract int keyindex(int hashMask); @Override public int arraykey(int max) { LuaValue key = key(); if (!key.isinttype()) { return 0; } int intKey = key.toint(); return (intKey >= 1 && intKey <= max) ? intKey : 0; } @Override public Varargs toVarargs() { return LuaTable.varargsOf(key(), value()); } @Override public IStrongSlot first() { return this; } @Override public @Nullable ISlot rest() { return null; } @Override public @Nullable IStrongSlot find(LuaValue key) { return keyeq(key) ? this : null; } @Override public ISlot add(ISlot entry) { return new LinkSlot(this, entry); } @Override public ISlot remove(IStrongSlot target) { return new DeadSlot(key(), null); } @Override public ISlot relink(ISlot rest) { return (rest != null) ? new LinkSlot(this, rest) : (ISlot)this; } }





© 2015 - 2025 Weber Informatics LLC | Privacy Policy