From 23f0311ec9236355e61dabc01d7788aab640cb84 Mon Sep 17 00:00:00 2001 From: scawful Date: Tue, 28 May 2024 17:48:25 -0400 Subject: [PATCH] update error handling for palettes saving for_each --- src/app/gfx/snes_palette.h | 32 ++++++++++++++++---------------- src/app/rom.cc | 16 +++++++++------- 2 files changed, 25 insertions(+), 23 deletions(-) diff --git a/src/app/gfx/snes_palette.h b/src/app/gfx/snes_palette.h index 18f7b712..3e0f727b 100644 --- a/src/app/gfx/snes_palette.h +++ b/src/app/gfx/snes_palette.h @@ -274,22 +274,22 @@ struct PaletteGroupMap { } template - void for_each(Func&& func) { - func(overworld_main); - func(overworld_aux); - func(overworld_animated); - func(hud); - func(global_sprites); - func(armors); - func(swords); - func(shields); - func(sprites_aux1); - func(sprites_aux2); - func(sprites_aux3); - func(dungeon_main); - func(grass); - func(object_3d); - func(overworld_mini_map); + absl::Status for_each(Func&& func) { + RETURN_IF_ERROR(func(overworld_aux)); + RETURN_IF_ERROR(func(overworld_animated)); + RETURN_IF_ERROR(func(hud)); + RETURN_IF_ERROR(func(global_sprites)); + RETURN_IF_ERROR(func(armors)); + RETURN_IF_ERROR(func(swords)); + RETURN_IF_ERROR(func(shields)); + RETURN_IF_ERROR(func(sprites_aux1)); + RETURN_IF_ERROR(func(sprites_aux2)); + RETURN_IF_ERROR(func(sprites_aux3)); + RETURN_IF_ERROR(func(dungeon_main)); + RETURN_IF_ERROR(func(grass)); + RETURN_IF_ERROR(func(object_3d)); + RETURN_IF_ERROR(func(overworld_mini_map)); + return absl::OkStatus(); } }; diff --git a/src/app/rom.cc b/src/app/rom.cc index 49df0d9c..7091b6cc 100644 --- a/src/app/rom.cc +++ b/src/app/rom.cc @@ -330,13 +330,15 @@ absl::Status Rom::SavePalette(int index, const std::string& group_name, } absl::Status Rom::SaveAllPalettes() { - palette_groups_.for_each([&](gfx::PaletteGroup& group) -> absl::Status { - for (size_t i = 0; i < group.size(); ++i) { - RETURN_IF_ERROR(SavePalette(i, group.name(), *group.mutable_palette(i))); - } - return absl::OkStatus(); - }); - + RETURN_IF_ERROR( + palette_groups_.for_each([&](gfx::PaletteGroup& group) -> absl::Status { + for (size_t i = 0; i < group.size(); ++i) { + RETURN_IF_ERROR( + SavePalette(i, group.name(), *group.mutable_palette(i))); + } + return absl::OkStatus(); + })); + return absl::OkStatus(); }