CVarManager: Eliminate redundant map lookups

We can simply utilize the iterator of the previous existence check to
access the member instead of hashing through the map again.
This commit is contained in:
Lioncash 2019-08-20 06:19:39 -04:00
parent 4818198e41
commit cfced1bf0a
1 changed files with 13 additions and 12 deletions

View File

@ -25,11 +25,10 @@ CVarManager::CVarManager(hecl::Runtime::FileStoreManager& store, bool useBinary)
com_configfile = newCVar("config", "File to store configuration", std::string("config"), CVar::EFlags::System); com_configfile = newCVar("config", "File to store configuration", std::string("config"), CVar::EFlags::System);
com_developer = newCVar("developer", "Enables developer mode", false, com_developer = newCVar("developer", "Enables developer mode", false,
(CVar::EFlags::System | CVar::EFlags::ReadOnly | CVar::EFlags::InternalArchivable)); (CVar::EFlags::System | CVar::EFlags::ReadOnly | CVar::EFlags::InternalArchivable));
com_enableCheats = com_enableCheats = newCVar(
newCVar("cheats", "Enable cheats", false, "cheats", "Enable cheats", false,
(CVar::EFlags::System | CVar::EFlags::ReadOnly | CVar::EFlags::Hidden | CVar::EFlags::InternalArchivable)); (CVar::EFlags::System | CVar::EFlags::ReadOnly | CVar::EFlags::Hidden | CVar::EFlags::InternalArchivable));
com_cubemaps = com_cubemaps = newCVar("cubemaps", "Enable cubemaps", false,
newCVar("cubemaps", "Enable cubemaps", false,
(CVar::EFlags::Game | CVar::EFlags::ReadOnly | CVar::EFlags::InternalArchivable)); (CVar::EFlags::Game | CVar::EFlags::ReadOnly | CVar::EFlags::InternalArchivable));
} }
@ -83,8 +82,8 @@ void CVarManager::deserialize(CVar* cvar) {
/* First let's check for a deferred value */ /* First let's check for a deferred value */
std::string lowName = cvar->name().data(); std::string lowName = cvar->name().data();
athena::utility::tolower(lowName); athena::utility::tolower(lowName);
if (m_deferedCVars.find(lowName) != m_deferedCVars.end()) { if (const auto iter = m_deferedCVars.find(lowName); iter != m_deferedCVars.end()) {
std::string val = m_deferedCVars[lowName]; std::string val = std::move(iter->second);
m_deferedCVars.erase(lowName); m_deferedCVars.erase(lowName);
if (cvar->fromLiteralToType(val)) if (cvar->fromLiteralToType(val))
return; return;
@ -215,12 +214,13 @@ void CVarManager::setCVar(Console* con, const std::vector<std::string>& args) {
std::string cvName = args[0]; std::string cvName = args[0];
athena::utility::tolower(cvName); athena::utility::tolower(cvName);
if (m_cvars.find(cvName) == m_cvars.end()) { const auto iter = m_cvars.find(cvName);
if (iter == m_cvars.end()) {
con->report(Console::Level::Error, fmt("CVar '{}' does not exist"), args[0]); con->report(Console::Level::Error, fmt("CVar '{}' does not exist"), args[0]);
return; return;
} }
const auto& cv = m_cvars[cvName]; const auto& cv = iter->second;
std::string oldVal = cv->value(); std::string oldVal = cv->value();
std::string value = args[1]; std::string value = args[1];
auto it = args.begin() + 2; auto it = args.begin() + 2;
@ -245,12 +245,13 @@ void CVarManager::getCVar(Console* con, const std::vector<std::string>& args) {
std::string cvName = args[0]; std::string cvName = args[0];
athena::utility::tolower(cvName); athena::utility::tolower(cvName);
if (m_cvars.find(cvName) == m_cvars.end()) { const auto iter = m_cvars.find(cvName);
if (iter == m_cvars.end()) {
con->report(Console::Level::Error, fmt("CVar '{}' does not exist"), args[0]); con->report(Console::Level::Error, fmt("CVar '{}' does not exist"), args[0]);
return; return;
} }
const auto& cv = m_cvars[cvName]; const auto& cv = iter->second;
con->report(Console::Level::Info, fmt("'{}' = '{}'"), cv->name(), cv->value()); con->report(Console::Level::Info, fmt("'{}' = '{}'"), cv->name(), cv->value());
} }