1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-06 06:32:56 +01:00

Allow save/load for std::span, simplify ReadWriteArray

This commit is contained in:
ζeh Matt
2025-01-06 19:55:36 +02:00
committed by Aaron van Geffen
parent 1d7bd7ac27
commit 33782c723d

View File

@@ -20,6 +20,7 @@
#include <array>
#include <cstdint>
#include <optional>
#include <span>
#include <stack>
#include <type_traits>
#include <vector>
@@ -468,15 +469,8 @@ namespace OpenRCT2
}
}
template<typename TArr, size_t TArrSize, typename TFunc>
void ReadWriteArray(TArr (&arr)[TArrSize], TFunc f)
{
auto& arr2 = *(reinterpret_cast<std::array<TArr, TArrSize>*>(arr));
ReadWriteArray(arr2, f);
}
template<typename TArr, size_t TArrSize, typename TFunc>
void ReadWriteArray(std::array<TArr, TArrSize>& arr, TFunc f)
template<typename TArr, typename TFunc>
void ReadWriteArray(std::span<TArr> 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<typename TArr, size_t TArrSize, typename TFunc>
void ReadWriteArray(TArr (&arr)[TArrSize], TFunc f)
{
ReadWriteArray(std::span<TArr>{ arr, TArrSize }, f);
}
template<typename TArr, size_t TArrSize, typename TFunc>
void ReadWriteArray(std::array<TArr, TArrSize>& arr, TFunc f)
{
ReadWriteArray(std::span<TArr>{ arr.begin(), arr.end() }, f);
}
template<typename T>
void Ignore()
{