package org.luaj.vm2;
public class LuaImmutableTable extends LuaTable {
private LuaImmutableTable(LuaTable table) {
this.array = table.array;
this.hashEntries = table.hashEntries;
this.hashKeys = table.hashKeys;
this.hashValues = table.hashValues;
this.m_metatable = table.m_metatable;
}
public static LuaValue immutableOf(LuaValue value) {
if (value == null)
return null;
if (value.istable())
return new LuaImmutableTable(value.checktable());
return NIL;
}
private void error() {
error("attempted modification of immutable");
}
@Override
public void presize(int narray) {
error();
}
@Override
public void presize(int narray, int nhash) {
error();
}
@Override
public LuaValue setmetatable(LuaValue metatable) {
error();
return this;
}
@Override
public void set(int key, LuaValue value) {
error();
}
@Override
public void set(LuaValue key, LuaValue value) {
error();
}
@Override
public void rawset(int key, LuaValue value) {
error();
}
@Override
public void rawset(LuaValue key, LuaValue value) {
error();
}
@Override
public LuaValue remove(int pos) {
error();
return NONE;
}
@Override
public void insert(int pos, LuaValue value) {
error();
}
@Override
public void hashset(LuaValue key, LuaValue value) {
error();
}
@Override
protected void hashClearSlot(int i) {
error();
}
@Override
public void sort(LuaValue comparator) {
error();
}
}