extern int loader_android (lua_State *L) { const char* name = lua_tostring(L, -1); name = luaL_gsub(L, name, ".", LUA_DIRSEP); char pname[4096]; char *filebytes; long size; // try lua/share/lua/5.1/torch.lua strlcpy(pname, "lua/share/lua/5.1/", sizeof(pname)); strlcat(pname, name, sizeof(pname)); strlcat(pname, ".lua", sizeof(pname)); size = android_asset_get_size(pname); if (size != -1) { filebytes = android_asset_get_bytes(pname); luaL_loadbuffer(L, filebytes, size, name); return 1; } // try lua/share/lua/5.1/torch/init.lua pname[0] = '\0'; strlcpy(pname, "lua/share/lua/5.1/", sizeof(pname)); strlcat(pname, name, sizeof(pname)); strlcat(pname, "/init.lua", sizeof(pname)); size = android_asset_get_size(pname); if (size != -1) { filebytes = android_asset_get_bytes(pname); luaL_loadbuffer(L, filebytes, size, name); return 1; } return 1; }
JNIEXPORT long JNICALL Java_com_torchandroid_facedemo_CameraClass_initTorch(JNIEnv *env, jobject thiz, jobject assetManager) { // get native asset manager. This allows access to files stored in the assets folder AAssetManager* manager = AAssetManager_fromJava(env, assetManager); assert( NULL != manager); lua_State *L = NULL; L = inittorch(manager); // create a lua_State // load and run file char file[] = "main.lua"; int ret; long size = android_asset_get_size(file); if (size != -1) { char *filebytes = android_asset_get_bytes(file); ret = luaL_dobuffer(L, filebytes, size, "main"); if (ret == 1) { D("Torch Error doing resource: %s\n", file); D(lua_tostring(L,-1)); } else { D("Torch script ran succesfully."); } } lua_register(L,"parse",parse); //This function is used by main.lua. return (long) L; }
JNIEXPORT long JNICALL Java_com_torchandroid_neuraltalk_lua_LuaManager_initTorch(JNIEnv *env, jobject thiz, jobject assetManager, jstring nativeLibraryDir_) { // get native asset manager. This allows access to files stored in the assets folder AAssetManager* manager = AAssetManager_fromJava(env, assetManager); assert( NULL != manager); const char *nativeLibraryDir = env->GetStringUTFChars(nativeLibraryDir_, 0); lua_State *L = NULL; L = inittorch(manager, nativeLibraryDir);// create a lua_State // load and run file char file[] = "init-only.lua"; int ret; long size = android_asset_get_size(file); if (size != -1) { char *filebytes = android_asset_get_bytes(file); ret = luaL_dobuffer(L, filebytes, size, "init-only"); if (ret == 1) { D("Torch Error doing resource: %s\n", file); D(lua_tostring(L,-1)); } else { D("Torch script ran successfully."); } } return (long) L; }