From b37095715f4926a581fde8905066be3d906fca8e Mon Sep 17 00:00:00 2001 From: tomcw Date: Tue, 31 Dec 2019 12:52:10 +0000 Subject: [PATCH] Save-state: refactor: added a LoadMemory() specialisation for vector --- source/Disk.cpp | 5 +---- source/YamlHelper.cpp | 11 +++++++++-- source/YamlHelper.h | 3 ++- 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/source/Disk.cpp b/source/Disk.cpp index 8bfab4ff..f9c095a9 100644 --- a/source/Disk.cpp +++ b/source/Disk.cpp @@ -1934,10 +1934,7 @@ bool Disk2InterfaceCard::LoadSnapshotFloppy(YamlLoadHelper& yamlLoadHelper, UINT if (yamlLoadHelper.GetSubMap(SS_YAML_KEY_TRACK_IMAGE)) { - const UINT maxNibblesPerTrack = ImageGetMaxNibblesPerTrack(m_floppyDrive[unit].m_disk.m_imagehandle); - track.reserve(maxNibblesPerTrack); // expand (but don't shrink) vector's capacity (NB. vector's size doesn't change) - UINT bytes = yamlLoadHelper.LoadMemory(&track[0], maxNibblesPerTrack); - track.resize(bytes); // resize so that vector contains /bytes/ elements + yamlLoadHelper.LoadMemory(track, ImageGetMaxNibblesPerTrack(m_floppyDrive[unit].m_disk.m_imagehandle)); yamlLoadHelper.PopMap(); } diff --git a/source/YamlHelper.cpp b/source/YamlHelper.cpp index 4cc891e5..5198e33d 100644 --- a/source/YamlHelper.cpp +++ b/source/YamlHelper.cpp @@ -375,9 +375,16 @@ double YamlLoadHelper::LoadDouble(const std::string key) return strtod(value.c_str(), NULL); } -UINT YamlLoadHelper::LoadMemory(const LPBYTE pMemBase, const size_t size) +void YamlLoadHelper::LoadMemory(const LPBYTE pMemBase, const size_t size) { - return m_yamlHelper.LoadMemory(*m_pMapYaml, pMemBase, size); + m_yamlHelper.LoadMemory(*m_pMapYaml, pMemBase, size); +} + +void YamlLoadHelper::LoadMemory(std::vector& memory, const size_t size) +{ + memory.reserve(size); // expand (but don't shrink) vector's capacity (NB. vector's size doesn't change) + const UINT bytes = m_yamlHelper.LoadMemory(*m_pMapYaml, &memory[0], size); + memory.resize(bytes); // resize so that vector contains /bytes/ elements - so that size() gives correct value. } //------------------------------------- diff --git a/source/YamlHelper.h b/source/YamlHelper.h index b4bacce1..5b46f2ef 100644 --- a/source/YamlHelper.h +++ b/source/YamlHelper.h @@ -99,7 +99,8 @@ public: std::string LoadString(const std::string& key); float LoadFloat(const std::string key); double LoadDouble(const std::string key); - UINT LoadMemory(const LPBYTE pMemBase, const size_t size); + void LoadMemory(const LPBYTE pMemBase, const size_t size); + void LoadMemory(std::vector& memory, const size_t size); bool GetSubMap(const std::string key) {