[nostalgia/core] Make loadRomFs return UniquePtr
This commit is contained in:
parent
abf45112b0
commit
4cd8f6a0c1
@ -10,15 +10,15 @@
|
||||
|
||||
namespace nostalgia::core {
|
||||
|
||||
ox::Result<ox::FileSystem*> loadRomFs(const char *path) noexcept {
|
||||
ox::Result<ox::UniquePtr<ox::FileSystem>> loadRomFs(const char *path) noexcept {
|
||||
const auto lastDot = ox_lastIndexOf(path, '.');
|
||||
const auto fsExt = lastDot != -1 ? path + lastDot : "";
|
||||
if (ox_strcmp(fsExt, ".oxfs") == 0) {
|
||||
oxRequire(rom, core::loadRom(path));
|
||||
return new ox::FileSystem32(rom, 32 * ox::units::MB, unloadRom);
|
||||
return {ox::make_unique<ox::FileSystem32>(rom, 32 * ox::units::MB, unloadRom)};
|
||||
} else {
|
||||
#ifdef OX_HAS_PASSTHROUGHFS
|
||||
return new ox::PassThroughFS(path);
|
||||
return {ox::make_unique<ox::PassThroughFS>(path)};
|
||||
#else
|
||||
return OxError(2);
|
||||
#endif
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
namespace nostalgia::core {
|
||||
|
||||
ox::Result<ox::FileSystem*> loadRomFs(const char *path) noexcept;
|
||||
ox::Result<ox::UniquePtr<ox::FileSystem>> loadRomFs(const char *path) noexcept;
|
||||
|
||||
ox::Result<char*> loadRom(const char *path = "") noexcept;
|
||||
|
||||
|
@ -11,19 +11,19 @@
|
||||
|
||||
#include "app.hpp"
|
||||
|
||||
int main(int argc, const char **argv) {
|
||||
if (argc > 1) {
|
||||
ox::trace::init();
|
||||
auto path = argv[1];
|
||||
auto [fs, err] = nostalgia::core::loadRomFs(path);
|
||||
if (err) {
|
||||
oxAssert(err, "Something went wrong...");
|
||||
return static_cast<int>(err);
|
||||
}
|
||||
err = run(fs);
|
||||
oxAssert(err, "Something went wrong...");
|
||||
delete fs;
|
||||
return static_cast<int>(err);
|
||||
ox::Error run(int argc, const char **argv) {
|
||||
if (argc < 2) {
|
||||
oxErrf("Please provide path to project directory or OxFS file.");
|
||||
return OxError(1);
|
||||
}
|
||||
return 1;
|
||||
const auto path = argv[1];
|
||||
oxRequire(fs, nostalgia::core::loadRomFs(path));
|
||||
return run(fs.get());
|
||||
}
|
||||
|
||||
int main(int argc, const char **argv) {
|
||||
ox::trace::init();
|
||||
const auto err = run(argc, argv);
|
||||
oxAssert(err, "Something went wrong...");
|
||||
return static_cast<int>(err);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user