From 8ced8440fce6e0f2b51c4b66be1b222a5577e765 Mon Sep 17 00:00:00 2001 From: kayomn Date: Sun, 19 Feb 2023 17:16:43 +0000 Subject: [PATCH] Remove coral::fs::access_result --- source/app.cpp | 52 +++++++++++++++++++----------------------- source/coral/files.cpp | 25 ++------------------ source/oar.cpp | 10 ++------ source/runtime.cpp | 11 ++++----- 4 files changed, 32 insertions(+), 66 deletions(-) diff --git a/source/app.cpp b/source/app.cpp index 64bd585..5cd51a1 100644 --- a/source/app.cpp +++ b/source/app.cpp @@ -13,8 +13,6 @@ import oar; export namespace app { struct directory : public coral::fs { - using coral::fs::access_result; - struct rules { bool can_read; @@ -23,24 +21,22 @@ export namespace app { directory() : path_buffer{0} {} - access_result read_file(coral::path const & file_path, + void read_file(coral::path const & file_path, coral::callable const & then) { - if (this->prefix_length == 0) return access_result::not_found; + if (this->prefix_length == 0) return; - if (!this->access_rules.can_read) return access_result::access_denied; + if (!this->access_rules.can_read) return; - ::SDL_RWops * rw_ops = this->open_rw(file_path, {.can_read = true}); + ::SDL_RWops * rw_ops{this->open_rw(file_path, {.can_read = true})}; - if (rw_ops == nullptr) return access_result::not_found; + if (rw_ops == nullptr) return; then([rw_ops](coral::slice const & buffer) -> size_t { return ::SDL_RWread(rw_ops, buffer.pointer, sizeof(uint8_t), buffer.length); }); ::SDL_RWclose(rw_ops); - - return access_result::ok; } void target(coral::slice const & directory_path, rules const & access_rules) { @@ -57,24 +53,22 @@ export namespace app { } } - access_result write_file(coral::path const & file_path, + void write_file(coral::path const & file_path, coral::callable const & then) { - if (this->prefix_length == 0) return access_result::not_found; + if (this->prefix_length == 0) return; - if (!this->access_rules.can_write) return access_result::access_denied; + if (!this->access_rules.can_write) return; - ::SDL_RWops * rw_ops = this->open_rw(file_path, {.can_write = true}); + ::SDL_RWops * rw_ops{this->open_rw(file_path, {.can_write = true})}; - if (rw_ops == nullptr) return access_result::not_found; + if (rw_ops == nullptr) return; then([rw_ops](coral::slice const & buffer) -> size_t { return ::SDL_RWwrite(rw_ops, buffer.pointer, sizeof(uint8_t), buffer.length); }); ::SDL_RWclose(rw_ops); - - return access_result::ok; } private: @@ -87,7 +81,7 @@ export namespace app { coral::u8 path_buffer[path_max]; ::SDL_RWops * open_rw(coral::path const & file_path, rules const & file_rules) { - coral::u8 * const path_begin = this->path_buffer + this->prefix_length; + coral::u8 * const path_begin{this->path_buffer + this->prefix_length}; coral::slice const path_remaining = {path_begin, path_begin + (path_max - this->prefix_length) - 1}; @@ -111,12 +105,12 @@ export namespace app { constexpr directory::rules read_only_rules = {.can_read = true}; { - char * const path = ::SDL_GetBasePath(); + char * const path{::SDL_GetBasePath()}; if (path == nullptr) { this->cwd_directory.target("./", read_only_rules); } else { - coral::usize path_length = 0; + coral::usize path_length{0}; while (path[path_length] != 0) path_length += 1; @@ -131,10 +125,10 @@ export namespace app { } { - char * const path = ::SDL_GetPrefPath("ona", title.begin()); + char * const path{::SDL_GetPrefPath("ona", title.begin())}; if (path != nullptr) { - coral::usize path_length = 0; + coral::usize path_length{0}; while (path[path_length] != 0) path_length += 1; @@ -166,8 +160,8 @@ export namespace app { } void log(app::log_level level, coral::slice const & message) { - coral::i32 const length = static_cast( - coral::min(message.length, static_cast(coral::i32_max))); + coral::i32 const length{static_cast( + coral::min(message.length, static_cast(coral::i32_max)))}; ::SDL_LogMessage(SDL_LOG_CATEGORY_APPLICATION, SDL_LOG_PRIORITY_INFO, "%.*s", length, message.pointer); @@ -215,6 +209,12 @@ export namespace app { this->retitle(title); } + void present() { + if (this->sdl_renderer != nullptr) { + ::SDL_RenderPresent(this->sdl_renderer); + } + } + void render(canvas & source_canvas) { if (this->sdl_renderer != nullptr) { SDL_SetRenderDrawColor(this->sdl_renderer, source_canvas.background_color.to_r8(), @@ -257,12 +257,6 @@ export namespace app { return show_result::ok; } - void present() { - if (this->sdl_renderer != nullptr) { - ::SDL_RenderPresent(this->sdl_renderer); - } - } - private: coral::path title; diff --git a/source/coral/files.cpp b/source/coral/files.cpp index 67330d1..d583267 100644 --- a/source/coral/files.cpp +++ b/source/coral/files.cpp @@ -105,43 +105,22 @@ export namespace coral { * Platform-generalized file system interface. */ struct fs { - /** - * The result from a file access operation. - * - * [file_result::ok] indicates a successful file access operation. - * - * [file_result::not_found] signals that the file was not found. - * - * [file_result::access_denied] warns that the file was found but cannot be opened through - * the file system interface. The most common scenario for this error is a lack of required - * file permissions. - */ - enum class [[nodiscard]] access_result { - ok, - not_found, - access_denied, - }; - /** * Attempts to read the file in the file system located at `file_path` relative, calling * `then` if it was successfully opened for reading. * - * The returned [access_result] indicates whether the operation was successful or not. - * * Once `then` returns, access to the file is closed automatically. */ - virtual access_result read_file(path const & file_path, + virtual void read_file(path const & file_path, callable const & then) = 0; /** * Attempts to write the file in the file system located at `file_path` relative, calling * `then` if it was successfully opened for writing. * - * The returned [access_result] indicates whether the operation was successful or not. - * * Once `then` returns, access to the file is closed automatically. */ - virtual access_result write_file(path const & file_path, + virtual void write_file(path const & file_path, callable const & then) = 0; }; } diff --git a/source/oar.cpp b/source/oar.cpp index 2f93048..f2b3e5d 100644 --- a/source/oar.cpp +++ b/source/oar.cpp @@ -21,22 +21,16 @@ export namespace oar { }; struct archive : public coral::fs { - using coral::fs::access_result; - archive() { } - access_result read_file(coral::path const & file_path, + void read_file(coral::path const & file_path, coral::callable const & then) override { - - return access_result::access_denied; } - virtual access_result write_file(coral::path const & file_path, + void write_file(coral::path const & file_path, coral::callable const & then) override { - - return access_result::access_denied; } }; } diff --git a/source/runtime.cpp b/source/runtime.cpp index 1248c3a..acdf322 100644 --- a/source/runtime.cpp +++ b/source/runtime.cpp @@ -15,16 +15,13 @@ extern "C" int main(int argc, char const * const * argv) { constexpr coral::path config_path{"config.kym"}; bool is_config_loaded{false}; - if ((system.res_fs().read_file(config_path, [&](coral::readable const & file) { + system.res_fs().read_file(config_path, [&](coral::readable const & file) { kym::vm vm{&system.thread_safe_allocator(), [&system](coral::slice const & error_message) { system.log(app::log_level::error, error_message); }}; - if (!vm.init({ - .datastack_size = 64, - .callstack_size = 64, - })) { + if (!vm.init({.datastack_size = 64, .callstack_size = 64})) { system.log(app::log_level::error, "failed to allocate memory for config vm"); return; @@ -65,7 +62,9 @@ extern "C" int main(int argc, char const * const * argv) { }); }); }); - }) != coral::fs::access_result::ok) || (!is_config_loaded)) return coral::u8_max; + }); + + if (!is_config_loaded) return coral::u8_max; // app::canvas canvas_2d();