예제 #1
0
 // -- NamedJavaFunction methods
 @Override
 public int invoke(LuaState luaState) {
   luaState.checkArg(
       1,
       luaState.isJavaObjectRaw(1),
       String.format("expected Java object, got %s", luaState.typeName(1)));
   JavaFunction metamethod =
       luaState.getMetamethod(luaState.toJavaObjectRaw(1), Metamethod.JAVAPROPERTIES);
   return metamethod.invoke(luaState);
 }
예제 #2
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;
 }
예제 #3
0
    // -- JavaFunction methods
    @Override
    public int invoke(LuaState luaState) {
      // Check table
      luaState.checkType(1, LuaType.TABLE);

      // Get interfaces
      int interfaceCount = luaState.getTop() - 1;
      luaState.checkArg(2, interfaceCount > 0, "no interface specified");
      Class<?>[] interfaces = new Class<?>[interfaceCount];
      for (int i = 0; i < interfaceCount; i++) {
        if (luaState.isJavaObject(i + 2, Class.class)) {
          interfaces[i] = luaState.checkJavaObject(i + 2, Class.class);
        } else {
          String interfaceName = luaState.checkString(i + 2);
          interfaces[i] = loadType(luaState, interfaceName);
        }
      }

      // Create proxy
      luaState.pushJavaObjectRaw(luaState.getProxy(1, interfaces));
      return 1;
    }