|  | @@ -654,13 +654,12 @@ void CMakeSetupDialog::OnChangeWhereBuild()
 | 
	
		
			
				|  |  |    cache_file += "/CMakeCache.txt";
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager();
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | +  cmCacheManager::CacheIterator it = cachem->NewIterator();
 | 
	
		
			
				|  |  |    if (cmSystemTools::FileExists(cache_file.c_str()) &&
 | 
	
		
			
				|  |  |        cachem->LoadCache(path.c_str()) &&
 | 
	
		
			
				|  |  | -      cachem->GetCacheEntry("CMAKE_HOME_DIRECTORY"))
 | 
	
		
			
				|  |  | +      it.Find("CMAKE_HOME_DIRECTORY"))
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  | -    path = ConvertToWindowsPath(
 | 
	
		
			
				|  |  | -      cachem->GetCacheEntry("CMAKE_HOME_DIRECTORY")->m_Value.c_str());
 | 
	
		
			
				|  |  | +    path = ConvertToWindowsPath(it.GetValue());
 | 
	
		
			
				|  |  |      this->m_WhereSource = path.c_str();
 | 
	
		
			
				|  |  |      this->m_WhereSourceControl.SetWindowText(this->m_WhereSource);
 | 
	
		
			
				|  |  |      this->OnChangeWhereSource();
 | 
	
	
		
			
				|  | @@ -698,33 +697,33 @@ void CMakeSetupDialog::FillCacheGUIFromCacheManager()
 | 
	
		
			
				|  |  |        !i.IsAtEnd(); i.Next())
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      const char* key = i.GetName();
 | 
	
		
			
				|  |  | -    cmCacheManager::CacheEntry value = i.GetEntry();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      // if value has trailing space or tab, enclose it in single quotes
 | 
	
		
			
				|  |  |      // to enforce the fact that it has 'invisible' trailing stuff
 | 
	
		
			
				|  |  | -    if (value.m_Value.size() && 
 | 
	
		
			
				|  |  | -        (value.m_Value[value.m_Value.size() - 1] == ' ' || 
 | 
	
		
			
				|  |  | -         value.m_Value[value.m_Value.size() - 1] == '\t'))
 | 
	
		
			
				|  |  | +    std::string value = i.GetValue();
 | 
	
		
			
				|  |  | +    if (value.size() && 
 | 
	
		
			
				|  |  | +        (value[value.size() - 1] == ' ' || 
 | 
	
		
			
				|  |  | +         value[value.size() - 1] == '\t'))
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  | -      value.m_Value = '\'' + value.m_Value +  '\'';
 | 
	
		
			
				|  |  | +      value = '\'' + value +  '\'';
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      if(!m_AdvancedValues)
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  | -      if(cachem->IsAdvanced(key))
 | 
	
		
			
				|  |  | +      if(i.GetPropertyAsBool("ADVANCED"))
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |  	m_CacheEntriesList.RemoveProperty(key);
 | 
	
		
			
				|  |  |          continue;
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    switch(value.m_Type )
 | 
	
		
			
				|  |  | +    switch(i.GetType() )
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  |        case cmCacheManager::BOOL:
 | 
	
		
			
				|  |  | -        if(cmSystemTools::IsOn(value.m_Value.c_str()))
 | 
	
		
			
				|  |  | +        if(cmSystemTools::IsOn(value.c_str()))
 | 
	
		
			
				|  |  |            {
 | 
	
		
			
				|  |  |            m_CacheEntriesList.AddProperty(key,
 | 
	
		
			
				|  |  |                                           "ON",
 | 
	
		
			
				|  |  | -                                         value.m_HelpString.c_str(),
 | 
	
		
			
				|  |  | +                                         i.GetProperty("HELPSTRING"),
 | 
	
		
			
				|  |  |                                           CPropertyList::COMBO,"ON|OFF",
 | 
	
		
			
				|  |  |                                           reverseOrder 
 | 
	
		
			
				|  |  |              );
 | 
	
	
		
			
				|  | @@ -733,7 +732,7 @@ void CMakeSetupDialog::FillCacheGUIFromCacheManager()
 | 
	
		
			
				|  |  |            {
 | 
	
		
			
				|  |  |            m_CacheEntriesList.AddProperty(key,
 | 
	
		
			
				|  |  |                                           "OFF",
 | 
	
		
			
				|  |  | -                                         value.m_HelpString.c_str(),
 | 
	
		
			
				|  |  | +                                         i.GetProperty("HELPSTRING"),
 | 
	
		
			
				|  |  |                                           CPropertyList::COMBO,"ON|OFF",
 | 
	
		
			
				|  |  |                                           reverseOrder
 | 
	
		
			
				|  |  |              );
 | 
	
	
		
			
				|  | @@ -741,24 +740,24 @@ void CMakeSetupDialog::FillCacheGUIFromCacheManager()
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        case cmCacheManager::PATH:
 | 
	
		
			
				|  |  |          m_CacheEntriesList.AddProperty(key, 
 | 
	
		
			
				|  |  | -                                       value.m_Value.c_str(),
 | 
	
		
			
				|  |  | -                                       value.m_HelpString.c_str(),
 | 
	
		
			
				|  |  | +                                       value.c_str(),
 | 
	
		
			
				|  |  | +                                       i.GetProperty("HELPSTRING"),
 | 
	
		
			
				|  |  |                                         CPropertyList::PATH,"",
 | 
	
		
			
				|  |  |                                         reverseOrder
 | 
	
		
			
				|  |  |            );
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        case cmCacheManager::FILEPATH:
 | 
	
		
			
				|  |  |          m_CacheEntriesList.AddProperty(key, 
 | 
	
		
			
				|  |  | -                                       value.m_Value.c_str(),
 | 
	
		
			
				|  |  | -                                       value.m_HelpString.c_str(),
 | 
	
		
			
				|  |  | +                                       value.c_str(),
 | 
	
		
			
				|  |  | +                                       i.GetProperty("HELPSTRING"),
 | 
	
		
			
				|  |  |                                         CPropertyList::FILE,"",
 | 
	
		
			
				|  |  |                                         reverseOrder
 | 
	
		
			
				|  |  |            );
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        case cmCacheManager::STRING:
 | 
	
		
			
				|  |  |          m_CacheEntriesList.AddProperty(key,
 | 
	
		
			
				|  |  | -                                       value.m_Value.c_str(),
 | 
	
		
			
				|  |  | -                                       value.m_HelpString.c_str(),
 | 
	
		
			
				|  |  | +                                       value.c_str(),
 | 
	
		
			
				|  |  | +                                       i.GetProperty("HELPSTRING"),
 | 
	
		
			
				|  |  |                                         CPropertyList::EDIT,"",
 | 
	
		
			
				|  |  |                                         reverseOrder
 | 
	
		
			
				|  |  |            );
 | 
	
	
		
			
				|  | @@ -800,13 +799,12 @@ void CMakeSetupDialog::FillCacheManagerFromCacheGUI()
 | 
	
		
			
				|  |  |  { 
 | 
	
		
			
				|  |  |    cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager();
 | 
	
		
			
				|  |  |    std::set<CPropertyItem*> items = m_CacheEntriesList.GetItems();
 | 
	
		
			
				|  |  | +  cmCacheManager::CacheIterator it = cachem->NewIterator();
 | 
	
		
			
				|  |  |    for(std::set<CPropertyItem*>::iterator i = items.begin();
 | 
	
		
			
				|  |  |        i != items.end(); ++i)
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      CPropertyItem* item = *i; 
 | 
	
		
			
				|  |  | -    cmCacheManager::CacheEntry *entry = cachem->GetCacheEntry(
 | 
	
		
			
				|  |  | -        (const char*)item->m_propName);
 | 
	
		
			
				|  |  | -    if (entry)
 | 
	
		
			
				|  |  | +    if ( it.Find((const char*)item->m_propName) )
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  |        // if value is enclosed in single quotes ('foo') then remove them
 | 
	
		
			
				|  |  |        // they were used to enforce the fact that it had 'invisible' 
 | 
	
	
		
			
				|  | @@ -815,12 +813,12 @@ void CMakeSetupDialog::FillCacheManagerFromCacheGUI()
 | 
	
		
			
				|  |  |            item->m_curValue[0] == '\'' && 
 | 
	
		
			
				|  |  |            item->m_curValue[item->m_curValue.GetLength() - 1] == '\'') 
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -        entry->m_Value = item->m_curValue.Mid(1, 
 | 
	
		
			
				|  |  | -                                              item->m_curValue.GetLength() - 2);
 | 
	
		
			
				|  |  | +        it.SetValue(item->m_curValue.Mid(
 | 
	
		
			
				|  |  | +	  1, item->m_curValue.GetLength() - 2));
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        else
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  | -        entry->m_Value = item->m_curValue;
 | 
	
		
			
				|  |  | +        it.SetValue(item->m_curValue);
 | 
	
		
			
				|  |  |          }
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  |      }
 | 
	
	
		
			
				|  | @@ -836,10 +834,11 @@ void CMakeSetupDialog::LoadCacheFromDiskToGUI()
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      cachem->LoadCache(m_WhereBuild);
 | 
	
		
			
				|  |  |      this->FillCacheGUIFromCacheManager();
 | 
	
		
			
				|  |  | -    if(cachem->GetCacheEntry("CMAKE_GENERATOR"))
 | 
	
		
			
				|  |  | +    cmCacheManager::CacheIterator it = 
 | 
	
		
			
				|  |  | +      cachem->GetCacheIterator("CMAKE_GENERATOR");
 | 
	
		
			
				|  |  | +    if(!it.IsAtEnd())
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  | -      std::string curGen = 
 | 
	
		
			
				|  |  | -        cachem->GetCacheEntry("CMAKE_GENERATOR")->m_Value;
 | 
	
		
			
				|  |  | +      std::string curGen = it.GetValue();
 | 
	
		
			
				|  |  |        if(m_GeneratorChoiceString != curGen.c_str())
 | 
	
		
			
				|  |  |          {
 | 
	
		
			
				|  |  |          m_GeneratorChoiceString = curGen.c_str();
 | 
	
	
		
			
				|  | @@ -1128,19 +1127,18 @@ void CMakeSetupDialog::ShowAdvancedValues()
 | 
	
		
			
				|  |  |        !i.IsAtEnd(); i.Next())
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      const char* key = i.GetName();
 | 
	
		
			
				|  |  | -    const cmCacheManager::CacheEntry& value = i.GetEntry();
 | 
	
		
			
				|  |  | -    if(!cachem->IsAdvanced(key))
 | 
	
		
			
				|  |  | +    if(!i.GetPropertyAsBool("ADVANCED"))
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  |        continue;
 | 
	
		
			
				|  |  |        }
 | 
	
		
			
				|  |  | -    switch(value.m_Type )
 | 
	
		
			
				|  |  | +    switch(i.GetType() )
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  |        case cmCacheManager::BOOL:
 | 
	
		
			
				|  |  | -        if(cmSystemTools::IsOn(value.m_Value.c_str()))
 | 
	
		
			
				|  |  | +        if(cmSystemTools::IsOn(i.GetValue()))
 | 
	
		
			
				|  |  |            {
 | 
	
		
			
				|  |  |            m_CacheEntriesList.AddProperty(key,
 | 
	
		
			
				|  |  |                                           "ON",
 | 
	
		
			
				|  |  | -                                         value.m_HelpString.c_str(),
 | 
	
		
			
				|  |  | +                                         i.GetProperty("HELPSTRING"),
 | 
	
		
			
				|  |  |                                           CPropertyList::COMBO,"ON|OFF",
 | 
	
		
			
				|  |  |                                           true 
 | 
	
		
			
				|  |  |              );
 | 
	
	
		
			
				|  | @@ -1149,7 +1147,7 @@ void CMakeSetupDialog::ShowAdvancedValues()
 | 
	
		
			
				|  |  |            {
 | 
	
		
			
				|  |  |            m_CacheEntriesList.AddProperty(key,
 | 
	
		
			
				|  |  |                                           "OFF",
 | 
	
		
			
				|  |  | -                                         value.m_HelpString.c_str(),
 | 
	
		
			
				|  |  | +                                         i.GetProperty("HELPSTRING"),
 | 
	
		
			
				|  |  |                                           CPropertyList::COMBO,"ON|OFF",
 | 
	
		
			
				|  |  |                                           true
 | 
	
		
			
				|  |  |              );
 | 
	
	
		
			
				|  | @@ -1157,24 +1155,24 @@ void CMakeSetupDialog::ShowAdvancedValues()
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        case cmCacheManager::PATH:
 | 
	
		
			
				|  |  |          m_CacheEntriesList.AddProperty(key, 
 | 
	
		
			
				|  |  | -                                       value.m_Value.c_str(),
 | 
	
		
			
				|  |  | -                                       value.m_HelpString.c_str(),
 | 
	
		
			
				|  |  | +				       i.GetValue(),
 | 
	
		
			
				|  |  | +				       i.GetProperty("HELPSTRING"),
 | 
	
		
			
				|  |  |                                         CPropertyList::PATH,"",
 | 
	
		
			
				|  |  |                                         true
 | 
	
		
			
				|  |  |            );
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        case cmCacheManager::FILEPATH:
 | 
	
		
			
				|  |  |          m_CacheEntriesList.AddProperty(key, 
 | 
	
		
			
				|  |  | -                                       value.m_Value.c_str(),
 | 
	
		
			
				|  |  | -                                       value.m_HelpString.c_str(),
 | 
	
		
			
				|  |  | +                                       i.GetValue(),
 | 
	
		
			
				|  |  | +				       i.GetProperty("HELPSTRING"),
 | 
	
		
			
				|  |  |                                         CPropertyList::FILE,"",
 | 
	
		
			
				|  |  |                                         true
 | 
	
		
			
				|  |  |            );
 | 
	
		
			
				|  |  |          break;
 | 
	
		
			
				|  |  |        case cmCacheManager::STRING:
 | 
	
		
			
				|  |  |          m_CacheEntriesList.AddProperty(key,
 | 
	
		
			
				|  |  | -                                       value.m_Value.c_str(),
 | 
	
		
			
				|  |  | -                                       value.m_HelpString.c_str(),
 | 
	
		
			
				|  |  | +                                       i.GetValue(),
 | 
	
		
			
				|  |  | +				       i.GetProperty("HELPSTRING"),
 | 
	
		
			
				|  |  |                                         CPropertyList::EDIT,"",
 | 
	
		
			
				|  |  |                                         true
 | 
	
		
			
				|  |  |            );
 | 
	
	
		
			
				|  | @@ -1194,8 +1192,7 @@ void CMakeSetupDialog::RemoveAdvancedValues()
 | 
	
		
			
				|  |  |        !i.IsAtEnd(); i.Next())
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      const char* key = i.GetName();
 | 
	
		
			
				|  |  | -    const cmCacheManager::CacheEntry& value = i.GetEntry();
 | 
	
		
			
				|  |  | -    if(cachem->IsAdvanced(key))
 | 
	
		
			
				|  |  | +    if(i.GetPropertyAsBool("ADVANCED"))
 | 
	
		
			
				|  |  |        {
 | 
	
		
			
				|  |  |        m_CacheEntriesList.RemoveProperty(key);
 | 
	
		
			
				|  |  |        }
 | 
	
	
		
			
				|  | @@ -1246,15 +1243,17 @@ void CMakeSetupDialog::ChangeDirectoriesFromFile(const char* buffer)
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    cmCacheManager *cachem = this->m_CMakeInstance->GetCacheManager();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +  cmCacheManager::CacheIterator it = 
 | 
	
		
			
				|  |  | +    cachem->NewIterator();
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |    if (cmSystemTools::FileExists(cache_file.c_str()) &&
 | 
	
		
			
				|  |  |        cachem->LoadCache(path.c_str()) &&
 | 
	
		
			
				|  |  | -      cachem->GetCacheEntry("CMAKE_HOME_DIRECTORY"))
 | 
	
		
			
				|  |  | +      it.Find("CMAKE_HOME_DIRECTORY"))
 | 
	
		
			
				|  |  |      {
 | 
	
		
			
				|  |  |      path = ConvertToWindowsPath(path.c_str());
 | 
	
		
			
				|  |  |      this->m_WhereBuild = path.c_str();
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    path = ConvertToWindowsPath(
 | 
	
		
			
				|  |  | -      cachem->GetCacheEntry("CMAKE_HOME_DIRECTORY")->m_Value.c_str());
 | 
	
		
			
				|  |  | +    path = ConvertToWindowsPath(it.GetName());
 | 
	
		
			
				|  |  |      this->m_WhereSource = path.c_str();
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |    else
 |