// -- JavaFunction methods @SuppressWarnings("unchecked") @Override public int invoke(LuaState luaState) { if (luaState.isJavaObject(1, Map.class)) { Map<Object, Object> map = luaState.toJavaObject(1, Map.class); luaState.pushJavaObject(new LuaMap(map)); } else if (luaState.isJavaObject(1, List.class)) { List<Object> list = luaState.toJavaObject(1, List.class); luaState.pushJavaObject(new LuaList(list)); } else { luaState.checkArg( 1, false, String.format("expected map or list, got %s", luaState.typeName(1))); } return 1; }
// -- JavaFunction methods @Override public int invoke(LuaState luaState) { LuaMap luaMap = (LuaMap) luaState.toJavaObjectRaw(1); Object key = luaState.toJavaObject(2, Object.class); if (key == null) { throw new LuaRuntimeException( String.format("attempt to write map with %s accessor", luaState.typeName(2))); } Object value = luaState.toJavaObject(3, Object.class); if (value != null) { luaMap.getMap().put(key, value); } else { luaMap.getMap().remove(key); } return 0; }
// -- JavaFunction methods @Override public int invoke(LuaState luaState) { LuaMap luaMap = (LuaMap) luaState.toJavaObjectRaw(1); Object key = luaState.toJavaObject(2, Object.class); if (key == null) { throw new LuaRuntimeException( String.format("attempt to read map with %s accessor", luaState.typeName(2))); } luaState.pushJavaObject(luaMap.getMap().get(key)); return 1; }
// -- JavaFunction methods @Override public int invoke(LuaState luaState) { LuaList luaList = (LuaList) luaState.toJavaObjectRaw(1); if (!luaState.isNumber(2)) { throw new LuaRuntimeException( String.format("attempt to write list with %s accessor", luaState.typeName(2))); } int index = luaState.toInteger(2); Object value = luaState.toJavaObject(3, Object.class); if (value != null) { int size = luaList.getList().size(); if (index - 1 != size) { luaList.getList().set(index - 1, value); } else { luaList.getList().add(value); } } else { luaList.getList().remove(index - 1); } return 0; }