From: Wouter V. <m97...@us...> - 2005-06-27 18:02:37
|
Update of /cvsroot/openmsx/openMSX/src/settings In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv17390/src/settings Modified Files: Setting.hh SettingImpl.hh SettingsManager.cc SettingsManager.hh Log Message: don't save settings that (still) have their default value Index: Setting.hh =================================================================== RCS file: /cvsroot/openmsx/openMSX/src/settings/Setting.hh,v retrieving revision 1.13 retrieving revision 1.14 diff -u -d -r1.13 -r1.14 --- Setting.hh 18 Jun 2005 10:50:57 -0000 1.13 +++ Setting.hh 27 Jun 2005 18:02:22 -0000 1.14 @@ -41,6 +41,10 @@ */ virtual void restoreDefault() = 0; + /** Checks whether the current value is the default value. + */ + virtual bool hasDefaultValue() const = 0; + /** Complete a partly typed value. * Default implementation does not complete anything, * subclasses can override this to complete according to their Index: SettingImpl.hh =================================================================== RCS file: /cvsroot/openmsx/openMSX/src/settings/SettingImpl.hh,v retrieving revision 1.11 retrieving revision 1.12 diff -u -d -r1.11 -r1.12 --- SettingImpl.hh 27 Jun 2005 11:16:19 -0000 1.11 +++ SettingImpl.hh 27 Jun 2005 18:02:23 -0000 1.12 @@ -60,6 +60,7 @@ virtual std::string getValueString() const; virtual void setValueString(const std::string& valueString); virtual void restoreDefault(); + virtual bool hasDefaultValue() const; virtual void tabCompletion(std::vector<std::string>& tokens) const; protected: @@ -214,6 +215,12 @@ } template<typename POLICY> +bool SettingImpl<POLICY>::hasDefaultValue() const +{ + return getValue() == getDefaultValue(); +} + +template<typename POLICY> void SettingImpl<POLICY>::tabCompletion(std::vector<std::string>& tokens) const { POLICY::tabCompletion(tokens); Index: SettingsManager.cc =================================================================== RCS file: /cvsroot/openmsx/openMSX/src/settings/SettingsManager.cc,v retrieving revision 1.19 retrieving revision 1.20 diff -u -d -r1.19 -r1.20 --- SettingsManager.cc 27 Jun 2005 11:16:20 -0000 1.19 +++ SettingsManager.cc 27 Jun 2005 18:02:23 -0000 1.20 @@ -92,6 +92,22 @@ return *typeSetting; } +Setting* SettingsManager::getByName(const std::string& name) const +{ + SettingsMap::const_iterator it = settingsMap.find(name); + // TODO: The cast is valid because currently all nodes are leaves. + // In the future this will no longer be the case. + return it != settingsMap.end() ? it->second : NULL; +} + +void SettingsManager::getAllSettings(std::vector<const Setting*>& result) const +{ + for (SettingsMap::const_iterator it = settingsMap.begin(); + it != settingsMap.end(); ++it) { + result.push_back(it->second); + } +} + // SetCompleter implementation: Index: SettingsManager.hh =================================================================== RCS file: /cvsroot/openmsx/openMSX/src/settings/SettingsManager.hh,v retrieving revision 1.17 retrieving revision 1.18 diff -u -d -r1.17 -r1.18 --- SettingsManager.hh 27 Jun 2005 11:16:20 -0000 1.17 +++ SettingsManager.hh 27 Jun 2005 18:02:24 -0000 1.18 @@ -31,12 +31,11 @@ * @return The Setting with the given name, * or NULL if there is no such Setting. */ - Setting* getByName(const std::string& name) const { - SettingsMap::const_iterator it = settingsMap.find(name); - // TODO: The cast is valid because currently all nodes are leaves. - // In the future this will no longer be the case. - return it != settingsMap.end() ? it->second : NULL; - } + Setting* getByName(const std::string& name) const; + + /** Fills the given vector with all known settings + */ + void getAllSettings(std::vector<const Setting*>& result) const; void registerSetting(Setting& setting); void unregisterSetting(Setting& setting); |