From 1b4f1d7d4e659dcad481bdc513acc8c987ec1124 Mon Sep 17 00:00:00 2001 From: "Unknown W. Brackets" Date: Fri, 7 Sep 2018 21:36:59 -0700 Subject: [PATCH] Replacement: Cut down on parsing for large inis. --- Core/TextureReplacer.cpp | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/Core/TextureReplacer.cpp b/Core/TextureReplacer.cpp index 82ad35cac5..cc9b4788be 100644 --- a/Core/TextureReplacer.cpp +++ b/Core/TextureReplacer.cpp @@ -112,29 +112,24 @@ bool TextureReplacer::LoadIni() { ERROR_LOG(G3D, "Unsupported texture replacement version %d, trying anyway", version); } - std::vector hashNames; - if (ini.GetKeys("hashes", hashNames)) { - auto hashes = ini.GetOrCreateSection("hashes"); + if (ini.HasSection("hashes")) { + auto hashes = ini.GetOrCreateSection("hashes")->ToMap(); // Format: hashname = filename.png - for (std::string hashName : hashNames) { + for (const auto &item : hashes) { ReplacementAliasKey key(0, 0, 0); - if (sscanf(hashName.c_str(), "%16llx%8x_%d", &key.cachekey, &key.hash, &key.level) >= 1) { - hashes->Get(hashName.c_str(), &aliases_[key], ""); + if (sscanf(item.first.c_str(), "%16llx%8x_%d", &key.cachekey, &key.hash, &key.level) >= 1) { + aliases_[key] = item.second; } else { - ERROR_LOG(G3D, "Unsupported syntax under [hashes]: %s", hashName.c_str()); + ERROR_LOG(G3D, "Unsupported syntax under [hashes]: %s", item.first.c_str()); } } } - std::vector hashrangeKeys; - if (ini.GetKeys("hashranges", hashrangeKeys)) { - auto hashranges = ini.GetOrCreateSection("hashranges"); + if (ini.HasSection("hashranges")) { + auto hashranges = ini.GetOrCreateSection("hashranges")->ToMap(); // Format: addr,w,h = newW,newH - for (const std::string &key : hashrangeKeys) { - std::string value; - if (hashranges->Get(key.c_str(), &value, "")) { - ParseHashRange(key, value); - } + for (const auto &item : hashranges) { + ParseHashRange(item.first, item.second); } } }