From b917c540aae655c0c9dba9db1a396e8d4de89859 Mon Sep 17 00:00:00 2001 From: David Anderson Date: Sat, 31 Aug 2013 19:50:26 -0700 Subject: [PATCH] Remove memtables from GameConfigs (bug 5899 part 4, r=fyren). --- core/logic/GameConfigs.cpp | 11 +++++------ core/logic/GameConfigs.h | 4 +--- 2 files changed, 6 insertions(+), 9 deletions(-) diff --git a/core/logic/GameConfigs.cpp b/core/logic/GameConfigs.cpp index b577410a..e85c856d 100644 --- a/core/logic/GameConfigs.cpp +++ b/core/logic/GameConfigs.cpp @@ -119,7 +119,6 @@ static bool DoesEngineMatch(const char *value) CGameConfig::CGameConfig(const char *file, const char *engine) { strncopy(m_File, file, sizeof(m_File)); - m_pStrings = new BaseStringTable(512); m_CustomLevel = 0; m_CustomHandler = NULL; @@ -352,7 +351,8 @@ SMCResult CGameConfig::ReadSMC_KeyValue(const SMCStates *states, const char *key m_Offsets.replace(m_offset, atoi(value)); } } else if (m_ParseState == PSTATE_GAMEDEFS_KEYS) { - m_Keys.replace(key, m_pStrings->AddString(value)); + ke::AString vstr(value); + m_Keys.replace(key, ke::Move(vstr)); } else if (m_ParseState == PSTATE_GAMEDEFS_SUPPORTED) { if (strcmp(key, "game") == 0) { @@ -757,7 +757,6 @@ static MasterReader master_reader; bool CGameConfig::Reparse(char *error, size_t maxlength) { /* Reset cached data */ - m_pStrings->Reset(); m_Offsets.clear(); m_Props.clear(); m_Keys.clear(); @@ -921,10 +920,10 @@ bool CGameConfig::GetOffset(const char *key, int *value) const char *CGameConfig::GetKeyValue(const char *key) { - int address; - if (!m_Keys.retrieve(key, &address)) + StringHashMap::Result r = m_Keys.find(key); + if (!r.found()) return NULL; - return m_pStrings->GetString(address); + return r->value.chars(); } //memory addresses below 0x10000 are automatically considered invalid for dereferencing diff --git a/core/logic/GameConfigs.h b/core/logic/GameConfigs.h index 5d631ed1..339a95c8 100644 --- a/core/logic/GameConfigs.h +++ b/core/logic/GameConfigs.h @@ -35,7 +35,6 @@ #include "common_logic.h" #include #include -#include "sm_memtable.h" #include #include #include @@ -75,12 +74,11 @@ public: //NameHashSet return strcmp(key, value->m_File) == 0; } private: - ke::AutoPtr m_pStrings; char m_File[PLATFORM_MAX_PATH]; char m_CurFile[PLATFORM_MAX_PATH]; StringHashMap m_Offsets; StringHashMap m_Props; - StringHashMap m_Keys; + StringHashMap m_Keys; StringHashMap m_Sigs; /* Parse states */ int m_ParseState;