cmDefinitions: Externalize the Set logic.

This commit is contained in:
Stephen Kelly 2015-04-25 16:36:48 +02:00
parent 60200ca508
commit 5067ae41b0
2 changed files with 10 additions and 11 deletions

View File

@ -49,16 +49,7 @@ const char* cmDefinitions::Get(const std::string& key)
void cmDefinitions::Set(const std::string& key, const char* value)
{
Def def(value);
if(this->Up || def.Exists)
{
// In lower scopes we store keys, defined or not.
this->Map[key] = def;
}
else
{
// In the top-most scope we need not store undefined keys.
this->Map.erase(key);
}
this->Map[key] = def;
}
void cmDefinitions::Erase(const std::string& key)

View File

@ -78,7 +78,15 @@ public:
void RemoveDefinition(std::string const& name)
{
this->VarStack.top().Set(name, 0);
if (this->VarStack.size() > 1)
{
// In lower scopes we store keys, defined or not.
this->VarStack.top().Set(name, 0);
}
else
{
this->VarStack.top().Erase(name);
}
}
std::set<std::string> LocalKeys() const