From 33782c723d72ad3d52a0e4ec722a67cd693f0e1f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=CE=B6eh=20Matt?= <5415177+ZehMatt@users.noreply.github.com> Date: Mon, 6 Jan 2025 19:55:36 +0200 Subject: [PATCH] Allow save/load for std::span, simplify ReadWriteArray --- src/openrct2/core/OrcaStream.hpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/src/openrct2/core/OrcaStream.hpp b/src/openrct2/core/OrcaStream.hpp index a4030e4c40..d59cdb53cc 100644 --- a/src/openrct2/core/OrcaStream.hpp +++ b/src/openrct2/core/OrcaStream.hpp @@ -20,6 +20,7 @@ #include #include #include +#include #include #include #include @@ -468,15 +469,8 @@ namespace OpenRCT2 } } - template - void ReadWriteArray(TArr (&arr)[TArrSize], TFunc f) - { - auto& arr2 = *(reinterpret_cast*>(arr)); - ReadWriteArray(arr2, f); - } - - template - void ReadWriteArray(std::array& arr, TFunc f) + template + void ReadWriteArray(std::span arr, TFunc f) { if (_mode == Mode::READING) { @@ -487,7 +481,7 @@ namespace OpenRCT2 } for (size_t i = 0; i < count; i++) { - if (i < TArrSize) + if (i < arr.size()) { f(arr[i]); } @@ -509,6 +503,18 @@ namespace OpenRCT2 } } + template + void ReadWriteArray(TArr (&arr)[TArrSize], TFunc f) + { + ReadWriteArray(std::span{ arr, TArrSize }, f); + } + + template + void ReadWriteArray(std::array& arr, TFunc f) + { + ReadWriteArray(std::span{ arr.begin(), arr.end() }, f); + } + template void Ignore() {