예제 #1
0
 // -- 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;
 }
예제 #2
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 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;
 }
예제 #3
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;
 }
예제 #4
0
 // -- 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;
 }