예제 #1
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;
    }