diff options
| author | Benoit Germain <benoit.germain@ubisoft.com> | 2024-06-06 14:12:29 +0200 |
|---|---|---|
| committer | Benoit Germain <benoit.germain@ubisoft.com> | 2024-06-06 14:12:29 +0200 |
| commit | 0e8c97bb4854c7fdeb7393f386f03125380d0162 (patch) | |
| tree | 81a07c0a99eae67d2dfc03a468e2edd36f2d387c /src | |
| parent | 38a9cded72d663f48eb3154ed2eb495bbf3f80f3 (diff) | |
| download | lanes-0e8c97bb4854c7fdeb7393f386f03125380d0162.tar.gz lanes-0e8c97bb4854c7fdeb7393f386f03125380d0162.tar.bz2 lanes-0e8c97bb4854c7fdeb7393f386f03125380d0162.zip | |
One more std::ranges::iota_view
Diffstat (limited to 'src')
| -rw-r--r-- | src/linda.cpp | 28 |
1 files changed, 16 insertions, 12 deletions
diff --git a/src/linda.cpp b/src/linda.cpp index bd3026d..33d9f0b 100644 --- a/src/linda.cpp +++ b/src/linda.cpp | |||
| @@ -37,30 +37,34 @@ THE SOFTWARE. | |||
| 37 | #include "tools.h" | 37 | #include "tools.h" |
| 38 | 38 | ||
| 39 | #include <functional> | 39 | #include <functional> |
| 40 | #include <ranges> | ||
| 40 | 41 | ||
| 41 | // ################################################################################################# | 42 | // ################################################################################################# |
| 42 | 43 | ||
| 43 | static void check_key_types(lua_State* L_, int start_, int end_) | 44 | static void check_key_types(lua_State* const L_, int const start_, int const end_) |
| 44 | { | 45 | { |
| 45 | for (int _i{ start_ }; _i <= end_; ++_i) { | 46 | for (int const _i : std::ranges::iota_view{ start_, end_ + 1 }) { |
| 46 | LuaType const t{ luaG_type(L_, _i) }; | 47 | switch (LuaType const _t{ luaG_type(L_, _i) }) { |
| 47 | switch (t) { | ||
| 48 | case LuaType::BOOLEAN: | 48 | case LuaType::BOOLEAN: |
| 49 | case LuaType::NUMBER: | 49 | case LuaType::NUMBER: |
| 50 | case LuaType::STRING: | 50 | case LuaType::STRING: |
| 51 | continue; | 51 | break; |
| 52 | 52 | ||
| 53 | case LuaType::LIGHTUSERDATA: | 53 | case LuaType::LIGHTUSERDATA: |
| 54 | static constexpr std::array<std::reference_wrapper<UniqueKey const>, 3> kKeysToCheck{ kLindaBatched, kCancelError, kNilSentinel }; | 54 | { |
| 55 | for (UniqueKey const& _key : kKeysToCheck) { | 55 | static constexpr std::array<std::reference_wrapper<UniqueKey const>, 3> kKeysToCheck{ kLindaBatched, kCancelError, kNilSentinel }; |
| 56 | if (_key.equals(L_, _i)) { | 56 | for (UniqueKey const& _key : kKeysToCheck) { |
| 57 | raise_luaL_error(L_, "argument #%d: can't use %s as a key", _i, _key.debugName.data()); | 57 | if (_key.equals(L_, _i)) { |
| 58 | break; | 58 | raise_luaL_error(L_, "argument #%d: can't use %s as a key", _i, _key.debugName.data()); |
| 59 | break; | ||
| 60 | } | ||
| 59 | } | 61 | } |
| 60 | } | 62 | } |
| 61 | break; | 63 | break; |
| 64 | |||
| 65 | default: | ||
| 66 | raise_luaL_error(L_, "argument #%d: invalid key type (not a boolean, string, number or light userdata)", _i); | ||
| 62 | } | 67 | } |
| 63 | raise_luaL_error(L_, "argument #%d: invalid key type (not a boolean, string, number or light userdata)", _i); | ||
| 64 | } | 68 | } |
| 65 | } | 69 | } |
| 66 | 70 | ||
| @@ -496,7 +500,7 @@ LUAG_FUNC(linda_receive) | |||
| 496 | return 0; | 500 | return 0; |
| 497 | 501 | ||
| 498 | CancelRequest _cancel{ CancelRequest::None }; | 502 | CancelRequest _cancel{ CancelRequest::None }; |
| 499 | KeeperCallResult _pushed; | 503 | KeeperCallResult _pushed{}; |
| 500 | STACK_CHECK_START_REL(_KL, 0); | 504 | STACK_CHECK_START_REL(_KL, 0); |
| 501 | for (bool _try_again{ true };;) { | 505 | for (bool _try_again{ true };;) { |
| 502 | if (_lane != nullptr) { | 506 | if (_lane != nullptr) { |
