[keel] Add clearer Error handling

This commit is contained in:
Gary Talent 2025-01-23 00:11:15 -06:00
parent 9511cb5719
commit 6ef462adcc
2 changed files with 10 additions and 4 deletions

View File

@ -63,8 +63,11 @@ namespace detail {
template<typename T>
constexpr auto makeLoader(Context &ctx) {
return [&ctx](ox::StringViewCR assetId) -> ox::Result<T> {
OX_REQUIRE(p, ctx.uuidToPath.at(assetId));
OX_REQUIRE(buff, ctx.rom->read(*p));
auto const p = ctx.uuidToPath.at(assetId);
if (p.error) {
return ox::Error{1, "Asset ID not found"};
}
OX_REQUIRE(buff, ctx.rom->read(*p.value));
auto [obj, err] = readAsset<T>(buff);
if (err) {
if (err != ox::Error_ClawTypeVersionMismatch && err != ox::Error_ClawTypeMismatch) {

View File

@ -76,8 +76,11 @@ ox::Error buildUuidMap(Context &ctx) noexcept {
ox::Result<ox::UUID> pathToUuid(Context &ctx, ox::StringViewCR path) noexcept {
#ifndef OX_BARE_METAL
OX_REQUIRE(out, ctx.pathToUuid.at(path));
return *out;
auto const out = ctx.pathToUuid.at(path);
if (out.error) {
return ox::Error{1, "Path not found"};
}
return *out.value;
#else
return ox::Error(1, "UUID to path conversion not supported on this platform");
#endif