// -- JavaFunction methods @Override public int invoke(LuaState luaState) { // Get the object Object object = luaState.checkJavaObject(1, Object.class); // Find class Class<?> clazz; if (luaState.isJavaObject(2, Class.class)) { clazz = luaState.checkJavaObject(2, Class.class); } else { String className = luaState.checkString(2); clazz = loadType(luaState, className); } // Type check luaState.pushBoolean(clazz.isInstance(object)); return 1; }
// -- JavaFunction methods @Override public int invoke(LuaState luaState) { // Check arguments String className = luaState.checkString(1); boolean doImport = luaState.toBoolean(2); // Load Class<?> clazz = loadType(luaState, className); luaState.pushJavaObject(clazz); // Import if (doImport) { luaState.rawGet(LuaState.REGISTRYINDEX, LuaState.RIDX_GLOBALS); String name = clazz.getName(); int index = name.indexOf('.'); while (index >= 0) { String part = name.substring(0, index); luaState.getField(-1, part); if (!luaState.isTable(-1)) { luaState.pop(1); luaState.newTable(); luaState.pushValue(-1); luaState.setField(-3, part); } luaState.remove(-2); name = name.substring(index + 1); index = name.indexOf('.'); } luaState.pushValue(-2); luaState.setField(-2, name); luaState.pop(1); } luaState.pushBoolean(doImport); // Return return 2; }