diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 739e880fb2..3d543fe7b9 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -1068,12 +1068,15 @@ void SlSaveLoadRef(void *ptr, VarType conv) } } +template +using ring_buffer_sl = ring_buffer; + /** * Template class to help with list-like types. */ -template typename Tstorage, typename Tvar> +template typename Tstorage, typename Tvar, typename Tallocator = std::allocator> class SlStorageHelper { - typedef Tstorage SlStorageT; + typedef Tstorage SlStorageT; public: /** * Internal templated helper to return the size in bytes of a list-like type. @@ -1172,7 +1175,7 @@ static inline size_t SlCalcRefListLen(const void *list, VarType conv) */ static inline size_t SlCalcRefRingLen(const void *list, VarType conv) { - return SlStorageHelper::SlCalcLen(list, conv, SL_REF); + return SlStorageHelper::SlCalcLen(list, conv, SL_REF); } /** @@ -1216,7 +1219,7 @@ static void SlRefRing(void *list, VarType conv) if (_sl.need_length == NL_CALCLENGTH) return; } - SlStorageHelper::SlSaveLoad(list, conv, SL_REF); + SlStorageHelper::SlSaveLoad(list, conv, SL_REF); } /** @@ -1244,15 +1247,15 @@ static void SlRefVector(void *list, VarType conv) static inline size_t SlCalcRingLen(const void *ring, VarType conv) { switch (GetVarMemType(conv)) { - case SLE_VAR_BL: return SlStorageHelper::SlCalcLen(ring, conv); - case SLE_VAR_I8: return SlStorageHelper::SlCalcLen(ring, conv); - case SLE_VAR_U8: return SlStorageHelper::SlCalcLen(ring, conv); - case SLE_VAR_I16: return SlStorageHelper::SlCalcLen(ring, conv); - case SLE_VAR_U16: return SlStorageHelper::SlCalcLen(ring, conv); - case SLE_VAR_I32: return SlStorageHelper::SlCalcLen(ring, conv); - case SLE_VAR_U32: return SlStorageHelper::SlCalcLen(ring, conv); - case SLE_VAR_I64: return SlStorageHelper::SlCalcLen(ring, conv); - case SLE_VAR_U64: return SlStorageHelper::SlCalcLen(ring, conv); + case SLE_VAR_BL: return SlStorageHelper::SlCalcLen(ring, conv); + case SLE_VAR_I8: return SlStorageHelper::SlCalcLen(ring, conv); + case SLE_VAR_U8: return SlStorageHelper::SlCalcLen(ring, conv); + case SLE_VAR_I16: return SlStorageHelper::SlCalcLen(ring, conv); + case SLE_VAR_U16: return SlStorageHelper::SlCalcLen(ring, conv); + case SLE_VAR_I32: return SlStorageHelper::SlCalcLen(ring, conv); + case SLE_VAR_U32: return SlStorageHelper::SlCalcLen(ring, conv); + case SLE_VAR_I64: return SlStorageHelper::SlCalcLen(ring, conv); + case SLE_VAR_U64: return SlStorageHelper::SlCalcLen(ring, conv); default: NOT_REACHED(); } } @@ -1265,15 +1268,15 @@ static inline size_t SlCalcRingLen(const void *ring, VarType conv) static void SlRing(void *ring, VarType conv) { switch (GetVarMemType(conv)) { - case SLE_VAR_BL: SlStorageHelper::SlSaveLoad(ring, conv); break; - case SLE_VAR_I8: SlStorageHelper::SlSaveLoad(ring, conv); break; - case SLE_VAR_U8: SlStorageHelper::SlSaveLoad(ring, conv); break; - case SLE_VAR_I16: SlStorageHelper::SlSaveLoad(ring, conv); break; - case SLE_VAR_U16: SlStorageHelper::SlSaveLoad(ring, conv); break; - case SLE_VAR_I32: SlStorageHelper::SlSaveLoad(ring, conv); break; - case SLE_VAR_U32: SlStorageHelper::SlSaveLoad(ring, conv); break; - case SLE_VAR_I64: SlStorageHelper::SlSaveLoad(ring, conv); break; - case SLE_VAR_U64: SlStorageHelper::SlSaveLoad(ring, conv); break; + case SLE_VAR_BL: SlStorageHelper::SlSaveLoad(ring, conv); break; + case SLE_VAR_I8: SlStorageHelper::SlSaveLoad(ring, conv); break; + case SLE_VAR_U8: SlStorageHelper::SlSaveLoad(ring, conv); break; + case SLE_VAR_I16: SlStorageHelper::SlSaveLoad(ring, conv); break; + case SLE_VAR_U16: SlStorageHelper::SlSaveLoad(ring, conv); break; + case SLE_VAR_I32: SlStorageHelper::SlSaveLoad(ring, conv); break; + case SLE_VAR_U32: SlStorageHelper::SlSaveLoad(ring, conv); break; + case SLE_VAR_I64: SlStorageHelper::SlSaveLoad(ring, conv); break; + case SLE_VAR_U64: SlStorageHelper::SlSaveLoad(ring, conv); break; default: NOT_REACHED(); } }