Fix problems with advanced not being marked.

This commit is contained in:
Andy Cedilnik 2002-09-17 11:48:52 -04:00
parent e5e0132203
commit 577cf91945
3 changed files with 22 additions and 3 deletions

View File

@ -372,7 +372,7 @@ bool cmCacheManager::SaveCache(const char* path)
!i.IsAtEnd(); i.Next())
{
CacheEntryType t = i.GetType();
bool advanced = i.GetPropertyAsBool("ADVANCED");
bool advanced = i.PropertyExists("ADVANCED");
if ( advanced )
{
// Format is key:type=value
@ -397,7 +397,8 @@ bool cmCacheManager::SaveCache(const char* path)
{
key = rkey;
}
fout << key.c_str() << ":INTERNAL=1\n";
fout << key.c_str() << ":INTERNAL="
<< (i.GetPropertyAsBool("ADVANCED") ? "1" : "0") << "\n";
}
if(t == cmCacheManager::INTERNAL)
{
@ -676,3 +677,20 @@ void cmCacheManager::CacheIterator::SetProperty(const char* p, bool v)
ent->m_Properties[p] = v ? "ON" : "OFF";
}
bool cmCacheManager::CacheIterator::PropertyExists(const char* property) const
{
if ( !strcmp(property, "TYPE") || !strcmp(property, "VALUE") )
{
cmSystemTools::Error("Property \"", property,
"\" cannot be accessed through the PropertyExists()");
return false;
}
const CacheEntry* ent = &this->GetEntry();
std::map<cmStdString,cmStdString>::const_iterator it =
ent->m_Properties.find(property);
if ( it == ent->m_Properties.end() )
{
return false;
}
return true;
}

View File

@ -53,6 +53,7 @@ public:
return m_Position->first.c_str(); }
const char* GetProperty(const char*) const ;
bool GetPropertyAsBool(const char*) const ;
bool PropertyExists(const char*) const;
void SetProperty(const char* property, const char* value);
void SetProperty(const char* property, bool value);
const char* GetValue() const { return this->GetEntry().m_Value.c_str(); }

View File

@ -56,7 +56,7 @@ bool cmMarkAsAdvancedCommand::InitialPass(std::vector<std::string> const& argsIn
cmSystemTools::Error("This should never happen...");
return false;
}
if ( overwrite )
if ( !it.PropertyExists("ADVANCED") || overwrite )
{
it.SetProperty("ADVANCED", value);
}