From 19a4120113fa29a35c4bc60beb92da687ff1ac43 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Sat, 25 May 2024 22:33:01 -0500 Subject: [PATCH] [studio/modlib] Make iterateSelection return errors properly --- .../studio/modlib/include/studio/selectiontracker.hpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/olympic/studio/modlib/include/studio/selectiontracker.hpp b/src/olympic/studio/modlib/include/studio/selectiontracker.hpp index 8132e44f..f33b2991 100644 --- a/src/olympic/studio/modlib/include/studio/selectiontracker.hpp +++ b/src/olympic/studio/modlib/include/studio/selectiontracker.hpp @@ -12,15 +12,19 @@ namespace studio { struct Selection {ox::Point a, b;}; constexpr auto iterateSelection(studio::Selection const&sel, auto const&cb) { + constexpr auto retErr = ox::is_same_v; for (auto x = sel.a.x; x <= sel.b.x; ++x) { for (auto y = sel.a.y; y <= sel.b.y; ++y) { - if constexpr(ox::is_same_v) { - return cb(x, y); + if constexpr(retErr) { + oxReturnError(cb(x, y)); } else { cb(x, y); } } } + if constexpr(retErr) { + return ox::Error{}; + } }; class SelectionTracker {