summaryrefslogtreecommitdiff
path: root/src/lua/lua_filesystem.cpp
diff options
context:
space:
mode:
authorailurux <ailuruxx@gmail.com>2024-05-06 12:36:16 +1000
committerailurux <ailuruxx@gmail.com>2024-05-06 12:36:16 +1000
commiteeb3f2d406a951b423b83f559fe749df0b4f745a (patch)
tree8c4174f5fefcfa7aceb5afea70f0064894126aa7 /src/lua/lua_filesystem.cpp
parentfb3d6a7b86991fe38da9a2741db8801785aa4c1b (diff)
downloadtangara-fw-eeb3f2d406a951b423b83f559fe749df0b4f745a.tar.gz
WIP: File browser, needs bug fixes
Diffstat (limited to 'src/lua/lua_filesystem.cpp')
-rw-r--r--src/lua/lua_filesystem.cpp36
1 files changed, 30 insertions, 6 deletions
diff --git a/src/lua/lua_filesystem.cpp b/src/lua/lua_filesystem.cpp
index 5c690c16..f0dbaf9a 100644
--- a/src/lua/lua_filesystem.cpp
+++ b/src/lua/lua_filesystem.cpp
@@ -88,11 +88,11 @@ static auto fs_iterate(lua_State* state) -> int {
return 1;
}
-// static auto db_iterator_clone(lua_State* state) -> int {
-// database::Iterator* it = db_check_iterator(state, 1);
-// push_iterator(state, *it);
-// return 1;
-// }
+static auto fs_iterator_clone(lua_State* state) -> int {
+ database::FileIterator* it = check_file_iterator(state, 1);
+ push_iterator(state, *it);
+ return 1;
+}
static auto fs_iterator_gc(lua_State* state) -> int {
database::FileIterator* it = check_file_iterator(state, 1);
@@ -102,7 +102,7 @@ static auto fs_iterator_gc(lua_State* state) -> int {
static const struct luaL_Reg kFileIteratorFuncs[] = {{"next", fs_iterate},
{"prev", fs_iterate_prev},
- // {"clone", db_iterator_clone},
+ {"clone", fs_iterator_clone},
{"__call", fs_iterate},
{"__gc", fs_iterator_gc},
{NULL, NULL}};
@@ -114,7 +114,31 @@ static auto file_entry_path(lua_State* state) -> int {
return 1;
}
+static auto file_entry_is_dir(lua_State* state) -> int {
+ LuaFileEntry* data = reinterpret_cast<LuaFileEntry*>(
+ luaL_checkudata(state, 1, kFileEntryMetatable));
+ lua_pushboolean(state, data->isDirectory);
+ return 1;
+}
+
+static auto file_entry_is_hidden(lua_State* state) -> int {
+ LuaFileEntry* data = reinterpret_cast<LuaFileEntry*>(
+ luaL_checkudata(state, 1, kFileEntryMetatable));
+ lua_pushboolean(state, data->isHidden);
+ return 1;
+}
+
+static auto file_entry_is_track(lua_State* state) -> int {
+ LuaFileEntry* data = reinterpret_cast<LuaFileEntry*>(
+ luaL_checkudata(state, 1, kFileEntryMetatable));
+ lua_pushboolean(state, data->isTrack);
+ return 1;
+}
+
static const struct luaL_Reg kFileEntryFuncs[] = {{"filepath", file_entry_path},
+ {"is_directory", file_entry_is_dir},
+ {"is_hidden", file_entry_is_hidden},
+ {"is_track", file_entry_is_track},
{"__tostring", file_entry_path},
{NULL, NULL}};